From f25bc0112c7fda9bfff9010e9c07efe345752967 Mon Sep 17 00:00:00 2001 From: Yan Wittmann Date: Mon, 27 Mar 2023 12:15:35 +0200 Subject: [PATCH] Added missing sprite texture for level elements --- project/data/levels/1-1.csv | 29 +++++++++--------- project/data/sprites/missing.png | Bin 0 -> 513 bytes project/data/sprites/pressureplate.png | Bin 575 -> 963 bytes project/data/sprites/sprites.json | 14 +++++++++ project/level/Level.py | 2 ++ .../level/elements/ButtonInputLevelElement.py | 7 ++--- project/level/elements/LoadedLevel.py | 21 ++++++++++--- .../level/elements/SimpleBlockLevelElement.py | 18 ++++++++--- .../level/elements/UnknownTileLevelElement.py | 11 +++++++ 9 files changed, 73 insertions(+), 29 deletions(-) create mode 100644 project/data/sprites/missing.png create mode 100644 project/level/elements/UnknownTileLevelElement.py diff --git a/project/data/levels/1-1.csv b/project/data/levels/1-1.csv index 034e812..48a8ae0 100644 --- a/project/data/levels/1-1.csv +++ b/project/data/levels/1-1.csv @@ -26,17 +26,18 @@ #,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,# #,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,# #,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,# -#,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,x,x,x,x,x,x,x,x,x,,,,,,,,,,,P,,,,,,,,,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,,,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,,,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,,,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,,,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,,,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,,,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,,,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,,,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,,,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,,,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,,,,,,,,,,,,,,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# -3,3,id=HEBEL \ No newline at end of file +#,,,,,,,,,,,,,,,,P,,,,,,,,,,,,,,,,,,,,,,,,,,x,x,x,x,x,x,x,x,x,,,,,,,,,,,,,,,,,D,,,# +#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,r,,,,,,,,,,,l,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# +#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,r,,,,,,,,,,,,,,l,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# +#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,r,,,,,,,,,,,,,,l,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# +#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,r,,,,,,,,,,,,,,l,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# +#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,r,,,,,,,,,,,,,,l,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# +#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,r,,,,,,,,,,,,,,l,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# +#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,r,,,,,,,,,,,,,,l,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# +#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,r,,,,,,,,,,,,,,l,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# +#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,r,,,,,,,,,,,,,,l,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# +#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,r,,,,,,,,,,,,,,l,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# +#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,r,,,,,,,,,,,,,,l,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# +#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,r,,,,,,,,,,,,,,l,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,# +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +16,28,id=HEBEL,emitter_state=false,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, \ No newline at end of file diff --git a/project/data/sprites/missing.png b/project/data/sprites/missing.png new file mode 100644 index 0000000000000000000000000000000000000000..afb2d030de5ceb35286f7ce12a19df86db44b941 GIT binary patch literal 513 zcmV+c0{;DpP)4Tx04UFukvmHRK@^3*7$xEZ3oS$~7JOh4K@>!=kqD-V7D)u7Hp!ZYup5`% z4H9ex8;gL2XydE!A80GsDhPrih}hZtY9y?8j1UnmoMHBUoY`}kIRiBjLpPn;K``^K z9Sw)H*~FX{c*IX90lFDW>W(!Pn~d}4c)P}@>eYbi#s5a*V%pKcS1&xGTed4aE*x2L zEyWwcZF(-bD7+^ewB>-p=Soji_(5^D!Y_*LcyvPUrh01GZ=CwZdd@b5`-OWw%}wP+Hb9-o&1#ivT8CJcshdS1hig4!+a&HuYC@0AigS3bOGBt&?o=5 zEPMb)^=K=VqP@`o000S4OjJbx006=O{=)$O2NCdp00009a7bBm003M?003M?0l6(= zEC2ui8%ab#R2b7^00JQ;5MY1+C5kw3F%W|?j*=1p;Tj2nyv`tq00000NkvXXu0mjf Dd2H8& literal 0 HcmV?d00001 diff --git a/project/data/sprites/pressureplate.png b/project/data/sprites/pressureplate.png index 412d9f47a0c3f2d9576a7f82a76a64ec70621d82..14f4e029fa88cbca4823436b6460ea590c42ff36 100644 GIT binary patch delta 941 zcmV;e15*6I1j7fAB!6~kLqkwWLqi}?a&Km7Y-IodD9@FVyGz4R6vltHisGw-4pJOC zs5rDJisC30bWw*|!Pk$TonXC5k%bFeJxVrxlN%( zbnu3o^W(eu4(EOW&vaVP*!AO($>y!dR5-A(xD;r7!Hb`EMt>O4blaSnn~d`3`n;n~ z)!UHj#s5}IJYnll*Cafun^s;}reS(5Zz|pr?$lFST=-BpXvu)WS4xk${H!?X^1EUy z8kvy0sh)vk4aaI&Pgxn^e&L=>x}aC)Q8#H#WasCk`ek=x6Jd%l0b&$bB~6}?)U0Io zyKk`UngaCTYMV!Lp@30)7SW@%-~E8Alj@Olbu zi_mcc&C709m2*z+A-XQV=o5>dCUilDT!t1rz}gaqTb7+*RPI- zK>5xDKVaO;>-9coJjKYqr+b4*+_}M?IQaxd8|PhBQNWmBlh$YRE^egp5LRvg%k40h zK2BY=;~YN#dwZOqB*5WaRbtB;kW<8|f;0~fkAL;&@h8jMr95tUtw0gy2+`@wI&6q5 zT+JF{Og0y7_826V@C@5uVquAEy1?O)7_pzfok{q8QXcs^BBzJ>7x>rUUoko;4f-|WNpGm?YaJ+QQ({olSPNy>3jA8X{eb1n1YZtj ziW0G3 P00000NkvXXu0mjfE)mA) delta 550 zcmV+>0@?k;2fqZ6B!6ycLqkw$V`BgSD3NuMyGuf07{-5UVRUn-A*8{5{El?1T zCU2cGhB(q>#DD7(wIp4WQd6QQ<;hZ3x&P18Oihf}x_1Yl{n@hKhrqcD)rw_(A6r)S z1RPIrnQ!z>% zcS%G+R7eeDU>F6XAut*OjL1Q-nt}5_i0{R~iY!btdmF=Vu-Z_D?{IVB3`z}$xdPo1 zumyY57{D&KkcTOwj6U%YqThKI10y4~4Tm`mW(kZxN{@!XXb8|S1mI;+3IpqZbp|G? oSap-(A0NXUhTmYbhkjWE07E1pO!lzViU0rr07*qoM6N<$f*?u!j{pDw diff --git a/project/data/sprites/sprites.json b/project/data/sprites/sprites.json index d441470..1fb33d3 100644 --- a/project/data/sprites/sprites.json +++ b/project/data/sprites/sprites.json @@ -1,4 +1,18 @@ [ + { + "id": "missing", + "subsheets": [ + { + "id": "1", + "delays": [ + 60, + 60 + ], + "width": 12, + "height": 12 + } + ] + }, { "id": "goal_door", "subsheets": [ diff --git a/project/level/Level.py b/project/level/Level.py index a0a531d..bce45c8 100644 --- a/project/level/Level.py +++ b/project/level/Level.py @@ -39,6 +39,8 @@ class Level: tile[split_item[0]] = split_item[1] elif split_item[0] == 'requires': tile[split_item[0]] = split_item[1].split(';') + elif split_item[0] == 'emitter_state': + tile[split_item[0]] = split_item[1].split(';') else: raise ValueError('Incorrect attribute name: ' + split_item[0]) tiles[x][y] = tile diff --git a/project/level/elements/ButtonInputLevelElement.py b/project/level/elements/ButtonInputLevelElement.py index d1fa61d..09ce073 100644 --- a/project/level/elements/ButtonInputLevelElement.py +++ b/project/level/elements/ButtonInputLevelElement.py @@ -8,15 +8,12 @@ from sprite.SpritesheetManager import SpritesheetManager class ButtonInputLevelElement(InputLevelElement): def load(self, sprite_manager: SpriteManager, spritesheet_manager: SpritesheetManager, level: Level): - name = self.tile['name'] - position = self.tile['position'] - self.spritesheet = spritesheet_manager.get_sheet('pressureplate') self.set_animation_state('on' if self.emitter_state else 'off') - self.position_scale.position = position + self.position_scale.position = self.tile['position'] def tick(self, tick_data: TickData): super().tick(tick_data) collisions = self.get_collides_with() - print(collisions) + # print(collisions) diff --git a/project/level/elements/LoadedLevel.py b/project/level/elements/LoadedLevel.py index 2e08c01..947f1b0 100644 --- a/project/level/elements/LoadedLevel.py +++ b/project/level/elements/LoadedLevel.py @@ -1,13 +1,20 @@ - from level.Level import Level from level.elements.ButtonInputLevelElement import ButtonInputLevelElement from level.elements.SimpleBlockLevelElement import SimpleBlockLevelElement +from level.elements.UnknownTileLevelElement import UnknownTileLevelElement from physics import ConstantsParser from physics.SpriteManager import SpriteManager, DrawLayers from sprite.SpritesheetManager import SpritesheetManager TILES = { '#': SimpleBlockLevelElement, + '+': SimpleBlockLevelElement, + '-': SimpleBlockLevelElement, + 'l': SimpleBlockLevelElement, + 'r': SimpleBlockLevelElement, + '~': SimpleBlockLevelElement, + '|': SimpleBlockLevelElement, + 'L': ButtonInputLevelElement, # TODO 'P': ButtonInputLevelElement } @@ -25,17 +32,21 @@ class LoadedLevel: position = (tile_number * ConstantsParser.CONFIG.block_size[0], row_number * ConstantsParser.CONFIG.block_size[1]) tile['position'] = position - name = tile['name'] + + element = None + if name in TILES: element = TILES[name](tile, self) + elif not name == '': + print(f"Unknown tile at {position}: {name}") + element = UnknownTileLevelElement(tile, self) + + if element: self.blocks.append(element) self.sprite_manager.add_ui_element(DrawLayers.OBJECTS, element) element.load(self.sprite_manager, self.spritesheet_manager, level) - elif not name == '': - print(f"Unknown tile: {name}") - def destroy_level(self): for block in self.blocks: self.sprite_manager.remove_ui_element(block) diff --git a/project/level/elements/SimpleBlockLevelElement.py b/project/level/elements/SimpleBlockLevelElement.py index 22dd14f..b151222 100644 --- a/project/level/elements/SimpleBlockLevelElement.py +++ b/project/level/elements/SimpleBlockLevelElement.py @@ -6,7 +6,13 @@ from physics.SpriteManager import SpriteManager from sprite.SpritesheetManager import SpritesheetManager BLOCK_TYPES = { - '#': 'block_full' + '#': 'block_full', + '+': 'block_top', + '-': 'block_bottom', + 'l': 'block_left', + 'r': 'block_right', + '~': 'block_top_left', + '|': 'block_top_right' } @@ -15,10 +21,12 @@ class SimpleBlockLevelElement(StaticLevelElement): super().__init__(tile, loaded_level) def load(self, sprite_manager: SpriteManager, spritesheet_manager: SpritesheetManager, level: Level): - name = self.tile['name'] - position = self.tile['position'] - block_type = BLOCK_TYPES[name] + if self.tile['name'] in BLOCK_TYPES: + block_type = BLOCK_TYPES[self.tile['name']] + else: + block_type = 'block_full' + print(f"Unknown block type: {self.tile['name']} {self.tile['position']}") self.spritesheet = spritesheet_manager.get_sheet(level.theme + '_' + block_type) self.set_animation_state(str(random.randint(1, 3))) - self.position_scale.position = position + self.position_scale.position = self.tile['position'] diff --git a/project/level/elements/UnknownTileLevelElement.py b/project/level/elements/UnknownTileLevelElement.py new file mode 100644 index 0000000..1ea4fbe --- /dev/null +++ b/project/level/elements/UnknownTileLevelElement.py @@ -0,0 +1,11 @@ +from level.Level import Level +from level.elements.StaticLevelElement import StaticLevelElement +from physics.SpriteManager import SpriteManager +from sprite.SpritesheetManager import SpritesheetManager + + +class UnknownTileLevelElement(StaticLevelElement): + def load(self, sprite_manager: SpriteManager, spritesheet_manager: SpritesheetManager, level: Level): + self.spritesheet = spritesheet_manager.get_sheet('missing') + self.set_animation_state('1') + self.position_scale.position = self.tile['position']