protected override void OnExecute(AgricolaPlayer player, GameEventTrigger trigger, Card card, List <GameActionNotice> resultingNotices) { foreach (var conversion in ConditionalResources) { conversion.OnExecute(player, resultingNotices); } }
protected override void OnExecute(AgricolaPlayer player, GameEventTrigger trigger, Card card, List <GameActionNotice> resultingNotices) { var dif = 4 - ((TravelingPlayersActionTrigger)trigger).FoodTaken; if (dif > 0) { var resource = new ResourceCache(Resource.Food, dif); ActionService.AssignResource(player, resource, resultingNotices); } }
private void Start() { GameEventTrigger gameEventTrigger = base.gameObject.AddComponent <GameEventTrigger>(); gameEventTrigger.type = 2; if (this.run) { gameEventTrigger.onTriggerHanlde(); } UnityEngine.Object.Destroy(this); }
/// <summary> /// Compiles a list of events fired by a trigger /// </summary> /// <param name="player"></param> /// <param name="trigger"></param> /// <param name="resultingNotices"></param> public static void ProcessEventTrigger(AgricolaPlayer player, GameEventTrigger trigger, List <GameActionNotice> resultingNotices) { foreach (var p in ((AgricolaGame)player.Game).AgricolaPlayers) { var events = p.GetCardEventData(player, trigger); if (events.Count > 0) { ActionService.ExecuteEvents(p, events, resultingNotices); } } }
protected override void OnExecute(AgricolaPlayer player, GameEventTrigger trigger, Card card, List <GameActionNotice> resultingNotices) { ImmutableDictionary <string, Object> metadata; Object fieldData; int cardCount = -1; if (player.TryGetCardMetadataField(card, "tutor", out metadata, out fieldData)) { cardCount = (int)fieldData; } player.SetCardMetadataField(card, "tutor", cardCount + 1); }
private void Start() { GameEventTrigger gameEventTrigger = base.gameObject.AddComponent <GameEventTrigger>(); gameEventTrigger.type = 1; gameEventTrigger.paramInts = new List <int> { this.monId, this.killingNum }; UnityEngine.Object.Destroy(this); }
private void Start() { GameEventTrigger gameEventTrigger = base.gameObject.AddComponent <GameEventTrigger>(); gameEventTrigger.type = 3; gameEventTrigger.paramFloat = new List <float> { this.sec }; if (this.run) { gameEventTrigger.onTriggerHanlde(); } UnityEngine.Object.Destroy(this); }
protected override void OnExecute(AgricolaPlayer player, GameEventTrigger trigger, Card card, List <GameActionNotice> resultingNotices) { var totalConverted = 0; foreach (var resource in ((ResourceConversionTrigger)trigger).TriggeringResourcesConverted) { totalConverted += resource.AmountConverted; } var activations = totalConverted / perNumConverted; var newResources = new Dictionary <Resource, int>(); foreach (var resourceData in Resources) { if (((AgricolaGame)player.Game).CurrentRound >= resourceData.FromRound) { newResources[resourceData.Resource.Type] = resourceData.Resource.Count * activations; } } var nonAnimals = new List <ResourceCache>(); var animals = new List <ResourceCache>(); foreach (var resource in newResources) { if (resource.Key.IsAnimal()) { animals.Add(new ResourceCache(resource.Key, resource.Value)); } else { nonAnimals.Add(new ResourceCache(resource.Key, resource.Value)); } } if (nonAnimals.Count > 0) { ActionService.AssignResources(player, nonAnimals.ToArray(), resultingNotices); } if (animals.Count > 0) { ((AgricolaGame)player.Game).AddInterrupt(new AssignAnimalsAction(player, animals.ToArray(), resultingNotices)); } }
protected override void OnExecute(AgricolaPlayer player, GameEventTrigger trigger, Card card, List <GameActionNotice> resultingNotices) { var nonAnimals = new List <ResourceCache>(); var animals = new List <ResourceCache>(); foreach (var resourceData in Resources) { int executionCount = 0; if (card != null) { Object fieldData; ImmutableDictionary <string, object> metadata; if (player.TryGetCardMetadataField(card, GameEvent.MetadataKeyExecutionCount, out metadata, out fieldData)) { executionCount = (int)fieldData; } } if (((AgricolaGame)player.Game).CurrentRound >= resourceData.FromRound && executionCount >= resourceData.FromExecution && executionCount < resourceData.UntilExecution) { if (resourceData.Resource.Type.IsAnimal()) { animals.Add(resourceData.Resource); } else { nonAnimals.Add(resourceData.Resource); } } } if (nonAnimals.Count > 0) { ActionService.AssignResources(player, nonAnimals.ToArray(), resultingNotices); } if (animals.Count > 0) { ((AgricolaGame)player.Game).AddInterrupt(new AssignAnimalsAction(player, animals.ToArray(), resultingNotices)); } }
/// <summary> /// /// </summary> /// <param name="resolvingPlayer"></param> /// <param name="triggeringPlayer"></param> /// <param name="trigger"></param> /// <returns></returns> public List <EventData> GetCardEventData(AgricolaPlayer triggeringPlayer, GameEventTrigger trigger) { var resolvingPlayer = (AgricolaPlayer)this; var events = new List <EventData>(); foreach (var card in resolvingPlayer.OwnedCards) { if (card.Events == null) { continue; } var cardEvents = card.Events.Where(x => x.Triggers.Any(s => s.Triggered(resolvingPlayer, triggeringPlayer, trigger))); foreach (var cardEvent in cardEvents) { EventData data = new EventData(trigger, cardEvent, card); events.Add(data); } } return(events); }
/// <summary> /// Executes the event. /// </summary> /// <param name="player">The player to execute the event for.</param> /// <param name="resultingNotices">Outgoing informational notices caused by this event.</param> public void Execute(AgricolaPlayer player, GameEventTrigger trigger, Card card, List <GameActionNotice> resultingNotices) { if (card != null) { int executionCount = 0; ImmutableDictionary <string, Object> metadata; if (player.TryGetCardMetadata(card, out metadata)) { if (metadata.ContainsKey(MetadataKeyExecutionCount)) { executionCount = (int)metadata[MetadataKeyExecutionCount]; } } else { metadata = ImmutableDictionary <string, Object> .Empty; } executionCount++; player.SetCardMetadata(card, metadata.SetItem(MetadataKeyExecutionCount, executionCount)); } OnExecute(player, trigger, card, resultingNotices); }
protected override void OnExecute(AgricolaPlayer player, GameEventTrigger trigger, Card card, List <GameActionNotice> resultingNotices) { return; }
public EventData(GameEventTrigger trigger, TriggeredEvent triggeredEvent, Card card) { Trigger = trigger; TriggeredEvent = triggeredEvent; Card = card; }
protected override void OnExecute(AgricolaPlayer player, GameEventTrigger trigger, Card card, List <GameActionNotice> resultingNotices) { ((AgricolaGame)player.Game).AddInterrupt(new FencePastureAction(player, resultingNotices)); }
/// <summary> /// Event execution code goes here. /// </summary> /// <param name="player">The player to execute the event for.</param> /// <param name="resultingNotices">Outgoing informational notices caused by this event.</param> protected abstract void OnExecute(AgricolaPlayer player, GameEventTrigger trigger, Card card, List <GameActionNotice> resultingNotices);
protected override void OnExecute(AgricolaPlayer player, GameEventTrigger trigger, Card card, List <GameActionNotice> resultingNotices) { ((AgricolaGame)player.Game).AddInterrupt(new SelectResourcesAction(player, ResourceOptions, 1, resultingNotices)); }
//functions public void setOwner(GameEventTrigger gameET) { OwnerTrigger = gameET; }
protected override void OnExecute(AgricolaPlayer player, GameEventTrigger trigger, Card card, List <GameActionNotice> resultingNotices) { ((AgricolaGame)player.Game).StoreFutureResources(player, Resources); }
protected override void OnExecute(AgricolaPlayer player, GameEventTrigger trigger, Card card, List <GameActionNotice> resultingNotices) { var resource = new ResourceCache(Resources[0].Type, Resources[0].Count * ((BakeTrigger)trigger).GrainBaked); ActionService.AssignResource(player, resource, resultingNotices); }
public GameAction(AgricolaGame game, int id, List <GameActionNotice> resultingNotices, GameEventTrigger eventTrigger) { Game = game; Id = id; ResultingNotices = resultingNotices; this.eventTriggers = ImmutableList <GameEventTrigger> .Empty.Add(eventTrigger); }
public InterruptAction(AgricolaPlayer player, int id, List <GameActionNotice> resultingNotices, GameEventTrigger eventTrigger) : base((AgricolaGame)player.Game, id, resultingNotices, eventTrigger) { Player = player; }