Beispiel #1
0
        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);
        }
Beispiel #2
0
    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);
    }
Beispiel #3
0
    public void BuyTower(BasicTower tower)
    {
        GameController.Instance.SpendMoney(tower.price);

        if (OnBuyTower != null)
        {
            OnBuyTower.Invoke(tower.price);
        }
    }
Beispiel #4
0
    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;
     }
 }
Beispiel #6
0
        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();
            }
        }
Beispiel #7
0
    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;
        }
    }
Beispiel #8
0
    public void SelectTower()
    {
        CancelSelection();

        var worldMousePos = mainCamera.ScreenToWorldPoint(Input.mousePosition);

        ghostGameObject     = Instantiate(towerPrefab, worldMousePos, Quaternion.identity);
        ghostTower          = ghostGameObject.GetComponent <BasicTower>();
        ghostSpriteRenderer = ghostGameObject.GetComponent <SpriteRenderer>();
    }
Beispiel #9
0
    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();
 }
Beispiel #11
0
    /// <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);
        }
    }
Beispiel #12
0
    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;
    }
Beispiel #13
0
    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);
        }
    }
Beispiel #14
0
    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;
            }
        }
    }
Beispiel #15
0
    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);
            //}
        }
    }
Beispiel #16
0
    //根据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();//重新计算塔信息
    }
Beispiel #17
0
    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();
    }
Beispiel #18
0
    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);
    }
Beispiel #19
0
        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);
        }
Beispiel #20
0
        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);
        }
Beispiel #21
0
 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);
 }
Beispiel #23
0
 public void AddTower(BasicTower tower)
 {
     towers.Add(tower);
 }
Beispiel #24
0
 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;
 }