public SkillForgetMenu(Character player, OnChooseSlot action, Action refuseAction) { int menuWidth = 152; this.player = player; this.chooseSlotAction = action; this.refuseAction = refuseAction; List <MenuChoice> char_skills = new List <MenuChoice>(); for (int ii = 0; ii < player.BaseSkills.Count; ii++) { SlotSkill skill = player.BaseSkills[ii]; if (skill.SkillNum > -1) { SkillData data = DataManager.Instance.GetSkill(skill.SkillNum); string skillString = data.Name.ToLocal(); string skillCharges = skill.Charges + "/" + (data.BaseCharges + player.ChargeBoost); int index = ii; MenuText menuText = new MenuText(skillString, new Loc(2, 1)); MenuText menuCharges = new MenuText(skillCharges, new Loc(menuWidth - 8 * 4, 1), DirH.Right); char_skills.Add(new MenuElementChoice(() => { choose(index); }, true, menuText, menuCharges)); } } summaryMenu = new SkillSummary(Rect.FromPoints(new Loc(16, GraphicsManager.ScreenHeight - 8 - GraphicsManager.MenuBG.TileHeight * 2 - LINE_SPACE * 2 - VERT_SPACE * 4), new Loc(GraphicsManager.ScreenWidth - 16, GraphicsManager.ScreenHeight - 8))); Initialize(new Loc(16, 16), menuWidth, Text.FormatKey("MENU_SKILLS_TITLE", player.BaseName), char_skills.ToArray(), 0, CharData.MAX_SKILL_SLOTS); }
public void SetCurrentChar(CharData chara) { CurrentChar = chara; if (CurrentChar == null) { return; } Portrait.Speaker = CurrentChar.BaseForm; Nickname.Text = CurrentChar.BaseName; Name.Text = CurrentChar.FullFormName; BaseMonsterForm formData = DataManager.Instance.GetMonster(CurrentChar.BaseForm.Species).Forms[CurrentChar.BaseForm.Form]; Level.Text = Text.FormatKey("MENU_TEAM_LEVEL_SHORT", CurrentChar.Level); ElementData element1 = DataManager.Instance.GetElement(formData.Element1); ElementData element2 = DataManager.Instance.GetElement(formData.Element2); string typeString = String.Format("{0}\u2060{1}", element1.Symbol, element1.Name.ToLocal()); if (formData.Element2 != 00) { typeString += "/" + String.Format("{0}\u2060{1}", element2.Symbol, element1.Name.ToLocal()); } Elements.Text = typeString; for (int ii = 0; ii < CharData.MAX_SKILL_SLOTS; ii++) { SlotSkill skill = CurrentChar.BaseSkills[ii]; SkillData data = DataManager.Instance.GetSkill(skill.SkillNum); ElementData element = DataManager.Instance.GetElement(data.Data.Element); string skillString = "-----"; if (skill.SkillNum > -1) { skillString = String.Format("{0}\u2060{1}", element.Symbol, data.Name.ToLocal()); } Skills[ii].Text = skillString; } IntrinsicData entry = DataManager.Instance.GetIntrinsic(CurrentChar.BaseIntrinsics[0]); Intrinsic.Text = entry.Name.ToLocal(); }
public void SetCurrentChar(CharData chara) { CurrentChar = chara; if (CurrentChar == null) { return; } Portrait.Speaker = CurrentChar.BaseForm; Nickname.SetText(CurrentChar.BaseName); Name.SetText(CharData.GetFullFormName(CurrentChar.BaseForm)); BaseMonsterForm formData = DataManager.Instance.GetMonster(CurrentChar.BaseForm.Species).Forms[CurrentChar.BaseForm.Form]; Level.SetText(Text.FormatKey("MENU_TEAM_LEVEL_SHORT", CurrentChar.Level)); ElementData element1 = DataManager.Instance.GetElement(formData.Element1); ElementData element2 = DataManager.Instance.GetElement(formData.Element2); string typeString = element1.GetIconName(); if (formData.Element2 != 00) { typeString += "/" + element2.GetIconName(); } Elements.SetText(typeString); for (int ii = 0; ii < CharData.MAX_SKILL_SLOTS; ii++) { SlotSkill skill = CurrentChar.BaseSkills[ii]; SkillData data = DataManager.Instance.GetSkill(skill.SkillNum); string skillString = "-----"; if (skill.SkillNum > -1) { skillString = data.GetIconName(); } Skills[ii].SetText(skillString); } IntrinsicData entry = DataManager.Instance.GetIntrinsic(CurrentChar.BaseIntrinsics[0]); Intrinsic.SetText(entry.GetColoredName()); }
public SkillReplaceMenu(Character player, int skillNum, OnChooseSlot learnAction, Action refuseAction) { int menuWidth = 152; this.player = player; this.skillNum = skillNum; this.learnAction = learnAction; this.refuseAction = refuseAction; List <MenuChoice> char_skills = new List <MenuChoice>(); for (int ii = 0; ii < player.BaseSkills.Count; ii++) { SlotSkill skill = player.BaseSkills[ii]; if (skill.SkillNum > -1) { SkillData data = DataManager.Instance.GetSkill(skill.SkillNum); string skillString = data.GetColoredName(); string skillCharges = skill.Charges + "/" + (data.BaseCharges + player.ChargeBoost); int index = ii; MenuText menuText = new MenuText(skillString, new Loc(2, 1)); MenuText menuCharges = new MenuText(skillCharges, new Loc(menuWidth - 8 * 4, 1), DirH.Right); MenuDivider div = new MenuDivider(new Loc(0, LINE_SPACE), menuWidth - 8 * 4); char_skills.Add(new MenuElementChoice(() => { choose(index); }, true, menuText, menuCharges, div)); } } string newSkillString = DataManager.Instance.GetSkill(skillNum).GetColoredName(); int maxCharges = DataManager.Instance.GetSkill(skillNum).BaseCharges + player.ChargeBoost; string newSkillCharges = maxCharges + "/" + maxCharges; MenuText newMenuText = new MenuText(newSkillString, new Loc(2, 1)); MenuText newMenuCharges = new MenuText(newSkillCharges, new Loc(menuWidth - 8 * 4, 1), DirH.Right); char_skills.Add(new MenuElementChoice(() => { choose(CharData.MAX_SKILL_SLOTS); }, true, newMenuText, newMenuCharges)); summaryMenu = new SkillSummary(Rect.FromPoints(new Loc(16, GraphicsManager.ScreenHeight - 8 - GraphicsManager.MenuBG.TileHeight * 2 - LINE_SPACE * 2 - VERT_SPACE * 4), new Loc(GraphicsManager.ScreenWidth - 16, GraphicsManager.ScreenHeight - 8))); Initialize(new Loc(16, 16), menuWidth, Text.FormatKey("MENU_SKILLS_TITLE", player.GetDisplayName(true)), char_skills.ToArray(), 0); }
public IEnumerator <YieldInstruction> ProcessInput(GameAction action) { GroundChar character = FocusedCharacter; switch (action.Type) { case GameAction.ActionType.Dir: { //result.Success = ActionResult.ResultType.Success; break; } case GameAction.ActionType.Move: { character.CurrentCommand = action; break; } case GameAction.ActionType.Drop: { yield return(CoroutineManager.Instance.StartCoroutine(ProcessTrashItem(character, action[0], action[1] != 0))); break; } case GameAction.ActionType.Give: { //[0] = item slot to use (-1 for the ground item) //[1] = who to give it to (-1 for the user) yield return(CoroutineManager.Instance.StartCoroutine(ProcessGiveItem(character, action[0], action[1]))); break; } case GameAction.ActionType.Take: { //[0] = team slot to take from yield return(CoroutineManager.Instance.StartCoroutine(ProcessTakeItem(character, action[0]))); break; } case GameAction.ActionType.Attack: { character.CurrentCommand = action; yield return(CoroutineManager.Instance.StartCoroutine(ProcessObjectInteract(character))); break; } case GameAction.ActionType.UseItem: { //[0] = item slot to use (-1 for held item, -2 for the ground item) //[1] = who to use it on (-1 for the user) //others: which slot to delete, //which intrinsic to have, which team member/item to send in, etc. yield return(CoroutineManager.Instance.StartCoroutine(ProcessUseItem(character, action[0], action[1] != 0))); break; } case GameAction.ActionType.ShiftTeam: { int charIndex = action[0]; Character targetChar = DataManager.Instance.Save.ActiveTeam.Players[charIndex]; DataManager.Instance.Save.ActiveTeam.Players.RemoveAt(charIndex); DataManager.Instance.Save.ActiveTeam.Players.Insert(charIndex + 1, targetChar); //update the leader indices if (DataManager.Instance.Save.ActiveTeam.LeaderIndex == charIndex) { DataManager.Instance.Save.ActiveTeam.LeaderIndex++; } else if (DataManager.Instance.Save.ActiveTeam.LeaderIndex == charIndex + 1) { DataManager.Instance.Save.ActiveTeam.LeaderIndex--; } break; } case GameAction.ActionType.SetLeader: { yield return(CoroutineManager.Instance.StartCoroutine(MakeLeader(action[0], action[1] != 0))); break; } case GameAction.ActionType.SendHome: { yield return(CoroutineManager.Instance.StartCoroutine(SendHome(action[0]))); break; } case GameAction.ActionType.GiveUp: { GameManager.Instance.SceneOutcome = GameManager.Instance.EndSegment((GameProgress.ResultType)action[0]); break; } case GameAction.ActionType.Tactics: { //saves all the settings to the characters for (int ii = 0; ii < DataManager.Instance.Save.ActiveTeam.Players.Count; ii++) { int choice = action[ii]; Character target = DataManager.Instance.Save.ActiveTeam.Players[ii]; AITactic tactic = DataManager.Instance.GetAITactic(choice); if (tactic.ID != target.Tactic.ID) { target.Tactic = new AITactic(tactic); } target.Tactic.Initialize(target); } break; } case GameAction.ActionType.SetSkill: { Skill skill = DataManager.Instance.Save.ActiveTeam.Players[action[0]].Skills[action[1]].Element; skill.Enabled = !skill.Enabled; break; } case GameAction.ActionType.ShiftSkill: { int slot = action[1]; Character targetChar = DataManager.Instance.Save.ActiveTeam.Players[action[0]]; BackReference <Skill> upState = targetChar.Skills[slot]; BackReference <Skill> downState = targetChar.Skills[slot + 1]; targetChar.Skills[slot] = downState; targetChar.Skills[slot + 1] = upState; if (upState.BackRef > -1 && downState.BackRef > -1) { SlotSkill skill = targetChar.BaseSkills[slot]; targetChar.BaseSkills.RemoveAt(slot); targetChar.BaseSkills.Insert(slot + 1, skill); } break; } case GameAction.ActionType.SortItems: { DataManager.Instance.Save.ActiveTeam.SortItems(); break; } default: { throw new Exception("Undefined Command: " + action.Type); } } }
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); }