public static void Postfix(HumanWorldInfoPanel __instance, ref string __result, uint citizenID) { if (CustomizeItExtendedCitizenTool.instance.CustomJobTitles.TryGetValue(citizenID, out string title)) { __result = title; } }
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); } }
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"; } } } } }