public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data) { if (!base.CanExecute(player, data)) { return(false); } var stables = ((BuildStableAndBakeActionData)data).StableData.ToImmutableArray(); var bake = ((BuildStableAndBakeActionData)data).BakeData.ToImmutableArray(); if ((bake == null || bake.Length == 0) && (stables == null || stables.Length == 0)) { return(false); } if (bake != null && bake.Length > 0 && !ActionService.CanBake(player, bake)) { return(false); } if (stables != null && (stables.Length > 1 || (stables.Length > 0 && !ActionService.CanBuildStables(player, stables, Id)))) { return(false); } return(true); }
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); }
public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data) { var stables = ImmutableArray.Create(((BuildStableActionData)data).StableData); if (stables.Length > Count) { return(false); } if (stables.Length > 0) { if (!ActionService.CanBuildStables(player, stables, Id)) { return(false); } } return(true); }