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); }
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; }
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); }