Compare commits

...
Author SHA1 Message Date
admin 0d8f05ef99 more cleanup 2025-09-17 07:34:15 -07:00
admin 846d0e85aa new ResolvedEagleUnit and BattalionStatus packages 2025-09-17 07:25:41 -07:00
24 changed files with 148 additions and 48 deletions
@@ -68,7 +68,7 @@ scala_library(
"//src/main/scala/net/eagle0/eagle/model/action_result/changed_province/concrete",
"//src/main/scala/net/eagle0/eagle/model/action_result/generated_text_request",
"//src/main/scala/net/eagle0/eagle/model/action_result/types/base:action_result_type",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:battalion_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/battalion",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/date",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/faction",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/game_state",
@@ -29,7 +29,7 @@ import net.eagle0.eagle.library.util.EagleRequire.internalRequire
import net.eagle0.eagle.library.util.hero_generator.HeroGenerator
import net.eagle0.eagle.library.util.validations.RuntimeValidator
import net.eagle0.eagle.model.action_result.ActionResultT
import net.eagle0.eagle.model.proto_converters.BattalionConverter
import net.eagle0.eagle.model.proto_converters.battalion.BattalionConverter
import net.eagle0.eagle.model.proto_converters.date.DateConverter
import net.eagle0.eagle.model.proto_converters.faction.FactionConverter
import net.eagle0.eagle.model.proto_converters.hero.HeroConverter
@@ -356,8 +356,8 @@ scala_library(
"//src/main/scala/net/eagle0/eagle/model/action_result/generated_text_request",
"//src/main/scala/net/eagle0/eagle/model/action_result/types:end_diplomacy_resolution_phase_result_type",
"//src/main/scala/net/eagle0/eagle/model/action_result/types:ransom_invalidated_result_type",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:battalion_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:notification_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/battalion",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/date",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/faction",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/hero",
@@ -724,7 +724,7 @@ scala_library(
"//src/main/scala/net/eagle0/eagle/model/action_result/concrete:changed_hero_concrete",
"//src/main/scala/net/eagle0/eagle/model/action_result/generated_text_request",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:action_result_proto_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:battalion_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/battalion",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/date",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/faction",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/hero",
@@ -24,10 +24,8 @@ import net.eagle0.eagle.model.action_result.types.{
RansomInvalidatedResultType
}
import net.eagle0.eagle.model.action_result.{ActionResultT, NotificationT}
import net.eagle0.eagle.model.proto_converters.{
BattalionConverter,
NotificationConverter
}
import net.eagle0.eagle.model.proto_converters.NotificationConverter
import net.eagle0.eagle.model.proto_converters.battalion.BattalionConverter
import net.eagle0.eagle.model.proto_converters.date.DateConverter
import net.eagle0.eagle.model.proto_converters.faction.FactionConverter
import net.eagle0.eagle.model.proto_converters.hero.HeroConverter
@@ -13,10 +13,8 @@ import net.eagle0.eagle.library.actions.impl.common.{
}
import net.eagle0.eagle.library.util.EagleRequire.internalRequire
import net.eagle0.eagle.model.proto_converters.date.DateConverter
import net.eagle0.eagle.model.proto_converters.{
ActionResultProtoConverter,
BattalionConverter
}
import net.eagle0.eagle.model.proto_converters.ActionResultProtoConverter
import net.eagle0.eagle.model.proto_converters.battalion.BattalionConverter
import net.eagle0.eagle.model.proto_converters.faction.FactionConverter
import net.eagle0.eagle.model.proto_converters.hero.HeroConverter
import net.eagle0.eagle.model.proto_converters.province.ProvinceConverter
@@ -93,7 +93,6 @@ scala_library(
"//src/main/scala/net/eagle0/eagle/model/action_result/concrete:action_result_concrete",
"//src/main/scala/net/eagle0/eagle/model/action_result/concrete:changed_battalion_concrete",
"//src/main/scala/net/eagle0/eagle/model/action_result/concrete:changed_hero_concrete",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:battalion_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:battalion_type_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:battalion_type_id_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:combat_unit_converter",
@@ -101,6 +100,7 @@ scala_library(
"//src/main/scala/net/eagle0/eagle/model/proto_converters:proto_conversion_exception",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:tribute_amount_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:unaffiliated_hero_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/battalion",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/date",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/diplomacy_offer",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/diplomacy_offer/status",
@@ -53,7 +53,6 @@ import net.eagle0.eagle.model.proto_converters.province.{
ProvinceOrderTypeConverter
}
import net.eagle0.eagle.model.proto_converters.{
BattalionConverter,
BattalionTypeConverter,
ImprovementTypeConverter,
ProtoConversionException,
@@ -61,6 +60,7 @@ import net.eagle0.eagle.model.proto_converters.{
UnaffiliatedHeroConverter
}
import net.eagle0.eagle.model.proto_converters.BattalionTypeIdConverter
import net.eagle0.eagle.model.proto_converters.battalion.BattalionConverter
import net.eagle0.eagle.model.proto_converters.diplomacy_option.DiplomacyOptionConverter
import net.eagle0.eagle.model.state.diplomacy_offer.{
AllianceOffer,
@@ -217,7 +217,7 @@ scala_library(
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
"//src/main/scala/net/eagle0/eagle/library/util:battalion_power",
"//src/main/scala/net/eagle0/eagle/library/util/faction_utils:legacy_faction_utils",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:battalion_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/battalion",
"//src/main/scala/net/eagle0/eagle/model/state:battalion_type_id",
"//src/main/scala/net/eagle0/eagle/model/state/battalion",
],
@@ -6,7 +6,7 @@ import net.eagle0.eagle.internal.game_state.GameState
import net.eagle0.eagle.internal.province.Province
import net.eagle0.eagle.library.util.BattalionPower
import net.eagle0.eagle.library.util.faction_utils.LegacyFactionUtils
import net.eagle0.eagle.model.proto_converters.BattalionConverter
import net.eagle0.eagle.model.proto_converters.battalion.BattalionConverter
import net.eagle0.eagle.{FactionId, ProvinceId, RoundId}
object IncomingArmyUtils {
@@ -29,6 +29,7 @@ import net.eagle0.eagle.model.action_result.{
ClientTextVisibilityExtensionT,
NotificationT
}
import net.eagle0.eagle.model.proto_converters.battalion.BattalionConverter
import net.eagle0.eagle.model.proto_converters.date.DateConverter
import net.eagle0.eagle.model.proto_converters.faction.FactionConverter
import net.eagle0.eagle.model.proto_converters.hero.{
@@ -12,7 +12,6 @@ scala_library(
"//src/test/scala/net/eagle0/eagle/model/proto_converters:__pkg__",
],
deps = [
":battalion_converter",
":changed_faction_converter",
":changed_hero_converter",
":changed_province_converter",
@@ -30,6 +29,7 @@ scala_library(
"//src/main/scala/net/eagle0/eagle/model/action_result/concrete:changed_hero_concrete",
"//src/main/scala/net/eagle0/eagle/model/action_result/concrete:client_text_visibility_extension_concrete",
"//src/main/scala/net/eagle0/eagle/model/action_result/types/base:action_result_type",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/battalion",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/date",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/faction",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/hero",
@@ -67,27 +67,6 @@ scala_library(
],
)
scala_library(
name = "battalion_converter",
srcs = ["BattalionConverter.scala"],
visibility = [
"//src/main/scala/net/eagle0/eagle/library:__pkg__",
"//src/main/scala/net/eagle0/eagle/library/actions/availability:__pkg__",
"//src/main/scala/net/eagle0/eagle/library/actions/impl:__subpackages__",
"//src/main/scala/net/eagle0/eagle/library/util:__pkg__",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/game_state:__pkg__",
"//src/test/scala/net/eagle0/eagle/model/proto_converters:__pkg__",
],
deps = [
":battalion_type_id_converter",
"//src/main/protobuf/net/eagle0/eagle/internal:battalion_scala_proto",
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:proto_conversion_exception",
"//src/main/scala/net/eagle0/eagle/model/state/battalion",
"//src/main/scala/net/eagle0/eagle/model/state/battalion/concrete",
],
)
scala_library(
name = "battalion_type_id_converter",
srcs = ["BattalionTypeIdConverter.scala"],
@@ -95,9 +74,8 @@ scala_library(
"//src/main/scala/net/eagle0/eagle/library:__pkg__",
"//src/main/scala/net/eagle0/eagle/library/actions/impl:__subpackages__",
"//src/main/scala/net/eagle0/eagle/library/util/view_filters:__pkg__",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/province:__pkg__",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/view/battalion:__pkg__",
"//src/test/scala/net/eagle0/eagle/model/proto_converters:__pkg__",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:__subpackages__",
"//src/test/scala/net/eagle0/eagle/model/proto_converters:__subpackages__",
],
deps = [
"//src/main/protobuf/net/eagle0/eagle/common:battalion_type_scala_proto",
@@ -0,0 +1,22 @@
load("@rules_scala//scala:scala.bzl", "scala_library")
scala_library(
name = "battalion",
srcs = ["BattalionConverter.scala"],
visibility = [
"//src/main/scala/net/eagle0/eagle/library:__pkg__",
"//src/main/scala/net/eagle0/eagle/library/actions/availability:__pkg__",
"//src/main/scala/net/eagle0/eagle/library/actions/impl:__subpackages__",
"//src/main/scala/net/eagle0/eagle/library/util:__pkg__",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:__subpackages__",
"//src/test/scala/net/eagle0/eagle/model/proto_converters:__pkg__",
],
deps = [
"//src/main/protobuf/net/eagle0/eagle/internal:battalion_scala_proto",
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:battalion_type_id_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:proto_conversion_exception",
"//src/main/scala/net/eagle0/eagle/model/state/battalion",
"//src/main/scala/net/eagle0/eagle/model/state/battalion/concrete",
],
)
@@ -1,9 +1,12 @@
package net.eagle0.eagle.model.proto_converters
package net.eagle0.eagle.model.proto_converters.battalion
import net.eagle0.eagle.BattalionId
import net.eagle0.eagle.common.battalion_type.BattalionTypeId as BattalionTypeIdProto
import net.eagle0.eagle.internal.battalion.Battalion as BattalionProto
import net.eagle0.eagle.model.proto_converters.ProtoConversionException
import net.eagle0.eagle.model.proto_converters.{
BattalionTypeIdConverter,
ProtoConversionException
}
import net.eagle0.eagle.model.state.battalion.BattalionT
import net.eagle0.eagle.model.state.battalion.concrete.BattalionC
@@ -0,0 +1,15 @@
load("@rules_scala//scala:scala.bzl", "scala_library")
scala_library(
name = "battalion_status",
srcs = ["BattalionStatusConverter.scala"],
visibility = [
"//src/main/scala/net/eagle0/eagle/library:__subpackages__",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:__pkg__",
"//src/test/scala/net/eagle0/eagle/library:__subpackages__",
],
deps = [
"//src/main/protobuf/net/eagle0/common:common_unit_scala_proto",
"//src/main/scala/net/eagle0/eagle/model/state/battalion_status",
],
)
@@ -0,0 +1,27 @@
package net.eagle0.eagle.model.proto_converters.battalion_status
import net.eagle0.common.common_unit.UnitStatus
import net.eagle0.eagle.model.state.battalion_status.BattalionStatus
object BattalionStatusConverter {
def fromProto(proto: UnitStatus): BattalionStatus = proto match {
case UnitStatus.NORMAL_UNIT => BattalionStatus.Normal
case UnitStatus.CAPTURED_UNIT => BattalionStatus.Captured
case UnitStatus.FLED_UNIT => BattalionStatus.Fled
case UnitStatus.RETREATED_UNIT => BattalionStatus.Retreated
case UnitStatus.NEVER_ENTERED_UNIT => BattalionStatus.NeverEntered
case UnitStatus.OUTLAWED_UNIT => BattalionStatus.Outlawed
case UnitStatus.UNKNOWN_UNIT => BattalionStatus.Normal
case UnitStatus.Unrecognized(value) =>
throw new IllegalArgumentException(s"Unknown UnitStatus: $value")
}
def toProto(model: BattalionStatus): UnitStatus = model match {
case BattalionStatus.Normal => UnitStatus.NORMAL_UNIT
case BattalionStatus.Captured => UnitStatus.CAPTURED_UNIT
case BattalionStatus.Fled => UnitStatus.FLED_UNIT
case BattalionStatus.Retreated => UnitStatus.RETREATED_UNIT
case BattalionStatus.NeverEntered => UnitStatus.NEVER_ENTERED_UNIT
case BattalionStatus.Outlawed => UnitStatus.OUTLAWED_UNIT
}
}
@@ -14,11 +14,11 @@ scala_library(
"//src/main/protobuf/net/eagle0/eagle/internal:game_state_scala_proto",
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
"//src/main/scala/net/eagle0/eagle/model/action_result:notification_trait",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:battalion_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:battalion_type_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:notification_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:proto_conversion_exception",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:round_phase_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/battalion",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/chronicle_entry:chronicle_entry_converter",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/date",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/faction",
@@ -13,7 +13,6 @@ import net.eagle0.eagle.internal.run_status.RunStatus as RunStatusProto
import net.eagle0.eagle.internal.shardok_battle.ShardokBattle as ShardokBattleProto
import net.eagle0.eagle.common.battalion_type.BattalionType as BattalionTypeProto
import net.eagle0.eagle.model.proto_converters.{
BattalionConverter,
BattalionTypeConverter,
NotificationConverter,
ProtoConversionException,
@@ -27,6 +26,7 @@ import net.eagle0.eagle.model.proto_converters.province.ProvinceConverter
import net.eagle0.eagle.model.proto_converters.run_status.RunStatusConverter
import net.eagle0.eagle.model.proto_converters.shardok_battle.ShardokBattleConverter
import net.eagle0.eagle.model.action_result.NotificationT
import net.eagle0.eagle.model.proto_converters.battalion.BattalionConverter
import net.eagle0.eagle.model.state.BattalionType
import net.eagle0.eagle.model.state.battalion.BattalionT
import net.eagle0.eagle.model.state.chronicle_entry.ChronicleEntry
@@ -7,10 +7,10 @@ scala_library(
":__subpackages__",
"//src/main/scala/net/eagle0/eagle/library:__subpackages__",
"//src/main/scala/net/eagle0/eagle/model/action_result:__subpackages__",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:__pkg__",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/game_state:__pkg__",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:__subpackages__",
"//src/main/scala/net/eagle0/eagle/model/state/game_state:__pkg__",
"//src/main/scala/net/eagle0/eagle/model/state/hero:__pkg__",
"//src/main/scala/net/eagle0/eagle/model/state/resolved_eagle_unit:__pkg__",
"//src/test/scala/net/eagle0/eagle/library:__subpackages__",
"//src/test/scala/net/eagle0/eagle/library/util:__subpackages__",
],
@@ -5,7 +5,7 @@ scala_library(
srcs = ["BattalionC.scala"],
visibility = [
"//src/main/scala/net/eagle0/eagle/library/actions:__subpackages__",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:__pkg__",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/battalion:__pkg__",
"//src/test/scala/net/eagle0/eagle/library/actions:__subpackages__",
"//src/test/scala/net/eagle0/eagle/library/util:__subpackages__",
],
@@ -0,0 +1,11 @@
load("@rules_scala//scala:scala.bzl", "scala_library")
scala_library(
name = "battalion_status",
srcs = ["BattalionStatus.scala"],
visibility = [
"//src/main/scala/net/eagle0/eagle/model/proto_converters:__subpackages__",
"//src/main/scala/net/eagle0/eagle/model/state/battalion:__pkg__",
"//src/main/scala/net/eagle0/eagle/model/state/resolved_eagle_unit:__pkg__",
],
)
@@ -0,0 +1,10 @@
package net.eagle0.eagle.model.state.battalion_status
enum BattalionStatus {
case Normal
case Captured
case Fled
case Retreated
case NeverEntered
case Outlawed
}
@@ -32,6 +32,7 @@ scala_library(
"//src/main/scala/net/eagle0/eagle/model/action_result/generated_text_request:__pkg__",
"//src/main/scala/net/eagle0/eagle/model/proto_converters/hero:__pkg__",
"//src/main/scala/net/eagle0/eagle/model/state/game_state:__pkg__",
"//src/main/scala/net/eagle0/eagle/model/state/resolved_eagle_unit:__pkg__",
"//src/main/scala/net/eagle0/eagle/service/new_game_creation:__pkg__",
"//src/main/scala/net/eagle0/util/hero_generation:__pkg__",
"//src/test/scala/net/eagle0/eagle/library:__subpackages__",
@@ -0,0 +1,21 @@
load("@rules_scala//scala:scala.bzl", "scala_library")
scala_library(
name = "resolved_eagle_unit",
srcs = ["ResolvedEagleUnit.scala"],
visibility = [
":__subpackages__",
"//src/main/scala/net/eagle0/eagle/library:__subpackages__",
"//src/main/scala/net/eagle0/eagle/model/action_result:__subpackages__",
"//src/main/scala/net/eagle0/eagle/model/proto_converters:__pkg__",
"//src/test/scala/net/eagle0/eagle/library:__subpackages__",
"//src/test/scala/net/eagle0/eagle/library/util:__subpackages__",
],
deps = [
"//src/main/scala/net/eagle0/eagle:eagle_pkg",
"//src/main/scala/net/eagle0/eagle/model/state/battalion",
"//src/main/scala/net/eagle0/eagle/model/state/battalion_status",
"//src/main/scala/net/eagle0/eagle/model/state/hero",
"//src/main/scala/net/eagle0/eagle/model/state/hero:gender",
],
)
@@ -0,0 +1,15 @@
package net.eagle0.eagle.model.state.resolved_eagle_unit
import net.eagle0.eagle.BattalionId
import net.eagle0.eagle.model.state.battalion.BattalionT
import net.eagle0.eagle.model.state.battalion_status.BattalionStatus
import net.eagle0.eagle.model.state.hero.HeroT
case class ResolvedEagleUnit(
hero: HeroT,
battalion: BattalionT,
status: BattalionStatus
) {
def optionalBattalionId: Option[BattalionId] =
if battalion.id == 0 then None else Some(battalion.id)
}