mima-engine 0.2.4__tar.gz → 0.2.5__tar.gz

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 (137) hide show
  1. {mima_engine-0.2.4 → mima_engine-0.2.5}/PKG-INFO +1 -1
  2. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/__init__.py +1 -1
  3. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/backend/pygame_backend.py +4 -1
  4. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/core/engine.py +8 -1
  5. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/save_game.py +1 -0
  6. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/states/game_state.py +60 -35
  7. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/util/constants.py +2 -0
  8. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima_engine.egg-info/PKG-INFO +1 -1
  9. {mima_engine-0.2.4 → mima_engine-0.2.5}/README.md +0 -0
  10. {mima_engine-0.2.4 → mima_engine-0.2.5}/pyproject.toml +0 -0
  11. {mima_engine-0.2.4 → mima_engine-0.2.5}/setup.cfg +0 -0
  12. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/backend/__init__.py +0 -0
  13. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/backend/pygame_assets.py +0 -0
  14. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/backend/pygame_audio.py +0 -0
  15. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/backend/pygame_camera.py +0 -0
  16. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/backend/pygame_events.py +0 -0
  17. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/backend/touch_control_scheme_a.py +0 -0
  18. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/backend/touch_control_scheme_b.py +0 -0
  19. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/core/__init__.py +0 -0
  20. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/core/collision.py +0 -0
  21. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/core/database.py +0 -0
  22. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/core/mode_engine.py +0 -0
  23. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/core/scene_engine.py +0 -0
  24. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/__init__.py +0 -0
  25. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/template.py +0 -0
  26. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/tile.py +0 -0
  27. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/tile_animation.py +0 -0
  28. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/tile_info.py +0 -0
  29. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/tile_layer.py +0 -0
  30. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/tiled/__init__.py +0 -0
  31. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/tiled/tiled_layer.py +0 -0
  32. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/tiled/tiled_map.py +0 -0
  33. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/tiled/tiled_object.py +0 -0
  34. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/tiled/tiled_objectgroup.py +0 -0
  35. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/tiled/tiled_template.py +0 -0
  36. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/tiled/tiled_tile.py +0 -0
  37. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/tiled/tiled_tileset.py +0 -0
  38. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/tilemap.py +0 -0
  39. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/tileset.py +0 -0
  40. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/tileset_info.py +0 -0
  41. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/maps/transition_map.py +0 -0
  42. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/__init__.py +0 -0
  43. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/animated_sprite.py +0 -0
  44. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/attribute_effect.py +0 -0
  45. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/attributes.py +0 -0
  46. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/creature.py +3 -3
  47. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/dynamic.py +0 -0
  48. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/effects/__init__.py +0 -0
  49. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/effects/colorize_screen.py +0 -0
  50. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/effects/debug_box.py +0 -0
  51. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/effects/light.py +0 -0
  52. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/effects/show_sprite.py +0 -0
  53. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/effects/walking_on_grass.py +0 -0
  54. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/effects/walking_on_water.py +0 -0
  55. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/loader.py +0 -0
  56. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/projectile.py +0 -0
  57. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/sprite.py +0 -0
  58. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/world/__init__.py +0 -0
  59. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/world/color_gate.py +0 -0
  60. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/world/color_switch.py +0 -0
  61. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/world/container.py +0 -0
  62. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/world/floor_switch.py +0 -0
  63. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/world/gate.py +0 -0
  64. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/world/light_source.py +0 -0
  65. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/world/logic_gate.py +0 -0
  66. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/world/movable.py +0 -0
  67. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/world/oneway.py +0 -0
  68. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/world/pickup.py +0 -0
  69. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/world/switch.py +0 -0
  70. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/objects/world/teleport.py +0 -0
  71. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/__init__.py +0 -0
  72. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/command.py +0 -0
  73. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/__init__.py +0 -0
  74. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/add_quest.py +0 -0
  75. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/change_map.py +0 -0
  76. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/close_dialog.py +0 -0
  77. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/equip_weapon.py +0 -0
  78. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/give_item.py +0 -0
  79. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/give_resource.py +0 -0
  80. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/move_map.py +0 -0
  81. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/move_to.py +0 -0
  82. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/oneway_move.py +0 -0
  83. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/parallel.py +0 -0
  84. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/play_sound.py +0 -0
  85. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/present_item.py +0 -0
  86. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/progress_quest.py +0 -0
  87. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/quit_game.py +0 -0
  88. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/screen_fade.py +0 -0
  89. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/serial.py +0 -0
  90. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/set_facing_direction.py +0 -0
  91. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/set_spawn_map.py +0 -0
  92. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/show_choices.py +0 -0
  93. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/show_dialog.py +0 -0
  94. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/commands/take_coins.py +0 -0
  95. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/scripts/script_processor.py +0 -0
  96. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/states/__init__.py +0 -0
  97. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/states/memory.py +0 -0
  98. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/states/quest.py +0 -0
  99. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/__init__.py +0 -0
  100. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/alignment.py +0 -0
  101. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/blend.py +0 -0
  102. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/damage.py +0 -0
  103. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/direction.py +0 -0
  104. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/gate_color.py +0 -0
  105. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/graphic_state.py +0 -0
  106. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/keys.py +0 -0
  107. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/mode.py +0 -0
  108. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/nature.py +0 -0
  109. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/object.py +0 -0
  110. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/player.py +0 -0
  111. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/position.py +0 -0
  112. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/start.py +0 -0
  113. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/terrain.py +0 -0
  114. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/tile_collision.py +0 -0
  115. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/weapon_slot.py +0 -0
  116. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/types/window.py +0 -0
  117. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/usables/__init__.py +0 -0
  118. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/usables/item.py +0 -0
  119. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/usables/weapon.py +0 -0
  120. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/util/__init__.py +0 -0
  121. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/util/colors.py +0 -0
  122. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/util/functions.py +0 -0
  123. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/util/input_defaults.py +0 -0
  124. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/util/logging.py +0 -0
  125. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/util/property.py +0 -0
  126. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/util/runtime_config.py +0 -0
  127. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/util/trading_item.py +0 -0
  128. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/view/__init__.py +0 -0
  129. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/view/camera.py +0 -0
  130. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/view/mima_mode.py +0 -0
  131. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/view/mima_scene.py +0 -0
  132. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/view/mima_view.py +0 -0
  133. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima/view/mima_window.py +0 -0
  134. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima_engine.egg-info/SOURCES.txt +0 -0
  135. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima_engine.egg-info/dependency_links.txt +0 -0
  136. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima_engine.egg-info/requires.txt +0 -0
  137. {mima_engine-0.2.4 → mima_engine-0.2.5}/src/mima_engine.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mima-engine
