public void SetNextPurchaseCost(GameObject tower)
    {
        if (tower != null)
        {
            if (tower.GetComponent <TowerController>().GetTowerType() == "tower_fire")
            {
                nextUpgradeCost.text = CostTemplate.GetCost("tower_fire_2").ToString();
            }
            else if (tower.GetComponent <TowerController>().GetTowerType() == "tower_fire_2")
            {
                nextUpgradeCost.text = CostTemplate.GetCost("tower_fire_3").ToString();
            }
            else if (tower.GetComponent <TowerController>().GetTowerType() == "tower_ice")
            {
                nextUpgradeCost.text = CostTemplate.GetCost("tower_ice_2").ToString();
            }
            else if (tower.GetComponent <TowerController>().GetTowerType() == "tower_ice_2")
            {
                nextUpgradeCost.text = CostTemplate.GetCost("tower_ice_3").ToString();
            }

            else if (tower.GetComponent <TowerController>().GetTowerType() == "tower_nature")
            {
                nextUpgradeCost.text = CostTemplate.GetCost("tower_nature_2").ToString();
            }
            else if (tower.GetComponent <TowerController>().GetTowerType() == "tower_nature_2")
            {
                nextUpgradeCost.text = CostTemplate.GetCost("tower_nature_3").ToString();
            }
            else
            {
                nextUpgradeCost.text = "";
            }
        }
    }
