Beispiel #1
0
    //despawn the tower and give back the money
    public void despawn()
    {
        GameObject          moneyAddObj    = Instantiate(moneyAdd);
        MoneyAddedBehaviour moneyAddBehave = moneyAddObj.GetComponent <MoneyAddedBehaviour>();

        moneyAddBehave.activateRefund((int)(GameManager.instance.getRefundMoney(selectedTower.getTowerType())), selectedTower.transform.position);
        TowerGridBlocker blocker = selectedTower.gameObject.GetComponent <TowerGridBlocker>();

        blocker.removeGridStatus();
        GameManager.instance.refund(selectedTower.getTowerType());
        Destroy(selectedTower.gameObject);
        GameEvents.current.TowerUnselected();
        GameManager.instance.currentStatus = GameStatus.PLAY;
        OnTowerUnselected();
    }
Beispiel #2
0
    // for touches
    void detectTouches()
    {
        // for touch
        if (Input.touchCount > 0 && GameManager.instance.isSelectTower && !isReadyToSpawn && !OtherMethod.onUiPressed(Input.GetTouch(0).position))
        {
            Touch touch = Input.GetTouch(0);
            // If it is the first time to build then make the tower
            if (!isReadyToBuild)
            {
                switch (GameManager.instance.selectedTower)
                {
                case 0:
                    currentTower     = Instantiate(towerMachineGun, this.transform);
                    currentTowerType = TowerType.MACHINE_GUN;
                    break;

                case 1:
                    currentTower     = Instantiate(towerSniper, this.transform);
                    currentTowerType = TowerType.SNIPER;
                    break;

                case 2:
                    currentTower     = Instantiate(towerElectric, this.transform);
                    currentTowerType = TowerType.ELECTRIC;
                    break;

                default:
                    currentTower     = Instantiate(towerMachineGun, this.transform);
                    currentTowerType = TowerType.MACHINE_GUN;
                    break;
                }

                currentTower.SetActive(false);
                SpriteRenderer renderer = currentTower.GetComponent <SpriteRenderer>();
                renderer.color = new Color(1, 1, 1, 150f / 256f);
                isReadyToBuild = true;
            }

            if (touch.phase == TouchPhase.Began)
            {
                Vector2 touchPosition;
                touchPosition = mainCamera.ScreenToWorldPoint(touch.position);

                // checking if the place is open field
                int x, y;
                GridCustom.getXYFromPosition(touchPosition, out x, out y);

                x += GridCustom.offsetX;
                y += GridCustom.offsetY;

                if (GridCustom.cells[x, y].cellContent == CellContent.OPEN_FIELD)
                {
                    currentTower.SetActive(true);
                    isReadyToSpawn = true;
                    canSpawn       = false;
                    currentTower.transform.position = GridCustom.getWorldSpace(x, y) + new Vector3(0.5f, 0.5f, 0);
                    currX = x;
                    currY = y;
                }
            }
        }

        if (Input.touchCount > 0 && isReadyToBuild && isReadyToSpawn && !OtherMethod.onUiPressed(Input.GetTouch(0).position))
        {
            Touch   touch = Input.GetTouch(0);
            Vector2 touchPosition;
            touchPosition = mainCamera.ScreenToWorldPoint(touch.position);

            int x, y;
            GridCustom.getXYFromPosition(touchPosition, out x, out y);

            x += GridCustom.offsetX;
            y += GridCustom.offsetY;
            // if the player touch the area again then spawn the tower
            if (touch.phase == TouchPhase.Ended && GameManager.instance.isSelectTower)
            {
                if (isReadyToSpawn && isReadyToBuild)
                {
                    canSpawn = true;
                }
                else if (canSpawn)
                {
                    // change the color
                    SpriteRenderer renderer = currentTower.GetComponent <SpriteRenderer>();
                    renderer.color = new Color(1, 1, 1, 1);

                    // activate it
                    TowerBehaviour tower = currentTower.GetComponent <TowerBehaviour>();
                    tower.activate();

                    // block the area
                    TowerGridBlocker gridBlocker = currentTower.GetComponent <TowerGridBlocker>();
                    gridBlocker.changeGridStatus();

                    // pay the tower
                    GameManager.instance.pay(currentTowerType);
                    towerButton.disableButton(GameManager.instance.selectedTower);

                    // reset variable
                    currentTower     = null;
                    currentTowerType = TowerType.MACHINE_GUN;
                    isReadyToBuild   = false;
                    isReadyToSpawn   = false;
                    canSpawn         = false;
                    currX            = -1;
                    currY            = -1;
                    desc.gameObject.SetActive(false);
                    GameEvents.current.TowerOrTrapBuild();
                    if (GameManager.instance.gameStart)
                    {
                        generator.StartCoroutine(generator.openGenerator());
                        kotoTower.StartCoroutine(kotoTower.openKotoTower());
                    }
                    return;
                }
            }
            else if (touch.phase == TouchPhase.Began && !(currX == x && currY == y))
            {
                isReadyToSpawn = false;
                canSpawn       = false;
            }
        }
    }