增加一些保护
This commit is contained in:
parent
b360a94c4e
commit
5c55c1acb9
@ -251,10 +251,10 @@ namespace RuntimeData
|
||||
|
||||
public UnitRenderer Renderer(MapData map)
|
||||
{
|
||||
if(!map.IsCurrentShowMap())return null;
|
||||
if (!map.IsCurrentShowMap()) return null;
|
||||
return MapRenderer.Instance.ROUnitMap.GetValueOrDefault(this.Id);
|
||||
}
|
||||
|
||||
|
||||
public HeroTaskContentBase HeroTask(MapData map)
|
||||
{
|
||||
HeroTaskContentBase heroTask = null;
|
||||
|
||||
@ -971,9 +971,12 @@ namespace Logic.Action
|
||||
protected override bool Execute(CommonActionParams actionParams)
|
||||
{
|
||||
var selfUnit = actionParams.UnitData;
|
||||
if (selfUnit == null) return false;
|
||||
var selfGrid = actionParams.GridData;
|
||||
if(selfGrid == null)
|
||||
if(!actionParams.MapData.GetGridDataByUnitId(selfUnit.Id, out selfGrid)) return false;
|
||||
if (selfGrid == null)
|
||||
{
|
||||
if (!actionParams.MapData.GetGridDataByUnitId(selfUnit.Id, out selfGrid)) return false;
|
||||
}
|
||||
if (!actionParams.MapData.GetPlayerDataByUnitId(selfUnit.Id, out var selfPlayer)) return false;
|
||||
var gridList = actionParams.MapData.GridMap.GetAroundGridData(1,1,selfGrid);
|
||||
foreach (var grid in gridList)
|
||||
@ -983,20 +986,21 @@ namespace Logic.Action
|
||||
var dmg = Table.Instance.CalcDamage(actionParams.MapData,selfUnit,targetUnit,10);
|
||||
var dmgType = actionParams.MapData.SameUnionByUnitId(selfUnit.Id, targetUnit.Id) ? DamageType.KillSelf : DamageType.True;
|
||||
var settle = Main.UnitLogic.DamageSettlement(actionParams.MapData, selfUnit, targetUnit, dmg, dmgType);
|
||||
|
||||
if (settle == null) continue;
|
||||
|
||||
if (settle.DamageTargetGrid.InMainSight())
|
||||
{
|
||||
if (!settle.IsKill)
|
||||
{
|
||||
settle.DamageTargetGrid.Renderer(actionParams.MapData)?.PlayVFX(new GridVFXParams(GridVFXType.Hurt));
|
||||
targetUnit.Renderer(actionParams.MapData)?.InstantUpdateUnit(true);
|
||||
targetUnit?.Renderer(actionParams.MapData)?.InstantUpdateUnit(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
settle.DamageTargetGrid.Renderer(actionParams.MapData)?.PlayVFX(new GridVFXParams(GridVFXType.Die));
|
||||
settle.DamageTargetGrid.Renderer(actionParams.MapData)?.PlayVFX(new GridVFXParams(GridVFXType.Hurt));
|
||||
settle.DamageTargetGrid.Renderer(actionParams.MapData)?.PlayVFX(new GridVFXParams(GridVFXType.Fog));
|
||||
targetUnit.Renderer(actionParams.MapData)?.Die();
|
||||
targetUnit?.Renderer(actionParams.MapData)?.Die();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -844,6 +844,7 @@ namespace Logic
|
||||
|
||||
public void AddMeetPlayer(MapData map, PlayerData p1, PlayerData p2)
|
||||
{
|
||||
if (p1.MeetPlayers.Contains(p2.Id)) return;
|
||||
//step #1 meetlist增加
|
||||
p1.MeetPlayers.Add(p2.Id);
|
||||
//step #2 加钱
|
||||
@ -1242,13 +1243,17 @@ namespace Logic
|
||||
//如果我方拥有大使馆科技,更新所有meetlist的cradlecity位置
|
||||
public void UpdateDiplomacySight(MapData map, PlayerData player)
|
||||
{
|
||||
foreach(var t in player.MeetPlayers)
|
||||
if (t != player.Id)
|
||||
{
|
||||
if(!map.PlayerMap.GetPlayerDataByPlayerID(t, out var player2))continue;
|
||||
if(!map.GetGridDataByCityId(player2.CradleCityId, out var grid))continue;
|
||||
UpdateSight(map,player,new List<uint>{grid.Id});
|
||||
}
|
||||
var count = player.MeetPlayers.Count;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
var playerId = player.MeetPlayers[i];
|
||||
if (player.Id == playerId) continue;
|
||||
if (!map.PlayerMap.GetPlayerDataByPlayerID(playerId, out var player2)) continue;
|
||||
if (!map.GetGridDataByCityId(player2.CradleCityId, out var grid)) continue;
|
||||
UpdateSight(map, player, new List<uint> { grid.Id });
|
||||
}
|
||||
|
||||
if (count != player.MeetPlayers.Count) UpdateDiplomacySight(map, player);
|
||||
}
|
||||
|
||||
//返回某个玩家学习某个科技的真实价格
|
||||
|
||||
@ -415,6 +415,7 @@ namespace TH1Renderer
|
||||
Main.MapData.UnitMap.GetUnitDataByUnitId(uid, out var unitData);
|
||||
Main.MapData.GetGridDataByUnitId(uid, out var gridData);
|
||||
Main.MapData.GetPlayerDataByUnitId(uid, out var playerData);
|
||||
if (unitData == null || gridData == null || playerData == null) return false;
|
||||
if (unitData.AP <= 0 && unitData.MP <= 0) return false;
|
||||
//unitLogic.DebugOutputMoveInfo();
|
||||
int r = Mathf.Max((Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unitData.UnitType,unitData.GiantType,unitData.UnitLevel,out var info)?info.MoveRange:0) * 2,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user