a73f55beb0
Build Dusk / build-linux (push) Successful in 7m5s
Build Dusk / build-psp (push) Successful in 1m33s
Build Dusk / build-knulli (push) Successful in 4m0s
Build Dusk / build-gamecube (push) Successful in 3m31s
Build Dusk / build-gamecube-iso (push) Successful in 3m39s
Build Dusk / build-wii (push) Successful in 3m5s
Build Dusk / build-wii-iso (push) Successful in 3m25s
88 lines
2.1 KiB
C
88 lines
2.1 KiB
C
/**
|
|
* Copyright (c) 2026 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#pragma once
|
|
#include "error/error.h"
|
|
|
|
// An empty status means the slot in BATTLE.fighters is unused.
|
|
typedef enum {
|
|
BATTLE_FIGHTER_STATUS_NULL,
|
|
|
|
BATTLE_FIGHTER_STATUS_NORMAL,
|
|
BATTLE_FIGHTER_STATUS_DEAD,
|
|
|
|
BATTLE_FIGHTER_STATUS_COUNT
|
|
} battlefighterstatus_t;
|
|
|
|
typedef enum {
|
|
BATTLE_FIGHTER_TEAM_ALLY,
|
|
BATTLE_FIGHTER_TEAM_ENEMY,
|
|
|
|
BATTLE_FIGHTER_TEAM_COUNT
|
|
} battlefighterteam_t;
|
|
|
|
typedef enum {
|
|
BATTLE_FIGHTER_CONTROLLER_PLAYER,
|
|
BATTLE_FIGHTER_CONTROLLER_AI,
|
|
|
|
BATTLE_FIGHTER_CONTROLLER_COUNT
|
|
} battlefightercontroller_t;
|
|
|
|
// Base combat stats, kept separate from the resource pools (health/mp) on
|
|
// battlefighter_t so that equipment/buffs can later modify them without
|
|
// touching current health/mp state.
|
|
typedef struct {
|
|
uint16_t attack;
|
|
uint16_t defense;
|
|
uint16_t magic;
|
|
uint16_t speed;
|
|
uint16_t luck;
|
|
} battlefighterstats_t;
|
|
|
|
typedef struct {
|
|
uint8_t id;
|
|
battlefighterstatus_t status;
|
|
battlefighterteam_t team;
|
|
battlefightercontroller_t controller;
|
|
|
|
uint16_t health;
|
|
uint16_t healthMax;
|
|
uint16_t mp;
|
|
uint16_t mpMax;
|
|
|
|
battlefighterstats_t stats;
|
|
} battlefighter_t;
|
|
|
|
/**
|
|
* Initializes a battle fighter in place, filling health/mp to their maximum
|
|
* values and setting its status to normal.
|
|
*
|
|
* @param fighter Pointer to the fighter to initialize.
|
|
* @param team The team the fighter belongs to.
|
|
* @param controller Who makes decisions for the fighter.
|
|
* @param stats The fighter's base combat stats.
|
|
* @param healthMax The fighter's maximum health.
|
|
* @param mpMax The fighter's maximum mp.
|
|
*/
|
|
void battleFighterInit(
|
|
battlefighter_t *fighter,
|
|
const battlefighterteam_t team,
|
|
const battlefightercontroller_t controller,
|
|
const battlefighterstats_t stats,
|
|
const uint16_t healthMax,
|
|
const uint16_t mpMax
|
|
);
|
|
|
|
/**
|
|
* Returns true if the fighter is in a state where it can still act (i.e.
|
|
* is not dead).
|
|
*
|
|
* @param fighter Pointer to the fighter to check.
|
|
* @returns True if the fighter can act.
|
|
*/
|
|
bool_t battleFighterIsAlive(const battlefighter_t *fighter);
|