public override void MapComponentTick()
 {
     base.MapComponentTick();
     if (Strikes.Count > 0)
     {
         foreach (DeepStrike item in Strikes)
         {
             if (!item.StrikeNow)
             {
                 item.delay--;
             }
             else
             {
                 DoStrike(item);
                 strikeLastTick = Find.TickManager.TicksGame;
             }
         }
         Strikes.RemoveAll(x => x.struck);
     }
     else
     {
         raidLastTick   = -1;
         ticksSinceRaid = -1;
         strikeDelay    = -1;
     }
 }
 public LightningStrikes_Basic(IEnumerable <BaseStrikeChina> _lightningStrikes_China, IStrikesDistributionStatisticService _iStrikesDistributionStatisticService)
 {
     IStrikesDistributionStatisticService = _iStrikesDistributionStatisticService;
     foreach (var tmpStrike in _lightningStrikes_China)
     {
         Strikes.Add(tmpStrike);
     }
 }
Exemplo n.º 3
0
        public DataContext()
        {
            if (Assets == null)
            {
                Assets = new List <Asset>();
            }
            if (Strikes == null)
            {
                Strikes = new List <Strike>();
            }

            // This will get the base path of the application.
            _path = Path
                    .GetDirectoryName(Assembly.GetExecutingAssembly().Location)
                    .Replace("\\bin\\Debug\\netcoreapp3.1", string.Empty);

            // This will read the asset data.
            var assetData = File.ReadAllText($"{_path}/Data/Seed/assets.json");
            // This will deserialize the json data.
            dynamic assets = JsonConvert.DeserializeObject(assetData);

            // This will map the deserialized json data to a collection of Asset objects.
            foreach (var item in assets)
            {
                Assets.Add(new Asset
                {
                    AssetName  = item["assetName"].ToString(),
                    QuadKey    = item["quadKey"].ToString(),
                    AssetOwner = item["assetOwner"].ToString()
                });
            }

            // This will read the lightning data.
            var strikeData = File.ReadAllText($"{_path}/Data/Seed/lightning.json");
            // This will deserialize the json data.
            dynamic strikes = JsonConvert.DeserializeObject(strikeData);

            // This will map the deserialized json data to a collection of Strike objects.
            foreach (var item in strikes)
            {
                Strikes.Add(new Strike
                {
                    FlashType       = (FlashType)item["flashType"],
                    StrikeTime      = Convert.ToInt64(item["strikeTime"]),
                    Latitude        = Convert.ToDouble(item["latitude"]),
                    Longitude       = Convert.ToDouble(item["longitude"]),
                    PeakAmps        = Convert.ToInt32(item["peakAmps"]),
                    Reserved        = item["reserved"].ToString(),
                    ICHeight        = Convert.ToInt32(item["icHeight"]),
                    ReceivedTime    = Convert.ToInt64(item["receivedTime"]),
                    NumberOfSensors = Convert.ToInt32(item["numberOfSensors"]),
                    Multiplicity    = Convert.ToInt32(item["multiplicity"])
                });
            }
        }
