/// <summary> /// Executes the requested bake operation. /// </summary> /// <param name="player"></param> /// <param name="data"></param> public static void Bake(AgricolaPlayer player, ImmutableList <GameEventTrigger> eventTriggers, List <GameActionNotice> resultingNotices, ImmutableArray <ResourceConversionData> data) { if (data != null && data.Length > 0) { var bakeInput = new ResourceCache(Resource.Grain, 0); var bakeOutput = new ResourceCache(Resource.Food, 0); foreach (var bake in data) { var card = ((AgricolaGame)player.Game).GetCard(bake.Id); var resources = Curator.GetBakeOutput(player, bake.Id, bake.Count); if (resources != null) { player.AddResource(card.BakeProperties.InType, -bake.Count); player.AddResource(resources); bakeInput = bakeInput.updateCount(bake.Count); bakeOutput = bakeOutput.updateCount(resources.Count); } } resultingNotices.Add(new GameActionNotice(player.Name, NoticeVerb.Bake.ToString(), new ConversionPredicate(bakeInput, bakeOutput))); var trigger = new BakeTrigger(bakeInput.Count); ProcessEventTrigger(player, trigger, resultingNotices); CheckTriggers(player, eventTriggers, resultingNotices); } }