Initialize tutorial faction trust (#8678)

This commit is contained in:
2026-07-17 14:23:49 -07:00
committed by GitHub
parent 76be4a49ea
commit 73b8087e07
2 changed files with 38 additions and 1 deletions
@@ -3,6 +3,7 @@ package net.eagle0.eagle.service.new_game_creation
import net.eagle0.common.common_unit.*
import net.eagle0.common.tutorial_battle_config.*
import net.eagle0.common.SeededRandom
import net.eagle0.eagle.internal.game_parameters.SetFaction.StartingTrust
import net.eagle0.eagle.library.{EngineAndResults, EngineAndResultsImpl, EngineImpl}
import net.eagle0.eagle.library.util.hero_generator.HeroGenerator
import net.eagle0.eagle.model.action_result.concrete.ActionResultC
@@ -15,6 +16,8 @@ import net.eagle0.eagle.model.state.*
import net.eagle0.eagle.model.state.battalion.concrete.BattalionC
import net.eagle0.eagle.model.state.chronicle_entry.ChronicleEntry
import net.eagle0.eagle.model.state.faction.concrete.FactionC
import net.eagle0.eagle.model.state.faction.FactionRelationship
import net.eagle0.eagle.model.state.faction.FactionRelationship.RelationshipLevel.Hostile
import net.eagle0.eagle.model.state.game_state.EagleMapInfo
import net.eagle0.eagle.model.state.hero.concrete.HeroC
import net.eagle0.eagle.model.state.shardok_battle.ShardokBattle
@@ -272,7 +275,16 @@ object TutorialGameCreation {
factionHeadId = factionHeadId,
name = s"${sf.factionHeadName}'s Faction",
leaderIds = Vector(factionHeadId),
prestigeModifiers = sf.prestigeModifiers.map(FactionConverter.fromProto).toVector
prestigeModifiers = sf.prestigeModifiers.map(FactionConverter.fromProto).toVector,
factionRelationships = sf.startingTrusts.map {
case StartingTrust(targetFactionId, trustValue, _) =>
FactionRelationship(
targetFactionId = targetFactionId,
relationshipLevel = Hostile,
trustValue = trustValue
)
}.toVector,
earliestRoundForInvitation = sf.earliestRoundForInvitation
)
)
@@ -75,6 +75,31 @@ class TutorialGameCreationTest extends AnyFlatSpec with Matchers {
}
}
it should "initialize configured faction trust" in {
val gameState = engineAndResults.engine.currentState
val tutorialParams = GameParametersUtils.tutorialGameParameters
tutorialParams.setFactions.foreach { setFaction =>
val relationships = gameState.factions(setFaction.factionId).factionRelationships
setFaction.startingTrusts.foreach { startingTrust =>
relationships
.find(_.targetFactionId == startingTrust.targetFactionId)
.map(_.trustValue) shouldBe Some(startingTrust.value)
}
}
}
it should "initialize configured invitation timing" in {
val gameState = engineAndResults.engine.currentState
val tutorialParams = GameParametersUtils.tutorialGameParameters
tutorialParams.setFactions.foreach { setFaction =>
gameState.factions(setFaction.factionId).earliestRoundForInvitation shouldBe
setFaction.earliestRoundForInvitation
}
}
// TutorialBattleConfig tests
"TutorialBattleConfig" should "be enabled" in