コード例 #1
0
ファイル: LevelTilemap.cs プロジェクト: claudyy/TileMap
    public void Save()
    {
        var st = new TileMapSaveData();

        st.sizeX = sizeX;
        st.sizeY = sizeY;
        st.tiles = new TileSaveData[sizeX + sizeY * sizeX];
        UnityEngine.Debug.Log(sizeX + sizeY * sizeX);
        UnityEngine.Debug.Log(st.tiles.Length);

        int           cx   = 0;
        int           cy   = 0;
        LevelTileData tile = null;

        for (int x = 0; x < sizeX; x++)
        {
            for (int y = 0; y < sizeY; y++)
            {
                cx   = PosToChunk(x, y).x;
                cy   = PosToChunk(x, y).y;
                tile = GetTileMap(cx, cy).GetTile(PosToPosInChunk(x, y).x, PosToPosInChunk(x, y).y).data;
                st.tiles[x + y * sizeX] = new TileSaveData(tile);
            }
        }

        XmlSerializer serializer = new XmlSerializer(typeof(TileMapSaveData));
        FileStream    stream     = new FileStream(saveUtility.GetPath(), FileMode.Create);

        serializer.Serialize(stream, st);
        stream.Close();
    }
コード例 #2
0
ファイル: RoomTileMapUtility.cs プロジェクト: claudyy/TileMap
 void ApplyToRoom(Structure_BaseRoomData room, TileMapSaveData saveFile)
 {
     room.CreateRoomFromSaveFill(saveFile);
     room.floor = roomFloor;
     room.wall  = roomWall;
     room.UpdateDoors();
 }
コード例 #3
0
    public void CreateTextureFromSaveFile(TileMapSaveData st, SaveUtility saveUtility, LevelTilemap target)
    {
        Texture2D tex   = new Texture2D(st.sizeX, st.sizeY);
        var       datas = target.GetTileLevelDataFromSaveFile(st);

        for (int x = 0; x < st.sizeX; x++)
        {
            for (int y = 0; y < st.sizeY; y++)
            {
                tex.SetPixel(x, y, datas[x + y * st.sizeX].editorColor);
            }
        }
        // Encode texture into PNG
        byte[] bytes = tex.EncodeToPNG();

        //UnityEditor.AssetDatabase.CreateAsset(tex, "Assets/"+saveUtility.fileName+".asset");

        Object.DestroyImmediate(tex);

        //var asset = UnityEditor.AssetDatabase.LoadAssetAtPath<Texture2D>(saveUtility.path + saveUtility.fileName + ".png");

        //asset.filterMode = FilterMode.Point;
        File.WriteAllBytes(saveUtility.GetPath("png"), bytes);
        UnityEditor.AssetDatabase.Refresh();
    }
