增加一些保护

This commit is contained in:
wuwenbo 2025-10-27 17:26:14 +08:00
parent b360a94c4e
commit 5c55c1acb9
4 changed files with 24 additions and 14 deletions

View File

@ -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;

View File

@ -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();
}
}

View File

@ -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);
}
//返回某个玩家学习某个科技的真实价格

View File

@ -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,