public override bool IsValidGameState(ActionContext context) { var game = context.Game; if (VisitorManager.ValidateVisitorLocationString(context.Action.Location) == false) { return(false); } var location = VisitorManager.GetVisitorLocationFromLocationString(context.Action.Location); var color = VisitorManager.GetPlayerColorFromVisitorLocationString(context.Action.Location); if (location != GameVisitorLocation.Lobby && location != GameVisitorLocation.Plaza && location != GameVisitorLocation.Gallery) { return(false); } var visitorLocation = VisitorManager.GetVisitorLocationFromLocationString(context.Action.Parent.Location); var visitorPlayerColor = VisitorManager.GetPlayerColorFromVisitorLocationString(context.Action.Parent.Location); if (location == visitorLocation) { return(false); } if (location == GameVisitorLocation.Gallery && (visitorLocation != GameVisitorLocation.Lobby || visitorPlayerColor != color)) { return(false); } if (location == GameVisitorLocation.Plaza && visitorLocation != GameVisitorLocation.Lobby) { return(false); } if (location == GameVisitorLocation.Lobby) { if (visitorLocation != GameVisitorLocation.Plaza && visitorPlayerColor != color) { return(false); } } var visitorType = VisitorManager.GetVisitorTypeFromLocationString(context.Action.Parent.Location); if (visitorType == VisitorTicketType.collector && location == GameVisitorLocation.Gallery) { var collectorCount = context.Game.CurrentPlayer.GetGalleryVisitorCountByType(VisitorTicketType.collector); var max = context.Game.CurrentPlayer.Art.Where(a => a.IsSold == true).Count() + 1; if (collectorCount == max) { return(false); } } return(true); }
public override bool IsValidGameState(ActionContext context) { var game = context.Game; if (VisitorManager.ValidateVisitorLocationString(context.Action.Location) == false) { return(false); } var type = VisitorManager.GetVisitorTypeFromLocationString(context.Action.Location); var location = VisitorManager.GetVisitorLocationFromLocationString(context.Action.Location); var color = VisitorManager.GetPlayerColorFromVisitorLocationString(context.Action.Location); if (location != GameVisitorLocation.Lobby && location != GameVisitorLocation.Plaza) { return(false); } var visitor = game.Visitors.FirstOrDefault(v => v.Type == type && v.Location == location && v.PlayerGallery == color); if (visitor == null) { return(false); } return(true); }