public RogueDestMenu() { dungeonIndices = new List <int>(); for (int ii = 0; ii < DataManager.Instance.DataIndices[DataManager.DataType.Zone].Count; ii++) { ZoneEntrySummary summary = DataManager.Instance.DataIndices[DataManager.DataType.Zone].Entries[ii] as ZoneEntrySummary; if (DataManager.Instance.Save.DungeonUnlocks[ii] == GameProgress.UnlockState.None) { continue; } if (summary == null) { continue; } if (summary.Rogue != RogueStatus.AllTransfer) { continue; } dungeonIndices.Add(ii); } List <MenuChoice> flatChoices = new List <MenuChoice>(); flatChoices.Add(new MenuTextChoice(Text.FormatKey("MENU_START_RANDOM"), () => { choose(dungeonIndices[MathUtils.Rand.Next(dungeonIndices.Count)]); })); for (int ii = 0; ii < dungeonIndices.Count; ii++) { int zone = dungeonIndices[ii]; flatChoices.Add(new MenuTextChoice(DataManager.Instance.GetZone(zone).Name.ToLocal(), () => { choose(zone); })); } List <MenuChoice[]> box = SortIntoPages(flatChoices, SLOTS_PER_PAGE); int totalSlots = SLOTS_PER_PAGE; if (box.Count == 1) { totalSlots = box[0].Length; } summaryMenu = new DungeonSummary(Rect.FromPoints(new Loc(176, 16), new Loc(GraphicsManager.ScreenWidth - 16, 16 + GraphicsManager.MenuBG.TileHeight * 2 + VERT_SPACE * 7))); infoMenu = new SeedSummary(new Rect(new Loc(176, 128), new Loc(128, LINE_SPACE + GraphicsManager.MenuBG.TileHeight * 2))); UpdateExtraInfo(""); Initialize(new Loc(16, 16), 160, Text.FormatKey("MENU_DUNGEON_TITLE"), box.ToArray(), 0, 0, totalSlots, false, -1); }
public void SetDungeon(int index, bool isComplete) { ZoneEntrySummary zoneEntry = DataManager.Instance.DataIndices[DataManager.DataType.Zone].Entries[index] as ZoneEntrySummary; if (zoneEntry == null) { Visible = false; } else { DungeonName.SetText(zoneEntry.GetColoredName()); DungeonName.Color = isComplete ? Color.White : Color.Cyan; Floors.SetText(Text.FormatKey("MENU_DUNGEON_FLOORS", (isComplete && zoneEntry.CountedFloors > 0) ? zoneEntry.CountedFloors.ToString() : "??")); while (Elements.Count > 3) { Elements.RemoveAt(3); } List <MenuText> rules = new List <MenuText>(); if (zoneEntry.NoEXP) { rules.Add(new MenuText(Text.FormatKey("ZONE_RESTRICT_EXP"), new Loc())); } if (zoneEntry.Level > -1) { if (zoneEntry.LevelCap) { rules.Add(new MenuText(Text.FormatKey("ZONE_RESTRICT_LEVEL", zoneEntry.Level), new Loc())); } else { rules.Add(new MenuText(Text.FormatKey("ZONE_EXPECT_LEVEL", zoneEntry.Level), new Loc())); } } if (zoneEntry.TeamSize > -1) { rules.Add(new MenuText(Text.FormatKey("ZONE_RESTRICT_TEAM", zoneEntry.TeamSize), new Loc(), (DataManager.Instance.Save.ActiveTeam.Players.Count > zoneEntry.TeamSize) ? Color.Red : Color.White)); } if (zoneEntry.TeamRestrict) { rules.Add(new MenuText(Text.FormatKey("ZONE_RESTRICT_ALONE"), new Loc(), (DataManager.Instance.Save.ActiveTeam.Players.Count > 1) ? Color.Red : Color.White)); } if (zoneEntry.MoneyRestrict) { rules.Add(new MenuText(Text.FormatKey("ZONE_RESTRICT_MONEY"), new Loc(), (DataManager.Instance.Save.ActiveTeam.Money > 0) ? Color.Red : Color.White)); } if (zoneEntry.BagSize > -1) { rules.Add(new MenuText(Text.FormatKey("ZONE_RESTRICT_BAG", zoneEntry.BagSize), new Loc(), (DataManager.Instance.Save.ActiveTeam.GetInvCount() > zoneEntry.BagSize) ? Color.Red : Color.White)); } if (zoneEntry.BagRestrict > -1) { rules.Add(new MenuText((zoneEntry.BagRestrict == 0) ? Text.FormatKey("ZONE_RESTRICT_ITEM_ALL") : Text.FormatKey("ZONE_RESTRICT_ITEM", zoneEntry.BagRestrict), new Loc(), (DataManager.Instance.Save.ActiveTeam.GetInvCount() > zoneEntry.BagRestrict) ? Color.Red : Color.White)); } for (int ii = 0; ii < rules.Count; ii++) { rules[ii].Loc = Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2, GraphicsManager.MenuBG.TileHeight + TitledStripMenu.TITLE_OFFSET + VERT_SPACE * (1 + ii)); Elements.Add(rules[ii]); } Bounds.Size = new Loc(Bounds.Size.X, GraphicsManager.MenuBG.TileHeight * 2 + TitledStripMenu.TITLE_OFFSET + VERT_SPACE * (1 + rules.Count)); } }