Beispiel #1
0
        public static bool BuyNextAttempt()
        {
            ResearchEra noAge = ListClass.Eras.Find(re => re.era == "NoAge");

            if (GEXOverview.state.Equals("inactive") || GetCurrentState == -1 || ListClass.GoodsDict[noAge.name].Find(g => g.good_id == "guild_expedition_attempt").value >= 8)
            {
                return(false);
            }
            string        script      = ReqBuilder.GetRequestScript(RequestType.getContexts, "guildExpedition");
            var           ret         = (string)StaticData.jsExecutor.ExecuteAsyncScript(script);
            GetBuyContext buyContext  = JsonConvert.DeserializeObject <GetBuyContext>(ret);
            Data          d           = buyContext.responseData[0];
            int           currentCost = 0;

            if (d.context == "guildExpedition")
            {
                currentCost = d.offers[0].costs.resources.medals;
            }
            if (CanBuyNextAttempt((int)ListClass.Resources["responseData"].First?.First?["medals"]?.ToObject(typeof(int)), currentCost))
            {
                script = ReqBuilder.GetRequestScript(RequestType.buyOffer, "guild_expedition_attempt1medals0");
                ret    = (string)StaticData.jsExecutor.ExecuteAsyncScript(script);
                if (ret.Contains("ResourceShopService"))
                {
                    return(true);
                }
            }
            return(false);
        }
 public ResearchNode(Research research, ResearchEra reserachEra, bool completed)
 {
     this.research    = research;
     this.reserachEra = reserachEra;
     this.completed   = completed;
 }
Beispiel #3
0
        public void UpdateStartUp()
        {
            string script = ReqBuilder.GetRequestScript(RequestType.Startup, "");
            string ret    = (string)StaticData.jsExecutor.ExecuteAsyncScript(script);

            string[] responses = ret.Split(new[] { "##@##" }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string res in responses)
            {
                var     methode = res.Substring(0, res.IndexOf("{"));
                var     body    = res.Substring(res.IndexOf("{"));
                dynamic ress    = null;
                switch (methode)
                {
                case "getSittingPlayersCount":
                    ListClass.OwnTavern = JsonConvert.DeserializeObject <OwnTavernStates>(body);
                    break;

                case "getOtherTavernStates":
                    FriendsTavernRoot rootTavern = JsonConvert.DeserializeObject <FriendsTavernRoot>(body);
                    ListClass.FriendTaverns = rootTavern.responseData.ToList();
                    break;

                case "getOverview":
                    HiddenRewardRoot rootHiddenReward = JsonConvert.DeserializeObject <HiddenRewardRoot>(body);
                    foreach (HiddenReward item in rootHiddenReward.responseData.hiddenRewards)
                    {
                        DateTime endTime   = Helper.UnixTimeStampToDateTime(item.expireTime);
                        DateTime startTime = Helper.UnixTimeStampToDateTime(item.startTime);
                        bool     vis       = (endTime > DateTime.Now) && (startTime < DateTime.Now);
                        item.isVisible = vis;
                    }
                    ListClass.HiddenRewards = rootHiddenReward.responseData.hiddenRewards.ToList();
                    break;

                case "getResourceDefinitions":
                    ress = JsonConvert.DeserializeObject(body);
                    ListClass.ResourceDefinitions = ress;
                    UpdatedSortedGoodList();
                    break;

                case "getPlayerResources":
                    ress = JsonConvert.DeserializeObject(body);
                    ListClass.Resources = ress;
                    UpdatedSortedGoodList();
                    break;

                case "getMetadata":
                    MetadataRoot rootMetadata = JsonConvert.DeserializeObject <MetadataRoot>(body);
                    ListClass.MetaDataList = rootMetadata.responseData.ToList();
                    if (StaticData.jsExecutor == null)
                    {
                        break;
                    }
                    if (ListClass.AllBuildings.Count <= 0)
                    {
                        string url = ListClass.MetaDataList.Find((m) => { return(m.identifier == "city_entities"); }).url;
                        script = ReqBuilder.GetMetaDataRequestScript(url);
                        string        cityMeta     = (string)StaticData.jsExecutor.ExecuteAsyncScript(script);
                        BuildingsRoot rootBuilding = JsonConvert.DeserializeObject <BuildingsRoot>("{\"buildings\":" + cityMeta + "}");
                        ListClass.AllBuildings = rootBuilding.buildings.ToList();
                        if (ListClass.Startup.Count > 0)
                        {
                            UpdateBuildings(ListClass.Startup["responseData"]["city_map"]["entities"]);
                        }
                    }
                    if (ListClass.Eras.Count <= 0)
                    {
                        string url = ListClass.MetaDataList.Find((m) => { return(m.identifier == "research_eras"); }).url;
                        script = ReqBuilder.GetMetaDataRequestScript(url);
                        string          researchMeta = (string)StaticData.jsExecutor.ExecuteAsyncScript(script);
                        ResearchEraRoot rootResearch = JsonConvert.DeserializeObject <ResearchEraRoot>("{\"reserach\":" + researchMeta + "}");
                        ListClass.Eras = rootResearch.reserach.ToList();
                        ResearchEra noage = new ResearchEra();
                        noage.era       = "NoAge";
                        noage.name      = "---";
                        noage.__class__ = "ResearchEra";
                        ListClass.Eras.Insert(0, noage);
                        UpdatedSortedGoodList();
                    }
                    if (ListClass.UnitTypes.Count <= 0)
                    {
                        string url = ListClass.MetaDataList.Find((m) => { return(m.identifier == "unit_types"); }).url;
                        script = ReqBuilder.GetMetaDataRequestScript(url);
                        string        unit_types_Meta = (string)StaticData.jsExecutor.ExecuteAsyncScript(script);
                        UnitTypesRoot rootUnitType    = JsonConvert.DeserializeObject <UnitTypesRoot>("{\"unit_types\":" + unit_types_Meta + "}");
                        ListClass.UnitTypes = rootUnitType.unit_types.ToList();
                        UpdateSortedArmyList();
                    }
                    if (ListClass.MetaMap == null)
                    {
                        string url = ListClass.MetaDataList.Find(m => m.identifier == "guild_battleground_maps").url;
                        script = ReqBuilder.GetMetaDataRequestScript(url);
                        string     gbg_map_meta = (string)StaticData.jsExecutor.ExecuteAsyncScript(script);
                        GBGMapRoot map          = JsonConvert.DeserializeObject <GBGMapRoot>("{\"map\":" + gbg_map_meta + "}");
                        ListClass.MetaMap = map.map[0];
                    }
                    break;

                case "getUpdates":
                    QuestServiceRoot rootQuest = JsonConvert.DeserializeObject <QuestServiceRoot>(body);
                    ListClass.QuestList = rootQuest.responseData.ToList();
                    break;

                case "getData":
                    ress = JsonConvert.DeserializeObject(body);
                    ListClass.Startup  = ress;
                    ListClass.UserData = ress["responseData"]["user_data"];
                    UpdateBuildings(ListClass.Startup["responseData"]["city_map"]["entities"]);
                    break;

                case "getLimitedBonuses":
                    BonusServiceRoot rootBonusService = JsonConvert.DeserializeObject <BonusServiceRoot>(body);
                    ListClass.Bonus    = rootBonusService.responseData.ToList();
                    ListClass.ArcBonus = ListClass.Bonus.Sum(e => { if (e.type == "contribution_boost")
                                                                    {
                                                                        return(e.value);
                                                                    }
                                                                    else
                                                                    {
                                                                        return(0);
                                                                    } });
                    break;

                default:
                    break;
                }
            }
        }