private void CheckTarget() { if (target == null) { KPrefabID instance = KPrefabIDTracker.Get().GetInstance(target_instance_id); if ((Object)instance != (Object)null) { target = instance.GetComponent <IAssignableIdentity>(); if (target != null) { MinionIdentity minionIdentity = target as MinionIdentity; if ((bool)minionIdentity) { minionIdentity.ValidateProxy(); } else { StoredMinionIdentity storedMinionIdentity = target as StoredMinionIdentity; if ((bool)storedMinionIdentity) { storedMinionIdentity.ValidateProxy(); } } } } } }
private void RefreshHat() { if (currentlySelectedMinion != null && !currentlySelectedMinion.IsNull()) { List <IListableOption> list = new List <IListableOption>(); string empty = string.Empty; MinionIdentity minionIdentity = currentlySelectedMinion as MinionIdentity; if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null) { MinionResume component = minionIdentity.GetComponent <MinionResume>(); empty = ((!string.IsNullOrEmpty(component.TargetHat)) ? component.TargetHat : component.CurrentHat); foreach (KeyValuePair <string, bool> item in component.MasteryBySkillID) { if (item.Value) { list.Add(new SkillListable(item.Key)); } } hatDropDown.Initialize(list, OnHatDropEntryClick, hatDropDownSort, hatDropEntryRefreshAction, false, currentlySelectedMinion); } else { StoredMinionIdentity storedMinionIdentity = currentlySelectedMinion as StoredMinionIdentity; empty = ((!string.IsNullOrEmpty(storedMinionIdentity.targetHat)) ? storedMinionIdentity.targetHat : storedMinionIdentity.currentHat); } hatDropDown.openButton.enabled = ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null); selectedHat.transform.Find("Arrow").gameObject.SetActive((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null); selectedHat.sprite = Assets.GetSprite((!string.IsNullOrEmpty(empty)) ? empty : "hat_role_none"); } }
protected override void OnSpawn() { base.OnSpawn(); UpdateTint(); UpdateStatusString(); base.OnAssign += OnNewAssignment; if (assignee == null) { MinionStorage component = GetComponent <MinionStorage>(); if ((bool)component) { List <MinionStorage.Info> storedMinionInfo = component.GetStoredMinionInfo(); if (storedMinionInfo.Count > 0) { MinionStorage.Info info = storedMinionInfo[0]; Ref <KPrefabID> serializedMinion = info.serializedMinion; if (serializedMinion != null && serializedMinion.GetId() != -1) { KPrefabID kPrefabID = serializedMinion.Get(); StoredMinionIdentity component2 = kPrefabID.GetComponent <StoredMinionIdentity>(); component2.ValidateProxy(); Assign(component2); } } } } }
private void BuildMinions() { for (int num = minionWidgets.Count - 1; num >= 0; num--) { minionWidgets[num].DeleteObject(); } minionWidgets.Clear(); foreach (MinionIdentity item in Components.LiveMinionIdentities.Items) { GameObject gameObject = Util.KInstantiateUI(Prefab_minion, Prefab_minionLayout, true); gameObject.GetComponent <SkillMinionWidget>().SetMinon(item); minionWidgets.Add(gameObject.GetComponent <SkillMinionWidget>()); } foreach (MinionStorage item2 in Components.MinionStorages.Items) { foreach (MinionStorage.Info item3 in item2.GetStoredMinionInfo()) { MinionStorage.Info current3 = item3; if (current3.serializedMinion != null) { StoredMinionIdentity minon = current3.serializedMinion.Get <StoredMinionIdentity>(); GameObject gameObject2 = Util.KInstantiateUI(Prefab_minion, Prefab_minionLayout, true); gameObject2.GetComponent <SkillMinionWidget>().SetMinon(minon); minionWidgets.Add(gameObject2.GetComponent <SkillMinionWidget>()); } } } if (CurrentlySelectedMinion == null && Components.LiveMinionIdentities.Count > 0) { CurrentlySelectedMinion = Components.LiveMinionIdentities.Items[0]; } }
private void StoredMinionTooltip(IAssignableIdentity minion, ToolTip tooltip) { StoredMinionIdentity storedMinionIdentity = minion as StoredMinionIdentity; if ((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null) { tooltip.AddMultiStringTooltip(string.Format(UI.TABLESCREENS.INFORMATION_NOT_AVAILABLE_TOOLTIP, storedMinionIdentity.GetStorageReason(), storedMinionIdentity.GetProperName()), null); } }
public string SearchForArtifact(StoredMinionIdentity minionID, SpaceDestination destination) { ArtifactTier artifactDropTier = GetArtifactDropTier(minionID, destination); if (artifactDropTier == DECOR.SPACEARTIFACT.TIER_NONE) { return(null); } List <string> artifactsOfTier = GetArtifactsOfTier(artifactDropTier); return(artifactsOfTier[Random.Range(0, artifactsOfTier.Count - 1)]); }
public static GameObject DeserializeMinion(GameObject sourceMinion, Vector3 pos) { GameObject prefab = SaveLoader.Instance.saveManager.GetPrefab(MinionConfig.ID); GameObject gameObject = Util.KInstantiate(prefab, pos); StoredMinionIdentity component = sourceMinion.GetComponent <StoredMinionIdentity>(); MinionIdentity component2 = gameObject.GetComponent <MinionIdentity>(); RedirectInstanceTracker(sourceMinion, gameObject); gameObject.SetActive(true); CopyMinion(component, component2); component.assignableProxy.Get().SetTarget(component2, gameObject); Util.KDestroyGameObject(sourceMinion); return(gameObject); }
private KPrefabID CreateSerializedMinion(GameObject src_minion) { GameObject prefab = SaveLoader.Instance.saveManager.GetPrefab(StoredMinionConfig.ID); GameObject gameObject = Util.KInstantiate(prefab, Vector3.zero); gameObject.SetActive(true); MinionIdentity component = src_minion.GetComponent <MinionIdentity>(); StoredMinionIdentity component2 = gameObject.GetComponent <StoredMinionIdentity>(); CopyMinion(component, component2); RedirectInstanceTracker(src_minion, gameObject); component.assignableProxy.Get().SetTarget(component2, gameObject); Util.KDestroyGameObject(src_minion); return(gameObject.GetComponent <KPrefabID>()); }
private void CopyMinion(MinionIdentity src_id, StoredMinionIdentity dest_id) { dest_id.storedName = src_id.name; dest_id.nameStringKey = src_id.nameStringKey; dest_id.gender = src_id.gender; dest_id.genderStringKey = src_id.genderStringKey; dest_id.arrivalTime = src_id.arrivalTime; dest_id.voiceIdx = src_id.voiceIdx; dest_id.bodyData = src_id.bodyData; Traits component = src_id.GetComponent <Traits>(); dest_id.traitIDs = new List <string>(component.GetTraitIds()); dest_id.assignableProxy.Set(src_id.assignableProxy.Get()); dest_id.assignableProxy.Get().SetTarget(dest_id, dest_id.gameObject); Accessorizer component2 = src_id.GetComponent <Accessorizer>(); dest_id.accessories = component2.GetAccessories(); ConsumableConsumer component3 = src_id.GetComponent <ConsumableConsumer>(); if (component3.forbiddenTags != null) { dest_id.forbiddenTags = new List <Tag>(component3.forbiddenTags); } MinionResume component4 = src_id.GetComponent <MinionResume>(); dest_id.MasteryBySkillID = component4.MasteryBySkillID; dest_id.AptitudeBySkillGroup = component4.AptitudeBySkillGroup; dest_id.TotalExperienceGained = component4.TotalExperienceGained; dest_id.currentHat = component4.CurrentHat; dest_id.targetHat = component4.TargetHat; ChoreConsumer component5 = src_id.GetComponent <ChoreConsumer>(); dest_id.choreGroupPriorities = component5.GetChoreGroupPriorities(); AttributeLevels component6 = src_id.GetComponent <AttributeLevels>(); component6.OnSerializing(); dest_id.attributeLevels = new List <AttributeLevels.LevelSaveLoad>(component6.SaveLoadLevels); StoreModifiers(src_id, dest_id); Schedulable component7 = src_id.GetComponent <Schedulable>(); Schedule schedule = component7.GetSchedule(); if (schedule != null) { schedule.Unassign(component7); Schedulable component8 = dest_id.GetComponent <Schedulable>(); schedule.Assign(component8); } }
private static void StoreModifiers(MinionIdentity src_id, StoredMinionIdentity dest_id) { MinionModifiers component = src_id.GetComponent <MinionModifiers>(); foreach (AttributeInstance attribute in component.attributes) { if (dest_id.minionModifiers.attributes.Get(attribute.Attribute.Id) == null) { dest_id.minionModifiers.attributes.Add(attribute.Attribute); } for (int i = 0; i < attribute.Modifiers.Count; i++) { dest_id.minionModifiers.attributes.Get(attribute.Id).Add(attribute.Modifiers[i]); } } }
public void OnLand(object data) { SpaceDestination spacecraftDestination = SpacecraftManager.instance.GetSpacecraftDestination(SpacecraftManager.instance.GetSpacecraftID(GetComponent <RocketModule>().conditionManager.GetComponent <LaunchableRocket>())); foreach (MinionStorage.Info item in minionStorage.GetStoredMinionInfo()) { MinionStorage.Info current = item; StoredMinionIdentity minionID = current.serializedMinion.Get <StoredMinionIdentity>(); string text = SearchForArtifact(minionID, spacecraftDestination); if (text != null) { GameObject prefab = Assets.GetPrefab(text.ToTag()); GameObject gameObject = GameUtil.KInstantiate(prefab, base.gameObject.transform.GetPosition(), Grid.SceneLayer.Ore, null, 0); gameObject.SetActive(true); } } }
public void Refresh() { if (minion != null) { portrait.SetIdentityObject(minion, true); string empty = string.Empty; MinionIdentity minionIdentity = minion as MinionIdentity; hatDropDown.gameObject.SetActive(true); if ((Object)minionIdentity != (Object)null) { MinionResume component = minionIdentity.GetComponent <MinionResume>(); int availableSkillpoints = component.AvailableSkillpoints; int totalSkillPointsGained = component.TotalSkillPointsGained; masteryPoints.text = ((availableSkillpoints <= 0) ? "0" : GameUtil.ApplyBoldString(GameUtil.ColourizeString(new Color(0.5f, 1f, 0.5f, 1f), availableSkillpoints.ToString()))); AttributeInstance attributeInstance = Db.Get().Attributes.QualityOfLife.Lookup(component); AttributeInstance attributeInstance2 = Db.Get().Attributes.QualityOfLifeExpectation.Lookup(component); morale.text = $"{attributeInstance.GetTotalValue()}/{attributeInstance2.GetTotalValue()}"; RefreshToolTip(component); List <IListableOption> list = new List <IListableOption>(); foreach (KeyValuePair <string, bool> item in component.MasteryBySkillID) { if (item.Value) { list.Add(new SkillListable(item.Key)); } } hatDropDown.Initialize(list, OnHatDropEntryClick, hatDropDownSort, hatDropEntryRefreshAction, false, minion); empty = ((!string.IsNullOrEmpty(component.TargetHat)) ? component.TargetHat : component.CurrentHat); } else { StoredMinionIdentity storedMinionIdentity = minion as StoredMinionIdentity; ToolTip component2 = GetComponent <ToolTip>(); component2.ClearMultiStringTooltip(); component2.AddMultiStringTooltip(string.Format(UI.TABLESCREENS.INFORMATION_NOT_AVAILABLE_TOOLTIP, storedMinionIdentity.GetStorageReason(), minion.GetProperName()), null); empty = ((!string.IsNullOrEmpty(storedMinionIdentity.targetHat)) ? storedMinionIdentity.targetHat : storedMinionIdentity.currentHat); masteryPoints.text = UI.TABLESCREENS.NA; morale.text = UI.TABLESCREENS.NA; } SetColor((skillsScreen.CurrentlySelectedMinion != minion) ? unselected_color : selected_color); HierarchyReferences component3 = GetComponent <HierarchyReferences>(); RefreshHat(empty); component3.GetReference("openButton").gameObject.SetActive((Object)minionIdentity != (Object)null); } }
private string HoverChangeRowPriorityButton(object widget_go_obj, int delta) { GameObject widget_go = widget_go_obj as GameObject; LocString locString = null; LocString locString2 = null; string text = null; TableRow widgetRow = GetWidgetRow(widget_go); switch (widgetRow.rowType) { case TableRow.RowType.Header: Debug.Assert(false); return(null); case TableRow.RowType.Default: locString = UI.JOBSSCREEN.INCREASE_ROW_PRIORITY_NEW_MINION_TOOLTIP; locString2 = UI.JOBSSCREEN.DECREASE_ROW_PRIORITY_NEW_MINION_TOOLTIP; break; case TableRow.RowType.Minion: locString = UI.JOBSSCREEN.INCREASE_ROW_PRIORITY_MINION_TOOLTIP; locString2 = UI.JOBSSCREEN.DECREASE_ROW_PRIORITY_MINION_TOOLTIP; text = widgetRow.GetIdentity().GetProperName(); break; case TableRow.RowType.StoredMinon: { StoredMinionIdentity storedMinionIdentity = widgetRow.GetIdentity() as StoredMinionIdentity; if ((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null) { return(string.Format(UI.JOBSSCREEN.CANNOT_ADJUST_PRIORITY, storedMinionIdentity.GetProperName(), storedMinionIdentity.GetStorageReason())); } break; } } LocString locString3 = (delta <= 0) ? locString2 : locString; string text2 = locString3.ToString(); if (text != null) { text2 = text2.Replace("{Name}", text); } return(text2); }
public bool CheckStoredMinionIsAssignee() { foreach (MinionStorage.Info item in GetComponent <MinionStorage>().GetStoredMinionInfo()) { MinionStorage.Info current = item; if (current.serializedMinion != null) { KPrefabID kPrefabID = current.serializedMinion.Get(); if (!((Object)kPrefabID == (Object)null)) { StoredMinionIdentity component = kPrefabID.GetComponent <StoredMinionIdentity>(); Assignable component2 = GetComponent <Assignable>(); if (component2.assignee == component.assignableProxy.Get()) { return(true); } } } } return(false); }
public ArtifactTier GetArtifactDropTier(StoredMinionIdentity minionID, SpaceDestination destination) { ArtifactDropRate artifactDropTable = destination.GetDestinationType().artifactDropTable; bool flag = minionID.traitIDs.Contains("Archaeologist"); if (artifactDropTable != null) { float num = artifactDropTable.totalWeight; if (flag) { num -= artifactDropTable.GetTierWeight(DECOR.SPACEARTIFACT.TIER_NONE); } float num2 = Random.value * num; foreach (Tuple <ArtifactTier, float> rate in artifactDropTable.rates) { switch (flag) { default: if (rate.first == DECOR.SPACEARTIFACT.TIER_NONE) { break; } goto case false; case false: num2 -= rate.second; break; } if (num2 <= 0f) { return(rate.first); } } } return(DECOR.SPACEARTIFACT.TIER0); }
private void SetPortraitAnimator(IAssignableIdentity identity) { if (identity != null && !identity.IsNull()) { if ((UnityEngine.Object)animController == (UnityEngine.Object)null) { animController = Util.KInstantiateUI(Assets.GetPrefab(new Tag("FullMinionUIPortrait")), duplicantAnimAnchor.gameObject, false).GetComponent <KBatchedAnimController>(); animController.gameObject.SetActive(true); KCanvasScaler kCanvasScaler = UnityEngine.Object.FindObjectOfType <KCanvasScaler>(); animController.animScale = baseCharacterScale * (1f / kCanvasScaler.GetCanvasScale()); ScreenResize instance = ScreenResize.Instance; instance.OnResize = (System.Action)Delegate.Combine(instance.OnResize, new System.Action(OnResize)); } string value = string.Empty; Accessorizer component = animController.GetComponent <Accessorizer>(); for (int num = component.GetAccessories().Count - 1; num >= 0; num--) { component.RemoveAccessory(component.GetAccessories()[num].Get()); } MinionIdentity minionIdentity = identity as MinionIdentity; StoredMinionIdentity storedMinionIdentity = identity as StoredMinionIdentity; Accessorizer accessorizer = null; if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null) { accessorizer = minionIdentity.GetComponent <Accessorizer>(); foreach (ResourceRef <Accessory> accessory in accessorizer.GetAccessories()) { component.AddAccessory(accessory.Get()); } value = minionIdentity.GetComponent <MinionResume>().CurrentHat; } else if ((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null) { foreach (ResourceRef <Accessory> accessory2 in storedMinionIdentity.accessories) { component.AddAccessory(accessory2.Get()); } value = storedMinionIdentity.currentHat; } HashedString name = "anim_idle_healthy_kanim"; idle_anim = Assets.GetAnim(name); if ((UnityEngine.Object)idle_anim != (UnityEngine.Object)null) { animController.AddAnimOverrides(idle_anim, 0f); } animController.Queue("idle_default", KAnim.PlayMode.Loop, 1f, 0f); AccessorySlot hat = Db.Get().AccessorySlots.Hat; animController.SetSymbolVisiblity(hat.targetSymbolId, (!string.IsNullOrEmpty(value)) ? true : false); animController.SetSymbolVisiblity(Db.Get().AccessorySlots.Hair.targetSymbolId, string.IsNullOrEmpty(value) ? true : false); animController.SetSymbolVisiblity(Db.Get().AccessorySlots.HatHair.targetSymbolId, (!string.IsNullOrEmpty(value)) ? true : false); KAnim.Build.Symbol source_symbol = null; KAnim.Build.Symbol source_symbol2 = null; if ((bool)accessorizer) { source_symbol = accessorizer.GetAccessory(Db.Get().AccessorySlots.Hair).symbol; source_symbol2 = Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(accessorizer.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol; } else if ((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null) { source_symbol = storedMinionIdentity.GetAccessory(Db.Get().AccessorySlots.Hair).symbol; source_symbol2 = Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(storedMinionIdentity.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol; } animController.GetComponent <SymbolOverrideController>().AddSymbolOverride(Db.Get().AccessorySlots.HairAlways.targetSymbolId, source_symbol, 1); animController.GetComponent <SymbolOverrideController>().AddSymbolOverride(Db.Get().AccessorySlots.HatHair.targetSymbolId, source_symbol2, 1); } }
public static void SetPortraitData(IAssignableIdentity identityObject, KBatchedAnimController controller, bool useDefaultExpression = true) { if (identityObject == null) { controller.gameObject.SetActive(false); } else { MinionIdentity minionIdentity = identityObject as MinionIdentity; if ((UnityEngine.Object)minionIdentity == (UnityEngine.Object)null) { MinionAssignablesProxy minionAssignablesProxy = identityObject as MinionAssignablesProxy; if ((UnityEngine.Object)minionAssignablesProxy != (UnityEngine.Object)null && minionAssignablesProxy.target != null) { minionIdentity = (minionAssignablesProxy.target as MinionIdentity); } } controller.gameObject.SetActive(true); controller.Play("ui_idle", KAnim.PlayMode.Once, 1f, 0f); SymbolOverrideController component = controller.GetComponent <SymbolOverrideController>(); component.RemoveAllSymbolOverrides(0); if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null) { Accessorizer component2 = minionIdentity.GetComponent <Accessorizer>(); foreach (AccessorySlot resource in Db.Get().AccessorySlots.resources) { Accessory accessory = component2.GetAccessory(resource); if (accessory != null) { component.AddSymbolOverride(resource.targetSymbolId, accessory.symbol, 0); controller.SetSymbolVisiblity(resource.targetSymbolId, true); } } component.AddSymbolOverride(Db.Get().AccessorySlots.HatHair.targetSymbolId, Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(component2.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol, 1); RefreshHat(minionIdentity, controller); } else { StoredMinionIdentity storedMinionIdentity = identityObject as StoredMinionIdentity; if ((UnityEngine.Object)storedMinionIdentity == (UnityEngine.Object)null) { MinionAssignablesProxy minionAssignablesProxy2 = identityObject as MinionAssignablesProxy; if ((UnityEngine.Object)minionAssignablesProxy2 != (UnityEngine.Object)null && minionAssignablesProxy2.target != null) { storedMinionIdentity = (minionAssignablesProxy2.target as StoredMinionIdentity); } } if (!((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null)) { controller.gameObject.SetActive(false); return; } foreach (AccessorySlot resource2 in Db.Get().AccessorySlots.resources) { Accessory accessory2 = storedMinionIdentity.GetAccessory(resource2); if (accessory2 != null) { component.AddSymbolOverride(resource2.targetSymbolId, accessory2.symbol, 0); controller.SetSymbolVisiblity(resource2.targetSymbolId, true); } } component.AddSymbolOverride(Db.Get().AccessorySlots.HatHair.targetSymbolId, Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(storedMinionIdentity.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol, 1); RefreshHat(storedMinionIdentity, controller); } float animScale = 1f; if ((UnityEngine.Object)GameScreenManager.Instance != (UnityEngine.Object)null && (UnityEngine.Object)GameScreenManager.Instance.ssOverlayCanvas != (UnityEngine.Object)null) { animScale = 0.2f * (1f / GameScreenManager.Instance.ssOverlayCanvas.GetComponent <KCanvasScaler>().GetUserScale()); } controller.animScale = animScale; string s = "ui"; controller.Play(s, KAnim.PlayMode.Loop, 1f, 0f); controller.SetSymbolVisiblity("snapTo_neck", false); controller.SetSymbolVisiblity("snapTo_goggles", false); } }
public RetiredColonyData(string colonyName, int cycleCount, string date, string[] achievements, MinionAssignablesProxy[] minions, BuildingComplete[] buildingCompletes) { this.colonyName = colonyName; this.cycleCount = cycleCount; this.achievements = achievements; this.date = date; Duplicants = new RetiredDuplicantData[(minions != null) ? minions.Length : 0]; for (int i = 0; i < Duplicants.Length; i++) { Duplicants[i] = new RetiredDuplicantData(); Duplicants[i].name = minions[i].GetProperName(); Duplicants[i].age = (int)Mathf.Floor((float)GameClock.Instance.GetCycle() - minions[i].GetArrivalTime()); Duplicants[i].skillPointsGained = minions[i].GetTotalSkillpoints(); Duplicants[i].accessories = new Dictionary <string, string>(); if ((Object)minions[i].GetTargetGameObject().GetComponent <Accessorizer>() != (Object)null) { foreach (ResourceRef <Accessory> accessory in minions[i].GetTargetGameObject().GetComponent <Accessorizer>().GetAccessories()) { if (accessory.Get() != null) { Duplicants[i].accessories.Add(accessory.Get().slot.Id, accessory.Get().Id); } } } else { StoredMinionIdentity component = minions[i].GetTargetGameObject().GetComponent <StoredMinionIdentity>(); Duplicants[i].accessories.Add(Db.Get().AccessorySlots.Eyes.Id, Db.Get().Accessories.Get(component.bodyData.eyes).Id); Duplicants[i].accessories.Add(Db.Get().AccessorySlots.Arm.Id, Db.Get().Accessories.Get(component.bodyData.arms).Id); Duplicants[i].accessories.Add(Db.Get().AccessorySlots.Body.Id, Db.Get().Accessories.Get(component.bodyData.body).Id); Duplicants[i].accessories.Add(Db.Get().AccessorySlots.Hair.Id, Db.Get().Accessories.Get(component.bodyData.hair).Id); if (component.bodyData.hat != HashedString.Invalid) { Duplicants[i].accessories.Add(Db.Get().AccessorySlots.Hat.Id, Db.Get().Accessories.Get(component.bodyData.hat).Id); } Duplicants[i].accessories.Add(Db.Get().AccessorySlots.HeadShape.Id, Db.Get().Accessories.Get(component.bodyData.headShape).Id); Duplicants[i].accessories.Add(Db.Get().AccessorySlots.Mouth.Id, Db.Get().Accessories.Get(component.bodyData.mouth).Id); } } buildings = new List <Tuple <string, int> >(); if (buildingCompletes != null) { foreach (BuildingComplete b in buildingCompletes) { int num = buildings.FindIndex((Tuple <string, int> match) => (Tag)match.first == b.PrefabID()); if (num == -1) { buildings.Add(new Tuple <string, int>(b.PrefabID().ToString(), 0)); num = buildings.Count - 1; } buildings[num].second++; } } Stats = null; Tuple <float, float>[] array = null; Tuple <float, float>[] array2 = null; Tuple <float, float>[] array3 = null; Tuple <float, float>[] array4 = null; Tuple <float, float>[] array5 = null; Tuple <float, float>[] array6 = null; Tuple <float, float>[] array7 = null; Tuple <float, float>[] array8 = null; Tuple <float, float>[] array9 = null; Tuple <float, float>[] array10 = null; Tuple <float, float>[] array11 = null; Tuple <float, float>[] array12 = null; Tuple <float, float>[] array13 = null; Tuple <float, float>[] array14 = null; Tuple <float, float>[] array15 = null; Tuple <float, float>[] array16 = null; if ((Object)ReportManager.Instance != (Object)null) { array = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int k = 0; k < array.Length; k++) { array[k] = new Tuple <float, float>((float)ReportManager.Instance.reports[k].day, ReportManager.Instance.reports[k].GetEntry(ReportManager.ReportType.OxygenCreated).accPositive); } array2 = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int l = 0; l < array2.Length; l++) { array2[l] = new Tuple <float, float>((float)ReportManager.Instance.reports[l].day, ReportManager.Instance.reports[l].GetEntry(ReportManager.ReportType.OxygenCreated).accNegative * -1f); } array3 = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int m = 0; m < array3.Length; m++) { array3[m] = new Tuple <float, float>((float)ReportManager.Instance.reports[m].day, ReportManager.Instance.reports[m].GetEntry(ReportManager.ReportType.CaloriesCreated).accPositive * 0.001f); } array4 = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int n = 0; n < array4.Length; n++) { array4[n] = new Tuple <float, float>((float)ReportManager.Instance.reports[n].day, ReportManager.Instance.reports[n].GetEntry(ReportManager.ReportType.CaloriesCreated).accNegative * 0.001f * -1f); } array5 = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int num2 = 0; num2 < array5.Length; num2++) { array5[num2] = new Tuple <float, float>((float)ReportManager.Instance.reports[num2].day, ReportManager.Instance.reports[num2].GetEntry(ReportManager.ReportType.EnergyCreated).accPositive * 0.001f); } array6 = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int num3 = 0; num3 < array6.Length; num3++) { array6[num3] = new Tuple <float, float>((float)ReportManager.Instance.reports[num3].day, ReportManager.Instance.reports[num3].GetEntry(ReportManager.ReportType.EnergyWasted).accNegative * -1f * 0.001f); } array7 = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int num4 = 0; num4 < array7.Length; num4++) { array7[num4] = new Tuple <float, float>((float)ReportManager.Instance.reports[num4].day, ReportManager.Instance.reports[num4].GetEntry(ReportManager.ReportType.WorkTime).accPositive); } array9 = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int num5 = 0; num5 < array7.Length; num5++) { int num6 = 0; float num7 = 0f; ReportManager.ReportEntry entry = ReportManager.Instance.reports[num5].GetEntry(ReportManager.ReportType.WorkTime); for (int num8 = 0; num8 < entry.contextEntries.Count; num8++) { num6++; num7 += entry.contextEntries[num8].accPositive; } num7 /= (float)num6; num7 /= 600f; num7 *= 100f; array9[num5] = new Tuple <float, float>((float)ReportManager.Instance.reports[num5].day, num7); } array8 = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int num9 = 0; num9 < array8.Length; num9++) { array8[num9] = new Tuple <float, float>((float)ReportManager.Instance.reports[num9].day, ReportManager.Instance.reports[num9].GetEntry(ReportManager.ReportType.TravelTime).accPositive); } array10 = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int num10 = 0; num10 < array8.Length; num10++) { int num11 = 0; float num12 = 0f; ReportManager.ReportEntry entry2 = ReportManager.Instance.reports[num10].GetEntry(ReportManager.ReportType.TravelTime); for (int num13 = 0; num13 < entry2.contextEntries.Count; num13++) { num11++; num12 += entry2.contextEntries[num13].accPositive; } num12 /= (float)num11; num12 /= 600f; num12 *= 100f; array10[num10] = new Tuple <float, float>((float)ReportManager.Instance.reports[num10].day, num12); } array11 = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int num14 = 0; num14 < array7.Length; num14++) { array11[num14] = new Tuple <float, float>((float)ReportManager.Instance.reports[num14].day, (float)ReportManager.Instance.reports[num14].GetEntry(ReportManager.ReportType.WorkTime).contextEntries.Count); } array12 = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int num15 = 0; num15 < array12.Length; num15++) { int num16 = 0; float num17 = 0f; ReportManager.ReportEntry entry3 = ReportManager.Instance.reports[num15].GetEntry(ReportManager.ReportType.StressDelta); for (int num18 = 0; num18 < entry3.contextEntries.Count; num18++) { num16++; num17 += entry3.contextEntries[num18].accPositive; } array12[num15] = new Tuple <float, float>((float)ReportManager.Instance.reports[num15].day, num17 / (float)num16); } array13 = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int num19 = 0; num19 < array13.Length; num19++) { int num20 = 0; float num21 = 0f; ReportManager.ReportEntry entry4 = ReportManager.Instance.reports[num19].GetEntry(ReportManager.ReportType.StressDelta); for (int num22 = 0; num22 < entry4.contextEntries.Count; num22++) { num20++; num21 += entry4.contextEntries[num22].accNegative; } num21 *= -1f; array13[num19] = new Tuple <float, float>((float)ReportManager.Instance.reports[num19].day, num21 / (float)num20); } array14 = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int num23 = 0; num23 < array14.Length; num23++) { array14[num23] = new Tuple <float, float>((float)ReportManager.Instance.reports[num23].day, ReportManager.Instance.reports[num23].GetEntry(ReportManager.ReportType.DomesticatedCritters).accPositive); } array15 = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int num24 = 0; num24 < array15.Length; num24++) { array15[num24] = new Tuple <float, float>((float)ReportManager.Instance.reports[num24].day, ReportManager.Instance.reports[num24].GetEntry(ReportManager.ReportType.WildCritters).accPositive); } array16 = new Tuple <float, float> [ReportManager.Instance.reports.Count]; for (int num25 = 0; num25 < array16.Length; num25++) { array16[num25] = new Tuple <float, float>((float)ReportManager.Instance.reports[num25].day, ReportManager.Instance.reports[num25].GetEntry(ReportManager.ReportType.RocketsInFlight).accPositive); } Stats = new RetiredColonyStatistic[16] { new RetiredColonyStatistic(DataIDs.OxygenProduced, array, UI.RETIRED_COLONY_INFO_SCREEN.STATS.OXYGEN_CREATED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.MASS.KILOGRAM), new RetiredColonyStatistic(DataIDs.OxygenConsumed, array2, UI.RETIRED_COLONY_INFO_SCREEN.STATS.OXYGEN_CONSUMED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.MASS.KILOGRAM), new RetiredColonyStatistic(DataIDs.CaloriesProduced, array3, UI.RETIRED_COLONY_INFO_SCREEN.STATS.CALORIES_CREATED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.CALORIES.KILOCALORIE), new RetiredColonyStatistic(DataIDs.CaloriesRemoved, array4, UI.RETIRED_COLONY_INFO_SCREEN.STATS.CALORIES_CONSUMED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.CALORIES.KILOCALORIE), new RetiredColonyStatistic(DataIDs.PowerProduced, array5, UI.RETIRED_COLONY_INFO_SCREEN.STATS.POWER_CREATED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.ELECTRICAL.KILOJOULE), new RetiredColonyStatistic(DataIDs.PowerWasted, array6, UI.RETIRED_COLONY_INFO_SCREEN.STATS.POWER_WASTED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.ELECTRICAL.KILOJOULE), new RetiredColonyStatistic(DataIDs.WorkTime, array7, UI.RETIRED_COLONY_INFO_SCREEN.STATS.WORK_TIME, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.SECONDS), new RetiredColonyStatistic(DataIDs.AverageWorkTime, array9, UI.RETIRED_COLONY_INFO_SCREEN.STATS.AVERAGE_WORK_TIME, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.PERCENT), new RetiredColonyStatistic(DataIDs.TravelTime, array8, UI.RETIRED_COLONY_INFO_SCREEN.STATS.TRAVEL_TIME, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.SECONDS), new RetiredColonyStatistic(DataIDs.AverageTravelTime, array10, UI.RETIRED_COLONY_INFO_SCREEN.STATS.AVERAGE_TRAVEL_TIME, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.PERCENT), new RetiredColonyStatistic(DataIDs.LiveDuplicants, array11, UI.RETIRED_COLONY_INFO_SCREEN.STATS.LIVE_DUPLICANTS, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.DUPLICANTS), new RetiredColonyStatistic(DataIDs.RocketsInFlight, array16, UI.RETIRED_COLONY_INFO_SCREEN.STATS.ROCKET_MISSIONS, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.ROCKET_MISSIONS), new RetiredColonyStatistic(DataIDs.AverageStressCreated, array12, UI.RETIRED_COLONY_INFO_SCREEN.STATS.AVERAGE_STRESS_CREATED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.PERCENT), new RetiredColonyStatistic(DataIDs.AverageStressRemoved, array13, UI.RETIRED_COLONY_INFO_SCREEN.STATS.AVERAGE_STRESS_REMOVED, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.PERCENT), new RetiredColonyStatistic(DataIDs.DomesticatedCritters, array14, UI.RETIRED_COLONY_INFO_SCREEN.STATS.NUMBER_DOMESTICATED_CRITTERS, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.CRITTERS), new RetiredColonyStatistic(DataIDs.WildCritters, array15, UI.RETIRED_COLONY_INFO_SCREEN.STATS.NUMBER_WILD_CRITTERS, UI.MATH_PICTURES.AXIS_LABELS.CYCLES, UI.UNITSUFFIXES.CRITTERS) }; } }
private void on_click_consumable_info(GameObject widget_go) { ConsumableConsumer consumableConsumer = null; IConsumableUIItem consumableUIItem = null; TableRow widgetRow = GetWidgetRow(widget_go); IAssignableIdentity identity = widgetRow.GetIdentity(); ConsumableInfoTableColumn consumableInfoTableColumn = GetWidgetColumn(widget_go) as ConsumableInfoTableColumn; switch (widgetRow.rowType) { case TableRow.RowType.Header: switch (get_value_consumable_info(null, widget_go)) { case ResultValues.True: consumableInfoTableColumn.on_set_action(widget_go, ResultValues.False); break; case ResultValues.False: case ResultValues.Partial: case ResultValues.ConditionalGroup: consumableInfoTableColumn.on_set_action(widget_go, ResultValues.True); break; } consumableInfoTableColumn.on_load_action(null, widget_go); break; case TableRow.RowType.Default: { consumableUIItem = consumableInfoTableColumn.consumable_info; bool flag3 = !ConsumerManager.instance.DefaultForbiddenTagsList.Contains(consumableUIItem.ConsumableId.ToTag()); consumableInfoTableColumn.on_set_action(widget_go, (!flag3) ? ResultValues.True : ResultValues.False); break; } case TableRow.RowType.Minion: { MinionIdentity minionIdentity = identity as MinionIdentity; if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null) { consumableUIItem = consumableInfoTableColumn.consumable_info; consumableConsumer = minionIdentity.GetComponent <ConsumableConsumer>(); if ((UnityEngine.Object)consumableConsumer == (UnityEngine.Object)null) { Debug.LogError("Could not find minion identity / row associated with the widget"); } else { bool flag2 = consumableConsumer.IsPermitted(consumableUIItem.ConsumableId); consumableInfoTableColumn.on_set_action(widget_go, (!flag2) ? ResultValues.True : ResultValues.False); } } break; } case TableRow.RowType.StoredMinon: { StoredMinionIdentity storedMinionIdentity = identity as StoredMinionIdentity; if ((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null) { consumableUIItem = consumableInfoTableColumn.consumable_info; bool flag = storedMinionIdentity.IsPermittedToConsume(consumableUIItem.ConsumableId); consumableInfoTableColumn.on_set_action(widget_go, (!flag) ? ResultValues.True : ResultValues.False); } break; } } }
private static void CopyMinion(StoredMinionIdentity src_id, MinionIdentity dest_id) { dest_id.SetName(src_id.storedName); dest_id.nameStringKey = src_id.nameStringKey; dest_id.gender = src_id.gender; dest_id.genderStringKey = src_id.genderStringKey; dest_id.arrivalTime = src_id.arrivalTime; dest_id.voiceIdx = src_id.voiceIdx; dest_id.bodyData = src_id.bodyData; if (src_id.traitIDs != null) { Traits component = dest_id.GetComponent <Traits>(); component.SetTraitIds(src_id.traitIDs); } if (src_id.accessories != null) { Accessorizer component2 = dest_id.GetComponent <Accessorizer>(); component2.SetAccessories(src_id.accessories); } ConsumableConsumer component3 = dest_id.GetComponent <ConsumableConsumer>(); if (src_id.forbiddenTags != null) { component3.forbiddenTags = src_id.forbiddenTags.ToArray(); } if (src_id.MasteryBySkillID != null) { MinionResume component4 = dest_id.GetComponent <MinionResume>(); component4.RestoreResume(src_id.MasteryBySkillID, src_id.AptitudeBySkillGroup, src_id.TotalExperienceGained); component4.SetHats(src_id.currentHat, src_id.targetHat); } if (src_id.choreGroupPriorities != null) { ChoreConsumer component5 = dest_id.GetComponent <ChoreConsumer>(); component5.SetChoreGroupPriorities(src_id.choreGroupPriorities); } AttributeLevels component6 = dest_id.GetComponent <AttributeLevels>(); if (src_id.attributeLevels != null) { component6.SaveLoadLevels = src_id.attributeLevels.ToArray(); component6.OnDeserialized(); } dest_id.GetComponent <Accessorizer>().ApplyAccessories(); dest_id.assignableProxy = new Ref <MinionAssignablesProxy>(); dest_id.assignableProxy.Set(src_id.assignableProxy.Get()); dest_id.assignableProxy.Get().SetTarget(dest_id, dest_id.gameObject); Equipment equipment = dest_id.GetEquipment(); foreach (AssignableSlotInstance slot in equipment.Slots) { Equippable equippable = slot.assignable as Equippable; if ((UnityEngine.Object)equippable != (UnityEngine.Object)null) { equipment.Equip(equippable); } } Schedulable component7 = src_id.GetComponent <Schedulable>(); Schedule schedule = component7.GetSchedule(); if (schedule != null) { schedule.Unassign(component7); Schedulable component8 = dest_id.GetComponent <Schedulable>(); schedule.Assign(component8); } }
public void Refresh(string skillID) { Skill skill = Db.Get().Skills.Get(skillID); if (skill == null) { Debug.LogWarning("DbSkills is missing skillId " + skillID); } else { Name.text = skill.Name; LocText name = Name; name.text = name.text + "\n(" + Db.Get().SkillGroups.Get(skill.skillGroup).Name + ")"; this.skillID = skillID; tooltip.SetSimpleTooltip(SkillTooltip(skill)); MinionIdentity minionIdentity = skillsScreen.CurrentlySelectedMinion as MinionIdentity; StoredMinionIdentity storedMinionIdentity = skillsScreen.CurrentlySelectedMinion as StoredMinionIdentity; MinionResume minionResume = null; if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null) { minionResume = minionIdentity.GetComponent <MinionResume>(); MinionResume.SkillMasteryConditions[] skillMasteryConditions = minionResume.GetSkillMasteryConditions(skillID); bool flag = minionResume.CanMasterSkill(skillMasteryConditions); if (!((UnityEngine.Object)minionResume == (UnityEngine.Object)null) && (minionResume.HasMasteredSkill(skillID) || flag)) { TitleBarBG.color = ((!minionResume.HasMasteredSkill(skillID)) ? header_color_can_assign : header_color_has_skill); hatImage.material = defaultMaterial; } else { TitleBarBG.color = header_color_disabled; hatImage.material = desaturatedMaterial; } } else if ((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null) { if (storedMinionIdentity.HasMasteredSkill(skillID)) { TitleBarBG.color = header_color_has_skill; hatImage.material = defaultMaterial; } else { TitleBarBG.color = header_color_disabled; hatImage.material = desaturatedMaterial; } } hatImage.sprite = Assets.GetSprite(skill.badge); bool active = false; if ((UnityEngine.Object)minionResume != (UnityEngine.Object)null) { minionResume.AptitudeBySkillGroup.TryGetValue(skill.skillGroup, out float value); active = (value > 0f); } aptitudeBox.SetActive(active); traitDisabledIcon.SetActive((UnityEngine.Object)minionResume != (UnityEngine.Object)null && !minionResume.IsAbleToLearnSkill(skill.Id)); string text = string.Empty; List <string> list = new List <string>(); foreach (MinionIdentity item in Components.LiveMinionIdentities.Items) { MinionResume component = item.GetComponent <MinionResume>(); if ((UnityEngine.Object)component != (UnityEngine.Object)null && component.HasMasteredSkill(skillID)) { list.Add(component.GetProperName()); } } foreach (MinionStorage item2 in Components.MinionStorages.Items) { foreach (MinionStorage.Info item3 in item2.GetStoredMinionInfo()) { MinionStorage.Info current3 = item3; if (current3.serializedMinion != null) { StoredMinionIdentity storedMinionIdentity2 = current3.serializedMinion.Get <StoredMinionIdentity>(); if ((UnityEngine.Object)storedMinionIdentity2 != (UnityEngine.Object)null && storedMinionIdentity2.HasMasteredSkill(skillID)) { list.Add(storedMinionIdentity2.GetProperName()); } } } } masteryCount.gameObject.SetActive(list.Count > 0); foreach (string item4 in list) { text = text + "\n • " + item4; } masteryCount.SetSimpleTooltip((list.Count <= 0) ? UI.ROLES_SCREEN.WIDGET.NO_MASTERS_TOOLTIP.text : string.Format(UI.ROLES_SCREEN.WIDGET.NUMBER_OF_MASTERS_TOOLTIP, text)); masteryCount.GetComponentInChildren <LocText>().text = list.Count.ToString(); } }