Example #1
0
    // Use this for initialization
    void Start()
    {
        Random.InitState(randomSeed);

        parentGen = GameObject.Find("Main").GetComponent <LevelGen>();
        iStats    = parentGen.islandStats[iStatsIndex];
        SetBaseHeight(iStats.baseLayerHeight);


        islandUpdater = GetComponent <IslandUpdater>();

        transform.position = Random.onUnitSphere;
        farHolder          = transform.Find("Far");
        closeHolder        = transform.Find("Close");

        cloudHolder            = transform.Find("CloudHolder");
        cloudHolder.localScale = Vector3.one * radius / 2;
        cloudCover             = cloudHolder.GetComponentInChildren <ParticleSystem>();
        cloudHolder.gameObject.SetActive(false); //TODO Re enable if this ever works well enough

        ParticleSystem.MainModule cloudCoverMain = cloudCover.main;
        cloudCoverMain.startSizeMultiplier *= radius;

        spin       = Random.Range(0.0f, 360.0f);
        spinSpeed  = Random.Range(-maxSpinSpeed, maxSpinSpeed);
        timeRecalc = Random.Range(0, parentGen.islandMoveIntervals);

        foreach (PerlinLayer layer in iStats.layerStats)
        {
            layer.Set(); //TODO maybe save seperatley incase we need to reaccess this (it will get overwritten by the next island)
        }

        GenerateLowQuality();
        tiles = new HexType[iStats.layerStats.Count + iStats.cityLayerStats.Count, size, size];
        GenerateBaseHexes();
        //TODO put in a loop
        if (iStats.cityLayerStats.Count != 0)
        {
            for (int index = 0; index < iStats.cityLayerStats.Count; index++)
            {
                iStats.cityLayerStats[index].GenerateHuts(iStats.layerStats.Count + index, tiles);
                iStats.cityLayerStats[index].GenerateConnections(iStats.layerStats.Count + index, tiles);
                iStats.cityLayerStats[index].RemoveSingleHuts(iStats.layerStats.Count + index, tiles);
                iStats.cityLayerStats[index].FillHoles(iStats.layerStats.Count + index, tiles);
                iStats.cityLayerStats[index].RemoveIfNoBottom(iStats.layerStats.Count + index, tiles);
                if (index != 0)
                {
                    iStats.cityLayerStats[index - 1].GenerateStairs(iStats.layerStats.Count + index - 1, tiles);
                }
                //iStats.cityLayerStats [index].RemoveSingleHuts (iStats.layerStats.Count + index, tiles);
            }
        }
        DrawBaseHexes();
        if (iStats.cityLayerStats.Count != 0)
        {
            DrawCityHexes();
        }

        CapsuleCollider cTemp = gameObject.GetComponent <CapsuleCollider>();

        cTemp.radius = radius + 5;
        cTemp.height = cTemp.radius * 2f;

        OcclusionArea oTemp = gameObject.GetComponent <OcclusionArea>();

        oTemp.size = Vector3.one * (radius + 1) * 2;

        islandUpdater.SetExpectedNumOfWeapons();

        //TODO Fix to allow more or less islands added.
        if (!isServer)
        {
            parentGen.islandStats[iStatsIndex].islands.Add(this);
            parentGen.AddOneIsland(this);
        }

        SetFar(true);

        Random.InitState((int)System.DateTime.Now.Ticks);

        if (isServer)
        {
            UpdateToSpherePosition(true);
        }
    }