public ThinkAction(ThinkActionType type, string optionName, PartyMember actor = null, PartyMember target = null) { Type = type; OptionName = optionName; Actor = actor; Target = target; Active = true; InfiniteInInventory = false; if (type == ThinkActionType.Attack) { WeaponData weaponData = ResourceManager.GetWeaponData(optionName); if (weaponData == null) { Melee = false; } else { Melee = weaponData.WeaponType == WeaponType.Melee; } } else { Melee = false; } }
public override void Start() { Comparison<ThinkAction> speedComparer = new Comparison<ThinkAction>((a, b) => b.Actor.Speed.CompareTo(a.Actor.Speed)); attackThinkActions.Sort(speedComparer); useItemThinkActions.Sort(speedComparer); currentThinkActionType = ThinkActionType.UseItem; currentThinkActionFinished = false; statusEffectsCompleteForAction = false; }
public override void Start() { Comparison <ThinkAction> speedComparer = new Comparison <ThinkAction>((a, b) => b.Actor.Speed.CompareTo(a.Actor.Speed)); attackThinkActions.Sort(speedComparer); useItemThinkActions.Sort(speedComparer); currentThinkActionType = ThinkActionType.UseItem; currentThinkActionFinished = false; statusEffectsCompleteForAction = false; }
private void initThinkActionTypeMenu(ThinkActionType thinkActionType) { setThinkActionType(thinkActionType); Logger.Log(thinkActionType.ToString() + " action menu opened"); selectDefaultOptionName(); if (!menuIsEmpty()) { Logger.Log("Selected option: " + MenuOptions[CurrentOptionNameIndex].Name); } }
public Act(Battle battle, List<ThinkAction> thinkActions) : base(battle) { if (thinkActions == null) throw new Exception("List<ThinkAction> cannot be null"); attackThinkActions = new List<ThinkAction>(thinkActions.Where(thinkAction => thinkAction.Type == ThinkActionType.Attack)); useItemThinkActions = new List<ThinkAction>(thinkActions.Where(thinkAction => thinkAction.Type == ThinkActionType.UseItem)); currentThinkActionIndex = 0; currentThinkActionType = ThinkActionType.None; statusEffectsCompleteForAction = false; }
protected Inventory getInventoryFromThinkActionType(ThinkActionType thinkActionType, PartyMember partyMember) { Party party = Battle.GetPartyForPartyMember(partyMember); if (party == null) return null; switch (thinkActionType) { case ThinkActionType.Attack: return party.WeaponInventories[partyMember.CharacterClass]; case ThinkActionType.Defend: return party.ShieldInventory; case ThinkActionType.UseItem: return party.ItemInventory; default: return null; } }
public Act(Battle battle, List <ThinkAction> thinkActions) : base(battle) { if (thinkActions == null) { throw new Exception("List<ThinkAction> cannot be null"); } attackThinkActions = new List <ThinkAction>(thinkActions.Where(thinkAction => thinkAction.Type == ThinkActionType.Attack)); useItemThinkActions = new List <ThinkAction>(thinkActions.Where(thinkAction => thinkAction.Type == ThinkActionType.UseItem)); currentThinkActionIndex = 0; currentThinkActionType = ThinkActionType.None; statusEffectsCompleteForAction = false; }
private void setThinkActionType(ThinkActionType thinkActionType) { CurrentThinkActionType = thinkActionType; switch (thinkActionType) { case ThinkActionType.Attack: MenuOptions = weaponMenuOptions[CurrentPartyMember.CharacterClass]; break; case ThinkActionType.Defend: MenuOptions = shieldMenuOptions; break; case ThinkActionType.UseItem: MenuOptions = itemMenuOptions; break; default: MenuOptions = null; break; } }
public override void Update(Delta delta) { if (Battle.PlayerParty.Count == 0 || Battle.EnemyParty.Count == 0) { Finish(); return; } else if (currentThinkActionFinished) { if (allPartyMembersIdle()) { getNextThinkAction(); } return; } ThinkAction thinkAction = null; if (currentThinkActionType == ThinkActionType.UseItem) { if (currentThinkActionIndex >= useItemThinkActions.Count) { currentThinkActionIndex = 0; statusEffectsCompleteForAction = false; currentThinkActionType = ThinkActionType.Attack; return; } thinkAction = useItemThinkActions[currentThinkActionIndex]; } else if (currentThinkActionType == ThinkActionType.Attack) { if (currentThinkActionIndex >= attackThinkActions.Count) { Finish(); return; } thinkAction = attackThinkActions[currentThinkActionIndex]; } pushStateForThinkAction(thinkAction); }
protected Inventory getInventoryFromThinkActionType(ThinkActionType thinkActionType, PartyMember partyMember) { Party party = Battle.GetPartyForPartyMember(partyMember); if (party == null) { return(null); } switch (thinkActionType) { case ThinkActionType.Attack: return(party.WeaponInventories[partyMember.CharacterClass]); case ThinkActionType.Defend: return(party.ShieldInventory); case ThinkActionType.UseItem: return(party.ItemInventory); default: return(null); } }
public override void Finish() { base.Finish(); currentThinkActionType = ThinkActionType.None; ChangeState(new EndTurn(Battle)); }
public override void Update(Delta delta) { if (Battle.PlayerParty.Count == 0 || Battle.EnemyParty.Count == 0) { Finish(); return; } else if (currentThinkActionFinished) { if (allPartyMembersIdle()) getNextThinkAction(); return; } ThinkAction thinkAction = null; if (currentThinkActionType == ThinkActionType.UseItem) { if (currentThinkActionIndex >= useItemThinkActions.Count) { currentThinkActionIndex = 0; statusEffectsCompleteForAction = false; currentThinkActionType = ThinkActionType.Attack; return; } thinkAction = useItemThinkActions[currentThinkActionIndex]; } else if (currentThinkActionType == ThinkActionType.Attack) { if (currentThinkActionIndex >= attackThinkActions.Count) { Finish(); return; } thinkAction = attackThinkActions[currentThinkActionIndex]; } pushStateForThinkAction(thinkAction); }
public ThinkAction(ThinkActionType type, string optionName, PartyMember actor = null, PartyMember target = null) { Type = type; OptionName = optionName; Actor = actor; Target = target; Active = true; InfiniteInInventory = false; if (type == ThinkActionType.Attack) { WeaponData weaponData = ResourceManager.GetWeaponData(optionName); if (weaponData == null) Melee = false; else Melee = weaponData.WeaponType == WeaponType.Melee; } else Melee = false; }
private void initThinkActionTypeMenu(ThinkActionType thinkActionType) { setThinkActionType(thinkActionType); Logger.Log(thinkActionType.ToString() + " action menu opened"); selectDefaultOptionName(); if (!menuIsEmpty()) Logger.Log("Selected option: " + MenuOptions[CurrentOptionNameIndex].Name); }