public string GetRepairMessage(BattleManager.BattleCommandType battleCommandType, Robot.ResultType repairResult) { var result = string.Empty; switch (repairResult) { case Robot.ResultType.Critical: result = RepairCriticalMessage; break; case Robot.ResultType.Normal: switch (battleCommandType) { case BattleManager.BattleCommandType.RepairRightArm: result = RepairRightWeaponMessage; break; case BattleManager.BattleCommandType.RepairLeftArm: result = RepairLeftWeaponMessage; break; case BattleManager.BattleCommandType.RepairBody: result = RepairBodyMessage; break; } break; case Robot.ResultType.Fumble: result = RepairFumbleMessage; break; } return(result); }
public AttackResult Attack(BattleManager.BattleCommandType battleCommandType, Robot defenderRobot) { var damage = CalculateDamage(battleCommandType, defenderRobot); var attackResult = CalculateCriticalDamage(damage); var isJustBodyBroken = defenderRobot.Damage(attackResult); var weapon = battleCommandType == BattleManager.BattleCommandType.AttackRightArm ? _rightWeapon : _leftWeapon; Energy = Math.Max(0, Energy - weapon.EnergyToAttack); var isJustWeaponBroken = false; // if (!weapon.IsBroken) // { // isJustWeaponBroken = DrawLots(weapon.BrokenPoint); // if (isJustWeaponBroken) // { // weapon.Break(); // } // else // { // weapon.BrokenPoint--; // } // } attackResult.IsJustWeaponBroken = isJustWeaponBroken; attackResult.IsJustBodyBroken = isJustBodyBroken; return(attackResult); }
public ResultType Repair(BattleManager.BattleCommandType battleCommandType) { switch (DrawLotsRepairCritical()) { case ResultType.Critical: _rightWeapon.Repair(); _leftWeapon.Repair(); RepairBody(); return(ResultType.Critical); case ResultType.Normal: switch (battleCommandType) { case BattleManager.BattleCommandType.RepairRightArm: _rightWeapon.Repair(); Energy = Math.Max(0, Energy - _rightWeapon.EnergyToRepair); break; case BattleManager.BattleCommandType.RepairLeftArm: _leftWeapon.Repair(); Energy = Math.Max(0, Energy - _leftWeapon.EnergyToRepair); break; case BattleManager.BattleCommandType.RepairBody: RepairBody(); break; } return(ResultType.Normal); case ResultType.Fumble: return(ResultType.Fumble); } return(ResultType.Normal); }
public int CalculateDamage(BattleManager.BattleCommandType battleCommandType, Robot defenderRobot) { var weapon = battleCommandType == BattleManager.BattleCommandType.AttackRightArm ? _rightWeapon : _leftWeapon; var damage = weapon.DamageValue; damage = (int)(defenderRobot.IsBodyBroken ? damage * ConstValue.BrokenBodyDamageRate : damage); return(damage); }
// public const string TurnStartMessage = "プレイヤー{0}のターン!"; // public const string TurnStartMessage = "プレイヤー{0}のターン!"; public string GetAttackMessage(int currentPlayer, BattleManager.BattleCommandType battleCommandType, Robot.AttackResult attackResult) { var result = string.Empty; switch (battleCommandType) { case BattleManager.BattleCommandType.AttackRightArm: case BattleManager.BattleCommandType.AttackLeftArm: result = string.Format(AttackMessage, currentPlayer) + Environment.NewLine + string.Format(AttackWeaponMessage, battleCommandType == BattleManager.BattleCommandType.AttackRightArm ? "右" : "左") + Environment.NewLine + GetCriticalMessage(attackResult.ResultType) + (attackResult.Damage == 0 ? AttackNoDamageMessage : string.Format(AttackDamageMessage, attackResult.Damage)) + (attackResult.IsJustWeaponBroken ? Environment.NewLine + AttackWeaponBrokenMessage : string.Empty) + (attackResult.IsJustBodyBroken ? Environment.NewLine + AttackBodyBrokenMessage : string.Empty) ; break; } return(result); }
public bool CanExecuteCommand(BattleManager.BattleCommandType battleCommandType) { switch (battleCommandType) { case BattleManager.BattleCommandType.AttackRightArm: return(_rightWeapon.EnergyToAttack <= Energy); case BattleManager.BattleCommandType.AttackLeftArm: return(_leftWeapon.EnergyToAttack <= Energy); case BattleManager.BattleCommandType.RepairRightArm: return(_rightWeapon.EnergyToRepair <= Energy); case BattleManager.BattleCommandType.RepairLeftArm: return(_leftWeapon.EnergyToRepair <= Energy); case BattleManager.BattleCommandType.RepairBody: return(_energyToRepairBody <= Energy); default: return(false); } }