Exemplo n.º 4
0
        internal string begin(List <string> ShipCoords)
        {
            string IsStrike = Choose();

            if (ShipCoords.Any(item => item.Contains(IsStrike)))
            {
                if (!Strikes.Any(item => item.Contains(IsStrike)))
                {
                    Strikes.Add(IsStrike);
                    ShipCoords.Remove(IsStrike);
                    return(IsStrike);
                }
            }

            return(string.Empty);
        }
        /// <summary>
        /// 统计本类目下所有相关属性,耗时操作
        /// </summary>
        public override void CalcuDistribution(string _areaName)
        {
            if (Strikes.Any() & IStrikesDistributionStatisticService != null)
            {
                //年分布
                YearDistribution         = IStrikesDistributionStatisticService.CalcuYearDistribution(Strikes);
                YearDistributionPositive = IStrikesDistributionStatisticService.CalcuYearDistributionPositive(Strikes);
                YearDistributionNegative = IStrikesDistributionStatisticService.CalcuYearDistributionNegative(Strikes);
                YearDistributionDesc     = IStrikesDistributionStatisticService.GenerateYearDistributionText(Strikes);
                //月分布
                MonthDistribution         = IStrikesDistributionStatisticService.CalcuMonthDistribution(Strikes);
                MonthDistributionPositive = IStrikesDistributionStatisticService.CalcuMonthDistributionPosive(Strikes);
                MonthDistributionNegative = IStrikesDistributionStatisticService.CalcuMonthDistributionNegative(Strikes);
                MonthDistributionDesc     = IStrikesDistributionStatisticService.GenerateMonthDistributionText(Strikes);
                //时分布
                HourDistribution         = IStrikesDistributionStatisticService.CalcuHourDistribution(Strikes);
                HourDistributionPositive = IStrikesDistributionStatisticService.CalcuHourDistribution_Positive(Strikes);
                HourDistributionNegative = IStrikesDistributionStatisticService.CalcuHourDistribution_Negative(Strikes);
                HourDistributionDesc     = IStrikesDistributionStatisticService.GenerateHourDistributionText(Strikes);
                //统计各类总数
                SumStrikesNum        = IStrikesDistributionStatisticService.CalcuSumNum(Strikes);
                SumNumPositive       = IStrikesDistributionStatisticService.CalcuPositiveSumNum(Strikes);
                SumNumNegative       = IStrikesDistributionStatisticService.CalcuNegativeSumNum(Strikes);
                MinNegativeIntensity = IStrikesDistributionStatisticService.CalcuMinNegativeIntensity(Strikes);
                MaxNegativeIntensity = IStrikesDistributionStatisticService.CalcuMaxNegativeIntensity(Strikes);
                MinPositiveIntensity = IStrikesDistributionStatisticService.CalcuMinPositiveIntensity(Strikes);
                MaxPositiveIntensity = IStrikesDistributionStatisticService.CalcuMaxPositiveIntensity(Strikes);

                // 雷电流强度
                IntensityAvg         = IStrikesDistributionStatisticService.CalcuAbsAvgIntensity(Strikes);
                IntensityPositiveAvg = IStrikesDistributionStatisticService.CalcuPositiveAvgIntensity(Strikes);
                IntensityNegativeAvg = IStrikesDistributionStatisticService.CalcuNegativeAvgIntensity(Strikes);

                //yearList
                YearList = IStrikesDistributionStatisticService.CalcuYearList(Strikes);
                //雷电流累计概率分布
                ProbabilityDistribution    = IStrikesDistributionStatisticService.CalcuProbabilityDistribution(Strikes);
                ProbabilityDistributioDisc = IStrikesDistributionStatisticService.GenerateProbabilityDistributionText(Strikes);
                //雷电日
                LightningStrikeDays = IStrikesDistributionStatisticService.GetLightningStrikesDays(Strikes, _areaName);
            }
        }
        /// <summary>
        /// 统计本类目下所有相关属性,耗时操作
        /// </summary>
        public override void CalcuDistribution(string _areaName)
        {
            if (Strikes.Any() & IStrikesDistributionStatisticService != null)
            {
                //年分布
                YearDistribution     = IStrikesDistributionStatisticService.CalcuYearDistribution(Strikes);
                YearDistributionDesc = IStrikesDistributionStatisticService.GenerateYearDistributionText(Strikes);

                //月分布
                MonthDistribution     = IStrikesDistributionStatisticService.CalcuMonthDistribution(Strikes);
                MonthDistributionDesc = IStrikesDistributionStatisticService.GenerateMonthDistributionText(Strikes);
                //时分布
                HourDistribution     = IStrikesDistributionStatisticService.CalcuHourDistribution(Strikes);
                HourDistributionDesc = IStrikesDistributionStatisticService.GenerateHourDistributionText(Strikes);
                //统计各类总数
                SumStrikesNum = IStrikesDistributionStatisticService.CalcuSumNum(Strikes);
                //yearList
                YearList = IStrikesDistributionStatisticService.CalcuYearList(Strikes);
                //雷电日
                LightningStrikeDays = IStrikesDistributionStatisticService.GetLightningStrikesDays(Strikes, _areaName);
            }
        }
