Exemple #1
0
 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);
 }
Exemple #3
0
 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;
         }
     }
 }
Exemple #4
0
    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]);
    }
Exemple #6
0
 public abstract void GetUsedResourceForCardBuilding(Game game, CardToBuild card, List <Resource> alreadySelectedResources, Action <Resource> onComplete);
Exemple #7
0
    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;
 }