public SongSummary(Rect bounds) : base(bounds) { Name = new MenuText("", Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth + 2, GraphicsManager.MenuBG.TileHeight + 2)); Elements.Add(Name); OriginName = new MenuText("", Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth + 2, GraphicsManager.MenuBG.TileHeight + VERT_SPACE + 2)); Elements.Add(OriginName); Origin = new MenuText("", Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth + 2, GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 2 + 2)); Elements.Add(Origin); Artist = new DialogueText("", Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth + 2, GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 3 + 2), Bounds.End.X - GraphicsManager.MenuBG.TileWidth * 4 - Bounds.X, LINE_SPACE, false); Elements.Add(Artist); }
public TitleDialog(string message, bool fadeIn, int holdTime, Action action) { Visible = true; this.action = action; FadeIn = fadeIn; showing = true; if (!FadeIn) { CurrentFadeTime = FrameTick.FromFrames(FADE_TIME); } HoldTime = holdTime; //message will contain pauses, which get parsed here. //and colors, which will get parsed by the text renderer Pauses = new List <TextPause>(); int startIndex = 0; int tabIndex = message.IndexOf("[pause=", startIndex, StringComparison.OrdinalIgnoreCase); while (tabIndex > -1) { int endIndex = message.IndexOf("]", tabIndex); if (endIndex == -1) { break; } int param; if (Int32.TryParse(message.Substring(tabIndex + "[pause=".Length, endIndex - (tabIndex + "[pause=".Length)), out param)) { TextPause pause = new TextPause(); pause.LetterIndex = tabIndex; pause.Time = param; message = message.Remove(tabIndex, endIndex - tabIndex + "]".Length); Pauses.Add(pause); tabIndex = message.IndexOf("[pause=", startIndex, StringComparison.OrdinalIgnoreCase); } else { break; } } string newMessage = message; Text = new DialogueText(newMessage, new Loc(GraphicsManager.ScreenWidth / 2, GraphicsManager.ScreenHeight / 2), GraphicsManager.ScreenWidth, TEXT_SPACE, true, FadeIn ? -1 : 0); }
public DialogueBox(string message, bool sound) { Bounds = Rect.FromPoints(new Loc(SIDE_BUFFER, GraphicsManager.ScreenHeight - (16 + PER_LINE_SPACE * MAX_LINES)), new Loc(GraphicsManager.ScreenWidth - SIDE_BUFFER, GraphicsManager.ScreenHeight - 8)); Sound = sound; //message will contain pauses, which get parsed here. //and colors, which will get parsed by the text renderer Pauses = new List <TextPause>(); int startIndex = 0; int tabIndex = message.IndexOf("[pause=", startIndex, StringComparison.OrdinalIgnoreCase); while (tabIndex > -1) { int endIndex = message.IndexOf("]", tabIndex); if (endIndex == -1) { break; } int param; if (Int32.TryParse(message.Substring(tabIndex + "[pause=".Length, endIndex - (tabIndex + "[pause=".Length)), out param)) { TextPause pause = new TextPause(); pause.LetterIndex = tabIndex; pause.Time = param; message = message.Remove(tabIndex, endIndex - tabIndex + "]".Length); Pauses.Add(pause); tabIndex = message.IndexOf("[pause=", startIndex, StringComparison.OrdinalIgnoreCase); } else { break; } } string newMessage = message; Text = new DialogueText(newMessage, Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2, GraphicsManager.MenuBG.TileHeight), Bounds.End.X - GraphicsManager.MenuBG.TileWidth * 4 - Bounds.X, TEXT_SPACE, false, true); }
public SkillSummary(Rect bounds) : base(bounds) { SkillElement = new MenuText("", Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2, GraphicsManager.MenuBG.TileHeight)); Elements.Add(SkillElement); SkillCategory = new MenuText("", Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2, GraphicsManager.MenuBG.TileHeight + VERT_SPACE)); Elements.Add(SkillCategory); SkillPower = new MenuText("", Bounds.Start + new Loc((Bounds.End.X - Bounds.X) / 2, GraphicsManager.MenuBG.TileHeight)); Elements.Add(SkillPower); SkillHitRate = new MenuText("", Bounds.Start + new Loc((Bounds.End.X - Bounds.X) / 2, GraphicsManager.MenuBG.TileHeight + VERT_SPACE)); Elements.Add(SkillHitRate); Targets = new MenuText("", Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2, GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 2)); Elements.Add(Targets); Description = new DialogueText("", Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2, GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 3), Bounds.End.X - GraphicsManager.MenuBG.TileWidth * 4 - Bounds.X, LINE_SPACE, false); Elements.Add(Description); MenuDiv = new MenuDivider(Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth, GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 2 + LINE_SPACE), Bounds.End.X - Bounds.X - GraphicsManager.MenuBG.TileWidth * 2); Elements.Add(MenuDiv); }
public MemberFeaturesMenu(int teamSlot, bool assembly, bool allowAssembly) { Bounds = Rect.FromPoints(new Loc(24, 16), new Loc(296, 224)); this.teamSlot = teamSlot; this.assembly = assembly; this.allowAssembly = allowAssembly; Character player = assembly ? DataManager.Instance.Save.ActiveTeam.Assembly[teamSlot] : DataManager.Instance.Save.ActiveTeam.Players[teamSlot]; //TODO: align this text properly Title = new MenuText(Text.FormatKey("MENU_TEAM_FEATURES") + " (1/3)", Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth + 8, GraphicsManager.MenuBG.TileHeight)); Div = new MenuDivider(Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth, GraphicsManager.MenuBG.TileHeight + LINE_SPACE), Bounds.End.X - Bounds.X - GraphicsManager.MenuBG.TileWidth * 2); Portrait = new SpeakerPortrait(player.BaseForm, new EmoteStyle(0), Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2, GraphicsManager.MenuBG.TileHeight + TitledStripMenu.TITLE_OFFSET), false); string speciesText = player.GetDisplayName(true) + " / " + CharData.GetFullFormName(player.BaseForm); Name = new MenuText(speciesText, Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2 + 48, GraphicsManager.MenuBG.TileHeight + TitledStripMenu.TITLE_OFFSET)); ElementData element1 = DataManager.Instance.GetElement(player.Element1); ElementData element2 = DataManager.Instance.GetElement(player.Element2); string typeString = element1.GetIconName(); if (player.Element2 != 00) { typeString += "/" + element2.GetIconName(); } bool origElements = (player.Element1 == DataManager.Instance.GetMonster(player.BaseForm.Species).Forms[player.BaseForm.Form].Element1); origElements &= (player.Element2 == DataManager.Instance.GetMonster(player.BaseForm.Species).Forms[player.BaseForm.Form].Element2); Elements = new MenuText(Text.FormatKey("MENU_TEAM_ELEMENT", typeString), Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2 + 48, GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 1 + TitledStripMenu.TITLE_OFFSET), origElements ? Color.White : Color.Yellow); Level = new MenuText(Text.FormatKey("MENU_TEAM_LEVEL_SHORT", player.Level), Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2 + 48, GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 2 + TitledStripMenu.TITLE_OFFSET)); HP = new MenuText(Text.FormatKey("MENU_TEAM_HP", player.HP, player.MaxHP), Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2, GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 3 + TitledStripMenu.TITLE_OFFSET)); Fullness = new MenuText(Text.FormatKey("MENU_TEAM_HUNGER", player.Fullness, player.MaxFullness), Bounds.Start + new Loc((Bounds.End.X - Bounds.X) / 2, GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 3 + TitledStripMenu.TITLE_OFFSET)); MainDiv = new MenuDivider(Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth, GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 5), Bounds.End.X - Bounds.X - GraphicsManager.MenuBG.TileWidth * 2); SkillTitle = new MenuText(Text.FormatKey("MENU_TEAM_SKILLS"), Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2, GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 4 + TitledStripMenu.TITLE_OFFSET)); Skills = new MenuText[CharData.MAX_SKILL_SLOTS * 3]; for (int ii = 0; ii < CharData.MAX_SKILL_SLOTS; ii++) { SlotSkill skill = player.BaseSkills[ii]; string skillString = "-----"; string skillCharges = "--"; string totalCharges = "/--"; if (skill.SkillNum > -1) { SkillData data = DataManager.Instance.GetSkill(skill.SkillNum); skillString = data.GetIconName(); skillCharges = skill.Charges.ToString(); totalCharges = "/" + (data.BaseCharges + player.ChargeBoost); } Skills[ii * 3] = new MenuText(skillString, Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2, GraphicsManager.MenuBG.TileHeight + VERT_SPACE * (ii + 5) + TitledStripMenu.TITLE_OFFSET)); Skills[ii * 3 + 1] = new MenuText(skillCharges, new Loc(Bounds.End.X - GraphicsManager.MenuBG.TileWidth * 2 - 16 - GraphicsManager.TextFont.CharSpace, Bounds.Y + GraphicsManager.MenuBG.TileHeight + VERT_SPACE * (ii + 5) + TitledStripMenu.TITLE_OFFSET), DirH.Right); Skills[ii * 3 + 2] = new MenuText(totalCharges, new Loc(Bounds.End.X - GraphicsManager.MenuBG.TileWidth * 2 - 16, Bounds.Y + GraphicsManager.MenuBG.TileHeight + VERT_SPACE * (ii + 5) + TitledStripMenu.TITLE_OFFSET), DirH.Left); } IntrinsicDiv = new MenuDivider(Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth, GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 10), Bounds.End.X - Bounds.X - GraphicsManager.MenuBG.TileWidth * 2); bool origIntrinsic = (player.Intrinsics[0].Element.ID == player.BaseIntrinsics[0]); IntrinsicData entry = DataManager.Instance.GetIntrinsic(player.Intrinsics[0].Element.ID); Intrinsic = new MenuText(Text.FormatKey("MENU_TEAM_INTRINSIC", entry.GetColoredName()), Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2, GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 9 + TitledStripMenu.TITLE_OFFSET), origIntrinsic ? Color.White : Color.Yellow); IntrinsicDesc = new DialogueText(entry.Desc.ToLocal(), Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2, GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 10 + TitledStripMenu.TITLE_OFFSET), Bounds.End.X - GraphicsManager.MenuBG.TileWidth * 3 - Bounds.X, LINE_SPACE, false); }
public StatusMenu(int teamSlot) { int menuWidth = 168; List <MenuChoice> flatChoices = new List <MenuChoice>(); mapIndices = new List <int>(); foreach (int status in ZoneManager.Instance.CurrentMap.Status.Keys) { MapStatus statusInstance = ZoneManager.Instance.CurrentMap.Status[status]; if (!statusInstance.Hidden) { Data.MapStatusData statusData = Data.DataManager.Instance.GetMapStatus(status); mapIndices.Add(status); MenuText statusName = statusName = new MenuText(statusData.GetColoredName(), new Loc(2, 1)); MapCountDownState countDown = statusInstance.StatusStates.GetWithDefault <MapCountDownState>(); if (countDown != null && countDown.Counter > 0) { flatChoices.Add(new MenuElementChoice(() => { }, true, statusName, new MenuText("[" + countDown.Counter + "]", new Loc(menuWidth - 8 * 4, 1), DirH.Right))); } else { flatChoices.Add(new MenuElementChoice(() => { }, true, statusName)); } } } indices = new List <int>(); foreach (int status in DungeonScene.Instance.ActiveTeam.Players[teamSlot].StatusEffects.Keys) { if (Data.DataManager.Instance.GetStatus(status).MenuName) { indices.Add(status); MenuText statusName = null; StackState stack = DungeonScene.Instance.ActiveTeam.Players[teamSlot].StatusEffects[status].StatusStates.GetWithDefault <StackState>(); if (stack != null) { statusName = new MenuText(Data.DataManager.Instance.GetStatus(status).GetColoredName() + (stack.Stack < 0 ? " " : " +") + stack.Stack, new Loc(2, 1)); } else { statusName = new MenuText(Data.DataManager.Instance.GetStatus(status).GetColoredName(), new Loc(2, 1)); } CountDownState countDown = DungeonScene.Instance.ActiveTeam.Players[teamSlot].StatusEffects[status].StatusStates.GetWithDefault <CountDownState>(); if (countDown != null && countDown.Counter > 0) { flatChoices.Add(new MenuElementChoice(() => { }, true, statusName, new MenuText("[" + countDown.Counter + "]", new Loc(menuWidth - 8 * 4, 1), DirH.Right))); } else { flatChoices.Add(new MenuElementChoice(() => { }, true, statusName)); } } } List <MenuChoice[]> statuses = SortIntoPages(flatChoices, SLOTS_PER_PAGE); summaryMenu = new SummaryMenu(Rect.FromPoints(new Loc(16, GraphicsManager.ScreenHeight - 8 - 4 * VERT_SPACE - GraphicsManager.MenuBG.TileHeight * 2), new Loc(GraphicsManager.ScreenWidth - 16, GraphicsManager.ScreenHeight - 8))); Description = new DialogueText("", summaryMenu.Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth * 2, GraphicsManager.MenuBG.TileHeight), summaryMenu.Bounds.End.X - GraphicsManager.MenuBG.TileWidth * 4 - summaryMenu.Bounds.X, LINE_SPACE, false); summaryMenu.Elements.Add(Description); Initialize(new Loc(16, 16), menuWidth, Text.FormatKey("MENU_TEAM_STATUS_TITLE"), statuses.ToArray(), 0, 0, SLOTS_PER_PAGE); }