public static void Postfix(HumanWorldInfoPanel __instance, ref string __result, uint citizenID)
 {
     if (CustomizeItExtendedCitizenTool.instance.CustomJobTitles.TryGetValue(citizenID, out string title))
     {
         __result = title;
     }
 }
Пример #2
0
        public static void UpdateJobTitle(HumanWorldInfoPanel infoPanel, string title)
        {
            UILabel jobLabel = infoPanel.GetType()
                               .GetField("m_Occupation", BindingFlags.Instance | BindingFlags.NonPublic)
                               ?.GetValue(infoPanel) as UILabel;

            //jobLabel.GetType().GetField("m_Text", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(jobLabel, title);
            jobLabel.GetType().GetField("text", BindingFlags.Instance | BindingFlags.Public).SetValue(jobLabel, title);
        }
        public static void UpdateMyCitizen(string action)
        {
            object L = FavCimsCore.GetPrivateVariable <object>(InstanceManager.instance, "m_lock");

            do
            {
            }while (!Monitor.TryEnter(L, SimulationManager.SYNCHRONIZE_TIMEOUT));

            try
            {
                InstanceManager MyInstance = Singleton <InstanceManager> .instance;
                FavCimsMainClass.FavCimsHumanPanel.SimulateClick();
                InstanceID ThisHuman = HumanWorldInfoPanel.GetCurrentInstanceID();

                string CitizenName = MyInstance.GetName(ThisHuman);
                int    citizenID   = (int)((UIntPtr)ThisHuman.Citizen);

                if (action == "toggle" && CitizenName != null)                   //remove
                {
                    try {
                        MyInstance.SetName(ThisHuman, null);
                        RemoveIdFromArray(citizenID);
                    } catch (Exception e) {
                        Debug.Error("Toggle Remove Fail : " + e.ToString());
                    }
                }
                else
                {
                    try {                     //add favorite by clicking the Star Button.
                        UITextField DefaultName = FavCimsMainClass.FavCimsHumanPanel.GetComponentInChildren <UITextField>();
                        MyInstance.SetName(ThisHuman, DefaultName.text);
                    } catch (Exception e) {
                        Debug.Error("Toggle Add Fail : " + e.ToString());
                    }
                }
            }
            finally
            {
                Monitor.Exit(L);
            }
        }
