idk
This commit is contained in:
@@ -1,7 +1,59 @@
|
||||
class_name BattleSingleton extends Node
|
||||
const BattleCutsceneAction = preload("res://battle/cutscene/BattleCutsceneAction.gd")
|
||||
|
||||
enum BattlePosition {
|
||||
LEFT_TOP_BACK,
|
||||
LEFT_TOP_FRONT,
|
||||
LEFT_MIDDLE_BACK,
|
||||
LEFT_MIDDLE_FRONT,
|
||||
LEFT_BOTTOM_BACK,
|
||||
LEFT_BOTTOM_FRONT,
|
||||
|
||||
RIGHT_TOP_BACK,
|
||||
RIGHT_TOP_FRONT,
|
||||
RIGHT_MIDDLE_BACK,
|
||||
RIGHT_MIDDLE_FRONT,
|
||||
RIGHT_BOTTOM_BACK,
|
||||
RIGHT_BOTTOM_FRONT
|
||||
}
|
||||
|
||||
# Battle State
|
||||
var active:bool = false
|
||||
var fighterMap:Dictionary[BattlePosition, BattleFighter] = {}
|
||||
var battleCutscene:Cutscene = null
|
||||
|
||||
# Non-guarantees
|
||||
var battleScene:BattleScene = null
|
||||
|
||||
# Signals
|
||||
signal battleStarted
|
||||
signal battleFightersChanged
|
||||
|
||||
func startBattle(params) -> void:
|
||||
assert(battleScene != null)
|
||||
battleScene.startBattle(params)
|
||||
assert(params.has('fighters'))
|
||||
assert(!active)
|
||||
|
||||
# Get the cutscene (or create a default one).
|
||||
battleCutscene = params.get('cutscene', Cutscene.new())
|
||||
|
||||
# Update fighters for each fighter scene.
|
||||
for pos in BattlePosition.values():
|
||||
var fighterOrNull = params['fighters'].get(pos, null)
|
||||
fighterMap[pos] = fighterOrNull
|
||||
|
||||
# Initial cutscene elements. In future I may need to make this editable
|
||||
# somehow?
|
||||
for fighter:BattleFighter in params['fighters'].values():
|
||||
battleCutscene.addCallable(BattleCutsceneAction.getPlayerDecisionCallable(fighter))
|
||||
|
||||
# Emit signals
|
||||
active = true
|
||||
battleStarted.emit()
|
||||
battleFightersChanged.emit()
|
||||
|
||||
# Start running the battle cutscene.
|
||||
if !battleCutscene.running:
|
||||
battleCutscene.start()
|
||||
|
||||
func getFighterAtPosition(battlePos:BattlePosition) -> BattleFighter:
|
||||
return fighterMap.get(battlePos, null)
|
||||
|
||||
Reference in New Issue
Block a user