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, 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); }
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); }
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); }
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); }
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)); }
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); }
public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data) { if (!base.CanExecute(player, data)) { return(false); } return(true); }
public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data) { ActionService.BuildRooms( player, data.ActionId, ImmutableArray.Create(((BuildRoomData)data).RoomData), ResultingNotices); return(this); }
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); }
/// <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); }
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); }
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[] { })); }
public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data) { if (!ActionService.CanBuildRooms( player, data.ActionId, ImmutableArray.Create(((BuildRoomData)data).RoomData))) { return(false); } return(true); }
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); }
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); }
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)); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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)); }
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); }
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); }
public override bool CanExecute(AgricolaPlayer player, Data.GameActionData data) { ResourceCache[] costs; return(ActionService.CanBuildFences(player, Id, (BuildFencesActionData)data, out pastures, out costs)); }
public override GameAction OnExecute(AgricolaPlayer player, Data.GameActionData data) { selected.Event.Execute(player, null, null, ResultingNotices); return(this); }