mima-engine 0.1.5__py3-none-any.whl → 0.2.1__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.

Potentially problematic release.


This version of mima-engine might be problematic. Click here for more details.

Files changed (80) hide show
  1. mima/__init__.py +1 -1
  2. mima/backend/pygame_assets.py +14 -8
  3. mima/backend/pygame_audio.py +5 -2
  4. mima/backend/pygame_backend.py +255 -57
  5. mima/backend/pygame_camera.py +63 -0
  6. mima/backend/pygame_events.py +369 -120
  7. mima/collision.py +182 -111
  8. mima/engine.py +155 -15
  9. mima/maps/tiled/tiled_map.py +3 -3
  10. mima/maps/tiled/tiled_tileset.py +1 -0
  11. mima/maps/tilemap.py +78 -15
  12. mima/maps/tileset.py +8 -2
  13. mima/maps/transition_map.py +6 -8
  14. mima/mode_engine.py +80 -0
  15. mima/objects/animated_sprite.py +23 -15
  16. mima/objects/attributes.py +3 -0
  17. mima/objects/creature.py +54 -17
  18. mima/objects/dynamic.py +30 -8
  19. mima/objects/effects/colorize_screen.py +22 -6
  20. mima/objects/effects/debug_box.py +124 -0
  21. mima/objects/effects/light.py +21 -30
  22. mima/objects/effects/show_sprite.py +39 -0
  23. mima/objects/effects/walking_on_grass.py +25 -7
  24. mima/objects/effects/walking_on_water.py +17 -6
  25. mima/objects/loader.py +24 -13
  26. mima/objects/projectile.py +21 -6
  27. mima/objects/sprite.py +7 -8
  28. mima/objects/world/color_gate.py +5 -2
  29. mima/objects/world/color_switch.py +12 -6
  30. mima/objects/world/container.py +17 -8
  31. mima/objects/world/floor_switch.py +8 -4
  32. mima/objects/world/gate.py +8 -5
  33. mima/objects/world/light_source.py +11 -9
  34. mima/objects/world/logic_gate.py +8 -7
  35. mima/objects/world/movable.py +72 -28
  36. mima/objects/world/oneway.py +14 -9
  37. mima/objects/world/pickup.py +10 -5
  38. mima/objects/world/switch.py +28 -25
  39. mima/objects/world/teleport.py +76 -55
  40. mima/scene_engine.py +19 -20
  41. mima/scripts/command.py +16 -2
  42. mima/scripts/commands/change_map.py +23 -4
  43. mima/scripts/commands/equip_weapon.py +23 -0
  44. mima/scripts/commands/give_item.py +5 -3
  45. mima/scripts/commands/move_map.py +9 -9
  46. mima/scripts/commands/parallel.py +16 -3
  47. mima/scripts/commands/present_item.py +7 -5
  48. mima/scripts/commands/screen_fade.py +30 -12
  49. mima/scripts/commands/serial.py +30 -7
  50. mima/scripts/commands/set_spawn_map.py +6 -3
  51. mima/scripts/commands/show_choices.py +16 -7
  52. mima/scripts/commands/show_dialog.py +110 -3
  53. mima/scripts/script_processor.py +41 -20
  54. mima/states/game_state.py +2 -0
  55. mima/states/memory.py +28 -0
  56. mima/states/quest.py +2 -3
  57. mima/types/keys.py +48 -0
  58. mima/types/mode.py +4 -10
  59. mima/types/player.py +9 -0
  60. mima/types/position.py +13 -0
  61. mima/types/tile_collision.py +11 -0
  62. mima/types/window.py +44 -0
  63. mima/usables/item.py +1 -0
  64. mima/util/colors.py +5 -0
  65. mima/util/constants.py +6 -0
  66. mima/util/functions.py +27 -0
  67. mima/util/input_defaults.py +109 -0
  68. mima/util/runtime_config.py +234 -30
  69. mima/util/trading_item.py +20 -0
  70. mima/view/camera.py +160 -19
  71. mima/view/mima_mode.py +612 -0
  72. mima/view/mima_scene.py +225 -0
  73. mima/view/mima_view.py +12 -0
  74. mima/view/mima_window.py +153 -0
  75. {mima_engine-0.1.5.dist-info → mima_engine-0.2.1.dist-info}/METADATA +4 -2
  76. mima_engine-0.2.1.dist-info/RECORD +128 -0
  77. {mima_engine-0.1.5.dist-info → mima_engine-0.2.1.dist-info}/WHEEL +1 -1
  78. mima/view/scene.py +0 -322
  79. mima_engine-0.1.5.dist-info/RECORD +0 -114
  80. {mima_engine-0.1.5.dist-info → mima_engine-0.2.1.dist-info}/top_level.txt +0 -0
