예제 #1
0
파일: Main.cs 프로젝트: Mochongli/T4A11
		public override void Deserialize(WriteDictionary data, GameReader.LoadMode mode)
		{
			var keys = PropertyHelper.Settings.Keys.ToList();
			foreach (var key in keys)
			{
				PropertyHelper.SetProperty(PropertyHelper.Settings, key, data.Get(key, PropertyHelper.GetProperty(PropertyHelper.Settings, key)));
			}
		}
예제 #2
0
        private static void CreateWindow()
        {
            Window = WindowManager.SpawnWindow();
            Window.InitialTitle   = Window.TitleText.text = Window.NonLocTitle = _title;
            Window.name           = "EmployeeSkillChange";
            Window.MainPanel.name = "EmployeeSkillChangePanel";

            if (Window.name == "EmployeeSkillChange")
            {
                Window.GetComponentsInChildren <Button>()
                .SingleOrDefault(x => x.name == "CloseButton")
                .onClick.AddListener(() => Shown = false);
            }

            List <GameObject> roleToggles           = new List <GameObject>();
            List <GameObject> specializationToggles = new List <GameObject>();

            Utils.AddLabel("Roles", new Rect(10, 5, 150, 32), Window);
            Utils.AddLabel("Specializations", new Rect(161, 5, 150, 32), Window);

            var rolesList = PropertyHelper.RolesList;

            foreach (var role in rolesList)
            {
                Utils.AddToggle(role.Key, PropertyHelper.GetProperty(rolesList, role.Key),
                                a => PropertyHelper.SetProperty(rolesList, role.Key,
                                                                !PropertyHelper.GetProperty(rolesList, role.Key)),
                                roleToggles);
            }

            Utils.AddButton("Set Skills", TrainerBehaviour.SetSkillPerEmployee, roleToggles);

            var specializationsList = PropertyHelper.SpecializationsList;

            foreach (var specialization in specializationsList)
            {
                Utils.AddToggle(specialization.Key,
                                PropertyHelper.GetProperty(specializationsList, specialization.Key),
                                a => PropertyHelper.SetProperty(specializationsList, specialization.Key,
                                                                !PropertyHelper.GetProperty(specializationsList, specialization.Key)),
                                specializationToggles);
            }

            Utils.CreateGameObjects(Constants.FIRST_COLUMN, 1, roleToggles.ToArray(), Window);
            Utils.CreateGameObjects(Constants.SECOND_COLUMN, 1, specializationToggles.ToArray(), Window);

            int[] columnsCount = new int[]
            {
                roleToggles.Count(),
                  specializationToggles.Count()
            };

            Utils.SetWindowSize(columnsCount, Constants.X_EMPLOYEESKILLCHANGE_WINDOW, Constants.Y_EMPLOYEESKILLCHANGE_WINDOW_OFFSET, Window);
        }
예제 #3
0
        public override WriteDictionary Serialize(GameReader.LoadMode mode)
        {
            var data = new WriteDictionary();

            foreach (var Pair in PropertyHelper.Settings)
            {
                data[Pair.Key] = PropertyHelper.GetProperty(PropertyHelper.Settings, Pair.Key);
            }

            return(data);
        }
