|
|
@@ -9,8 +9,8 @@ import jogai
|
|
|
import jogai._globals as _globals
|
|
|
import jogai.settings as settings
|
|
|
from jogai import character, group, logger, scene, utils
|
|
|
-from jogai.utils import _get_events, _get_keys
|
|
|
from jogai.translations import gettext as _
|
|
|
+from jogai.utils import _get_events, _get_keys
|
|
|
|
|
|
# --------------- #
|
|
|
# GLOBALS #
|
|
|
@@ -152,6 +152,7 @@ def init():
|
|
|
"""
|
|
|
if not pygame.get_init():
|
|
|
pygame.init()
|
|
|
+
|
|
|
_globals._window = pygame.display.set_mode(
|
|
|
(settings.WINDOW_WIDTH, settings.WINDOW_HEIGHT)
|
|
|
)
|
|
|
@@ -213,7 +214,7 @@ def get_color(x: int, y: int) -> Tuple[int, int, int]:
|
|
|
raise ValueError(
|
|
|
_('The coordinates of the point must be a non-negative integers.')
|
|
|
)
|
|
|
- return tuple(_window.get_at((x, y))[:-1])
|
|
|
+ return tuple(_globals._window.get_at((x, y))[:-1])
|
|
|
|
|
|
|
|
|
def paint(sprite: Type['scene.Scene'] | Type['character.Character']):
|
|
|
@@ -234,6 +235,17 @@ def paint_group(group: Type['group.SquareGroup']):
|
|
|
group.draw(_globals._window)
|
|
|
|
|
|
|
|
|
+def set_marks(
|
|
|
+ x_gap=0,
|
|
|
+ y_gap=0,
|
|
|
+ x_color=(255, 180, 30),
|
|
|
+ y_color=(0, 0, 255),
|
|
|
+ width=1,
|
|
|
+ debug=False,
|
|
|
+):
|
|
|
+ _globals.marks = utils.Marks(x_gap, y_gap, x_color, y_color, width, debug)
|
|
|
+
|
|
|
+
|
|
|
def prepare(data_filename: str = ''):
|
|
|
"""
|
|
|
Prepare the game environment before entering the main loop.
|
|
|
@@ -248,11 +260,14 @@ def prepare(data_filename: str = ''):
|
|
|
if data_filename:
|
|
|
vg_data = utils._load_yaml_from_filename(data_filename)
|
|
|
else:
|
|
|
- vg_data = _default_data
|
|
|
+ vg_data = _globals._default_data
|
|
|
|
|
|
_globals.vg_scene = _load_scene(vg_data)
|
|
|
_globals.vg_characters = _load_characters(vg_data)
|
|
|
|
|
|
+ if _globals.vg_characters:
|
|
|
+ _globals.character_focus = _globals.vg_characters[0]
|
|
|
+
|
|
|
# TODO: Check and filter variable names added to builtins
|
|
|
setattr(builtins, 'vgscene', _globals.vg_scene)
|
|
|
for vg_character in _globals.vg_characters:
|
|
|
@@ -273,18 +288,14 @@ def update():
|
|
|
"""
|
|
|
if _globals.vg_scene:
|
|
|
if _globals.vg_characters:
|
|
|
- _globals.vg_scene.set_position(_globals.vg_characters[0].x)
|
|
|
+ _globals.vg_scene.set_position(_globals.character_focus.x)
|
|
|
paint(_globals.vg_scene)
|
|
|
if _globals.vg_characters:
|
|
|
for pos, vg_character in enumerate(_globals.vg_characters):
|
|
|
- if vg_character.collidable:
|
|
|
- rest_of_characters = _globals.vg_characters.copy()
|
|
|
- rest_of_characters.remove(vg_character)
|
|
|
- for other_character in rest_of_characters:
|
|
|
- if other_character.collidable:
|
|
|
- vg_character.touch(other_character)
|
|
|
-
|
|
|
- vg_character._update_rect_position(False if pos else True)
|
|
|
+ tracking = (
|
|
|
+ True if vg_character == _globals.character_focus else False
|
|
|
+ )
|
|
|
+ vg_character._update_rect_position(tracking=tracking)
|
|
|
paint(vg_character)
|
|
|
vg_character.update()
|
|
|
if _globals.vg_groups:
|
|
|
@@ -292,7 +303,8 @@ def update():
|
|
|
for e in g.sprites():
|
|
|
e._update_rect_position()
|
|
|
paint(e)
|
|
|
-
|
|
|
+ if _globals.marks:
|
|
|
+ _globals.marks.draw()
|
|
|
pygame.display.flip()
|
|
|
_globals._clock.tick(settings.FPS)
|
|
|
listen_events()
|