private static void completeAbandonNewQuestCallbackStatic(CompleteAbandonNewQuest_ReturnType returnData)
 {
     if (returnData.Success)
     {
         if (returnData.goldGiven)
         {
             GameEngine.Instance.World.setGoldData(returnData.currentGoldLevel, returnData.currentGoldRate);
         }
         if (returnData.honourGiven)
         {
             GameEngine.Instance.World.setHonourData(returnData.currentHonourLevel, returnData.currentHonourRate);
         }
         if (returnData.fpGiven)
         {
             GameEngine.Instance.World.setFaithPointsData(returnData.currentFaithPointsLevel, returnData.currentFaithPointsRate);
         }
         if (returnData.premiumCardsGiven)
         {
             CardTypes.PremiumToken token = new CardTypes.PremiumToken {
                 Reward = 1,
                 UserPremiumTokenID = returnData.premiumCardID,
                 WorldID = RemoteServices.Instance.ProfileWorldID,
                 Type = 0x1011
             };
             GameEngine.Instance.World.ProfilePremiumTokens.Add(returnData.premiumCardID, token);
         }
         if (returnData.cardPacksGiven > 0)
         {
             int key = 1;
             if (GameEngine.Instance.World.ProfileUserCardPacks.ContainsKey(key))
             {
                 CardTypes.UserCardPack pack = GameEngine.Instance.World.ProfileUserCardPacks[key];
                 pack.Count += returnData.cardPacksGiven;
             }
             else
             {
                 CardTypes.UserCardPack pack2 = new CardTypes.UserCardPack {
                     PackID = key,
                     Count = returnData.cardPacksGiven
                 };
                 GameEngine.Instance.World.ProfileUserCardPacks[key] = pack2;
             }
         }
         if (returnData.gloryGiven)
         {
             GameEngine.Instance.World.clearGloryHistory();
         }
         if (returnData.villageUpdated >= 0)
         {
             GameEngine.Instance.flushVillage(returnData.villageUpdated);
         }
         if (returnData.ticketsGiven > 0)
         {
             GameEngine.Instance.World.addTickets(-1, returnData.ticketsGiven);
         }
     }
     else if (returnData.m_errorCode == ErrorCodes.ErrorCode.NEW_QUESTS_FAILED_REWARD)
     {
         MyMessageBox.Show(SK.Text("QUESTS_failed_reward_body", "We have been unable to give the correct reward for this quest, please wait a few minutes and try again. If this doesn't work, please contact support."), SK.Text("QUESTS_failed_reward", "Quest Reward Error"));
     }
     if (returnData.m_newQuestsData != null)
     {
         GameEngine.Instance.World.setNewQuestData(returnData.m_newQuestsData);
     }
 }
        public void CompleteQuestCallback(CompleteQuest_ReturnType returnData)
        {
            if (returnData.Success)
            {
                GameEngine.Instance.World.setTutorialInfo(returnData.m_tutorialInfo);
                this.completedActiveQuests = returnData.m_preCompletedQuests;
                if (GameEngine.Instance.GameDisplayMode == GameEngine.GameDisplays.DISPLAY_QUESTS)
                {
                    this.rebuild();
                }
                if (returnData.questCompleted >= 0)
                {
                    List <Quests.QuestReward> list = Quests.getQuestRewards(returnData.questCompleted, false, null);
                    foreach (Quests.QuestReward reward in list)
                    {
                        List <int>             list2;
                        CardTypes.PremiumToken token;
                        switch (reward.type)
                        {
                        case 0x4e20:
                        {
                            list2 = GameEngine.Instance.World.getUserVillageIDList();
                            if (list2.Count == 1)
                            {
                                break;
                            }
                            GameEngine.Instance.flushVillages();
                            if (GameEngine.Instance.GameDisplayMode == GameEngine.GameDisplays.DISPLAY_VILLAGE)
                            {
                                GameEngine.Instance.downloadCurrentVillage();
                            }
                            continue;
                        }

                        case 0x4e21:
                        {
                            GameEngine.Instance.World.addGold((double)reward.amount);
                            continue;
                        }

                        case 0x4e22:
                        {
                            GameEngine.Instance.World.addHonour((double)reward.amount);
                            continue;
                        }

                        case 0x4e23:
                        {
                            GameEngine.Instance.World.addResearchPoints(reward.amount);
                            continue;
                        }

                        case 0x4e24:
                        {
                            if (returnData.cardAdded >= 0)
                            {
                                if (reward.data == 0x1011)
                                {
                                    goto Label_01D0;
                                }
                                GameEngine.Instance.World.addProfileCard(returnData.cardAdded, CardTypes.getStringFromCard(reward.data));
                            }
                            continue;
                        }

                        case 0x4e25:
                        {
                            continue;
                        }

                        case 0x4e26:
                        {
                            WorldMap world = GameEngine.Instance.World;
                            world.FakeCardPoints += reward.amount;
                            continue;
                        }

                        default:
                        {
                            continue;
                        }
                        }
                        if (list2.Count == 1)
                        {
                            VillageMap map = GameEngine.Instance.getVillage(list2[0]);
                            if (map != null)
                            {
                                map.addResources(reward.data, reward.amount);
                            }
                        }
                        continue;
Label_01D0:
                        token                    = new CardTypes.PremiumToken();
                        token.Reward             = 1;
                        token.UserPremiumTokenID = returnData.cardAdded;
                        token.WorldID            = RemoteServices.Instance.ProfileWorldID;
                        token.Type               = 0x1011;
                        bool flag = false;
                        if (GameEngine.Instance.World.UserCardData.premiumCard <= 0)
                        {
                            XmlRpcCardsProvider provider = XmlRpcCardsProvider.CreateForEndpoint(URLs.ProfileProtocol, URLs.ProfileServerAddressCards, URLs.ProfileServerPort, URLs.ProfileCardPath);
                            XmlRpcCardsRequest  req      = new XmlRpcCardsRequest(RemoteServices.Instance.UserGuid.ToString().Replace("-", ""))
                            {
                                WorldID    = RemoteServices.Instance.ProfileWorldID.ToString(),
                                UserCardID = returnData.cardAdded.ToString()
                            };
                            if (token.Type == 0x1010)
                            {
                                req.CardString = "CARDTYPE_PREMIUM";
                            }
                            if (token.Type == 0x1011)
                            {
                                req.CardString = "CARDTYPE_PREMIUM2";
                            }
                            if (token.Type == 0x1012)
                            {
                                req.CardString = "CARDTYPE_PREMIUM30";
                            }
                            XmlRpcCardsResponse response = provider.playPremium(req, 0x1770);
                            if (response.SuccessCode != 1)
                            {
                                flag = true;
                                MyMessageBox.Show(response.Message, "Error playing premium");
                            }
                            else
                            {
                                GameEngine.Instance.World.CardPlayed(-1, token.Type, -1);
                            }
                        }
                        else
                        {
                            flag = true;
                        }
                        if (flag)
                        {
                            GameEngine.Instance.World.ProfilePremiumTokens.Add(returnData.cardAdded, token);
                        }
                    }
                    bool flag2 = false;
                    foreach (Quests.QuestReward reward2 in list)
                    {
                        if ((reward2.type == 0x4e24) || (reward2.type == 0x4e26))
                        {
                            flag2 = true;
                        }
                    }
                    if (flag2)
                    {
                        PlayCardsWindow.resetRewardCardTimer();
                    }
                }
            }
            this.inCompleteQuest = false;
        }
        private void ClickedToken()
        {
            if (!this.inSend)
            {
                int data = base.ClickedControl.Data;
                int type = GameEngine.Instance.World.ProfilePremiumTokens[data].Type;
                DateTime time = VillageMap.getCurrentServerTime();
                if (this.premiumInPlay)
                {
                    this.currentExpirySeconds = GameEngine.Instance.World.UserCardData.premiumCardExpiry.Subtract(VillageMap.getCurrentServerTime()).TotalSeconds;
                    time = time.AddSeconds(this.currentExpirySeconds);
                    if ((GameEngine.Instance.World.ProfilePremiumTokens[data].Type == 0x1011) && (GameEngine.Instance.World.UserCardData.premiumCard == 0x1011))
                    {
                        MyMessageBox.Show(SK.Text("PremiumCardsPanel_Already_In_Play_2_2", "You cannot extend a 2 day Premium Token using another 2 day Premium Token."), SK.Text("GENERIC_Error", "Error"));
                        return;
                    }
                    if (MyMessageBox.Show(SK.Text("PremiumCardsPanel_ExtendToken", "You currently have a Premium Token in play, do you wish to extend this by playing another Token?"), SK.Text("PremiumCardsPanel_ExtendWarning", "Extend Premium Token"), MessageBoxButtons.YesNo) != DialogResult.Yes)
                    {
                        return;
                    }
                    type = 0x1014;
                }
                else
                {
                    string str = "";
                    switch (GameEngine.Instance.World.ProfilePremiumTokens[data].Type)
                    {
                        case 0x1010:
                            str = SK.Text("PremiumCardsPanel_7day", "7 Day Premium Token");
                            break;

                        case 0x1011:
                            str = SK.Text("TOOLTIPS_QUEST_REWARD_PREMIUM_CARD", "2 Day Premium Token");
                            break;

                        case 0x1012:
                            str = SK.Text("PremiumCardsPanel_30day", "30 Day Premium Token");
                            break;
                    }
                    if (MyMessageBox.Show(str + Environment.NewLine + Environment.NewLine + SK.Text("PremiumCardsPanel_PlayToken", "You are about to play this Premium Token. This Premium Token will only affect the current game world.") + Environment.NewLine + Environment.NewLine + SK.Text("PremiumCardsPanel_PlayToken2", "Are you sure you wish to play this Token?"), SK.Text("PremiumCardsPanel_PlayToken_Header", "Play Premium Token"), MessageBoxButtons.YesNo) != DialogResult.Yes)
                    {
                        return;
                    }
                }
                this.lastToken = GameEngine.Instance.World.ProfilePremiumTokens[data];
                XmlRpcCardsProvider provider = XmlRpcCardsProvider.CreateForEndpoint(URLs.ProfileProtocol, URLs.ProfileServerAddressCards, URLs.ProfileServerPort, URLs.ProfileCardPath);
                XmlRpcCardsRequest req = new XmlRpcCardsRequest(RemoteServices.Instance.UserGuid.ToString().Replace("-", "")) {
                    WorldID = RemoteServices.Instance.ProfileWorldID.ToString(),
                    UserCardID = data.ToString()
                };
                if (this.lastToken.Type == 0x1010)
                {
                    req.CardString = "CARDTYPE_PREMIUM";
                }
                if (this.lastToken.Type == 0x1011)
                {
                    req.CardString = "CARDTYPE_PREMIUM2";
                }
                if (this.lastToken.Type == 0x1012)
                {
                    req.CardString = "CARDTYPE_PREMIUM30";
                }
                if (InterfaceMgr.Instance.getCardWindow() != null)
                {
                    CursorManager.SetCursor(CursorManager.CursorType.WaitCursor, InterfaceMgr.Instance.getCardWindow());
                }
                this.inSend = true;
                provider.playPremium(req, new CardsEndResponseDelegate(this.PlayedToken), this);
                this.premiumInPlay = true;
                this.currentExpirySeconds = 604800.0;
                if (GameEngine.Instance.World.ProfilePremiumTokens[data].Type == 0x1010)
                {
                    GameEngine.Instance.World.UserCardData.premiumCardExpiry = time.AddDays(7.0);
                }
                if (GameEngine.Instance.World.ProfilePremiumTokens[data].Type == 0x1012)
                {
                    GameEngine.Instance.World.UserCardData.premiumCardExpiry = time.AddDays(30.0);
                }
                if (GameEngine.Instance.World.ProfilePremiumTokens[data].Type == 0x1011)
                {
                    GameEngine.Instance.World.UserCardData.premiumCardExpiry = time.AddDays(2.0);
                }
                GameEngine.Instance.World.UserCardData.premiumCard = type;
                GameEngine.Instance.World.ProfilePremiumTokens.Remove(data);
                this.UpdatePremiumTokens();
                this.UpdateExpiry();
            }
        }
 private void ExtendOrPlayPremiumToken()
 {
     try
     {
         int data = base.ClickedControl.Data;
         int num2 = 0x1014;
         DateTime time = VillageMap.getCurrentServerTime();
         this.currentExpirySeconds = GameEngine.Instance.World.UserCardData.premiumCardExpiry.Subtract(VillageMap.getCurrentServerTime()).TotalSeconds;
         time = time.AddSeconds(this.currentExpirySeconds);
         this.lastToken = GameEngine.Instance.World.ProfilePremiumTokens[data];
         XmlRpcCardsProvider provider = XmlRpcCardsProvider.CreateForEndpoint(URLs.ProfileProtocol, URLs.ProfileServerAddressCards, URLs.ProfileServerPort, URLs.ProfileCardPath);
         XmlRpcCardsRequest req = new XmlRpcCardsRequest(RemoteServices.Instance.UserGuid.ToString().Replace("-", "")) {
             WorldID = RemoteServices.Instance.ProfileWorldID.ToString(),
             UserCardID = data.ToString()
         };
         if (this.lastToken.Type == 0x1010)
         {
             req.CardString = "CARDTYPE_PREMIUM";
         }
         if (this.lastToken.Type == 0x1011)
         {
             req.CardString = "CARDTYPE_PREMIUM2";
         }
         if (this.lastToken.Type == 0x1012)
         {
             req.CardString = "CARDTYPE_PREMIUM30";
         }
         if (InterfaceMgr.Instance.getCardWindow() != null)
         {
             CursorManager.SetCursor(CursorManager.CursorType.WaitCursor, InterfaceMgr.Instance.getCardWindow());
         }
         this.inSend = true;
         provider.playPremium(req, new CardsEndResponseDelegate(this.PlayedToken), this);
         this.premiumInPlay = true;
         this.currentExpirySeconds = 604800.0;
         if (GameEngine.Instance.World.ProfilePremiumTokens[data].Type == 0x1010)
         {
             GameEngine.Instance.World.UserCardData.premiumCardExpiry = time.AddDays(7.0);
         }
         if (GameEngine.Instance.World.ProfilePremiumTokens[data].Type == 0x1012)
         {
             GameEngine.Instance.World.UserCardData.premiumCardExpiry = time.AddDays(30.0);
         }
         if (GameEngine.Instance.World.ProfilePremiumTokens[data].Type == 0x1011)
         {
             GameEngine.Instance.World.UserCardData.premiumCardExpiry = time.AddDays(2.0);
         }
         GameEngine.Instance.World.UserCardData.premiumCard = num2;
         GameEngine.Instance.World.ProfilePremiumTokens.Remove(data);
         this.UpdatePremiumTokens();
         this.UpdateExpiry();
     }
     catch (Exception exception)
     {
         UniversalDebugLog.Log(exception.ToString());
     }
 }
 private void BoughtOffer(ICardsProvider provider, ICardsResponse response)
 {
     if (response.SuccessCode != 1)
     {
         MyMessageBox.Show(response.Message, SK.Text("BuyCardsPanel_Error_Report", "ERROR: Please report this error message"));
         WorldMap world = GameEngine.Instance.World;
         world.ProfileCrowns += this.crowns;
         this.labelTitle.Text = SK.Text("PremiumCardsPanel_Buy_and_Open_Packs", "Buy and Play Premium Tokens: Crowns in your treasury") + " : " + GameEngine.Instance.World.ProfileCrowns.ToString();
     }
     else
     {
         int result = 0;
         int.TryParse(response.Strings, out result);
         CardTypes.PremiumToken token = new CardTypes.PremiumToken {
             Reward = 0,
             Type = this.buytype,
             UserPremiumTokenID = result,
             WorldID = RemoteServices.Instance.ProfileWorldID
         };
         GameEngine.Instance.World.ProfilePremiumTokens.Add(result, token);
         this.UpdatePremiumTokens();
     }
     this.buying = false;
 }