コード例 #1
0
    public void ctor(ProcessManager manager)
    {
        //Delegate to call the base constructor
        Type[] constructorSignature = new Type[2];
        constructorSignature[0] = typeof(ProcessManager);
        constructorSignature[1] = typeof(ProcessManager.ProcessID);
        RuntimeMethodHandle handle = typeof(Menu.Menu).GetConstructor(constructorSignature).MethodHandle;

        RuntimeHelpers.PrepareMethod(handle);
        IntPtr ptr = handle.GetFunctionPointer();
        Action <ProcessManager, ProcessManager.ProcessID> funct = (Action <ProcessManager, ProcessManager.ProcessID>)Activator.CreateInstance(typeof(Action <ProcessManager, ProcessManager.ProcessID>), this, ptr);

        funct(manager, ProcessManager.ProcessID.SlugcatSelect);//Menu.Menu Constructor


        pages.Add(new Menu.Page(this, null, "main", 0));
        if (!manager.rainWorld.flatIllustrations)
        {
            rainEffect = new Menu.RainEffect(this, pages[0]);
            pages[0].subObjects.Add(rainEffect);
        }
        if (CheckUnlockRed())
        {
            manager.rainWorld.progression.miscProgressionData.redUnlocked = true;
        }
        slugcatColorOrder = new int[]
        {
            1,
            0,
            2
        };
        for (int i = 0; i < slugcatColorOrder.Length; i++)
        {
            if (slugcatColorOrder[i] == manager.rainWorld.progression.miscProgressionData.currentlySelectedSinglePlayerSlugcat)
            {
                slugcatPageIndex = i;
            }
        }
        slugcatPageIndex = 1;
        saveGameData     = new Menu.SlugcatSelectMenu.SaveGameData[3];
        for (int j = 0; j < 3; j++)
        {
            saveGameData[j] = MineForSaveData(manager, slugcatColorOrder[j]);
        }
        if (saveGameData[2] != null && ((saveGameData[2].redsDeath && saveGameData[2].cycle >= RedsIllness.RedsCycles(saveGameData[2].redsExtraCycles)) || saveGameData[2].ascended))
        {
            redIsDead = true;
        }
        int num = 0;

        for (int k = 0; k < 3; k++)
        {
            if (saveGameData[k] != null)
            {
                num++;
            }
        }
        if (num == 1)
        {
            for (int l = 0; l < 3; l++)
            {
                if (saveGameData[l] != null)
                {
                    slugcatPageIndex = l;
                    break;
                }
            }
        }
        slugcatPages = new Menu.SlugcatSelectMenu.SlugcatPage[3];
        for (int m = 0; m < slugcatPages.Length; m++)
        {
            if (saveGameData[m] != null)
            {
                slugcatPages[m] = new Menu.SlugcatSelectMenu.SlugcatPageContinue(this, null, 1 + m, slugcatColorOrder[m]);
            }
            else
            {
                slugcatPages[m] = new Menu.SlugcatSelectMenu.SlugcatPageNewGame(this, null, 1 + m, slugcatColorOrder[m]);
            }
            pages.Add(slugcatPages[m]);
        }
        startButton = new Menu.HoldButton(this, pages[0], string.Empty, "START", new Vector2(683f, 85f), 40f);
        pages[0].subObjects.Add(startButton);
        pages[0].subObjects.Add(new Menu.SimpleButton(this, pages[0], "BACK", "BACK", new Vector2(200f, 668f), new Vector2(110f, 30f)));
        //this.pages[0].subObjects.Add(new Menu.BigArrowButton(this, this.pages[0], "PREV", new Vector2(200f, 50f), -1));
        //this.pages[0].subObjects.Add(new Menu.BigArrowButton(this, this.pages[0], "NEXT", new Vector2(1116f, 50f), 1));
        //Removed access to other characters
        float textWidth = 85f;

        restartCheckbox = new Menu.CheckBox(this, pages[0], this, new Vector2(startButton.pos.x + 200f, 30f), textWidth, "Restart game", "RESTART");
        pages[0].subObjects.Add(restartCheckbox);
        UpdateStartButtonText();
        UpdateSelectedSlugcatInMiscProg();
        mySoundLoopID = SoundID.MENU_Main_Menu_LOOP;
    }
コード例 #2
0
        /// <summary>
        /// Retrieves the region name to show it in the slugcat select menu
        /// </summary>
        private static void SlugcatPageContinue_ctor(On.Menu.SlugcatSelectMenu.SlugcatPageContinue.orig_ctor orig, Menu.SlugcatSelectMenu.SlugcatPageContinue self, Menu.Menu menu, Menu.MenuObject owner, int pageIndex, int slugcatNumber)
        {
            orig(self, menu, owner, pageIndex, slugcatNumber);

            if (self.saveGameData.shelterName != null && self.saveGameData.shelterName.Length > 2)
            {
                string regID = self.saveGameData.shelterName.Substring(0, 2);

                bool          customRegion   = true;
                List <string> vanillaRegions = CustomWorldMod.VanillaRegions().ToList();
                for (int i = 0; i < vanillaRegions.Count; i++)
                {
                    if (regID == vanillaRegions[i])
                    {
                        customRegion = false;
                    }
                }
                if (customRegion)
                {
                    foreach (MenuObject label in self.subObjects)
                    {
                        if (label is MenuLabel && label == self.regionLabel && (label as MenuLabel).text.Length < 3)
                        {
                            string fullRegionName = "N / A";
                            //CustomWorldMod.activatedPacks.TryGetValue(text2, out fullRegionName);
                            if (CustomWorldMod.activeModdedRegions.Contains(regID))
                            {
                                foreach (KeyValuePair <string, string> entry in CustomWorldMod.activatedPacks)
                                {
                                    if (CustomWorldMod.installedPacks[entry.Key].regions.Contains(regID))
                                    {
                                        string regionName = CWorld.RegionHook.GetSubRegionName(entry.Value, regID);
                                        if (CustomWorldMod.installedPacks[entry.Key].useRegionName && regionName != null)
                                        {
                                            fullRegionName = regionName;
                                            CustomWorldMod.Log($"Displaying region name: [{fullRegionName}]. If your pack" +
                                                               $"contains multiple regions, add \"useRegionName\" to the packInfo.json to use" +
                                                               $"the Subregion field from the Properties.txt file");
                                        }
                                        else
                                        {
                                            fullRegionName = entry.Key;
                                            CustomWorldMod.Log($"Displaying pack name: [{fullRegionName}].");
                                            //[OUTDATED] If you pack contains multiple regions, contact @Garrakx.");
                                        }

                                        break;
                                    }
                                }
                            }
                            if (fullRegionName != null)
                            {
                                if (fullRegionName.Length > 0)
                                {
                                    regID = fullRegionName;

                                    fullRegionName = string.Concat(new object[]
                                    {
                                        regID,
                                        " - ",
                                        menu.Translate("Cycle"),
                                        " ",
                                        (slugcatNumber != 2) ? self.saveGameData.cycle :
                                        (RedsIllness.RedsCycles(self.saveGameData.redsExtraCycles) - self.saveGameData.cycle)
                                    });
                                }
                                (label as MenuLabel).text = fullRegionName;
                                break;
                            }
                        }
                    }
                }
            }
        }