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());
            }
        }
Exemple #2
0
        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();
 }
Exemple #4
0
        // 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;
        }
Exemple #5
0
 // 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);
     }
 }
Exemple #6
0
            // 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);
                }
Exemple #7
0
        // 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));
                }
            }
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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
            });
        }