예제 #1
0
    private void GetMapInstance(Scene scene)
    {
        var scenepath     = scene.path;
        var directorypath = scenepath.Substring(0, scenepath.LastIndexOf('.'));
        var assetpath     = string.Format("{0}/{1}_{2}.asset", directorypath, scene.name, "Map");

        instance = AssetDatabase.LoadAssetAtPath <MapScriptableObject>(assetpath);
        if (instance == null)
        {
            instance       = CreateInstance <MapScriptableObject>();
            instance.cells = new int[instance.length * instance.width / MapScriptableObject.CELLS_PER_INT];

            if (!Directory.Exists(directorypath))
            {
                Directory.CreateDirectory(directorypath);
            }

            AssetDatabase.CreateAsset(instance, string.Format("{0}", assetpath));
        }

        length_scr = instance.length;
        width_scr  = instance.width;
    }
예제 #2
0
    // 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++;
        }
          }
        }
    }