Exemplo n.º 7
0
        //public List<decimal> GetStrikesAroundPrice(decimal price, FutureCode contract, DateTime valueDate)
        //{
        //    if (StrikeRule == OptionStrikeRuleKind.AboveBelowAbsolute)
        //        return GetStrikesAroundPrice_AboveBelow(price);
        //    else if (StrikeRule == OptionStrikeRuleKind.CBOT)
        //    {
        //        var nMonthsOut = 1;
        //        string MC = contract.OriginalCode;
        //        if (FuturesFunctions.GetFutureExpiry(MC) >= valueDate)
        //        {
        //            string MC0 = FuturesFunctions.GetFrontMonthCode(contract.Prefix, valueDate, false, true);
        //            while (MC0 != MC)
        //            {
        //                MC = FuturesFunctions.GetPreviousCode(MC);
        //                nMonthsOut++;
        //            }
        //        }
        //        return GetStrikesAroundPrice_CBOT(price, nMonthsOut);
        //    }
        //    else
        //        throw new NotImplementedException();
        //}

        private List <decimal> GetStrikesAroundPrice_AboveBelow(decimal price)
        {
            var returnValues = new List <decimal>();
            var atmPrice     = RoundToStrike(price);

            returnValues.Add(atmPrice);

            var upperPrice = atmPrice;
            var lowerPrice = atmPrice;

            foreach (var kv in Strikes.OrderBy(x => x.Value))
            {
                for (var i = 0; i < kv.Key; i++)
                {
                    upperPrice += (decimal)kv.Value;
                    lowerPrice -= (decimal)kv.Value;
                    returnValues.Add(upperPrice);
                    returnValues.Add(lowerPrice);
                }
            }
            return(returnValues);
        }
Exemplo n.º 8
0
        public double Dvdk(double strike, DateTime expiry, double fwd)
        {
            if (StrikeType == StrikeType.ForwardDelta)
            {
                var t = TimeBasis.CalculateYearFraction(OriginDate, expiry);

                var pillarIx          = Array.BinarySearch(Expiries, expiry);
                var interpForMaturity = pillarIx > 0 ?
                                        _interpolators[pillarIx] :
                                        InterpolatorFactory.GetInterpolator(Strikes, Strikes.Select(k => GetVolForDeltaStrike(k, expiry, fwd)).ToArray(), StrikeInterpolatorType);

                var deltaK = GetDeltaStrikeForAbs(fwd, strike, t);
                var vol    = GetVolForAbsoluteStrike(strike, expiry, fwd);
                var gamma  = BlackFunctions.BlackGamma(fwd, strike, 0.0, t, vol);
                return(interpForMaturity.FirstDerivative(deltaK) * gamma);
            }
            else
            {
                var interpForMaturity = InterpolatorFactory.GetInterpolator(Strikes,
                                                                            Strikes.Select(k => GetVolForAbsoluteStrike(k, expiry, fwd)).ToArray(),
                                                                            StrikeInterpolatorType);
                return(interpForMaturity.FirstDerivative(strike));
            }
        }
 /// <summary>
 /// readonly index
 /// </summary>
 /// <param name="index"></param>
 /// <returns></returns>
 public BaseStrikeBasic this[int index]
 {
     get { return(Strikes.ElementAt(index)); }
 }
Exemplo n.º 10
0
        private List <Strikes> GenerateStrikes(List <string> textX)
        {
            textX.RemoveAt(textX.Count() - 1);
            List <Strikes> list    = new List <Strikes>();
            Strikes        objItem = null;

            foreach (var item in textX)
            {
                string[]      item2 = item.Split(new[] { "<td" }, StringSplitOptions.None);
                List <string> textY = item2.ToList();
                textY.RemoveAt(0);
                textY.RemoveAt(textY.Count - 1);
                objItem = new Strikes();
                for (int i = 0; i <= textY.Count - 1; i++)
                {
                    objItem.Time = DateTime.Now.ToString();
                    if (i == 0)
                    {
                        objItem.Cal_OI = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 1)
                    {
                        objItem.Cal_ChnginOI = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 2)
                    {
                        objItem.Cal_Volume = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 3)
                    {
                        objItem.Cal_IV = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 4)
                    {
                        objItem.Cal_LTP = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 5)
                    {
                        objItem.Cal_NetChng = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 6)
                    {
                        objItem.Cal_BidQty = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 7)
                    {
                        objItem.Cal_BidPrice = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 8)
                    {
                        objItem.Cal_AskPrice = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 9)
                    {
                        objItem.Cal_AskQty = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }


                    else if (i == 10)
                    {
                        objItem.StrikePrice = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[3].Split('<'))[0];
                    }

                    else if (i == 11)
                    {
                        objItem.Put_BidQty = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 12)
                    {
                        objItem.Put_BidPrice = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 13)
                    {
                        objItem.Put_AskPrice = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 14)
                    {
                        objItem.Put_AskQty = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 15)
                    {
                        objItem.Put_NetChng = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 16)
                    {
                        objItem.Put_LTP = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 17)
                    {
                        objItem.Put_IV = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 18)
                    {
                        objItem.Put_Volume = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 19)
                    {
                        objItem.Put_ChnginOI = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                    else if (i == 20)
                    {
                        objItem.Put_OI = ((textY[i].Split('>'))[1].Trim().Split('<'))[0] != string.Empty ? ((textY[i].Split('>'))[1].Split('<'))[0] : ((textY[i].Split('>'))[2].Split('<'))[0];
                    }
                }
                list.Add(objItem);
            }

            return(list);
        }
