Compare commits
3 Commits
main
...
wuwenbo/ol
| Author | SHA1 | Date | |
|---|---|---|---|
| e02800f11a | |||
| fc25acdbbb | |||
| c2301ea293 |
@ -522,7 +522,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.BeforeTurnStart();
|
||||
if (skill.IsFinished())
|
||||
{
|
||||
@ -540,7 +540,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.OnAfterTurnStart(this, map);
|
||||
}
|
||||
}
|
||||
@ -551,7 +551,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.OnTurnEnd(this, map);
|
||||
}
|
||||
}
|
||||
@ -563,7 +563,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
v += skill.GetExtraSight(this,map);
|
||||
}
|
||||
if (map.GetGridDataByUnitId(this.Id, out var grid) && grid.Feature == TerrainFeature.Mountain)
|
||||
@ -578,7 +578,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
v += skill.GetExtraSight(this,map);
|
||||
}
|
||||
if (grid.Feature == TerrainFeature.Mountain)
|
||||
@ -592,7 +592,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
attackRange += skill.GetExtraAttackRange(mapData,this);
|
||||
}
|
||||
|
||||
@ -610,7 +610,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (!skill.GetFinalMoveRange(this, out var finalMoveRange)) continue;
|
||||
return finalMoveRange;
|
||||
}
|
||||
@ -628,7 +628,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
moveRange += skill.GetExtraMoveRange(mapData,this);
|
||||
}
|
||||
|
||||
@ -642,7 +642,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsLimitSelfExp(this, map)) isStaticExp = true;
|
||||
}
|
||||
|
||||
@ -671,7 +671,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
value *= skill.GetSpecialSkillBonus(mapData, this, skillType);
|
||||
}
|
||||
return value;
|
||||
@ -715,7 +715,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
value += skill.GetAttackAdditionParam(map, this, target);
|
||||
}
|
||||
return value;
|
||||
@ -728,7 +728,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
value *= skill.GetAttackMultiplicationParam(map, this, target);
|
||||
}
|
||||
return value;
|
||||
@ -756,7 +756,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
add += skill.GetExtraMoveRange(mapData,this);
|
||||
}
|
||||
//var mul = GetDefenseMultiplicationParam(map);
|
||||
@ -783,7 +783,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
add += skill.GetExtraAttackRange(mapData,this);
|
||||
}
|
||||
//var mul = GetDefenseMultiplicationParam(map);
|
||||
@ -818,7 +818,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
value += skill.GetDefenseAdditionParam(map, this, target);
|
||||
}
|
||||
return value;
|
||||
@ -834,7 +834,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
var t = skill.GetDefenseMultiplicationParam(map, this, target);
|
||||
isZero *= t;
|
||||
|
||||
@ -868,7 +868,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
var t = skill.GetDefenseMultiplicationParam(map, this, target);
|
||||
isZero *= t;
|
||||
|
||||
@ -917,7 +917,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
criticalHitRate += skill.GetCriticalHitRate(this, map);
|
||||
}
|
||||
return criticalHitRate;
|
||||
@ -933,7 +933,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
ret += skill.GetOfficerHealth();
|
||||
}
|
||||
return ret;
|
||||
@ -945,7 +945,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsOfficer()) return true;
|
||||
}
|
||||
return false;
|
||||
@ -956,7 +956,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsPrepareOfficer()) return true;
|
||||
}
|
||||
return false;
|
||||
@ -968,7 +968,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsCanBeOfficer()) return true;
|
||||
}
|
||||
return false;
|
||||
@ -980,7 +980,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsCanMoveGiantNearbyGrid(this, map)) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1006,7 +1006,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsCanMoveToNoUnitSelfCity(this, map)) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1018,7 +1018,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (!skill.IsCanBeKill(this, map)) return false;
|
||||
}
|
||||
return true;
|
||||
@ -1030,7 +1030,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsLimitDamaged(this, map, dmg)) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1042,7 +1042,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsLimitSelfExp(this, map)) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1060,7 +1060,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsCanMoveOnTerrain(this, map, terrainType)) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1074,7 +1074,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsCanMoveOnFeature(this, map,featureType)) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1086,7 +1086,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.CanAttackAll(this, map)) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1098,7 +1098,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsHideState()) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1110,7 +1110,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsLimitSelfAttack(this, map)) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1122,7 +1122,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsLimitSelfMove(this, map)) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1134,7 +1134,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsCanAttackTargetGrid(map,this,target)) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1146,7 +1146,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsCanAttackAlly()) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1158,7 +1158,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (!skill.IsCanAttackTargetAlly(map,this,target)) return false;
|
||||
}
|
||||
return true;
|
||||
@ -1170,7 +1170,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsLimitSelfCounterAttack(this, map)) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1182,7 +1182,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsLimitTargetCounterAttack(this, map)) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1193,7 +1193,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsCanTransport()) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1205,7 +1205,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.ActiveMoveFailed(this, target, map, moveType, path)) return true;
|
||||
}
|
||||
|
||||
@ -1219,7 +1219,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.BeforeMove(this, target, map, moveType, path);
|
||||
}
|
||||
}
|
||||
@ -1231,7 +1231,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.OnMove(this, target, map,moveType, path);
|
||||
}
|
||||
//赋予格子特殊效果
|
||||
@ -1249,7 +1249,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.OnBeMoveTarget(origin, this, target, map, moveType);
|
||||
}
|
||||
}
|
||||
@ -1261,7 +1261,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.BeforeDamagedSupportStage(map, info);
|
||||
}
|
||||
}
|
||||
@ -1273,7 +1273,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.BeforeDamagedTransformStage(map, info);
|
||||
}
|
||||
}
|
||||
@ -1286,7 +1286,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.BeforeActiveAttackOther(mapData, origin, target, out var tmpAddDmg);
|
||||
addDmg += tmpAddDmg;
|
||||
}
|
||||
@ -1299,7 +1299,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.AfterActiveAttackOther(mapData, origin, target);
|
||||
}
|
||||
}
|
||||
@ -1311,7 +1311,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.AfterActiveAttacked(mapData, origin, target);
|
||||
}
|
||||
}
|
||||
@ -1323,7 +1323,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.BeforeDamageOther(map, info);
|
||||
}
|
||||
}
|
||||
@ -1335,7 +1335,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.OnDamaged(mapData, info);
|
||||
}
|
||||
}
|
||||
@ -1347,7 +1347,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.OnDamageOther(mapData, info);
|
||||
}
|
||||
}
|
||||
@ -1359,7 +1359,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.AfterDamageOther(mapData, info);
|
||||
}
|
||||
}
|
||||
@ -1371,7 +1371,7 @@ namespace RuntimeData
|
||||
var copy = new List<SkillBase>(Skills);
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.OnHealOther(mapData,this,target, healType);
|
||||
}
|
||||
//HeroTask(mapData)?.OnDamageOther(mapData, info);
|
||||
@ -1387,7 +1387,7 @@ namespace RuntimeData
|
||||
float ret = 0f;
|
||||
foreach (var skill in copy)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
ret = Mathf.Max(ret,skill.GetGridMoveFloor(mapData,originUnit,targetGrid));
|
||||
}
|
||||
return ret;
|
||||
@ -1407,7 +1407,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
ret += skill.GetKillCount();
|
||||
}
|
||||
return ret;
|
||||
@ -1428,7 +1428,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsTreatAsHero(map, this,unit)) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1440,7 +1440,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
if (skill.IsLimitMoveToSelfTerrain(this, map)) return true;
|
||||
}
|
||||
return false;
|
||||
@ -1469,7 +1469,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.OnRefresh();
|
||||
}
|
||||
}
|
||||
@ -1486,7 +1486,7 @@ namespace RuntimeData
|
||||
var isFrozen = IsFrozen();
|
||||
foreach (var skill in Skills)
|
||||
{
|
||||
if (isFrozen && skill.SkillPriority == SkillPriority.Normal) continue;
|
||||
|
||||
skill.SetOfficer();
|
||||
}
|
||||
}
|
||||
|
||||
@ -52,16 +52,89 @@ namespace Logic.Editor
|
||||
|
||||
public class UnitStatisticResult
|
||||
{
|
||||
public int AppearCount; // 出战次数
|
||||
public int DeathCount; // 死亡次数
|
||||
public int KillCount; // 击杀次数
|
||||
public long TotalDamageDealt; // 总造成伤害
|
||||
public long TotalDamageTaken; // 总承受伤害
|
||||
public float AverageDamageDealt; // 平均造成伤害
|
||||
public float AverageDamageTaken; // 平均承受伤害
|
||||
public uint EarliestAppearTurn = uint.MaxValue; // 最早出战回合
|
||||
public int TransformFromCount; // 被转化次数(作为来源)
|
||||
public int TransformToCount; // 转化成此单位次数
|
||||
public float MatchCount; // 有效局数
|
||||
public float TurnCount; // 有效回合数
|
||||
public float AppearCount; // 单局出战次数
|
||||
public float EarliestAppearTurn; // 单局最早出战回合
|
||||
public float DeathCount; // 单局死亡次数
|
||||
public float KillCount; // 单局击杀次数
|
||||
public float TotalDamageDealt; // 单局总造成伤害
|
||||
public float TotalDamageTaken; // 单局总承受伤害
|
||||
public float AverageDamageDealt; // 单局平均造成伤害
|
||||
public float AverageDamageTaken; // 单局平均承受伤害
|
||||
public float TransformFromCount; // 单局被转化次数(作为来源)
|
||||
public float TransformToCount; // 单局转化成此单位次数
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
MatchCount = 0;
|
||||
TurnCount = 0;
|
||||
AppearCount = 0;
|
||||
EarliestAppearTurn = 0;
|
||||
DeathCount = 0;
|
||||
KillCount = 0;
|
||||
TotalDamageDealt = 0;
|
||||
TotalDamageTaken = 0;
|
||||
AverageDamageDealt = 0;
|
||||
AverageDamageTaken = 0;
|
||||
TransformFromCount = 0;
|
||||
TransformToCount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class TechStatisticLimit
|
||||
{
|
||||
public bool LimitEmpire;
|
||||
public Empire Empire;
|
||||
public bool LimitTechType;
|
||||
public TechType TechType;
|
||||
}
|
||||
|
||||
|
||||
public class TechStatisticResult
|
||||
{
|
||||
public float LearnMatchCount; // 学习局数
|
||||
public float LearnCount; // 单局平均学习次数
|
||||
public float LearnTurn; // 单局平均首次学习时间
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
LearnMatchCount = 0;
|
||||
LearnCount = 0;
|
||||
LearnTurn = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class EmpireStatisticLimit
|
||||
{
|
||||
public bool LimitEmpire;
|
||||
public Empire Empire;
|
||||
}
|
||||
|
||||
|
||||
public class EmpireStatisticResult
|
||||
{
|
||||
public int MatchCount;
|
||||
public int TurnCount;
|
||||
public float CoinPerTurn; // 单局回合金币
|
||||
public float TechPointPerTurn; // 单局回合科技点
|
||||
public float CityCount; // 单局城市数量
|
||||
public float MaxCityLevel; // 单局最高城市等级
|
||||
public float CityLevel; // 单局城市等级
|
||||
public float TechCount; // 单局科技数量
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
MatchCount = 0;
|
||||
CoinPerTurn = 0;
|
||||
TechPointPerTurn = 0;
|
||||
CityCount = 0;
|
||||
MaxCityLevel = 0;
|
||||
CityLevel = 0;
|
||||
TechCount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -80,6 +153,12 @@ namespace Logic.Editor
|
||||
private OssStatisticType _statisticType;
|
||||
private UnitStatisticLimit _unitLimit;
|
||||
private UnitStatisticResult _unitResult;
|
||||
|
||||
private TechStatisticLimit _techLimit;
|
||||
private TechStatisticResult _techResult;
|
||||
|
||||
private EmpireStatisticLimit _empireLimit;
|
||||
private EmpireStatisticResult _empireResult;
|
||||
private int _totalFileCount;
|
||||
private int _validFileCount;
|
||||
|
||||
@ -96,6 +175,10 @@ namespace Logic.Editor
|
||||
{
|
||||
_unitLimit ??= new UnitStatisticLimit();
|
||||
_unitResult ??= new UnitStatisticResult();
|
||||
_techLimit ??= new TechStatisticLimit();
|
||||
_techResult ??= new TechStatisticResult();
|
||||
_empireLimit ??= new EmpireStatisticLimit();
|
||||
_empireResult ??= new EmpireStatisticResult();
|
||||
|
||||
if (_redBoxStyle == null)
|
||||
{
|
||||
@ -117,6 +200,8 @@ namespace Logic.Editor
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
if (_statisticType == OssStatisticType.Unit) OnUnitStatisticGUI();
|
||||
else if (_statisticType == OssStatisticType.Tech) OnTechStatisticGUI();
|
||||
else if (_statisticType == OssStatisticType.Empire) OnEmpireStatisticGUI();
|
||||
|
||||
EditorGUILayout.EndScrollView();
|
||||
}
|
||||
@ -171,22 +256,106 @@ namespace Logic.Editor
|
||||
|
||||
|
||||
EditorGUILayout.BeginVertical(_redBoxStyle);
|
||||
if (_unitResult != null && _unitResult.AppearCount > 0)
|
||||
if (_unitResult != null)
|
||||
{
|
||||
EditorGUILayout.BeginVertical(_redBoxStyle);
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>===== 统计结果 =====</b>");
|
||||
InspectorUtils.InspectorTextWidthRich(
|
||||
$"<b>扫描文件数:</b> {_totalFileCount} <b>有效文件数:</b> {_validFileCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>出战次数:</b> {_unitResult.AppearCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>最早出战回合:</b> Turn {_unitResult.EarliestAppearTurn}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>击杀次数:</b> {_unitResult.KillCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>死亡次数:</b> {_unitResult.DeathCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>总造成伤害:</b> {_unitResult.TotalDamageDealt}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>总承受伤害:</b> {_unitResult.TotalDamageTaken}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>平均造成伤害:</b> {_unitResult.AverageDamageDealt:F2}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>平均承受伤害:</b> {_unitResult.AverageDamageTaken:F2}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>转化来源次数:</b> {_unitResult.TransformFromCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>转化目标次数:</b> {_unitResult.TransformToCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>有效局数:</b> {_unitResult.MatchCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>单局出战次数:</b> {_unitResult.AppearCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>单局最早出战回合:</b> Turn {_unitResult.EarliestAppearTurn}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>单局击杀次数:</b> {_unitResult.KillCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>单局死亡次数:</b> {_unitResult.DeathCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>单局总造成伤害:</b> {_unitResult.TotalDamageDealt}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>单局总承受伤害:</b> {_unitResult.TotalDamageTaken}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>单局每个单位造成伤害:</b> {_unitResult.AverageDamageDealt}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>单局每个单位承受伤害:</b> {_unitResult.AverageDamageTaken}");
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
private void OnTechStatisticGUI()
|
||||
{
|
||||
EditorGUILayout.BeginVertical(_whiteBoxStyle);
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
InspectorUtils.InspectorTextWidthRich($"<b> 限制 Empire : </b> ");
|
||||
_techLimit.LimitEmpire = EditorGUILayout.Toggle(_techLimit.LimitEmpire, GUILayout.Width(20));
|
||||
if (_techLimit.LimitEmpire)
|
||||
{
|
||||
_techLimit.Empire.Civ = (CivEnum)EditorGUILayout.EnumPopup(_techLimit.Empire.Civ, GUILayout.Width(150));
|
||||
_techLimit.Empire.Force = (ForceEnum)EditorGUILayout.EnumPopup(_techLimit.Empire.Force, GUILayout.Width(150));
|
||||
}
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
InspectorUtils.InspectorTextWidthRich($"<b> 限制 Tech : </b> ");
|
||||
_techLimit.LimitEmpire = EditorGUILayout.Toggle(_techLimit.LimitEmpire, GUILayout.Width(20));
|
||||
if (_techLimit.LimitEmpire) _techLimit.TechType = (TechType) EditorGUILayout.EnumPopup(_techLimit.TechType, GUILayout.Width(150));
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
if (InspectorUtils.InspectorButtonWithTextWidth($"计算!!!"))
|
||||
{
|
||||
CalculateTechStatistic();
|
||||
}
|
||||
EditorGUILayout.EndVertical();
|
||||
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
|
||||
EditorGUILayout.BeginVertical(_redBoxStyle);
|
||||
if (_techResult != null)
|
||||
{
|
||||
EditorGUILayout.BeginVertical(_redBoxStyle);
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>===== 统计结果 =====</b>");
|
||||
InspectorUtils.InspectorTextWidthRich(
|
||||
$"<b>扫描文件数:</b> {_totalFileCount} <b>有效文件数:</b> {_validFileCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>有效局数:</b> {_techResult.LearnMatchCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>平均学习次数(所有局):</b> {_techResult.LearnCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>单局平均首次学习时间(只统计学习局):</b> Turn {_techResult.LearnTurn}");
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
|
||||
private void OnEmpireStatisticGUI()
|
||||
{
|
||||
EditorGUILayout.BeginVertical(_whiteBoxStyle);
|
||||
EditorGUILayout.BeginHorizontal();
|
||||
InspectorUtils.InspectorTextWidthRich($"<b> 限制 Empire : </b> ");
|
||||
_empireLimit.LimitEmpire = EditorGUILayout.Toggle(_empireLimit.LimitEmpire, GUILayout.Width(20));
|
||||
if (_empireLimit.LimitEmpire)
|
||||
{
|
||||
_empireLimit.Empire.Civ = (CivEnum)EditorGUILayout.EnumPopup(_empireLimit.Empire.Civ, GUILayout.Width(150));
|
||||
_empireLimit.Empire.Force = (ForceEnum)EditorGUILayout.EnumPopup(_empireLimit.Empire.Force, GUILayout.Width(150));
|
||||
}
|
||||
EditorGUILayout.EndHorizontal();
|
||||
|
||||
if (InspectorUtils.InspectorButtonWithTextWidth($"计算!!!"))
|
||||
{
|
||||
CalculateEmpireStatistic();
|
||||
}
|
||||
EditorGUILayout.EndVertical();
|
||||
|
||||
|
||||
EditorGUILayout.Space();
|
||||
|
||||
|
||||
EditorGUILayout.BeginVertical(_redBoxStyle);
|
||||
if (_empireResult != null)
|
||||
{
|
||||
EditorGUILayout.BeginVertical(_redBoxStyle);
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>===== 统计结果 =====</b>");
|
||||
InspectorUtils.InspectorTextWidthRich(
|
||||
$"<b>扫描文件数:</b> {_totalFileCount} <b>有效文件数:</b> {_validFileCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>有效局数:</b> {_empireResult.MatchCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>单局回合金币(有效局):</b> {_empireResult.CoinPerTurn}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>单局回合科技点(有效局):</b> {_empireResult.TechPointPerTurn}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>单局城市数量(有效局):</b> {_empireResult.CityCount}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>单局最高城市等级(有效局):</b> {_empireResult.MaxCityLevel}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>单局城市等级(有效局):</b> {_empireResult.CityLevel}");
|
||||
InspectorUtils.InspectorTextWidthRich($"<b>单局科技数量(有效局):</b> {_empireResult.TechCount}");
|
||||
EditorGUILayout.EndVertical();
|
||||
}
|
||||
EditorGUILayout.EndVertical();
|
||||
@ -224,67 +393,182 @@ namespace Logic.Editor
|
||||
}
|
||||
}
|
||||
|
||||
// 计算平均值
|
||||
if (_unitResult.AppearCount > 0)
|
||||
_unitResult.AppearCount /= _unitResult.MatchCount;
|
||||
_unitResult.DeathCount /= _unitResult.MatchCount;
|
||||
_unitResult.KillCount /= _unitResult.MatchCount;
|
||||
_unitResult.TotalDamageDealt /= _unitResult.MatchCount;
|
||||
_unitResult.TotalDamageTaken /= _unitResult.MatchCount;
|
||||
_unitResult.AverageDamageDealt /= _unitResult.MatchCount;
|
||||
_unitResult.AverageDamageTaken /= _unitResult.MatchCount;
|
||||
_unitResult.EarliestAppearTurn /= _unitResult.MatchCount;
|
||||
|
||||
LogSystem.LogInfo($"统计完成: 共扫描 {_totalFileCount} 个文件,有效 {_validFileCount} 个");
|
||||
}
|
||||
|
||||
private void CalculateTechStatistic()
|
||||
{
|
||||
_techResult = new TechStatisticResult();
|
||||
_totalFileCount = 0;
|
||||
_validFileCount = 0;
|
||||
|
||||
if (string.IsNullOrEmpty(Path) || !Directory.Exists(Path))
|
||||
{
|
||||
_unitResult.AverageDamageDealt = (float)_unitResult.TotalDamageDealt / _unitResult.AppearCount;
|
||||
_unitResult.AverageDamageTaken = (float)_unitResult.TotalDamageTaken / _unitResult.AppearCount;
|
||||
LogSystem.LogError($"路径不存在: {Path}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (_unitResult.EarliestAppearTurn == uint.MaxValue)
|
||||
var files = Directory.GetFiles(Path, "*.dat", SearchOption.AllDirectories);
|
||||
_totalFileCount = files.Length;
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
_unitResult.EarliestAppearTurn = 0;
|
||||
try
|
||||
{
|
||||
var bytes = File.ReadAllBytes(file);
|
||||
var ossData = MemoryPackSerializer.Deserialize<OssData>(bytes);
|
||||
if (ossData?.CollectData == null) continue;
|
||||
|
||||
_validFileCount++;
|
||||
ProcessCollectData(ossData.CollectData, _techResult);
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
LogSystem.LogError($"反序列化失败: {file}\n{e.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
_techResult.LearnCount /= _techResult.LearnMatchCount;
|
||||
_techResult.LearnTurn /= _techResult.LearnMatchCount;
|
||||
|
||||
LogSystem.LogInfo($"统计完成: 共扫描 {_totalFileCount} 个文件,有效 {_validFileCount} 个");
|
||||
}
|
||||
|
||||
private void CalculateEmpireStatistic()
|
||||
{
|
||||
_empireResult = new EmpireStatisticResult();
|
||||
_totalFileCount = 0;
|
||||
_validFileCount = 0;
|
||||
|
||||
if (string.IsNullOrEmpty(Path) || !Directory.Exists(Path))
|
||||
{
|
||||
LogSystem.LogError($"路径不存在: {Path}");
|
||||
return;
|
||||
}
|
||||
|
||||
var files = Directory.GetFiles(Path, "*.dat", SearchOption.AllDirectories);
|
||||
_totalFileCount = files.Length;
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
try
|
||||
{
|
||||
var bytes = File.ReadAllBytes(file);
|
||||
var ossData = MemoryPackSerializer.Deserialize<OssData>(bytes);
|
||||
if (ossData?.CollectData == null) continue;
|
||||
|
||||
_validFileCount++;
|
||||
ProcessCollectData(ossData.CollectData, _empireResult);
|
||||
}
|
||||
catch (System.Exception e)
|
||||
{
|
||||
LogSystem.LogError($"反序列化失败: {file}\n{e.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
_empireResult.CoinPerTurn /= _empireResult.MatchCount;
|
||||
_empireResult.TechPointPerTurn /= _empireResult.MatchCount;
|
||||
_empireResult.CityCount /= _empireResult.MatchCount;
|
||||
_empireResult.MaxCityLevel /= _empireResult.MatchCount;
|
||||
_empireResult.CityLevel /= _empireResult.MatchCount;
|
||||
_empireResult.TechCount /= _empireResult.MatchCount;
|
||||
|
||||
LogSystem.LogInfo($"统计完成: 共扫描 {_totalFileCount} 个文件,有效 {_validFileCount} 个");
|
||||
}
|
||||
|
||||
private void ProcessCollectData(CollectData collectData, UnitStatisticResult result)
|
||||
{
|
||||
// 1. 出战次数 & 最早出战回合:从 AddUnits 统计
|
||||
if (collectData.AddUnits != null)
|
||||
var turn = -1;
|
||||
var appearCount = 0;
|
||||
foreach (var addUnit in collectData.AddUnits)
|
||||
{
|
||||
foreach (var addUnit in collectData.AddUnits)
|
||||
{
|
||||
if (!MatchUnitFullType(addUnit.UnitType)) continue;
|
||||
if (!MatchUnitFullType(addUnit.UnitType)) continue;
|
||||
|
||||
result.AppearCount++;
|
||||
if (addUnit.Turn < result.EarliestAppearTurn)
|
||||
{
|
||||
result.EarliestAppearTurn = addUnit.Turn;
|
||||
}
|
||||
}
|
||||
appearCount++;
|
||||
if (turn < 0 || addUnit.Turn < turn) turn = (int)addUnit.Turn;
|
||||
}
|
||||
|
||||
|
||||
if (appearCount == 0) return;
|
||||
result.MatchCount++;
|
||||
result.EarliestAppearTurn += turn;
|
||||
result.AppearCount += appearCount;
|
||||
|
||||
// 2. 伤害统计 & 击杀/死亡:从 Damages 统计
|
||||
if (collectData.Damages != null)
|
||||
foreach (var dmg in collectData.Damages)
|
||||
{
|
||||
foreach (var dmg in collectData.Damages)
|
||||
// 作为攻击方:造成伤害 & 击杀
|
||||
if (MatchUnitFullType(dmg.OriginUnitType))
|
||||
{
|
||||
// 作为攻击方:造成伤害 & 击杀
|
||||
if (MatchUnitFullType(dmg.OriginUnitType))
|
||||
{
|
||||
result.TotalDamageDealt += dmg.OriginDamage;
|
||||
if (dmg.IsKill) result.KillCount++;
|
||||
}
|
||||
result.TotalDamageDealt += dmg.OriginDamage;
|
||||
result.AverageDamageDealt += dmg.OriginDamage / (float)appearCount;
|
||||
if (dmg.IsKill) result.KillCount++;
|
||||
}
|
||||
|
||||
// 作为被攻击方:承受伤害 & 死亡
|
||||
if (MatchUnitFullType(dmg.TargetUnitType))
|
||||
{
|
||||
result.TotalDamageTaken += dmg.TargetDamage;
|
||||
if (dmg.IsKill) result.DeathCount++;
|
||||
}
|
||||
// 作为被攻击方:承受伤害 & 死亡
|
||||
if (MatchUnitFullType(dmg.TargetUnitType))
|
||||
{
|
||||
result.TotalDamageTaken += dmg.TargetDamage;
|
||||
result.AverageDamageTaken += dmg.TargetDamage / (float)appearCount;
|
||||
if (dmg.IsKill) result.DeathCount++;
|
||||
}
|
||||
}
|
||||
|
||||
// 3. 转化次数:从 TransformUnits 统计(作为转化来源)
|
||||
if (collectData.TransformUnits != null)
|
||||
}
|
||||
|
||||
private void ProcessCollectData(CollectData collectData, TechStatisticResult result)
|
||||
{
|
||||
var learnTurn = -1;
|
||||
foreach (var techCollectData in collectData.LearnTechs)
|
||||
{
|
||||
foreach (var transform in collectData.TransformUnits)
|
||||
{
|
||||
if (MatchUnitFullType(transform.OriginUnitType)) result.TransformFromCount++;
|
||||
if (MatchUnitFullType(transform.TargetUnitType)) result.TransformToCount++;
|
||||
}
|
||||
if (!MatchTech(techCollectData.Empire, techCollectData.TechType)) continue;
|
||||
|
||||
result.LearnCount++;
|
||||
if (learnTurn < 0 || learnTurn > techCollectData.Turn) learnTurn = (int)techCollectData.Turn;
|
||||
}
|
||||
|
||||
if (learnTurn > 0)
|
||||
{
|
||||
result.LearnTurn += learnTurn;
|
||||
result.LearnMatchCount++;
|
||||
}
|
||||
|
||||
LogSystem.LogInfo($"result.LearnCount {result.LearnCount} result.LearnMatchCount{result.LearnMatchCount}");
|
||||
}
|
||||
|
||||
private void ProcessCollectData(CollectData collectData, EmpireStatisticResult result)
|
||||
{
|
||||
var resultCache = new EmpireStatisticResult();
|
||||
foreach (var turnStartData in collectData.OnTurnStarts)
|
||||
{
|
||||
if (!MatchEmpire(turnStartData.Empire)) continue;
|
||||
|
||||
resultCache.CoinPerTurn += turnStartData.PlayerCoinPerTurn;
|
||||
resultCache.TechPointPerTurn += turnStartData.PlayerTechPointPerTurn;
|
||||
resultCache.CityCount += turnStartData.CityCount;
|
||||
resultCache.MaxCityLevel += turnStartData.MaxCityLevel;
|
||||
resultCache.CityLevel += turnStartData.AverageCityLevel;
|
||||
resultCache.TechCount += turnStartData.TechCount;
|
||||
resultCache.TurnCount++;
|
||||
}
|
||||
|
||||
if (resultCache.TurnCount > 0)
|
||||
{
|
||||
result.MatchCount++;
|
||||
result.CoinPerTurn += resultCache.CoinPerTurn / resultCache.TurnCount;
|
||||
result.TechPointPerTurn += resultCache.TechPointPerTurn / resultCache.TurnCount;
|
||||
result.CityCount += resultCache.CityCount / resultCache.TurnCount;
|
||||
result.MaxCityLevel += resultCache.MaxCityLevel / resultCache.TurnCount;
|
||||
result.CityLevel += resultCache.CityLevel / resultCache.TurnCount;
|
||||
result.TechCount += resultCache.TechCount / resultCache.TurnCount;
|
||||
}
|
||||
}
|
||||
|
||||
@ -298,5 +582,21 @@ namespace Logic.Editor
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool MatchTech(Empire empire, TechType techType)
|
||||
{
|
||||
if (_techLimit.LimitEmpire && empire != _techLimit.Empire)
|
||||
return false;
|
||||
if (_techLimit.LimitTechType && techType != _techLimit.TechType)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
private bool MatchEmpire(Empire empire)
|
||||
{
|
||||
if (_empireLimit.LimitEmpire && empire != _empireLimit.Empire)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -562,8 +562,6 @@ namespace Logic.Skill
|
||||
//如果是叠层且0层的时候会不会自动消失
|
||||
[MemoryPackInclude]
|
||||
protected bool _autoDisappear;
|
||||
[MemoryPackInclude]
|
||||
protected SkillPriority _skillPriority;
|
||||
|
||||
public virtual int Level => _level;
|
||||
public bool HasLevel => IsLevelSkill;
|
||||
@ -573,7 +571,6 @@ namespace Logic.Skill
|
||||
public bool ShowSkillLevel => IsLevelSkill && !NoShow;
|
||||
|
||||
public bool ShowSkill => !IsLevelSkill || ShowSkillLevel;
|
||||
public SkillPriority SkillPriority => _skillPriority;
|
||||
|
||||
|
||||
[MemoryPackConstructor]
|
||||
@ -589,7 +586,7 @@ namespace Logic.Skill
|
||||
|
||||
public void SetSkillPriority(SkillPriority priority)
|
||||
{
|
||||
_skillPriority = priority;
|
||||
|
||||
}
|
||||
|
||||
public virtual bool IsAllSkillBan()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user