TargetVisiblity GetTargetVisiblity(Unit Target) { TargetVisiblity result = new TargetVisiblity(); FieldData data = FieldDataAsset.I.GetFieldDataFromFieldType(Target.CurrentField.GetComponent <Field>().fieldType); FieldAttribute fieldAttribute = data.GetFieldAttributeFromMobilityType(Target.UnitStats.mobilityType); result.curSoftpointVis = Target.curSoftpoints + (Target.curSoftpoints * fieldAttribute.visibility * Convert.ToInt32(Target.isMoving)); result.curHardpointVis = Target.curHardpoints + (Target.curHardpoints * fieldAttribute.visibility * Convert.ToInt32(Target.isMoving)); result.Target = Target; return(result); }
TentativeDamage CalculateTentativeDamage(Unit Target, Unit Origin) { TentativeDamage result = new TentativeDamage(); result.Origin = Origin; result.Target = Target; FieldData targetData = FieldDataAsset.I.GetFieldDataFromFieldType(Target.CurrentField.GetComponent <Field>().fieldType); FieldAttribute targetFieldAttribute = targetData.GetFieldAttributeFromMobilityType(Target.UnitStats.mobilityType); float currentVisibleSP = GetTargetVisiblity(Target).curSoftpointVis *(targetFieldAttribute.cover * Convert.ToInt32(!Target.isMoving)); result.SP = Mathf.Ceil(Mathf.Min(currentVisibleSP, CalculateCurrentFirepower(Origin).curFirepowerSoft)); if (float.IsNaN(result.SP)) { result.SP = 0; } float currentVisibleHP = GetTargetVisiblity(Target).curHardpointVis *(targetFieldAttribute.cover * Convert.ToInt32(!Target.isMoving)); result.HP = Mathf.Ceil(Mathf.Min(currentVisibleHP, CalculateCurrentFirepower(Origin).curFirepowerHard)); if (float.IsNaN(result.HP)) { result.HP = 0; } return(result); }