48 lines
1.1 KiB
GDScript
48 lines
1.1 KiB
GDScript
class_name Battle
|
|
const BattleFighter = preload("res://scripts/Battle/BattleFighter.gd");
|
|
|
|
enum FighterPosition {
|
|
LEFT_TOP = 0,
|
|
LEFT_CENTER = 1,
|
|
LEFT_BOTTOM = 2,
|
|
|
|
CENTER_TOP = 3,
|
|
CENTER_CENTER = 4,
|
|
CENTER_BOTTOM = 5,
|
|
|
|
RIGHT_TOP = 6,
|
|
RIGHT_CENTER = 7,
|
|
RIGHT_BOTTOM = 8,
|
|
|
|
ENEMY_DEFAULT = LEFT_CENTER,
|
|
PLAYER_DEFAULT = RIGHT_CENTER,
|
|
};
|
|
|
|
var fighters:Array = [];
|
|
|
|
func addFighter(fighter:BattleFighter, position:FighterPosition):
|
|
if fighters.has(position):
|
|
push_error("Fighter already exists at position");
|
|
return
|
|
fighters[position] = fighter;
|
|
|
|
func moveFighter(fighter:BattleFighter, position:FighterPosition):
|
|
if fighters.has(position):
|
|
push_error("Fighter already exists at position");
|
|
return
|
|
if not fighters.has(fighter):
|
|
push_error("Fighter does not exist");
|
|
return
|
|
removeFighter(fighter);
|
|
addFighter(fighter, position);
|
|
|
|
func getFightersOfTeam(team:BattleFighter.BattleFighterTeam):
|
|
var result = [];
|
|
for fighter in fighters:
|
|
if fighter.team != team:
|
|
continue
|
|
result.append(fighter);
|
|
return result;
|
|
|
|
func removeFighter(fighter:BattleFighter):
|
|
fighters.erase(fighter); |