コード例 #1
0
        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);
            }
        }
コード例 #2
0
 public static int GetScarecrowBaseRadius(this SObject Obj)
 {
     if (Obj.IsScarecrow())
     {
         return(Obj.ParentSheetIndex == 167 ? 17 : 9);
     }
     else
     {
         return(9);
     }
 }
コード例 #3
0
 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);
     }
 }