Exemplo n.º 11
0
        public HomeModule()
            : base()
        {
            Get["/"] = _ => { return("Hello world!"); };
            Get["/Commands/{group}"] = parameters =>
            {
                var commands  = new List <Command>();
                var chatTitle = "";
                switch ((string)parameters.group)
                {
                case "war":
                    commands  = GroupCommands.WarChatCommands.Commands;
                    chatTitle = "War";
                    break;

                case "leadership":
                    commands  = GroupCommands.LeadershipChatCommands.Commands;
                    chatTitle = "Leadership";
                    break;

                case "general":
                    commands  = GroupCommands.GeneralChatCommands.Commands;
                    chatTitle = "General";
                    break;

                case "wheninrome":
                    commands  = GroupCommands.WhenInRomeChatCommands.Commands;
                    chatTitle = "When In Rome";
                    break;

                case "recon":
                    commands  = GroupCommands.ReconChatCommands.Commands;
                    chatTitle = "Recon";
                    break;

                case "test":
                    commands  = GroupCommands.TestChatCommands.Commands;
                    chatTitle = "Test";
                    break;
                }

                var publicCommands  = commands.Where(c => c.Type == Command.CommandType.Public && !string.IsNullOrEmpty(c.Name)).OrderBy(c => c.Name).ToList();
                var modOnlyCommands = commands.Where(c => c.Type == Command.CommandType.ModsOnly && !string.IsNullOrEmpty(c.Name)).OrderBy(c => c.Name).ToList();

                var model = new
                {
                    ChatTitle       = chatTitle,
                    PublicCommands  = publicCommands,
                    ModOnlyCommands = modOnlyCommands
                };

                return(View["commands.html", model]);
            };
            Get["/Strikes"] = parameters =>
            {
                var strikes = Strikes.GetStrikes()
                              .Where(s => s.StrickenAt.ToString("MM/yyyy") == DateTime.UtcNow.ToString("MM/yyyy"))
                              .Select(s => new {
                    Member     = s.Member.Name,
                    Reason     = s.Reason,
                    StrickenBy = s.StrickenBy.Name,
                    StrickenAt = DateHelper.GetPrettyTimeSpan(DateTime.UtcNow.Subtract(s.StrickenAt))
                }).ToList();

                var model = new
                {
                    Month   = DateTime.UtcNow.ToString("MMMM, yyyy"),
                    Strikes = strikes
                };

                return(View["strikes.html", model]);
            };
            Get["/Members"] = parameters =>
            {
                var members = Members.GetMembers()
                              .Select(m => new
                {
                    Name        = m.Name,
                    VillageCode = m.VillageCode,
                    IsBanned    = m.Banned ? "Yes" : "No"
                }).ToList();

                return(View["members.html", members]);
            };
            Post["/Incoming/{group}"] = parameters =>
            {
                var message = this.Bind <ReceivedMessage>();
                var group   = (string)parameters.group;
                var botName = ConfigurationManager.AppSettings["BOT_NAME"];

                if (message.name != botName)
                {
                    switch (group)
                    {
                    case "general":
                    {
                        GroupCommands.GeneralChatCommands.CheckMessage(message);
                        break;
                    }

                    case "test":
                    {
                        GroupCommands.TestChatCommands.CheckMessage(message);
                        break;
                    }

                    case "leadership":
                    {
                        GroupCommands.LeadershipChatCommands.CheckMessage(message);
                        break;
                    }

                    case "war":
                    {
                        GroupCommands.WarChatCommands.CheckMessage(message);
                        break;
                    }

                    case "wheninrome":
                    {
                        GroupCommands.WhenInRomeChatCommands.CheckMessage(message);
                        break;
                    }

                    case "recon":
                    {
                        GroupCommands.ReconChatCommands.CheckMessage(message);
                        break;
                    }
                    }
                }

                return(HttpStatusCode.OK);
            };
        }