예제 #1
0
    void StartMap()
    {
        Debug.Log("START MAP");
        if (m_useRandomMap)
        {
            m_mapSeed = Random.Range(0, System.Int32.MaxValue);
        }


        // Randomize 90 deg increments
        m_orientationOddsTable = new OddsTable();
        m_orientationOddsTable.Add("0", 5, 0);
        m_orientationOddsTable.Add("90", 5, 90);
        m_orientationOddsTable.Add("180", 5, 180);
        m_orientationOddsTable.Add("270", 5, 270);

        // Define the odds for the tile damage on the very bottom of the path damage
        m_tileOddsTable = new OddsTable();
        m_tileOddsTable.Add("Full", 5, m_pathTile1);
        m_tileOddsTable.Add("Damaged 75%", 5, m_pathTile2);
        m_tileOddsTable.Add("Damaged 50%", 2, m_pathTile3);
        m_tileOddsTable.Add("Damaged 25%", 2, m_pathTile4);

        // Define the odds of the shrubbary
        m_treeOddsTable = new OddsTable();
        m_treeOddsTable.Add("CherryTree", 3, m_treeCherry);
        m_treeOddsTable.Add("Trees1", 4, m_trees1);
        m_treeOddsTable.Add("Trees2", 4, m_trees2);
        m_treeOddsTable.Add("Trees3", 4, m_trees3);
        m_treeOddsTable.Add("Trees4", 0.2F, m_trees4);
        m_treeOddsTable.Add("Trees5", 3, m_trees4);

        m_bushOddsTable = new OddsTable();
        m_bushOddsTable.Add("Bush1", 4, m_bush1);
        m_bushOddsTable.Add("Bush2", 4, m_bush2);
        m_bushOddsTable.Add("Bush3", 4, m_bush3);
        m_bushOddsTable.Add("Bush4", 4, m_bush4);
        m_bushOddsTable.Add("Bush5", 4, m_bush5);
        m_bushOddsTable.Add("Crystals1", 1F, m_crystals1);



        // Since perlin noise has an effect have a high chance of having fire and tent together
        m_objectOddsTable = new OddsTable();
        int   n           = 0;
        int   times       = 30;
        float campFireSum = 1.5f;
        float tentSum     = 2.0f;
        float nothingSum  = 2.0f;
        float campfire    = campFireSum / times;
        float tent        = tentSum / times;
        float nothing     = nothingSum / times;

        m_objectOddsTable.Add("Nothing" + (++n), 0.5F, null);
        for (int i = 0; i < times; ++i)
        {
            m_objectOddsTable.Add("Nothing" + (++n), nothing, null);
            m_objectOddsTable.Add("CampFire" + (++n), campfire, m_campFire1);
            m_objectOddsTable.Add("Tent" + (++n), tent, m_tent1);
        }
        m_objectOddsTable.Add("Nothing" + (++n), 0.5F, null);



        m_shrubOddsTable = new OddsTable();
        //m_shrubOddsTable.Add("BlankGrass1", 3, m_blankGrass1); // subtle difference in texture
        m_shrubOddsTable.Add("Grass1", 3, m_grass1);
        m_shrubOddsTable.Add("Grass2", 2, m_grass2);
        m_shrubOddsTable.Add("Grass3", 3, m_grass3);



        m_environmentOddsTable = new OddsTable();
        m_environmentOddsTable.Add("Nothing", 5, null);
        m_environmentOddsTable.Add("Shrubs", 20, m_shrubOddsTable);
        m_environmentOddsTable.Add("Camp", 20, m_objectOddsTable);
        m_environmentOddsTable.Add("Bush", 30, m_bushOddsTable);
        m_environmentOddsTable.Add("Trees", 80, m_treeOddsTable);

        if (m_useRandomMap)
        {
            // Apply a random map template
            m_currentMapTemplate = GenerateMapTemplateFromSeed(m_mapSeed);
            m_mapSeed            = m_currentMapTemplate.GetMapSeed();
        }
        else
        {
            m_currentMapTemplate = GenerateMapTemplateFromSeed(m_mapSeed);

            // Load map template from file
            //m_currentMapTemplate = LoadMapTemplateFromFile("defaultMap.json");
        }

        ApplyTemplateToMap(m_currentMapTemplate);

        if (m_waypoints != null)
        {
            m_waypoints.CreateWaypoints();
        }
    }