private void EnemyTurn() { Random rand = new Random(); var enemy = App.charactersLists.CharacterOrder.First(); var enemyRow = App.charactersLists.GetEnemyRow((EnemyCharacter)enemy); var player = App.charactersLists.GetPlayerTarget(rand); damageInfo = new DamageInfoVisibility(player); var enemyCanvas = (Canvas)MonsterField.Children[enemyRow]; var behavior = enemy.BehaviorList[0]; var damage = behavior.Action(enemy, player); enemy.SwitchAnimation(enemyCanvas, 1, App.resourcePaths.GetEnemyPath(enemy.CharacterID), damageInfo.DamageTimer, 4); if (player.CharacterStatus.CheckDying(player)) { SetIdleLastCharacter(player); } player.CharacterStatus.AddSP(player.CharacterStats.SP, damage); setOnField.SetPlayerStatus(App.charactersLists.GetPlayerRow(player), player, PlayerMenu); ShowPlayerDamage(damage.ToString(), player); ResetTurn(); }
private void PlayerAction(ACharacter activePlayer) { var player = (PlayerCharacter)activePlayer; string enemyCursor = Grid.GetRow(EnemyMenuCursor).ToString() + Grid.GetColumn(EnemyMenuCursor).ToString(); if (lastAction is BattlePageMenuAction) { var playerRow = App.charactersLists.GetPlayerRow(player); var enemy = App.charactersLists.EnemyList[TargetTranslate(enemyCursor)]; damageInfo = new DamageInfoVisibility(enemy); var playerCanvas = (Canvas)PlayerField.Children[playerRow]; Grid.SetRow(playerCanvas, Grid.GetRow(EnemyMenuCursor)); Grid.SetColumn(playerCanvas, 0); int damage = -1; if (lastAction.CurrentIndex == 0) { var behavior = player.BehaviorList[0]; damage = behavior.Action(player, enemy); player.SwitchAnimation(playerCanvas, 2, App.resourcePaths.GetPlayerPath(player.CharacterID), damageInfo.DamageTimer, 0, false); ShowEnemyDamage(damage.ToString(), enemy); } else if (lastAction.CurrentIndex == 2) { Grid.SetRow(playerCanvas, App.charactersLists.GetPlayerRow(player)); Grid.SetColumn(playerCanvas, 1); player.CharacterBuffsDebuff.SetDefense(player.CharacterStats); player.SwitchAnimation(playerCanvas, 7, App.resourcePaths.GetPlayerPath(player.CharacterID), damageInfo.DamageTimer, 0, false); ShowSkillName("Defense Up", true); ShowPlayerDamage("", player); } else if (lastAction.CurrentIndex == 4) { var behavior = player.BehaviorList[1]; damage = behavior.Action(player, enemy); ShowSkillName(behavior.Name, true); player.SwitchAnimation(playerCanvas, 4, App.resourcePaths.GetPlayerPath(player.CharacterID), damageInfo.DamageTimer, 0, false); player.CharacterStatus.ResetSP(); setOnField.SetPlayerStatus(App.charactersLists.GetPlayerRow(player), player, PlayerMenu); ShowEnemyDamage(damage.ToString(), enemy); } ResetTurn(); } else if (lastAction is BattlePageSubMenuAction) { var playerRow = App.charactersLists.GetPlayerRow(player); var behaviorList = player.BehaviorList.GetRange(2, player.BehaviorList.Count - 2); var playerCanvas = (Canvas)PlayerField.Children[playerRow]; var behavior = behaviorList[lastAction.CurrentIndex]; ShowSkillName(behavior.Name, true); var damage = 0; if (menuAction is BattlePageTargetMenuAction) { var enemy = App.charactersLists.EnemyList[TargetTranslate(enemyCursor)]; damageInfo = new DamageInfoVisibility(enemy); Grid.SetRow(playerCanvas, Grid.GetRow(EnemyMenuCursor)); Grid.SetColumn(playerCanvas, 0); damage = behavior.Action(player, enemy); if (behavior is SkillAttackBehavior) { player.SwitchAnimation(playerCanvas, 2, App.resourcePaths.GetPlayerPath(player.CharacterID), damageInfo.DamageTimer, 0, false); } else { player.SwitchAnimation(playerCanvas, 3, App.resourcePaths.GetPlayerPath(player.CharacterID), damageInfo.DamageTimer, 4); } setOnField.SetPlayerStatus(App.charactersLists.GetPlayerRow(player), player, PlayerMenu); ShowEnemyDamage(damage.ToString(), enemy); } else if (menuAction is BattlePagePlayerMenuAction) { var target = App.charactersLists.PlayerList[menuAction.CurrentIndex]; damageInfo = new DamageInfoVisibility(target); damage = behavior.Action(player, target); player.SwitchAnimation(playerCanvas, 3, App.resourcePaths.GetPlayerPath(player.CharacterID), damageInfo.DamageTimer, 4); setOnField.SetPlayerStatus(App.charactersLists.GetPlayerRow(target), target, PlayerMenu); ShowPlayerDamage(damage.ToString(), target); } ResetTurn(); } }