pyscreeps-arena 0.5.7b0__py3-none-any.whl → 0.5.7.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyscreeps_arena/__init__.py +35 -3
- pyscreeps_arena/core/const.py +1 -1
- pyscreeps_arena/project.7z +0 -0
- pyscreeps_arena/ui/__init__.py +3 -1
- pyscreeps_arena/ui/map_render.py +705 -0
- pyscreeps_arena/ui/mapviewer.py +14 -0
- pyscreeps_arena/ui/qcreeplogic/qcreeplogic.py +82 -21
- pyscreeps_arena/ui/qmapv/__init__.py +3 -0
- pyscreeps_arena/ui/qmapv/qcinfo.py +567 -0
- pyscreeps_arena/ui/qmapv/qco.py +441 -0
- pyscreeps_arena/ui/qmapv/qmapv.py +728 -0
- pyscreeps_arena/ui/qmapv/test_array_drag.py +191 -0
- pyscreeps_arena/ui/qmapv/test_drag.py +107 -0
- pyscreeps_arena/ui/qmapv/test_qcinfo.py +169 -0
- pyscreeps_arena/ui/qmapv/test_qco_drag.py +7 -0
- pyscreeps_arena/ui/qmapv/test_qmapv.py +224 -0
- pyscreeps_arena/ui/qmapv/test_simple_array.py +303 -0
- {pyscreeps_arena-0.5.7b0.dist-info → pyscreeps_arena-0.5.7.2.dist-info}/METADATA +1 -1
- pyscreeps_arena-0.5.7.2.dist-info/RECORD +40 -0
- pyscreeps_arena-0.5.7b0.dist-info/RECORD +0 -28
- {pyscreeps_arena-0.5.7b0.dist-info → pyscreeps_arena-0.5.7.2.dist-info}/WHEEL +0 -0
- {pyscreeps_arena-0.5.7b0.dist-info → pyscreeps_arena-0.5.7.2.dist-info}/entry_points.txt +0 -0
- {pyscreeps_arena-0.5.7b0.dist-info → pyscreeps_arena-0.5.7.2.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
Simple test script for array format drag and drop functionality
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import sys
|
|
8
|
+
import json
|
|
9
|
+
from PyQt6.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
|
|
10
|
+
QHBoxLayout, QPushButton, QLabel, QListWidget,
|
|
11
|
+
QListWidgetItem, QFrame, QSpacerItem, QSizePolicy)
|
|
12
|
+
from PyQt6.QtCore import Qt, QMimeData, pyqtSignal
|
|
13
|
+
from PyQt6.QtGui import QDrag, QPixmap, QPainter, QPen, QColor, QBrush
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class SimpleDropTarget(QWidget):
|
|
17
|
+
"""Simple drop target widget to test array format."""
|
|
18
|
+
|
|
19
|
+
def __init__(self, name, parent=None):
|
|
20
|
+
super().__init__(parent)
|
|
21
|
+
self.name = name
|
|
22
|
+
self._objects = []
|
|
23
|
+
self._init_ui()
|
|
24
|
+
self.setAcceptDrops(True)
|
|
25
|
+
|
|
26
|
+
def _init_ui(self):
|
|
27
|
+
"""Initialize UI."""
|
|
28
|
+
layout = QVBoxLayout()
|
|
29
|
+
|
|
30
|
+
# Title label
|
|
31
|
+
self.title_label = QLabel(f"{self.name} Drop Target")
|
|
32
|
+
self.title_label.setStyleSheet("font-weight: bold; font-size: 14px;")
|
|
33
|
+
layout.addWidget(self.title_label)
|
|
34
|
+
|
|
35
|
+
# Objects list
|
|
36
|
+
self.objects_list = QListWidget()
|
|
37
|
+
self.objects_list.setFrameStyle(QFrame.Shape.Box)
|
|
38
|
+
self.objects_list.setMaximumHeight(150)
|
|
39
|
+
self.objects_list.setStyleSheet("""
|
|
40
|
+
QListWidget {
|
|
41
|
+
border: 1px solid #ccc;
|
|
42
|
+
border-radius: 4px;
|
|
43
|
+
background-color: white;
|
|
44
|
+
}
|
|
45
|
+
QListWidget::item {
|
|
46
|
+
border-bottom: 1px solid #eee;
|
|
47
|
+
}
|
|
48
|
+
""")
|
|
49
|
+
layout.addWidget(self.objects_list)
|
|
50
|
+
|
|
51
|
+
# Status label
|
|
52
|
+
self.status_label = QLabel("Status: Ready")
|
|
53
|
+
self.status_label.setStyleSheet("font-size: 10px; color: #666;")
|
|
54
|
+
layout.addWidget(self.status_label)
|
|
55
|
+
|
|
56
|
+
self.setLayout(layout)
|
|
57
|
+
self.setMinimumWidth(250)
|
|
58
|
+
self.setMaximumWidth(250)
|
|
59
|
+
|
|
60
|
+
def dragEnterEvent(self, event):
|
|
61
|
+
"""Accept drag enter events."""
|
|
62
|
+
print(f"[DEBUG] {self.name} drag enter: hasText={event.mimeData().hasText()}")
|
|
63
|
+
if event.mimeData().hasText() or event.mimeData().hasFormat("application/json"):
|
|
64
|
+
event.acceptProposedAction()
|
|
65
|
+
self.status_label.setText("Status: Drag enter accepted")
|
|
66
|
+
|
|
67
|
+
def dropEvent(self, event):
|
|
68
|
+
"""Handle drop event to add objects."""
|
|
69
|
+
mime_data = event.mimeData()
|
|
70
|
+
json_data = None
|
|
71
|
+
|
|
72
|
+
print(f"[DEBUG] {self.name} drop received: hasText={event.mimeData().hasText()}")
|
|
73
|
+
|
|
74
|
+
# Try to get JSON data from different sources
|
|
75
|
+
if mime_data.hasFormat("application/json"):
|
|
76
|
+
try:
|
|
77
|
+
json_bytes = mime_data.data("application/json")
|
|
78
|
+
json_str = json_bytes.data().decode('utf-8')
|
|
79
|
+
print(f"[DEBUG] {self.name} JSON data: {json_str}")
|
|
80
|
+
json_data = json.loads(json_str)
|
|
81
|
+
except Exception as e:
|
|
82
|
+
print(f"[DEBUG] {self.name} failed to parse JSON data: {e}")
|
|
83
|
+
elif mime_data.hasText():
|
|
84
|
+
try:
|
|
85
|
+
json_str = mime_data.text()
|
|
86
|
+
print(f"[DEBUG] {self.name} text data: {json_str}")
|
|
87
|
+
json_data = json.loads(json_str)
|
|
88
|
+
except Exception as e:
|
|
89
|
+
print(f"[DEBUG] {self.name} failed to parse text as JSON: {e}")
|
|
90
|
+
|
|
91
|
+
if json_data:
|
|
92
|
+
# Handle both single object and array of objects
|
|
93
|
+
if isinstance(json_data, list):
|
|
94
|
+
# Array format: [{x, y, type, method, id, name}, ...]
|
|
95
|
+
print(f"[DEBUG] {self.name} received array of {len(json_data)} objects")
|
|
96
|
+
for obj in json_data:
|
|
97
|
+
self._add_object_to_list(obj)
|
|
98
|
+
event.acceptProposedAction()
|
|
99
|
+
self.status_label.setText(f"Status: Added {len(json_data)} objects from array")
|
|
100
|
+
print(f"[DEBUG] {self.name} array of objects added successfully")
|
|
101
|
+
elif isinstance(json_data, dict):
|
|
102
|
+
# Single object format: {x, y, type, method, id, name}
|
|
103
|
+
self._add_object_to_list(json_data)
|
|
104
|
+
event.acceptProposedAction()
|
|
105
|
+
self.status_label.setText(f"Status: Added single object: {json_data.get('name', 'Unknown')}")
|
|
106
|
+
print(f"[DEBUG] {self.name} single object added successfully: {json_data}")
|
|
107
|
+
else:
|
|
108
|
+
print(f"[DEBUG] {self.name} invalid JSON format: expected dict or list, got {type(json_data)}")
|
|
109
|
+
self.status_label.setText(f"Status: Invalid format: {type(json_data)}")
|
|
110
|
+
else:
|
|
111
|
+
print(f"[DEBUG] {self.name} no valid JSON data found")
|
|
112
|
+
self.status_label.setText("Status: No valid JSON data")
|
|
113
|
+
|
|
114
|
+
def _add_object_to_list(self, obj_data: dict):
|
|
115
|
+
"""Add a single object to the objects list."""
|
|
116
|
+
# Extract required fields
|
|
117
|
+
obj_id = obj_data.get('id', 'unknown')
|
|
118
|
+
obj_type = obj_data.get('type', 'Unknown')
|
|
119
|
+
obj_name = obj_data.get('name', obj_id)
|
|
120
|
+
x = obj_data.get('x', 0)
|
|
121
|
+
y = obj_data.get('y', 0)
|
|
122
|
+
method = obj_data.get('method', '')
|
|
123
|
+
|
|
124
|
+
# Check for duplicates with same id
|
|
125
|
+
for existing_obj in self._objects:
|
|
126
|
+
existing_id = existing_obj.get('id', 'unknown')
|
|
127
|
+
if existing_id == obj_id:
|
|
128
|
+
print(f"[DEBUG] {self.name} rejected duplicate object: {obj_id}")
|
|
129
|
+
return # Reject duplicate
|
|
130
|
+
|
|
131
|
+
# Add the new object
|
|
132
|
+
new_obj = {
|
|
133
|
+
'id': obj_id,
|
|
134
|
+
'type': obj_type,
|
|
135
|
+
'name': obj_name,
|
|
136
|
+
'x': x,
|
|
137
|
+
'y': y,
|
|
138
|
+
'method': method
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
self._objects.append(new_obj)
|
|
142
|
+
print(f"[DEBUG] {self.name} added object: {new_obj}")
|
|
143
|
+
|
|
144
|
+
# Add to list widget
|
|
145
|
+
list_item_text = f"{obj_type}: {obj_name} ({x}, {y})"
|
|
146
|
+
self.objects_list.addItem(list_item_text)
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
class DragSourceWidget(QWidget):
|
|
150
|
+
"""Widget that can initiate drag operations with array format."""
|
|
151
|
+
|
|
152
|
+
def __init__(self, parent=None):
|
|
153
|
+
super().__init__(parent)
|
|
154
|
+
self._init_ui()
|
|
155
|
+
|
|
156
|
+
def _init_ui(self):
|
|
157
|
+
"""Initialize UI."""
|
|
158
|
+
layout = QVBoxLayout()
|
|
159
|
+
|
|
160
|
+
# Create test data
|
|
161
|
+
self.test_array = [
|
|
162
|
+
{
|
|
163
|
+
"x": 10,
|
|
164
|
+
"y": 20,
|
|
165
|
+
"type": "Creep",
|
|
166
|
+
"method": "move",
|
|
167
|
+
"id": "creep1",
|
|
168
|
+
"name": "Worker1"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"x": 15,
|
|
172
|
+
"y": 25,
|
|
173
|
+
"type": "Structure",
|
|
174
|
+
"method": "build",
|
|
175
|
+
"id": "struct1",
|
|
176
|
+
"name": "Spawn1"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"x": 30,
|
|
180
|
+
"y": 40,
|
|
181
|
+
"type": "Resource",
|
|
182
|
+
"method": "harvest",
|
|
183
|
+
"id": "res1",
|
|
184
|
+
"name": "Energy1"
|
|
185
|
+
}
|
|
186
|
+
]
|
|
187
|
+
|
|
188
|
+
self.test_single = {
|
|
189
|
+
"x": 50,
|
|
190
|
+
"y": 60,
|
|
191
|
+
"type": "Tower",
|
|
192
|
+
"method": "attack",
|
|
193
|
+
"id": "tower1",
|
|
194
|
+
"name": "Defense1"
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
# Add buttons to trigger drag operations
|
|
198
|
+
btn_array = QPushButton("Drag Array [{}]")
|
|
199
|
+
btn_array.clicked.connect(lambda: self._start_drag(self.test_array))
|
|
200
|
+
layout.addWidget(btn_array)
|
|
201
|
+
|
|
202
|
+
btn_single = QPushButton("Drag Single {}")
|
|
203
|
+
btn_single.clicked.connect(lambda: self._start_drag(self.test_single))
|
|
204
|
+
layout.addWidget(btn_single)
|
|
205
|
+
|
|
206
|
+
# Add labels to show what will be dragged
|
|
207
|
+
label_array = QLabel(f"Array: {json.dumps(self.test_array, indent=2)}")
|
|
208
|
+
label_array.setWordWrap(True)
|
|
209
|
+
layout.addWidget(label_array)
|
|
210
|
+
|
|
211
|
+
label_single = QLabel(f"Single: {json.dumps(self.test_single, indent=2)}")
|
|
212
|
+
label_single.setWordWrap(True)
|
|
213
|
+
layout.addWidget(label_single)
|
|
214
|
+
|
|
215
|
+
self.setLayout(layout)
|
|
216
|
+
|
|
217
|
+
def _start_drag(self, data):
|
|
218
|
+
"""Start a drag operation with the given data."""
|
|
219
|
+
print(f"[DEBUG] Starting drag with data: {data}")
|
|
220
|
+
|
|
221
|
+
# Create mime data
|
|
222
|
+
mime_data = QMimeData()
|
|
223
|
+
json_str = json.dumps(data)
|
|
224
|
+
mime_data.setText(json_str)
|
|
225
|
+
mime_data.setData("application/json", json_str.encode('utf-8'))
|
|
226
|
+
|
|
227
|
+
# Create drag object
|
|
228
|
+
drag = QDrag(self)
|
|
229
|
+
drag.setMimeData(mime_data)
|
|
230
|
+
|
|
231
|
+
# Start drag operation
|
|
232
|
+
result = drag.exec(Qt.DropAction.CopyAction)
|
|
233
|
+
print(f"[DEBUG] Drag result: {result}")
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
class TestWindow(QMainWindow):
|
|
237
|
+
"""Main test window."""
|
|
238
|
+
|
|
239
|
+
def __init__(self):
|
|
240
|
+
super().__init__()
|
|
241
|
+
self.setWindowTitle("Array Format Drag & Drop Test")
|
|
242
|
+
self.setGeometry(100, 100, 800, 600)
|
|
243
|
+
self._init_ui()
|
|
244
|
+
|
|
245
|
+
def _init_ui(self):
|
|
246
|
+
"""Initialize UI."""
|
|
247
|
+
central_widget = QWidget()
|
|
248
|
+
layout = QHBoxLayout()
|
|
249
|
+
|
|
250
|
+
# Left side - drag source
|
|
251
|
+
drag_source = DragSourceWidget()
|
|
252
|
+
layout.addWidget(drag_source)
|
|
253
|
+
|
|
254
|
+
# Right side - drop targets
|
|
255
|
+
right_layout = QVBoxLayout()
|
|
256
|
+
|
|
257
|
+
# First drop target
|
|
258
|
+
self.drop_target1 = SimpleDropTarget("Target1")
|
|
259
|
+
right_layout.addWidget(self.drop_target1)
|
|
260
|
+
|
|
261
|
+
# Second drop target
|
|
262
|
+
self.drop_target2 = SimpleDropTarget("Target2")
|
|
263
|
+
right_layout.addWidget(self.drop_target2)
|
|
264
|
+
|
|
265
|
+
# Clear buttons
|
|
266
|
+
clear_layout = QHBoxLayout()
|
|
267
|
+
btn_clear1 = QPushButton("Clear Target1")
|
|
268
|
+
btn_clear1.clicked.connect(self._clear_target1)
|
|
269
|
+
clear_layout.addWidget(btn_clear1)
|
|
270
|
+
|
|
271
|
+
btn_clear2 = QPushButton("Clear Target2")
|
|
272
|
+
btn_clear2.clicked.connect(self._clear_target2)
|
|
273
|
+
clear_layout.addWidget(btn_clear2)
|
|
274
|
+
|
|
275
|
+
right_layout.addLayout(clear_layout)
|
|
276
|
+
|
|
277
|
+
layout.addLayout(right_layout)
|
|
278
|
+
central_widget.setLayout(layout)
|
|
279
|
+
self.setCentralWidget(central_widget)
|
|
280
|
+
|
|
281
|
+
def _clear_target1(self):
|
|
282
|
+
"""Clear first target."""
|
|
283
|
+
self.drop_target1.objects_list.clear()
|
|
284
|
+
self.drop_target1._objects = []
|
|
285
|
+
self.drop_target1.status_label.setText("Status: Cleared")
|
|
286
|
+
|
|
287
|
+
def _clear_target2(self):
|
|
288
|
+
"""Clear second target."""
|
|
289
|
+
self.drop_target2.objects_list.clear()
|
|
290
|
+
self.drop_target2._objects = []
|
|
291
|
+
self.drop_target2.status_label.setText("Status: Cleared")
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
def main():
|
|
295
|
+
"""Main function."""
|
|
296
|
+
app = QApplication(sys.argv)
|
|
297
|
+
window = TestWindow()
|
|
298
|
+
window.show()
|
|
299
|
+
sys.exit(app.exec())
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
if __name__ == "__main__":
|
|
303
|
+
main()
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
pyscreeps_arena/__init__.py,sha256=VXTTz1lCdcq5VLyp3Jx9l09Z-Bc2jqNM6GBOr4hLYFs,3337
|
|
2
|
+
pyscreeps_arena/build.py,sha256=DQeGLnID2FjpsWTbnqwt2cOp28olWK68U67bfbFJSOU,177
|
|
3
|
+
pyscreeps_arena/compiler.py,sha256=2p9x7seCy48tGJ52mNFY7gYNnNZ0yhsreFUj23ubVEQ,65255
|
|
4
|
+
pyscreeps_arena/localization.py,sha256=Dr0G6n8DvT6syfC0urqwjccYpEPEfcwYyJx3f9s-6a8,6031
|
|
5
|
+
pyscreeps_arena/project.7z,sha256=280m6ABhpuJ7YM0Cqxn9d-uI8KpU5g1ibt_pG-uYQg8,327235
|
|
6
|
+
pyscreeps_arena/core/__init__.py,sha256=qoP_rx1TpbDLJoTm5via4XPwEPaV1FXr1SYvoVoHGms,41
|
|
7
|
+
pyscreeps_arena/core/basic.py,sha256=DFvyDTsTXf2bQtnS9s254TrkshvRwajaHcvTyVvJyqw,2790
|
|
8
|
+
pyscreeps_arena/core/config.py,sha256=x_JhVHlVZqB3qA7UyACVnwZjg2gZU-BIs49UxZzwCoE,637
|
|
9
|
+
pyscreeps_arena/core/const.py,sha256=PqBEvL057WD2-TB4ZUA_TmqoXBfWgRndPLoB2h_UvwE,590
|
|
10
|
+
pyscreeps_arena/core/core.py,sha256=3Nty8eLKPNgwnYk_sVNBPrWuKxBXI2od8nfEezsEAZQ,5157
|
|
11
|
+
pyscreeps_arena/core/main.py,sha256=-FNSOEjksNlDfCbUqsjtPSUW8vT3qxEdfzXqT5Tdsik,170
|
|
12
|
+
pyscreeps_arena/core/utils.py,sha256=N9OOkORvrqnJakayaFp9qyS0apWhB9lBK4xyyYkhFdo,215
|
|
13
|
+
pyscreeps_arena/ui/P2PY.py,sha256=c_zLFkp_M83bSJRnQggt_yQL_2xSPtKWp4kh-TuqM2k,3220
|
|
14
|
+
pyscreeps_arena/ui/__init__.py,sha256=rxSx5ZPxMNUVokvYgOmGkxHInFUVVYh9InSbbvkgo2o,367
|
|
15
|
+
pyscreeps_arena/ui/creeplogic_edit.py,sha256=XlO4aoH48UyWhQQAejyLY57yukpn9BzS0w9QXMMOeeg,314
|
|
16
|
+
pyscreeps_arena/ui/map_render.py,sha256=dS7iL5ywEwlhGEOiif0G9up3bpPI4p20o07mbnDaSD8,30414
|
|
17
|
+
pyscreeps_arena/ui/mapviewer.py,sha256=AWv9loznosIJaQC5L5szRms_zDetDiHXIsY2EEpRNB8,293
|
|
18
|
+
pyscreeps_arena/ui/project_ui.py,sha256=cIDHJh2x__rErv6Q-WVAqEy5Quzc4OhHdPT7kBAjD9o,7669
|
|
19
|
+
pyscreeps_arena/ui/rs_icon.py,sha256=5v8YdTv2dds4iAp9x3MXpqB_5XIOYd0uPqaq83ZNySM,22496
|
|
20
|
+
pyscreeps_arena/ui/qcreeplogic/__init__.py,sha256=FVuJ6TZyDh5WnkYlHjCWjEKGPBWl27LzqIAab-4aeuI,75
|
|
21
|
+
pyscreeps_arena/ui/qcreeplogic/model.py,sha256=_Ba5jbHcFsKQ1el36UcCnXGUimvvWSRHgzo979SpVzs,2833
|
|
22
|
+
pyscreeps_arena/ui/qcreeplogic/qcreeplogic.py,sha256=9-DX_8IslJ7Dte2mTfNTN0C54QUSmuwkfhLoeGzhUMQ,29815
|
|
23
|
+
pyscreeps_arena/ui/qmapv/__init__.py,sha256=zjOIxK20lqdYZLWwEi5KfHumSWOzN3nDjW5Yomy9ocM,241
|
|
24
|
+
pyscreeps_arena/ui/qmapv/qcinfo.py,sha256=6WSMpn-u0ZmyvSwA-KZfwLNW1WetAi9y11HW0aIHGQU,21381
|
|
25
|
+
pyscreeps_arena/ui/qmapv/qco.py,sha256=dn33250XYoCzTGPiuUzId8FI6yhweMDSes6A2UARacU,17889
|
|
26
|
+
pyscreeps_arena/ui/qmapv/qmapv.py,sha256=9lfRVghcNB3eM-DGDo-rmqdJbpJW6tS-erlM-3rejnM,29285
|
|
27
|
+
pyscreeps_arena/ui/qmapv/test_array_drag.py,sha256=mXZekGVlUlNpYYfWv841D9tz_9qSb1v_rOaowqvAhEA,6073
|
|
28
|
+
pyscreeps_arena/ui/qmapv/test_drag.py,sha256=eKivDG737F9x74W-bJDwJf59FmyDwvNT6HU6XqY720w,3294
|
|
29
|
+
pyscreeps_arena/ui/qmapv/test_qcinfo.py,sha256=tw8YwYj6NHGXsbp3tpyM_5nvFu0IVIwIS-h5rb2eGzw,5095
|
|
30
|
+
pyscreeps_arena/ui/qmapv/test_qco_drag.py,sha256=HYS_rIzA-aP6bBaCAxvIb60GrXJ0Pvybp6kbPNhaN1s,154
|
|
31
|
+
pyscreeps_arena/ui/qmapv/test_qmapv.py,sha256=y3MRXR5o4JpRGDw8qLgVMlSZEmmu1PnGVRssFV_TvpY,8412
|
|
32
|
+
pyscreeps_arena/ui/qmapv/test_simple_array.py,sha256=hPnLXcFrn6I1X4JXFM3RVpBPhU_J_h8kkV7TtM-nC5Q,10679
|
|
33
|
+
pyscreeps_arena/ui/qrecipe/__init__.py,sha256=2Guvr9k5kGkZboiVC0aNF4u48LRbmcCm2dqOhEF52Tw,59
|
|
34
|
+
pyscreeps_arena/ui/qrecipe/model.py,sha256=s3lr_DXtsBgt8bVg1_wLz-dX88QKi77mNkqM5VJsGwE,13200
|
|
35
|
+
pyscreeps_arena/ui/qrecipe/qrecipe.py,sha256=z57VLmlpMripdpGtVCkKR0csJQhw5-WpocZK5l2xTVg,39398
|
|
36
|
+
pyscreeps_arena-0.5.7.2.dist-info/METADATA,sha256=ePomWPeApwHERFO6Xik-IeMTIZeEcvp8WiUh-rIrnLw,2356
|
|
37
|
+
pyscreeps_arena-0.5.7.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
38
|
+
pyscreeps_arena-0.5.7.2.dist-info/entry_points.txt,sha256=pnpuPPadwQsxQPaR1rXzUo0fUvhOcC7HTHlf7TYXr7M,141
|
|
39
|
+
pyscreeps_arena-0.5.7.2.dist-info/top_level.txt,sha256=l4uLyMR2NOy41ngBMh795jOHTFk3tgYKy64-9cgjVng,16
|
|
40
|
+
pyscreeps_arena-0.5.7.2.dist-info/RECORD,,
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
pyscreeps_arena/__init__.py,sha256=_b1DIObofuuV-7dVvojVuQ8NoKY3ynS_wHOjxZN3c6g,1572
|
|
2
|
-
pyscreeps_arena/build.py,sha256=DQeGLnID2FjpsWTbnqwt2cOp28olWK68U67bfbFJSOU,177
|
|
3
|
-
pyscreeps_arena/compiler.py,sha256=2p9x7seCy48tGJ52mNFY7gYNnNZ0yhsreFUj23ubVEQ,65255
|
|
4
|
-
pyscreeps_arena/localization.py,sha256=Dr0G6n8DvT6syfC0urqwjccYpEPEfcwYyJx3f9s-6a8,6031
|
|
5
|
-
pyscreeps_arena/project.7z,sha256=QGrtY_uHq6Pc5jp2EdY_dmJlrxivxqKxmQRTPMN2Br4,317599
|
|
6
|
-
pyscreeps_arena/core/__init__.py,sha256=qoP_rx1TpbDLJoTm5via4XPwEPaV1FXr1SYvoVoHGms,41
|
|
7
|
-
pyscreeps_arena/core/basic.py,sha256=DFvyDTsTXf2bQtnS9s254TrkshvRwajaHcvTyVvJyqw,2790
|
|
8
|
-
pyscreeps_arena/core/config.py,sha256=x_JhVHlVZqB3qA7UyACVnwZjg2gZU-BIs49UxZzwCoE,637
|
|
9
|
-
pyscreeps_arena/core/const.py,sha256=MYm4m7Rnwdb2T1VPnCuwd4euqqRAoNok4IKDf3zfGPE,589
|
|
10
|
-
pyscreeps_arena/core/core.py,sha256=3Nty8eLKPNgwnYk_sVNBPrWuKxBXI2od8nfEezsEAZQ,5157
|
|
11
|
-
pyscreeps_arena/core/main.py,sha256=-FNSOEjksNlDfCbUqsjtPSUW8vT3qxEdfzXqT5Tdsik,170
|
|
12
|
-
pyscreeps_arena/core/utils.py,sha256=N9OOkORvrqnJakayaFp9qyS0apWhB9lBK4xyyYkhFdo,215
|
|
13
|
-
pyscreeps_arena/ui/P2PY.py,sha256=c_zLFkp_M83bSJRnQggt_yQL_2xSPtKWp4kh-TuqM2k,3220
|
|
14
|
-
pyscreeps_arena/ui/__init__.py,sha256=9iW-DFRkBWm-2VtOrFqYyp1nuyt4apX0DJxFxjyKCOM,283
|
|
15
|
-
pyscreeps_arena/ui/creeplogic_edit.py,sha256=XlO4aoH48UyWhQQAejyLY57yukpn9BzS0w9QXMMOeeg,314
|
|
16
|
-
pyscreeps_arena/ui/project_ui.py,sha256=cIDHJh2x__rErv6Q-WVAqEy5Quzc4OhHdPT7kBAjD9o,7669
|
|
17
|
-
pyscreeps_arena/ui/rs_icon.py,sha256=5v8YdTv2dds4iAp9x3MXpqB_5XIOYd0uPqaq83ZNySM,22496
|
|
18
|
-
pyscreeps_arena/ui/qcreeplogic/__init__.py,sha256=FVuJ6TZyDh5WnkYlHjCWjEKGPBWl27LzqIAab-4aeuI,75
|
|
19
|
-
pyscreeps_arena/ui/qcreeplogic/model.py,sha256=_Ba5jbHcFsKQ1el36UcCnXGUimvvWSRHgzo979SpVzs,2833
|
|
20
|
-
pyscreeps_arena/ui/qcreeplogic/qcreeplogic.py,sha256=ANYy_XLMQPk9BUDrXh6ZwlreJeClATLS68ztadgbtQ8,27844
|
|
21
|
-
pyscreeps_arena/ui/qrecipe/__init__.py,sha256=2Guvr9k5kGkZboiVC0aNF4u48LRbmcCm2dqOhEF52Tw,59
|
|
22
|
-
pyscreeps_arena/ui/qrecipe/model.py,sha256=s3lr_DXtsBgt8bVg1_wLz-dX88QKi77mNkqM5VJsGwE,13200
|
|
23
|
-
pyscreeps_arena/ui/qrecipe/qrecipe.py,sha256=z57VLmlpMripdpGtVCkKR0csJQhw5-WpocZK5l2xTVg,39398
|
|
24
|
-
pyscreeps_arena-0.5.7b0.dist-info/METADATA,sha256=ogNyHNZWg7b9DMJctC33YdvZeRMct-NtcOUzkAVFMrQ,2356
|
|
25
|
-
pyscreeps_arena-0.5.7b0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
26
|
-
pyscreeps_arena-0.5.7b0.dist-info/entry_points.txt,sha256=pnpuPPadwQsxQPaR1rXzUo0fUvhOcC7HTHlf7TYXr7M,141
|
|
27
|
-
pyscreeps_arena-0.5.7b0.dist-info/top_level.txt,sha256=l4uLyMR2NOy41ngBMh795jOHTFk3tgYKy64-9cgjVng,16
|
|
28
|
-
pyscreeps_arena-0.5.7b0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|