//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(); }
// 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; } } }