public override void GetUsedResourceForCardBuilding(Game game, CardToBuild card, List <Resource> alreadySelectedResources, Action <Resource> onComplete) { // Drop this decision. int[] remainingResources = Game.GetRemainingResourcesAfterHousesBuilding(game, _model); foreach (Resource res in alreadySelectedResources) { remainingResources [(int)res]--; } foreach (var res in ResourcesForCardBuilding) { if (remainingResources [(int)res] > 0) { onComplete(res); return; } } remainingResources [(int)Resource.Forest] = _model.Forest; remainingResources [(int)Resource.Clay] = _model.Clay; remainingResources [(int)Resource.Stone] = _model.Stone; remainingResources [(int)Resource.Gold] = _model.Gold; foreach (Resource res in alreadySelectedResources) { remainingResources [(int)res]--; } foreach (var res in ResourcesForCardBuilding) { if (remainingResources [(int)res] > 0) { onComplete(res); return; } } onComplete(Resource.None); }
private void ApplyGoToCard(bool build, List <Resource> spentResources, CardToBuild card) { if (!build) { return; } SubtractResources(spentResources); AddCard(card, true); }
public override void GetUsedResourceForCardBuilding(Game game, CardToBuild card, List <Resource> alreadySelectedResources, Action <Resource> onComplete) { _turnView.SelectPlayer(game, _model); _turnView.ShowSelectResourceForCard(_model, alreadySelectedResources); while (true) { System.Threading.Thread.Sleep(SleepTime); if (_turnView.SelectedResourceForCardBuilding != Resource.None) { onComplete(_turnView.SelectedResourceForCardBuilding); return; } } }
public override void GetUsedResourceForCardBuilding(Game game, CardToBuild card, List <Resource> alreadySelectedResources, Action <Resource> onComplete) { List <Resource> options = new List <Resource> (); for (int i = 0; i < _model.Forest; i++) { options.Add(Resource.Forest); } for (int i = 0; i < _model.Clay; i++) { options.Add(Resource.Clay); } for (int i = 0; i < _model.Stone; i++) { options.Add(Resource.Stone); } for (int i = 0; i < _model.Gold; i++) { options.Add(Resource.Gold); } foreach (Resource currRes in alreadySelectedResources) { int ind = options.IndexOf(currRes); options.RemoveAt(ind); } Resource res = Resource.None; if (options.Contains(Resource.Forest)) { res = Resource.Forest; } else if (options.Contains(Resource.Clay)) { res = Resource.Clay; } else if (options.Contains(Resource.Stone)) { res = Resource.Stone; } else if (options.Contains(Resource.Gold)) { res = Resource.Gold; } onComplete(res); }
public override void GetUsedResourceForCardBuilding(Game game, CardToBuild card, List <Resource> alreadySelectedResources, Action <Resource> onComplete) { List <Resource> options = new List <Resource> (); for (int i = 0; i < _model.Forest; i++) { options.Add(Resource.Forest); } for (int i = 0; i < _model.Clay; i++) { options.Add(Resource.Clay); } for (int i = 0; i < _model.Stone; i++) { options.Add(Resource.Stone); } for (int i = 0; i < _model.Gold; i++) { options.Add(Resource.Gold); } int forestCount = 0; foreach (Resource res in alreadySelectedResources) { int ind = options.IndexOf(res); options.RemoveAt(ind); if (res == Resource.Forest) { forestCount++; } } int index = Game.RandomRange(0, options.Count); if (options [index] == Resource.Forest && _model.Forest < forestCount + 1) { Debug.Log("WTF"); } onComplete(options [index]); }
public abstract void GetUsedResourceForCardBuilding(Game game, CardToBuild card, List <Resource> alreadySelectedResources, Action <Resource> onComplete);
private static int GetResourceExpectedCount(CardToBuild card, Resource res) { int count = 0; switch (card.TopFeature) { case TopCardFeature.ResourceAny: if (res == Resource.Gold) { count += 2; } break; case TopCardFeature.ResourceConstClay: if (res == Resource.Clay) { count += card.TopFeatureParam; } break; case TopCardFeature.ResourceConstFood: if (res == Resource.Food) { count += card.TopFeatureParam; } break; case TopCardFeature.ResourceConstGold: if (res == Resource.Gold) { count += card.TopFeatureParam; } break; case TopCardFeature.ResourceConstStone: if (res == Resource.Stone) { count += card.TopFeatureParam; } break; case TopCardFeature.ResourceRandomForest: if (res == Resource.Forest) { count += (int)(card.TopFeatureParam * 3.5f / Game.GetResourceCost(res)); } break; case TopCardFeature.ResourceRandomGold: if (res == Resource.Gold) { count += (int)(card.TopFeatureParam * 3.5f / Game.GetResourceCost(res)); } break; case TopCardFeature.ResourceRandomStone: if (res == Resource.Forest) { count += (int)(card.TopFeatureParam * 3.5f / Game.GetResourceCost(res)); } break; } return(count); }
void AddCard(CardToBuild card, bool applyTop) { BuiltCard builtCard = new BuiltCard(card); _cards.Add(builtCard); switch (card.BottomFeature) { case BottomCardFeature.InstrumentsMultiplier: for (int i = 0; i < card.BottomFeatureParam; i++) { AddInstrumentsMultiplier(); } break; case BottomCardFeature.HouseMultiplier: for (int i = 0; i < card.BottomFeatureParam; i++) { AddHousesMultiplier(); } break; case BottomCardFeature.HumanMultiplier: for (int i = 0; i < card.BottomFeatureParam; i++) { AddHumansMultiplier(); } break; case BottomCardFeature.FieldMultiplier: for (int i = 0; i < card.BottomFeatureParam; i++) { AddFieldsMultiplier(); } break; case BottomCardFeature.Science: AddScience((Science)card.BottomFeatureParam); break; } if (applyTop) { if (card.TopUsed) { switch (card.TopFeature) { case TopCardFeature.Score: if (GameTrainingController.UsedScoreSources == GameTrainingController.ScoreSources.Any || GameTrainingController.UsedScoreSources == GameTrainingController.ScoreSources.TopCardFeature) { Score += card.TopFeatureParam; } break; case TopCardFeature.ResourceConstFood: AddResource(Resource.Food, card.TopFeatureParam); break; case TopCardFeature.ResourceConstClay: AddResource(Resource.Clay, card.TopFeatureParam); break; case TopCardFeature.ResourceConstStone: AddResource(Resource.Stone, card.TopFeatureParam); break; case TopCardFeature.ResourceConstGold: AddResource(Resource.Gold, card.TopFeatureParam); break; case TopCardFeature.InstrumentsForever: AddInstrument(); break; case TopCardFeature.Field: AddField(); break; //case TopCardFeature.OneCardMore: break; //case TopCardFeature.InstrumentsOnce: break; //case TopCardFeature.ResourceAny: break; //case TopCardFeature.RandomForEveryone: break; //case TopCardFeature.ResourceRandomForest: break; //case TopCardFeature.ResourceRandomStone: break; //case TopCardFeature.ResourceRandomGold: break; } } if (card.TopFeature == TopCardFeature.ResourceRandomForest) { SpentOnForest = card.TopFeatureParam; } if (card.TopFeature == TopCardFeature.ResourceRandomStone) { SpentOnStone = card.TopFeatureParam; } if (card.TopFeature == TopCardFeature.ResourceRandomGold) { SpentOnGold = card.TopFeatureParam; } } else { if (!card.TopUsed) { card.UseTop(); } } }
public void ApplyCardTopOneCardMore(CardToBuild cardFromStash) { AddCard(cardFromStash, false); }
public void ApplyGoToCard(bool build, int cardInd, List <Resource> spentResources, CardToBuild card) { if (GetSpentOnCard(cardInd) == 0) { return; } SetSpentOnCard(cardInd, 0); ApplyGoToCard(build, spentResources, card); }
public BuiltCard(CardToBuild card) { this.Card = card; }