private bool HasEnoughSpecialScraps(List <int>[] inventory, TowerRessourceManagement towermanagement)
 {
     return((inventory[(int)ScrapType.MELEE].Count >= 1 && towermanagement.NeedsMeeleScraps) ||
            (inventory[(int)ScrapType.WATERTOWERSCRAP].Count >= 1 && towermanagement.NeedsBottleScraps) ||
            (inventory[(int)ScrapType.TIDEPOD].Count >= 1 && towermanagement.NeedsGrenadeScraps) ||
            (inventory[(int)ScrapType.PUSTEFIX].Count >= 1 && towermanagement.NeedsPustefixScraps));
 }
 public void UpgradeWithScrap(TowerRessourceManagement towermanagement, int scrapType, int subtypeIndex)
 {
     if (towermanagement.ScrapSlotsOnTowerAreFree() && _playerInventory.SubTypeIsInInventory(scrapType, subtypeIndex))
     {
         towermanagement.AddNeededScrapOfCertainSubTypeIndex(_playerScraps, subtypeIndex);
         _playerInventory.RemoveScrapBySubTypeIndex(scrapType, subtypeIndex);
     }
 }
 private void RemoveAnyNeededScrapFromInventory(TowerRessourceManagement towermanagement)
 {
     for (int scrapTypeIndex = 0; scrapTypeIndex < towermanagement.NeededScraps.Length; scrapTypeIndex++)
     {
         if (towermanagement.NeededScraps[scrapTypeIndex])
         {
             _playerInventory.RemoveAnyScrap(scrapTypeIndex);
         }
     }
 }
    public void BuildTower(GameObject selectedTower)
    {
        selectedTower.tag = "Tower";
        TowerRessourceManagement towermanagement = selectedTower.GetComponent <TowerRessourceManagement>();
        GameObject scrapObject = towermanagement.AddNeededScrap(_playerScraps);

        scrapObject.SetActive(false);
        selectedTower.GetComponentInChildren <TowerAnimationEvent>().NewScrap = scrapObject;
        RemoveAnyNeededScrapFromInventory(towermanagement);
    }
    public void UpgradeWithAnyScrap(TowerRessourceManagement towermanagement)
    {
        if (!CheckForRessources(_playerScraps, towermanagement))
        {
            return;
        }

        if (towermanagement.ScrapSlotsOnTowerAreFree())
        {
            towermanagement.AddNeededScrap(_playerScraps);
            RemoveAnyNeededScrapFromInventory(towermanagement);
        }
    }
示例#6
0
        void Start()
        {
            _towerRessourceManagement = GetComponentInParent <TowerRessourceManagement>();
            spawnpoints  = new List <GameObject>();
            _towersounds = GetComponentInParent <TowerSounds>();

            for (int i = 0; i < transform.childCount; i++)
            {
                if (transform.GetChild(i).tag == "SpawnpointBubbleTower")
                {
                    spawnpoints.Add(transform.GetChild(i).GetChild(0).gameObject);
                }
            }
        }
    public void OpenTowerBuildingMenu(GameObject selectedTower)
    {
        EnableCursor();
        _selectedTower = selectedTower;
        TowerRessourceManagement towermanagement = selectedTower.GetComponent <TowerRessourceManagement>();

        for (int scrapTypeIndex = 0; scrapTypeIndex < towermanagement.NeededScraps.Length; scrapTypeIndex++)
        {
            if (towermanagement.NeededScraps[scrapTypeIndex])
            {
                InstantiateButtonForEachSubPrefab((ScrapType)scrapTypeIndex);
            }
        }

        Time.timeScale = 0.0f;
    }
示例#8
0
    private void TowerUpgradeRayCast()
    {
        RaycastHit hit;
        Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out hit, Mathf.Infinity, FromUpgradeRaycastAcknowledgedLayer))
        {
            if (hit.transform.gameObject.CompareTag("Tower") && Vector3.Distance(transform.position, hit.transform.position) <= MaxDistanceToTower && IsInDefaultMode)
            {
                _towerBuildingUI.ShowTowerKillNotification();
                TowerRessourceManagement towermanagement = hit.transform.gameObject.GetComponent <TowerRessourceManagement>();
                if (_towerBuilding.CheckForRessources(_scrapInventory.ScrapInventory, towermanagement) && towermanagement.ScrapSlotsOnTowerAreFree())
                {
                    _towerBuildingUI.ShowTowerUpgraeNotification();
                }

                if (Input.GetButtonDown("Upgrade Tower") && IsInDefaultMode)
                {
                    _towerBuildingUI.OpenTowerBuildingMenu(hit.transform.gameObject);
                }

                if (Input.GetButtonDown("Deconstruct Tower") && IsInDefaultMode)
                {
                    _towerBuildingUI.CloseTowerUpgradeNotification();
                    _towerBuildingUI.CloseTowerBuildingMenu();
                    hit.transform.gameObject.GetComponent <Tower>().Kill();
                }

                if (Input.GetButtonDown("QuickUpgrade Tower") && IsInDefaultMode)
                {
                    _towerBuildingUI.CloseTowerUpgradeNotification();
                    _towerBuildingUI.CloseTowerBuildingMenu();
                    _towerBuilding.UpgradeWithAnyScrap(hit.transform.gameObject.GetComponent <TowerRessourceManagement>());
                }
            }
        }
        else
        {
            _towerBuildingUI.CloseTowerKillNotification();
            _towerBuildingUI.CloseTowerUpgradeNotification();
        }
    }
 internal bool CheckForRessources(List <int>[] inventory, TowerRessourceManagement towermanagement)
 {
     return(HasEnoughSpecialScraps(inventory, towermanagement) &&
            _playerInventory.ClassicScraps >= towermanagement.NeededClassicScraps);
 }
示例#10
0
    internal bool TowerBuildingAllowed(GameObject selectedTower)
    {
        TowerRessourceManagement towermanagement = selectedTower.GetComponent <TowerRessourceManagement>();

        return(CheckForRessources(_playerScraps, towermanagement));
    }