3
- Version: 0.2.4
3
+ Version: 0.2.5
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
@@ -1,4 +1,4 @@
1
- __version__ = "0.2.4"
1
+ __version__ = "0.2.5"
2
2
 
3
3
  from .core.engine import MimaEngine
4
4
  from .core.mode_engine import MimaModeEngine
@@ -87,6 +87,7 @@ class PygameBackend:
87
87
  fullscreen: bool = False,
88
88
  target_fps: int = 60,
89
89
  resizeable: bool = False,
90
+ no_scaled_flag: bool = False,
90
91
  ):
91
92
  LOG.info("Constructing window.")
92
93
  self.render_width, self.display_width = width, width
@@ -96,7 +97,9 @@ class PygameBackend:
96
97
 
97
98
  flags = pygame.HWSURFACE | pygame.DOUBLEBUF
98
99
  if fullscreen:
99
- flags = flags | pygame.FULLSCREEN | pygame.SCALED
100
+ flags = flags | pygame.FULLSCREEN
101
+ if not no_scaled_flag:
102
+ flags = flags | pygame.SCALED
100
103
  self.pixel_size = -1 # Calculate later
101
104
  elif pixel_size == 0:
102
105
  flags = flags | pygame.SCALED
@@ -78,6 +78,7 @@ class MimaEngine(ABC):
78
78
  fullscreen: bool = False,
79
79
  target_fps: int = 60,
80
80
  resizable: bool = False,
81
+ no_scaled_flag: bool = False,
81
82
  kb_map=None,
82
83
  ):
83
84
  """Initialize backend and create a window."""
@@ -106,7 +107,13 @@ class MimaEngine(ABC):
106
107
  joy_to_player=self.rtc.get_joy_to_player(),
107
108
  )
