Example #1
0
    // Generate new world
    public void generateNewMap()
    {
        resetTileByPosDict();
        mapTileDictionary = new Dictionary<Vector3Int, MapTile>();
        Random.InitState(seedValue);

        initTileMap();

        if (autoAdjust)
        {
            seedCount = Mathf.RoundToInt(height * length / 30f);
            int offset = Mathf.RoundToInt(Random.Range(0f, 1f) * seedCount);
            seedCount += offset;

            neutralResourceCount = Mathf.RoundToInt(seedCount * 0.75f);
            alliedResourceCount = Mathf.RoundToInt(neutralResourceCount * 0.33f);
        }


        // Colocamos bloques de hierba
        System.DateTime date = System.DateTime.Now;
        List<Vector3Int> landPositions = placeSeeds();
        for (int i = 0; i < iterations; i++)
        {
            float chanceFactor = 1f / ((i + 1f) / 2f);
            if (old)
                expandLandOpt(ref landPositions, chanceFactor);
            else
                expandTileOpt(ref landPositions, SpriteRepository.TileType.TILE_TYPE_GRASS, chanceFactor);
        }
        report.landPhase = ((float)(System.DateTime.Now - date).TotalMilliseconds);

        // Limpiamos imperfecciones
        cleanImperfections(iterations);

        // Si método old
        if (old)
        {
            // Ponemos montañas y bosques
            placeMountains(iterations + 1);
            placeForests(iterations + 2);
        }
        // En caso contrario
        else
        {
            if(autoAdjust)
            {
                forestSeedCount = Mathf.RoundToInt(countGrassTiles() * 0.1f);
                mountainSeedCount = Mathf.RoundToInt(countGrassTiles() * 0.075f);
            }

            // Ponemos montañas y bosques
            date = System.DateTime.Now;
            List<Vector3Int> mountainPositions = placeSeedsByType(SpriteRepository.TileType.TILE_TYPE_MOUNTAIN, mountainSeedCount);
            
            for (int i = 0; i < mountainIterations; i++)
            {
                float chanceFactor = 1f / ((i + 1f) / 2f);
                expandTileOpt(ref mountainPositions, SpriteRepository.TileType.TILE_TYPE_MOUNTAIN, chanceFactor);
            }
            report.mountainPhase = ((float)(System.DateTime.Now - date).TotalMilliseconds);

            date = System.DateTime.Now;
            List<Vector3Int> forestPositions = placeSeedsByType(SpriteRepository.TileType.TILE_TYPE_FOREST, forestSeedCount);
            for (int i = 0; i < forestIterations; i++)
            {
                float chanceFactor = 1f / ((i + 1f) / 2f);
                expandTileOpt(ref forestPositions, SpriteRepository.TileType.TILE_TYPE_FOREST, chanceFactor);
            }
            report.forestPhase = ((float)(System.DateTime.Now - date).TotalMilliseconds);
        }

        // Colocamos las bases de los dos jugadores
        date = System.DateTime.Now;
        if (oldPlayerBasePlacement)
            placePlayersBase();
        else
            alternativePlacePlayerBase();
            
        report.playerBase = ((float)(System.DateTime.Now - date).TotalMilliseconds);

        // Colocamos las carreteras
        date = System.DateTime.Now;
        if (roads)
            traceRoads();
        report.roadTracing = ((float)(System.DateTime.Now - date).TotalMilliseconds);

        date = System.DateTime.Now;
        if (resources)
        {
            initCostMaps();

            if (oldResourcePlacemente)
                placeSymmetricResources();
            else
            {
                Debug.Log("Enter");
                placeNeutralResources();
                report.neutral = ((float)(System.DateTime.Now - date).TotalMilliseconds);

                date = System.DateTime.Now;
                placeSymmetricResources();
                report.symmetric = ((float)(System.DateTime.Now - date).TotalMilliseconds);
            }
        }
        updateInterfaceValues();
        interfaceController.mapCamera.orthographicSize = Mathf.Max(length, height) * 1.15f;

        PerformanceController.addMapPerformaceReport(report);
    }