Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            if (!base.CanExecute(player, data))
            {
                return(false);
            }

            var occupationData = (OccupationActionData)data;

            if (occupationData.FamilyGrowth)
            {
                if (((AgricolaGame)player.Game).CurrentRound < 5)
                {
                    return(false);
                }
            }
            else
            {
                if (!occupationData.Id.HasValue)
                {
                    return(false);
                }

                if (!ActionService.CanPlayOccupation(player, data.ActionId, occupationData.Id.Value))
                {
                    return(false);
                }
            }

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

            var fgData = (FamilyGrowthActionData)data;

            if (!Curator.CanGrowFamily(player, mode == FamilyGrowthActionMode.WithoutSpace))
            {
                return(false);
            }

            if (mode == FamilyGrowthActionMode.Improvement &&
                fgData.ImprovementData != null &&
                !ActionService.CanBuyImprovement(player, fgData.ImprovementData))
            {
                return(false);
            }

            if (player.FamilySize == 5)
            {
                return(false);
            }

            return(true);
        }
Esempio n. 4
0
        public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            var rsData = (SelectResourcesActionData)data;
            var list   = rsData.Resources.Select(x => new ResourceCache(x, 1)).ToArray();

            ActionService.AssignResources(player, list, ResultingNotices);
            return(this);
        }
Esempio n. 5
0
        public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            base.OnExecute(player, data);

            this.ResultingNotices.Add(new GameActionNotice(player.Name, Notification.NoticeVerb.Debug.ToString()));

            return(this);
        }
Esempio n. 6
0
 public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data)
 {
     if (!base.CanExecute(player, data))
     {
         return(false);
     }
     return(ActionService.CanBuildFences(player, Id, (BuildFencesActionData)data, out pastures, out costs));
 }
Esempio n. 7
0
        public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            base.OnExecute(player, data);

            ActionService.Cook(player, eventTriggers, ((CookActionData)data).Resources, ResultingNotices);
            ActionService.AssignAnimals(player, ((CookActionData)data).AnimalData, ResultingNotices);

            return(this);
        }
Esempio n. 8
0
        public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            if (!base.CanExecute(player, data))
            {
                return(false);
            }

            return(true);
        }
Esempio n. 9
0
 public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data)
 {
     ActionService.BuildRooms(
         player,
         data.ActionId,
         ImmutableArray.Create(((BuildRoomData)data).RoomData),
         ResultingNotices);
     return(this);
 }
Esempio n. 10
0
        public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            base.OnExecute(player, data);

            player.PayCosts(costs);

            ActionService.BuildFences(player, eventTriggers, ResultingNotices, (BuildFencesActionData)data, pastures.ToImmutableArray());
            return(this);
        }
Esempio n. 11
0
        /// <summary>
        /// Executes the bake action for the player
        /// </summary>
        /// <param name="player"></param>
        /// <param name="data"></param>
        public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            var bakeData = ImmutableArray.Create(((BakeActionData)data).BakeData);

            if (bakeData != null && bakeData.Length > 0)
            {
                ActionService.Bake(player, eventTriggers, ResultingNotices, bakeData);
            }
            return(this);
        }
Esempio n. 12
0
        public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            var occupationData = (OccupationActionData)data;

            if (occupationData.Id.HasValue)
            {
                ActionService.PlayOccupation(player, eventTriggers, ResultingNotices, occupationData);
            }

            return(this);
        }
Esempio n. 13
0
        public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            var fields = ((PlowAndSowActionData)data).Fields;

            if (Optional && (fields == null || fields.Length == 0))
            {
                return(true);
            }

            return(ActionService.CanPlowAndSow(player, Id, fields, new SowData[] { }));
        }
Esempio n. 14
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);
        }
Esempio n. 15
0
        public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            var choice = ((PlayerChoiceData)data).Choice;

            selected = Options.Where(x => x.Id == choice).FirstOrDefault();
            if (selected != null)
            {
                return(true);
            }

            return(false);
        }
Esempio n. 16
0
        public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            base.OnExecute(player, data);

            var sowData  = ImmutableArray.Create(((SowAndBakeActionData)data).Sow);
            var bakeData = ImmutableArray.Create(((SowAndBakeActionData)data).BakeData);

            ActionService.Sow(player, sowData, ResultingNotices);
            ActionService.Bake(player, eventTriggers, ResultingNotices, bakeData);

            return(this);
        }
Esempio n. 17
0
 public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data)
 {
     foreach (var cache in CacheResources.Values)
     {
         var animalData = new Dictionary <AnimalResource, int>();
         animalData[(AnimalResource)Enum.Parse(typeof(Resource), cache.Type.ToString())] = cache.Count;
         if (!ActionService.CanAssignAnimals(player, (AnimalCacheActionData)data, animalData))
         {
             return(false);
         }
     }
     return(base.CanExecute(player, data));
 }
Esempio n. 18
0
        public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            var animalData = new Dictionary <AnimalResource, int>();

            foreach (var animal in Animals)
            {
                animalData[(AnimalResource)animal.Type] = animal.Count;
            }

            if (!ActionService.CanAssignAnimals(player, (AnimalCacheActionData)data, animalData))
            {
                return(false);
            }

            return(true);
        }