コード例 #4
0
ファイル: LevelTilemap.cs プロジェクト: claudyy/TileMap
    public void CreateSaveFile(TileMapSaveData st, SaveUtility saveUtility)
    {
        XmlSerializer serializer = new XmlSerializer(typeof(TileMapSaveData));
        FileStream    stream     = new FileStream(saveUtility.GetPath(), FileMode.Create);

        serializer.Serialize(stream, st);
        stream.Close();
# if UNITY_EDITOR
コード例 #5
0
ファイル: RoomTileMapUtility.cs プロジェクト: claudyy/TileMap
    public void CreateRoom(TileMapSaveData saveFile)
    {
        var room = new BaseFixedRoomData();

        room.name = saveUtility.fileName;
        ApplyToRoom(room, saveFile);
        UnityEditor.AssetDatabase.CreateAsset(room, saveUtility.GetAssetPath("asset"));
        //UnityEditor.AssetDatabase.SaveAssets();
    }
コード例 #6
0
ファイル: LevelTilemap.cs プロジェクト: claudyy/TileMap
    public LevelTileData[] GetTileLevelDataFromSaveFile(TileMapSaveData st)
    {
        var allData = Resources.LoadAll("", typeof(LevelTileData)).Cast <LevelTileData>().ToArray();
        var tiles   = new LevelTileData[st.sizeX * st.sizeY];

        for (int x = 0; x < st.sizeX; x++)
        {
            for (int y = 0; y < st.sizeY; y++)
            {
                tiles[x + y * st.sizeX] = GetDataFromList(st.tiles[x + y * st.sizeX].tileDataName, allData);
            }
        }
        return(tiles);
    }
コード例 #7
0
    public void CreateRoomFromSaveFill(TileMapSaveData saveFile)
    {
        sizeX = saveFile.sizeX;
        sizeY = saveFile.sizeY;
        GenerateUtility utility = new GenerateUtility();

        roomTileList = new LevelTileData[sizeX * sizeY];
        for (int x = 0; x < sizeX; x++)
        {
            for (int y = 0; y < sizeY; y++)
            {
                roomTileList[x + y * sizeX] = utility.GetDataFromName(saveFile.tiles[x + y * sizeX].tileDataName);
            }
        }
    }
コード例 #8
0
ファイル: LevelTilemap.cs プロジェクト: claudyy/TileMap
    public void EditorApplySaveFileToTilmap(TileMapSaveData st)
    {
        ClearTilemap();
        var           allData = Resources.LoadAll("", typeof(LevelTileData)).Cast <LevelTileData>().ToArray();
        LevelTileData tile    = null;
        Vector3Int    pos     = new Vector3Int(0, 0, 0);

        for (int x = 0; x < st.sizeX; x++)
        {
            for (int y = 0; y < st.sizeY; y++)
            {
                tile = GetDataFromList(st.tiles[x + y * st.sizeX].tileDataName, allData);
                EditorApplySaveFileToTile(x, y, tile);
            }
        }
    }
コード例 #9
0
ファイル: BaseLevelGenerator.cs プロジェクト: claudyy/TileMap
    public TileMapSaveData GetNewSaveFile()
    {
        var file = new TileMapSaveData();

        file.sizeX = sizeX;
        file.sizeY = sizeY;
        List <TileSaveData> saveTiles = new List <TileSaveData>();

        for (int y = 0; y < sizeY; y++)
        {
            for (int x = 0; x < sizeX; x++)
            {
                saveTiles.Add(new TileSaveData(GetTile(x, y)));
            }
        }
        file.tiles = saveTiles.ToArray();
        return(file);
    }
コード例 #10
0
    public TileMapSaveData CreateSaveDataFromTexutre(Texture2D loadTexture)
    {
        var             allData = Resources.LoadAll("", typeof(LevelTileData)).Cast <LevelTileData>().ToArray();
        TileMapSaveData st      = new TileMapSaveData();

        st.sizeX = loadTexture.width;
        st.sizeY = loadTexture.height;
        TileSaveData[] datas = new TileSaveData[st.sizeX * st.sizeY];
        for (int x = 0; x < loadTexture.width; x++)
        {
            for (int y = 0; y < loadTexture.height; y++)
            {
                datas[x + y * loadTexture.width] = GetDataFromColor(loadTexture.GetPixel(x, y), allData);
            }
        }
        st.tiles = datas;
        return(st);
    }
コード例 #11
0
ファイル: LevelTilemap.cs プロジェクト: claudyy/TileMap
    public void Load()
    {
        XmlSerializer serializer = new XmlSerializer(typeof(TileMapSaveData));

        if (Application.isEditor == false)
        {
            TextAsset   textAsset = (TextAsset)Resources.Load(saveUtility.fileName);
            XmlDocument xmldoc    = new XmlDocument();
            xmldoc.LoadXml(textAsset.text);
            XmlReader       reader = new XmlNodeReader(xmldoc);
            TileMapSaveData result = (TileMapSaveData)serializer.Deserialize(reader);

            Load(result);
            return;
        }
        FileStream stream = new FileStream(saveUtility.GetPath(), FileMode.Open);



        var st = serializer.Deserialize(stream) as TileMapSaveData;

        stream.Close();
        Load(st);
    }
コード例 #12
0
ファイル: LevelTilemap.cs プロジェクト: claudyy/TileMap
    public TileMapSaveData GetSaveDataFromTileMap()
    {
        var             size = GetTileMapSize();
        TileMapSaveData st   = new TileMapSaveData();

        st.sizeX = size.x;
        st.sizeY = size.y;
        Vector3Int pos = new Vector3Int(0, 0, 0);

        TileSaveData[] datas   = new TileSaveData[size.x * size.y];
        var            allData = Resources.LoadAll("", typeof(LevelTileData)).Cast <LevelTileData>().ToArray();

        for (int x = 0; x < size.x; x++)
        {
            for (int y = 0; y < size.y; y++)
            {
                pos.x = x;
                pos.y = y;
                datas[x + y * size.x] = new TileSaveData(LoadDataFromTileMap(pos, allData));
            }
        }
        st.tiles = datas;
        return(st);
    }
コード例 #13
0
ファイル: LevelTilemap.cs プロジェクト: claudyy/TileMap
    public void Load(TileMapSaveData st)
    {
        if (updateVisibleCoroutine != null)
        {
            StopCoroutine(updateVisibleCoroutine);
        }
        ClearTilemap();
        Resize(st.sizeX, st.sizeY);//inits chunk
        LevelTileData tile = null;
        //UnityEngine.Debug.Log(sizeX + sizeY * sizeX);
        //UnityEngine.Debug.Log(st.tiles.Length);
        StringBuilder str = new StringBuilder();
        Stopwatch     w   = new Stopwatch();



        str.Append("Load Data : ");
        w.Reset();
        w.Start();
        var allData = Resources.LoadAll("", typeof(LevelTileData)).Cast <LevelTileData>().ToArray();

        for (int x = 0; x < st.sizeX; x++)
        {
            for (int y = 0; y < st.sizeY; y++)
            {
                tile = GetDataFromList(st.tiles[x + y * st.sizeX].tileDataName, allData);
                OverrideDataNameTile(x, y, tile);
            }
        }
        str.AppendLine(" Duration: " + w.Elapsed);
        //UpdatePrefabFromData();
        //GenerateGridFromPrefab();
        str.Append("Init: ");
        w.Reset();
        w.Start();
        InitChunkFromDataName();
        Init();
        str.AppendLine(" Duration: " + w.Elapsed);

        str.Append("TileMap Cleare : ");
        w.Reset();
        w.Start();
        //tilemap.ClearAllTiles();
        str.AppendLine(" Duration: " + w.Elapsed);

        str.Append("UpdateView : ");
        w.Reset();
        w.Start();
        if (onLoaded != null)
        {
            onLoaded(this);
        }

        //UpdateViews();
        if (loadAllChunks)
        {
            for (int x = 0; x < levelChunkX; x++)
            {
                for (int y = 0; y < levelChunkY; y++)
                {
                    LoadChunkFirstTime(x, y);
                }
            }
        }



        str.AppendLine(" Duration: " + w.Elapsed);
#if UNITY_EDITOR
        UnityEngine.Debug.Log(str.ToString());
#endif
        //if(Application.isEditor == false) {
        updateVisibleCoroutine = StartCoroutine(UpdateVisible());
        updateAllCoroutine     = StartCoroutine(UpdateAllTiles());
        //}
    }