Merge branch 'main' of http://10.27.16.144:3000/kawagiri/TH1
This commit is contained in:
commit
0613c06458
@ -40,7 +40,7 @@ namespace NodeCanvas.Tasks.Actions
|
||||
var action = ActionLogicFactory.GetActionLogic(actionId);
|
||||
if (action.CheckCan(data.value.TargetParam))
|
||||
{
|
||||
action.Execute(data.value.TargetParam);
|
||||
action.Execute(data.value.TargetParam, false);
|
||||
EndAction(true);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -35,6 +35,7 @@ namespace NodeCanvas.Tasks.Actions
|
||||
data.value.MaxAiAction.Param.MapData = data.value.Map;
|
||||
data.value.MaxAiAction.Param.RefreshParams();
|
||||
data.value.MaxAiAction.CheckIsActionInPlayerSight();
|
||||
data.value.MaxAiAction.CheckIsActionDuration();
|
||||
if (data.value.MaxAiAction.IsInSight)
|
||||
data.value.MaxAiAction.ActionLogic.CameraControl(data.value.MaxAiAction.Param);
|
||||
EndAction(true);
|
||||
|
||||
@ -85,12 +85,7 @@ namespace RuntimeData
|
||||
{
|
||||
var units = new HashSet<UnitData>();
|
||||
map.GetUnitDataListByPlayerId(player.Id, units);
|
||||
|
||||
foreach (var unit in UnitList)
|
||||
{
|
||||
if (!units.Contains(unit)) continue;
|
||||
unit.OnTurnStart(map);
|
||||
}
|
||||
foreach (var unit in units) unit.OnTurnStart(map);
|
||||
}
|
||||
|
||||
public void OnTurnEnd(MapData map, PlayerData player)
|
||||
@ -98,11 +93,7 @@ namespace RuntimeData
|
||||
var units = new HashSet<UnitData>();
|
||||
map.GetUnitDataListByPlayerId(player.Id, units);
|
||||
|
||||
foreach (var unit in UnitList)
|
||||
{
|
||||
if (!units.Contains(unit)) continue;
|
||||
unit.OnTurnEnd(map);
|
||||
}
|
||||
foreach (var unit in units) unit.OnTurnEnd(map);
|
||||
}
|
||||
|
||||
// 新建小兵
|
||||
|
||||
@ -1776,11 +1776,6 @@ namespace Logic.AI
|
||||
public void CheckIsActionInPlayerSight()
|
||||
{
|
||||
IsInSight = true;
|
||||
if (ActionLogic.ActionId.ActionType == CommonActionType.UnitAttack)
|
||||
{
|
||||
Duration = ActionLogic.Duration;
|
||||
return;
|
||||
}
|
||||
var player = Param.MapData.PlayerMap.SelfPlayerData;
|
||||
if (Param.MapData.GridMap.GetGridDataByGid(Param.GridId, out var grid)
|
||||
&& player.Sight.CheckIsInSight(grid.Id)) return;
|
||||
@ -1793,6 +1788,22 @@ namespace Logic.AI
|
||||
IsInSight = false;
|
||||
}
|
||||
|
||||
public void CheckIsActionDuration()
|
||||
{
|
||||
if (!IsInSight)
|
||||
{
|
||||
Duration = 0.04f;
|
||||
return;
|
||||
}
|
||||
|
||||
if (ActionLogic.ActionId.ActionType == CommonActionType.UnitAttack)
|
||||
{
|
||||
Duration = ActionLogic.Duration;
|
||||
return;
|
||||
}
|
||||
Duration = Table.Instance.AnimDataAssets.AIBeforeAnimWaitTime;
|
||||
}
|
||||
|
||||
public string DebugInfo()
|
||||
{
|
||||
if (ActionLogic.ActionId.ActionType == CommonActionType.Gain || ActionLogic.ActionId.ActionType == CommonActionType.Build || ActionLogic.ActionId.ActionType == CommonActionType.BuildWonder)
|
||||
|
||||
@ -117,7 +117,7 @@ namespace Logic.AI
|
||||
calMap.DeepCopy(mapData);
|
||||
aiAction.Param.MapData = calMap;
|
||||
aiAction.Param.RefreshParams();
|
||||
aiAction.ActionLogic.Execute(aiAction.Param);
|
||||
aiAction.ActionLogic.Execute(aiAction.Param, true);
|
||||
aiAction.Result = CalculateScore(aiAction.Param.MapData, player, cfg);
|
||||
|
||||
// 科技类行为要计算下科技额外收益
|
||||
@ -573,7 +573,7 @@ namespace Logic.AI
|
||||
calMap.DeepCopy(data.Map);
|
||||
aiAction.Param.MapData = calMap;
|
||||
aiAction.Param.RefreshParams();
|
||||
aiAction.ActionLogic.Execute(aiAction.Param);
|
||||
aiAction.ActionLogic.Execute(aiAction.Param, true);
|
||||
aiAction.Result = CalculateAIActionScore(data, aiAction.Param, types);
|
||||
|
||||
var scoreOffset = aiAction.Result.GetAllScore() - startResult.GetAllScore();
|
||||
|
||||
@ -43,7 +43,6 @@ namespace Logic.AI
|
||||
public AILogicState AILogicState;
|
||||
|
||||
private float _targetTime;
|
||||
private float _excuteTime;
|
||||
private AIActionScoreCalculator _scoreCalculator;
|
||||
private AIActionGenerator _generator;
|
||||
|
||||
@ -104,23 +103,6 @@ namespace Logic.AI
|
||||
{
|
||||
if (AILogicState == AILogicState.Finished || AILogicState == AILogicState.Prepare) return;
|
||||
|
||||
if (AILogicState == AILogicState.PrePlay)
|
||||
{
|
||||
if (Time.time < _excuteTime) return;
|
||||
if (_data.MaxAiAction == null)
|
||||
{
|
||||
AILogicState = AILogicState.Playing;
|
||||
return;
|
||||
}
|
||||
_data.MaxAiAction.ActionLogic.Execute(_data.MaxAiAction.Param);
|
||||
var animTime = _data.MaxAiAction.ActionLogic.GetAnimTime(_data.MaxAiAction.Param);
|
||||
if (!_data.MaxAiAction.IsInSight) _targetTime = Time.time + 0.04f;
|
||||
else _targetTime = Time.time + animTime;
|
||||
MainEditor.Instance.OnActionExcuted();
|
||||
_data.MaxAiAction = null;
|
||||
AILogicState = AILogicState.Pausing;
|
||||
}
|
||||
|
||||
if (AILogicState == AILogicState.Pausing)
|
||||
{
|
||||
if (Time.time > _targetTime) AILogicState = AILogicState.Playing;
|
||||
@ -152,14 +134,11 @@ namespace Logic.AI
|
||||
if (_data.MaxAiAction == null || index > 100) AILogicState = AILogicState.Finished;
|
||||
else
|
||||
{
|
||||
if (_data.MaxAiAction.IsInSight)
|
||||
{
|
||||
if (_data.MaxAiAction.Duration == 0)
|
||||
_excuteTime = Time.time + Table.Instance.AnimDataAssets.AIBeforeAnimWaitTime;
|
||||
else _excuteTime = Time.time + _data.MaxAiAction.Duration;
|
||||
}
|
||||
else _excuteTime = Time.time;
|
||||
AILogicState = AILogicState.PrePlay;
|
||||
_data.MaxAiAction.ActionLogic.Execute(_data.MaxAiAction.Param, !_data.MaxAiAction.IsInSight);
|
||||
_targetTime = Time.time + _data.MaxAiAction.Duration;
|
||||
MainEditor.Instance.OnActionExcuted();
|
||||
_data.MaxAiAction = null;
|
||||
AILogicState = AILogicState.Pausing;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -674,7 +674,7 @@ namespace Logic.Action
|
||||
return 1f;
|
||||
}
|
||||
|
||||
public abstract bool Execute(CommonActionParams actionParams);
|
||||
public abstract bool Execute(CommonActionParams actionParams, bool isMoment);
|
||||
|
||||
public abstract bool CheckCan(CommonActionParams actionParams);
|
||||
|
||||
@ -694,7 +694,7 @@ namespace Logic.Action
|
||||
|
||||
}
|
||||
|
||||
public override bool Execute(CommonActionParams actionParams)
|
||||
public override bool Execute(CommonActionParams actionParams, bool isMoment)
|
||||
{
|
||||
if(!actionParams.MapData.GetCityDataByTerritoryGid(actionParams.GridData.Id,out var city))
|
||||
return false;
|
||||
@ -804,7 +804,7 @@ namespace Logic.Action
|
||||
|
||||
}
|
||||
|
||||
public override bool Execute(CommonActionParams actionParams)
|
||||
public override bool Execute(CommonActionParams actionParams, bool isMoment)
|
||||
{
|
||||
CityData cityData = actionParams.CityData;
|
||||
if (cityData == null)
|
||||
@ -912,7 +912,7 @@ namespace Logic.Action
|
||||
|
||||
}
|
||||
|
||||
public override bool Execute(CommonActionParams actionParams)
|
||||
public override bool Execute(CommonActionParams actionParams, bool isMoment)
|
||||
{
|
||||
CityData cityData = actionParams.CityData;
|
||||
//鲁棒性用
|
||||
@ -1413,7 +1413,7 @@ namespace Logic.Action
|
||||
|
||||
}
|
||||
|
||||
public override bool Execute(CommonActionParams actionParams)
|
||||
public override bool Execute(CommonActionParams actionParams, bool isMoment)
|
||||
{
|
||||
if (_actionId.UnitType == UnitType.None)
|
||||
return false;
|
||||
@ -1788,7 +1788,7 @@ namespace Logic.Action
|
||||
|
||||
}
|
||||
|
||||
public override bool Execute(CommonActionParams actionParams)
|
||||
public override bool Execute(CommonActionParams actionParams, bool isMoment)
|
||||
{
|
||||
//鲁棒性判断
|
||||
if (actionParams.UnitData == null) return false;
|
||||
@ -2370,7 +2370,7 @@ namespace Logic.Action
|
||||
|
||||
}
|
||||
|
||||
public override bool Execute(CommonActionParams actionParams)
|
||||
public override bool Execute(CommonActionParams actionParams, bool isMoment)
|
||||
{
|
||||
//鲁棒性判断
|
||||
if (actionParams.CityData == null) return false;
|
||||
@ -2507,7 +2507,7 @@ namespace Logic.Action
|
||||
{
|
||||
}
|
||||
|
||||
public override bool Execute(CommonActionParams actionParams)
|
||||
public override bool Execute(CommonActionParams actionParams, bool isMoment)
|
||||
{
|
||||
if (actionParams.MapData.GetGridDataByUnitId(actionParams.UnitData.Id, out var unitGrid))
|
||||
{
|
||||
@ -2552,9 +2552,9 @@ namespace Logic.Action
|
||||
{
|
||||
}
|
||||
|
||||
public override bool Execute(CommonActionParams actionParams)
|
||||
public override bool Execute(CommonActionParams actionParams, bool isMoment)
|
||||
{
|
||||
Main.UnitLogic.Attack(actionParams.MapData, actionParams.UnitData, actionParams.TargetUnitData, out _duration);
|
||||
Main.UnitLogic.Attack(actionParams.MapData, actionParams.UnitData, actionParams.TargetUnitData, out _duration, isMoment);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -2600,7 +2600,7 @@ namespace Logic.Action
|
||||
{
|
||||
|
||||
}
|
||||
public override bool Execute(CommonActionParams actionParams)
|
||||
public override bool Execute(CommonActionParams actionParams, bool isMoment)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -2622,7 +2622,7 @@ namespace Logic.Action
|
||||
{
|
||||
|
||||
}
|
||||
public override bool Execute(CommonActionParams actionParams)
|
||||
public override bool Execute(CommonActionParams actionParams, bool isMoment)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -2645,7 +2645,7 @@ namespace Logic.Action
|
||||
|
||||
}
|
||||
|
||||
public override bool Execute(CommonActionParams actionParams)
|
||||
public override bool Execute(CommonActionParams actionParams, bool isMoment)
|
||||
{
|
||||
if (actionParams.PlayerData == null || actionParams.GridData == null)
|
||||
return false;
|
||||
@ -2872,7 +2872,7 @@ namespace Logic.Action
|
||||
{
|
||||
|
||||
}
|
||||
public override bool Execute(CommonActionParams actionParams)
|
||||
public override bool Execute(CommonActionParams actionParams, bool isMoment)
|
||||
{
|
||||
if (actionParams.MainObjectType != MainObjectType.Player)
|
||||
return false;
|
||||
|
||||
@ -126,6 +126,7 @@ namespace Logic
|
||||
//gameLogic.EndTurn();
|
||||
//uiManager.EndTurn();
|
||||
PlayerPrefs.SetInt("Archive", 1);
|
||||
PlayerPrefs.Save();
|
||||
MapData.SaveMapData(Main.MapData);
|
||||
AchievementDataManager.Instance.OnTurnStart(Main.MapData, _curPlayer);
|
||||
|
||||
@ -211,6 +212,7 @@ namespace Logic
|
||||
|
||||
public override void End()
|
||||
{
|
||||
_curPlayer = null;
|
||||
_aiLogic.FinishAILogic();
|
||||
TryTurnEndCurPlayerTurn();
|
||||
}
|
||||
|
||||
@ -14,7 +14,7 @@ namespace Logic
|
||||
{
|
||||
bool MoveTo(MapData mapData, UnitData unitData, GridData gridData, MoveType moveType);
|
||||
//unit[uid]移动到grid[pos]
|
||||
bool Attack(MapData mapData, UnitData unitDataA, UnitData unitDataB, out float duration);
|
||||
bool Attack(MapData mapData, UnitData unitDataA, UnitData unitDataB, out float duration, bool isMoment=false);
|
||||
//unit[A]攻击unit[B]
|
||||
void Upgrade(MapData mapData, UnitData unitData);
|
||||
//unit[uid]升级
|
||||
|
||||
@ -53,7 +53,7 @@ namespace Logic
|
||||
{
|
||||
float[,] MoveInfoCostMap;
|
||||
float[,] MoveInfoMap;
|
||||
|
||||
|
||||
|
||||
public UnitLogic()
|
||||
{
|
||||
@ -208,7 +208,7 @@ namespace Logic
|
||||
return counterAttackBack;
|
||||
}
|
||||
|
||||
public bool Attack(MapData mapData, UnitData unit1, UnitData unit2, out float duration)
|
||||
public bool Attack(MapData mapData, UnitData unit1, UnitData unit2, out float duration, bool isMoment=false)
|
||||
{
|
||||
duration = 0;
|
||||
if (!mapData.GetPlayerDataByUnitId(unit1.Id, out var player1)) return false;
|
||||
@ -277,8 +277,8 @@ namespace Logic
|
||||
fragment.OriginPlayer = player1;
|
||||
fragment.TargetPlayer = player2;
|
||||
duration = fragment.Duration;
|
||||
if (mapData == Main.MapData) TimelineManager.Instance.AddFragment(fragment);
|
||||
else fragment.Excute();
|
||||
if (isMoment) fragment.Excute();
|
||||
else TimelineManager.Instance.AddFragment(fragment);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -295,8 +295,8 @@ namespace Logic
|
||||
fragment.AttackTime = attackWait;
|
||||
fragment.AttackBackTime = attackBack;
|
||||
duration = fragment.Duration;
|
||||
if (mapData == Main.MapData) TimelineManager.Instance.AddFragment(fragment);
|
||||
else fragment.Excute();
|
||||
if (isMoment) fragment.Excute();
|
||||
else TimelineManager.Instance.AddFragment(fragment);
|
||||
}
|
||||
}
|
||||
//如果杀不死对方
|
||||
@ -319,8 +319,8 @@ namespace Logic
|
||||
fragment.CounterAttackWait = counterAttackWait;
|
||||
fragment.CounterAttackBack = counterAttackBack;
|
||||
duration = fragment.Duration;
|
||||
if (mapData == Main.MapData) TimelineManager.Instance.AddFragment(fragment);
|
||||
else fragment.Excute();
|
||||
if (isMoment) fragment.Excute();
|
||||
else TimelineManager.Instance.AddFragment(fragment);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -570,7 +570,7 @@ public class BottomInfoUI// : MonoBehaviour
|
||||
|
||||
//Debug.Log($"{actionId.ActionType},{actionId.WonderType},{actionId.ResourceType},{actionId.FeatureType},{actionId.UnitType},{actionId.Vegetation}");
|
||||
//如果成功执行,隐藏当前面板
|
||||
if (ActionLogicFactory.GetActionLogic(fakeActionId).Execute(actionParams))
|
||||
if (ActionLogicFactory.GetActionLogic(fakeActionId).Execute(actionParams, false))
|
||||
{
|
||||
SetBottomInfoHide();
|
||||
_main.MapInteractionLogic.CancelAllHighlight();
|
||||
|
||||
@ -97,7 +97,7 @@ public class CityUpgradeActionUI
|
||||
var fakeActionId = clickedItem.GetComponent<ActionIdMono>().ActionId;
|
||||
var commonActionParams = new CommonActionParams(mapData:MapData,playerData:MapData.PlayerMap.SelfPlayerData,
|
||||
cityData:_cityData,mainObjectType:MainObjectType.City);
|
||||
if(ActionLogicFactory.GetActionLogic(fakeActionId).Execute(commonActionParams))
|
||||
if(ActionLogicFactory.GetActionLogic(fakeActionId).Execute(commonActionParams, false))
|
||||
FadeOut();
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user