예제 #4
0
        private void Update()
        {
            if (!isActiveAndEnabled || !PropertyHelper.IsGameLoaded)
            {
                return;
            }

            if (Input.GetKey(KeyCode.F1))
            {
                Main.OpenSettingsWindow();
            }

            if (Input.GetKey(KeyCode.F2))
            {
                Main.CloseSettingsWindow();
            }

            foreach (Furniture furniture in Settings.sRoomManager.AllFurniture)
            {
                if (PropertyHelper.GetProperty(TrainerSettings, "NoiseReduction"))
                {
                    furniture.ActorNoise       = 0f;
                    furniture.EnvironmentNoise = 0f;
                    furniture.FinalNoise       = 0f;
                    furniture.Noisiness        = 0;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "NoWaterElectricity"))
                {
                    furniture.Water   = 0;
                    furniture.Wattage = 0;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "DisableFires"))
                {
                    furniture.Parent.Temperature = 21f;
                    if (furniture.Parent.IsOnFire)
                    {
                        furniture.Parent.StopFire();
                    }
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "IncreaseBookshelfSkill") && furniture.Type == "Bookshelf")
                {
                    furniture.AuraValues[1] = 0.75f;
                }

                //TODO: else 0.25
                if (PropertyHelper.GetProperty(TrainerSettings, "NoMaintenance"))
                {
                    switch (furniture.Type)
                    {
                    case "Chair":
                        if (furniture.Comfort < 1.2f)
                        {
                            furniture.Comfort = 1.5f;
                        }
                        goto case "Ventilation";

                    case "CCTV":
                    case "Computer":
                    case "Lamp":
                    case "Server":
                    case "Product Printer":
                    case "Radiator":
                    case "Sink":
                    case "Toilet":
                    case "Ventilation":
                        if (furniture.upg != null && furniture.upg.Quality < 0.8f)
                        {
                            furniture.upg.Quality = 1f;
                            furniture.upg.Broken  = false;
                        }
                        break;
                    }
                }
            }

            for (int i = 0; i < Settings.sRoomManager.Rooms.Count; i++)
            {
                Room room = Settings.sRoomManager.Rooms[i];

                if (PropertyHelper.GetProperty(TrainerSettings, "CleanRooms"))
                {
                    room.ClearDirt();
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "TemperatureLock"))
                {
                    room.Temperature = 21.4f;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "FullEnvironment"))
                {
                    room.FurnEnvironment = 4;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "FullRoomBrightness"))
                {
                    room.IndirectLighting = 8;
                }
            }

            for (int i = 0; i < Settings.sActorManager.Actors.Count; i++)
            {
                Actor    actor    = Settings.sActorManager.Actors[i];
                Employee employee = Settings.sActorManager.Actors[i].employee;

                //if (PropertyHelper.GetProperty(TrainerSettings, "DisableSkillDecay"))
                //{
                //    for (int index = 0; index < 5; index++)
                //    {
                //        if (employee.IsRole((Employee.EmployeeRole)index))
                //        {
                //            employee.ChangeSkillDirect((Employee.EmployeeRole)index, employee.GetSkill((Employee.EmployeeRole)index));
                //            foreach (var specialization in Settings.Specializations)
                //            {
                //                employee.SetSpecialization(Employee.EmployeeRole.Designer, specialization, employee.GetSpecialization(Employee.EmployeeRole.Designer, specialization));
                //                employee.SetSpecialization(Employee.EmployeeRole.Artist, specialization, employee.GetSpecialization(Employee.EmployeeRole.Artist, specialization));
                //                employee.SetSpecialization(Employee.EmployeeRole.Programmer, specialization, employee.GetSpecialization(Employee.EmployeeRole.Programmer, specialization));
                //                employee.SetSpecialization(Employee.EmployeeRole.Lead, specialization, employee.GetSpecialization(Employee.EmployeeRole.Lead, specialization));
                //                employee.SetSpecialization(Employee.EmployeeRole.Service, specialization, employee.GetSpecialization(Employee.EmployeeRole.Service, specialization));
                //            }
                //        }
                //    }
                //}

                if (PropertyHelper.GetProperty(TrainerSettings, "NoSickness") && actor.SpecialState == Actor.HomeState.Sick)
                {
                    var sickActors = TimeOfDay.Instance.Sick;

                    if (sickActors != null)
                    {
                        if (sickActors.Contains(actor))
                        {
                            TimeOfDay.Instance.Sick.Remove(actor);
                        }
                    }
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "LockAge"))
                {
                    employee.AgeMonth = (int)employee.Age * 12;                     //20*12
                    actor.UpdateAgeLook();
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "NoStress"))
                {
                    employee.Stress = 1;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "FullEfficiency"))
                {
                    if (employee.RoleString.Contains("Lead"))
                    {
                        actor.Effectiveness = PropertyHelper.GetProperty(TrainerSettings, "UltraEfficiency") ? 20 : 4;
                    }
                    else
                    {
                        actor.Effectiveness = PropertyHelper.GetProperty(TrainerSettings, "UltraEfficiency") ? 10 : 2;
                    }
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "FullSatisfaction"))
                {
                    employee.JobSatisfaction = 2f;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "NoNeeds"))
                {
                    employee.Bladder = 1;
                    employee.Hunger  = 1;
                    employee.Energy  = 1;
                    employee.Social  = 1;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "FreeEmployees"))
                {
                    employee.ChangeSalary(0f, 0f, actor, false);
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "NoiseReduction"))
                {
                    actor.Noisiness = 0;
                }

                if (PropertyHelper.GetProperty(TrainerSettings, "NoVacation"))
                {
                    actor.VacationMonth = SDateTime.NextMonth(24);
                }

                actor.WalkSpeed = PropertyHelper.GetProperty(TrainerSettings, "IncreaseWalkSpeed") ? 4f : 2f;
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "AutoDistributionDeals"))
            {
                Settings.Distribution.TimeToCancel = -999;
                foreach (var company in Settings.simulation.Companies)
                {
                    company.Value.HasDistributionDeal = true;
                }
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "MoreHostingDeals"))
            {
                int inGameHour = TimeOfDay.Instance.Hour;

                if ((inGameHour == 9 || inGameHour == 15) && !PropertyHelper.DealIsPushed)
                {
                    PushDeal();
                }
                else if (inGameHour != 9 && inGameHour != 15 && PropertyHelper.DealIsPushed)
                {
                    PropertyHelper.DealIsPushed = false;
                }

                if (!PropertyHelper.RewardIsGained && inGameHour == 12)
                {
                    PushReward();
                }
                else if (inGameHour != 12 && PropertyHelper.RewardIsGained)
                {
                    PropertyHelper.RewardIsGained = false;
                }
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "DisableBurglars"))
            {
                foreach (var burglar in Settings.sActorManager.Others["Burglars"])
                {
                    burglar.Dismiss();
                    burglar.Despawned = true;
                    Settings.sActorManager.RemoveFromAwaiting(burglar);
                }
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "AutoEndDesign"))
            {
                var designDocuments = Settings.MyCompany.WorkItems
                                      .OfType <DesignDocument>()
                                      .Where(d => d.HasFinished)
                                      .ToList();

                designDocuments.ForEach(designDocument =>
                {
                    designDocument.PromoteAction();
                });
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "AutoEndResearch"))
            {
                var researchWorks = Settings.MyCompany.WorkItems
                                    .OfType <ResearchWork>()
                                    .Where(rw => rw.Finished)
                                    .ToList();

                researchWorks.ForEach(researchWork =>
                {
                    GameSettings.Instance.MyCompany.AddResearch(researchWork.Spec, researchWork.Year);
                    TechLevel tech = GameSettings.Instance.simulation.AddTechLevel(researchWork.Spec, researchWork.Year);
                    if (tech != null)
                    {
                        LegalWork legalWork = new LegalWork(tech);
                        GameSettings.Instance.MyCompany.WorkItems.Add(legalWork);
                        GameSettings.Instance.ApplyDefaultTeams(legalWork, ((int)legalWork.Type).ToString() + "Team");
                    }
                    researchWork.Kill(false);
                });
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "AutoEndPatent"))
            {
                var legalWorks = Settings.MyCompany.WorkItems
                                 .OfType <LegalWork>()
                                 .Where(lw => lw.CurrentStage() == "Finished" &&
                                        lw.Type == LegalWork.WorkType.Patent)
                                 .ToList();

                legalWorks.ForEach(legalWork =>
                {
                    legalWork.PatentNow();
                });
            }

            //TODO: add printspeed and printprice when it's disabled (else)
            if (PropertyHelper.GetProperty(TrainerSettings, "FreePrint"))
            {
                Settings.ProductPrinters.ForEach(p => p.PrintPrice = 0f);
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "IncreasePrintSpeed"))
            {
                Settings.ProductPrinters.ForEach(p => p.PrintSpeed = 2f);
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "NoEducationCost"))
            {
                EducationWindow.EdCost = new float[3]
                {
                    0f, 0f, 0f
                };
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "FreeStaff"))
            {
                Settings.StaffSalaryDue = 0f;
            }

            if (PropertyHelper.GetProperty(TrainerSettings, "NoServerCost"))
            {
                Settings.ServerCost = 0f;
            }

            //LoanWindow.factor = 250000;
            GameSettings.MaxFloor  = 100;            //10 default
            AI.MaxBoxes            = PropertyHelper.GetProperty(TrainerSettings, "IncreaseCourierCapacity") ? 108 : 54;
            AI.BoxPrice            = PropertyHelper.GetProperty(TrainerSettings, "ReduceBoxPrice") ? 62.5f : 125;
            Server.ISPCost         = PropertyHelper.GetProperty(TrainerSettings, "ReduceISPCost") ? 15f : 30f;
            Settings.ExpansionCost = PropertyHelper.GetProperty(TrainerSettings, "ReduceExpansionCost") ? 175f : 350f;
        }