Esempio n. 19
0
        public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            base.OnExecute(player, data);

            player.AddFamilyMember();
            AddUser(player);    // Add the baby to the action display

            ResultingNotices.Add(new GameActionNotice(player.Name, NoticeVerb.GrowFamily.ToString()));

            if (mode == FamilyGrowthActionMode.Improvement && ((FamilyGrowthActionData)data).ImprovementData != null)
            {
                ActionService.BuyImprovement(player, ((FamilyGrowthActionData)data).ImprovementData, ResultingNotices);
            }

            return(this);
        }
Esempio n. 20
0
        public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            var occupationData = (OccupationActionData)data;

            if (!occupationData.Id.HasValue)
            {
                return(true);
            }

            if (!ActionService.CanPlayOccupation(player, data.ActionId, occupationData.Id.Value))
            {
                return(false);
            }


            return(true);
        }
Esempio n. 21
0
        public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            var rsData = (SelectResourcesActionData)data;

            if (rsData.Resources.Length > NumRequired)
            {
                return(false);
            }

            var ins = Options.Select(x => x.Type).Intersect(rsData.Resources).Count();

            if (ins == 0)
            {
                return(false);
            }

            return(true);
        }
Esempio n. 22
0
        public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            base.OnExecute(player, data);

            var choiceData = (AnimalChoiceActionData)data;

            if (choiceData.Option == AnimalResource.Sheep)
            {
                player.AddResource(Resource.Food);
            }
            else if (choiceData.Option == AnimalResource.Cattle)
            {
                player.RemoveResource(Resource.Food);
            }

            ActionService.AssignAnimals(player, choiceData.AnimalData, ResultingNotices);
            return(this);
        }
Esempio n. 23
0
        public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            if (!base.CanExecute(player, data))
            {
                return(false);
            }


            var toSow  = ImmutableArray.Create(((SowAndBakeActionData)data).Sow);
            var toBake = ImmutableArray.Create(((SowAndBakeActionData)data).BakeData);


            if (!ActionService.CanSowAndBake(player, toSow, toBake))
            {
                return(false);
            }

            return(true);
        }
Esempio n. 24
0
        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);
        }
Esempio n. 25
0
        public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            base.OnExecute(player, data);

            var bake    = ((BuildStableAndBakeActionData)data).BakeData.ToImmutableArray();
            var stables = ((BuildStableAndBakeActionData)data).StableData.ToImmutableArray();

            if (bake != null && bake.Length > 0)
            {
                ActionService.Bake(player, eventTriggers, ResultingNotices, bake);
            }

            if (stables != null && stables.Length > 0)
            {
                ActionService.BuildStables(player, stables, Id, ResultingNotices);
            }

            return(this);
        }
Esempio n. 26
0
        public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            if (!base.CanExecute(player, data))
            {
                return(false);
            }

            var choiceData = (AnimalChoiceActionData)data;

            if (choiceData.Option == AnimalResource.Cattle && player.Food < 1)
            {
                return(false);
            }

            var animalData = new Dictionary <AnimalResource, int>();

            animalData[choiceData.Option] = 1;

            return(ActionService.CanAssignAnimals(player, choiceData.AnimalData, animalData));
        }
Esempio n. 27
0
        public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            base.OnExecute(player, data);

            var occupationData = (OccupationActionData)data;

            if (occupationData.FamilyGrowth)
            {
                player.AddFamilyMember();
                AddUser(player);    // Add the baby to the action display

                ResultingNotices.Add(new GameActionNotice(player.Name, NoticeVerb.GrowFamily.ToString()));
            }
            else
            {
                var triggers = new List <GameEventTrigger>();
                triggers.AddRange(eventTriggers);
                triggers.Add(new TakeOccupationActionTrigger());
                ActionService.PlayOccupation(player, ImmutableList.Create <GameEventTrigger>(triggers.ToArray()), ResultingNotices, occupationData);
            }
            return(this);
        }
Esempio n. 28
0
        public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data)
        {
            base.OnExecute(player, data);

            ActionService.Renovate(player, ResultingNotices);

            switch (mode)
            {
            case RenovationActionMode.Fences:
                player.PayCosts(additionalCosts);
                ActionService.BuildFences(player, eventTriggers, ResultingNotices, ((RenovationActionData)data).FenceData, pastures.ToImmutableArray());
                break;

            case RenovationActionMode.Improvement:
                var improvementData = ((RenovationActionData)data).ImprovementData;
                if (improvementData != null)
                {
                    ActionService.BuyImprovement(player, ((RenovationActionData)data).ImprovementData, ResultingNotices);
                }
                break;
            }

            return(this);
        }
Esempio n. 29
0
 public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data)
 {
     ResourceCache[] costs;
     return(ActionService.CanBuildFences(player, Id, (BuildFencesActionData)data, out pastures, out costs));
 }
Esempio n. 30
0
 public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data)
 {
     selected.Event.Execute(player, null, null, ResultingNotices);
     return(this);
 }