mima/view/scene.py DELETED
@@ -1,322 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from typing import TYPE_CHECKING, List, Optional
4
-
5
- from mima.types.nature import Nature
6
- from mima.util.constants import TILE_HEIGHT, TILE_WIDTH
7
-
8
- from ..collision import (
9
- check_object_to_map_collision,
10
- check_object_to_object_collision,
11
- )
12
- from ..types.mode import Mode
13
- from ..util.colors import BLACK, WHITE, Color
14
- from ..util.constants import BIG_FONT_HEIGHT, BIG_FONT_WIDTH
15
- from .camera import Camera
16
-
17
- if TYPE_CHECKING:
18
- from mima.objects.loader import ObjectLoader
19
-
20
- from ..engine import MimaEngine
21
- from ..maps.tilemap import Tilemap
22
- from ..objects.dynamic import Dynamic
23
- from ..objects.projectile import Projectile
24
-
25
-
26
- class Scene:
27
- engine: MimaEngine
28
-
29
- def __init__(self):
30
- self.tilemap: Tilemap
31
- self.dynamics: List[Dynamic] = []
32
- self.projectiles: List[Projectile] = []
33
- self.effects: List[Projectile] = []
34
- self.dialog_to_show: Optional[List[str]] = None
35
- self.camera: Camera = Camera(0, 0)
36
- self.loader: ObjectLoader
37
- self.autosave: bool = False
38
-
39
- def update(self, elapsed_time):
40
- pass
41
-
42
- def add_dynamic(self, dynamic: Dynamic):
43
- self.dynamics.append(dynamic)
44
-
45
- def add_projectile(self, projectile: Projectile):
46
- self.projectiles.append(projectile)
47
-
48
- def add_effect(self, effect: Projectile):
49
- self.effects.append(effect)
50
-
51
- def change_map(self, map_name: str, spawn_px: float, spawn_py: float):
52
- pass
53
-
54
- def delete_map_dynamics(self):
55
- self.dynamics = [obj for obj in self.dynamics if obj.persistent]
56
- if not self.dynamics:
57
- self.dynamics = [self.engine.player]
58
- for p in self.projectiles:
59
- if not p.persistent:
60
- p.cancel()
61
- for e in self.effects:
62
- if not e.persistent:
63
- e.cancel()
64
- self.projectiles = [p for p in self.projectiles if p.persistent]
65
- self.effects = [e for e in self.effects if e.persistent]
66
-
67
- def show_dialog(self, lines: List[str]):
68
- self.dialog_to_show = lines
69
- self.engine.dialog_active = True
70
-
71
- def display_dialog(
72
- self,
73
- lines: str,
74
- px: float,
75
- py: float,
76
- text_color: Optional[Color] = WHITE,
77
- background_color: Optional[Color] = BLACK,
78
- border_color: Optional[Color] = WHITE,
79
- ):
80
-
81
- max_line_length = 0
82
- num_lines = len(lines)
83
-
84
- for line in lines:
85
- if len(line) > max_line_length:
86
- max_line_length = len(line)
87
-
88
- self.engine.backend.fill_rect(
89
- px - 1,
90
- py - 1,
91
- max_line_length * BIG_FONT_WIDTH + 2,
92
- num_lines * BIG_FONT_HEIGHT + 2,
93
- background_color,
94
- )
95
-
96
- self.engine.backend.draw_rect(
97
- px - 2,
98
- py - 2,
99
- max_line_length * BIG_FONT_WIDTH + 4,
100
- num_lines * BIG_FONT_HEIGHT + 4,
101
- border_color,
102
- )
103
-
104
- for idx, line in enumerate(lines):
105
- self.engine.backend.draw_big_text(
106
- line, px, py + idx * BIG_FONT_HEIGHT, text_color
107
- )
108
-
109
- def draw_map_and_objects(self):
110
- # First, background layers of the map
111
- self.draw_map_layers([-1, 0])
112
-
113
- # Second, dynamics and projectiles
114
- self.draw_objects_y_sorted()
115
- # for obj in self.dynamics + self.projectiles:
116
- # obj.draw_self(self.camera.ox, self.camera.oy)
117
-
118
- # Third, effects
119
- for effect in self.effects:
120
- if effect.layer == 0:
121
- effect.draw_self(self.camera.ox, self.camera.oy)
122
-
123
- # Fourth, all the foreground layers of the map
124
- self.draw_map_layers([1, 2])
125
-
126
- # Fifth, there might be foreground effects
127
- for effect in self.effects:
128
- if effect.layer >= 1:
129
- effect.draw_self(self.camera.ox, self.camera.oy)
130
-
131
- def draw_map_layers(self, layers: List[int]):
132
- for pos in layers:
133
- self.tilemap.draw_self(
134
- self.camera.ox,
135
- self.camera.oy,
136
- self.camera.visible_tiles_sx,
137
- self.camera.visible_tiles_sy,
138
- self.camera.visible_tiles_ex,
139
- self.camera.visible_tiles_ey,
140
- pos,
141
- )
142
-
143
- def draw_objects_y_sorted(self):
144
- y_sorted = sorted(
145
- self.dynamics + self.projectiles, key=lambda obj: obj.py
146
- )
147
- for layer in range(3):
148
- for obj in y_sorted:
149
- if not obj.redundant and obj.visible:
150
- if obj.layer == layer:
151
- obj.draw_self(self.camera.ox, self.camera.oy)
152
-
153
- # if self.engine.draw_debug:
154
- # color = CYAN
155
- # if obj.type == ObjectType.PROJECTILE:
156
- # color = RED
157
- # color.alpha = 128
158
- # self.engine.backend.fill_rect(
159
- # (obj.px + obj.hitbox_px - self.camera.ox)
160
- # * TILE_WIDTH,
161
- # (obj.py + obj.hitbox_py - self.camera.oy)
162
- # * TILE_HEIGHT,
163
- # obj.hitbox_width * TILE_WIDTH,
164
- # obj.hitbox_height * TILE_HEIGHT,
165
- # color,
166
- # )
167
- # elif (
168
- # not obj.redundant and self.engine.draw_bounding_rectangles
169
- # ):
170
- # self.engine.backend.fill_rect(
171
- # (obj.px + obj.hitbox_px - self.camera.ox)
172
- # * obj.sprite.width,
173
- # (obj.py + obj.hitbox_py - self.camera.oy)
174
- # * obj.sprite.height,
175
- # obj.hitbox_width * TILE_WIDTH,
176
- # obj.hitbox_height * TILE_HEIGHT,
177
- # CYAN,
178
- # )
179
-
180
- def delete_redundant_objects(self):
181
- if self.engine.player.redundant:
182
- self.engine.scene_stack.append(Mode.GAME_OVER)
183
- # self.engine.session_seconds = self.engine.total_seconds
184
-
185
- # Find and erase redundant dynamics
186
- d2rm = [d for d in self.dynamics if d.redundant]
187
- for dyn in d2rm:
188
- for quest in self.engine.quests:
189
- quest.on_interaction(self.dynamics, dyn, Nature.KILLED)
190
- dyn.on_death()
191
- self.dynamics.remove(dyn)
192
-
193
- # Find and erase redundant projectiles
194
- p2rm = [p for p in self.projectiles if p.redundant]
195
- for pro in p2rm:
196
- pro.on_death()
197
- self.projectiles.remove(pro)
198
-
199
- # Find and erase redundant effects
200
- e2rm = [e for e in self.effects if e.redundant]
201
- for eff in e2rm:
202
- eff.on_death()
203
- self.effects.remove(eff)
204
-
205
- # Find and erase completed quests
206
- q2rm = [q for q in self.engine.quests if q.completed]
207
- for quest in q2rm:
208
- self.engine.quests.remove(quest)
209
-
210
- def handle_user_input(self):
211
- pass
212
-
213
- def handle_collisions(self, elapsed_time: float):
214
- screen_width = self.engine.backend.render_width // TILE_WIDTH
215
- screen_height = self.engine.backend.render_height // TILE_HEIGHT
216
-
217
- # Filter for onscreen/offscreen objects
218
- dynamics = [
219
- obj
220
- for obj in self.dynamics
221
- if (
222
- not obj.offscreen_collision_skippable
223
- or (
224
- abs(self.engine.player.px - obj.px) < screen_width
225
- and abs(self.engine.player.py - obj.py) < screen_height
226
- )
227
- )
228
- ]
229
- projectiles = [
230
- obj
231
- for obj in self.projectiles
232
- if (
233
- not obj.offscreen_collision_skippable
234
- or (
235
- abs(self.engine.player.px - obj.px) < screen_width
236
- and abs(self.engine.player.py - obj.py) < screen_height
237
- )
238
- )
239
- ]
240
- for obj in dynamics + projectiles:
241
- if obj.onscreen_collision_skippable:
242
- # self.skipped_collision_checks += 1
243
- continue
244
-
245
- new_px, new_py = self.update_position(obj, elapsed_time)
246
-
247
- new_px, new_py = check_object_to_map_collision(
248
- elapsed_time, obj, self.tilemap, new_px, new_py
249
- )
250
-
251
- if self.check_tile_properties(obj, new_px, new_py):
252
- # If true, something happened to the object
253
- continue
254
-
255
- for other in dynamics:
256
- if other == obj:
257
- continue
258
-
259
- new_px, new_py = check_object_to_object_collision(
260
- self.engine, self, obj, new_px, new_py, other
261
- )
262
- obj.px = new_px
263
- obj.py = new_py
264
-
265
- def update_dynamics(self, elapsed_time: float):
266
- screen_width = self.engine.backend.render_width // TILE_WIDTH
267
- screen_height = self.engine.backend.render_height // TILE_HEIGHT
268
-
269
- for obj in self.dynamics + self.projectiles:
270
- if (
271
- obj.update_skippable
272
- and abs(self.engine.player.px - obj.px) > screen_width
273
- ):
274
- continue
275
- if (
276
- obj.update_skippable
277
- and abs(self.engine.player.py - obj.py) > screen_height
278
- ):
279
- continue
280
-
281
- obj.vz -= obj.attributes.gravity_vz * elapsed_time
282
- obj.update(elapsed_time, self.engine.player)
283
-
284
- if obj.gravity:
285
- obj.pz = obj.pz + obj.vz * elapsed_time
286
- if obj.pz <= 0.0:
287
- obj.pz = 0.0
288
- obj.vz = 0.0
289
-
290
- def update_position(self, obj: Dynamic, elapsed_time: float):
291
- vx, vy = min(1, max(-1, obj.vx)), min(1, max(-1, obj.vy))
292
-
293
- # Diagonal movement
294
- if obj.vx != 0 and obj.vy != 0:
295
- vx, vy = vx * 0.707, vy * 0.707
296
-
297
- def calculate(v, real_v):
298
- if v == 0 and obj.use_friction:
299
- mod = obj.attributes.friction
300
- elif v != 0 and obj.use_acceleration:
301
- mod = obj.attributes.acceleration
302
- else:
303
- return v
304
-
305
- dif = v - real_v
306
- if abs(dif) < 0.01:
307
- return v
308
- return real_v + (v - real_v) * mod * elapsed_time
309
-
310
- obj.real_vx = vx if vx == obj.real_vx else calculate(vx, obj.real_vx)
311
- obj.real_vy = vy if vy == obj.real_vy else calculate(vy, obj.real_vy)
312
-
313
- new_px = (
314
- obj.px
315
- + obj.real_vx * obj.speed * obj.attributes.speed_mod * elapsed_time
316
- )
317
- new_py = (
318
- obj.py
319
- + obj.real_vy * obj.speed * obj.attributes.speed_mod * elapsed_time
320
- )
321
-
322
- return new_px, new_py
@@ -1,114 +0,0 @@
1
- mima/__init__.py,sha256=rPSfWgIeq2YWVPyESOAwCBt8vftsTpIkuLAGDEzyRQc,22
2
- mima/collision.py,sha256=roHN_U2H5dhhKwvhgBQLArjodhbNlt3fV9KjPs7nGzw,6872
3
- mima/engine.py,sha256=t3nbBNfbLeDnIcv7qlKoU0E4zhH58m7YOOfpPtoeUWw,6106
4
- mima/scene_engine.py,sha256=CZOMetEQH2UlT39siaco8EVtOHEnv1JvMlqXF7FMYjs,2678
5
- mima/backend/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
6
- mima/backend/pygame_assets.py,sha256=dXMhZzU3LNCT1n6KHFBSOGO7CTyBMqu6rwGTcuZN610,11772
7
- mima/backend/pygame_audio.py,sha256=HsEF321PecqE6DuFy92HiV5YWsQxAtnid_4Tm-VezGQ,2320
8
- mima/backend/pygame_backend.py,sha256=vMBVEMCQBkELyxRKzH2OwNxwJUxc3vLhhrQM0zDWo9M,11747
9
- mima/backend/pygame_events.py,sha256=w4zYiBlcbZsx2lPRz6wZ4mEvjpVlzvDTGWgcpoosYCY,16248
10
- mima/maps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- mima/maps/template.py,sha256=xBIIzf2o6ATHevfZA5b5XP-o6o71-04u7OAS4847buY,1178
12
- mima/maps/tile.py,sha256=ZIPtpVCrX_dnL8SKwobj_0etMCUrQxRL5d04KnEmwNQ,639
13
- mima/maps/tile_animation.py,sha256=xoI41BIFd6udW47xHAbfGhuqMVIvAw75vlec1iEhdhE,106
14
- mima/maps/tile_info.py,sha256=VLAjfPCrLbzTP7p1qk5O3ytc4zFg_52ZyYvAbufC_X8,152
15
- mima/maps/tile_layer.py,sha256=L8qmXaWnAaS4FUb-poC8Xve_pGvoFmwR_YCLE1tdWww,1592
16
- mima/maps/tilemap.py,sha256=kfkYXotfmckz_4n17Msnl5rkzK7NKSvSTaX_we15ibo,5026
17
- mima/maps/tileset.py,sha256=nAGF7XQv27kTYlWAyiAXYmRpLRzpOBgAvEHsLwtxH8M,819
18
- mima/maps/tileset_info.py,sha256=nJvghbxlxpvYOXaR1A2Joyz3LxPV7usspQcvKM5iyBg,136
19
- mima/maps/transition_map.py,sha256=wnuwSKXJyVZGm-6IocAUcskykq_CWGjEOgXtJVpavjc,5021
20
- mima/maps/tiled/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
- mima/maps/tiled/tiled_layer.py,sha256=JpSoxHGYf-g4fjGcU8J8z3M9RaSvuBd1VHIp9joZy4A,1572
22
- mima/maps/tiled/tiled_map.py,sha256=X65-XeAjONo_fw7EKAcBTpBSc4nzABFcvQVrT1Oypms,2966
23
- mima/maps/tiled/tiled_object.py,sha256=ubfvPY2VSfy7tOhakHbfBbD4wa6X3fpSJ8ugGUzvGuI,2782
24
- mima/maps/tiled/tiled_objectgroup.py,sha256=CDaxhpj65v-jKGdIHbN80VBfd6GbEfALgJnB5cdcKUU,588
25
- mima/maps/tiled/tiled_template.py,sha256=02JlfGitkorSFztDQ4BrLx7ZnWRctJgV7azK5cGvTNE,1498
26
- mima/maps/tiled/tiled_tile.py,sha256=CMh0W7KweqP_WZUbcgcYT3xis8hOECBlzaVtRKTYLX8,3172
27
- mima/maps/tiled/tiled_tileset.py,sha256=8AzYboKpoXyrDU2jzp2hv3LIrH2baEhuPul0HH4eSeY,1428
28
- mima/objects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
- mima/objects/animated_sprite.py,sha256=4ShQBmVCnLd5e6d0QQme0AvfptjaV7Js4SNYr68THbE,6640
30
- mima/objects/attribute_effect.py,sha256=zikOSb6-hD6Ecm4L9EyRocTyJQ7IYC0CJ9DCBxbK4cU,650
31
- mima/objects/attributes.py,sha256=Qr2bfyVdSBSqFPlEK5BlpqnslXpjfCTP65_wmxSf9Pg,3705
32
- mima/objects/creature.py,sha256=D5yaEo3yKRz4qnH_WNJD_ddjFK1w8XQxBJLzKvvof0A,11194
33
- mima/objects/dynamic.py,sha256=-u7YRFOYPFgmaXa5Zd8yeX0Ysy92he9a36wxoeaPaLY,5715
34
- mima/objects/loader.py,sha256=FGg4389Y_cSCIjVhW2MaJPOY-LYqLQvhEm7w6bzMBSg,4124
35
- mima/objects/projectile.py,sha256=EPOeQlHqIy0tKhFY8WBh5AUc6GQPAWByr_F4ZW1sLXg,2506
36
- mima/objects/sprite.py,sha256=P-wvynPEwyappReLucrymBoIKpuzkJP5PaLwbSjHORE,3711
37
- mima/objects/effects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
- mima/objects/effects/colorize_screen.py,sha256=9cWXFBnchm86M9us1Y97psWIcDiQ3KTtHgMkXmsOyvU,1266
39
- mima/objects/effects/light.py,sha256=2SAM60S5IfOyny4Zm6duOOFYoyhi-bfnCnmra__11w0,3739
40
- mima/objects/effects/walking_on_grass.py,sha256=Wia5xteG-lhW4IWLRsNw3zQiwt1gQxytJljZwnTlSp0,1228
41
- mima/objects/effects/walking_on_water.py,sha256=vfs6vOlhoT2RFfPrAvEgQ7TqBnL2PwD1b4993j6p7I4,1335
42
- mima/objects/world/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
- mima/objects/world/color_gate.py,sha256=Xs6Ek2H23hpR5pLAIkl2P9hq8t4_xdciuoayB61xIaM,1948
44
- mima/objects/world/color_switch.py,sha256=B-D1oVGuUuKQxuoVmTorPQXMjMmiaY8ME97tZzeJJdo,3207
45
- mima/objects/world/container.py,sha256=0d3AfAuFJ07Ts3UbsyYo51sLeDKTkxHD6Z9F4pHNUIA,6001
46
- mima/objects/world/floor_switch.py,sha256=_hyliGLaK-c8EFXLIXGmPS0Xpn4ZUfeApgAZC0bXS74,3358
47
- mima/objects/world/gate.py,sha256=RQi8FTtgWAcNWYaIm4QULfLIXte5VoCsH90FhdWM81A,5626
48
- mima/objects/world/light_source.py,sha256=mYEH7XfgltYGlPM2w_srr7X22dzsrTt30_mI4MAhGEU,3896
49
- mima/objects/world/logic_gate.py,sha256=jzLyHWOEK0cwBgrc_On8R3St-pDyz6RxshGMHmnyFIY,5048
50
- mima/objects/world/movable.py,sha256=ZM9Kl3zXJjXXawl3l9iluQqZHpIBbuC-dTzCABLg47Y,10944
51
- mima/objects/world/oneway.py,sha256=T6iinejyvj8b1dKFRCTQiXL_ZHugO04z_bIOR0x6ozY,5423
52
- mima/objects/world/pickup.py,sha256=6iA7qAD-aSFdlTuxWnPPz7nuh5OfTHOZ_FQGpkzhIOM,3058
53
- mima/objects/world/switch.py,sha256=QTrMo2BRMH9tE8dwhpUJ5tclkctjbhk-siiZGKk3tWY,5559
54
- mima/objects/world/teleport.py,sha256=R3ZZvx80BhKg5J_8Up_VQ6rrhzWa3urcKEP5Ja_dhm4,10336
55
- mima/scripts/__init__.py,sha256=yLRT6igjwtSkOFbd0x8PXXFZVt1_xUIuCHhWhywHRuE,75
56
- mima/scripts/command.py,sha256=UnbIsVtW66KajCiH9Pgkkzzu1xVwWDg157lWxTYqWFI,434
57
- mima/scripts/script_processor.py,sha256=ks7_PD-KQF1azcU8GTEtC5D0Yo3alHToQLWt5GsA70k,1177
58
- mima/scripts/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
- mima/scripts/commands/add_quest.py,sha256=r5eCLgAarLJmtMROxLqMTryK5Bfv9wUSqsC8p0RHVkU,387
60
- mima/scripts/commands/change_map.py,sha256=tQPbz-dsxR2RpIVLOZp2GQmCmpTKVjgra2lp_-Wkrac,449
61
- mima/scripts/commands/close_dialog.py,sha256=-yWyEtYA41RsehJ4c-zIXhxIhR25e8GTWN20GuTnT80,207
62
- mima/scripts/commands/give_item.py,sha256=HJhX5b7A3Fmqij08858UfU2kHeqwJ3bdOwVh_fO3kWU,561
63
- mima/scripts/commands/give_resource.py,sha256=J9c0hk__DY4To1BStZ5qmcEOMbAYRefNJT8Kk5WyORE,1805
64
- mima/scripts/commands/move_map.py,sha256=dMdw19yaB3Os6nj5cg7gcAe6PSRj9yKUW0psA25BKB8,4756
65
- mima/scripts/commands/move_to.py,sha256=FE2efowCpMp5QgDBvIlGju4T0xfa9N1UwjaE2yh3v4Q,1420
66
- mima/scripts/commands/oneway_move.py,sha256=1mytQxv6kiSGr_-H7m-DQPKbFKfT2T45i99Ro764vE4,1683
67
- mima/scripts/commands/parallel.py,sha256=RbWVOJLRtnl_wPE8lVr5MXQScYB8CNypFtpv5_QFLT0,1489
68
- mima/scripts/commands/play_sound.py,sha256=m4wqWC6O8TUsJIcYrP8bb8ZFjSNK3IpAyBdxLo-e8zo,348
69
- mima/scripts/commands/present_item.py,sha256=bGwHjd9h1ApPuR0f7g55IS4-4-qibaQb0BOnmSKPs5U,1648
70
- mima/scripts/commands/progress_quest.py,sha256=-Nm7basBFdnixKwf42Xrs6iDROx22WGIDHpAZ0itpGU,359
71
- mima/scripts/commands/quit_game.py,sha256=BmLlh45K46Mx57j1dE2wWhmmmcb0Y-X5mLrFV1HIfhI,219
72
- mima/scripts/commands/save_game.py,sha256=yhmXIpnhD89otDmltE7mucdEozHc0LfRSZCSZZO915c,392
73
- mima/scripts/commands/screen_fade.py,sha256=IrRXSvDa_h_zwl9fSonY4KUlExnPIFv1VR1qnupntBw,1729
74
- mima/scripts/commands/serial.py,sha256=VwKwWLrmeV9mKf0rbPkU2KZvy3dRxJ6IeSugOhQgHbw,1548
75
- mima/scripts/commands/set_facing_direction.py,sha256=M_AFJQWgd0nYG7ZPq6BBOmjF4n0jcnBdvyxLboucjZk,567
76
- mima/scripts/commands/set_spawn_map.py,sha256=eeWIzyuDPDIC3e_Hpyi_CuPhDnbWEXrWSNlSoqKvKZQ,434
77
- mima/scripts/commands/show_choices.py,sha256=X7YJdNMPyLWykuG_CDkw9C05VG20Za68yjPXbzQXN3E,1382
78
- mima/scripts/commands/show_dialog.py,sha256=EmfLMweEBjBXZyBZWSD-BMVscfJffaK31hH2bHPVZcU,278
79
- mima/scripts/commands/take_coins.py,sha256=37jChQBQKFaIBx6-Bvx3xNPlqSq87pvnMtnSWQWU1iI,573
80
- mima/states/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
- mima/states/game_state.py,sha256=-HFshSVKdj59NnKmOkYu9TBQ6SgmAS8KIJ2fDM3KLXo,5013
82
- mima/states/quest.py,sha256=SoDRIvQdt62-Rx4vcE2I9lgymlKatWqLNdi6qyFLdpA,2365
83
- mima/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
- mima/types/alignment.py,sha256=Oz5nhU2MXClOZyKX47A3wyajyD2HG0DWK3-41uBhnv4,89
85
- mima/types/blend.py,sha256=0zhU2QjlajZDh3-tvmUCP_gMQsvr_eZPOZ9dqbk3LLU,96
86
- mima/types/damage.py,sha256=8AgvwiNgcENXwc0v0VCuxxA1w45huSTQdR6S1RW4yj8,584
87
- mima/types/direction.py,sha256=P7EqLZFacMjf8BmQmgNFlXutKtYxlJ6U5ha3JPyFwjI,1116
88
- mima/types/gate_color.py,sha256=Mby5_s4EoTIrEZ92gKLBAG9vymF3207RK93EfqGtLuk,86
89
- mima/types/graphic_state.py,sha256=6pUumsqyvPIVIJrOH4TRfgrHWDlTkNYU1g6Joc9Cx_U,308
90
- mima/types/keys.py,sha256=kupW0ELZOlIk6jDF76751h_aw9RGKtlS3qmwtzEEMsY,183
91
- mima/types/mode.py,sha256=rX_eKNJdon60BkUn2DUMyr9wEnsEwmJzI0kf8rPzYLk,233
92
- mima/types/nature.py,sha256=4tANHg4mzN8O57B-pr0jafikCZkqB83r-pJpDG4CnAw,159
93
- mima/types/object.py,sha256=D21AAm-GCtxQQM0n741T17MeQPVsVSOHQFtC84VGZoQ,377
94
- mima/types/start.py,sha256=maeU5GQ9tE8q28vrA7aBGWqmi6mPW4aZTC_Qh7R_zp0,80
95
- mima/types/terrain.py,sha256=vMITb4PnoEMAWc8VF-g7NeQ5453yLM93q9dcF_5RSfI,130
96
- mima/types/weapon_slot.py,sha256=kX5mYKgrgn-CcJ-gUzfvTGOVoxLllPRQ92sRjWYoqCg,87
97
- mima/usables/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
- mima/usables/item.py,sha256=avfN9ZNvHfE0CRUP_8ZgkuoxS31n0t2APubLT8EGXf0,883
99
- mima/usables/weapon.py,sha256=U0h6AZAA3bC8QapFqPcHFZdRKiwIf07xPtgPXUn1Z90,1269
100
- mima/util/__init__.py,sha256=KMuEDnRsGr32gXED12ZyL1za6iKAuk_Tn8S3mTtpYds,42
101
- mima/util/colors.py,sha256=5ewsAKG-RBjXb7L0aAxwOxrbGXMUak6I5NCzo-1cYi8,1268
102
- mima/util/constants.py,sha256=yBb5bamRB-hRaNZYj-tc6Q2glaALcw8R0YdZJtUDLcw,1233
103
- mima/util/functions.py,sha256=QCy6Q88qVFUx1nV9DEq4uTruzJzJMee5wsnn7LrwD0g,524
104
- mima/util/input_defaults.py,sha256=0UMEA4ltPCLRo5foOTSRRRMb8YucEJazw2_rqw7d-x0,759
105
- mima/util/logging.py,sha256=p6-C1ozlCs_sCkmykh_B0NgZtvSkcZXXseE6qA6Zwew,1197
106
- mima/util/property.py,sha256=o6dEWpIOWxwS_lf6MvYZSjkyI5Amo56P2JIDa7AMaRY,107
107
- mima/util/runtime_config.py,sha256=6DUvBCMUVV6XHTM0pp3Ppxz5DCO891j8B7sAl9mclH4,3811
108
- mima/view/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
- mima/view/camera.py,sha256=cDg6Sp4XjR3uEyk3pZr5O40EXJZuf8FowhBqxeEZba0,1779
110
- mima/view/scene.py,sha256=tIhCV0LX6tRO5yHtPg9W-6dO78xbulz7qgCT2nOJTbk,10946
111
- mima_engine-0.1.5.dist-info/METADATA,sha256=5AB-vlQ8chkvlSj_K0TGZCqwt4S0ouLxd-1nSod2pUo,432
112
- mima_engine-0.1.5.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
113
- mima_engine-0.1.5.dist-info/top_level.txt,sha256=5t1cOdQSaPQ0jWDhKDvDXwpV2XZ_a1GSSFAIvEsG0fQ,5
114
- mima_engine-0.1.5.dist-info/RECORD,,