Refactor cutscene queue

This commit is contained in:
2026-01-11 16:40:54 -06:00
parent 99ecc2cfc7
commit 6ecbc33cc2
16 changed files with 190 additions and 32 deletions

View File

@@ -1,4 +1,5 @@
class_name BattleScene extends BattleFighterScene
const CutsceneBattleAction = preload("res://cutscene/battle/CutsceneBattleAction.gd")
enum BattlePosition {
LEFT_TOP_BACK,
@@ -16,8 +17,11 @@ enum BattlePosition {
RIGHT_BOTTOM_FRONT
}
var active:bool = false
var fighterMap:Dictionary[BattlePosition, BattleFighterScene] = {}
@export var actionBox:ActionBox = null
@export var fighterTopLeftBack:BattleFighterScene = null:
get:
return fighterMap.get(BattlePosition.LEFT_TOP_BACK, null)
@@ -94,8 +98,48 @@ func _init() ->void:
BATTLE.battleScene = self
pass
func startBatle(fighters:Dictionary[BattlePosition, BattleFighter]) -> void:
for position in fighters.keys():
var fighterScene:BattleFighterScene = fighterMap.get(position, null)
func getFigheterAtPosition(battlePos:BattlePosition) -> BattleFighterScene:
return fighterMap.get(battlePos, null)
func getPositionForFighterScene(fighterScene:BattleFighterScene) -> BattlePosition:
for battlePos in fighterMap.keys():
var scene:BattleFighterScene = fighterMap[battlePos]
if scene == fighterScene:
return battlePos
assert(false)
return BattlePosition.LEFT_TOP_BACK
func getPositionForFighter(fighter:BattleFighter) -> BattlePosition:
for battlePos in fighterMap.keys():
var fighterScene:BattleFighterScene = fighterMap[battlePos]
if fighterScene.fighter == fighter:
return battlePos
assert(false)
return BattlePosition.LEFT_TOP_BACK
func getFighterSceneForFighter(fighter:BattleFighter) -> BattleFighterScene:
for battlePos in fighterMap.keys():
var fighterScene:BattleFighterScene = fighterMap[battlePos]
if fighterScene.fighter == fighter:
return fighterScene
return null
func startBattle(params:Dictionary) -> void:
assert(params.has('fighters'))
assert(!active)
var cutscene:Cutscene = params.get('cutscene', Cutscene.new())
for battlePos in params['fighters'].keys():
var fighterScene:BattleFighterScene = fighterMap.get(battlePos, null)
assert(fighterScene != null)
fighterScene.setFighter(fighters[position])
fighterScene.setFighter(params['fighters'][battlePos])
# Initial cutscene elements. In future I may need to make this editable
# somehow?
cutscene.addCallable({ "function": CutsceneBattleAction.playerDecision })
if !cutscene.running:
cutscene.start()
active = true