示例#1
0
        public AvailableMove MakeMove(string identifier)
        {
            var move = AvailableMoves.FirstOrDefault(m => m.Identifier == identifier);

            if (move is null)
            {
                return(null);
            }

            var piece = GetPiece(move.From);
            var to    = move.To;

            SetPiece(move.From, null);
            var promote = (piece.Side == Side.Black && to.Y == Size - 1) || (piece.Side == Side.White && to.Y == 0);

            SetPiece(to, piece.Move(to, promote));

            foreach (var taken in move.Takes)
            {
                SetPiece(taken.Pos, null);
            }

            CurrentTurn = CurrentTurn == Side.Black ? Side.White : Side.Black;

            AvailableMoves = GetAvailableMoves();

            return(move);
        }
示例#2
0
 public ShieldGuy(int level, IChanceService chanceService, string name = null) :
     base(name ?? "Shield Guy"
          , level
          , LevelUpManager.GetHealthByLevel <ShieldGuy>(level)
          , LevelUpManager.GetManaByLevel <ShieldGuy>(level)
          , LevelUpManager.GetStrengthByLevel <ShieldGuy>(level)
          , LevelUpManager.GetDefenseByLevel <ShieldGuy>(level)
          , LevelUpManager.GetSpeedByLevel <ShieldGuy>(level)
          , LevelUpManager.GetEvadeByLevel <ShieldGuy>(level)
          , LevelUpManager.GetLuckByLevel <ShieldGuy>(level)
          , chanceService
          , SpellFactory.GetSpellsByLevel <ShieldGuy>(level)
          , MoveFactory.GetMovesByLevel <ShieldGuy>(level))
 {
     _basicAttack    = AvailableMoves.FirstOrDefault(bm => bm.MoveType == BattleMoveType.Attack);
     _ironShieldMove = AvailableMoves.FirstOrDefault(bm => bm is ShieldMove) as ShieldMove;
     _healShield     = AvailableMoves.FirstOrDefault(bm => bm is ShieldFortifyingMove && ((ShieldFortifyingMove)bm).FortifyingType == ShieldFortifyingType.Health) as ShieldFortifyingMove;
     _fortifyShield  = AvailableMoves.FirstOrDefault(bm => bm is ShieldFortifyingMove && ((ShieldFortifyingMove)bm).FortifyingType == ShieldFortifyingType.Defense) as ShieldFortifyingMove;
 }
示例#3
0
        public Shade(int level, IChanceService chanceService, int shadeExperience)
            : base("Shade",
                   level,
                   LevelUpManager.GetHealthByLevel <Shade>(level),
                   LevelUpManager.GetManaByLevel <Shade>(level),
                   LevelUpManager.GetStrengthByLevel <Shade>(level),
                   LevelUpManager.GetDefenseByLevel <Shade>(level),
                   LevelUpManager.GetSpeedByLevel <Shade>(level),
                   LevelUpManager.GetEvadeByLevel <Shade>(level),
                   LevelUpManager.GetLuckByLevel <Shade>(level),
                   chanceService,
                   SpellFactory.GetSpellsByLevel <Shade>(level)
                   , MoveFactory.GetMovesByLevel <Shade>(level))
        {
            ShadeExperience     = shadeExperience;
            _malevolenceCounter = 0;

            _chargeMove            = AvailableMoves.FirstOrDefault(bm => bm.MoveType == BattleMoveType.Special);
            _malevolenceAttackMove = AvailableMoves.FirstOrDefault(bm => bm.MoveType == BattleMoveType.ConditionalPowerAttack);
        }