diff --git a/screenshots/2026-09-30-13-12.png b/screenshots/2026-09-30-13-12.png new file mode 100644 index 0000000..dc96ede Binary files /dev/null and b/screenshots/2026-09-30-13-12.png differ diff --git a/src/battle_data.py b/src/battle_data.py index a749611..8796b0a 100644 --- a/src/battle_data.py +++ b/src/battle_data.py @@ -74,8 +74,8 @@ battles = [ Combatant("Magma Brute", 200, 40, 40, 60, 999, -50, True, False), ], "party_members": [ - Combatant("Terra", 100, 35, 100, 30, 30, 30, False, False), Combatant("Locke", 80, 45, 130, 15, 10, 10, False, False), + Combatant("Terra", 100, 35, 100, 30, 30, 30, False, False), Combatant("Celes", 110, 25, 90, 50, 40, 40, False, False), Combatant("Cyan", 130, 38, 70, 40, 20, 20, False, False), ], @@ -95,42 +95,42 @@ battles = [ } }, "menus": [ - { # Locke - "Attack": "phys_att", - "": "unselectable", - "": "unselectable", - "Item": "items" - }, - { # Terra - "Attack": "phys_att", - "Magic": "magic", - "": "unselectable", - "Item": "items" - }, - { # Celes - "Attack": "phys_att", - "Magic": "magic", - "": "unselectable", - "Item": "items" - }, - { # Cyan - "Attack": "phys_att", - "": "unselectable", - "": "unselectable", - "Item": "items" - } + [ # Locke + ["Attack", "phys_att"], + ["", "unselectable"], + ["", "unselectable"], + ["Item", "items"] + ], + [ # Terra + ["Attack", "phys_att"], + ["Magic", "magic"], + ["", "unselectable"], + ["Item", "items"] + ], + [ # Celes + ["Attack", "phys_att"], + ["Magic", "magic"], + ["", "unselectable"], + ["Item", "items"] + ], + [ # Cyan + ["Attack", "phys_att"], + ["", "unselectable"], + ["", "unselectable"], + ["Item", "items"] + ] ], "spells": [ - {}, # Locke - { # Terra - "Fira": ("Fira", move_fire, True), - "Blizzara": ("Blizzara", move_ice, True), - }, - { # Celes - "Fira": ("Fira", move_fire, True), - "Blizzara": ("Blizzara", move_ice, True), - }, - {} # Cyan + [], # Locke + [ # Terra + ["Fira", 0, ("Fira", move_fire, True)], + ["Blizzara", 0, ("Blizzara", move_ice, True)], + ], + [ # Celes + ["Fira", 0, ("Fira", move_fire, True)], + ["Blizzara", 0, ("Blizzara", move_ice, True)], + ], + [] # Cyan ], "inventory": [ ["Phoenix Down",67, ("Phoenix Down", move_phoenix, False)] diff --git a/src/gamestates/battle.py b/src/gamestates/battle.py index 6dcec6d..d3b39e4 100644 --- a/src/gamestates/battle.py +++ b/src/gamestates/battle.py @@ -1,23 +1,28 @@ -import arcade -import assets -import controls -import text import math import random -import battle_data +import arcade + from battle import Combatant, Action, Damage, StatusChange +from menu import MenuItem +from text import TextRenderer + +import assets +import battle_data enemies = [] party_members = [] enemy_turn = None battle_music = None +party_menus = [] +spells = [] +inventory = [] action_queue = [] enemy_ai_data = {} -party_text = text.TextRenderer(3, 206, 210) -ene_text = text.TextRenderer(123, 206, 210) -menu_text = text.TextRenderer(3, 76, 210) +party_text = TextRenderer(3, 206, 210) +ene_text = TextRenderer(123, 206, 210) +menu_text = TextRenderer(3, 76, 210) menu_open = 0 menu_queue = [] @@ -26,13 +31,26 @@ menu = [] battle_id = 0 def switch(game): - global enemies, party_members, battle_music, enemy_turn, enemy_ai_data + global enemies, party_members, battle_music, enemy_turn, enemy_ai_data, party_menus, spells, inventory enemies = battle_data.battles[battle_id]["enemies"] party_members = battle_data.battles[battle_id]["party_members"] enemy_turn = battle_data.battles[battle_id]["enemy_turn_func"] enemy_ai_data = battle_data.battles[battle_id]["init_ai_data"] + party_menus = battle_data.battles[battle_id]["menus"] + spells = battle_data.battles[battle_id]["spells"] + inventory = battle_data.battles[battle_id]["inventory"] battle_music = assets.sounds[battle_data.battles[battle_id]["mus_id"]].play(loops=True) +def menu_action(data): + global menu, menu_open + user, action = data + + menu = [] + menu_open = 0 + menu_text.reset("") + action_queue.append(Action("In development", user, user, Damage(0, 0, 0, 0), StatusChange(0, 0, 0))) + print(f"pressed action: {action}") + def update(game, dt): global menu_open @@ -76,12 +94,36 @@ def update(game, dt): menu_text.reset(f"{whose.name}'s Menu") menu_text.type_all() + party_idx = party_members.index(whose) + for i, m in enumerate(party_menus[party_idx]): + menu.append(MenuItem(m[0], 19, 64-(i*13), None, None, None, None, menu_action, (whose, m[1]))) + + print(len(menu)) + for i, m in enumerate(menu): + if i == 0: + m.up = menu[len(menu) - 1] + m.down = menu[1] + elif i == len(menu) - 1: + m.up = menu[len(menu) - 2] + m.down = menu[0] + else: + m.up = menu[i - 1] + m.down = menu[i + 1] + + menu[1].select() + + for m in menu: + m.update() + party_text.reset(partytext) ene_text.reset(enetext) party_text.type_all() ene_text.type_all() def draw(game): + for m in menu: + m.render() + party_text.render() ene_text.render() menu_text.render() diff --git a/src/menu.py b/src/menu.py index e31222a..9305e6d 100644 --- a/src/menu.py +++ b/src/menu.py @@ -43,7 +43,6 @@ class MenuItem: self.selected = False self.right.select() - def render(self): self.text.render()