Grafikusítás

This commit is contained in:
markojozsef
2026-10-16 15:30:09 +02:00
parent 5a06c526cc
commit db772207db
3 changed files with 62 additions and 20 deletions

View File

@@ -4,6 +4,7 @@ import pygame
pygame.mixer.init() pygame.mixer.init()
sprites = { sprites = {
"kefka" : arcade.load_texture("res/sprite/kefka.png"),
"cursor" : arcade.load_texture("res/sprite/handcursor.png"), "cursor" : arcade.load_texture("res/sprite/handcursor.png"),
"font" : arcade.load_spritesheet("res/sprite/font.png"), "font" : arcade.load_spritesheet("res/sprite/font.png"),
"panel" : arcade.load_spritesheet("res/sprite/panel.png"), "panel" : arcade.load_spritesheet("res/sprite/panel.png"),

View File

@@ -245,10 +245,20 @@ battles = [
Combatant("Mira, a Tanonc Varázsló", 90, 15, 50, 5, 10, 10, False, False), Combatant("Mira, a Tanonc Varázsló", 90, 15, 50, 5, 10, 10, False, False),
Combatant("Bence, a Gyakornok Pap", 100, 12, 60, 10, 20, 20, False, False), Combatant("Bence, a Gyakornok Pap", 100, 12, 60, 10, 20, 20, False, False),
], ],
"enemy_sprites": [
# normál, kritikus , halott
["cursor", "cursor", "cursor"],
["cursor", "cursor", "cursor"],
["cursor", "cursor", "cursor"]
],
"party_members": [ "party_members": [
Combatant("Mordrak, a Sötét Úr", 400, 50, 80, 30, 20, 20, False, False), Combatant("Mordrak, a Sötét Úr", 400, 50, 80, 30, 20, 20, False, False),
Combatant("Csontvázőr", 150, 35, 67, 40, -40, 0, False, False), Combatant("Csontvázőr", 150, 35, 67, 40, -40, 0, False, False),
], ],
"party_sprites": [
["kefka", "kefka", "kefka"],
["cursor", "cursor", "cursor"]
],
"enemy_turn_func": hero_turn_rookies, "enemy_turn_func": hero_turn_rookies,
"mus_id": "mus_fnafsux", "mus_id": "mus_fnafsux",
"init_ai_data": _hero_moves(can_petrify=False), "init_ai_data": _hero_moves(can_petrify=False),

View File

@@ -4,6 +4,7 @@ import random
import renderers import renderers
import arcade import arcade
import gamestate import gamestate
from PIL import Image
from battle import Combatant, Action, Damage, StatusChange from battle import Combatant, Action, Damage, StatusChange
from menu import MenuItem from menu import MenuItem
@@ -21,12 +22,14 @@ party_menus = []
spells = [] spells = []
inventory = [] inventory = []
enemy_sprites = []
party_sprites = []
gray_cache = {}
action_queue = [] action_queue = []
cur_action = None cur_action = None
action_timer = 0 action_timer = 0
party_text = TextRenderer(3, 206, 210)
ene_text = TextRenderer(123, 206, 210)
menu_text = TextRenderer(6, 76, 210) menu_text = TextRenderer(6, 76, 210)
action_text = TextRenderer(110, 215, 210) action_text = TextRenderer(110, 215, 210)
@@ -37,8 +40,14 @@ panel = renderers.NineSlicesPanel(0,0,230,100)
battle_id = 0 battle_id = 0
def enemy_pos(i):
return (185, 195 - i * 40)
def party_pos(i):
return (40 + (i % 2) * 30, 165 - i * 35)
def switch(game): def switch(game):
global enemies, party_members, battle_music, enemy_turn, enemy_ai_data, party_menus, spells, inventory global enemies, party_members, battle_music, enemy_turn, enemy_ai_data, party_menus, spells, inventory, enemy_sprites, party_sprites
enemies = copy.deepcopy(battle_data.battles[battle_id]["enemies"]) enemies = copy.deepcopy(battle_data.battles[battle_id]["enemies"])
party_members = copy.deepcopy(battle_data.battles[battle_id]["party_members"]) party_members = copy.deepcopy(battle_data.battles[battle_id]["party_members"])
enemy_turn = copy.deepcopy(battle_data.battles[battle_id]["enemy_turn_func"]) enemy_turn = copy.deepcopy(battle_data.battles[battle_id]["enemy_turn_func"])
@@ -46,6 +55,8 @@ def switch(game):
party_menus = copy.deepcopy(battle_data.battles[battle_id]["menus"]) party_menus = copy.deepcopy(battle_data.battles[battle_id]["menus"])
spells = copy.deepcopy(battle_data.battles[battle_id]["spells"]) spells = copy.deepcopy(battle_data.battles[battle_id]["spells"])
inventory = copy.deepcopy(battle_data.battles[battle_id]["inventory"]) inventory = copy.deepcopy(battle_data.battles[battle_id]["inventory"])
enemy_sprites = battle_data.battles[battle_id]["enemy_sprites"]
party_sprites = battle_data.battles[battle_id]["party_sprites"]
battle_music = assets.sounds[battle_data.battles[battle_id]["mus_id"]].play(loops=True) battle_music = assets.sounds[battle_data.battles[battle_id]["mus_id"]].play(loops=True)
close_menu() close_menu()
@@ -265,16 +276,6 @@ def update(game, dt):
else: else:
action_timer += dt action_timer += dt
# Szövegek Frissítése
partytext = ""
enetext = ""
for m in party_members:
partytext += f"=={m.name}==\nHP: {m.hp}\n"
for e in enemies:
enetext += f"=={e.name}==\nHP: {e.hp}\n"
if len(menu_queue) != 0 and menu_open == 0: if len(menu_queue) != 0 and menu_open == 0:
whose = menu_queue.pop(0) whose = menu_queue.pop(0)
menu_open = whose menu_open = whose
@@ -297,18 +298,48 @@ def update(game, dt):
gamestate.switch_gamestate(game,"gameover") gamestate.switch_gamestate(game,"gameover")
return return
party_text.reset(partytext) # !!! CHATGPT !!!
ene_text.reset(enetext) def make_gray(tex, key):
party_text.type_all() img = tex.image.convert("RGBA")
ene_text.type_all() a = img.getchannel("A")
l = img.convert("L")
out = Image.merge("RGBA", (l, l, l, a))
return arcade.Texture(out)
def get_texture(sprite_id, gray=False):
asset = assets.sprites[sprite_id]
tex = getattr(asset, "texture", asset) # works for Sprite or Texture
if not gray:
return tex
if sprite_id not in gray_cache:
gray_cache[sprite_id] = make_gray(tex, sprite_id)
return gray_cache[sprite_id]
def pick_sprite_id(c, ids):
if c.ko:
return ids[2]
if c.hp <= c.maxhp * 0.1:
return ids[1]
return ids[0]
def draw_tex(tex, cx, cy):
arcade.draw_texture_rect(tex, arcade.LRBT(
cx - tex.width / 2, cx + tex.width / 2,
cy - tex.height / 2, cy + tex.height / 2))
def draw_battlers(combatants, sprite_table, pos_func):
for i, c in enumerate(combatants):
sid = pick_sprite_id(c, sprite_table[i])
tex = get_texture(sid, gray=bool(c.stone and not c.ko))
draw_tex(tex, *pos_func(i))
def draw(game): def draw(game):
draw_battlers(enemies, enemy_sprites, enemy_pos)
draw_battlers(party_members, party_sprites, party_pos)
panel.render() panel.render()
for m in menu: for m in menu:
m.render() m.render()
party_text.render()
ene_text.render()
menu_text.render() menu_text.render()
action_text.render() action_text.render()