Beispiel #1
0
    private void SetupParameters()
    {
        CASettings settings = UICASettings.instance.GetSettings();

        seed          = settings.seed;
        useRandomSeed = settings.useRandomSeed;

        columns          = settings.levelWidth;
        rows             = settings.levelHeight;
        wallsFillPercent = settings.wallFill;

        smoothingIterations = settings.iterations1;
        neighbourhoodType   = settings.ruleset1.neighbourhoodType;
        surviveMin          = settings.ruleset1.survMin;
        surviveMax          = settings.ruleset1.survMax;
        newMin = settings.ruleset1.newMin;
        newMax = settings.ruleset1.newMax;

        hybridMode = settings.enableSecondRuleset;
        smoothingIterationsHybrid = settings.iterations1;
        neighbourhoodTypeHybrid   = settings.ruleset2.neighbourhoodType;
        surviveMinHybrid          = settings.ruleset2.survMin;
        surviveMaxHybrid          = settings.ruleset2.survMax;
        newMinHybrid = settings.ruleset2.newMin;
        newMaxHybrid = settings.ruleset2.newMax;

        roomThreshold      = settings.minRoomSize;
        roomUpperThreshold = settings.maxRoomSize;
        wallThreshold      = settings.minWallSize;
        wallUpperThreshold = settings.maxWallSize;

        connectRooms = settings.enableConnections;
        if (settings.useDirectConnections)
        {
            connectionType = ConnectionType.direct;
        }
        else
        {
            connectionType = ConnectionType.straight;
        }
        connectionUpperThreshold = settings.maxLeavingConnections;
        connectionSizeFactor     = settings.connectionSizeFactor;
        maxCorridorLengthX       = settings.maxConnectionLengthX;
        maxCorridorLengthY       = settings.maxConnectionLengthY;
    }
    // Lataa tai kirjoittaa tiedostoja ja asettaa muuttujien arvot kohdilleen
    private void loadFiles()
    {
        //Debug.Log ("LOAD/WRITE ASSET FILE!");

        cellGen = Resources.LoadAssetAtPath<CASettings>(resourcePath + "CASettings.asset");

        // Ei löydetty tiedostoa, alustetaan oletusarvot ja tallennetaan
        if (cellGen == null) {
          cellGen = CreateInstance<CASettings> ();
          AssetDatabase.CreateAsset (cellGen, resourcePath + "CASettings.asset");

          cellGen.width = 32;
          cellGen.height = 32;
          cellGen.seedNumber = 0;
          cellGen.minNearbyToSpawn = 5;
          cellGen.minNearbyToLive = 5;
          cellGen.startChanceToLive = 0.7f;
          cellGen.stepCount = 10;
          AssetDatabase.SaveAssets();
          AssetDatabase.Refresh ();
        }

        settings = Resources.LoadAssetAtPath<GraduSettings>(resourcePath + "GraduSettings.asset");

        // Ei löydetty tiedostoa, alustetaan oletusarvot ja tallennetaan
        if (settings == null) {
          settings = CreateInstance<GraduSettings> ();
          AssetDatabase.CreateAsset (settings, resourcePath + "GraduSettings.asset");

          settings.filenames = new string[1];
          settings.filenames[0] = "tempMap";
          AssetDatabase.SaveAssets();
          AssetDatabase.Refresh ();
        }

        loadedMap = Resources.LoadAssetAtPath<MapScriptableObject>(resourcePath + ""+settings.filenames[0]+".asset");

        // Ei löydetty tiedostoa, alustetaan oletusarvot ja tallennetaan
        if (loadedMap == null) {
          Debug.Log ("WRITE MAP FILE!");

          loadedMap = CreateInstance<MapScriptableObject> ();
          AssetDatabase.CreateAsset (loadedMap, resourcePath + ""+settings.filenames[0]+".asset");

          loadedMap.layerBaseMap = new List<Cell>();
          loadedMap.layerFreeHand = new List<Cell>();
          loadedMap.openSides = new bool[]{false,false,false,false};

          for (int i = 0; i < cellGen.width; i++) {
        for (int j = 0; j < cellGen.height; j++) {
          loadedMap.layerBaseMap.Add(new Cell(map[i,j]));
        }
          }

          for (int i = 0; i < cellGen.width; i++) {
        for (int j = 0; j < cellGen.height; j++) {
          loadedMap.layerFreeHand.Add(new Cell(mapFreehand[i,j]));
        }
          }

          AssetDatabase.CreateAsset (loadedMap, resourcePath + ""+settings.filenames[0]+".asset");
          AssetDatabase.SaveAssets ();
          AssetDatabase.Refresh ();
        }
        else {
          Debug.Log ("LOAD MAP FILE!");

          map = new int[cellGen.width,cellGen.height];
          mapFreehand = new int[cellGen.width,cellGen.height];
          openSides = loadedMap.openSides;

          int j = 0;
          int k = 0;

          // Täytetään taulukko tallennetun tiedon perusteella
          foreach (Cell c in loadedMap.layerBaseMap) {
        map[k,j] = c.state;
        j = j + 1;

        if (j >= cellGen.height) {
          j = 0;
          k++;
        }
          }

          j = 0;
          k = 0;

          // Täytetään taulukko tallennetun tiedon perusteella
          foreach (Cell c in loadedMap.layerFreeHand) {
        mapFreehand[k,j] = c.state;
        j = j + 1;

        if (j >= cellGen.height) {
          j = 0;
          k++;
        }
          }
        }
    }