Beispiel #2
0
            public async Task UpdateCostForm()
            {
                var result = await CreateCostEntity(User);

                var updateModel = new UpdateCostFormModel
                {
                    FormDefinitionId = CostTemplate.GetLatestVersion().Forms.First().Id,
                    CostFormDetails  = new CostFormDetailsModel
                    {
                        Data = new Dictionary <string, dynamic>
                        {
                            ["testFieldOne"] = "test",
                            ["section"]      = new { sectionOne = "test" },
                            ["name"]         = "name",
                        }
                    }
                };

                var updatedResult = await Browser.Patch($"/v1/costs/{result.Id}", w =>
                {
                    w.User(User);
                    w.JsonBody(updateModel);
                });

                var updateResponse = Deserialize <OperationResponse>(updatedResult, HttpStatusCode.OK);

                updateResponse.Success.Should().BeTrue();
            }
        public ActionResult GetCostTemplate()
        {
            CostTemplate costTemplate = new CostTemplate();

            costTemplate.Imprints        = _context.Imprint.ToList();
            costTemplate.RoyaltyTemplats = _context.RoyaltyTemplates.ToList();
            costTemplate.SalesTemplates  = _context.SalesTemplates.ToList();
            return(Ok(costTemplate));
        }
    public void PlaceTower()
    {
        //Can a base tower be purchased
        //if true it buys it right away.
        //Checks if already purchased

        if (!towerSpawner.GetSpawnAble())
        {
            if (GameController.Purchase(CostTemplate.GetCost("tower_base")))
            {
                towerSpawner.SetSpawnable();
            }
            else
            {
                //GUI Status Text
                guiStatusText.text = "You don't have enough gold to purchase that.";
            }
        }
        else
        {
            guiStatusText.text = "A tower is already purchased and ready to be placed.";
        }
    }
    //Tower upgrades if an elemental tower already exists
    public void UpgradeFromElement(int type)
    {
        if (towerSelected != null)
        {
            Vector3 pos        = towerSelected.transform.position;
            NodeV2  parentNode = towerSelected.GetComponentInParent <NodeV2>();

            if (type == 0)
            {
                //
                //Fire Tower Upgrades
                //
                if (towerSelected.GetComponent <TowerController>().GetTowerType() == "tower_fire")
                {
                    if (GameController.Purchase(CostTemplate.GetCost("tower_fire_2")))
                    {
                        parentNode.ReplaceTower();
                        GameObject newTower = Instantiate(towers["tower_fire_2"], pos, Quaternion.identity) as GameObject;
                        parentNode.SetTowerObject(newTower);
                        towerSelected             = newTower;
                        newTower.transform.parent = parentNode.transform;
                        towerSelected.GetComponent <Outline>().enabled = true;
                        nextUpgradeCost.text     = CostTemplate.GetCost("tower_fire_3").ToString();
                        selectedTowerStatus.text = towerSelected.GetComponent <TowerController>().formattedName;
                        SpawnMenu(towerSelected);
                    }
                    else
                    {
                        guiStatusText.text = "Not enough money to upgrade to Fire Tower 2";
                    }
                }
                else if (towerSelected.GetComponent <TowerController>().GetTowerType() == "tower_fire_2")
                {
                    if (GameController.Purchase(CostTemplate.GetCost("tower_fire_3")))
                    {
                        parentNode.ReplaceTower();
                        GameObject newTower = Instantiate(towers["tower_fire_3"], pos, Quaternion.identity) as GameObject;
                        parentNode.SetTowerObject(newTower);
                        towerSelected             = newTower;
                        newTower.transform.parent = parentNode.transform;

                        nextUpgradeCost.text = "";
                        towerSelected.GetComponent <Outline>().enabled = true;
                        selectedTowerStatus.text = towerSelected.GetComponent <TowerController>().formattedName;

                        SpawnMenu(towerSelected);
                    }
                    else
                    {
                        guiStatusText.text = "Not enough money to upgrade to Fire Tower 3";
                    }
                }
                else if (towerSelected.GetComponent <TowerController>().GetTowerType() == "tower_fire_3")
                {
                    guiStatusText.text = "Cannot upgrade Fire Tower any further.";
                }
                //
                //END FIRE UPGRADES
                //

                //
                //ICE TOWER UPGRADE
                //
                else if (towerSelected.GetComponent <TowerController>().GetTowerType() == "tower_ice")
                {
                    if (GameController.Purchase(CostTemplate.GetCost("tower_ice_2")))
                    {
                        parentNode.ReplaceTower();
                        GameObject newTower = Instantiate(towers["tower_ice_2"], pos, Quaternion.identity) as GameObject;
                        parentNode.SetTowerObject(newTower);
                        towerSelected             = newTower;
                        newTower.transform.parent = parentNode.transform;
                        //
                        //Component Testing Xav
                        //
                        towerSelected.GetComponent <Outline>().enabled = true;
                        nextUpgradeCost.text     = CostTemplate.GetCost("tower_ice_3").ToString();
                        selectedTowerStatus.text = towerSelected.GetComponent <TowerController>().formattedName;
                        SpawnMenu(towerSelected);
                        //
                        ///
                        //
                    }
                    else
                    {
                        guiStatusText.text = "Not enough money to upgrade to Ice Tower 2";
                    }
                }
                else if (towerSelected.GetComponent <TowerController>().GetTowerType() == "tower_ice_2")
                {
                    if (GameController.Purchase(CostTemplate.GetCost("tower_ice_3")))
                    {
                        parentNode.ReplaceTower();
                        GameObject newTower = Instantiate(towers["tower_ice_3"], pos, Quaternion.identity) as GameObject;
                        parentNode.SetTowerObject(newTower);
                        towerSelected             = newTower;
                        newTower.transform.parent = parentNode.transform;
                        //
                        //Component Testing Xav
                        //
                        towerSelected.GetComponent <Outline>().enabled = true;
                        nextUpgradeCost.text     = "";
                        selectedTowerStatus.text = towerSelected.GetComponent <TowerController>().formattedName;
                        SpawnMenu(towerSelected);
                        //
                        ///
                        //
                    }
                    else
                    {
                        guiStatusText.text = "Not enough money to upgrade to Ice Tower 3";
                    }
                }
                else if (towerSelected.GetComponent <TowerController>().GetTowerType() == "tower_ice_3")
                {
                    guiStatusText.text = "Cannot upgrade Ice Tower any further.";
                }
                //
                //END ICE UPGRADES
                //

                //
                //NATURE TOWER UPGRADES
                //
                else if (towerSelected.GetComponent <TowerController>().GetTowerType() == "tower_nature")
                {
                    if (GameController.Purchase(CostTemplate.GetCost("tower_nature_2")))
                    {
                        parentNode.ReplaceTower();
                        GameObject newTower = Instantiate(towers["tower_nature_2"], pos, Quaternion.identity) as GameObject;
                        parentNode.SetTowerObject(newTower);
                        towerSelected             = newTower;
                        newTower.transform.parent = parentNode.transform;
                        //
                        //Component Testing Xav
                        //
                        towerSelected.GetComponent <Outline>().enabled = true;
                        nextUpgradeCost.text     = CostTemplate.GetCost("tower_nature_3").ToString();
                        selectedTowerStatus.text = towerSelected.GetComponent <TowerController>().formattedName;
                        SpawnMenu(towerSelected);
                        //
                        ///
                        //
                    }
                    else
                    {
                        guiStatusText.text = "Not enough money to upgrade to Nature Tower 2";
                    }
                }
                else if (towerSelected.GetComponent <TowerController>().GetTowerType() == "tower_nature_2")
                {
                    if (GameController.Purchase(CostTemplate.GetCost("tower_nature_3")))
                    {
                        parentNode.ReplaceTower();
                        GameObject newTower = Instantiate(towers["tower_nature_3"], pos, Quaternion.identity) as GameObject;
                        parentNode.SetTowerObject(newTower);
                        towerSelected             = newTower;
                        newTower.transform.parent = parentNode.transform;
                        //
                        //Component Testing Xav
                        //
                        towerSelected.GetComponent <Outline>().enabled = true;
                        nextUpgradeCost.text     = "";
                        selectedTowerStatus.text = towerSelected.GetComponent <TowerController>().formattedName;
                        SpawnMenu(towerSelected);
                        //
                        ///
                        //
                    }
                    else
                    {
                        guiStatusText.text = "Not enough money to upgrade to Nature Tower 3";
                    }
                }
                else if (towerSelected.GetComponent <TowerController>().GetTowerType() == "tower_nature_3")
                {
                    guiStatusText.text = "Cannot upgrade Nature Tower any further.";
                }
                //
                //END NATURE UPGRADES
                //
            }
            else if (type == 1)
            {
                //downgrade
            }
            else if (type == 2)
            {
                //sell tower
                SellTower(towerSelected, parentNode);

                //
                //Component Testing
                //
                towerSelected = null;
                DeSpawnMenu();
                //
                //End Testing
                //
            }
        }
    }
    public void UpgradeFromBase(int type)
    {
        if (towerSelected != null)
        {
            Vector3 pos        = towerSelected.transform.position;
            NodeV2  parentNode = towerSelected.GetComponentInParent <NodeV2>();

            switch (type)
            {
            //Purchase Fire Towers
            case 0:
                if (GameController.Purchase(CostTemplate.GetCost("tower_fire")))
                {
                    parentNode.ReplaceTower();
                    GameObject newTower = Instantiate(towers["tower_fire"], pos, Quaternion.identity) as GameObject;
                    parentNode.SetTowerObject(newTower);
                    towerSelected             = newTower;
                    newTower.transform.parent = parentNode.transform;

                    SetNextPurchaseCost(towerSelected);


                    DeSpawnMenu();
                    towerSelected.GetComponent <Outline>().enabled = true;
                    selectedTowerStatus.text = towerSelected.GetComponent <TowerController>().formattedName;
                    SpawnMenu(towerSelected);
                }
                else
                {
                    guiStatusText.text = "Not enough money to upgrade to Fire";
                }
                break;

            //ice
            case 1:
                if (GameController.Purchase(CostTemplate.GetCost("tower_ice")))
                {
                    parentNode.ReplaceTower();
                    GameObject newTower = Instantiate(towers["tower_ice"], pos, Quaternion.identity) as GameObject;
                    towerSelected = newTower;
                    parentNode.SetTowerObject(newTower);
                    newTower.transform.parent = parentNode.transform;

                    SetNextPurchaseCost(towerSelected);

                    DeSpawnMenu();
                    towerSelected.GetComponent <Outline>().enabled = true;
                    selectedTowerStatus.text = towerSelected.GetComponent <TowerController>().formattedName;
                    SpawnMenu(towerSelected);
                }
                else
                {
                    guiStatusText.text = "Not enough money to upgrade to Ice";
                }
                break;

            //nature
            case 2:
                if (GameController.Purchase(CostTemplate.GetCost("tower_nature")))
                {
                    parentNode.ReplaceTower();
                    GameObject newTower = Instantiate(towers["tower_nature"], pos, Quaternion.identity) as GameObject;
                    towerSelected = newTower;
                    parentNode.SetTowerObject(newTower);
                    newTower.transform.parent = parentNode.transform;

                    SetNextPurchaseCost(towerSelected);


                    DeSpawnMenu();
                    towerSelected.GetComponent <Outline>().enabled = true;
                    selectedTowerStatus.text = towerSelected.GetComponent <TowerController>().formattedName;
                    SpawnMenu(towerSelected);
                }
                else
                {
                    guiStatusText.text = "Not enough money to upgrade to Nature";
                }
                break;

            case 3:
                SellTower(towerSelected, parentNode);
                DeSpawnMenu();
                break;
            }
        }
    }
    void ChangeTowerColor(Dropdown change, GameObject selected_tower)
    {
        if (change.value == 1)
        {
            //Before changing to fire check if there is enough money in wallet
            //Call tower right click menu script
            //Hard coding values now
            if (GameController.Purchase(CostTemplate.GetCost("tower_fire")))
            {
                ChangeTower(selected_tower, "fire");
            }
            else
            {
                guiStatusText.text = "Not enough money to upgrade to Fire";
            }
        }
        else if (change.value == 2)
        {
            if (GameController.Purchase(CostTemplate.GetCost("tower_ice")))
            {
                ChangeTower(selected_tower, "ice");
            }
            else
            {
                guiStatusText.text = "Not enough money to upgrade to Ice";
            }
        }
        else if (change.value == 3)
        {
            if (GameController.Purchase(CostTemplate.GetCost("tower_nature")))
            {
                ChangeTower(selected_tower, "nature");
            }
            else
            {
                guiStatusText.text = "Not enough money to upgrade to Nature";
            }
        }
        else if (change.value == 4)
        {
            //Sell Tower
            SellTower(selected_tower);
            guiStatusText.text = "Tower sold.";
        }
        else if (change.value == 5)
        {
            //Check if tower is a tower_base;

            if (selected_tower.GetComponent <TowerController>().CompareTag("Tower"))
            {
                guiStatusText.text = "Cannot downgrade base tower.";
            }
            else
            {
                GameController.SellTowerGetMoney(100);
                ChangeTower(selected_tower, "Base");
                guiStatusText.text = "Tower downgraded.";
            }
        }
        else
        {
            //Default action maybe?
        }
    }
        public void Setup()
        {
            _target = new CostLineItemUpdater(_efContextMock.Object,
                                              _revisionServiceMock.Object,
                                              _templateServiceMock.Object,
                                              new CostSectionFinder(),
                                              _costExchangeRateServiceMock.Object);
            var cost = new Cost();
            var costStageRevision = new CostStageRevision()
            {
                CostLineItems = new List <CostLineItem> {
                    new CostLineItem {
                    }
                }
            };
            var costTemplateVersion = new CostTemplateVersion();
            var costTemplate        = new CostTemplate();
            var fieldDefinitions    = new CustomFormData();
            var usd  = new Currency();
            var euro = new Currency();
            var gbp  = new Currency();

            cost.Id = _costId;
            costStageRevision.Id = _costStageRevisionId;

            cost.LatestCostStageRevision   = costStageRevision;
            cost.LatestCostStageRevisionId = _costStageRevisionId;
            cost.CostTemplateVersion       = costTemplateVersion;
            cost.CostTemplateVersionId     = _costTemplateVersionId;

            costTemplateVersion.CostTemplate = costTemplate;
            costTemplateVersion.Id           = _costTemplateVersionId;

            costTemplate.FieldDefinitions = fieldDefinitions;

            euro.Code = "EUR";
            usd.Code  = "USD";
            gbp.Code  = "GBP";

            euro.Id = Guid.NewGuid();
            usd.Id  = _usdCurrencyId;
            gbp.Id  = _gbpCurrencyId;

            var costs = new List <Cost> {
                cost
            };

            _costStageRevisions = new List <CostStageRevision> {
                costStageRevision
            };
            var currencies = new List <Currency> {
                euro, usd, gbp
            };

            _efContextMock.MockAsyncQueryable(costs.AsQueryable(), c => c.Cost);
            _efContextMock.MockAsyncQueryable(_costStageRevisions.AsQueryable(), c => c.CostStageRevision);
            _efContextMock.MockAsyncQueryable(currencies.AsQueryable(), c => c.Currency);

            var stageDetails = new PgStageDetailsForm
            {
                ContentType = new core.Builders.DictionaryValue
                {
                    Id    = Guid.NewGuid(),
                    Key   = "Video",
                    Value = "Video"
                },
                CostType       = dataAccess.Entity.CostType.Production.ToString(),
                ProductionType = new core.Builders.DictionaryValue
                {
                    Id    = Guid.NewGuid(),
                    Key   = "Full Production",
                    Value = "Full Production"
                },
                Title = "Cost Title"
            };

            _revisionServiceMock.Setup(csr => csr.GetStageDetails <PgStageDetailsForm>(_costStageRevisionId)).ReturnsAsync(stageDetails);

            var costTemplateVersionModel   = new CostTemplateVersionModel();
            var productionDetailCollection = new List <ProductionDetailsTemplateModel>();
            var productionDetails          = new ProductionDetailsTemplateModel();

            _form = new ProductionDetailsFormDefinitionModel
            {
                Name           = FormName,
                Label          = "Full production",
                ProductionType = Constants.ProductionType.FullProduction
            };
            var section = new CostLineItemSectionTemplateModel();
            var item    = new CostLineItemSectionTemplateItemModel();

            section.Name = SectionName;
            item.Name    = ItemName;

            section.Items = new List <CostLineItemSectionTemplateItemModel> {
                item
            };
            _form.CostLineItemSections = new List <CostLineItemSectionTemplateModel> {
                section
            };
            productionDetails.Forms = new List <ProductionDetailsFormDefinitionModel> {
                _form
            };
            productionDetails.Type = "Video";

            productionDetailCollection.Add(productionDetails);
            costTemplateVersionModel.ProductionDetails = productionDetailCollection;
            _templateServiceMock.Setup(ts => ts.GetCostTemplateVersionModel(It.IsAny <Guid>())).ReturnsAsync(costTemplateVersionModel);

            _userIdentity = new UserIdentity
            {
                Id        = _userId,
                IpAddress = "127.0.0.1"
            };

            var expectedExchangeRates = new List <ExchangeRate>()
            {
                new ExchangeRate {
                    FromCurrency = _usdCurrencyId,
                    Rate         = 1
                },
            };

            _costExchangeRateServiceMock.Setup(cer => cer.GetExchangeRatesByDefaultCurrency(It.IsAny <Guid>()))
            .ReturnsAsync(expectedExchangeRates);
        }
