Ejemplo n.º 1
0
    public void PlaceBase(Chunk chunk)
    {
        bool success = false;
        int  baseX = 0, baseY = 0;

        for (int y = 1; y < Chunk.CHUNK_SIZE - 1; y += 2)
        {
            for (int x = 1; x < Chunk.CHUNK_SIZE - 1; x += 2)
            {
                int neighbourCount = 0;
                for (int i = 0; i < neighbours.Length; i++)
                {
                    var n = neighbours[i];
                    if (chunk.GetTile(n.Y, n.X) == TileType.GrassLand)
                    {
                        neighbourCount++;
                    }
                }
                if (neighbourCount == _neigboursLength)
                {
                    success = true;
                    baseY   = y;
                    baseX   = x;
                    break;
                }
            }
        }

        // add base
        if (success)
        {
            print("Base location " + baseX + " " + baseY);
            chunk.AddObject(baseX, baseY, ObjectPool.instance.GetObjectForType("Campfire_fire", false));
        }
    }
Ejemplo n.º 2
0
    public void AddLater_hack(int x, int y, GameObject go)
    {
        int chunkX = 1;
        int chunkY = 1;

        GetChunkOffsetXY(ref chunkX, ref chunkY, x, y);

        int   offsetX = (int)x % Chunk.CHUNK_SIZE;
        int   offsetY = (int)y % Chunk.CHUNK_SIZE;
        Chunk chunk   = _chunks[chunkY, chunkX];

        chunk.AddObject(x, y, go);
    }
Ejemplo n.º 3
0
    public bool TrySpawnRares(Chunk chunk)
    {
        if (AllSpawnded)
        {
            return(false);
        }

        // choose index
        int index = ChooseIndex(SingleInstanceSpawnSettings.Spawns.Count);

        if (index == -1)
        {
            AllSpawnded = true;
        }

        if (0 == Random.Range(0, SingleInstanceSpawnSettings.SpawnRate))
        {
            int tries = 0;
            do
            {
                int x = Random.Range(0, Chunk.CHUNK_SIZE);
                int y = Random.Range(0, Chunk.CHUNK_SIZE);

                if (chunk.AreaClear(x, y))
                {
                    if (chunk.GetTileOnTileGameObject(x, y) == null)
                    {
                        var go = Instantiate(SingleInstanceSpawnSettings.Spawns[index].Spawn);
                        _spawnsLeft[index]--;

                        go.transform.position = chunk.GetGameObject(x, y).transform.position;
                        go.transform.position = new Vector3(go.transform.position.x, go.transform.position.y, ZlayerManager.GetZFromY(go.transform.position));

                        chunk.AddObject(x, y, go);
                        Debug.Log("rare spawned!");

                        return(true);
                    }
                }
                tries++;
            } while (tries < SPAWN_MAX_TRIES);
        }
        return(false);
    }
Ejemplo n.º 4
0
    public void SpawnObject(Vector3 spawnPosition, Transform parent, TileType type, Chunk chunk, int x, int y)
    {
        if (!IsImplementedSetting(type))
        {
            type = TileType.GrassLand; // atm kaikki grasslandikisi jos ei löydy
        }

        // choose object to spawn
        TilemapObjectSpawnSettings setting;

        if (TileSpawnSettings.TryGetValue(type, out setting))
        {
            // var setting = TileSpawnSettings[type];

            if (setting.SpawnableObjects.Length != 0)
            {
                float roll       = Random.Range(0f, 100f);
                float totalCount = 0;

                for (int i = 0; i < setting.SpawnableObjects.Length; i++)
                {
                    float spawnRate = setting.SpawnableObjects[i].SpawnRate;

                    GameObject prefab = setting.SpawnableObjects[i].ObjectPrefab;
                    if (totalCount + spawnRate >= roll)
                    {
                        var go = ObjectPool.instance.GetObjectForType(prefab.name, false); // ??????????????????

                        go.transform.localScale *= Random.Range(0.90f, 1.10f);

                        float z = ZlayerManager.GetZFromY(spawnPosition); // eessä olevat puut eteen ja takana taakse
                        go.transform.position = new Vector3(spawnPosition.x, spawnPosition.y, z);

                        go.GetComponent <Resource>().Init(false);

                        chunk.AddObject(x, y, go);

                        break; // ei montaa samaan kohtaan
                    }
                    totalCount += spawnRate;
                }
            }
        }
    }
Ejemplo n.º 5
0
    public bool SpawnRares(Chunk chunk) // Spawned y/n
    {
        if (_currentSpawn >= SingleInstanceSpawnSettings.Spawns.Count || AllSpawnded)
        {
            return(false);
        }

        if (0 == Random.Range(0, SingleInstanceSpawnSettings.SpawnRate))
        {
            int  tries   = 0;
            bool Success = false;

            do
            {
                int x = Random.Range(0, Chunk.CHUNK_SIZE);
                int y = Random.Range(0, Chunk.CHUNK_SIZE);

                if (chunk.AreaClear(x, y))
                {
                    if (chunk.GetTileOnTileGameObject(x, y) == null)
                    {
                        bool searchingForSpawn = true;
                        int  index             = Random.Range(0, SingleInstanceSpawnSettings.Spawns.Count);
                        int  startIndex        = index;

                        while (searchingForSpawn)
                        {
                            if (_spawnsLeft[index] > 0)
                            {
                                var go = Instantiate(SingleInstanceSpawnSettings.Spawns[index].Spawn);
                                _spawnsLeft[index]--;

                                go.transform.position = chunk.GetGameObject(x, y).transform.position;
                                go.transform.position = new Vector3(go.transform.position.x, go.transform.position.y, ZlayerManager.GetZFromY(go.transform.position));

                                chunk.AddObject(x, y, go);
                                Success = true;
                                Debug.Log("rare spawned!");
                                // _currentSpawn++;

                                searchingForSpawn = false;
                                break;
                            }

                            index++;
                            if (index == startIndex)
                            {
                                AllSpawnded = true;
                                break;
                            }

                            if (index == SingleInstanceSpawnSettings.Spawns.Count)
                            {
                                index = 0;
                            }
                        }
                    }
                }
                tries++;
            } while (tries < SPAWN_MAX_TRIES && !Success);
            return(Success);
        }
        return(false);
    }