Example #1
0
        public static MySettings load()
        {
            MySettings settings2;

            try
            {
                MySettings   settings = null;
                string       str      = GameEngine.getSettingsPath(false);
                FileStream   input    = null;
                BinaryReader reader   = null;
                try
                {
                    input    = new FileStream(str + @"\config.dat", FileMode.Open, FileAccess.Read);
                    reader   = new BinaryReader(input);
                    settings = new MySettings {
                        MusicVolume         = 13,
                        SFXVolume           = 100,
                        EnvironmentalVolume = 0x22,
                        Username            = reader.ReadString(),
                        Password            = reader.ReadString(),
                        ScreenWidth         = reader.ReadInt32(),
                        ScreenHeight        = reader.ReadInt32(),
                        LicenseViewed       = reader.ReadBoolean(),
                        LicenseAlpha3Viewed = reader.ReadBoolean(),
                        CastleWalls         = reader.ReadBoolean(),
                        NotifyChatUpdate    = reader.ReadBoolean()
                    };
                    try
                    {
                        settings.ConfirmPlayCard                = reader.ReadBoolean();
                        settings.SETTINGS_instantTooltips       = reader.ReadBoolean();
                        settings.SETTINGS_staticMouseTime       = reader.ReadInt32();
                        settings.SETTINGS_showTooltips          = reader.ReadBoolean();
                        settings.LanguageIdent                  = reader.ReadString();
                        settings.OwnLanguageAvailableAndChecked = reader.ReadBoolean();
                        settings.BuyMultipleCardPacks           = reader.ReadBoolean();
                        settings.OpenMultipleCardPacks          = reader.ReadBoolean();
                        settings.Music                = reader.ReadBoolean();
                        settings.MusicVolume          = reader.ReadInt32();
                        settings.AAMode               = reader.ReadInt32();
                        settings.LastWorldID          = reader.ReadInt32();
                        settings.AutoLogin            = reader.ReadBoolean();
                        settings.NumWorldsCount       = reader.ReadInt32();
                        settings.NumWorldsLastChanged = new DateTime(reader.ReadInt64());
                        settings.HasLoggedIn          = reader.ReadBoolean();
                        settings.fastCashIn           = reader.ReadBoolean();
                        settings.SFX                 = reader.ReadBoolean();
                        settings.SFXVolume           = reader.ReadInt32();
                        settings.Environmentals      = reader.ReadBoolean();
                        settings.EnvironmentalVolume = reader.ReadInt32();
                        settings.Maximize            = reader.ReadBoolean();
                        if (settings.MusicVolume < 0)
                        {
                            settings.MusicVolume         = reader.ReadInt32();
                            settings.SFXVolume           = reader.ReadInt32();
                            settings.EnvironmentalVolume = reader.ReadInt32();
                        }
                        else
                        {
                            if (settings.MusicVolume > 13)
                            {
                                settings.MusicVolume = 13;
                            }
                            settings.SFXVolume           = 100;
                            settings.EnvironmentalVolume = 0x22;
                        }
                        settings.BattleSFX                  = reader.ReadBoolean();
                        settings.viewVillageIDs             = reader.ReadBoolean();
                        settings.showGameFeaturesScreenIcon = reader.ReadBoolean();
                        settings.SeasonalSpecialFX          = reader.ReadBoolean();
                        try
                        {
                            settings.InstalledLanguageIdent = reader.ReadString();
                        }
                        catch (Exception)
                        {
                            settings.InstalledLanguageIdent = Program.installedLangCode;
                        }
                        try
                        {
                            settings.FlashingTaskbarAttack = reader.ReadBoolean();
                        }
                        catch
                        {
                            settings.FlashingTaskbarAttack = true;
                        }
                        try
                        {
                            settings.ShowProductionInfo = reader.ReadBoolean();
                        }
                        catch
                        {
                            settings.ShowProductionInfo = true;
                        }
                        try
                        {
                            settings.AdvancedTrading = reader.ReadBoolean();
                        }
                        catch
                        {
                            settings.AdvancedTrading = false;
                        }
                        try
                        {
                            settings.AdvertShown = reader.ReadBoolean();
                        }
                        catch
                        {
                            settings.AdvertShown = false;
                        }
                        try
                        {
                            settings.viewCapitalIDs = reader.ReadBoolean();
                        }
                        catch
                        {
                            settings.viewCapitalIDs = false;
                        }
                        try
                        {
                            settings.AttackSetupsUpdated = reader.ReadBoolean();
                        }
                        catch
                        {
                            settings.AttackSetupsUpdated = false;
                        }
                        try
                        {
                            settings.SeasonalWinterLandscape = reader.ReadBoolean();
                        }
                        catch
                        {
                            settings.SeasonalWinterLandscape = true;
                        }
                        try
                        {
                            settings.UseMapTextBorders = reader.ReadBoolean();
                        }
                        catch
                        {
                            settings.UseMapTextBorders = true;
                        }
                        try
                        {
                            settings.facebookaccesstoken = reader.ReadString();
                        }
                        catch
                        {
                            settings.facebookaccesstoken = "";
                        }
                        try
                        {
                            settings.SendAnalytics = reader.ReadBoolean();
                        }
                        catch
                        {
                            settings.SendAnalytics = true;
                        }
                        try
                        {
                            settings.SeenAnalyticsPrompt = reader.ReadBoolean();
                        }
                        catch
                        {
                            settings.SeenAnalyticsPrompt = false;
                        }
                    }
                    catch (Exception)
                    {
                        settings.BattleSFX = settings.SFX;
                    }
                    reader.Close();
                    input.Close();
                    return(settings);
                }
                catch (Exception)
                {
                    try
                    {
                        if (reader != null)
                        {
                            reader.Close();
                        }
                    }
                    catch (Exception)
                    {
                    }
                    try
                    {
                        if (input != null)
                        {
                            input.Close();
                        }
                    }
                    catch (Exception)
                    {
                    }
                }
                FileStream    stream     = null;
                XmlSerializer serializer = new XmlSerializer(typeof(MySettings));
                try
                {
                    stream   = new FileStream(str + @"\settings.dat", FileMode.Open, FileAccess.Read);
                    settings = (MySettings)serializer.Deserialize(stream);
                    stream.Close();
                    stream    = null;
                    settings2 = settings;
                }
                catch (FileNotFoundException)
                {
                    settings2 = new MySettings();
                }
                catch (DirectoryNotFoundException)
                {
                    settings2 = new MySettings();
                }
                catch (Exception)
                {
                    try
                    {
                        if (stream != null)
                        {
                            stream.Close();
                        }
                    }
                    catch (Exception)
                    {
                    }
                    settings2 = new MySettings();
                }
            }
            catch (Exception)
            {
                settings2 = new MySettings();
            }
            return(settings2);
        }
 public static MySettings load()
 {
     MySettings settings2;
     try
     {
         MySettings settings = null;
         string str = GameEngine.getSettingsPath(false);
         FileStream input = null;
         BinaryReader reader = null;
         try
         {
             input = new FileStream(str + @"\config.dat", FileMode.Open, FileAccess.Read);
             reader = new BinaryReader(input);
             settings = new MySettings {
                 MusicVolume = 13,
                 SFXVolume = 100,
                 EnvironmentalVolume = 0x22,
                 Username = reader.ReadString(),
                 Password = reader.ReadString(),
                 ScreenWidth = reader.ReadInt32(),
                 ScreenHeight = reader.ReadInt32(),
                 LicenseViewed = reader.ReadBoolean(),
                 LicenseAlpha3Viewed = reader.ReadBoolean(),
                 CastleWalls = reader.ReadBoolean(),
                 NotifyChatUpdate = reader.ReadBoolean()
             };
             try
             {
                 settings.ConfirmPlayCard = reader.ReadBoolean();
                 settings.SETTINGS_instantTooltips = reader.ReadBoolean();
                 settings.SETTINGS_staticMouseTime = reader.ReadInt32();
                 settings.SETTINGS_showTooltips = reader.ReadBoolean();
                 settings.LanguageIdent = reader.ReadString();
                 settings.OwnLanguageAvailableAndChecked = reader.ReadBoolean();
                 settings.BuyMultipleCardPacks = reader.ReadBoolean();
                 settings.OpenMultipleCardPacks = reader.ReadBoolean();
                 settings.Music = reader.ReadBoolean();
                 settings.MusicVolume = reader.ReadInt32();
                 settings.AAMode = reader.ReadInt32();
                 settings.LastWorldID = reader.ReadInt32();
                 settings.AutoLogin = reader.ReadBoolean();
                 settings.NumWorldsCount = reader.ReadInt32();
                 settings.NumWorldsLastChanged = new DateTime(reader.ReadInt64());
                 settings.HasLoggedIn = reader.ReadBoolean();
                 settings.fastCashIn = reader.ReadBoolean();
                 settings.SFX = reader.ReadBoolean();
                 settings.SFXVolume = reader.ReadInt32();
                 settings.Environmentals = reader.ReadBoolean();
                 settings.EnvironmentalVolume = reader.ReadInt32();
                 settings.Maximize = reader.ReadBoolean();
                 if (settings.MusicVolume < 0)
                 {
                     settings.MusicVolume = reader.ReadInt32();
                     settings.SFXVolume = reader.ReadInt32();
                     settings.EnvironmentalVolume = reader.ReadInt32();
                 }
                 else
                 {
                     if (settings.MusicVolume > 13)
                     {
                         settings.MusicVolume = 13;
                     }
                     settings.SFXVolume = 100;
                     settings.EnvironmentalVolume = 0x22;
                 }
                 settings.BattleSFX = reader.ReadBoolean();
                 settings.viewVillageIDs = reader.ReadBoolean();
                 settings.showGameFeaturesScreenIcon = reader.ReadBoolean();
                 settings.SeasonalSpecialFX = reader.ReadBoolean();
                 try
                 {
                     settings.InstalledLanguageIdent = reader.ReadString();
                 }
                 catch (Exception)
                 {
                     settings.InstalledLanguageIdent = Program.installedLangCode;
                 }
                 try
                 {
                     settings.FlashingTaskbarAttack = reader.ReadBoolean();
                 }
                 catch
                 {
                     settings.FlashingTaskbarAttack = true;
                 }
                 try
                 {
                     settings.ShowProductionInfo = reader.ReadBoolean();
                 }
                 catch
                 {
                     settings.ShowProductionInfo = true;
                 }
                 try
                 {
                     settings.AdvancedTrading = reader.ReadBoolean();
                 }
                 catch
                 {
                     settings.AdvancedTrading = false;
                 }
                 try
                 {
                     settings.AdvertShown = reader.ReadBoolean();
                 }
                 catch
                 {
                     settings.AdvertShown = false;
                 }
                 try
                 {
                     settings.viewCapitalIDs = reader.ReadBoolean();
                 }
                 catch
                 {
                     settings.viewCapitalIDs = false;
                 }
                 try
                 {
                     settings.AttackSetupsUpdated = reader.ReadBoolean();
                 }
                 catch
                 {
                     settings.AttackSetupsUpdated = false;
                 }
                 try
                 {
                     settings.SeasonalWinterLandscape = reader.ReadBoolean();
                 }
                 catch
                 {
                     settings.SeasonalWinterLandscape = true;
                 }
                 try
                 {
                     settings.UseMapTextBorders = reader.ReadBoolean();
                 }
                 catch
                 {
                     settings.UseMapTextBorders = true;
                 }
                 try
                 {
                     settings.facebookaccesstoken = reader.ReadString();
                 }
                 catch
                 {
                     settings.facebookaccesstoken = "";
                 }
                 try
                 {
                     settings.SendAnalytics = reader.ReadBoolean();
                 }
                 catch
                 {
                     settings.SendAnalytics = true;
                 }
                 try
                 {
                     settings.SeenAnalyticsPrompt = reader.ReadBoolean();
                 }
                 catch
                 {
                     settings.SeenAnalyticsPrompt = false;
                 }
             }
             catch (Exception)
             {
                 settings.BattleSFX = settings.SFX;
             }
             reader.Close();
             input.Close();
             return settings;
         }
         catch (Exception)
         {
             try
             {
                 if (reader != null)
                 {
                     reader.Close();
                 }
             }
             catch (Exception)
             {
             }
             try
             {
                 if (input != null)
                 {
                     input.Close();
                 }
             }
             catch (Exception)
             {
             }
         }
         FileStream stream = null;
         XmlSerializer serializer = new XmlSerializer(typeof(MySettings));
         try
         {
             stream = new FileStream(str + @"\settings.dat", FileMode.Open, FileAccess.Read);
             settings = (MySettings) serializer.Deserialize(stream);
             stream.Close();
             stream = null;
             settings2 = settings;
         }
         catch (FileNotFoundException)
         {
             settings2 = new MySettings();
         }
         catch (DirectoryNotFoundException)
         {
             settings2 = new MySettings();
         }
         catch (Exception)
         {
             try
             {
                 if (stream != null)
                 {
                     stream.Close();
                 }
             }
             catch (Exception)
             {
             }
             settings2 = new MySettings();
         }
     }
     catch (Exception)
     {
         settings2 = new MySettings();
     }
     return settings2;
 }
