public static int GetScarecrowRadius(this SObject Obj) { int BaseRadius = GetScarecrowBaseRadius(Obj); if (Obj.IsScarecrow()) { if (Obj.IsCombinedMachine()) { double RadiusMultiplier = Obj.GetScarecrowRadiusMultiplier(); double Result = BaseRadius * RadiusMultiplier; #if NEVER //DEBUG ModEntry.Logger.Log(string.Format("{0}: Base={1}, Computed={2}", nameof(GetScarecrowRadius), BaseRadius, Result), ModEntry.InfoLogLevel); #endif return((int)Math.Round(Result, MidpointRounding.AwayFromZero)); } else { return(BaseRadius); } } else { return(BaseRadius); } }
public static int GetScarecrowBaseRadius(this SObject Obj) { if (Obj.IsScarecrow()) { return(Obj.ParentSheetIndex == 167 ? 17 : 9); } else { return(9); } }
public static double GetScarecrowRadiusMultiplier(this SObject Obj) { if (Obj.IsScarecrow() && Obj.IsCombinedMachine()) { double TilesMultiplier = Obj.GetProcessingPower(); double RadiusMultiplier = Math.Sqrt(TilesMultiplier); return(RadiusMultiplier); } else { return(1.0); } }