private void Awake() { Instance = this; logbookBodyOptions = MapBodiesToOptions( SurvivorCatalog.orderedSurvivorDefs.Select(survivorDef => BodyCatalog.GetBodyPrefabBodyComponent(SurvivorCatalog.GetBodyIndexFromSurvivorIndex(survivorDef.survivorIndex))) .Union(BodyCatalog.allBodyPrefabBodyBodyComponents.Where(characterBody => characterBody && characterBody.GetComponent <DeathRewards>()?.logUnlockableDef))); allBodyOptions = MapBodiesToOptions(BodyCatalog.allBodyPrefabBodyBodyComponents); dropdown.Options = logbookBodyOptions; (dropdown.OnItemSelected ?? (dropdown.OnItemSelected = new SearchableDropdown.DropdownEvent())).AddListener(SelectModel); List <SearchableDropdown.OptionData> MapBodiesToOptions(IEnumerable <CharacterBody> bodies) { return(bodies .Select(characterBody => (characterBody, characterModel: characterBody.GetComponentInChildren <CharacterModel>())) .Where(el => el.characterModel) .Select(el => { var modelInfo = new ModelPrefabInfo { modelPrefab = el.characterModel.gameObject, bodyName = el.characterBody.name, modelName = el.characterModel.name, localizedBodyName = Language.GetString(el.characterBody.baseNameToken), characterBody = el.characterBody }; return new SearchableDropdown.OptionData(modelInfo, $"{modelInfo.localizedBodyName} || {modelInfo.bodyName} || {modelInfo.modelName}"); }) .ToList()); } }
void SetCharacter(int num) { CharacterBody body = BodyCatalog.GetBodyPrefabBodyComponent(BodyCatalog.FindBodyIndex(CharacterDropdown.options[num].text)); Settings.PlayableCharactersList[Slot] = body.name; CharacterIcon.sprite = Sprite.Create((Texture2D)body.portraitIcon, new Rect(0.0f, 0.0f, body.portraitIcon.width, body.portraitIcon.height), new Vector2(0.5f, 0.5f), 100.0f); }
private static void Init() { Loadout.BodyLoadoutManager.defaultBodyLoadouts = new Loadout.BodyLoadoutManager.BodyLoadout[BodyCatalog.bodyCount]; Loadout.BodyLoadoutManager.allBodyInfos = new Loadout.BodyLoadoutManager.BodyInfo[Loadout.BodyLoadoutManager.defaultBodyLoadouts.Length]; for (int i = 0; i < Loadout.BodyLoadoutManager.defaultBodyLoadouts.Length; i++) { Loadout.BodyLoadoutManager.BodyInfo bodyInfo = default(Loadout.BodyLoadoutManager.BodyInfo); bodyInfo.prefabSkillSlots = BodyCatalog.GetBodyPrefabBodyComponent(i).GetComponents <GenericSkill>(); bodyInfo.skillFamilyIndices = new int[bodyInfo.skillSlotCount]; for (int j = 0; j < bodyInfo.prefabSkillSlots.Length; j++) { int[] skillFamilyIndices = bodyInfo.skillFamilyIndices; int num = j; SkillFamily skillFamily = bodyInfo.prefabSkillSlots[j].skillFamily; skillFamilyIndices[num] = ((skillFamily != null) ? skillFamily.catalogIndex : -1); } Loadout.BodyLoadoutManager.allBodyInfos[i] = bodyInfo; uint[] array = new uint[bodyInfo.skillSlotCount]; for (int k = 0; k < bodyInfo.prefabSkillSlots.Length; k++) { array[k] = bodyInfo.prefabSkillSlots[k].skillFamily.defaultVariantIndex; } Loadout.BodyLoadoutManager.defaultBodyLoadouts[i] = new Loadout.BodyLoadoutManager.BodyLoadout { bodyIndex = i, skinPreference = 0U, skillPreferences = array }; } Loadout.GenerateViewables(); }
// Token: 0x060021A8 RID: 8616 RVA: 0x0009E640 File Offset: 0x0009C840 public void SetDisplayData(GameEndReportPanelController.DisplayData newDisplayData) { if (this.displayData.Equals(newDisplayData)) { return; } this.displayData = newDisplayData; if (this.resultLabel) { GameResultType gameResultType = GameResultType.Unknown; if (this.displayData.runReport != null) { gameResultType = this.displayData.runReport.gameResultType; } string token; if (gameResultType != GameResultType.Lost) { if (gameResultType != GameResultType.Won) { token = "GAME_RESULT_UNKNOWN"; } else { token = "GAME_RESULT_WON"; } } else { token = "GAME_RESULT_LOST"; } this.resultLabel.text = Language.GetString(token); } RunReport runReport = this.displayData.runReport; RunReport.PlayerInfo playerInfo = (runReport != null) ? runReport.GetPlayerInfoSafe(this.displayData.playerIndex) : null; this.SetPlayerInfo(playerInfo); RunReport runReport2 = this.displayData.runReport; int num = (runReport2 != null) ? runReport2.playerInfoCount : 0; this.playerNavigationController.gameObject.SetActive(num > 1); this.playerNavigationController.SetDisplayData(new CarouselNavigationController.DisplayData(num, this.displayData.playerIndex)); ReadOnlyCollection <MPButton> elements = this.playerNavigationController.buttonAllocator.elements; for (int i = 0; i < elements.Count; i++) { MPButton mpbutton = elements[i]; RunReport.PlayerInfo playerInfo2 = this.displayData.runReport.GetPlayerInfo(i); CharacterBody bodyPrefabBodyComponent = BodyCatalog.GetBodyPrefabBodyComponent(playerInfo2.bodyIndex); Texture texture = bodyPrefabBodyComponent ? bodyPrefabBodyComponent.portraitIcon : null; mpbutton.GetComponentInChildren <RawImage>().texture = texture; mpbutton.GetComponent <TooltipProvider>().SetContent(TooltipProvider.GetPlayerNameTooltipContent(playerInfo2.name)); } this.selectedPlayerEffectRoot.transform.SetParent(this.playerNavigationController.buttonAllocator.elements[this.displayData.playerIndex].transform); this.selectedPlayerEffectRoot.gameObject.SetActive(false); this.selectedPlayerEffectRoot.gameObject.SetActive(true); this.selectedPlayerEffectRoot.offsetMin = Vector2.zero; this.selectedPlayerEffectRoot.offsetMax = Vector2.zero; this.selectedPlayerEffectRoot.localScale = Vector3.one; }
// Token: 0x060021BA RID: 8634 RVA: 0x00091F48 File Offset: 0x00090148 private void SetMonsterBodies(int[] bodyIndices) { this.monsterBodyIconAllocator.AllocateElements(bodyIndices.Length); for (int i = 0; i < bodyIndices.Length; i++) { CharacterBody bodyPrefabBodyComponent = BodyCatalog.GetBodyPrefabBodyComponent(bodyIndices[i]); this.monsterBodyIconAllocator.elements[i].texture = ((bodyPrefabBodyComponent != null) ? bodyPrefabBodyComponent.portraitIcon : null); } }
// Token: 0x060023A8 RID: 9128 RVA: 0x0009BA40 File Offset: 0x00099C40 public static LoadoutPanelController.Row FromSkillSlot(LoadoutPanelController owner, int bodyIndex, int skillSlotIndex, GenericSkill skillSlot) { SkillFamily skillFamily = skillSlot.skillFamily; SkillLocator component = BodyCatalog.GetBodyPrefabBodyComponent(bodyIndex).GetComponent <SkillLocator>(); bool addWIPIcons = true; string titleToken; switch (component.FindSkillSlot(skillSlot)) { case SkillSlot.None: titleToken = "LOADOUT_SKILL_MISC"; addWIPIcons = false; break; case SkillSlot.Primary: titleToken = "LOADOUT_SKILL_PRIMARY"; addWIPIcons = false; break; case SkillSlot.Secondary: titleToken = "LOADOUT_SKILL_SECONDARY"; break; case SkillSlot.Utility: titleToken = "LOADOUT_SKILL_UTILITY"; break; case SkillSlot.Special: titleToken = "LOADOUT_SKILL_SPECIAL"; break; default: throw new ArgumentOutOfRangeException(); } LoadoutPanelController.Row row = new LoadoutPanelController.Row(owner, bodyIndex, titleToken); for (int i = 0; i < skillFamily.variants.Length; i++) { ref SkillFamily.Variant ptr = ref skillFamily.variants[i]; uint skillVariantIndexToAssign = (uint)i; row.AddButton(ptr.skillDef.icon, ptr.skillDef.skillNameToken, ptr.skillDef.skillDescriptionToken, row.primaryColor, delegate { Loadout loadout = new Loadout(); row.userProfile.CopyLoadout(loadout); loadout.bodyLoadoutManager.SetSkillVariant(bodyIndex, skillSlotIndex, skillVariantIndexToAssign); row.userProfile.SetLoadout(loadout); }, ptr.unlockableName, ptr.viewableNode, false); }
// Token: 0x0600239C RID: 9116 RVA: 0x0009B74C File Offset: 0x0009994C private void Rebuild() { this.DestroyRows(); CharacterBody bodyPrefabBodyComponent = BodyCatalog.GetBodyPrefabBodyComponent(this.currentDisplayData.bodyIndex); if (bodyPrefabBodyComponent) { List <GenericSkill> gameObjectComponents = GetComponentsCache <GenericSkill> .GetGameObjectComponents(bodyPrefabBodyComponent.gameObject); int i = 0; int count = gameObjectComponents.Count; while (i < count) { GenericSkill skillSlot = gameObjectComponents[i]; this.rows.Add(LoadoutPanelController.Row.FromSkillSlot(this, this.currentDisplayData.bodyIndex, i, skillSlot)); i++; } int num = BodyCatalog.GetBodySkins(this.currentDisplayData.bodyIndex).Length; if (true) { this.rows.Add(LoadoutPanelController.Row.FromSkin(this, this.currentDisplayData.bodyIndex)); } } }
void Start() { for (int i = 0; i < Settings.PlayableCharactersList.Count; i++) { string slotName = ""; string slotBodyName = ""; switch (i) { case 0: slotName = "Commando Slot"; slotBodyName = "CommandoBody"; break; case 1: slotName = "Huntress Slot"; slotBodyName = "HuntressBody"; break; case 2: slotName = "Bandit Slot"; slotBodyName = "Bandit2Body"; break; case 3: slotName = "MUL-T Slot"; slotBodyName = "ToolbotBody"; break; case 4: slotName = "Engineer Slot"; slotBodyName = "EngiBody"; break; case 5: slotName = "Artificer Slot"; slotBodyName = "MageBody"; break; case 6: slotName = "Mercenary Slot"; slotBodyName = "MercBody"; break; case 7: slotName = "REX Slot"; slotBodyName = "TreebotBody"; break; case 8: slotName = "Loader Slot"; slotBodyName = "LoaderBody"; break; case 9: slotName = "Acrid Slot"; slotBodyName = "CrocoBody"; break; case 10: slotName = "Captain Slot"; slotBodyName = "CaptainBody"; break; default: slotName = "Dummy Slot"; slotBodyName = "BanditBody"; break; } CharacterBody body = BodyCatalog.GetBodyPrefabBodyComponent(BodyCatalog.FindBodyIndex(slotBodyName)); RectTransform character = Instantiate(CharacterTemplate, Content.transform); character.gameObject.SetActive(true); character.anchoredPosition = new Vector2(0, -offset * Slots.Count); CharacterPickerSlot characterSlot = character.gameObject.AddComponent <CharacterPickerSlot>(); characterSlot.Slot = i; characterSlot.Picker = this; characterSlot.CharacterSlotName = slotName; characterSlot.CharacterSlotTexture = body.portraitIcon; Slots.Add(character); } Content.sizeDelta = new Vector2(Content.sizeDelta.x, offset * Slots.Count); }
private RoR2.NetworkPlayerName NetworkUser_GetNetworkPlayerName(On.RoR2.NetworkUser.orig_GetNetworkPlayerName orig, RoR2.NetworkUser self) { var nameOverride = NameOverride.Value; var bodyName = BodyFallbackName.Value; if (GetBodyName) { if (self.GetCurrentBody()) { bodyName = self.GetCurrentBody().GetDisplayName(); } else { if (BodyCatalog.GetBodyPrefab(self.bodyIndexPreference)) { bodyName = BodyCatalog.GetBodyPrefabBodyComponent(self.bodyIndexPreference).GetDisplayName(); } } } /*if (false == true && !SteamworksLobbyManager.isInLobby) * { * if (GetBodyName || (!GetBodyName && GetSkinName)) * { * nameOverride = bodyName; * } * return new RoR2.NetworkPlayerName * { * nameOverride = nameOverride, * steamId = self.id.steamId * }; * }*/ var skinName = SkinFallbackName.Value; SkinDef skinDef; bool isDefaultSkin = false; if (GetSkinName) { var body = self.GetCurrentBody(); if (body) { skinDef = SkinCatalog.FindCurrentSkinDefForBodyInstance(body.gameObject); if (skinDef) { var skinDefs = SkinCatalog.FindSkinsForBody(body.bodyIndex); skinName = Language.GetString(skinDef.nameToken); isDefaultSkin = skinDefs[0] == skinDef; } } else { if (self.bodyIndexPreference >= 0) { var skinDefs = SkinCatalog.FindSkinsForBody(self.bodyIndexPreference); if (skinDefs != null) { if (self.localUser?.userProfile?.loadout?.bodyLoadoutManager != null) { int skinIndex = (int)self.localUser.userProfile.loadout.bodyLoadoutManager.GetSkinIndex(self.bodyIndexPreference); var userSkinDef = skinDefs[skinIndex]; //var sksadinIndex = SkinCatalog.FindLocalSkinIndexForBody(self.bodyIndexPreference, userSkinDef); skinName = Language.GetString(userSkinDef.nameToken); isDefaultSkin = skinDefs[0] == userSkinDef; } } } } if (isDefaultSkin && ReplaceDefaultName) { skinName = DefaultSkinNameOverride.Value; } } if (GetSkinName || GetBodyName) { nameOverride = ""; if (GetSkinName) { nameOverride = string.Format(SkinNameFormatting.Value, bodyName, skinName); } else if (GetBodyName) { nameOverride = bodyName; } } if (self && self.id.steamId != null) { GetHost(); if (GetHostID && self.id.steamId == HostSteamID) { nameOverride = string.Format(hostFormattingString, nameOverride); } SteamID_to_DisplayName[self.id.steamId] = nameOverride; } return(new RoR2.NetworkPlayerName { nameOverride = nameOverride, steamId = self.id.steamId }); }