Example #3
0
        private static void Main(string[] args)
        {
            #if DEBUG
            AllocConsole();
            #endif
            try
            {
                args = new string[] { "-InstallerVersion", CurrentInstallerBuild.ToString(), "en" };
            #if DEBUG
                Console.WriteLine("Nichosy " + DataExport.version);
            #endif

                DataExport.Fill();
                bool flag = false;
                bool flag2 = false;
                string str = "en";
                if ((args == null) || (args.Length < 1))
                {
                    flag = true;
                }
                if ((args != null) && (args.Length > 1))
                {
                    if (args[0].ToLowerInvariant() == "-installerversion")
                    {
                        if (Convert.ToInt32(args[1]) < CurrentInstallerBuild)
                        {
                            flag2 = true;
                        }
                    }
                    else if (!(args[0].ToLowerInvariant() == "-installer"))
                    {
                        flag = true;
                    }
                    if (args.Length > 2)
                    {
                        if (args[2].Length > 0)
                        {
                            str = args[2];
                        }
                        if ((args.Length > 3) && (args[3].Length > 0))
                        {
                            if (args[3] == "st")
                            {
                                steamInstall = true;
                            }
                            if (args[3] == "bp")
                            {
                                bigpointInstall = true;
                            }
                            if (args[3] == "bp2")
                            {
                                bigpointPartnerInstall = true;
                            }
                            if (args[3] == "ae")
                            {
                                aeriaInstall = true;
                            }
                            if (args[3] == "gf")
                            {
                                gamersFirstInstall = true;
                                if ((args.Length > 4) && (args[4].Length > 0))
                                {
                                    gamersFirstTokenMD5 = args[4];
                                }
                            }
                            if (args[3] == "arc")
                            {
                                if (args.Length > 4)
                                {
                                    arcUsername = args[4];
                                    arcInstall = true;
                                    if (arcUsername.Length <= 0)
                                    {
                                        arcLauncherStart = true;
                                    }
                                }
                                else
                                {
                                    arcLauncherStart = true;
                                }
                            }
                        }
                    }
                }
                else
                {
                    flag2 = true;
                }
                xmas_period = HolidayPeriods.xmas(DateTime.Now);
                if (arcLauncherStart)
                {
                    arc_launchClient(str);
                }
                else if (flag)
                {
                    MessageBox.Show(SK.Text("ProgramMain_Launch_Failure1", "This is not the game exe!") + Environment.NewLine + Environment.NewLine + SK.Text("ProgramMain_Launch_Failure2", "Please run Stronghold Kingdoms in the normal manner."), SK.Text("ProgramMain_Launch_Failure", "Stronghold Kingdoms Error"), MessageBoxButtons.OK);
                }
                else if (flag2 && !steamInstall)
                {
                    MessageBoxButtons oKCancel = MessageBoxButtons.OKCancel;
                    if (MessageBox.Show(SK.Text("ProgramMain_New_nInstaller", "A new version of the Updater/Installer is needed") + Environment.NewLine + SK.Text("ProgramMain_Must_Install", "You cannot Launch Stronghold Kingdoms until this is installed") + Environment.NewLine + Environment.NewLine + SK.Text("ProgramMain_Install_Now", "Do you wish to install this now?"), SK.Text("ProgramMain_Installer_Update", "Stronghold Kingdoms Installer Update"), oKCancel) == DialogResult.OK)
                    {
                        string path = InstallerUpdater.downloadSelfUpdater(new Uri("http://static.strongholdkingdoms.com/Kingdoms/kingdoms-setup-update-" + CurrentInstallerBuild.ToString() + ".exe"));
                        if ((path != null) && (path.Length > 0))
                        {
                            InstallerUpdater.runInstaller(path);
                        }
                    }
                }
                else
                {
                    bool flag3;
                    string name = @"Global\StrongholdKingdoms";
                    using (new Mutex(true, name, out flag3))
                    {
                        bool flag4;
                        try
                        {
                            OperatingSystem oSVersion = Environment.OSVersion;
                            if ((oSVersion.Platform == PlatformID.Win32NT) && (oSVersion.Version.Major >= 6))
                            {
                                SetProcessDPIAware();
                            }
                        }
                        catch (Exception)
                        {
                        }
                        AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(Program.CurrentDomain_UnhandledException);
                        Application.ThreadException += new ThreadExceptionEventHandler(Program.CurrentDomain_ThreadException);
                        Application.EnableVisualStyles();
                        Application.SetCompatibleTextRenderingDefault(false);
                        communityLangs = SKLocalization.scanForLanguages(GameEngine.getLangsPath());
                        installedLangCode = str;
                        mySettings = MySettings.load();
                        if (mySettings.LanguageIdent.Length == 0)
                        {
                            mySettings.LanguageIdent = str;
                        }
                        else if (mySettings.InstalledLanguageIdent != str)
                        {
                            mySettings.LanguageIdent = str;
                            mySettings.InstalledLanguageIdent = str;
                        }
                        if (!mySettings.OwnLanguageAvailableAndChecked)
                        {
                            string str6 = Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName.ToLower();
                            if (str6 != mySettings.LanguageIdent)
                            {
                                if (str6 == "en")
                                {
                                    mySettings.OwnLanguageAvailableAndChecked = true;
                                }
                                else if ((((str6 == "de") || (str6 == "fr")) || ((str6 == "ru") || (str6 == "es"))) || (((str6 == "pl") || (str6 == "it")) || ((str6 == "tr") || (str6 == "pt"))))
                                {
                                    string str7 = SK.Text("ProgramMain_A_New_Language", "A New Language is available : ");
                                    switch (str6)
                                    {
                                        case "de":
                                            str7 = str7 + "Deutsch";
                                            break;

                                        case "fr":
                                            str7 = str7 + "Fran\x00e7ais";
                                            break;

                                        case "ru":
                                            str7 = str7 + "Русский";
                                            break;

                                        case "es":
                                            str7 = str7 + "Espa\x00f1ol";
                                            break;

                                        case "pl":
                                            str7 = str7 + "Polski";
                                            break;

                                        case "it":
                                            str7 = str7 + "Italiano";
                                            break;

                                        case "tr":
                                            str7 = str7 + "T\x00fcrk\x00e7e";
                                            break;

                                        case "pt":
                                            str7 = str7 + "Portugu\x00eas do Brasil";
                                            break;
                                    }
                                    if (MessageBox.Show(str7 + Environment.NewLine + SK.Text("ProgramMain_Use_New_Language", "Your system settings indicate you are using this language, do you wish to play Stronghold Kingdoms in this language?"), SK.Text("ProgramMain_NewLanguageAvailable", "New Language Available"), MessageBoxButtons.YesNo) == DialogResult.Yes)
                                    {
                                        mySettings.LanguageIdent = str6;
                                    }
                                    mySettings.OwnLanguageAvailableAndChecked = true;
                                }
                            }
                            else
                            {
                                mySettings.OwnLanguageAvailableAndChecked = true;
                            }
                        }
                        switch (mySettings.LanguageIdent)
                        {
                            case "en":
                            case "de":
                            case "fr":
                            case "ru":
                            case "es":
                            case "pl":
                            case "pt":
                            case "tr":
                            case "it":
                                SKLocalization.LoadLocalization(Application.StartupPath + @"\Localization\", mySettings.LanguageIdent);
                                goto Label_079B;

                            default:
                                flag4 = false;
                                foreach (SKLang lang in communityLangs)
                                {
                                    if (lang.id == mySettings.LanguageIdent)
                                    {
                                        SKLocalization.LoadLocalization(GameEngine.getLangsPath(), lang.id);
                                        if ((SKLocalization.Instance == null) || !SKLocalization.Instance.valid)
                                        {
                                            flag4 = false;
                                        }
                                        else
                                        {
                                            flag4 = true;
                                        }
                                        break;
                                    }
                                }
                                break;
                        }
                        if (!flag4)
                        {
                            mySettings.LanguageIdent = "en";
                            SKLocalization.LoadLocalization(Application.StartupPath + @"\Localization\", mySettings.LanguageIdent);
                        }
                    Label_079B:
                        if (steamInstall)
                        {
                            bool flag5 = false;
                            try
                            {
                                if (Steam_Init() > 0)
                                {
                                    steamActive = true;
                                    Steam_getTicket();
                                    string sessionid = BitConverter.ToString(steam_SessionTicket).Replace("-", "");
                                    XmlRpcAuthRequest req = new XmlRpcAuthRequest("", "", "", "", sessionid, "", "", "");
                                    XmlRpcAuthResponse response = XmlRpcAuthProvider.CreateForEndpoint(URLs.ProfileProtocol, URLs.ProfileServerAddressLogin, URLs.ProfileServerPort, URLs.ProfilePath).AuthenticateSteamAccount(req, null, null, 0x3a98);
                                    if (response.SuccessCode == 1)
                                    {
                                        flag5 = true;
                                        steamID = response.Message;
                                        steamEmail = response.UserGUID;
                                        mySettings.AutoLogin = false;
                                        if (steamEmail.Trim().Length > 0)
                                        {
                                            kingdomsAccountFound = true;
                                        }
                                        else
                                        {
                                            kingdomsAccountFound = false;
                                        }
                                    }
                                }
                            }
                            catch (Exception)
                            {
                                steamActive = false;
                            }
                            if (!flag5)
                            {
                                MessageBox.Show(SK.Text("Steam_steam_required", "Stronghold Kingdoms requires the Steam Client to be running in Online mode."), SK.Text("Steam_error", "Steam Error"));
                                Application.Exit();
                                return;
                            }
                        }
                        if (!arcInstall || arc_login(arcUsername))
                        {
                            if (gamersFirstInstall && (gamersFirstTokenMD5.Length == 0))
                            {
                                MessageBox.Show(SK.Text("GF_token_error", "Unable to verify your GamersFirst identity. Please try again. If this issue persists, please contact support."), SK.Text("GF_Error", "GamersFirst Error"));
                                Application.Exit();
                            }
                            else
                            {
                                LoadingPanel panel = new LoadingPanel();
                                panel.init();
                                panel.Show();
                                panel.TopMost = true;
                                panel.BringToFront();
                                panel.Focus();
                                panel.BringToFront();
                                panel.TopMost = false;
                                string basePath = Application.StartupPath + @"\geckofx\xulrunner";
                                loadGeckoDLLs(basePath);
                                Xpcom.Initialize(basePath);
                                bool flag6 = testMutex();
                                if (!flag3 || flag6)
                                {
                                    MessageBox.Show(SK.Text("ProgramMain_Already_Running", "Already running") + "...", "Stronghold Kingdoms");
                                }
                                else
                                {
                                    bool flag7 = true;
                                    TimerCaps caps = new TimerCaps();
                                    timeGetDevCaps(ref caps, Marshal.SizeOf(caps));
                                    timerPeriod = Math.Max(caps.periodMin, 1);
                                    timeBeginPeriod(timerPeriod);
                                    DXTimer.Init();
                                    GameEngine engine = null;
                                    try
                                    {
                                        engine = new GameEngine();
                                    }
                                    catch (FileNotFoundException exception)
                                    {
                                        if (exception.FileName.Contains("irectX"))
                                        {
                                            GameEngine.displayDirectXError();
                                        }
                                        timeEndPeriod(timerPeriod);
                                        panel.Close();
                                        return;
                                    }
                                    GraphicsMgr mgr = new GraphicsMgr();
                                    int maxRes = 2;
                                    Screen primaryScreen = Screen.PrimaryScreen;
                                    int width = primaryScreen.Bounds.Width;
                                    int height = primaryScreen.Bounds.Height;
                                    if ((width < 0x400) || (height < 0x300))
                                    {
                                        MessageBoxButtons yesNo = MessageBoxButtons.YesNo;
                                        panel.Close();
                                        panel = null;
                                        if (MessageBox.Show(SK.Text("ProgramMain_Screen_Too_Small", "Your screen resolution is too small to run Stronghold Kingdoms") + Environment.NewLine + Environment.NewLine + SK.Text("ProgramMain_Try_Anyway", "Try to anyway?"), SK.Text("ProgramMain_Error", "Error"), yesNo) != DialogResult.Yes)
                                        {
                                            timeEndPeriod(timerPeriod);
                                            return;
                                        }
                                    }
                                    int num6 = width - 80;
                                    int num7 = height - 100;
                                    if (num6 < 0x3b0)
                                    {
                                        num6 = 0x3b0;
                                    }
                                    if (num7 < 0x29c)
                                    {
                                        num7 = 0x29c;
                                    }
                                    mySettings.Save();
                                    CastleMap.displayCollapsed = mySettings.CastleWalls;
                                    MainWindow newParentMainWindow = null;
                                    Form form = null;
                                    form = new MainWindow
                                    {
                                        Visible = false
                                    };
                                    if (arcInstall)
                                    {
                                        arc_init(form);
                                    }
                                    ((MainWindow)form).allowResizing(false);
                                    int screenWidth = num6;
                                    int screenHeight = num7;
                                    if (mySettings.ScreenWidth > 0)
                                    {
                                        screenWidth = mySettings.ScreenWidth;
                                    }
                                    if (mySettings.ScreenHeight > 0)
                                    {
                                        screenHeight = mySettings.ScreenHeight;
                                    }
                                    if (screenWidth > width)
                                    {
                                        screenWidth = width;
                                    }
                                    if (screenHeight > height)
                                    {
                                        screenHeight = height;
                                    }
                                    if (flag7)
                                    {
                                        form.MaximumSize = new Size(0xf00, 0x870);
                                        form.ClientSize = new Size(screenWidth, screenHeight);
                                    }
                                    else
                                    {
                                        form.ClientSize = new Size(0x3e8, 720);
                                        form.MaximumSize = new Size(0x41a, 760);
                                    }
                                    if (mySettings.Maximize)
                                    {
                                        form.WindowState = FormWindowState.Maximized;
                                    }
                                    form.Text = "Stronghold Kingdoms";
                                    ((MainWindow)form).allowResizing(true);
                                    newParentMainWindow = (MainWindow)form;
                                    InterfaceMgr.Instance.registerForm(form, newParentMainWindow);
                                    if (!engine.Initialise(mgr, maxRes, 2))
                                    {
                                        if (panel != null)
                                        {
                                            panel.Close();
                                            panel = null;
                                        }
                                    }
                                    else
                                    {
                                        SVG_Source instance = SVG_Source.Instance;
                                        Sound.setMusicState(mySettings.Music);
                                        GameEngine.Instance.AudioEngine.setMP3MasterVolume(((float)mySettings.MusicVolume) / 100f, 0);
                                        Sound.setSFXState(mySettings.SFX);
                                        Sound.setBattleSFXState(mySettings.BattleSFX);
                                        GameEngine.Instance.AudioEngine.setSFXMasterVolume(((float)mySettings.SFXVolume) / 100f);
                                        Sound.setEnvironmentalState(mySettings.Environmentals);
                                        GameEngine.Instance.AudioEngine.setEnvironmentalMasterVolume(((float)mySettings.EnvironmentalVolume) / 100f);
                                        bool flag8 = true;
                                        if (panel != null)
                                        {
                                            panel.Close();
                                            panel = null;
                                        }
                                        RemoteServices.Instance.initChannel();
                                        while (flag8)
                                        {
                                            engine.reLogin();
                                            flag8 = false;
                                            RemoteServices.Instance.UserID = -1;
                                            RemoteServices.Instance.set_CommonData_UserCallBack(null);
                                            while (RemoteServices.Instance.UserID < 0)
                                            {
                                                engine.installKeyboardHook();
                                                GameEngine.Instance.reLogin();
                                                GameEngine.Instance.clearServerDowntime();
                                                profileLogin = engine.getLoginWindow();
                                                if (profileLogin == null)
                                                {
                                                    profileLogin = new ProfileLoginWindow();
                                                    GameEngine.Instance.setProfileLogin(profileLogin);
                                                    profileLogin.Show();
                                                    profileLogin.init();
                                                }
                                                else
                                                {
                                                    profileLogin.openAfterCancel();
                                                }
                                                RemoteServices.Instance.clearQueues();
                                                while (profileLogin.Created && profileLogin.UserEntryMode)
                                                {
                                                    RemoteServices.Instance.processData();
                                                    Thread.Sleep(1);
                                                    DoEvents();
                                                    profileLogin.update();
                                                    StatTrackingClient.Instance().Update(0.01);
                                                }
                                                GameEngine.Instance.reLogin();
                                                form.Text = "Stronghold Kingdoms";
                                                if (WorldName != string.Empty)
                                                {
                                                    form.Text = form.Text + " - " + WorldName;
                                                }
                                                if (RemoteServices.Instance.UserID == -1)
                                                {
                                                    GameEngine.Instance.killLoadThread();
                                                    mySettings.Maximize = form.WindowState == FormWindowState.Maximized;
                                                    form.Close();
                                                    shutdown();
                                                    return;
                                                }
                                            }
                                            engine.showConnectingPopup();
                                            engine.World.loadLocalWorldData();
                                            engine.World.updateWorldMapOwnership();
                                            bool flag9 = true;
                                            while (flag9)
                                            {
                                                flag9 = false;
                                                VillageMap.loadVillageBuildingsGFX();
                                                while (engine.isStillLoading())
                                                {
                                                    Thread.Sleep(10);
                                                    DoEvents();
                                                    RemoteServices.Instance.processData();
                                                    GameEngine.Instance.updateConnectingPopup();
                                                }
                                                GameEngine.Instance.World.initSprites(GameEngine.Instance.GFX);
                                                GameEngine.Instance.resumeCommonRemote();
                                                engine.enableConnectingPopup();
                                                while (!GameEngine.Instance.World.isDownloadComplete())
                                                {
                                                    Thread.Sleep(10);
                                                    Application.DoEvents();
                                                    RemoteServices.Instance.processData();
                                                    GameEngine.Instance.updateConnectingPopup();
                                                    if (engine.loginCancelled())
                                                    {
                                                        break;
                                                    }
                                                }

                                                if (DataExport.controlForm != null)
                                                    DataExport.controlForm.Close();
                                                DataExport.controlForm = new ControlForm();
                                                DataExport.controlForm.Show();

                                                if (engine.pendingError())
                                                {
                                                    engine.updateConnectingPopup();
                                                    engine.forceRelogin();
                                                }
                                                if (!engine.loginCancelled())
                                                {
                                                    engine.World.saveFactionData();
                                                    engine.World.saveNamesData();
            #if DEBUG
                                                    DataExport.saveFactionData(engine.World);
                                                    DataExport.saveNamesData(engine.World);
            #endif
                                                    engine.enableConnectingPopup2();
                                                    while (engine.waitForConnectingPopupToClose())
                                                    {
                                                        Thread.Sleep(10);
                                                        DoEvents();
                                                        RemoteServices.Instance.processData();
                                                        if (engine.loginCancelled())
                                                        {
                                                            break;
                                                        }
                                                    }
                                                }
                                                if (RemoteServices.Instance.UserID == -1)
                                                {
                                                    GameEngine.Instance.killLoadThread();
                                                    mySettings.Maximize = form.WindowState == FormWindowState.Maximized;
                                                    form.Close();
                                                    shutdown();
                                                    return;
                                                }
                                                Sound.playMusic();

                                                bool flag10 = false;
                                                if (!engine.reLogin())
                                                {
                                                    InterfaceMgr.Instance.setupVillageName();
                                                    form.Show();
                                                    form.Visible = true;
                                                    newParentMainWindow.MainWindowLarge_SizeChanged(null, null);
                                                    GameEngine.Instance.lateStart();
                                                    if ((GameEngine.Instance.World.numVillagesOwned() > 0) && RemoteServices.Instance.ShowAdminMessage)
                                                    {
                                                        AdminInfoPopup.showMessage();
                                                    }
                                                    while (form.Created)
                                                    {
                                                        engine.run();
                                                        if (engine.reLogin())
                                                        {
                                                            form.Hide();
                                                            form.Visible = false;
                                                            engine.windowClosing();
                                                            if (!engine.quitting())
                                                            {
                                                                flag8 = true;
                                                            }
                                                            flag10 = true;
                                                            break;
                                                        }
                                                        StatTrackingClient.Instance().Update(0.01);
                                                        RemoteServices.Instance.processData();
                                                        if (form.Created)
                                                        {
                                                            Thread.Sleep(1);
                                                        }
                                                    }
                                                }
                                                else
                                                {
                                                    flag8 = true;
                                                    flag10 = true;
                                                }
                                                if (!flag10)
                                                {
                                                    form.Hide();
                                                    form.Visible = false;
                                                    form = null;
                                                    newParentMainWindow = null;
                                                }
                                                engine.World.saveFactionData();
                                                engine.World.saveNamesData();
            #if DEBUG
                                                DataExport.saveFactionData(engine.World);
                                                DataExport.saveNamesData(engine.World);
            #endif
                                                Sound.stopMusic();
                                            }
                                        }
                                        try
                                        {
                                            if (form != null)
                                            {
                                                mySettings.Maximize = form.WindowState == FormWindowState.Maximized;
                                            }
                                        }
                                        catch (Exception)
                                        {
                                        }
                                        shutdown();
                                    }
                                }
                            }
                        }
                    }
                }

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                File.WriteAllText("ex.txt", ex.ToString());
            }
            finally
            {
                if (DataExport.controlForm != null)
                    DataExport.controlForm.Close();
            }
        }
        public void init(int cardSection)
        {
            CustomSelfDrawPanel.CSDImage image2;
            this.currentCardSection = cardSection;
            base.clearControls();
            this.mainBackgroundImage.Image    = GFXLibrary.dummy;
            this.mainBackgroundImage.Position = new Point(0, 0);
            this.mainBackgroundImage.Size     = base.Size;
            this.mainBackgroundImage.Tile     = true;
            base.addControl(this.mainBackgroundImage);
            this.ContentWidth        = base.Width - (2 * BorderPadding);
            this.AvailablePanelWidth = 800;
            CustomSelfDrawPanel.CSDExtendingPanel control = new CustomSelfDrawPanel.CSDExtendingPanel {
                Size     = base.Size,
                Position = new Point(0, 0)
            };
            this.mainBackgroundImage.addControl(control);
            control.Create((Image)GFXLibrary.cardpanel_panel_back_top_left, (Image)GFXLibrary.cardpanel_panel_back_top_mid, (Image)GFXLibrary.cardpanel_panel_back_top_right, (Image)GFXLibrary.cardpanel_panel_back_mid_left, (Image)GFXLibrary.cardpanel_panel_back_mid_mid, (Image)GFXLibrary.cardpanel_panel_back_mid_right, (Image)GFXLibrary.cardpanel_panel_back_bottom_left, (Image)GFXLibrary.cardpanel_panel_back_bottom_mid, (Image)GFXLibrary.cardpanel_panel_back_bottom_right);
            CustomSelfDrawPanel.CSDImage image = new CustomSelfDrawPanel.CSDImage {
                Image    = (Image)GFXLibrary.cardpanel_panel_gradient_top_left,
                Size     = GFXLibrary.cardpanel_panel_gradient_top_left.Size,
                Position = new Point(0, 0)
            };
            control.addControl(image);
            image2 = new CustomSelfDrawPanel.CSDImage {
                Image    = (Image)GFXLibrary.cardpanel_panel_gradient_bottom_right,
                Size     = GFXLibrary.cardpanel_panel_gradient_bottom_right.Size,
                Position = new Point((control.Width - ((Image)GFXLibrary.cardpanel_panel_gradient_bottom_right).Width) - 6, (control.Height - ((Image)GFXLibrary.cardpanel_panel_gradient_bottom_right).Height) - 6)
            };
            control.addControl(image2);
            this.AvailablePanel          = new CustomSelfDrawPanel.CSDExtendingPanel();
            this.AvailablePanel.Size     = new Size(this.AvailablePanelWidth, 550);
            this.AvailablePanel.Position = new Point(8, (base.Height - 8) - 550);
            this.AvailablePanel.Alpha    = 0.8f;
            int width         = base.Width;
            int borderPadding = BorderPadding;
            int num9          = this.AvailablePanel.Width;

            this.closeImage.Image = (Image)GFXLibrary.cardpanel_button_close_normal;
            this.closeImage.Size  = this.closeImage.Image.Size;
            this.closeImage.setMouseOverDelegate(() => this.closeImage.Image = (Image)GFXLibrary.cardpanel_button_close_over, () => this.closeImage.Image = (Image)GFXLibrary.cardpanel_button_close_normal);
            this.closeImage.setClickDelegate(new CustomSelfDrawPanel.CSDControl.CSD_ClickDelegate(this.closeClick));
            this.closeImage.Position = new Point((base.Width - 14) - 0x11, 10);
            this.mainBackgroundImage.addControl(this.closeImage);
            CustomSelfDrawPanel.WikiLinkControl.init(this.mainBackgroundImage, 0x26, new Point((((base.Width - 1) - 0x11) - 50) + 3, 5), true);
            CustomSelfDrawPanel.CSDFill fill = new CustomSelfDrawPanel.CSDFill {
                FillColor = Color.FromArgb(0xff, 130, 0x81, 0x7e),
                Size      = new Size(base.Width - 10, 1),
                Position  = new Point(5, 0x22)
            };
            this.mainBackgroundImage.addControl(fill);
            this.greyout.FillColor = Color.FromArgb(0xd7, 0x19, 0x19, 0x19);
            this.greyout.Size      = new Size(this.mainBackgroundImage.Width, this.AvailablePanel.Y + this.AvailablePanel.Height);
            this.greyout.Position  = new Point(0, 0);
            this.greyout.setClickDelegate(delegate {
            });
            CustomSelfDrawPanel.CSDImage closeGrey = new CustomSelfDrawPanel.CSDImage {
                Image = (Image)GFXLibrary.cardpanel_button_close_normal,
                Size  = this.closeImage.Image.Size
            };
            closeGrey.setMouseOverDelegate(() => closeGrey.Image = (Image)GFXLibrary.cardpanel_button_close_over, () => closeGrey.Image = (Image)GFXLibrary.cardpanel_button_close_normal);
            closeGrey.Position = new Point((base.Width - 14) - 0x11, 10);
            this.greyout.addControl(closeGrey);
            this.labelTitle.Position  = new Point(0x1b, 8);
            this.labelTitle.Size      = new Size(0x3a7, 0x40);
            this.labelTitle.Text      = SK.Text("BuyCrownsPanel_Buy_Crowns", "Buy Crowns");
            this.labelTitle.Alignment = CustomSelfDrawPanel.CSD_Text_Alignment.TOP_LEFT;
            this.labelTitle.Font      = FontManager.GetFont("Arial", 16f, FontStyle.Bold);
            this.labelTitle.Color     = ARGBColors.Black;
            this.mainBackgroundImage.addControl(this.labelTitle);
            CustomSelfDrawPanel.UICardsButtons buttons = new CustomSelfDrawPanel.UICardsButtons((PlayCardsWindow)base.ParentForm)
            {
                Position = new Point(0x328, 0x25)
            };
            this.mainBackgroundImage.addControl(buttons);
            this.cardButtons = buttons;
            List <ProductInfo> productList = new List <ProductInfo>();

            if (Program.steamActive)
            {
                this.PlayerCountry  = "UK";
                this.PlayerCurrency = "GBP";
                this.PlayerLanguage = MySettings.load().LanguageIdent;
                XmlRpcAuthProvider provider = XmlRpcAuthProvider.CreateForEndpoint(URLs.ProfileProtocol, URLs.ProfileServerAddressLogin, URLs.ProfileServerPort, URLs.ProfilePath);
                XmlRpcAuthRequest  req      = new XmlRpcAuthRequest(RemoteServices.Instance.UserGuid.ToString().Replace("-", ""), "", "", "", null, null, null, null)
                {
                    SteamID   = Program.steamID,
                    SessionID = RemoteServices.Instance.SessionGuid.ToString().Replace("-", ""),
                    Culture   = this.PlayerLanguage,
                    Currency  = this.PlayerCurrency,
                    Country   = this.PlayerCountry
                };
                productList = provider.SteamGetProductList(req, null, this, 0x3a98).ProductList;
            }
            else if (Program.aeriaInstall)
            {
                XmlRpcAuthProvider provider2 = XmlRpcAuthProvider.CreateForEndpoint(URLs.ProfileProtocol, URLs.ProfileServerAddressLogin, URLs.ProfileServerPort, URLs.ProfilePath);
                XmlRpcAuthRequest  request2  = new XmlRpcAuthRequest(RemoteServices.Instance.UserGuid.ToString().Replace("-", ""), "", "", "", null, null, null, null);
                XmlRpcAuthResponse response  = null;
                this.storedAeriaPoints             = provider2.AeriaGetBalance(request2, null, this, 0x3a98, ref response);
                productList                        = response.ProductList;
                this.buyAPButton.ImageNorm         = (Image)GFXLibrary.misc_button_blue_210wide_normal;
                this.buyAPButton.ImageOver         = (Image)GFXLibrary.misc_button_blue_210wide_over;
                this.buyAPButton.ImageClick        = (Image)GFXLibrary.misc_button_blue_210wide_pushed;
                this.buyAPButton.Position          = new Point(0x13d, 0x49);
                this.buyAPButton.Text.Text         = this.storedAeriaPoints.ToString();
                this.buyAPButton.Text.Alignment    = CustomSelfDrawPanel.CSD_Text_Alignment.CENTER_RIGHT;
                this.buyAPButton.Text.Size         = new Size((this.buyAPButton.Width / 2) - 3, this.buyAPButton.Height);
                this.buyAPButton.TextYOffset       = -2;
                this.buyAPButton.Text.Color        = ARGBColors.Black;
                this.buyAPButton.ImageIcon         = (Image)GFXLibrary.aeriaPoints;
                this.buyAPButton.ImageIconPosition = new Point((this.buyAPButton.Width / 2) + 3, 1);
                this.buyAPButton.Text.Font         = FontManager.GetFont("Arial", 12f, FontStyle.Bold);
                this.buyAPButton.setClickDelegate(new CustomSelfDrawPanel.CSDControl.CSD_ClickDelegate(this.purchaseAP));
                this.buyAPButton.CustomTooltipID = 0x286e;
                this.mainBackgroundImage.addControl(this.buyAPButton);
            }
            int y    = 0x42;
            int num2 = 0x5e;
            int num3 = -1;

            if (Program.aeriaInstall)
            {
                y = 0x84;
            }
            NumberFormatInfo nFI   = GameEngine.NFI;
            NumberFormatInfo info2 = GameEngine.NFI_D2;

            foreach (ProductInfo info3 in productList)
            {
                num3++;
                int x = num2;
                if (Program.steamActive)
                {
                    if (num3 > 3)
                    {
                        if (num3 == 4)
                        {
                            y = 0x84;
                        }
                        x += 350;
                    }
                }
                else if (Program.aeriaInstall && (num3 > 2))
                {
                    if (num3 == 3)
                    {
                        y = 0x84;
                    }
                    x += 350;
                }
                CustomSelfDrawPanel.CSDLabel label        = new CustomSelfDrawPanel.CSDLabel();
                CustomSelfDrawPanel.CSDLabel label2       = new CustomSelfDrawPanel.CSDLabel();
                CustomSelfDrawPanel.CSDLabel label3       = new CustomSelfDrawPanel.CSDLabel();
                CustomSelfDrawPanel.CSDLabel label4       = new CustomSelfDrawPanel.CSDLabel();
                CustomSelfDrawPanel.CSDLabel label5       = new CustomSelfDrawPanel.CSDLabel();
                CustomSelfDrawPanel.CSDImage image3       = new CustomSelfDrawPanel.CSDImage();
                CustomSelfDrawPanel.CSDImage crownsbutton = new CustomSelfDrawPanel.CSDImage();
                CustomSelfDrawPanel.CSDImage orderbutton  = new CustomSelfDrawPanel.CSDImage();
                crownsbutton.Image    = (Image)GFXLibrary.cardpanel_payment_button_crowns_normal;
                crownsbutton.Position = new Point(x, y);
                crownsbutton.Height   = crownsbutton.Image.Height;
                crownsbutton.Width    = crownsbutton.Image.Width;
                crownsbutton.setMouseOverDelegate(() => crownsbutton.Image = (Image)GFXLibrary.cardpanel_payment_button_crowns_over, () => crownsbutton.Image = (Image)GFXLibrary.cardpanel_payment_button_crowns_normal);
                crownsbutton.Tag = info3;
                crownsbutton.setClickDelegate(new CustomSelfDrawPanel.CSDControl.CSD_ClickDelegate(this.productclick));
                this.mainBackgroundImage.addControl(crownsbutton);
                x += crownsbutton.Width + 0x20;
                orderbutton.Image    = (Image)GFXLibrary.cardpanel_payment_button_greywhite_normal;
                orderbutton.Position = new Point(x, (y + 0x12) + 3);
                orderbutton.Height   = orderbutton.Image.Height;
                orderbutton.Width    = orderbutton.Image.Width;
                orderbutton.setMouseOverDelegate(() => orderbutton.Image = (Image)GFXLibrary.cardpanel_payment_button_greywhite_over, () => orderbutton.Image = (Image)GFXLibrary.cardpanel_payment_button_greywhite_normal);
                orderbutton.Tag = info3;
                orderbutton.setClickDelegate(new CustomSelfDrawPanel.CSDControl.CSD_ClickDelegate(this.productclick));
                label5.Text      = this.strOrderNow;
                label5.Position  = new Point(0, 0);
                label5.Width     = orderbutton.Width;
                label5.Height    = orderbutton.Height;
                label5.Alignment = CustomSelfDrawPanel.CSD_Text_Alignment.CENTER_CENTER;
                label5.Font      = FontManager.GetFont("Arial", 14f, FontStyle.Bold);
                orderbutton.addControl(label5);
                label5.Tag = info3;
                label5.setClickDelegate(new CustomSelfDrawPanel.CSDControl.CSD_ClickDelegate(this.productclick));
                int num5 = 14;
                int num6 = 0;
                if (Program.mySettings.LanguageIdent == "fr")
                {
                    num5 = 13;
                    num6 = -5;
                }
                label.Text     = info3.Strikethrough.ToString();
                label.Position = new Point(0x74 + num6, 0x15);
                label.Width    = 300;
                label.Height   = 0x18;
                label.Font     = FontManager.GetFont("Arial", (float)num5, FontStyle.Strikeout);
                label.Color    = ARGBColors.Black;
                crownsbutton.addControl(label);
                label.Tag = info3;
                label.setClickDelegate(new CustomSelfDrawPanel.CSDControl.CSD_ClickDelegate(this.productclick));
                label.Size      = label.TextSizeX;
                label2.Text     = info3.Crowns.ToString();
                label2.Position = new Point(label.X + label.Width, label.Y);
                label2.Font     = FontManager.GetFont("Arial", (float)num5, FontStyle.Bold);
                label2.Color    = ARGBColors.Purple;
                label2.Width    = 300;
                label2.Height   = 0x18;
                crownsbutton.addControl(label2);
                label2.Tag = info3;
                label2.setClickDelegate(new CustomSelfDrawPanel.CSDControl.CSD_ClickDelegate(this.productclick));
                label2.Size     = label2.TextSizeX;
                label3.Text     = this.strCrowns;
                label3.Position = new Point((label2.X + label2.Width) + num6, label2.Y);
                label3.Font     = FontManager.GetFont("Arial", (float)num5, FontStyle.Bold);
                label3.Color    = ARGBColors.Black;
                label3.Size     = new Size(300, 0x18);
                crownsbutton.addControl(label3);
                label3.Tag = info3;
                label3.setClickDelegate(new CustomSelfDrawPanel.CSDControl.CSD_ClickDelegate(this.productclick));
                label3.Size = label3.TextSizeX;
                if (Program.aeriaInstall)
                {
                    label4.Text = " " + ((int)info3.Cost).ToString("F", nFI);
                }
                else
                {
                    label4.Text = info3.Currency + " " + info3.Cost.ToString("F", info2);
                }
                label4.Position = new Point(label.X, (label.Y + label.Height) + 4);
                label4.Font     = FontManager.GetFont("Arial", 14f, FontStyle.Bold);
                label4.Color    = ARGBColors.Black;
                label4.Size     = new Size(300, 0x18);
                crownsbutton.addControl(label4);
                label4.Tag = info3;
                label4.setClickDelegate(new CustomSelfDrawPanel.CSDControl.CSD_ClickDelegate(this.productclick));
                label4.Size = label4.TextSizeX;
                if (Program.aeriaInstall)
                {
                    image3.Image    = (Image)GFXLibrary.aeriaPoints;
                    label4.Position = new Point(label.X + 20, label.Y + label.Height);
                    image3.Position = new Point(label.X, (((label.Y + label.Height) + 4) - 2) - 3);
                    image3.Tag      = info3;
                    crownsbutton.addControl(image3);
                }
                y += crownsbutton.Height + 40;
            }
            this.mainBackgroundImage.invalidate();
        }