Пример #4
0
        private void Initialize()
        {
            if (!initializedZonedBuildingsPanel)
            {
                sceneExplorer = FindObjectOfType <SceneExplorer>();

                buildingsBufferRefChain = new ReferenceChain()
                                          .Add(BuildingManager.instance.gameObject)
                                          .Add(BuildingManager.instance)
                                          .Add(typeof(BuildingManager).GetField("m_buildings"))
                                          .Add(typeof(Array16 <Building>).GetField("m_buffer"));

                zonedBuildingInfoPanel =
                    GameObject.Find("(Library) ZonedBuildingWorldInfoPanel").GetComponent <ZonedBuildingWorldInfoPanel>();
                if (zonedBuildingInfoPanel != null)
                {
                    AddBuildingPanelControls(zonedBuildingInfoPanel, out zonedBuildingAssetNameLabel,
                                             out zonedBuildingShowExplorerButton, new Vector3(-8.0f, 100.0f, 0.0f),
                                             out zonedBuildingDumpMeshTextureButton, new Vector3(-8.0f, 132.0f, 0.0f)
                                             );
                    initializedZonedBuildingsPanel = true;
                }
            }

            if (!initializedServiceBuildingsPanel)
            {
                sceneExplorer            = FindObjectOfType <SceneExplorer>();
                serviceBuildingInfoPanel =
                    GameObject.Find("(Library) CityServiceWorldInfoPanel").GetComponent <CityServiceWorldInfoPanel>();
                if (serviceBuildingInfoPanel != null)
                {
                    AddBuildingPanelControls(serviceBuildingInfoPanel, out serviceBuildingAssetNameLabel,
                                             out serviceBuildingShowExplorerButton, new Vector3(-8.0f, 175.0f, 0.0f),
                                             out serviceBuildingDumpMeshTextureButton, new Vector3(-8.0f, 200.0f, 0.0f)
                                             );
                    initializedServiceBuildingsPanel = true;
                }
            }

            if (!initializedCitizenVehiclePanel)
            {
                sceneExplorer = FindObjectOfType <SceneExplorer>();

                vehiclesBufferRefChain = new ReferenceChain()
                                         .Add(VehicleManager.instance.gameObject)
                                         .Add(VehicleManager.instance)
                                         .Add(typeof(VehicleManager).GetField("m_vehicles"))
                                         .Add(typeof(Array16 <Vehicle>).GetField("m_buffer"));

                vehiclesParkedBufferRefChain = new ReferenceChain()
                                               .Add(VehicleManager.instance.gameObject)
                                               .Add(VehicleManager.instance)
                                               .Add(typeof(VehicleManager).GetField("m_parkedVehicles"))
                                               .Add(typeof(Array16 <VehicleParked>).GetField("m_buffer"));

                citizenVehicleInfoPanel =
                    GameObject.Find("(Library) CitizenVehicleWorldInfoPanel").GetComponent <CitizenVehicleWorldInfoPanel>();
                if (citizenVehicleInfoPanel != null)
                {
                    AddVehiclePanelControls(
                        citizenVehicleInfoPanel,
                        out citizenVehicleAssetNameLabel,
                        out citizenVehicleShowExplorerButton,
                        out citizenVehicleDumpTextureMeshButton
                        );
                    initializedCitizenVehiclePanel = true;
                }
            }

            if (!initializedCityServiceVehiclePanel)
            {
                sceneExplorer = FindObjectOfType <SceneExplorer>();

                cityServiceVehicleInfoPanel =
                    GameObject.Find("(Library) CityServiceVehicleWorldInfoPanel")
                    .GetComponent <CityServiceVehicleWorldInfoPanel>();
                if (cityServiceVehicleInfoPanel != null)
                {
                    AddVehiclePanelControls(
                        cityServiceVehicleInfoPanel,
                        out cityServiceVehicleAssetNameLabel,
                        out cityServiceVehicleShowExplorerButton,
                        out cityServiceVehicleDumpTextureMeshButton);
                    initializedCityServiceVehiclePanel = true;
                }
            }

            if (!initializedPublicTransportVehiclePanel)
            {
                sceneExplorer = FindObjectOfType <SceneExplorer>();

                publicTransportVehicleInfoPanel =
                    GameObject.Find("(Library) PublicTransportVehicleWorldInfoPanel")
                    .GetComponent <PublicTransportVehicleWorldInfoPanel>();
                if (publicTransportVehicleInfoPanel != null)
                {
                    AddVehiclePanelControls(
                        publicTransportVehicleInfoPanel,
                        out publicTransportVehicleAssetNameLabel,
                        out publicTransportVehicleShowExplorerButton,
                        out publicTransportVehicleDumpTextureMeshButton);
                    initializedPublicTransportVehiclePanel = true;
                }
            }

            if (!initializedAnimalPanel)
            {
                citizenInstancesBufferRefChain = new ReferenceChain()
                                                 .Add(CitizenManager.instance.gameObject)
                                                 .Add(CitizenManager.instance)
                                                 .Add(typeof(CitizenManager).GetField("m_instances"))
                                                 .Add(typeof(Array16 <CitizenInstance>).GetField("m_buffer"));
                citizensBufferRefChain = new ReferenceChain()
                                         .Add(CitizenManager.instance.gameObject)
                                         .Add(CitizenManager.instance)
                                         .Add(typeof(CitizenManager).GetField("m_citizens"))
                                         .Add(typeof(Array32 <Citizen>).GetField("m_buffer"));
                citizensUnitsBufferRefChain = new ReferenceChain()
                                              .Add(CitizenManager.instance.gameObject)
                                              .Add(CitizenManager.instance)
                                              .Add(typeof(CitizenManager).GetField("m_units"))
                                              .Add(typeof(Array32 <CitizenUnit>).GetField("m_buffer"));

                sceneExplorer   = FindObjectOfType <SceneExplorer>();
                animalInfoPanel = GameObject.Find("(Library) AnimalWorldInfoPanel").GetComponent <AnimalWorldInfoPanel>();
                if (animalInfoPanel != null)
                {
                    AddCitizenPanelControls(animalInfoPanel, out animalAssetNameLabel,
                                            out animalShowExplorerButton, new Vector3(-8.0f, 65.0f, 0.0f),
                                            out animalShowInstanceButton, new Vector3(-8.0f, 90.0f, 0.0f),
                                            out animalShowUnitButton, new Vector3(-8.0f, 115.0f, 0.0f)
                                            );
                    initializedAnimalPanel = true;
                }
            }

            if (!initializedCitizenPanel)
            {
                citizenInstancesBufferRefChain = new ReferenceChain()
                                                 .Add(CitizenManager.instance.gameObject)
                                                 .Add(CitizenManager.instance)
                                                 .Add(typeof(CitizenManager).GetField("m_instances"))
                                                 .Add(typeof(Array16 <CitizenInstance>).GetField("m_buffer"));
                citizensBufferRefChain = new ReferenceChain()
                                         .Add(CitizenManager.instance.gameObject)
                                         .Add(CitizenManager.instance)
                                         .Add(typeof(CitizenManager).GetField("m_citizens"))
                                         .Add(typeof(Array32 <Citizen>).GetField("m_buffer"));
                citizensUnitsBufferRefChain = new ReferenceChain()
                                              .Add(CitizenManager.instance.gameObject)
                                              .Add(CitizenManager.instance)
                                              .Add(typeof(CitizenManager).GetField("m_units"))
                                              .Add(typeof(Array32 <CitizenUnit>).GetField("m_buffer"));


                sceneExplorer    = FindObjectOfType <SceneExplorer>();
                citizenInfoPanel = GameObject.Find("(Library) CitizenWorldInfoPanel").GetComponent <HumanWorldInfoPanel>();
                if (citizenInfoPanel != null)
                {
                    AddCitizenPanelControls(citizenInfoPanel, out citizenAssetNameLabel,
                                            out citizenShowExplorerButton, new Vector3(-8.0f, 110.0f, 0.0f),
                                            out citizenShowInstanceButton, new Vector3(-8.0f, 135.0f, 0.0f),
                                            out citizenShowUnitButton, new Vector3(-8.0f, 160.0f, 0.0f)
                                            );
                    initializedCitizenPanel = true;
                }
            }
        }
        public override void Update()
        {
            if (FavCimsMainClass.UnLoading)
            {
                return;
            }

            if (this.isVisible)
            {
                if (!HumanWorldInfoPanel.GetCurrentInstanceID().IsEmpty)
                {
                    ThisHuman = HumanWorldInfoPanel.GetCurrentInstanceID();
                    int    citizenID   = (int)((UIntPtr)ThisHuman.Citizen);
                    string CitizenName = MyInstance.GetName(ThisHuman);

                    if (CitizenName != null && CitizenName.Length > 0)
                    {
                        this.tooltip        = FavCimsLang.text("FavStarButton_disable_tooltip");
                        this.normalBgSprite = "icon_fav_subscribed";

                        if (!FavCimsCore.RowID.ContainsKey(citizenID) && !FavoriteCimsMainPanel.RowsAlreadyExist(ThisHuman))
                        {
                            object L = FavCimsCore.GetPrivateVariable <object>(InstanceManager.instance, "m_lock");
                            do
                            {
                            }while (!Monitor.TryEnter(L, SimulationManager.SYNCHRONIZE_TIMEOUT));

                            try
                            {
                                CitizenRow FavCimsCitizenSingleRowPanel = FavoriteCimsMainPanel.FavCimsCitizenRowsPanel.AddUIComponent(typeof(CitizenRow)) as CitizenRow;
                                if (FavCimsCitizenSingleRowPanel != null)
                                {
                                    FavCimsCitizenSingleRowPanel.MyInstanceID    = ThisHuman;
                                    FavCimsCitizenSingleRowPanel.MyInstancedName = CitizenName;
                                }
                            }
                            finally
                            {
                                Monitor.Exit(L);
                            }
                        }

                        return;
                    }
                    else
                    {
                        if (citizenID != 0 && FavCimsCore.RowID.ContainsKey(citizenID))
                        {
                            MyInstance.SetName(ThisHuman, MyCitizen.GetCitizenName(ThisHuman.Citizen));
                            this.tooltip        = FavCimsLang.text("FavStarButton_disable_tooltip");
                            this.normalBgSprite = "icon_fav_subscribed";
                        }
                        else
                        {
                            this.tooltip        = FavCimsLang.text("FavStarButton_enable_tooltip");
                            this.normalBgSprite = "icon_fav_unsubscribed";
                        }
                    }
                }
            }
        }