Exemple #1
0
    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);
    }
Exemple #2
0
    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);
    }
Exemple #3
0
    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);
    }
Exemple #4
0
    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);
    }
Exemple #5
0
//    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);
    }
Exemple #6
0
    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);
        }
    }