mima-engine 0.1.4__py3-none-any.whl → 0.2.0__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.
- mima/__init__.py +1 -1
- mima/backend/pygame_assets.py +15 -9
- mima/backend/pygame_audio.py +5 -2
- mima/backend/pygame_backend.py +255 -57
- mima/backend/pygame_camera.py +63 -0
- mima/backend/pygame_events.py +331 -85
- mima/collision.py +182 -111
- mima/engine.py +155 -15
- mima/maps/tiled/tiled_map.py +3 -3
- mima/maps/tiled/tiled_tileset.py +1 -0
- mima/maps/tilemap.py +78 -15
- mima/maps/tileset.py +8 -2
- mima/maps/transition_map.py +6 -8
- mima/mode_engine.py +80 -0
- mima/objects/animated_sprite.py +23 -15
- mima/objects/attributes.py +3 -0
- mima/objects/creature.py +64 -25
- mima/objects/dynamic.py +30 -8
- mima/objects/effects/colorize_screen.py +22 -6
- mima/objects/effects/debug_box.py +124 -0
- mima/objects/effects/light.py +21 -30
- mima/objects/effects/show_sprite.py +39 -0
- mima/objects/effects/walking_on_grass.py +25 -7
- mima/objects/effects/walking_on_water.py +17 -6
- mima/objects/loader.py +24 -13
- mima/objects/projectile.py +21 -6
- mima/objects/sprite.py +7 -8
- mima/objects/world/color_gate.py +5 -2
- mima/objects/world/color_switch.py +12 -6
- mima/objects/world/container.py +17 -8
- mima/objects/world/floor_switch.py +8 -4
- mima/objects/world/gate.py +8 -5
- mima/objects/world/light_source.py +11 -9
- mima/objects/world/logic_gate.py +8 -7
- mima/objects/world/movable.py +72 -28
- mima/objects/world/oneway.py +14 -9
- mima/objects/world/pickup.py +10 -5
- mima/objects/world/switch.py +28 -25
- mima/objects/world/teleport.py +76 -55
- mima/scene_engine.py +19 -20
- mima/scripts/command.py +16 -2
- mima/scripts/commands/change_map.py +23 -4
- mima/scripts/commands/equip_weapon.py +23 -0
- mima/scripts/commands/give_item.py +5 -3
- mima/scripts/commands/move_map.py +9 -9
- mima/scripts/commands/parallel.py +16 -3
- mima/scripts/commands/present_item.py +7 -5
- mima/scripts/commands/screen_fade.py +30 -12
- mima/scripts/commands/serial.py +30 -7
- mima/scripts/commands/set_spawn_map.py +6 -3
- mima/scripts/commands/show_choices.py +16 -7
- mima/scripts/commands/show_dialog.py +110 -3
- mima/scripts/script_processor.py +41 -20
- mima/states/game_state.py +2 -0
- mima/states/memory.py +28 -0
- mima/states/quest.py +2 -3
- mima/types/keys.py +48 -0
- mima/types/mode.py +4 -10
- mima/types/player.py +9 -0
- mima/types/position.py +13 -0
- mima/types/tile_collision.py +11 -0
- mima/types/window.py +44 -0
- mima/usables/item.py +1 -0
- mima/util/colors.py +5 -0
- mima/util/constants.py +6 -0
- mima/util/functions.py +27 -0
- mima/util/input_defaults.py +109 -0
- mima/util/runtime_config.py +234 -30
- mima/util/trading_item.py +20 -0
- mima/view/camera.py +160 -19
- mima/view/mima_mode.py +612 -0
- mima/view/mima_scene.py +225 -0
- mima/view/mima_view.py +12 -0
- mima/view/mima_window.py +153 -0
- {mima_engine-0.1.4.dist-info → mima_engine-0.2.0.dist-info}/METADATA +4 -2
- mima_engine-0.2.0.dist-info/RECORD +128 -0
- {mima_engine-0.1.4.dist-info → mima_engine-0.2.0.dist-info}/WHEEL +1 -1
- mima/view/scene.py +0 -322
- mima_engine-0.1.4.dist-info/RECORD +0 -114
- {mima_engine-0.1.4.dist-info → mima_engine-0.2.0.dist-info}/top_level.txt +0 -0
mima/view/mima_scene.py
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING, Dict, List, Optional
|
|
4
|
+
|
|
5
|
+
from ..types.position import Position
|
|
6
|
+
from ..types.window import Window
|
|
7
|
+
from ..util.colors import BLACK, WHITE
|
|
8
|
+
from ..util.constants import (
|
|
9
|
+
DIALOG_CHARS_PER_LINE,
|
|
10
|
+
DIALOG_HEIGHT,
|
|
11
|
+
DIALOG_N_LINES,
|
|
12
|
+
DIALOG_WIDTH,
|
|
13
|
+
)
|
|
14
|
+
from .camera import Camera
|
|
15
|
+
from .mima_view import MimaView
|
|
16
|
+
from .mima_window import MimaWindow
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from ..objects.dynamic import Dynamic
|
|
20
|
+
from ..types.player import Player
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class MimaScene(MimaView):
|
|
24
|
+
def __init__(
|
|
25
|
+
self,
|
|
26
|
+
player: Player,
|
|
27
|
+
position: Position,
|
|
28
|
+
camera_name: Optional[str] = None,
|
|
29
|
+
) -> None:
|
|
30
|
+
self.window_stack: List[Window] = []
|
|
31
|
+
self.windows: Dict[Window, MimaWindow] = {}
|
|
32
|
+
self._current_window: Optional[MimaWindow] = None
|
|
33
|
+
self.stack_changed = False
|
|
34
|
+
self.skip_draw_ui = False
|
|
35
|
+
|
|
36
|
+
self.player: Player = player
|
|
37
|
+
self._position: Position = position
|
|
38
|
+
|
|
39
|
+
self._camera_name: str = (
|
|
40
|
+
camera_name if camera_name is not None else f"C_{player.name}"
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
self.camera: Camera
|
|
44
|
+
self._dialog_px: float
|
|
45
|
+
self._dialog_py: float
|
|
46
|
+
self._dialog_width: float = DIALOG_WIDTH
|
|
47
|
+
self._dialog_height: float = DIALOG_HEIGHT
|
|
48
|
+
self._dialog_spacing: float = 3 / self.engine.rtc.tile_height
|
|
49
|
+
|
|
50
|
+
self._dialog_text_color = BLACK
|
|
51
|
+
self._dialog_bg_color = WHITE
|
|
52
|
+
|
|
53
|
+
self.update_scene_position(self._position)
|
|
54
|
+
|
|
55
|
+
def update_scene_position(self, position: Position) -> None:
|
|
56
|
+
width = self.engine.backend.render_width / self.engine.rtc.tile_width
|
|
57
|
+
height = (
|
|
58
|
+
self.engine.backend.render_height / self.engine.rtc.tile_height
|
|
59
|
+
)
|
|
60
|
+
# print(f"Starting camera setup: {width}, {height}, {position}")
|
|
61
|
+
if position in (
|
|
62
|
+
Position.LEFT,
|
|
63
|
+
Position.RIGHT,
|
|
64
|
+
Position.TOP_LEFT,
|
|
65
|
+
Position.TOP_RIGHT,
|
|
66
|
+
Position.BOTTOM_LEFT,
|
|
67
|
+
Position.BOTTOM_RIGHT,
|
|
68
|
+
):
|
|
69
|
+
width /= 2
|
|
70
|
+
self._dialog_px = 1
|
|
71
|
+
else:
|
|
72
|
+
self._dialog_px = width / 2 - self._dialog_width / 2
|
|
73
|
+
|
|
74
|
+
if position in (
|
|
75
|
+
Position.TOP,
|
|
76
|
+
Position.BOTTOM,
|
|
77
|
+
Position.TOP_LEFT,
|
|
78
|
+
Position.TOP_RIGHT,
|
|
79
|
+
Position.BOTTOM_LEFT,
|
|
80
|
+
Position.BOTTOM_RIGHT,
|
|
81
|
+
):
|
|
82
|
+
height /= 2
|
|
83
|
+
self._dialog_py = height - 4
|
|
84
|
+
else:
|
|
85
|
+
self._dialog_py = height - 4
|
|
86
|
+
|
|
87
|
+
self.camera = Camera(self._camera_name, width, height)
|
|
88
|
+
if position == Position.CENTER:
|
|
89
|
+
# print(f"Camera setup finished: {width}, {height}")
|
|
90
|
+
return
|
|
91
|
+
|
|
92
|
+
if position in (
|
|
93
|
+
Position.RIGHT,
|
|
94
|
+
Position.BOTTOM_RIGHT,
|
|
95
|
+
Position.TOP_RIGHT,
|
|
96
|
+
):
|
|
97
|
+
self.camera.px = self.engine.backend.render_width / 2
|
|
98
|
+
self.camera.border_left = True
|
|
99
|
+
|
|
100
|
+
if position in (
|
|
101
|
+
Position.BOTTOM,
|
|
102
|
+
Position.BOTTOM_LEFT,
|
|
103
|
+
Position.BOTTOM_RIGHT,
|
|
104
|
+
):
|
|
105
|
+
self.camera.py = self.engine.backend.render_height / 2
|
|
106
|
+
self.camera.border_top = True
|
|
107
|
+
|
|
108
|
+
if position in (
|
|
109
|
+
Position.LEFT,
|
|
110
|
+
Position.TOP_LEFT,
|
|
111
|
+
Position.BOTTOM_LEFT,
|
|
112
|
+
):
|
|
113
|
+
self.camera.border_right = True
|
|
114
|
+
self.camera.border_color = BLACK
|
|
115
|
+
|
|
116
|
+
if position in (Position.TOP, Position.TOP_LEFT, Position.TOP_RIGHT):
|
|
117
|
+
self.camera.border_bottom = True
|
|
118
|
+
self.camera.border_color = BLACK
|
|
119
|
+
|
|
120
|
+
def update(
|
|
121
|
+
self,
|
|
122
|
+
elapsed_time: float,
|
|
123
|
+
*,
|
|
124
|
+
target: Optional[Dynamic] = None,
|
|
125
|
+
map_width: int = 0,
|
|
126
|
+
map_height: int = 0,
|
|
127
|
+
) -> bool:
|
|
128
|
+
self.update_window()
|
|
129
|
+
|
|
130
|
+
self.camera.update(target, map_width, map_height)
|
|
131
|
+
self.update_dialog_position()
|
|
132
|
+
|
|
133
|
+
# print(type(self._current_window))
|
|
134
|
+
return self._current_window.update(elapsed_time, self.camera)
|
|
135
|
+
|
|
136
|
+
def clear_stack(self, windows: Optional[List[Window]] = None):
|
|
137
|
+
self.stack_changed = True
|
|
138
|
+
if windows is not None:
|
|
139
|
+
self.window_stack = windows
|
|
140
|
+
else:
|
|
141
|
+
self.window_stack = []
|
|
142
|
+
|
|
143
|
+
def add_window(self, window: Window):
|
|
144
|
+
self.window_stack.append(window)
|
|
145
|
+
self.stack_changed = True
|
|
146
|
+
|
|
147
|
+
def pop_window(self):
|
|
148
|
+
self.stack_changed = True
|
|
149
|
+
return self.window_stack.pop()
|
|
150
|
+
|
|
151
|
+
def get_window(self) -> MimaWindow:
|
|
152
|
+
return self._current_window
|
|
153
|
+
|
|
154
|
+
def get_next_window_type(self) -> Window:
|
|
155
|
+
return self.window_stack[-1]
|
|
156
|
+
|
|
157
|
+
def get_previous_window_type(self) -> Window:
|
|
158
|
+
return self.window_stack[-2]
|
|
159
|
+
|
|
160
|
+
def handle_user_input(self):
|
|
161
|
+
if self._current_window is None:
|
|
162
|
+
self.update_window()
|
|
163
|
+
self._current_window.handle_user_input(self.player)
|
|
164
|
+
|
|
165
|
+
def draw_map_and_objects(
|
|
166
|
+
self, player, camera, tmap, dynamics, projectiles, effects
|
|
167
|
+
) -> None:
|
|
168
|
+
self._current_window.draw_map_layers(tmap, [-1, 0])
|
|
169
|
+
self._current_window.draw_objects_y_sorted(
|
|
170
|
+
dynamics + projectiles, [-1, 0, 1, 2]
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
self._current_window.draw_effect_layers(effects, [0])
|
|
174
|
+
|
|
175
|
+
self._current_window.draw_map_layers(tmap, [1, 2])
|
|
176
|
+
|
|
177
|
+
self._current_window.draw_effect_layers(effects, [1, 2, 3, 4])
|
|
178
|
+
|
|
179
|
+
def draw_ui(self):
|
|
180
|
+
if self.skip_draw_ui:
|
|
181
|
+
self.skip_draw_ui = False
|
|
182
|
+
return
|
|
183
|
+
self._current_window.draw_ui()
|
|
184
|
+
|
|
185
|
+
def draw_camera_border(self):
|
|
186
|
+
self.camera.draw_borders()
|
|
187
|
+
|
|
188
|
+
def load_window(self):
|
|
189
|
+
self._current_window.load(
|
|
190
|
+
self.engine.get_view().maps[self.player].name
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
def update_window(self):
|
|
194
|
+
old_window = self._current_window
|
|
195
|
+
self._current_window = self.windows[self.window_stack[-1]]
|
|
196
|
+
self._current_window.set_camera(self.camera)
|
|
197
|
+
self._current_window.set_player(self.player)
|
|
198
|
+
|
|
199
|
+
if self._current_window != old_window or self.stack_changed:
|
|
200
|
+
self.stack_changed = False
|
|
201
|
+
if old_window is not None:
|
|
202
|
+
old_window.on_exit_focus()
|
|
203
|
+
|
|
204
|
+
self._current_window.on_enter_focus()
|
|
205
|
+
self.skip_draw_ui = True
|
|
206
|
+
|
|
207
|
+
def update_dialog_position(self):
|
|
208
|
+
self._dialog_px = (
|
|
209
|
+
self.camera.visible_tiles_ex - self._dialog_width
|
|
210
|
+
) / 2
|
|
211
|
+
self._dialog_py = (
|
|
212
|
+
self.camera.visible_tiles_ey - self._dialog_height - 1
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
def display_dialog(self, lines):
|
|
216
|
+
self._current_window.display_dialog(
|
|
217
|
+
lines,
|
|
218
|
+
int(self._dialog_px * self.engine.rtc.tile_width),
|
|
219
|
+
int(self._dialog_py * self.engine.rtc.tile_height),
|
|
220
|
+
int(self._dialog_width * self.engine.rtc.tile_width),
|
|
221
|
+
int(self._dialog_height * self.engine.rtc.tile_height),
|
|
222
|
+
int(self._dialog_spacing * self.engine.rtc.tile_height),
|
|
223
|
+
self._dialog_text_color,
|
|
224
|
+
self._dialog_bg_color,
|
|
225
|
+
)
|
mima/view/mima_view.py
ADDED
mima/view/mima_window.py
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING, Any, List, Optional
|
|
4
|
+
|
|
5
|
+
from ..types.direction import Direction
|
|
6
|
+
from ..types.keys import Key as K
|
|
7
|
+
from ..types.player import Player
|
|
8
|
+
from ..types.window import Window
|
|
9
|
+
from ..util.functions import wrap_text
|
|
10
|
+
from .mima_view import MimaView
|
|
11
|
+
|
|
12
|
+
if TYPE_CHECKING:
|
|
13
|
+
from ..maps.tilemap import Tilemap
|
|
14
|
+
from ..objects.dynamic import Dynamic
|
|
15
|
+
from ..util.colors import Color
|
|
16
|
+
from .camera import Camera
|
|
17
|
+
from .mima_mode import MimaMode
|
|
18
|
+
from .mima_scene import MimaScene
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class MimaWindow(MimaView):
|
|
22
|
+
def __init__(
|
|
23
|
+
self,
|
|
24
|
+
mode: MimaMode,
|
|
25
|
+
scene: MimaScene,
|
|
26
|
+
wtype: Window = Window.PLACEHOLDER,
|
|
27
|
+
) -> None:
|
|
28
|
+
self.mode = mode
|
|
29
|
+
self.scene = scene
|
|
30
|
+
self.wtype = wtype
|
|
31
|
+
|
|
32
|
+
self.p_obj: Optional[Dynamic] = None
|
|
33
|
+
self.camera: Optional[Camera] = None
|
|
34
|
+
self.dialog_to_show: List[str] = []
|
|
35
|
+
self.additional_data: Optional[Any] = None
|
|
36
|
+
|
|
37
|
+
def on_enter_focus(self):
|
|
38
|
+
pass
|
|
39
|
+
|
|
40
|
+
def on_exit_focus(self):
|
|
41
|
+
pass
|
|
42
|
+
|
|
43
|
+
def update(self, elapsed_time: float, camera: Camera) -> bool:
|
|
44
|
+
return True
|
|
45
|
+
|
|
46
|
+
def handle_user_input(self, player: Player) -> None:
|
|
47
|
+
self.p_obj.vx = self.p_obj.vy = 0
|
|
48
|
+
|
|
49
|
+
if self.engine.keys.key_held(K.UP, player):
|
|
50
|
+
self.p_obj.vy = -1
|
|
51
|
+
self.p_obj.facing_direction = Direction.NORTH
|
|
52
|
+
if self.engine.keys.key_held(K.DOWN, player):
|
|
53
|
+
self.p_obj.vy = 1
|
|
54
|
+
self.p_obj.facing_direction = Direction.SOUTH
|
|
55
|
+
if self.engine.keys.key_held(K.LEFT, player):
|
|
56
|
+
self.p_obj.vx = -1
|
|
57
|
+
self.p_obj.facing_direction = Direction.WEST
|
|
58
|
+
if self.engine.keys.key_held(K.RIGHT, player):
|
|
59
|
+
self.p_obj.vx = 1
|
|
60
|
+
self.p_obj.facing_direction = Direction.EAST
|
|
61
|
+
|
|
62
|
+
def draw_map_layers(self, tilemap: Tilemap, layers: List[int]) -> None:
|
|
63
|
+
for pos in layers:
|
|
64
|
+
tilemap.draw_self(
|
|
65
|
+
self.camera.ox,
|
|
66
|
+
self.camera.oy,
|
|
67
|
+
self.camera.visible_tiles_sx,
|
|
68
|
+
self.camera.visible_tiles_sy,
|
|
69
|
+
self.camera.visible_tiles_ex,
|
|
70
|
+
self.camera.visible_tiles_ey,
|
|
71
|
+
pos,
|
|
72
|
+
self.camera.name,
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
def draw_objects_y_sorted(
|
|
76
|
+
self, objects: List[Dynamic], layers: Optional[List[int]] = None
|
|
77
|
+
) -> None:
|
|
78
|
+
layers = layers if layers is not None else list(range(-3, 3))
|
|
79
|
+
|
|
80
|
+
y_sorted = sorted(objects, key=lambda obj: obj.py)
|
|
81
|
+
for layer in layers:
|
|
82
|
+
for obj in y_sorted:
|
|
83
|
+
if self._check_draw_object(obj, layer):
|
|
84
|
+
# print(
|
|
85
|
+
# obj.px,
|
|
86
|
+
# obj.py,
|
|
87
|
+
# obj.name,
|
|
88
|
+
# self._camera.name,
|
|
89
|
+
# self._camera.ox,
|
|
90
|
+
# self._camera.oy,
|
|
91
|
+
# )
|
|
92
|
+
obj.draw_self(
|
|
93
|
+
self.camera.ox, self.camera.oy, self.camera.name
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
def draw_effect_layers(
|
|
97
|
+
self, effects: List[Dynamic], layers: List[int]
|
|
98
|
+
) -> None:
|
|
99
|
+
for layer in layers:
|
|
100
|
+
for effect in effects:
|
|
101
|
+
if effect.layer == layer:
|
|
102
|
+
effect.draw_self(
|
|
103
|
+
self.camera.ox, self.camera.oy, self.camera.name
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
def _check_draw_object(self, obj, layer) -> bool:
|
|
107
|
+
if obj.redundant or not obj.visible or obj.layer != layer:
|
|
108
|
+
return False
|
|
109
|
+
|
|
110
|
+
return self.check_draw_object(obj, layer)
|
|
111
|
+
|
|
112
|
+
def check_draw_object(self, obj, layer) -> bool:
|
|
113
|
+
"""Custom check if object should be drawn."""
|
|
114
|
+
return True
|
|
115
|
+
|
|
116
|
+
def draw_ui(self) -> None:
|
|
117
|
+
pass
|
|
118
|
+
|
|
119
|
+
def set_camera(self, camera: Camera):
|
|
120
|
+
self.camera = camera
|
|
121
|
+
|
|
122
|
+
def set_player(self, player: Player):
|
|
123
|
+
self.p_obj = self.engine.get_player(player)
|
|
124
|
+
|
|
125
|
+
def display_dialog(
|
|
126
|
+
self,
|
|
127
|
+
lines: List[str],
|
|
128
|
+
ppx: int,
|
|
129
|
+
ppy: int,
|
|
130
|
+
pwidth: int,
|
|
131
|
+
pheight: int,
|
|
132
|
+
pspacing: int,
|
|
133
|
+
text_color: Color,
|
|
134
|
+
bg_color: Color,
|
|
135
|
+
):
|
|
136
|
+
self.engine.backend.fill_rect(
|
|
137
|
+
ppx, ppy, pwidth, pheight, bg_color, self.camera.name
|
|
138
|
+
)
|
|
139
|
+
self.engine.backend.draw_rect(
|
|
140
|
+
ppx, ppy, pwidth, pheight, text_color, self.camera.name
|
|
141
|
+
)
|
|
142
|
+
# print(ppx, ppy, pwidth, pheight, lines)
|
|
143
|
+
for idx, line in enumerate(lines):
|
|
144
|
+
self.engine.backend.draw_big_text(
|
|
145
|
+
line,
|
|
146
|
+
ppx + 4,
|
|
147
|
+
ppy
|
|
148
|
+
+ 4
|
|
149
|
+
+ idx * pspacing
|
|
150
|
+
+ idx * self.engine.rtc.big_font_height,
|
|
151
|
+
text_color,
|
|
152
|
+
self.camera.name,
|
|
153
|
+
)
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: mima-engine
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: A game engine based on pygame.
|
|
5
5
|
Author-email: Stephan Balduin <stephan.balduin@mailbox.org>
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
7
7
|
Classifier: License :: OSI Approved :: MIT License
|
|
8
8
|
Requires-Python: >=3.8
|
|
9
9
|
Description-Content-Type: text/markdown
|
|
10
|
+
Provides-Extra: ce
|
|
11
|
+
Requires-Dist: pygame-ce; extra == "ce"
|
|
10
12
|
Provides-Extra: pygame
|
|
11
|
-
Requires-Dist: pygame
|
|
13
|
+
Requires-Dist: pygame; extra == "pygame"
|
|
12
14
|
|
|
13
15
|
# Mima Engine
|
|
14
16
|
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
mima/__init__.py,sha256=Zn1KFblwuFHiDRdRAiRnDBRkbPttWh44jKa5zG2ov0E,22
|
|
2
|
+
mima/collision.py,sha256=-XISlbgGK9QI0Z--vm2KEsFx7QsDPrhIu0mM71AuH38,9251
|
|
3
|
+
mima/engine.py,sha256=xsRtw5TRKDRMLSI342SnxgNdRdX2OZ1FRP4xA55dTls,10459
|
|
4
|
+
mima/mode_engine.py,sha256=Yidqa1lTNGyNHTMpz4ysIjFRdabQj71QeNTuQDx4PSA,2259
|
|
5
|
+
mima/scene_engine.py,sha256=S2I_HWQ29ZYlnKyKaE_uyZ84M7oBC1euexefuPcvuaY,2662
|
|
6
|
+
mima/backend/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
7
|
+
mima/backend/pygame_assets.py,sha256=TdDmKASk1n6whwh4ONxX41kofVS_iXhsdEzCV5l8NeM,11986
|
|
8
|
+
mima/backend/pygame_audio.py,sha256=gag9bM-UT8DfYpGDYvKBn8jdnwgFU4NklEs2aNwHhRY,2365
|
|
9
|
+
mima/backend/pygame_backend.py,sha256=yS_QMkugldd6vzHCoZSF6jtyGp__NkQZbiSiloN4iIs,18470
|
|
10
|
+
mima/backend/pygame_camera.py,sha256=5ietEyhDryT3SBChvcY_jdsWRi09gcTg5O5mvg_15mM,2059
|
|
11
|
+
mima/backend/pygame_events.py,sha256=j825eapDFS0sKJLpRwg4otVXaze7x4qL_jQXlDwCMaM,26477
|
|
12
|
+
mima/maps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
+
mima/maps/template.py,sha256=xBIIzf2o6ATHevfZA5b5XP-o6o71-04u7OAS4847buY,1178
|
|
14
|
+
mima/maps/tile.py,sha256=ZIPtpVCrX_dnL8SKwobj_0etMCUrQxRL5d04KnEmwNQ,639
|
|
15
|
+
mima/maps/tile_animation.py,sha256=xoI41BIFd6udW47xHAbfGhuqMVIvAw75vlec1iEhdhE,106
|
|
16
|
+
mima/maps/tile_info.py,sha256=VLAjfPCrLbzTP7p1qk5O3ytc4zFg_52ZyYvAbufC_X8,152
|
|
17
|
+
mima/maps/tile_layer.py,sha256=L8qmXaWnAaS4FUb-poC8Xve_pGvoFmwR_YCLE1tdWww,1592
|
|
18
|
+
mima/maps/tilemap.py,sha256=u3SDH57V12Rh7FLTC5zEO9fLt5w6TEqnAaRdkhRbEdw,6966
|
|
19
|
+
mima/maps/tileset.py,sha256=okd0foJ04qb9KrBMlc094Du9TraRaOcikeC3-xIXfZ0,1006
|
|
20
|
+
mima/maps/tileset_info.py,sha256=nJvghbxlxpvYOXaR1A2Joyz3LxPV7usspQcvKM5iyBg,136
|
|
21
|
+
mima/maps/transition_map.py,sha256=B5vrEkDXiEDIR7rjtJfwM8WngLztDnfoni-vEPNfG8U,4909
|
|
22
|
+
mima/maps/tiled/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
+
mima/maps/tiled/tiled_layer.py,sha256=JpSoxHGYf-g4fjGcU8J8z3M9RaSvuBd1VHIp9joZy4A,1572
|
|
24
|
+
mima/maps/tiled/tiled_map.py,sha256=eqtgqfxwBA5zEd4Kh4L1uSsaUHYZATNOmBrtpGYas9I,2968
|
|
25
|
+
mima/maps/tiled/tiled_object.py,sha256=ubfvPY2VSfy7tOhakHbfBbD4wa6X3fpSJ8ugGUzvGuI,2782
|
|
26
|
+
mima/maps/tiled/tiled_objectgroup.py,sha256=CDaxhpj65v-jKGdIHbN80VBfd6GbEfALgJnB5cdcKUU,588
|
|
27
|
+
mima/maps/tiled/tiled_template.py,sha256=02JlfGitkorSFztDQ4BrLx7ZnWRctJgV7azK5cGvTNE,1498
|
|
28
|
+
mima/maps/tiled/tiled_tile.py,sha256=CMh0W7KweqP_WZUbcgcYT3xis8hOECBlzaVtRKTYLX8,3172
|
|
29
|
+
mima/maps/tiled/tiled_tileset.py,sha256=UuzyF5bSfZcfmnxC4Fu4FCLrmoPADCVGY-sUQP8eVfM,1437
|
|
30
|
+
mima/objects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
|
+
mima/objects/animated_sprite.py,sha256=RMhd8iALN-CdnmLDS0-WSy0Z0Gie8f2BlZ0nUMFSiA0,6784
|
|
32
|
+
mima/objects/attribute_effect.py,sha256=zikOSb6-hD6Ecm4L9EyRocTyJQ7IYC0CJ9DCBxbK4cU,650
|
|
33
|
+
mima/objects/attributes.py,sha256=qqIVjuIXUQDv3qtdoaRDvBnx5oUbjuPdvcGR49fHRwM,3781
|
|
34
|
+
mima/objects/creature.py,sha256=0clnIjSRF4D6d9N5fVzUwIOaWWxOPnMAEY1I2YU7SG4,12553
|
|
35
|
+
mima/objects/dynamic.py,sha256=dUKYRczqXob80Vo-YzDVoXfs32gCy3n2ragzi4wWrM8,6362
|
|
36
|
+
mima/objects/loader.py,sha256=ofJQUeKF6V3R0qPQPNngc4U8FLX8bjGD1mPW__TzQ6A,4374
|
|
37
|
+
mima/objects/projectile.py,sha256=xsbIcGKru1A2xZ47c8Qfl-8U708go0DPT1KUx-HiQZM,3001
|
|
38
|
+
mima/objects/sprite.py,sha256=quNsFAPvADsSsitEmw1omyol9DA-hpAVQmGxBAQUDe8,3851
|
|
39
|
+
mima/objects/effects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
40
|
+
mima/objects/effects/colorize_screen.py,sha256=qTd9X_xU3PK25bP_Zn61T-bS6xC4O3ATRDPnZrzq5gA,1702
|
|
41
|
+
mima/objects/effects/debug_box.py,sha256=Lc9bx8vGU9n0GXEFwrWmtPfcH0KBpMBspb-eNObgCDc,4074
|
|
42
|
+
mima/objects/effects/light.py,sha256=ivl0euJoaBJHYNC7WRlr4wCZqTgvjZurKerItlWHC6M,3044
|
|
43
|
+
mima/objects/effects/show_sprite.py,sha256=vR50nWV1LtPrje1NCOllLVMVilI03R9IcpdRCCe8LFo,964
|
|
44
|
+
mima/objects/effects/walking_on_grass.py,sha256=kjBNPEapFFWr-_HZX_vgub7QasXvpPJ34rsRQqKxpOQ,1677
|
|
45
|
+
mima/objects/effects/walking_on_water.py,sha256=9KbeQut852I8O_vwWB5gSf0CnMgoa5tScQijEGLUHR4,1548
|
|
46
|
+
mima/objects/world/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
47
|
+
mima/objects/world/color_gate.py,sha256=JPV5tApbHWYFQtdxWd-slCZodw6ucFvkEMT698lEigs,2029
|
|
48
|
+
mima/objects/world/color_switch.py,sha256=1HN1ZYWAGFuepX4ELREKfsa_1EA4Fx7siPCMxPMEVAk,3400
|
|
49
|
+
mima/objects/world/container.py,sha256=r6wWoKG_6btGtqlTS_AbxKBJ_-WxSx2ixoDxRHLZleQ,6212
|
|
50
|
+
mima/objects/world/floor_switch.py,sha256=Tplii1SjbQQq734Sz1d_HMWhWPlsRs-xxk6hvWLiVRg,3453
|
|
51
|
+
mima/objects/world/gate.py,sha256=ZUMQ9R25twyt75ao7Te7j1LaZIiAVdpruaEgiK3iweI,5774
|
|
52
|
+
mima/objects/world/light_source.py,sha256=0N8wJOnWTeYb-p-N2qD7-opEsdsfBokLvIbRWB0mSxk,4013
|
|
53
|
+
mima/objects/world/logic_gate.py,sha256=WFwWoF-nQY-1gt1-4hawQkLxWzM1dtKiM2iclchRoe0,5148
|
|
54
|
+
mima/objects/world/movable.py,sha256=7qxXavKIoKZN3zHTKYsQddfmf6s9U3Qte4dbvfak_KI,12041
|
|
55
|
+
mima/objects/world/oneway.py,sha256=9pRozTdoB0Z_DqDZehLLT29lJ1K4fenp2UWeVTOaJt4,5657
|
|
56
|
+
mima/objects/world/pickup.py,sha256=KcF-E3lKyhkar6WrOezqeLYH_Ua1pignb-lMMDt9V9o,3190
|
|
57
|
+
mima/objects/world/switch.py,sha256=kk4_Z6XwymI-FjHrbqy97Ou_8ZOeLgesv8TtrhXCCw0,5800
|
|
58
|
+
mima/objects/world/teleport.py,sha256=EzlGagBLgZ3htEv2REBYGcTb6qhthtSJLp0WAXlIkBI,10815
|
|
59
|
+
mima/scripts/__init__.py,sha256=yLRT6igjwtSkOFbd0x8PXXFZVt1_xUIuCHhWhywHRuE,75
|
|
60
|
+
mima/scripts/command.py,sha256=rLjUbmvmpHqhaznt9TWkifY5IKtO-AdAGkzKnoKqAGg,881
|
|
61
|
+
mima/scripts/script_processor.py,sha256=IPl6oFlVAnZ2uibc9X4ffyTNwpendk4cMGZMvZDObjc,2072
|
|
62
|
+
mima/scripts/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
|
+
mima/scripts/commands/add_quest.py,sha256=r5eCLgAarLJmtMROxLqMTryK5Bfv9wUSqsC8p0RHVkU,387
|
|
64
|
+
mima/scripts/commands/change_map.py,sha256=I1_sr3iDmXDzupbZIIyt6GkkNq2rv3OF8aB3QqWStno,981
|
|
65
|
+
mima/scripts/commands/close_dialog.py,sha256=-yWyEtYA41RsehJ4c-zIXhxIhR25e8GTWN20GuTnT80,207
|
|
66
|
+
mima/scripts/commands/equip_weapon.py,sha256=pKx_i-b48EbrUu0-Ak65W_VH40IuQj_2SfazY-kKztQ,636
|
|
67
|
+
mima/scripts/commands/give_item.py,sha256=yc6iRTy40TvdEqU6u3q4Bh0JAlHzoFs0ul9Lwt5DQ3c,688
|
|
68
|
+
mima/scripts/commands/give_resource.py,sha256=J9c0hk__DY4To1BStZ5qmcEOMbAYRefNJT8Kk5WyORE,1805
|
|
69
|
+
mima/scripts/commands/move_map.py,sha256=NY0LDex2_lcXz-6HR58eTYC4VQkiOvywxUQ5IdSY0iw,4907
|
|
70
|
+
mima/scripts/commands/move_to.py,sha256=FE2efowCpMp5QgDBvIlGju4T0xfa9N1UwjaE2yh3v4Q,1420
|
|
71
|
+
mima/scripts/commands/oneway_move.py,sha256=1mytQxv6kiSGr_-H7m-DQPKbFKfT2T45i99Ro764vE4,1683
|
|
72
|
+
mima/scripts/commands/parallel.py,sha256=YFDDv6Lgc6uKvr_53II6YUznnlnW8JNhmlWK5FMwDSw,1780
|
|
73
|
+
mima/scripts/commands/play_sound.py,sha256=m4wqWC6O8TUsJIcYrP8bb8ZFjSNK3IpAyBdxLo-e8zo,348
|
|
74
|
+
mima/scripts/commands/present_item.py,sha256=7kYfoT4e6LtmMlwXX66vBZ6o8jBAAJR8QunwYxLAb-Q,1780
|
|
75
|
+
mima/scripts/commands/progress_quest.py,sha256=-Nm7basBFdnixKwf42Xrs6iDROx22WGIDHpAZ0itpGU,359
|
|
76
|
+
mima/scripts/commands/quit_game.py,sha256=BmLlh45K46Mx57j1dE2wWhmmmcb0Y-X5mLrFV1HIfhI,219
|
|
77
|
+
mima/scripts/commands/save_game.py,sha256=yhmXIpnhD89otDmltE7mucdEozHc0LfRSZCSZZO915c,392
|
|
78
|
+
mima/scripts/commands/screen_fade.py,sha256=rcdH44ANsaQa_wLMTj7mdzc4Dy9ZzjAQLNMWAcmFh34,2290
|
|
79
|
+
mima/scripts/commands/serial.py,sha256=AI8h2r5nF9B7H6gpiI3J3ewvpF9p0thsYpnKecXWfP8,2223
|
|
80
|
+
mima/scripts/commands/set_facing_direction.py,sha256=M_AFJQWgd0nYG7ZPq6BBOmjF4n0jcnBdvyxLboucjZk,567
|
|
81
|
+
mima/scripts/commands/set_spawn_map.py,sha256=OstfyoHyKVLmXZmP4pwCQT1GjxhC8yr7cwWcBAuODNc,531
|
|
82
|
+
mima/scripts/commands/show_choices.py,sha256=6DwlhmXMcAgMyVmzwvUoQKEmIu2ynO1VmiAjPvbuy2A,1737
|
|
83
|
+
mima/scripts/commands/show_dialog.py,sha256=xKlve5O03IlBvg87zfyDczWT7IlaMRPfsl2Y9hxabVE,3948
|
|
84
|
+
mima/scripts/commands/take_coins.py,sha256=37jChQBQKFaIBx6-Bvx3xNPlqSq87pvnMtnSWQWU1iI,573
|
|
85
|
+
mima/states/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
86
|
+
mima/states/game_state.py,sha256=ZWOEy7EtKT1mj9yOfpelKZCJaS4aZS7PJ6Uz49NllhM,5112
|
|
87
|
+
mima/states/memory.py,sha256=js8sqKDcq8xPw8oB6j4GICXWeNsoqj_rueSe3jRS0-A,1020
|
|
88
|
+
mima/states/quest.py,sha256=sF1IhVa0QcwSoHrl8hiCG-j6UlE51UrLbq--a8Rvu4k,2380
|
|
89
|
+
mima/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
90
|
+
mima/types/alignment.py,sha256=Oz5nhU2MXClOZyKX47A3wyajyD2HG0DWK3-41uBhnv4,89
|
|
91
|
+
mima/types/blend.py,sha256=0zhU2QjlajZDh3-tvmUCP_gMQsvr_eZPOZ9dqbk3LLU,96
|
|
92
|
+
mima/types/damage.py,sha256=8AgvwiNgcENXwc0v0VCuxxA1w45huSTQdR6S1RW4yj8,584
|
|
93
|
+
mima/types/direction.py,sha256=P7EqLZFacMjf8BmQmgNFlXutKtYxlJ6U5ha3JPyFwjI,1116
|
|
94
|
+
mima/types/gate_color.py,sha256=Mby5_s4EoTIrEZ92gKLBAG9vymF3207RK93EfqGtLuk,86
|
|
95
|
+
mima/types/graphic_state.py,sha256=6pUumsqyvPIVIJrOH4TRfgrHWDlTkNYU1g6Joc9Cx_U,308
|
|
96
|
+
mima/types/keys.py,sha256=OP4P4gsGRbN242CRzuYmzlYC1JnNlZU41p1Z3yLUQz4,935
|
|
97
|
+
mima/types/mode.py,sha256=sxq6ZLKAswrHjnxeIB4AZFfiboFeT-Vh2l0Wcdy-r-Q,120
|
|
98
|
+
mima/types/nature.py,sha256=4tANHg4mzN8O57B-pr0jafikCZkqB83r-pJpDG4CnAw,159
|
|
99
|
+
mima/types/object.py,sha256=D21AAm-GCtxQQM0n741T17MeQPVsVSOHQFtC84VGZoQ,377
|
|
100
|
+
mima/types/player.py,sha256=YQanpSfR6Y46Fqu4Hj67NgVJcpEn5O5v2rdGZEzq3GQ,99
|
|
101
|
+
mima/types/position.py,sha256=yBZvHcIJ89mbY-4yVpsu0psZFP-D1vV12bBzMHkaULM,185
|
|
102
|
+
mima/types/start.py,sha256=maeU5GQ9tE8q28vrA7aBGWqmi6mPW4aZTC_Qh7R_zp0,80
|
|
103
|
+
mima/types/terrain.py,sha256=vMITb4PnoEMAWc8VF-g7NeQ5453yLM93q9dcF_5RSfI,130
|
|
104
|
+
mima/types/tile_collision.py,sha256=2O_IfJV1lCtfItjyu3dtm2UY7_JNwCSk9q0JXrQaGmk,152
|
|
105
|
+
mima/types/weapon_slot.py,sha256=kX5mYKgrgn-CcJ-gUzfvTGOVoxLllPRQ92sRjWYoqCg,87
|
|
106
|
+
mima/types/window.py,sha256=ZdknCL1lvlQDbr-eVXlXObQ_BsZ6PF7cxMGQguhmV44,890
|
|
107
|
+
mima/usables/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
108
|
+
mima/usables/item.py,sha256=6xZSm_-x14LP5-Cgicg6GOt1bG3OhwfYqnZGJUL1gRg,911
|
|
109
|
+
mima/usables/weapon.py,sha256=U0h6AZAA3bC8QapFqPcHFZdRKiwIf07xPtgPXUn1Z90,1269
|
|
110
|
+
mima/util/__init__.py,sha256=KMuEDnRsGr32gXED12ZyL1za6iKAuk_Tn8S3mTtpYds,42
|
|
111
|
+
mima/util/colors.py,sha256=u4YVTCvSNFBhHaR9dFiMVzvE9fRM1UlW1m8gDa7oDY4,1483
|
|
112
|
+
mima/util/constants.py,sha256=Sy-6vwAXJf86drHy7IxQLDXtuBbcGhuNU0-YKTUNBFM,1353
|
|
113
|
+
mima/util/functions.py,sha256=GqAgT4-ATZcCvaaUyEOCeXphUu8xJXmVshAbFPJfOWI,1130
|
|
114
|
+
mima/util/input_defaults.py,sha256=XHcoxzo7BPCSUTWK-kKS5OIVjqoBLHRgMWXmPE5VB4U,2617
|
|
115
|
+
mima/util/logging.py,sha256=p6-C1ozlCs_sCkmykh_B0NgZtvSkcZXXseE6qA6Zwew,1197
|
|
116
|
+
mima/util/property.py,sha256=o6dEWpIOWxwS_lf6MvYZSjkyI5Amo56P2JIDa7AMaRY,107
|
|
117
|
+
mima/util/runtime_config.py,sha256=uRJJ4Tgr6fBv8Oc0w2oBRxWAj0ljTqhy_8Ff1blROVw,9505
|
|
118
|
+
mima/util/trading_item.py,sha256=4GROKX-8EiMx_v4zgWzR1zjvyJvccB7t8T9Q3yaqQWI,370
|
|
119
|
+
mima/view/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
120
|
+
mima/view/camera.py,sha256=IZQJF7NxrQ265TRgPnlmSVcNwgsJ3I1ek40u7PQG20g,6260
|
|
121
|
+
mima/view/mima_mode.py,sha256=fFOcjJzaFK-3OIyqW8nTynKFVNYJcNWOF8hJe2B-t5s,21981
|
|
122
|
+
mima/view/mima_scene.py,sha256=oGfyM-WLN-eQLILnIbzI0sa160BqsS8dE2UaC2qq2XY,6988
|
|
123
|
+
mima/view/mima_view.py,sha256=tKLcoNWVwldoqgG3jxhI_jMsFAXzod2csXyEbhub2xI,217
|
|
124
|
+
mima/view/mima_window.py,sha256=LllwqhKo1D-MoNAXJaiufTi0AacRo_QnVZX8WYUH4ds,4790
|
|
125
|
+
mima_engine-0.2.0.dist-info/METADATA,sha256=oscjbQvpywuUoYE9MkygVi5kd5ltZ_LyLWILzyziHNg,487
|
|
126
|
+
mima_engine-0.2.0.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
|
|
127
|
+
mima_engine-0.2.0.dist-info/top_level.txt,sha256=5t1cOdQSaPQ0jWDhKDvDXwpV2XZ_a1GSSFAIvEsG0fQ,5
|
|
128
|
+
mima_engine-0.2.0.dist-info/RECORD,,
|