Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }