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 void DoAction <InternationalMarketContext>(InternationalMarketContext context)
        {
            var game = context.Game;

            var visitorLocation    = VisitorManager.GetVisitorLocationFromLocationString(context.Action.Parent.Location);
            var visitorPlayerColor = VisitorManager.GetPlayerColorFromVisitorLocationString(context.Action.Parent.Location);
            var visitorType        = VisitorManager.GetVisitorTypeFromLocationString(context.Action.Parent.Location);
            var visitor            = game.Visitors.FirstOrDefault(v => v.Type == visitorType && v.Location == visitorLocation && v.PlayerGallery == visitorPlayerColor);

            var location = VisitorManager.GetVisitorLocationFromLocationString(context.Action.Location);
            var color    = VisitorManager.GetPlayerColorFromVisitorLocationString(context.Action.Location);

            visitor.UpdateVisitorLocation(location, color);

            base.DoAction(context);
        }
Beispiel #3
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);
        }