package constant import ( "f1-game/internal/enum" ctime "github.com/cherry-game/cherry/extend/time" ) const ( MapCreateMainCityNumber = 10 // 尝试创建主城次数,失败则返回 MapMoveSpeedMin = 1000 // 最小移动速度 MapTileMeetBattleCount = 5 // 单次触发遭遇战的数量 MapLeastStartWarMinite = 1 // 最少宣战时间 MapInitObjectID = 10000 // 初始化对象ID MapCastleSiegeTime = 60 * ctime.MillisecondsPerMinute // 攻城持续时间 MapLeastCastleSiegeTime = 1 * ctime.MillisecondsPerMinute // 最少攻城持续时间 MapMaxTileRetreat = 30 // 最大撤退数 MapDefaultStateID = 1 // 默认出生州 MapLeastSiegeWaitTime = 10 * ctime.MillisecondsPerSecond // 最少攻城等待时间 MapLeastSnatchWaitTime = 10 * ctime.MillisecondsPerSecond // 最少掠夺等待时间 MapLeastDiscardWaitTime = 10 * ctime.MillisecondsPerSecond // 最少放弃等待时间 MapLeastOccupyWaitTime = 10 * ctime.MillisecondsPerSecond // 最少占领等待时间 MapLeastBattleWaitTime = 1 * ctime.MillisecondsPerSecond // 最少战斗等待时间 MapMaxBattleWaitTime = 30 * ctime.MillisecondsPerSecond // 最大战斗等待时间,毕竟状态卡死 ) const ( MapMainForceWaitTimePart1 = ctime.MillisecondsPerSecond // 主力出击第一阶段等待时间 MapMainForceWaitTimePart2 = 10 * ctime.MillisecondsPerSecond // 主力出击第二阶段等待时间 MapSiegeSquadWaitTimePart1 = 5 * ctime.MillisecondsPerSecond // 拆迁队出击第一阶段等待时间 MapSiegeSquadWaitTimePart2 = 60 * ctime.MillisecondsPerSecond // 拆迁队出击第二阶段等待时间 MapAutoSiegeWaitTimePart3 = ctime.MillisecondsPerSecond // 自动攻城第三阶段等待时间 ) const ( MapAutoSiegeStage_MainForce_WaitTime = ctime.MillisecondsPerSecond // 自动攻城主力出击阶段等待时间 MapAutoSiegeStage_SiegeSquad_WaitTime = 5 * ctime.MillisecondsPerSecond // 自动攻城拆迁队出击阶段等待时间 ) const ( MapTowerWidth_Res int32 = 20 MapTowerHeight_Res int32 = 20 MapTowerWidth_Monster int32 = 20 MapTowerHeight_Monster int32 = 20 MapTowerWidth_Build int32 = 20 MapTowerHeight_Build int32 = 20 MapTowerHeight_Castle int32 = 50 MapTowerWidth_Castle int32 = 50 MapTowerWidth_March int32 = 20 MapTowerHeight_March int32 = 20 MapTowerWidth_ArmyLine int32 = 20 MapTowerHeight_ArmyLine int32 = 20 ) const ( MapMarkCommand_Min = 0 // 地图标记指令最小值 MapMarkCommand_Max = 6 // 地图标记指令最大值 ) const ( MapWalkableTile = 1 MapMaxPathDistance = 500 // 寻路最大距离 ) func GetStartWarWaitTime(requiredMinites int64) int64 { return max(requiredMinites, MapLeastStartWarMinite) * ctime.MillisecondsPerMinute } func IsWalkableTile(value int32) bool { return value >= MapWalkableTile } var ( evenOffsets = [][2]int32{ // x + 1 {1, 0}, {1, -1}, // x - 1 {-1, 0}, {-1, -1}, // x {0, -1}, {0, 1}, } oddOffsets = [][2]int32{ // x + 1 {1, 0}, {1, 1}, // x - 1 {-1, 0}, {-1, 1}, // x {0, -1}, {0, 1}, } ) func EvenOffsets() [][2]int32 { return evenOffsets } func OddOffsets() [][2]int32 { return oddOffsets } const MapTile_Unknown int32 = 0 const ( MapTile_Start = 1 MapTile_Space int32 = 1 // 空地 MapTile_Hil int32 = 2 // 山 MapTile_Water int32 = 3 // 水 MapTile_End = 100000 ) const ( MapCastle_Start = 100001 MapCastle_Dock1 int32 = 101401 // 码头(横向) MapCastle_Dock2 int32 = 101402 // 码头(纵向) MapCastle_End = 200000 ) const ( MapBuild_Start = 200001 MapBuild_SiegeBase int32 = 200001 // 攻城地基 MapBuild_LeaguePoint int32 = 201001 // 联盟驻地 MapBuild_SiegeCamp int32 = 201002 // 攻城大营 MapBuild_LeagueCamp int32 = 201003 // 联盟大营 MapBuild_LeagueFlag int32 = 201005 // 联盟旗帜 MapBuild_ArrowTower int32 = 201006 // 箭塔 MapBuild_Barricade int32 = 201007 // 拒马 MapBuild_ResTown int32 = 201010 // 联盟农田 MapBuild_MainCity int32 = 202001 // 玩家主城 MapBuild_CityBase int32 = 202002 // 玩家地基 MapBuild_Camp int32 = 202003 // 营账 MapBuild_End = 300000 ) const ( MapRes_Start = 300001 MapRes_End = 400000 ) var ( // 联盟建筑-建筑数量上限属性ID映射 LeagueMapBuildCountLimitAttrIDMap = map[int32]int32{ MapBuild_LeaguePoint: enum.LeagueAttrResidenceCountLimit, MapBuild_SiegeCamp: enum.LeagueAttrSiegeCampLimit, MapBuild_LeagueCamp: enum.LeagueAttrCampCountLimit, MapBuild_LeagueFlag: enum.LeagueAttrFlagCountLimit, MapBuild_Barricade: enum.LeagueAttrBarricadeCountLimit, MapBuild_ArrowTower: enum.LeagueAttrArrowTowerCountLimit, MapBuild_ResTown: enum.LeagueAttrResTownCountLimit, } // 联盟建筑-建筑等级上限属性ID映射 LeagueMapBuildLevelLimitAttrIDMap = map[int32]int32{ MapBuild_LeagueCamp: enum.LeagueAttrCampLevelLimit, MapBuild_LeagueFlag: enum.LeagueAttrFlagCountLimit, MapBuild_Barricade: enum.LeagueAttrBarricadeLevelLimit, MapBuild_ArrowTower: enum.LeagueAttrArrowTowerLevelLimit, MapBuild_ResTown: enum.LeagueAttrResTownLevelLimit, } ) const ( ArmyLine_AffectMinDistance = 200 // 军情线影响最小距离 ArmyLine_UpdateInterval = 5 // 军情线更新间隔时间 ArmyLine_SyncMinStepLen = 20 // 军情线增量同步最小步长 ArmyLine_OneBatchStepLen = 100 // 军情线一批同步多少步 ) func IsMapTile(configID int32) bool { return configID >= MapTile_Start && configID <= MapTile_End } func IsMapCastle(configID int32) bool { return configID >= MapCastle_Start && configID <= MapCastle_End } func IsMapBuild(configID int32) bool { return configID >= MapBuild_Start && configID <= MapBuild_End } func IsMapRes(configID int32) bool { return configID >= MapRes_Start && configID <= MapRes_End } func IsMapMarkCommandFail(command int32) bool { return command < MapMarkCommand_Min || command > MapMarkCommand_Max } // 是否为可掠夺建筑 func IsSnatchableBuild(configID int32) bool { // 当前只有主城可以掠夺 return configID == MapBuild_MainCity }