예제 #5
0
        private static void Init()
        {
            var settings = PropertyHelper.Settings;

            Window = WindowManager.SpawnWindow();
            Window.InitialTitle   = Window.TitleText.text = Window.NonLocTitle = _title;
            Window.name           = "TrainerSettings";
            Window.MainPanel.name = "TrainerSettingsPanel";

            if (Window.name == "TrainerSettings")
            {
                Window.GetComponentsInChildren <Button>()
                .SingleOrDefault(x => x.name == "CloseButton")
                .onClick.AddListener(() => Shown = false);
            }

            List <GameObject> column1 = new List <GameObject>();
            List <GameObject> column2 = new List <GameObject>();
            List <GameObject> column3 = new List <GameObject>();
            List <GameObject> column4 = new List <GameObject>();

            Utils.AddInputBox("Product Name Here", new Rect(Constants.FIRST_COLUMN, Constants.FOURTH_ROW, Constants.ELEMENT_WIDTH, Constants.ELEMENT_HEIGHT),
                              boxText => PropertyHelper.ProductPriceName = boxText, Window);

            Utils.AddButton("Add Money", new Rect(Constants.FIRST_COLUMN, Constants.FIRST_ROW, Constants.ELEMENT_WIDTH, Constants.ELEMENT_HEIGHT), TrainerBehaviour.IncreaseMoney, Window);

            Utils.AddButton("Add Reputation", new Rect(Constants.SECOND_COLUMN, Constants.FIRST_ROW, Constants.ELEMENT_WIDTH, Constants.ELEMENT_HEIGHT), TrainerBehaviour.AddRep, Window);

            Utils.AddButton("Set Product Price", new Rect(Constants.SECOND_COLUMN, Constants.FOURTH_ROW, Constants.ELEMENT_WIDTH, Constants.ELEMENT_HEIGHT), TrainerBehaviour.SetProductPrice, Window);

            Utils.AddButton("Set Product Stock", new Rect(Constants.THIRD_COLUMN, Constants.FOURTH_ROW, Constants.ELEMENT_WIDTH, Constants.ELEMENT_HEIGHT), TrainerBehaviour.SetProductStock, Window);

            Utils.AddButton("Set Active Users", new Rect(Constants.FOURTH_COLUMN, Constants.FOURTH_ROW, Constants.ELEMENT_WIDTH, Constants.ELEMENT_HEIGHT), TrainerBehaviour.AddActiveUsers, Window);

            Utils.AddButton("Max Followers", new Rect(Constants.FIRST_COLUMN, Constants.SECOND_ROW, Constants.ELEMENT_WIDTH, Constants.ELEMENT_HEIGHT), TrainerBehaviour.MaxFollowers, Window);

            Utils.AddButton("Fix Bugs", new Rect(Constants.SECOND_COLUMN, Constants.SECOND_ROW, Constants.ELEMENT_WIDTH, Constants.ELEMENT_HEIGHT), TrainerBehaviour.FixBugs, Window);

            //Utils.AddButton("Max Code", new Rect(Constants.THIRD_COLUMN, Constants.SECOND_ROW, Constants.Y_BUTTON_WIDTH, Constants.Y_BUTTON_HEIGHT), TrainerBehaviour.MaxCode, Window);

            //Utils.AddButton("Max Art", new Rect(Constants.FOURTH_COLUMN, Constants.SECOND_ROW, Constants.Y_BUTTON_WIDTH, Constants.Y_BUTTON_HEIGHT), TrainerBehaviour.MaxArt, Window);

            Utils.AddButton("Takeover Company", new Rect(Constants.FIRST_COLUMN, Constants.SIXTH_ROW, Constants.ELEMENT_WIDTH, Constants.ELEMENT_HEIGHT), TrainerBehaviour.TakeoverCompany, Window);

            Utils.AddButton("Subsidiary Company", new Rect(Constants.SECOND_COLUMN, Constants.SIXTH_ROW, Constants.ELEMENT_WIDTH, Constants.ELEMENT_HEIGHT), TrainerBehaviour.SubDCompany, Window);

            Utils.AddButton("Bankrupt", new Rect(Constants.THIRD_COLUMN, Constants.SIXTH_ROW, Constants.ELEMENT_WIDTH, Constants.ELEMENT_HEIGHT), TrainerBehaviour.ForceBankrupt, Window);

            #region column1

            Utils.AddButton("AI Bankrupt All", TrainerBehaviour.AIBankrupt, ref column1);

            Utils.AddButton("Days per month", TrainerBehaviour.MonthDays, ref column1);

            Utils.AddButton("Clear all loans", TrainerBehaviour.ClearLoans, ref column1);

            Utils.AddButton("Max Skill of employees", TrainerBehaviour.EmployeesToMax, ref column1);

            Utils.AddButton("Remove Products", TrainerBehaviour.RemoveSoft, ref column1);

            Utils.AddButton("Reset age of employees", TrainerBehaviour.ResetAgeOfEmployees, ref column1);

            Utils.AddButton("Sell products stock", TrainerBehaviour.SellProductStock, ref column1);

            Utils.AddButton("Unlock all furniture", TrainerBehaviour.UnlockFurniture, ref column1);

            Utils.AddButton("Unlock all space", TrainerBehaviour.UnlockAllSpace, ref column1);

            //Utils.AddButton("Test", TrainerBehaviour.Test, ref column1);

            #endregion

            #region column2

            Utils.AddToggle("Disable Needs", PropertyHelper.GetProperty(settings, "NoNeeds"),
                            a => PropertyHelper.SetProperty(settings, "NoNeeds", !PropertyHelper.GetProperty(settings, "NoNeeds")), ref column2);

            Utils.AddToggle("Disable Stress", PropertyHelper.GetProperty(settings, "NoStress"),
                            a => PropertyHelper.SetProperty(settings, "NoStress", !PropertyHelper.GetProperty(settings, "NoStress")), ref column2);

            Utils.AddToggle("Free Employees", PropertyHelper.GetProperty(settings, "FreeEmployees"),
                            a => PropertyHelper.SetProperty(settings, "FreeEmployees", !PropertyHelper.GetProperty(settings, "FreeEmployees")), ref column2);

            Utils.AddToggle("Free Staff", PropertyHelper.GetProperty(settings, "FreeStaff"),
                            a => PropertyHelper.SetProperty(settings, "FreeStaff", !PropertyHelper.GetProperty(settings, "FreeStaff")), ref column2);

            Utils.AddToggle("Full Efficiency", PropertyHelper.GetProperty(settings, "FullEfficiency"),
                            a => PropertyHelper.SetProperty(settings, "FullEfficiency", !PropertyHelper.GetProperty(settings, "FullEfficiency")), ref column2);

            Utils.AddToggle("Full Satisfaction", PropertyHelper.GetProperty(settings, "FullSatisfaction"),
                            a => PropertyHelper.SetProperty(settings, "FullSatisfaction", !PropertyHelper.GetProperty(settings, "FullSatisfaction")), ref column2);

            Utils.AddToggle("Lock Age of Employees", PropertyHelper.GetProperty(settings, "LockAge"),
                            a => PropertyHelper.SetProperty(settings, "LockAge", !PropertyHelper.GetProperty(settings, "LockAge")), ref column2);

            Utils.AddToggle("No Vacation", PropertyHelper.GetProperty(settings, "NoVacation"),
                            a => PropertyHelper.SetProperty(settings, "NoVacation", !PropertyHelper.GetProperty(settings, "NoVacation")), ref column2);

            Utils.AddToggle("No Sickness", PropertyHelper.GetProperty(settings, "NoSickness"),
                            a => PropertyHelper.SetProperty(settings, "NoSickness", !PropertyHelper.GetProperty(settings, "NoSickness")), ref column2);

            Utils.AddToggle("Ultra Efficiency (Tick Full Eff first)", PropertyHelper.GetProperty(settings, "UltraEfficiency"),
                            a => PropertyHelper.SetProperty(settings, "UltraEfficiency", !PropertyHelper.GetProperty(settings, "UltraEfficiency")), ref column2);

            #endregion

            #region column3

            Utils.AddToggle("Full Environment", PropertyHelper.GetProperty(settings, "FullEnvironment"),
                            a => PropertyHelper.SetProperty(settings, "FullEnvironment", !PropertyHelper.GetProperty(settings, "FullEnvironment")), ref column3);

            Utils.AddToggle("Full Sun Light", PropertyHelper.GetProperty(settings, "FullRoomBrightness"),
                            a => PropertyHelper.SetProperty(settings, "FullRoomBrightness", !PropertyHelper.GetProperty(settings, "FullRoomBrightness")), ref column3);

            Utils.AddToggle("Lock Temperature To 21", PropertyHelper.GetProperty(settings, "TemperatureLock"),
                            a => PropertyHelper.SetProperty(settings, "TemperatureLock", !PropertyHelper.GetProperty(settings, "TemperatureLock")), ref column3);

            Utils.AddToggle("No Maintenance", PropertyHelper.GetProperty(settings, "NoMaintenance"),
                            a => PropertyHelper.SetProperty(settings, "NoMaintenance", !PropertyHelper.GetProperty(settings, "NoMaintenance")), ref column3);

            Utils.AddToggle("Noise Reduction", PropertyHelper.GetProperty(settings, "NoiseReduction"),
                            a => PropertyHelper.SetProperty(settings, "NoiseReduction", !PropertyHelper.GetProperty(settings, "NoiseReduction")), ref column3);

            Utils.AddToggle("Rooms Never Dirty", PropertyHelper.GetProperty(settings, "CleanRooms"),
                            a => PropertyHelper.SetProperty(settings, "CleanRooms", !PropertyHelper.GetProperty(settings, "CleanRooms")), ref column3);

            Utils.AddToggle("No Education Cost", PropertyHelper.GetProperty(settings, "NoEducationCost"),
                            a => PropertyHelper.SetProperty(settings, "NoEducationCost", !PropertyHelper.GetProperty(settings, "NoEducationCost")), ref column3);

            //Utils.AddToggle("Disable Burglars", PropertyHelper.GetProperty(settings, "DisableBurglars"),
            //    a => PropertyHelper.SetProperty(settings, "DisableBurglars", !PropertyHelper.GetProperty(settings, "DisableBurglars")), ref column3);

            //Utils.AddToggle("Disable Fires", PropertyHelper.GetProperty(settings, "DisableFires"),
            //    a => PropertyHelper.SetProperty(settings, "DisableFires", !PropertyHelper.GetProperty(settings, "DisableFires")), ref column3);

            Utils.AddToggle("Auto Design End", PropertyHelper.GetProperty(settings, "AutoEndDesign"),
                            a => PropertyHelper.SetProperty(settings, "AutoEndDesign", !PropertyHelper.GetProperty(settings, "AutoEndDesign")), ref column3);

            Utils.AddToggle("Auto Research End", PropertyHelper.GetProperty(settings, "AutoEndResearch"),
                            a => PropertyHelper.SetProperty(settings, "AutoEndResearch", !PropertyHelper.GetProperty(settings, "AutoEndResearch")), ref column3);

            Utils.AddToggle("Auto Patent End", PropertyHelper.GetProperty(settings, "AutoEndPatent"),
                            a => PropertyHelper.SetProperty(settings, "AutoEndPatent", !PropertyHelper.GetProperty(settings, "AutoEndPatent")), ref column3);

            Utils.AddToggle("Increase Walk Speed", PropertyHelper.GetProperty(settings, "IncreaseWalkSpeed"),
                            a => PropertyHelper.SetProperty(settings, "IncreaseWalkSpeed", !PropertyHelper.GetProperty(settings, "IncreaseWalkSpeed")), ref column3);

            #endregion

            #region column4

            //Utils.AddToggle("Auto Distribution Deals", PropertyHelper.GetProperty(settings, "AutoDistributionDeals"),
            //    a => PropertyHelper.SetProperty(settings, "AutoDistributionDeals", !PropertyHelper.GetProperty(settings, "AutoDistributionDeals")), ref column4);

            Utils.AddToggle("Free Print", PropertyHelper.GetProperty(settings, "FreePrint"),
                            a => PropertyHelper.SetProperty(settings, "FreePrint", !PropertyHelper.GetProperty(settings, "FreePrint")), ref column4);

            Utils.AddToggle("Free Water & Electricity", PropertyHelper.GetProperty(settings, "NoWaterElectricity"),
                            a => PropertyHelper.SetProperty(settings, "NoWaterElectricity", !PropertyHelper.GetProperty(settings, "NoWaterElectricity")), ref column4);

            Utils.AddToggle("Increase Bookshelf Skill", PropertyHelper.GetProperty(settings, "IncreaseBookshelfSkill"),
                            a => PropertyHelper.SetProperty(settings, "IncreaseBookshelfSkill", !PropertyHelper.GetProperty(settings, "IncreaseBookshelfSkill")), ref column4);

            Utils.AddToggle("Increase Courier Capacity", PropertyHelper.GetProperty(settings, "IncreaseCourierCapacity"),
                            a => PropertyHelper.SetProperty(settings, "IncreaseCourierCapacity", !PropertyHelper.GetProperty(settings, "IncreaseCourierCapacity")), ref column4);

            Utils.AddToggle("Increase Print Speed", PropertyHelper.GetProperty(settings, "IncreasePrintSpeed"),
                            a => PropertyHelper.SetProperty(settings, "IncreasePrintSpeed", !PropertyHelper.GetProperty(settings, "IncreasePrintSpeed")), ref column4);

            Utils.AddToggle("More Hosting Deals", PropertyHelper.GetProperty(settings, "MoreHostingDeals"),
                            a => PropertyHelper.SetProperty(settings, "MoreHostingDeals", !PropertyHelper.GetProperty(settings, "MoreHostingDeals")), ref column4);

            Utils.AddToggle("Reduce Internet Cost", PropertyHelper.GetProperty(settings, "ReduceISPCost"),
                            a => PropertyHelper.SetProperty(settings, "ReduceISPCost", !PropertyHelper.GetProperty(settings, "ReduceISPCost")), ref column4);

            //Utils.AddToggle("Disable Skill Decay", PropertyHelper.GetProperty(settings, "DisableSkillDecay"),
            //    a => PropertyHelper.SetProperty(settings, "DisableSkillDecay", !PropertyHelper.GetProperty(settings, "DisableSkillDecay")), ref column4);

            Utils.AddToggle("No Server Cost", PropertyHelper.GetProperty(settings, "NoServerCost"),
                            a => PropertyHelper.SetProperty(settings, "NoServerCost", !PropertyHelper.GetProperty(settings, "NoServerCost")), ref column4);

            Utils.AddToggle("Reduce Expansion Cost", PropertyHelper.GetProperty(settings, "ReduceExpansionCost"),
                            a => PropertyHelper.SetProperty(settings, "ReduceExpansionCost", !PropertyHelper.GetProperty(settings, "ReduceExpansionCost")), ref column4);

            Utils.AddToggle("Reduce Box Price", PropertyHelper.GetProperty(settings, "ReduceBoxPrice"),
                            a => PropertyHelper.SetProperty(settings, "ReduceBoxPrice", !PropertyHelper.GetProperty(settings, "ReduceBoxPrice")), ref column4);
            #endregion

            Utils.CreateGameObjects(Constants.FIRST_COLUMN, Constants.SETTINGS_WINDOW_SKIP_ROWS, column1.ToArray(), Window);
            Utils.CreateGameObjects(Constants.SECOND_COLUMN, Constants.SETTINGS_WINDOW_SKIP_ROWS, column2.ToArray(), Window);
            Utils.CreateGameObjects(Constants.THIRD_COLUMN, Constants.SETTINGS_WINDOW_SKIP_ROWS, column3.ToArray(), Window);
            Utils.CreateGameObjects(Constants.FOURTH_COLUMN, Constants.SETTINGS_WINDOW_SKIP_ROWS, column4.ToArray(), Window);

            int[] columnsCount = new int[]
            {
                column1.Count(), column2.Count(), column3.Count(), column4.Count()
            };

            Utils.SetWindowSize(columnsCount, Constants.X_SETTINGS_WINDOW, Constants.Y_SETTINGS_WINDOW_OFFSET, Window);
        }