Пример #1
0
    public void spawnEnemy(enemy_thief enemyPrefab)
    {
        enemy_thief new_enemy = new enemy_thief();
        float       rng       = Random.RandomRange(0.0f, 1.0f);
        float       progress  = ((float)gridMaster.relicsaved + 1) / (float)gridMaster.relicounter;

        Debug.Log("rng " + rng + " vs " + progress);
        if ((gridMaster.relicsaved > 0) && (rng < progress))
        {
            new_enemy = Instantiate(thiefStrongerPrefab, new Vector3(thisNode.gridPoint.x, thisNode.gridPoint.y, 0), Quaternion.identity, gridMaster.groupEnemy);
        }
        else
        {
            new_enemy = Instantiate(enemyPrefab, new Vector3(thisNode.gridPoint.x, thisNode.gridPoint.y, 0), Quaternion.identity, gridMaster.groupEnemy);
        }
        new_enemy.alreadyMoved = true;
        new_enemy.thisNode     = thisNode;
        new_enemy.originNest   = this;
        gridMaster.updateActors();
    }
Пример #2
0
    void readFile()
    {
        //leer archivo
        //string[] text = System.IO.File.ReadAllLines (@"Assets\MyFolder\MAP_FILES\map_grid_1.txt");
        string textFile = mapFile[mapIndex].text;

        string[] text = textFile.Split("\n"[0]);

        //leer el tamaño del mapa
        string[] lines = text [0].Split(";"[0]);
        gridSizeX = Mathf.RoundToInt(int.Parse(lines[0]));
        gridSizeZ = Mathf.RoundToInt(int.Parse(lines[1]));
        if (lines.Length >= 4)
        {
            recursoDinero        = Mathf.RoundToInt(int.Parse(lines[2]));
            recursoDineroInicial = recursoDinero;
            recursoGas           = Mathf.RoundToInt(int.Parse(lines[3]));
        }
        if (lines.Length >= 5)
        {
            tutorialIndexForLater = Mathf.RoundToInt(int.Parse(lines[4]));
            Debug.Log(lines[4]);
        }
        else
        {
            tutorialIndexForLater = 0;
        }

        grid          = new Node[gridSizeX, gridSizeZ];
        gridWorldSize = new Vector2(gridSizeX * nodeDiameter, gridSizeZ * nodeDiameter);

        //ajustar tamaño del plano/piso
        this.transform.position    = new Vector3((float.Parse(lines[0]) - 1) / 2, (float.Parse(lines[1]) - 1) / 2, -10);
        plane.transform.localScale = new Vector3(gridSizeX * nodeDiameter, gridSizeZ * nodeDiameter, 1);
        relics      = new List <relic>();
        relicounter = 0;
        relicsaved  = 0;

        //leer cada linea del archivo
        for (int i = 1; i < text.Length; i++)
        {
            //leer linea y transformarla en un nodo segun coordenadas
            lines = text [i].Split(";"[0]);
            Vector2 gridPoint = new Vector2(int.Parse(lines[0]), int.Parse(lines[1]));

            grid[int.Parse(lines[0]), int.Parse(lines[1])] = new Node(gridPoint, lines[2], bool.Parse(lines[3]), this);
            if (lines[2].Contains("relic"))
            {
                relic newrelic = Instantiate(relic_prefab, new Vector3(gridPoint.x, gridPoint.y, 0), Quaternion.identity, groupItems);
                relicounter++;
                newrelic.relicID = relicounter;
                relics.Add(newrelic);
            }

            if (lines[2].Contains("worm"))
            {
                enemy_parent newWorm = Instantiate(enemy_worm_prefab, new Vector3(gridPoint.x, gridPoint.y, 0), Quaternion.identity, groupEnemy);//,this.transform
            }
            if (lines[2].Contains("shark"))
            {
                enemy_shark newshark = Instantiate(enemy_shark_prefab, new Vector3(gridPoint.x, gridPoint.y, 0), Quaternion.identity, groupEnemy);
            }
            if (lines[2].Contains("thief"))
            {
                enemy_thief newthief = Instantiate(enemy_thief_prefab, new Vector3(gridPoint.x, gridPoint.y, 0), Quaternion.identity, groupEnemy);
            }
            if (lines[2].Contains("nest"))
            {
                enemy_thief_nest newNest = Instantiate(enemy_nest_prefab, new Vector3(gridPoint.x, gridPoint.y, 0), Quaternion.identity, groupEnemy);
            }
            if (lines[2].Contains("keymaster"))
            {
                enemy_unlocker newLock = Instantiate(enemy_unlocker_prefab, new Vector3(gridPoint.x, gridPoint.y, 0), Quaternion.identity, groupEnemy);
            }
            if (lines[2].Contains("sphinxawake"))
            {
                enemy_sphinx newboss = Instantiate(enemy_sphinx_prefab, new Vector3(gridPoint.x, gridPoint.y, 0), Quaternion.identity, groupEnemy);
            }

            if (lines[2].Contains("START"))
            {
                unit_HQ newHQ = Instantiate(unit_HQ_prefab, new Vector3(gridPoint.x, gridPoint.y, 0), Quaternion.identity, groupUnit);
                newHQ.name  = "unitHQ";
                unitHQ_code = newHQ;
            }
            if (lines[2].Contains("DRILL"))
            {
                unit_parent startUnit = Instantiate(unit_drill_prefab, new Vector3(gridPoint.x, gridPoint.y, 0), Quaternion.identity, groupUnit);
            }
            if (lines[2].Contains("TANK"))
            {
                unit_parent startUnit = Instantiate(unit_tank_prefab, new Vector3(gridPoint.x, gridPoint.y, 0), Quaternion.identity, groupUnit);
            }
            if (lines[2].Contains("SCOUT"))
            {
                unit_parent startUnit = Instantiate(unit_scout_prefab, new Vector3(gridPoint.x, gridPoint.y, 0), Quaternion.identity, groupUnit);
            }
            if (lines[2].Contains("BOMB"))
            {
                unit_parent startUnit = Instantiate(unit_bomb_prefab, new Vector3(gridPoint.x, gridPoint.y, 0), Quaternion.identity, groupUnit);
            }
        }

        //conectar nodos
        for (int i = 0; i < gridSizeX; i++)
        {
            for (int j = 0; j < gridSizeZ; j++)
            {
                try{ grid [i, j].leftNode = grid [i - 1, j]; }
                catch {}
                try{ grid [i, j].rightNode = grid [i + 1, j]; }
                catch {}
                try{ grid [i, j].upNode = grid [i, j + 1]; }
                catch {}
                try{ grid [i, j].downNode = grid [i, j - 1]; }
                catch {}
                grid [i, j].drawmelikeafrenchgirl();
            }
        }

        checkRelics();//in case of no relics end game
        gamestate = 1;
        //world set
    }