Merge branch 'main' of http://10.27.16.144:3000/kawagiri/TH1
This commit is contained in:
commit
fc5f097200
@ -312,10 +312,8 @@ namespace RuntimeData
|
||||
RemoveUnitData(unitData.Id);
|
||||
if (GetGridIdByUnitId(unitData.Id, out var gridId))
|
||||
_gridToUnitDict.Remove(gridId);
|
||||
|
||||
|
||||
UnitMap.UnitMapRenderMark = true;
|
||||
|
||||
}
|
||||
|
||||
//改变小兵到城市的所属关系
|
||||
|
||||
@ -232,10 +232,6 @@ namespace RuntimeData
|
||||
set
|
||||
{
|
||||
PlayerWealth2 = value;
|
||||
if (PlayerWealth2 < 0)
|
||||
{
|
||||
Debug.Log(111);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1762,6 +1762,7 @@ namespace Logic.AI
|
||||
public CommonActionParams Param;
|
||||
public ActionLogicBase ActionLogic;
|
||||
public bool IsInSight;
|
||||
public float Duration;
|
||||
|
||||
|
||||
public AIActionBase(CommonActionParams param, ActionLogicBase action)
|
||||
@ -1769,12 +1770,17 @@ namespace Logic.AI
|
||||
Param = param;
|
||||
ActionLogic = action;
|
||||
IsInSight = false;
|
||||
Duration = 0;
|
||||
}
|
||||
|
||||
public void CheckIsActionInPlayerSight()
|
||||
{
|
||||
IsInSight = true;
|
||||
if (ActionLogic.ActionId.ActionType == CommonActionType.UnitAttack) return;
|
||||
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;
|
||||
|
||||
@ -153,7 +153,11 @@ namespace Logic.AI
|
||||
else
|
||||
{
|
||||
if (_data.MaxAiAction.IsInSight)
|
||||
_excuteTime = Time.time + Table.Instance.AnimDataAssets.AIBeforeAnimWaitTime;
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
@ -634,10 +634,17 @@ namespace Logic.Action
|
||||
{
|
||||
protected CommonActionId _actionId;
|
||||
public CommonActionId ActionId => _actionId;
|
||||
protected float _duration;
|
||||
public float Duration
|
||||
{
|
||||
get => _duration;
|
||||
set => _duration = value;
|
||||
}
|
||||
|
||||
public ActionLogicBase(CommonActionId id)
|
||||
{
|
||||
_actionId = id;
|
||||
_duration = 0;
|
||||
}
|
||||
|
||||
public bool CheckEqualActionId(CommonActionId actionId)
|
||||
@ -2546,7 +2553,7 @@ namespace Logic.Action
|
||||
|
||||
public override bool Execute(CommonActionParams actionParams)
|
||||
{
|
||||
Main.UnitLogic.Attack(actionParams.MapData, actionParams.UnitData, actionParams.TargetUnitData);
|
||||
Main.UnitLogic.Attack(actionParams.MapData, actionParams.UnitData, actionParams.TargetUnitData, out _duration);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -187,6 +187,7 @@ namespace Logic
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
TimelineManager.Instance.Update();
|
||||
MainEditor.Instance.Update();
|
||||
GameLogic.Update();
|
||||
PlayerLogic.Update(MapData);
|
||||
@ -196,9 +197,7 @@ namespace Logic
|
||||
UIManager.Instance.Update(MapData);
|
||||
Timer.Instance.Update();
|
||||
AudioManager.Instance.Update();
|
||||
TimelineManager.Instance.Update();
|
||||
ConfigManager.Instance.Update();
|
||||
|
||||
}
|
||||
|
||||
public bool HasArchive()
|
||||
|
||||
@ -87,7 +87,7 @@ namespace Logic
|
||||
else if (roUnit.IsAttackHighlight)
|
||||
{
|
||||
CancelAllHighlight();
|
||||
Main.UnitLogic.Attack(Main.MapData, MapRenderer.Instance.SelectUnitData, unitData);
|
||||
Main.UnitLogic.Attack(Main.MapData, MapRenderer.Instance.SelectUnitData, unitData, out _);
|
||||
UIManager.Instance.BottomInfoUI.UIBottomInfoStatus = false;
|
||||
}
|
||||
//如果是选择角色
|
||||
|
||||
@ -46,6 +46,12 @@ namespace Logic.Timeline
|
||||
main.MapInteractionLogic.CheckContinuousAction(Map, OriginPlayer, Origin, TargetGrid);
|
||||
}
|
||||
|
||||
public override void Excute()
|
||||
{
|
||||
Main.UnitLogic.DamageSettlement(Map, Origin, Target, Dmg, DamageType.ActiveAttack);
|
||||
Main.UnitLogic.MoveTo(Map, Origin, TargetGrid, MoveType.AttackMove);
|
||||
}
|
||||
|
||||
public override void OnUpdate(float progressTime)
|
||||
{
|
||||
|
||||
@ -77,6 +83,11 @@ namespace Logic.Timeline
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void Excute()
|
||||
{
|
||||
Main.UnitLogic.DamageSettlement(Map, Origin, Target, Dmg, DamageType.ActiveAttack);
|
||||
}
|
||||
|
||||
public override void OnUpdate(float progressTime)
|
||||
{
|
||||
@ -140,6 +151,12 @@ namespace Logic.Timeline
|
||||
|
||||
}
|
||||
|
||||
public override void Excute()
|
||||
{
|
||||
Main.UnitLogic.DamageSettlement(Map, Origin, Target, Dmg1, DamageType.ActiveAttack);
|
||||
Main.UnitLogic.DamageSettlement(Map, Target, Origin, Dmg2, DamageType.CounterAttack);
|
||||
}
|
||||
|
||||
public override void OnUpdate(float progressTime)
|
||||
{
|
||||
if (Target == null || Origin == null)
|
||||
@ -174,6 +191,7 @@ namespace Logic.Timeline
|
||||
{
|
||||
CounterAttackWait = float.MaxValue;
|
||||
var settlement = Main.UnitLogic.DamageSettlement(Map, Target, Origin, Dmg2, DamageType.CounterAttack);
|
||||
|
||||
if (settlement.IsKill)
|
||||
{
|
||||
OriginGrid.VFXRenderMarkHurt = true;
|
||||
|
||||
@ -29,5 +29,9 @@ namespace Logic.Timeline
|
||||
public abstract void OnFinished();
|
||||
|
||||
public abstract void OnUpdate(float progressTime);
|
||||
|
||||
public virtual void Excute()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -23,6 +23,7 @@ namespace Logic.Timeline
|
||||
public void AddFragment(FragmentBase fragment)
|
||||
{
|
||||
_fragments.Add(fragment);
|
||||
Update();
|
||||
}
|
||||
|
||||
public void Update()
|
||||
|
||||
@ -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);
|
||||
bool Attack(MapData mapData, UnitData unitDataA, UnitData unitDataB, out float duration);
|
||||
//unit[A]攻击unit[B]
|
||||
void Upgrade(MapData mapData, UnitData unitData);
|
||||
//unit[uid]升级
|
||||
|
||||
@ -204,8 +204,9 @@ namespace Logic
|
||||
return counterAttackBack;
|
||||
}
|
||||
|
||||
public bool Attack(MapData mapData, UnitData unit1, UnitData unit2)
|
||||
public bool Attack(MapData mapData, UnitData unit1, UnitData unit2, out float duration)
|
||||
{
|
||||
duration = 0;
|
||||
if (!mapData.GetPlayerDataByUnitId(unit1.Id, out var player1)) return false;
|
||||
if (!mapData.GetPlayerDataByUnitId(unit2.Id, out var player2)) return false;
|
||||
if (!mapData.GetCityDataByUnitId(unit1.Id, out var city1)) return false;
|
||||
@ -271,7 +272,9 @@ namespace Logic
|
||||
fragment.TargetGrid = grid2;
|
||||
fragment.OriginPlayer = player1;
|
||||
fragment.TargetPlayer = player2;
|
||||
TimelineManager.Instance.AddFragment(fragment);
|
||||
duration = fragment.Duration;
|
||||
if (mapData == Main.MapData) TimelineManager.Instance.AddFragment(fragment);
|
||||
else fragment.Excute();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -287,7 +290,9 @@ namespace Logic
|
||||
fragment.TargetPlayer = player2;
|
||||
fragment.AttackTime = attackWait;
|
||||
fragment.AttackBackTime = attackBack;
|
||||
TimelineManager.Instance.AddFragment(fragment);
|
||||
duration = fragment.Duration;
|
||||
if (mapData == Main.MapData) TimelineManager.Instance.AddFragment(fragment);
|
||||
else fragment.Excute();
|
||||
}
|
||||
}
|
||||
//如果杀不死对方
|
||||
@ -309,7 +314,9 @@ namespace Logic
|
||||
fragment.CounterAttackStart = counterAttackStart;
|
||||
fragment.CounterAttackWait = counterAttackWait;
|
||||
fragment.CounterAttackBack = counterAttackBack;
|
||||
TimelineManager.Instance.AddFragment(fragment);
|
||||
duration = fragment.Duration;
|
||||
if (mapData == Main.MapData) TimelineManager.Instance.AddFragment(fragment);
|
||||
else fragment.Excute();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@ -319,13 +326,24 @@ namespace Logic
|
||||
// TODO 死亡动画标记移除了,最好用新系统实现
|
||||
public SettlementInfo DamageSettlement(MapData mapData, UnitData origin, UnitData target, int dmg, DamageType type)
|
||||
{
|
||||
if (origin == null || target == null)
|
||||
{
|
||||
LogSystem.LogError($"DamageSettlement origin:{origin} target{target}");
|
||||
return null;
|
||||
}
|
||||
if (!mapData.GetGridDataByUnitId(target.Id, out var targetGrid))
|
||||
{
|
||||
LogSystem.LogError($"WULI Target Grid is null target.id:{target.Id}");
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!target.CanBeDamaged(mapData, dmg)) return null;
|
||||
var settlement = new SettlementInfo();
|
||||
settlement.DamageType = type;
|
||||
settlement.DamageOrigin = origin;
|
||||
settlement.DamageTarget = target;
|
||||
mapData.GetGridDataByUnitId(target.Id, out settlement.DamageTargetGrid);
|
||||
settlement.DamageValue = dmg;
|
||||
settlement.DamageTargetGrid = targetGrid;
|
||||
|
||||
target.Health -= dmg;
|
||||
if (type == DamageType.KillSelf)
|
||||
@ -335,7 +353,6 @@ namespace Logic
|
||||
}
|
||||
else if (target.CanBeKilled(mapData) && target.Health <= 0)
|
||||
{
|
||||
|
||||
if (Main.MapData == mapData) AchievementDataManager.Instance.OnKillUnit(mapData, origin, target);
|
||||
UnitDie(mapData, target, dmg);
|
||||
settlement.IsKill = true;
|
||||
@ -363,7 +380,6 @@ namespace Logic
|
||||
if(map == Main.MapData)
|
||||
DieAnimRenderMarkUpadate(targetGrid, unit, dmg,true);
|
||||
Main.UnitLogic.Die(map, unit);
|
||||
|
||||
}
|
||||
|
||||
public void DieAnimRenderMarkUpadate(GridData grid2,UnitData unit2,int dmg,bool needRandomWait = false)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user