Exemplo n.º 1
0
    public void repairTile()
    {
        if (selected == null)
        {
            return;
        }
        HexaTile tile = ShipData.mainShip.GetTile(selected);

        if (tile == null || tile.device.hpCurrent >= tile.device.hpMax)
        {
            return;
        }

        int price = tile.RepairPrice();

        if (ShipData.metals < price)
        {
            AddMessage("Pietrukst metala");
            return;
        }

        ShipData.addMetals(-price);
        tile.Repair();

        tileDamage.text     = tile.device.hpCurrent.ToString("0") + "/" + tile.device.hpMax.ToString("0");
        tileRepairText.text = tile.RepairPrice().ToString();

        selected = selected;
    }
Exemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        if ((gameMode == 1) && ShipData.levelData.currentTime > 0)
        {
            ShipData.levelData.currentTime -= Time.deltaTime;
            int sec = (int)(ShipData.levelData.time - ShipData.levelData.currentTime);

            travelSlider.value = 1 - ShipData.levelData.currentTime / ShipData.levelData.time;

            if (currentSec != sec)
            {
                currentSec = sec;
                if (timerText != null)
                {
                    timerText.text = sec.ToString("000");
                }
                travelText.text = sec.ToString("000");
                ShipData.update(currentSec);
            }

            if (ShipData.levelData.currentTime <= 0)
            {
                //End level
                gameMode = 2;
                ShipData.nextLevel();
            }
        }

        if (editorMode)
        {
            Vector2 mouseHex = ShipData.GetMouseHex();
            cursor.transform.position = new Vector3(mouseHex.x, mouseHex.y);

            if (Input.GetMouseButtonDown(0))
            {
                Vector3      mousePos   = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                Collider2D[] collission = Physics2D.OverlapPointAll(mousePos);
                bool         istile     = false;
                foreach (Collider2D collider in collission)
                {
                    if (collider.gameObject.tag == "ship")
                    {
                        istile = true;
                        break;
                    }
                }
                if (istile)
                {
                    edditorToggle.isOn = false;
                    return;
                }

                if (ShipData.metals < ShipData.devices[0].price)
                {
                    AddMessage("Pietrukst metala");
                }
                else
                {
                    if (ShipData.mainShip.createTile(ShipData.GetMouse(), 0, true))
                    {
                        ShipData.addMetals(-ShipData.devices[0].price);
                    }
                }
            }
            if (Input.GetMouseButtonDown(1))
            {
                edditorToggle.isOn = false;
            }
            return;
        }

        if (selected != null)
        {
            if (EventSystem.current.IsPointerOverGameObject())
            {
                return;
            }
            if (Input.GetMouseButtonDown(1))
            {
                selected = null;
                return;
            }
            if (Input.GetMouseButtonDown(0))
            {
                Vector3      mousePos   = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                Collider2D[] collission = Physics2D.OverlapPointAll(mousePos);
                bool         istile     = false;
                foreach (Collider2D collider in collission)
                {
                    if (collider.gameObject.tag == "ship")
                    {
                        istile = true;
                        break;
                    }
                }
                if (!istile)
                {
                    selected = null;
                }
            }
        }

        if (selected != null)
        {
            HexaTile tile = ShipData.mainShip.GetTile(selected);
            if (tile == null)
            {
                selected = null;
                return;
            }
            tileDamage.text     = tile.device.hpCurrent.ToString("0") + "/" + tile.device.hpMax.ToString("0");
            tileRepairText.text = tile.RepairPrice().ToString();

            if (tile.device.energyProduce > 0)
            {
                tileEnergy.text  = tile.device.energyProduce.ToString();
                tileEnergy.color = energyColors[2];
            }
            else
            {
                tileEnergy.text = tile.device.energyNeed.ToString("0") + "/" + tile.device.energyCurrent.ToString("0");
                if (tile.device.energyCurrent >= tile.device.energyNeed)
                {
                    tileEnergy.color = energyColors[0];
                }
                else
                {
                    tileEnergy.color = energyColors[1];
                }
            }
        }
    }