108
109
  self.backend.construct(
109
- width, height, pixel_size, fullscreen, target_fps, resizable
110
+ width,
111
+ height,
112
+ pixel_size,
113
+ fullscreen,
114
+ target_fps,
115
+ resizable,
116
+ no_scaled_flag,
110
117
  )
111
118
  self.backend.user_input.enable_touch_controls = (
112
119
  self.enable_touch_controls
@@ -9,5 +9,6 @@ class CommandSaveGame(Command):
9
9
  quest.save_state()
10
10
  self.engine.game_state.save_to_disk()
11
11
  self.completed = True
12
+ print(f"Saved the game to {self.engine.game_state.state_name}")
12
13
 
13
14
  # print(self.engine.game_state._state["player"])
@@ -2,19 +2,21 @@ import json
2
2
  import logging
3
3
  import os
4
4
  from os import PathLike
5
- from typing import Any, Dict, List, Optional, Union
5
+ from pathlib import Path
6
+ from typing import Any, Dict, Union
6
7
 
8
+ # from typing_extensions import overload
9
+ from ..util.constants import SAVE_FILE_NAME
7
10
  from ..util.functions import strtobool
8
11
 
9
12
  LOG = logging.getLogger(__name__)
10
13
 
11
14
 
12
15
  class GameState:
13
- def __init__(self, filename: PathLike):
14
- self.filename = filename
15
- self._state: Dict[str, Any] = {
16
- "savefile_name": os.path.split(self.filename)[-1].split(".")[0]
17
- }
16
+ def __init__(self, save_path: PathLike, state_name: str = "autosave.json"):
17
+ self.state_name = state_name
18
+ self._save_path = save_path
19
+ self._state: Dict[str, Any] = {}
18
20
 
19
21
  def save_value(
20
22
  self, key: str, value: Union[int, float, bool, str, dict, list]
@@ -27,12 +29,22 @@ class GameState:
27
29
  else:
28
30
  state[part] = value
29
31
 
32
+ # @overload
33
+ # def load_value(
34
+ # self, key: str, default: str, astype: str | None
35
+ # ) -> str | None: ...
36
+
37
+ # @overload
38
+ # def load_value(
39
+ # self, key: str, default: int, astype: str | None
40
+ # ) -> int | None: ...
41
+
30
42
  def load_value(
31
43
  self,
32
44
  key: str,
33
- default: Optional[Union[int, float, bool, str, dict, list]] = None,
34
- astype: Optional[str] = None,
35
- ) -> Optional[Union[int, float, bool, str, dict, list]]:
45
+ default: int | float | bool | str | dict | list | None = None,
46
+ astype: str | None = None,
47
+ ) -> int | float | bool | str | dict | list | None:
36
48
  parts = key.split("__")
37
49
  state = self._state
38
50
  for idx, part in enumerate(parts):
@@ -57,11 +69,11 @@ class GameState:
57
69
  return data
58
70
 
59
71
  def load_from_disk(self, autosave: bool = False):
60
- filename = self.filename
61
- if autosave:
62
- filename = os.path.join(
63
- os.path.split(filename)[0], "autosave.json"
64
- )
72
+ # filename = self.filename
73
+ # if autosave:
74
+ # filename = os.path.join(self._save_path, "autosave.json")
75
+ # else:
76
+ filename = Path(self._save_path) / self.state_name
65
77
  try:
66
78
  with open(filename, "r") as fp:
67
79
  self._state = json.load(fp)
@@ -71,32 +83,33 @@ class GameState:
71
83
  LOG.info("No saved state found or state corrupted.")
72
84
 
73
85
  if autosave:
74
- self.filename = os.path.join(
75
- os.path.split(filename)[0],
76
- f"{self._state['savefile_name']}.json",
77
- )
86
+ self.state_name = self.load_value("savefile_name", "")
87
+ # if autosave:
88
+ # self.filename = os.path.join(
89
+ # os.path.split(filename)[0],
90
+ # f"{self._state['savefile_name']}.json",
91
+ # )
78
92
 
79
93
  def save_to_disk(self, autosave: bool = False):
80
- filename = self.filename
94
+ # filename = self.filename
81
95
  if autosave:
82
- filename = os.path.join(
83
- os.path.split(filename)[0], "autosave.json"
84
- )
85
- self.save_value("savefile_name", "autosave")
96
+ filename = Path(self._save_path) / "autosave.json"
97
+ self.save_value("savefile_name", self.state_name)
86
98
  self.save_value("player__pos_x", 5.0)
87
99
  self.save_value("player__pos_y", 5.0)
88
100
  self.save_value(
89
101
  "player__map_name", self.load_value("player__spawn_map")
90
102
  )
91
103
  else:
92
- self._state["savefile_name"] = os.path.split(filename)[-1].split(
93
- "."
94
- )[0]
104
+ if self.state_name == "autosave.json":
105
+ self.state_name = chose_filename(self._save_path)
106
+ self.save_value("savefile_name", self.state_name)
107
+ filename = Path(self._save_path) / self.state_name
108
+ self._state["savefile_name"] = self.state_name
109
+
95
110
  # Auto save file will be removed after a successful save
96
111
  try:
97
- os.remove(
98
- os.path.join(os.path.split(filename)[0], "autosave.json")
99
- )
112
+ os.remove(Path(self._save_path) / "autosave.json")
100
113
  except FileNotFoundError:
101
114
  pass
102
115
 
@@ -112,6 +125,17 @@ class GameState:
112
125
  del self._state[scope][k]
113
126
 
114
127
 
128
+ def chose_filename(save_path: PathLike):
129
+
130
+ files = os.listdir(save_path)
131
+ game_idx = 0
132
+ while True:
133
+ savegame = f"{SAVE_FILE_NAME}_{game_idx:03d}.json"
134
+ if savegame not in files:
135
+ return savegame
136
+ game_idx += 1
137
+
138
+
115
139
  def convert(value, astype):
116
140
  if astype == "int":
117
141
  try:
@@ -144,17 +168,18 @@ def load_saved_games(save_path, save_file_name):
144
168
  return all_games
145
169
 
146
170
  if "autosave.json" in files:
147
- all_games["autosave"] = GameState(
148
- os.path.join(save_path, "autosave.json")
171
+ all_games["autosave.json"] = GameState(save_path)
172
+ all_games["autosave.json"].load_from_disk(autosave=True)
173
+ LOG.debug(
174
+ "Loading saved game from autosave.json (%s)",
175
+ all_games["autosave.json"].state_name,
149
176
  )
150
- all_games["autosave"].load_from_disk(autosave=True)
151
- LOG.debug("Loading saved game from autosave.json")
152
177
 
153
178
  game_idx = 0
154
179
  while True:
155
- savegame = f"{save_file_name}{game_idx:03d}.json"
180
+ savegame = f"{save_file_name}_{game_idx:03d}.json"
156
181
  if savegame in files:
157
- all_games[savegame] = GameState(os.path.join(save_path, savegame))
182
+ all_games[savegame] = GameState(save_path, savegame)
158
183
  all_games[savegame].load_from_disk()
159
184
  LOG.debug(f"Loading saved game from {savegame}")
160
185
  game_idx += 1
@@ -51,3 +51,5 @@ DIALOG_WIDTH: float = 14.0
51
51
  DIALOG_HEIGHT: float = 3.0
52
52
  DIALOG_CHARS_PER_LINE: int = 36
53
53
  DIALOG_N_LINES: int = 4
54
+
55
+ SAVE_FILE_NAME = "savegame"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mima-engine
3
- Version: 0.2.4
3
+ Version: 0.2.5
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
File without changes
File without changes
File without changes
@@ -136,6 +136,9 @@ class Creature(Dynamic):
136
136
  if self.attributes.health <= 0:
137
137
  self.change_graphic_state(GraphicState.DEAD)
138
138
 
139
+ if self.can_act():
140
+ self.behavior(elapsed_time, target)
141
+
139
142
  if self.vx < -0.01:
140
143
  self.facing_direction = Direction.WEST
141
144
  if self.vx > 0.01:
@@ -147,9 +150,6 @@ class Creature(Dynamic):
147
150
 
148
151
  self.speed = self.attributes.speed
149
152
 
150
- if self.can_act():
151
- self.behavior(elapsed_time, target)
152
-
153
153
  self.sprite.update(
154
154
  elapsed_time, self.facing_direction, self.graphic_state
155
155
  )