public FinalResultsMenu(GameProgress ending) { Bounds = Rect.FromPoints(new Loc(GraphicsManager.ScreenWidth / 2 - 140, 16), new Loc(GraphicsManager.ScreenWidth / 2 + 140, 224)); Ending = ending; Title = new MenuText(Text.FormatKey("MENU_RESULTS_TITLE"), new Loc(GraphicsManager.ScreenWidth / 2, Bounds.Y + GraphicsManager.MenuBG.TileHeight), DirH.None); Div = new MenuDivider(Bounds.Start + new Loc(GraphicsManager.MenuBG.TileWidth, GraphicsManager.MenuBG.TileHeight + LINE_SPACE), Bounds.End.X - Bounds.X - GraphicsManager.MenuBG.TileWidth * 2); Team = new MenuText(Ending.ActiveTeam.GetDisplayName(), new Loc(GraphicsManager.ScreenWidth / 2, Bounds.Y + GraphicsManager.MenuBG.TileHeight + VERT_SPACE + TitledStripMenu.TITLE_OFFSET), DirH.None); string message = ""; switch (Ending.Outcome) { case GameProgress.ResultType.Cleared: message = Text.FormatKey("MENU_RESULTS_COMPLETE", Ending.Location); break; case GameProgress.ResultType.Rescue: message = Text.FormatKey("MENU_RESULTS_RESCUE", Ending.Location); break; case GameProgress.ResultType.Failed: case GameProgress.ResultType.Downed: message = Text.FormatKey("MENU_RESULTS_DEFEAT", Ending.Location); break; case GameProgress.ResultType.TimedOut: message = Text.FormatKey("MENU_RESULTS_TIMEOUT", Ending.Location); break; case GameProgress.ResultType.Escaped: message = Text.FormatKey("MENU_RESULTS_ESCAPE", Ending.Location); break; case GameProgress.ResultType.GaveUp: message = Text.FormatKey("MENU_RESULTS_QUIT", Ending.Location); break; default: { if (String.IsNullOrWhiteSpace(Ending.Location)) { message = Text.FormatKey("MENU_RESULTS_VANISHED"); } else { message = Text.FormatKey("MENU_RESULTS_VANISHED_AT", Ending.Location); } break; } } Description = new MenuText(message, new Loc(GraphicsManager.ScreenWidth / 2, Bounds.Y + GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 2 + TitledStripMenu.TITLE_OFFSET), DirH.None); MoneyTally = new MenuText(Text.FormatKey("MENU_BAG_MONEY", Text.FormatKey("MONEY_AMOUNT", Ending.ActiveTeam.Money)), new Loc(GraphicsManager.ScreenWidth / 2, Bounds.Y + GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 4 + TitledStripMenu.TITLE_OFFSET), DirH.None); InvValueTally = new MenuText(Text.FormatKey("MENU_RESULTS_INV_VALUE", Text.FormatKey("MONEY_AMOUNT", Ending.ActiveTeam.GetInvValue())), new Loc(GraphicsManager.ScreenWidth / 2, Bounds.Y + GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 5 + TitledStripMenu.TITLE_OFFSET), DirH.None); TotalTurns = new MenuText(Text.FormatKey("MENU_RESULTS_TOTAL_TURNS", Ending.TotalTurns), new Loc(GraphicsManager.ScreenWidth / 2, Bounds.Y + GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 9 + TitledStripMenu.TITLE_OFFSET), DirH.None); Seed = new MenuText(Text.FormatKey("MENU_RESULTS_SEED", Ending.Rand.FirstSeed.ToString("X")), new Loc(GraphicsManager.ScreenWidth / 2, Bounds.Y + GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 11 + TitledStripMenu.TITLE_OFFSET), DirH.None); RogueProgress rogue = Ending as RogueProgress; if (rogue != null) { StorageValueTally = new MenuText(Text.FormatKey("MENU_RESULTS_BONUS_VALUE", Ending.ActiveTeam.Bank), new Loc(GraphicsManager.ScreenWidth / 2, Bounds.Y + GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 6 + TitledStripMenu.TITLE_OFFSET), DirH.None); TotalTally = new MenuText(Text.FormatKey("MENU_RESULTS_TOTAL_SCORE", Ending.ActiveTeam.GetTotalScore()), new Loc(GraphicsManager.ScreenWidth / 2, Bounds.Y + GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 7 + TitledStripMenu.TITLE_OFFSET), DirH.None); Seed.Color = rogue.Seeded ? TextBlue : Color.White; } else { StorageValueTally = new MenuText("", new Loc(GraphicsManager.ScreenWidth / 2, Bounds.Y + GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 6 + TitledStripMenu.TITLE_OFFSET), DirH.None); TotalTally = new MenuText("", new Loc(GraphicsManager.ScreenWidth / 2, Bounds.Y + GraphicsManager.MenuBG.TileHeight + VERT_SPACE * 7 + TitledStripMenu.TITLE_OFFSET), DirH.None); } base.Initialize(); }
public IEnumerator <YieldInstruction> Begin(int choice, string name) { GameManager.Instance.BGM("", true); yield return(CoroutineManager.Instance.StartCoroutine(GameManager.Instance.FadeOut(false))); GameProgress save = new RogueProgress(seed.HasValue ? seed.Value : MathUtils.Rand.NextUInt64(), Guid.NewGuid().ToString().ToUpper(), seed.HasValue); for (int ii = 0; ii < DataManager.Instance.DataIndices[DataManager.DataType.Zone].Count; ii++) { save.DungeonUnlocks[ii] = DataManager.Instance.Save.DungeonUnlocks[ii]; } DataManager.Instance.SetProgress(save); DataManager.Instance.Save.ActiveTeam = new ExplorerTeam(); DataManager.Instance.Save.ActiveTeam.SetRank(0); DataManager.Instance.Save.ActiveTeam.Name = team; MonsterData monsterData = DataManager.Instance.GetMonster(choice); int formSlot = FormSetting; List <int> forms = CharaDetailMenu.GetPossibleForms(monsterData); if (formSlot >= forms.Count) { formSlot = forms.Count - 1; } if (formSlot == -1) { formSlot = MathUtils.Rand.Next(forms.Count); } int formIndex = forms[formSlot]; Gender gender = CharaDetailMenu.LimitGender(monsterData, formIndex, GenderSetting); if (gender == Gender.Unknown) { gender = monsterData.Forms[formIndex].RollGender(MathUtils.Rand); } int intrinsicSlot = CharaDetailMenu.LimitIntrinsic(monsterData, formIndex, IntrinsicSetting); int intrinsic = 0; if (intrinsicSlot == -1) { intrinsic = monsterData.Forms[formIndex].RollIntrinsic(MathUtils.Rand, 3); } else if (intrinsicSlot == 0) { intrinsic = monsterData.Forms[formIndex].Intrinsic1; } else if (intrinsicSlot == 1) { intrinsic = monsterData.Forms[formIndex].Intrinsic2; } else { intrinsic = monsterData.Forms[formIndex].Intrinsic3; } Character newChar = DataManager.Instance.Save.ActiveTeam.CreatePlayer(MathUtils.Rand, new MonsterID(choice, formIndex, SkinSetting, gender), DataManager.Instance.StartLevel, intrinsic, DataManager.Instance.StartPersonality); newChar.Nickname = name; DataManager.Instance.Save.ActiveTeam.Players.Add(newChar); DataManager.Instance.Save.RegisterMonster(DataManager.Instance.Save.ActiveTeam.Players[0].BaseForm.Species); DataManager.Instance.Save.StartDate = String.Format("{0:yyyy-MM-dd_HH-mm-ss}", DateTime.Now); DataManager.Instance.MsgLog.Clear(); yield return(CoroutineManager.Instance.StartCoroutine(GameManager.Instance.BeginGameInSegment(new ZoneLoc(chosenDest, new SegLoc()), GameProgress.DungeonStakes.Risk, true, false))); }