Beispiel #9
0
        public void Setup()
        {
            _target = new CostCurrencyUpdater(_efContextMock.Object, _revisionServiceMock.Object);

            var costTemplateVersion = new CostTemplateVersion();
            var costTemplate        = new CostTemplate();
            var fieldDefinitions    = new CustomFormData();
            var usd  = new Currency();
            var euro = new Currency();

            _cost.Id = _costId;
            _costStageRevision.Id             = _costStageRevisionId;
            _costStageRevision.StageDetailsId = Guid.NewGuid();


            _cost.LatestCostStageRevision   = _costStageRevision;
            _cost.LatestCostStageRevisionId = _costStageRevisionId;
            _cost.CostTemplateVersion       = costTemplateVersion;
            _cost.CostTemplateVersionId     = _costTemplateVersionId;

            costTemplateVersion.CostTemplate = costTemplate;
            costTemplateVersion.Id           = _costTemplateVersionId;

            costTemplate.FieldDefinitions = fieldDefinitions;

            euro.Code = "EUR";
            usd.Code  = "USD";

            euro.Id = Guid.NewGuid();
            usd.Id  = Guid.NewGuid();

            var customFormData =
                "{\"costNumber\":\"AC1489594599188\",\"isAIPE\":false,\"projectId\":\"58c968410c885409aca51028\",\"title\":\"Full Prod\",\"description\":\"58c968410c885409aca51028\",\"contentType\":{\"id\":\"17cc6250-099a-11e7-84b7-1bf5c65c8e1a\",\"name\":\"Video\"},\"productionType\":{\"id\":\"17bec46a-099a-11e7-84b2-137a2ddbf0ee\",\"name\":\"Full Production\"},\"agencyProducer\":[\"Agency Producer 1\"],\"initialBudget\":1231231,\"budgetRegionId\":\"0f701f02-099a-11e7-945b-4b7e51cf96b3\",\"budgetRegion\":\"GREATER CHINA AREA\",\"organisation\":\"Other\",\"agencyCurrency\":\"USD\",\"campaign\":\"ad58c968410c885409aca51028\",\"agencyTrackingNumber\":\"58c968410c885409aca51028\"}";

            _stageFormData.Data = customFormData;
            _stageFormData.Id   = _costStageRevision.StageDetailsId;

            var costs = new List <Cost> {
                _cost
            };
            var costStageRevisions = new List <CostStageRevision> {
                _costStageRevision
            };
            var currencies = new List <Currency> {
                euro, usd
            };

            _efContextMock.MockAsyncQueryable(costs.AsQueryable(), c => c.Cost);
            _efContextMock.MockAsyncQueryable(costStageRevisions.AsQueryable(), c => c.CostStageRevision);
            _efContextMock.MockAsyncQueryable(currencies.AsQueryable(), c => c.Currency);
            _efContextMock.MockAsyncQueryable(new[] { _stageFormData }.AsQueryable(), d => d.CustomFormData);

            _stageDetails.ContentType = new core.Builders.DictionaryValue
            {
                Id    = Guid.NewGuid(),
                Key   = "Video",
                Value = "Video"
            };
            _stageDetails.CostType       = CostType.Production.ToString();
            _stageDetails.ProductionType = new core.Builders.DictionaryValue
            {
                Id    = Guid.NewGuid(),
                Key   = "Production",
                Value = "Production"
            };
            _stageDetails.Title = "Cost Title";

            _revisionServiceMock.Setup(csr => csr.GetStageDetails <PgStageDetailsForm>(_costStageRevisionId)).ReturnsAsync(_stageDetails);
            _revisionServiceMock.Setup(csr => csr.GetProductionDetails <PgProductionDetailsForm>(_costStageRevisionId)).ReturnsAsync(_productionDetails);
        }