From c9b7c0c0011934ad509a426cf4fc7cbcd721d078 Mon Sep 17 00:00:00 2001 From: markojozsef Date: Mon, 5 Oct 2026 17:49:18 +0200 Subject: [PATCH] =?UTF-8?q?Akci=C3=B3=20anim=C3=A1ci=C3=B3k?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/battle.py | 15 ++++++++------- src/battle_data.py | 32 ++++++++++++++++++++++---------- src/gamestates/battle.py | 22 +++++++++++++++++----- 3 files changed, 47 insertions(+), 22 deletions(-) diff --git a/src/battle.py b/src/battle.py index c9571d9..361ff5b 100644 --- a/src/battle.py +++ b/src/battle.py @@ -39,12 +39,13 @@ class StatusChange: # where = reference to the target, who = reference to the inflictor class Action: - def __init__(self, name, who, where, damage, status): - self.name = name - self.who = who - self.where = where - self.damage = damage - self.status = status + def __init__(self, name, who, where, damage, status, animation): + self.name = name + self.who = who + self.where = where + self.damage = damage + self.status = status + self.animation = animation def __str__(self): return ( @@ -113,4 +114,4 @@ class Action: target.ko = True target.stone = False target.def_up = False - print(f" -> {target.name} got hurt and collapsed!") \ No newline at end of file + print(f" -> {target.name} got hurt and collapsed!") diff --git a/src/battle_data.py b/src/battle_data.py index 8796b0a..1730600 100644 --- a/src/battle_data.py +++ b/src/battle_data.py @@ -1,32 +1,44 @@ import random from battle import Combatant, Action, Damage, StatusChange +def anim_default(action, text, timer, dt): + if timer == 0: + text.reset(action.name) + text.type_all() + + if timer >= 1: + text.reset("") + action.execute() + return True + + return False + def move_attack(user, target): - return Action("Attack", user, target, Damage(user.attack, 0, 0, 0), StatusChange(0, 0, 0)) + return Action("Attack", user, target, Damage(user.attack, 0, 0, 0), StatusChange(0, 0, 0), anim_default) def move_fire(user, target): - return Action("Fira", user, target, Damage(0, 45, 0, 0), StatusChange(0, 0, 0)) + return Action("Fira", user, target, Damage(0, 45, 0, 0), StatusChange(0, 0, 0), anim_default) def move_ice(user, target): - return Action("Blizzara", user, target, Damage(0, 0, 45, 0), StatusChange(0, 0, 0)) + return Action("Blizzara", user, target, Damage(0, 0, 45, 0), StatusChange(0, 0, 0), anim_default) def move_cure(user, target): - return Action("Cure", user, target, Damage(0, 0, 0, 42), StatusChange(0, 0, 0)) + return Action("Cure", user, target, Damage(0, 0, 0, 42), StatusChange(0, 0, 0), anim_default) def move_defend(user, target): - return Action("Defend", user, target, Damage(0, 0, 0, 0), StatusChange(0, 0, 1)) + return Action("Defend", user, target, Damage(0, 0, 0, 0), StatusChange(0, 0, 1), anim_default) def move_break(user, target): - return Action("Break", user, target, Damage(0, 0, 0, 0), StatusChange(0, 1, 0)) + return Action("Break", user, target, Damage(0, 0, 0, 0), StatusChange(0, 1, 0), anim_default) def move_death(user, target): - return Action("Death", user, target, Damage(0, 0, 0, 0), StatusChange(1, 0, 0)) + return Action("Death", user, target, Damage(0, 0, 0, 0), StatusChange(1, 0, 0), anim_default) def move_phoenix(user, target): - return Action("Phoenix Down", user, target, Damage(0, 0, 0, 30), StatusChange(2, 0, 0)) + return Action("Phoenix Down", user, target, Damage(0, 0, 0, 30), StatusChange(2, 0, 0), anim_default) def move_softenup(user, target): - return Action("Esuna", user, target, Damage(0, 0, 0, 0), StatusChange(2, 0, 0)) + return Action("Esuna", user, target, Damage(0, 0, 0, 0), StatusChange(2, 0, 0), anim_default) def enemy_turn_test(e,ep, ap,d): living = [p for p in ap if not p.ko] @@ -136,4 +148,4 @@ battles = [ ["Phoenix Down",67, ("Phoenix Down", move_phoenix, False)] ] } -] \ No newline at end of file +] diff --git a/src/gamestates/battle.py b/src/gamestates/battle.py index 4c73304..6ec3efc 100644 --- a/src/gamestates/battle.py +++ b/src/gamestates/battle.py @@ -13,16 +13,19 @@ enemies = [] party_members = [] enemy_turn = None battle_music = None +enemy_ai_data = {} party_menus = [] spells = [] inventory = [] action_queue = [] -enemy_ai_data = {} +cur_action = None +action_timer = 0 party_text = TextRenderer(3, 206, 210) ene_text = TextRenderer(123, 206, 210) menu_text = TextRenderer(3, 76, 210) +action_text = TextRenderer(110, 215, 210) menu_open = 0 menu_queue = [] @@ -54,14 +57,14 @@ def menu_action(data): case "unselectable": return case "phys_att": - action_queue.append(Action("Physical Attack", user, eparty[0], Damage(166, 0, 0, 0), StatusChange(0, 0, 0))) + action_queue.append(Action("Physical Attack", user, eparty[0], Damage(166, 0, 0, 0), StatusChange(0, 0, 0), battle_data.anim_default)) close_menu() case _: print(f"Unknown action: {action}") close_menu() def update(game, dt): - global menu_open + global menu_open, cur_action, action_timer for e in enemies: if e.ko or e.stone: @@ -82,11 +85,19 @@ def update(game, dt): menu_queue.append(p) p.atb = math.inf - if len(action_queue) != 0: + if len(action_queue) != 0 and cur_action == None: action = action_queue.pop(0) print(f"Executing: {action}") - action.execute() + cur_action = action + action_timer = 0 + if cur_action != None: + if cur_action.animation(cur_action, action_text, action_timer, dt): + cur_action = None + else: + action_timer += dt + + # Szövegek Frissítése partytext = "" enetext = "" @@ -128,4 +139,5 @@ def draw(game): party_text.render() ene_text.render() menu_text.render() + action_text.render()