diff --git a/My project/Assets/Scripts/AINodeCanvas/AIForeachStart.cs b/My project/Assets/Scripts/AINodeCanvas/AIForeachStart.cs index b37a803b7..f80f65c47 100644 --- a/My project/Assets/Scripts/AINodeCanvas/AIForeachStart.cs +++ b/My project/Assets/Scripts/AINodeCanvas/AIForeachStart.cs @@ -7,6 +7,7 @@ using System.Linq; +using Logic.Action; using Logic.AI; using NodeCanvas.Framework; using ParadoxNotion.Design; @@ -49,7 +50,8 @@ namespace NodeCanvas.Tasks.Actions } data.value.ForeachLegion.RemoveAt(0); } - + + data.value.TargetParam = new CommonActionParams(); data.value.TargetParam.MapData = data.value.Map; data.value.TargetParam.PlayerData = data.value.Player; if (data.value.ForeachCity.Count != 0) data.value.TargetParam.CityData = data.value.ForeachCity[0]; diff --git a/My project/Assets/Scripts/AINodeCanvas/AIGeneratorAction.cs b/My project/Assets/Scripts/AINodeCanvas/AIGeneratorAction.cs index 24eaff84d..340b5cf38 100644 --- a/My project/Assets/Scripts/AINodeCanvas/AIGeneratorAction.cs +++ b/My project/Assets/Scripts/AINodeCanvas/AIGeneratorAction.cs @@ -36,6 +36,8 @@ namespace NodeCanvas.Tasks.Actions return; } + data.value.AIActions.Clear(); + data.value.MaxAiAction = null; foreach (var actionType in ActionTypes)AIActionGenerator.GeneratorActionIds(data.value, actionType); if (data.value.AIActions.Count == 0) { diff --git a/My project/Assets/Scripts/Data/PlayerData.cs b/My project/Assets/Scripts/Data/PlayerData.cs index 936b78ef8..38c855ae0 100644 --- a/My project/Assets/Scripts/Data/PlayerData.cs +++ b/My project/Assets/Scripts/Data/PlayerData.cs @@ -196,8 +196,21 @@ namespace RuntimeData // 是否存活 public bool Alive; // 财富总额 - public int PlayerWealth; - + public int PlayerWealth2; + + public int PlayerWealth + { + get => PlayerWealth2; + set + { + PlayerWealth2 = value; + if (PlayerWealth2 < 0) + { + Debug.Log(111); + } + } + } + //分数 public int PlayerScore; // 视野 @@ -258,7 +271,7 @@ namespace RuntimeData PlayerForceId = copyData.PlayerForceId; CradleCityId = copyData.CradleCityId; Alive = copyData.Alive; - PlayerWealth = copyData.PlayerWealth; + PlayerWealth2 = copyData.PlayerWealth2; Sight = new MapSightData(copyData.Sight); TechTree = new TechTreeData(copyData.TechTree); @@ -286,7 +299,7 @@ namespace RuntimeData PlayerForceId = copyData.PlayerForceId; CradleCityId = copyData.CradleCityId; Alive = copyData.Alive; - PlayerWealth = copyData.PlayerWealth; + PlayerWealth2 = copyData.PlayerWealth2; Sight.DeepCopy(copyData.Sight); TechTree.DeepCopy(copyData.TechTree); @@ -318,7 +331,7 @@ namespace RuntimeData private void InitData(uint civId,uint forceId) { Alive = true; - PlayerWealth = 5; + PlayerWealth2 = 5; PlayerCivId = civId; PlayerForceId = forceId; diff --git a/My project/Assets/Scripts/Logic/AI/AIActionBase.cs b/My project/Assets/Scripts/Logic/AI/AIActionBase.cs index df69b3185..5c00a3421 100644 --- a/My project/Assets/Scripts/Logic/AI/AIActionBase.cs +++ b/My project/Assets/Scripts/Logic/AI/AIActionBase.cs @@ -283,6 +283,7 @@ namespace Logic.AI TargetParam = new CommonActionParams(); TargetParam.MapData = Map; TargetParam.PlayerData = Player; + TargetParam.OnParamChanged(); } // 计算军团战略 diff --git a/My project/Assets/Scripts/Logic/AI/AIActionGenerator.cs b/My project/Assets/Scripts/Logic/AI/AIActionGenerator.cs index 38a891280..bb2ee18ab 100644 --- a/My project/Assets/Scripts/Logic/AI/AIActionGenerator.cs +++ b/My project/Assets/Scripts/Logic/AI/AIActionGenerator.cs @@ -330,6 +330,7 @@ namespace Logic.AI var result = Main.UnitLogic.CheckUnitCanMoveOrAttack(data.Map, data.TargetParam.UnitData, grid); if (result != MoveAttackType.Move && result != MoveAttackType.MoveToPort && result != MoveAttackType.MoveAshore) continue; if (data.TargetParam.UnitData.MP <= 0) continue; + data.TargetParam.GridData = grid; data.TargetParam.OnParamChanged(); foreach (var action in actions) diff --git a/My project/Assets/Scripts/Logic/AI/AIActionScoreCalculator.cs b/My project/Assets/Scripts/Logic/AI/AIActionScoreCalculator.cs index 655e3edcb..82e516baa 100644 --- a/My project/Assets/Scripts/Logic/AI/AIActionScoreCalculator.cs +++ b/My project/Assets/Scripts/Logic/AI/AIActionScoreCalculator.cs @@ -665,34 +665,34 @@ namespace Logic.AI var result = new CalculateResult(); foreach (var type in types) { - if (type == CalculateType.PlayerTechDefend) CalculatePlayerTechDefend(data, data.TargetParam, result); - if (type == CalculateType.PlayerTechAttack) CalculatePlayerTechDefend(data, data.TargetParam, result); - if (type == CalculateType.PlayerTechScore) CalculatePlayerTechDefend(data, data.TargetParam, result); + if (type == CalculateType.PlayerTechDefend) CalculatePlayerTechDefend(data, param, result); + if (type == CalculateType.PlayerTechAttack) CalculatePlayerTechDefend(data, param, result); + if (type == CalculateType.PlayerTechScore) CalculatePlayerTechDefend(data, param, result); - if (type == CalculateType.CityLevelUpDefend) CalculateCityLevelUpDefend(data, data.TargetParam, result); - if (type == CalculateType.CityTrainDefend) CalculateCityTrainDefend(data, data.TargetParam, result); - if (type == CalculateType.CityTrainAttack) CalculateCityTrainAttack(data, data.TargetParam, result); - if (type == CalculateType.CityDevelopment) CalculateCityDevelopment(data, data.TargetParam, result); + if (type == CalculateType.CityLevelUpDefend) CalculateCityLevelUpDefend(data, param, result); + if (type == CalculateType.CityTrainDefend) CalculateCityTrainDefend(data, param, result); + if (type == CalculateType.CityTrainAttack) CalculateCityTrainAttack(data, param, result); + if (type == CalculateType.CityDevelopment) CalculateCityDevelopment(data, param, result); - if (type == CalculateType.LegionDefendKill) CalculateLegionDefendKill(data, data.TargetParam, result); - if (type == CalculateType.LegionDefendMove) CalculateLegionDefendMove(data, data.TargetParam, result); - if (type == CalculateType.LegionDefendAttack) CalculateLegionDefendAttack(data, data.TargetParam, result); - if (type == CalculateType.LegionDefendMoveForTrain) CalculateLegionDefendMoveForTrain(data, data.TargetParam, result); + if (type == CalculateType.LegionDefendKill) CalculateLegionDefendKill(data, param, result); + if (type == CalculateType.LegionDefendMove) CalculateLegionDefendMove(data, param, result); + if (type == CalculateType.LegionDefendAttack) CalculateLegionDefendAttack(data, param, result); + if (type == CalculateType.LegionDefendMoveForTrain) CalculateLegionDefendMoveForTrain(data, param, result); - if (type == CalculateType.UnitRecovery) CalculateUnitRecovery(data, data.TargetParam, result); - if (type == CalculateType.UnitAttackCityCenter) CalculateUnitAttackCityCenter(data, data.TargetParam, result); - if (type == CalculateType.UnitExplore) CalculateExplore(data, data.TargetParam, result); - if (type == CalculateType.UnitRetreat) CalculateUnitRetreat(data, data.TargetParam, result); - if (type == CalculateType.UnitMoveToTargetGrid) CalculateUnitMoveToTargetGrid(data, data.TargetParam, result); - if (type == CalculateType.UnitKill) CalculateUnitKill(data, data.TargetParam, result); + if (type == CalculateType.UnitRecovery) CalculateUnitRecovery(data, param, result); + if (type == CalculateType.UnitAttackCityCenter) CalculateUnitAttackCityCenter(data, param, result); + if (type == CalculateType.UnitExplore) CalculateExplore(data, param, result); + if (type == CalculateType.UnitRetreat) CalculateUnitRetreat(data, param, result); + if (type == CalculateType.UnitMoveToTargetGrid) CalculateUnitMoveToTargetGrid(data, param, result); + if (type == CalculateType.UnitKill) CalculateUnitKill(data, param, result); - if (type == CalculateType.LegionAttackMoveToCity) CalculateLegionAttackMoveToCity(data, data.TargetParam, result); + if (type == CalculateType.LegionAttackMoveToCity) CalculateLegionAttackMoveToCity(data, param, result); - if (type == CalculateType.LegionDevelopmentMoveToCityTerritory) CalculateLegionDevelopmentMoveToCityTerritory(data, data.TargetParam, result); - if (type == CalculateType.LegionDevelopmentKill) CalculateLegionDevelopmentKill(data, data.TargetParam, result); - if (type == CalculateType.LegionDevelopmentMoveToCity) CalculateLegionDevelopmentMoveToCity(data, data.TargetParam, result); - if (type == CalculateType.LegionDevelopmentAttackUnit) CalculateLegionDevelopmentAttackUnit(data, data.TargetParam, result); - if (type == CalculateType.LegionDevelopmentMoveToOtherCity) CalculateLegionDevelopmentMoveToOtherCity(data, data.TargetParam, result); + if (type == CalculateType.LegionDevelopmentMoveToCityTerritory) CalculateLegionDevelopmentMoveToCityTerritory(data, param, result); + if (type == CalculateType.LegionDevelopmentKill) CalculateLegionDevelopmentKill(data, param, result); + if (type == CalculateType.LegionDevelopmentMoveToCity) CalculateLegionDevelopmentMoveToCity(data, param, result); + if (type == CalculateType.LegionDevelopmentAttackUnit) CalculateLegionDevelopmentAttackUnit(data, param, result); + if (type == CalculateType.LegionDevelopmentMoveToOtherCity) CalculateLegionDevelopmentMoveToOtherCity(data, param, result); } return result; diff --git a/My project/Assets/Scripts/Logic/Action/ActionLogic.cs b/My project/Assets/Scripts/Logic/Action/ActionLogic.cs index 721bb38b5..bf8cf17e3 100644 --- a/My project/Assets/Scripts/Logic/Action/ActionLogic.cs +++ b/My project/Assets/Scripts/Logic/Action/ActionLogic.cs @@ -137,7 +137,6 @@ namespace Logic.Action param.GridId = GridId; param.TargetUnitId = TargetUnitId; param.TargetGridId = TargetGridId; - RefreshParams(); return param; } }