void MainFormMouseUp(object sender, MouseEventArgs e) { Node n = graph.getNode(e.X / 10, e.Y / 10); Node k = graph.getNode(50, 50); if (build_tower) { g.FillEllipse(Brushes.Red, 50, 50, 20, 20); ICollection myCollection = ArrayList.Synchronized(things); BasicTower t1 = new BasicTower(n, graph, 100, 100); t1.thinking(); //t1.action(); t1.draw(g); graph.disableNode(e.X / 10, e.Y / 10); lock (myCollection.SyncRoot) { things.Add(t1); Console.WriteLine(things.Count + "DELETE"); } build_tower = false; } if (build_bug) { BasicCreature c1 = new BasicCreature(n, k, graph, 100, 100, world); build_bug = false; things.Add(c1); c1.draw(g); } world.setArray(things); }
private void PlaceTower() { //Create a tower and then place it on a platform BasicTower tower = Instantiate(towerLookup[towerMode], platformTransform.position, Quaternion.identity); platformTransform.GetComponent <Platform>().PlaceTower(tower); }
public void BuyTower(BasicTower tower) { GameController.Instance.SpendMoney(tower.price); if (OnBuyTower != null) { OnBuyTower.Invoke(tower.price); } }
public void SellTower(BasicTower tower) { GameController.Instance.AddMoney(tower.bid); if (OnSellTower != null) { OnSellTower.Invoke(tower.bid); } }
public void UpdateTowersUI() { for (int i = 0; i < priceTowerTextFields.Count; i++) { BasicTower tower = GameController.Instance.towerPrefabs[i].GetComponent <BasicTower>(); priceTowerTextFields[i].text = tower.price.ToString(); buyTowerImages[i].sprite = tower.image; } }
void MainFormMouseUp(object sender, MouseEventArgs e) { if (graph.getHeight() <= e.Y / 15 || graph.getWidth() <= e.X / 15 ) { return; } Node n = graph.getNode(e.X / 15, e.Y / 15); if (build_tower_basic || build_tower_multi) { ICollection myCollection = ArrayList.Synchronized(things); BasicTower t1; MultiTargetTower t2; if (build_tower_basic) { t1 = new BasicTower(n, graph, 20, 100, world); lock (myCollection.SyncRoot) { if (n.getTerrain() == 1 && n.isEnable()) // ak je teren stol { things.Add(t1); } else { Console.WriteLine("sem nemoze veza"); } } world.substractFromScore(100); } else { t2 = new MultiTargetTower(n, graph, 20, 100, world); lock (myCollection.SyncRoot) { if (n.getTerrain() == 1 && n.isEnable()) // ak je teren stol { things.Add(t2); } else { Console.WriteLine("sem nemoze veza"); } } world.substractFromScore(300); } graph.disableNode(e.X / 15, e.Y / 15); showActualScoreValue(); } }
public void ChangeClickState(ClickState state) { if (clickState == state) { return; } switch (clickState) { case ClickState.Default: break; case ClickState.PlacingTower: _tapPosition = Input.mousePosition; RaycastHit hit; Physics.Raycast(Camera.main.ScreenPointToRay(_tapPosition), out hit); if (CheckPlace(hit) && !IsPointerOnUI()) { GameObject towerPrefab = GameController.Instance.towerPrefabs[indexPlacingTower]; GameObject newTowerObject = Instantiate(towerPrefab, placingTower.transform.position, placingTower.transform.rotation); towers.Add(newTowerObject.GetComponent <BasicTower>()); BuyTower(towers[towers.Count - 1]); } Destroy(placingTower.gameObject); break; case ClickState.TowerSelect: selectedTower.selector.SetActive(false); UIController.Instance.DisableSellTower(); selectedTower = null; break; } clickState = state; switch (state) { case ClickState.Default: break; case ClickState.PlacingTower: placingTower = Instantiate(GameController.Instance.towerTemps[indexPlacingTower]); _placingBlankMesh = placingTower.transform.GetChild(0).GetComponent <MeshRenderer>(); break; case ClickState.TowerSelect: selectedTower = towers[indexSelectedTower]; selectedTower.selector.SetActive(true); UIController.Instance.EnableSellTower(selectedTower.GetComponent <BasicTower>()); break; } }
public void SelectTower() { CancelSelection(); var worldMousePos = mainCamera.ScreenToWorldPoint(Input.mousePosition); ghostGameObject = Instantiate(towerPrefab, worldMousePos, Quaternion.identity); ghostTower = ghostGameObject.GetComponent <BasicTower>(); ghostSpriteRenderer = ghostGameObject.GetComponent <SpriteRenderer>(); }
private void CancelSelection() { if (ghostGameObject) { Destroy(ghostGameObject); ghostGameObject = null; } ghostTower = null; ghostSpriteRenderer = null; }
public void ShowTowerRangeIndicator(GameObject m_GameObject) { if (m_GameObject == null) { return; } m_BasicTower = m_GameObject.GetComponent <Tower>().m_BasicTower; targetRange = m_BasicTower.GetTowerRange(); MoveTo(m_GameObject.transform.position); Enable(); }
/// <summary> /// Проверка возможности покупки вернет true если покупка возможна /// </summary> /// <param name="id">Id башни в спске префабов</param> /// <returns></returns> public bool AcceptBuyTower(int id) { BasicTower tower = towerPrefabs[id].GetComponent <BasicTower>(); if (tower.price <= CurrentCoins) { return(true); } else { return(false); } }
public void OnPointerEnter(PointerEventData eventData) { Panel.SetActive(true); BasicTower tower = TowerPref.GetComponent <BasicTower>(); StringBuilder statsText = new StringBuilder(); statsText.AppendLine("Health: " + tower.Health.ToString()); statsText.AppendLine("Range: " + tower.Range); statsText.AppendLine("Reload Time: " + tower.ReloadTime); statsText.AppendLine("Fire Rate: " + tower.FireRate); statsText.AppendLine("Ammo: " + tower.ammoCapacity); text.text = statsText.ToString(); isOver = true; }
public void SelectTower(BasicTower tower) { if (clickState == ClickState.TowerSelect) { ChangeClickState(ClickState.Default); } if (selectedTower == null) { indexSelectedTower = towers.FindIndex(x => x.GetComponent <BasicTower>() == tower); ChangeClickState(ClickState.TowerSelect); } }
private void OnMouseDown() { if (!hasTower && canHaveTower) { if (inv.Current_Stone_Total >= inv.Basic_Tower_Price_Int) { GameObject BasicTower; BasicTower = Instantiate(Tower, new Vector3(transform.position.x, transform.position.y + 5, transform.position.z), new Quaternion(0, 0, 0, 0)); currentTower = BasicTower.GetComponent <TowerBehaviour>(); currentTower.towerName = "BasicTower"; currentTower.PosOnGrid = new Vector2(PosX, PosY); hasTower = true; inv.Current_Stone_Total -= inv.Basic_Tower_Price_Int; } } else if (!hasTower && TileType == Type.Water) { if (inv.Current_Stone_Total >= inv.Pump_Price_Int) { GameObject Pump; Pump = Instantiate(Tower, new Vector3(transform.position.x, transform.position.y + 5, transform.position.z), new Quaternion(0, 0, 0, 0)); currentTower = Pump.GetComponent <TowerBehaviour>(); currentTower.towerName = "Pump"; currentTower.PosOnGrid = new Vector2(PosX, PosY); hasTower = true; inv.Current_Stone_Total -= inv.Pump_Price_Int; } } else if (!hasTower && TileType == Type.Stone) { if (inv.Current_Stone_Total >= inv.Drill_Price_Int) { GameObject Drill; Drill = Instantiate(Tower, new Vector3(transform.position.x, transform.position.y + 5, transform.position.z), new Quaternion(0, 0, 0, 0)); currentTower = Drill.GetComponent <TowerBehaviour>(); currentTower.towerName = "Drill"; currentTower.PosOnGrid = new Vector2(PosX, PosY); hasTower = true; inv.Current_Stone_Total -= inv.Drill_Price_Int; } } }
public void Increase() { var towers = TowerManager.Instance.GetTowers(); foreach (var tower in towers.Values) { BasicTower basicTower = tower as BasicTower; if (basicTower != null) { basicTower.MultiplyDamage(2, 10); } //else //{ // AOETower aoeTower = tower as AOETower; // aoeTower.MultiplyDamage(2, 10); //} } }
//根据currentModuleID生成该种类的塔 private void InitBasicTower() { m_CurrentModule = Instantiate(m_TowerModules[(int)currentModuleID], transform.position, transform.rotation) as GameObject; //BasicTower附在Tower上 m_CurrentModule.transform.parent = transform; m_BasicTower = m_CurrentModule.GetComponent <BasicTower>(); m_BasicTower.Init(); for (int i = 0; i < (int)TowerElem.MaxCount; i++) { for (int j = 0; j < towerElemCount[i]; j++) { m_BasicTower.AddElem((TowerElem)i);//添加元素 } } m_BasicTower.RecalcInfo();//重新计算塔信息 }
private void AttemptToPlaceTower() { if (!ghostTower) { return; } if (!CanPlaceTowerHere(ghostTower, ToGridPosition(ghostTower.transform.position))) { return; } towerManager.AddTower(ghostTower); ghostTower.Enable(); // TODO : continue to select or unselect ? ghostGameObject = null; ghostTower = null; ghostSpriteRenderer = null; // create a new selection of same prefab SelectTower(); }
private bool CanPlaceTowerHere(BasicTower tower, Vector2Int cellPosition) { var minPos = CalculateMinCellPosition(cellPosition, tower.GetBuildSize()); var maxPos = CalculateMaxCellPosition(cellPosition, tower.GetBuildSize()); // good terrain ? for (var x = minPos.x; x <= maxPos.x; ++x) { for (var y = minPos.y; y <= maxPos.y; ++y) { var tile = (TowerBuildTile)tilemapBuild.GetTile(new Vector3Int(x, y, 0)); if (!tile || !tile.canBuild) { return(false); } } } // no other towers ? foreach (var managedTower in towerManager.GetTowers()) { var towerManagedCellPos = (Vector2Int)gridBuild.WorldToCell(managedTower.transform.position); // if a tower take the cellPosition, we can't place here var managedMinPos = CalculateMinCellPosition(towerManagedCellPos, managedTower.GetBuildSize()); var managedMaxPos = CalculateMaxCellPosition(towerManagedCellPos, managedTower.GetBuildSize()); // Test AABB vs AABB if (minPos.x <= managedMaxPos.x && maxPos.x >= managedMinPos.x && minPos.y <= managedMaxPos.y && maxPos.y >= managedMinPos.y) { return(false); } } return(true); }
public bool BuyTower(Vector2f pos, TowerEntityType type) { switch (type) { // TODO: Check if a tower is null before subtrackting units case TowerEntityType.Basic: var stats = EntityStats.TowerEntityStatTable[type]; if (UnitBalance >= stats.UnitCost) { UnitBalance -= stats.UnitCost; var normIndex = _tileMap.GetGridCoords(pos); int index = _towerMap.GetIndex((int)normIndex.X, (int)normIndex.Y); var mPos = _overlayLevel.GetMouseGridCoordsToLevel(); var tileSize = 8 * SpriteScalar; var texSize = _towerBasic.Size * (uint)SpriteScalar; var newPos = new Vector2f( mPos.X + ((tileSize / 2) - (texSize.X / 2)), mPos.Y + ((tileSize / 2) - (texSize.Y / 2))); if (_towerMap[index] == null) { _towerMap[index] = new BasicTower(index, newPos, this, _towerBasic); UpdateInfo(); return(true); } } break; } return(false); }
void Button5Click(object sender, EventArgs e) { MessageBox.Show("SAVE GAME"); string content = ""; string path = "../SAVE.txt"; List <ThinkingObject> w = world.getarrayOfObjectInGame(); Node[,] nodes = graph.getNodes(); for (int i = 0; i < nodes.GetLength(0); i++) { for (int j = 0; j < nodes.GetLength(1); j++) { content += (nodes[i, j].getX() / 10).ToString() + " " + (nodes[i, j].getY() / 10).ToString() + " " + nodes[i, j].getTerrain().ToString() + " "; } } content += "\n"; Console.WriteLine(content); for (int i = 0; i < w.Count; i++) { if (w[i].GetType() == typeof(BasicCreature)) { BasicCreature c = (BasicCreature)w[i]; content += "0 " + (c.getPosition().getX() / 10).ToString() + " " + (c.getPosition().getY() / 10).ToString() + " "; } else { BasicTower c = (BasicTower)w[i]; content += "1 " + (c.getPosition().getX() / 10).ToString() + " " + (c.getPosition().getY() / 10).ToString() + " "; } } Console.WriteLine(content); File.WriteAllText(path, content); }
private void OwnerChanged(BasicTower tower) { _owner = tower; damage = _owner.damage; speed = _owner.projectileSpeed; }
public void EnableSellTower(BasicTower tower) { bidTowerText.text = tower.bid.ToString(); sellTowerButton.SetActive(true); }
public void AddTower(BasicTower tower) { towers.Add(tower); }
public void RemoveTower(BasicTower tower) { towers.Remove(tower); Destroy(tower); }
public void PlaceTower(BasicTower tower) { //When a tower is placed, set the platform to grey color this.tower = tower; material.color = Color.grey; }
public void SellTower() { //When a tower is sold, return the platforms color tower = null; material.color = defaultColor; }