public override bool CanExecute(AgricolaPlayer player, GameActionData data)
        {
            if (!base.CanExecute(player, data))
            {
                return(false);
            }

            var rooms   = ((BuildRoomsAndStablesActionData)data).RoomData.ToImmutableArray();
            var stables = ((BuildRoomsAndStablesActionData)data).StableData.ToImmutableArray();

            if (rooms.Length == 0 && stables.Length == 0 ||
                rooms.Intersect <int>(stables).Count() > 0)
            {
                return(false);
            }

            if (rooms.Length > 0)
            {
                if (!ActionService.CanBuildRooms(player, data.ActionId, rooms))
                {
                    return(false);
                }
            }

            if (stables.Length > 0)
            {
                if (!ActionService.CanBuildStables(player, stables, Id))
                {
                    return(false);
                }
            }

            return(true);
        }
Exemplo n.º 2
0
        public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            if (!ActionService.CanBuildRooms(
                    player,
                    data.ActionId,
                    ImmutableArray.Create(((BuildRoomData)data).RoomData)))
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 3
0
        public override bool CanExecute(AgricolaPlayer player, GameActionData data)
        {
            if (!base.CanExecute(player, data))
            {
                return(false);
            }

            var brotpaData = (BuildRoomOrTravelingPlayersActionData)data;

            if (brotpaData.TakeFood == false &&
                (!brotpaData.Room.HasValue || !ActionService.CanBuildRooms(player, data.ActionId, ImmutableArray.Create(brotpaData.Room.Value))))
            {
                return(false);
            }

            return(true);
        }