diff --git a/ht.config b/ht.config index 2483bab..adb3b4c 100644 --- a/ht.config +++ b/ht.config @@ -8,7 +8,8 @@ windowTitle = Прототип: Отель windowWidth = 900 [player] -base = 25 +base = 75 +left = 50 texture = stub visible = true diff --git a/main.py b/main.py index a4c0a11..ff21894 100644 --- a/main.py +++ b/main.py @@ -44,6 +44,7 @@ def process(c): # Perform context dependent calls of desktop functions. # Similar to context functions, but no platform is returned. desktop_applyConfigInit(p) + desktop_createConfigPlayerSprites(p) desktop_createConfigStaticSprites(p) desktop_loadConfigTextures(p) ctrl.registerCallback(process) diff --git a/py/desktop.py b/py/desktop.py index ebb5126..3329274 100644 --- a/py/desktop.py +++ b/py/desktop.py @@ -18,6 +18,26 @@ def desktop_applyConfigInit(p): value = desktop_aux_convertValue(val) p.ctrl.set(key, value) +# Create player sprites +# +# Conditions: +# 1. Config textures has just been loaded +def desktop_createConfigPlayerSprites(p): + if ( + p.c.recentField != "didLoadConfigTextures" + ): + return + + for key in p.c.cfgTree: + if ( + key == "player" + ): + sprite = desktop_aux_createPlayerSprite(p, key, p.c.cfgTree[key]) + p.player = sprite + p.playerSprites.append(sprite) + # Report finish. + p.ctrl.set("didCreateConfigPlayerSprites", True) + # Create static sprites # # Conditions: diff --git a/py/desktop_Platform.py b/py/desktop_Platform.py index 1f31eb2..bf243d2 100644 --- a/py/desktop_Platform.py +++ b/py/desktop_Platform.py @@ -4,6 +4,8 @@ class desktop_Platform: def __init__(self): self.c = None self.ctrl = None + self.player = None self.statics = {} + self.playerSprites = arcade.SpriteList() self.staticSprites = arcade.SpriteList() self.textures = {} diff --git a/py/desktop_Window.py b/py/desktop_Window.py index 0af6e0d..9b14e6f 100644 --- a/py/desktop_Window.py +++ b/py/desktop_Window.py @@ -14,6 +14,7 @@ class desktop_Window(arcade.Window): def on_draw(self): arcade.start_render() self.p.staticSprites.draw() + self.p.playerSprites.draw() def on_mouse_press(self, x, y, button, key_modifiers): print("mouse press:", x, y) diff --git a/py/desktop_aux.py b/py/desktop_aux.py index 3ea94aa..497910f 100644 --- a/py/desktop_aux.py +++ b/py/desktop_aux.py @@ -23,6 +23,23 @@ def desktop_aux_convertValue( # String. return value +def desktop_aux_createPlayerSprite( + p: desktop_Platform, + name: str, + desc: dict[str, str] +): + sp = arcade.Sprite() + sp.guid = name + texName = desc["texture"] + sp.texture = p.textures[texName] + # Position. + sp.left = float(desc["left"]) + sp.top = float(desc["base"]) + # Visibility. + sp.visible = True if desc["visible"] == "true" else False + + return sp + def desktop_aux_createStaticSprite( p: desktop_Platform, name: str, diff --git a/py/ht_Context.py b/py/ht_Context.py index fd4f700..c6100ed 100644 --- a/py/ht_Context.py +++ b/py/ht_Context.py @@ -4,6 +4,7 @@ class ht_Context: self.cfgDir = None self.cfgPath = None self.cfgTree = {} + self.didCreateConfigPlayerSprites = False self.didCreateConfigStaticSprites = False self.didLaunch = False self.didLoadConfigTextures = False