From 8e060ce43fdfe3ffc265efeafe271fa73a0a0e82 Mon Sep 17 00:00:00 2001 From: markojozsef Date: Wed, 23 Sep 2026 12:58:15 +0200 Subject: [PATCH] =?UTF-8?q?Overworld=20rajzol=C3=A1s=20=C3=A9s=20"Main=20C?= =?UTF-8?q?haracter"=20kontroller?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- res/sprite/balthasar.png | Bin 0 -> 496 bytes res/sprite/evil.png | Bin 344 -> 0 bytes res/sprite/overworld_sheet.png | Bin 0 -> 344 bytes src/assets.py | 8 +- src/gamestate.py | 4 +- src/gamestates/none.py | 2 +- src/gamestates/overworld.py | 130 +++++++++++++++++++++++++++++++++ 7 files changed, 139 insertions(+), 5 deletions(-) create mode 100644 res/sprite/balthasar.png delete mode 100644 res/sprite/evil.png create mode 100644 res/sprite/overworld_sheet.png create mode 100644 src/gamestates/overworld.py diff --git a/res/sprite/balthasar.png b/res/sprite/balthasar.png new file mode 100644 index 0000000000000000000000000000000000000000..d0231a24db86389b7f0fe756a3e51a9f9c5f25f7 GIT binary patch literal 496 zcmeAS@N?(olHy`uVBq!ia0vp^4nS{XE)7O>#6{k3tfW?)j4M0yYa(lWshIkx*8`{m+Y`~!-e)xa= zC!N~xoo0n6HyugqmYXWfRis#x&A7lKYQ=Vr8X4Znsb8iSm#*KFV65|Jx4O+44!+-k zO^4GX1XY;T7ii`@HF&fBLu#f~+1CO+?w3lvrC~cPR%m62uj(kXd|Yxtll@S_?OTi1 zv|G$uB~*XpyLVpL;Y$Tu8ia3bt6Y$@az_M%+X878KiRA!md_-wyVo$aeA>G3pL8Be z9@kvvyn>(eGL?PSR<%1mpV`CA9?Q!e$1;KM{J}< literal 0 HcmV?d00001 diff --git a/res/sprite/evil.png b/res/sprite/evil.png deleted file mode 100644 index ac162534b76a8cb746d75557d6301fdea8918daa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^4nQoy!3-p8v$)HElu&?Ah%1n`w6p}0|Ns97lHZPJ z?J_Nu2eQ~og8YI(qW}L_RX+F!6nXFI;uvDlyLL(>-(dp|mzkYA{!fkG!xR^_viH-( zc1b3Q=qK^~4cfDxo?$q_JzFtCs9EK%zPKLSyqRwg&Q+{7I~;s3yJ642mX7NTS3lG| z@aBxa`a!t++P2r7x3`^`=$acZ>Mj=Q-+EPX!IE84iF}&rXC;rYoZYYOCY&4|?CRow zDDBd}^Ja5eEpO_0FbY&hP3vZAwyfZo#PnfBJc~k7L*z#h0d9VA`2)tQIzoF|mmkRQ zO1EG%yK_E&hyEpnrJwgceKB8OW*K*TjKw*@X|q@!Zeg8v;n21wi;RM{GiNt-8bn>0 lb-n0RjQwBJyR!H0>o+E{y4=zgJPq_ZgQu&X%Q~loCIHF5i^~82 diff --git a/res/sprite/overworld_sheet.png b/res/sprite/overworld_sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..b76a9c007c789e89bd1008d846af07aa5a2e021e GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jPK-BC>eK@{Ea{HEjtmSN z`?>!lvI6-E$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?e4 z7*cWT?X82HhYbW=E(UsBjBeVs&A)NZQUUK5f0>d#Mes1^g_fo+x>r4E$*NE1?at4A zJN0n&`+w|d`tN^m1C4-#2Gbo!?Br|Tz0fLQT>a+La=mlj0&vL#E2AH*6y1Kx%;F!@ ztry=J;~$;1hD(AOWzo%^>*W8maZgb3oTTD;YpFC#n#9ys%!Nxp(w?q 30: + self.anim_timer = 0 + + def render(self, game): + sprite_h = self.direction if self.direction < 3 else 2 + sprite_v = 1 if (self.walking and self.anim_timer <= 15) else 0 + flip_h = self.direction == DIR_LEFT + + sprite = assets.sprites["balthasar"].get_texture(arcade.LBWH(B_SPRITE_WIDHT*sprite_h, B_SPRITE_HEIGHT*sprite_v, B_SPRITE_WIDHT, B_SPRITE_HEIGHT)) + arcade.draw_texture_rect( + sprite.flip_horizontally() if flip_h else sprite, + arcade.LBWH((game.screen_width / 2) - (B_SPRITE_WIDHT / 2), (game.screen_height / 2) - (B_SPRITE_HEIGHT / 2), B_SPRITE_WIDHT, B_SPRITE_HEIGHT), + pixelated=True + ) + +class OverworldMap: + def __init__(self): + self.sprites = [] + + x = 0 + y = len(OVERWORLD_MAP) + for row in OVERWORLD_MAP: + for tile in row: + self.sprites.append([ + assets.sprites["overworld"].get_texture(arcade.LBWH((tile % 16) * 16, (tile // 16) * 12, OVERWORLD_TILE_WIDTH, OVERWORLD_TILE_HEIGHT)), + arcade.LBWH( + (x * OVERWORLD_TILE_WIDTH), + (y * OVERWORLD_TILE_HEIGHT), + OVERWORLD_TILE_WIDTH, + OVERWORLD_TILE_HEIGHT + ) + ]) + x += 1 + y -= 1 + x = 0 + + + def render(self, game): + for s in self.sprites: + arcade.draw_texture_rect( + s[0], + s[1].move( + (game.screen_width / 2), + (game.screen_height / 2) + ), + pixelated=True + ) + +controller = BalthasarController() +overworld = OverworldMap() + +def switch(): + pass + +def update(dt): + controller.update() + + if controls.is_control_pressed(0): # Fel + controller.set_direction(DIR_UP) + elif controls.is_control_pressed(1): # Le + controller.set_direction(DIR_DOWN) + elif controls.is_control_pressed(2): # Bal + controller.set_direction(DIR_LEFT) + elif controls.is_control_pressed(3): # Jobb + controller.set_direction(DIR_RIGHT) + + if controls.is_control_held(0): # Fel + + controller.set_walking(True) + elif controls.is_control_held(1): # Le + + controller.set_walking(True) + elif controls.is_control_held(2): # Bal + + controller.set_walking(True) + elif controls.is_control_held(3): # Jobb + + controller.set_walking(True) + else: + controller.set_walking(False) + +def draw(game): + controller.render(game) + overworld.render(game) \ No newline at end of file