16
Bug Reports & Support (modded) / EveryFrameCombatPlugin advance() Called Before init() After Save
« on: March 02, 2023, 10:29:34 AM »
In an EveryFrameCombatPlugin subclass I have a Kotlin lateinit variable for the CombatEngineAPI which is set to the engine parameter of the init() method. I am getting a crash on new game at the end of the initial save because the variable has not been initialized. Most logical cause I can see is the class's advance() method is being called before its init() method.
I can just code around this case, but I can imagine this causing strange issues elsewhere.
EDIT:
I can just code around this case, but I can imagine this causing strange issues elsewhere.
EDIT:
Stacktrace
31229 [Thread-3] INFO com.fs.starfarer.loading.scripts.B - Loading class: kotlin.reflect.KVisibility
31238 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Saving stage 4
31238 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Saving stage 6
31437 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Saving stage 6B
31439 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Renaming [campaign.xml] to [campaign.xml.bak]
31439 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Renaming [descriptor.xml] to [descriptor.xml.bak]
31439 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Renaming [campaign.xml.inprogress] to [campaign.xml]
31440 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Renaming [descriptor.xml.inprogress] to [descriptor.xml]
31441 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Saving stage 7
31441 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Saving stage 8
31441 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Finished saving
31467 [Thread-3] INFO com.fs.starfarer.loading.scripts.B - Loading class: java.lang.StackTraceElement
31524 [Thread-3] ERROR com.fs.starfarer.combat.CombatMain - kotlin.UninitializedPropertyAccessException: lateinit property engine has not been initialized
kotlin.UninitializedPropertyAccessException: lateinit property engine has not been initialized
at roiderUnion.combat.TrackerSpeedBoost.advance(TrackerSpeedBoost.kt:28)
at com.fs.starfarer.title.Object.L$Oo.o00000(Unknown Source)
at com.fs.starfarer.combat.A.new.o00000(Unknown Source)
at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher.o00000(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
31238 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Saving stage 4
31238 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Saving stage 6
31437 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Saving stage 6B
31439 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Renaming [campaign.xml] to [campaign.xml.bak]
31439 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Renaming [descriptor.xml] to [descriptor.xml.bak]
31439 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Renaming [campaign.xml.inprogress] to [campaign.xml]
31440 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Renaming [descriptor.xml.inprogress] to [descriptor.xml]
31441 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Saving stage 7
31441 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Saving stage 8
31441 [Thread-3] INFO com.fs.starfarer.campaign.save.CampaignGameManager - Finished saving
31467 [Thread-3] INFO com.fs.starfarer.loading.scripts.B - Loading class: java.lang.StackTraceElement
31524 [Thread-3] ERROR com.fs.starfarer.combat.CombatMain - kotlin.UninitializedPropertyAccessException: lateinit property engine has not been initialized
kotlin.UninitializedPropertyAccessException: lateinit property engine has not been initialized
at roiderUnion.combat.TrackerSpeedBoost.advance(TrackerSpeedBoost.kt:28)
at com.fs.starfarer.title.Object.L$Oo.o00000(Unknown Source)
at com.fs.starfarer.combat.A.new.o00000(Unknown Source)
at com.fs.starfarer.combat.CombatEngine.advanceInner(Unknown Source)
at com.fs.starfarer.combat.CombatEngine.advance(Unknown Source)
at com.fs.starfarer.title.TitleScreenState.advance(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher.o00000(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
[close]