| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- package enum
- import "slices"
- // 行军状态
- type MarchState int32
- const (
- // 基础状态
- MarchState_None MarchState = -1 // 无
- MarchState_Standby MarchState = 0 // 待命状态
- MarchState_Retreat MarchState = 2 // 回城状态
- MarchState_Occupy MarchState = 3 // 占领状态
- MarchState_Garrison MarchState = 5 // 驻守状态
- MarchState_Siege MarchState = 6 // 攻城状态
- MarchState_Redeploy MarchState = 7 // 调动状态
- MarchState_Assemble MarchState = 8 // 集结状态
- MarchState_Entrust MarchState = 10 // 委托状态
- MarchState_Snatch MarchState = 11 // 掠夺状态
- MarchState_SiegeAssemble MarchState = 12 // 攻城集结状态(暂定,用来和军团集结区分)
- // 基础移动状态
- MarchState_Stay MarchState = 1 // 停留状态
- MarchState_March MarchState = 100 // 行军状态
- // 行军到结果发生状态
- MarchState_MarchAssemble MarchState = 102 // 行军集结状态
- MarchState_MarchRedeploy MarchState = 101 // 调动行军状态
- MarchState_MarchEntrust MarchState = 104 // 委托行军状态
- MarchState_MarchSiegeAssemble MarchState = 105 // 攻城集结行军(指部队集结到攻城大营时的移动状态)
- MarchState_Rout MarchState = 106 // 战败撤退
- // 战斗相关状态
- MarchState_Battle MarchState = 200 // 战斗状态
- MarchState_BattleWait MarchState = 201 // 战斗等待状态
- )
- var (
- marchStateName = map[MarchState]string{
- MarchState_None: "None",
- MarchState_Standby: "Standby",
- MarchState_Stay: "Stay",
- MarchState_Retreat: "Retreat",
- MarchState_Occupy: "Occupy",
- MarchState_Garrison: "Garrison",
- MarchState_Siege: "Siege",
- MarchState_Redeploy: "Redeploy",
- MarchState_Assemble: "Assemble",
- MarchState_March: "March",
- MarchState_Snatch: "Snatch",
- MarchState_SiegeAssemble: "SiegeAssemble",
- MarchState_MarchRedeploy: "MarchRedeploy",
- MarchState_MarchAssemble: "MarchAssemble",
- MarchState_Rout: "Rout",
- MarchState_Battle: "Battle",
- MarchState_BattleWait: "BattleWait",
- }
- moveStates = []MarchState{
- MarchState_March,
- MarchState_Retreat,
- MarchState_Rout,
- MarchState_MarchRedeploy,
- MarchState_MarchAssemble,
- MarchState_MarchEntrust,
- MarchState_MarchSiegeAssemble,
- }
- // 可接收“行军”指令的行军状态
- marchableStates = []MarchState{
- MarchState_Standby,
- MarchState_Stay,
- MarchState_Redeploy,
- MarchState_SiegeAssemble,
- }
- notInMapStates = []MarchState{
- MarchState_Standby,
- MarchState_SiegeAssemble,
- MarchState_Redeploy,
- MarchState_Assemble,
- }
- assembleState = []MarchState{
- MarchState_Assemble,
- }
- // 军团状态转换到行军状态
- legionStateToMarchState = map[LegionState]MarchState{
- LegionState_None: MarchState_None,
- LegionState_AssembleWait: MarchState_Stay,
- LegionState_AssembleFinish: MarchState_Stay,
- LegionState_AssembleMarch: MarchState_March,
- LegionState_BattleWait: MarchState_BattleWait,
- LegionState_Crusade: MarchState_Battle,
- LegionState_Siege: MarchState_Siege,
- }
- // 可自动防守状态
- autoDefendStates = []MarchState{
- MarchState_Standby,
- MarchState_Redeploy,
- MarchState_SiegeAssemble,
- }
- )
- func GetMarchStateName(marchState MarchState) string {
- if val, found := marchStateName[marchState]; found {
- return val
- }
- return "Unknown"
- }
- func GetMarchStateByLegionState(legionState LegionState) MarchState {
- if val, found := legionStateToMarchState[legionState]; found {
- return val
- }
- return MarchState_None
- }
- func GetMarchStateByRetreatType(retreatType RetreatType) MarchState {
- switch retreatType {
- case RetreatType_Rout:
- return MarchState_Rout
- default:
- return MarchState_Retreat
- }
- }
- func IsAutoDefendState(state MarchState) bool {
- return slices.Contains(autoDefendStates, state)
- }
- // IsInMapState 拥有此状态的行军对象是否在地图上
- func IsInMapState(state MarchState) bool {
- return !slices.Contains(notInMapStates, state)
- }
- // IsMovingState 拥有此状态的行军对象是否在移动中
- func IsMovingState(state MarchState) bool {
- return slices.Contains(moveStates, state)
- }
- func IsMarchState(state MarchState) bool {
- return state == MarchState_March
- }
- func IsRetreatState(state MarchState) bool {
- return state == MarchState_Retreat || state == MarchState_Rout
- }
- func IsRedeployState(state MarchState) bool {
- return state == MarchState_Redeploy || state == MarchState_SiegeAssemble
- }
- func IsMarchRedeployState(state MarchState) bool {
- return state == MarchState_MarchRedeploy || state == MarchState_MarchSiegeAssemble
- }
- func IsAssembleState(state MarchState) bool {
- return slices.Contains(assembleState, state)
- }
- // IsMarchableState 当前状态是否为可执行行军指令的状态
- func IsMarchableState(state MarchState) bool {
- return slices.Contains(marchableStates, state)
- }
|