Пример #1
0
        public static void SettingLengthTest()
        {
            var instance            = new TileSetSetting();
            var changedPropertyList = new List <string>();

            instance.PropertyChanged += (sender, args) => { changedPropertyList.Add(args.PropertyName); };

            var length = 0;

            var errorOccured = false;

            try
            {
                length = instance.SettingLength;
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーが発生しないこと
            Assert.IsFalse(errorOccured);

            // 取得した結果が意図した値であること
            Assert.AreEqual(length, instance.TileTagNumberList.Count);
            Assert.AreEqual(length, instance.TilePathSettingList.Count);

            // プロパティ変更通知が発火していないこと
            Assert.AreEqual(changedPropertyList.Count, 0);
        }
Пример #2
0
        public static void TilePathSettingListTest()
        {
            var instance            = new TileSetSetting();
            var changedPropertyList = new List <string>();

            instance.PropertyChanged += (sender, args) => { changedPropertyList.Add(args.PropertyName); };

            var errorOccured = false;

            try
            {
                var _ = instance.TilePathSettingList;
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーが発生しないこと
            Assert.IsFalse(errorOccured);

            // プロパティ変更通知が発火していないこと
            Assert.AreEqual(changedPropertyList.Count, 0);
        }
Пример #3
0
        private TileSetSetting ReadOneTileSetSetting(BinaryReadStatus readStatus)
        {
            // 設定名
            ReadName(readStatus, out var name);

            // 基本タイルセットファイル名
            ReadBaseTileSetFileName(readStatus, out var baseTileSetFileName);

            // オートタイルファイル名リスト
            ReadAutoTileSetFileNameList(readStatus, AutoTileFileNameList.MaxCapacity, out var autoTileFileNames);

            // セパレータ
            ReadSeparator(readStatus);

            // タグ番号リスト
            ReadTagNumberList(readStatus, out var tagNumbers);

            // セパレータ
            ReadSeparator(readStatus);

            // タイル設定リスト
            ReadTilePathSettingList(readStatus, out var tilePathSettings);

            var result = new TileSetSetting(new TileTagNumberList(tagNumbers),
                                            new TilePathSettingList(tilePathSettings),
                                            new AutoTileFileNameList(autoTileFileNames))
            {
                Name = name,
                BaseTileSetFileName = baseTileSetFileName
            };

            return(result);
        }
Пример #4
0
        public static void ConstructorTest(
            int tileTagNumberLength, int tilePathSettingLength,
            int autoTileFileNameLength, bool isError)
        {
            TileSetSetting instance          = null;
            var            tileTagNumbers    = MakeTileTagNumberList(tileTagNumberLength);
            var            tilePathSettings  = MakeTilePathSettingList(tilePathSettingLength);
            var            autoTileFileNames = MakeAutoTileFileNameList(autoTileFileNameLength);

            var errorOccured = false;

            try
            {
                instance = new TileSetSetting(tileTagNumbers, tilePathSettings, autoTileFileNames);
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーフラグが一致すること
            Assert.AreEqual(errorOccured, isError);

            if (errorOccured)
            {
                return;
            }

            // セットした値と各プロパティの値が一致すること
            if (tileTagNumbers != null)
            {
                Assert.IsTrue(instance.TileTagNumberList.Equals(tileTagNumbers));
            }
            else
            {
                Assert.NotNull(instance.TileTagNumberList);
            }

            if (tilePathSettings != null)
            {
                Assert.IsTrue(instance.TilePathSettingList.Equals(tilePathSettings));
            }
            else
            {
                Assert.NotNull(instance.TilePathSettingList);
            }

            if (autoTileFileNames != null)
            {
                Assert.IsTrue(instance.AutoTileFileNameList.Equals(autoTileFileNames));
            }
            else
            {
                Assert.NotNull(instance.AutoTileFileNameList);
            }
        }
Пример #5
0
        public static void SerializeTest()
        {
            var target = new TileSetSetting
            {
                Name = "Name"
            };
            var clone = DeepCloner.DeepClone(target);

            Assert.IsTrue(clone.Equals(target));
        }
Пример #6
0
        public static void TileSetSettingTest(TileSetSetting setting, bool isError)
        {
            var instance            = new TileSetFileData();
            var changedPropertyList = new List <string>();

            instance.PropertyChanged += (sender, args) => { changedPropertyList.Add(args.PropertyName); };

            var errorOccured = false;

            try
            {
                instance.TileSetSetting = setting;
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーフラグが一致すること
            Assert.AreEqual(errorOccured, isError);

            if (!errorOccured)
            {
                var setValue = instance.TileSetSetting;

                // セットした値と取得した値が一致すること
                Assert.IsTrue(setValue.Equals(setting));
            }

            // 意図したとおりプロパティ変更通知が発火していること
            if (errorOccured)
            {
                Assert.AreEqual(changedPropertyList.Count, 0);
            }
            else
            {
                Assert.AreEqual(changedPropertyList.Count, 1);
                Assert.IsTrue(changedPropertyList[0].Equals(nameof(TileSetFileData.TileSetSetting)));
            }
        }
Пример #7
0
        // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
        //     ReadMethod
        // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

        /// <summary>
        /// タイルセット設定一つ
        /// </summary>
        /// <param name="status">読み込み経過状態</param>
        /// <exception cref="InvalidOperationException">バイナリデータがファイル仕様と異なる場合</exception>
        private TileSetSetting ReadOneTileSetSetting(FileReadStatus status)
        {
            Logger.Debug(FileIOMessage.StartCommonRead(typeof(TileSetSettingReader), "タイルセット設定"));

            // 設定名
            ReadName(status, out var name);

            // 基本タイルセットファイル名
            ReadBaseTileSetFileName(status, out var baseTileSetFileName);

            // オートタイルファイル名リスト
            ReadAutoTileSetFileNameList(status, AutoTileFileNameList.MaxCapacity, out var autoTileFileNames);

            // セパレータ
            ReadSeparator(status);

            // タグ番号リスト
            ReadTagNumberList(status, out var tagNumbers);

            // セパレータ
            ReadSeparator(status);

            // タイル設定リスト
            ReadTilePathSettingList(status, out var tilePathSettings);

            var result = new TileSetSetting(new TileTagNumberList(tagNumbers),
                                            new TilePathSettingList(tilePathSettings),
                                            new AutoTileFileNameList(autoTileFileNames))
            {
                Name = name,
                BaseTileSetFileName = baseTileSetFileName
            };

            Logger.Debug(FileIOMessage.EndCommonRead(typeof(TileSetSettingReader), "タイルセット設定"));

            return(result);
        }
Пример #8
0
        /// <summary>
        /// タイルセット設定
        /// </summary>
        /// <param name="status"></param>
        /// <param name="setting"></param>
        private void ReadTileSetSetting(FileReadStatus status, out TileSetSetting setting)
        {
            var reader = new TileSetSettingReader(status);

            setting = reader.Read();
        }
Пример #9
0
    async void RenderMap()
    {
        DatabaseMergedData systemDB = await ReadSystemDB();

        var mapDataList = systemDB.GetDataDescList(0);

        if (mapNo >= mapDataList.Count)
        {
            return;
        }

        string  mapPath   = dataPath + mapDataList[mapNo].ItemValueList[0].StringValue.ToString();
        var     mpsReader = new MpsFileReader();
        MapData mapData   = await mpsReader.ReadFileAsync(mapPath);

        string      tileSetPath = dataPath + "BasicData/TileSetData.dat";
        var         reader      = new TileSetDataFileReader();
        TileSetData setData     = await reader.ReadFileAsync(tileSetPath);

        TileSetSetting tileSetting = setData.TileSetSettingList[mapData.TileSetId];

        ReadBaseTileTexture(tileSetting.BaseTileSetFileName);

        ReadAutoTileTextures(tileSetting.AutoTileFileNameList.ToArray());

        Texture2D mapTexture
            = new Texture2D(mapData.MapSizeWidth * chipSize, mapData.MapSizeHeight * chipSize);

        for (int i = 0; i < mapData.MapSizeHeight; i++)
        {
            for (int j = 0; j < mapData.MapSizeWidth; j++)
            {
                for (int k = 0; k < 3; k++)
                {
                    int id = mapData.GetLayer(k).Chips[j][i];
                    if (mapData.GetLayer(k).Chips[j][i].IsAutoTile)
                    {
                        RenderAutoTile(mapTexture, j, i, id);
                    }
                    else
                    {
                        RenderNormalTile(mapTexture, j, i, id);
                    }
                }
            }
        }

        for (int i = 0; i < mapData.MapEvents.Count; i++)
        {
            int          x            = mapData.MapEvents[i].Position.X;
            int          y            = mapData.MapEvents[i].Position.Y;
            MapEventPage mapEventPage = mapData.MapEvents[i].MapEventPageList[0];
            if (mapEventPage.GraphicInfo.IsGraphicTileChip)
            {
                int tileId = mapEventPage.GraphicInfo.GraphicTileId;
                RenderNormalTile(mapTexture, x, y, tileId);
            }
            else if (!string.IsNullOrEmpty(mapEventPage.GraphicInfo.CharaChipFilePath))
            {
                string graphicPath = dataPath + mapEventPage.GraphicInfo.CharaChipFilePath;
                Debug.Log(graphicPath);
                CharaChipDirection charaChipDirection = mapEventPage.GraphicInfo.InitDirection;
                Texture2D          charaChipTexture   = new Texture2D(1, 1);
                byte[]             bytes = System.IO.File.ReadAllBytes(graphicPath);
                charaChipTexture.LoadImage(bytes);
                charaChipTexture.filterMode = FilterMode.Point;
                RenderCharaChip(mapTexture, x, y, charaChipTexture, charaChipDirection);
            }
        }

        mapTexture.Apply();
        mapTexture.filterMode = FilterMode.Point;

        Sprite sprite = Sprite.Create(mapTexture,
                                      new Rect(0.0f, 0.0f, mapTexture.width, mapTexture.height), new Vector2(0.5f, 0.5f), 1.0f);

        mapSprite.sprite = sprite;
    }
Пример #10
0
        public static void ChangeSettingLengthTest()
        {
            var instance            = new TileSetSetting();
            var changedPropertyList = new List <string>();

            instance.PropertyChanged += (sender, args) => { changedPropertyList.Add(args.PropertyName); };
            var changedTileTagNumberListPropertyList = new List <string>();

            instance.TileTagNumberList.PropertyChanged += (sender, args) =>
            {
                changedTileTagNumberListPropertyList.Add(args.PropertyName);
            };
            var changedTileTagNumberListCollectionList = new List <NotifyCollectionChangedEventArgs>();

            instance.TileTagNumberList.CollectionChanged += (sender, args) =>
            {
                changedTileTagNumberListCollectionList.Add(args);
            };
            var changedTilePathSettingListPropertyList = new List <string>();

            instance.TilePathSettingList.PropertyChanged += (sender, args) =>
            {
                changedTilePathSettingListPropertyList.Add(args.PropertyName);
            };
            var changedTilePathSettingListCollectionList = new List <NotifyCollectionChangedEventArgs>();

            instance.TilePathSettingList.CollectionChanged += (sender, args) =>
            {
                changedTilePathSettingListCollectionList.Add(args);
            };

            const int length = 30;

            var errorOccured = false;

            try
            {
                instance.ChangeSettingLength(length);
            }
            catch (Exception ex)
            {
                logger.Exception(ex);
                errorOccured = true;
            }

            // エラーが発生しないこと
            Assert.IsFalse(errorOccured);

            // 取得した結果が意図した値であること
            Assert.AreEqual(length, instance.SettingLength);

            // 意図したとおりプロパティ変更通知が発火していること
            Assert.AreEqual(changedPropertyList.Count, 0);
            Assert.AreEqual(changedTileTagNumberListPropertyList.Count, 2);
            Assert.IsTrue(changedTileTagNumberListPropertyList[0].Equals(nameof(instance.TileTagNumberList.Count)));
            Assert.IsTrue(changedTileTagNumberListPropertyList[1].Equals(ListConstant.IndexerName));
            Assert.AreEqual(changedTileTagNumberListCollectionList.Count, 1);
            Assert.IsTrue(changedTileTagNumberListCollectionList[0].Action == NotifyCollectionChangedAction.Add);
            Assert.AreEqual(changedTilePathSettingListPropertyList.Count, 2);
            Assert.IsTrue(changedTilePathSettingListPropertyList[0].Equals(nameof(instance.TilePathSettingList.Count)));
            Assert.IsTrue(changedTilePathSettingListPropertyList[1].Equals(ListConstant.IndexerName));
            Assert.AreEqual(changedTilePathSettingListCollectionList.Count, 1);
            Assert.IsTrue(changedTilePathSettingListCollectionList[0].Action == NotifyCollectionChangedAction.Add);
        }
Пример #11
0
    void RenderMap()
    {
        MapData mapData = CoreData.Instance.mapDataArray[CoreData.Instance.currentMapID];

        TileSetSetting tileSetting = CoreData.Instance.tileSetData.TileSetSettingList[mapData.TileSetId];

        ReadBaseTileTexture(tileSetting.BaseTileSetFileName);

        ReadAutoTileTextures(tileSetting.AutoTileFileNameList.ToArray());

        Texture2D mapTexture
            = new Texture2D(mapData.MapSizeWidth * chipSize, mapData.MapSizeHeight * chipSize);

        for (int i = 0; i < mapTexture.height; i++)
        {
            for (int j = 0; j < mapTexture.width; j++)
            {
                mapTexture.SetPixel(j, i, new Color(0, 0, 0));
            }
        }

        for (int i = 0; i < mapData.MapSizeHeight; i++)
        {
            for (int j = 0; j < mapData.MapSizeWidth; j++)
            {
                for (int k = 0; k < 3; k++)
                {
                    int id = mapData.GetLayer(k).Chips[j][i];
                    if (mapData.GetLayer(k).Chips[j][i].IsAutoTile)
                    {
                        RenderAutoTile(mapTexture, j, i, id);
                    }
                    else
                    {
                        RenderNormalTile(mapTexture, j, i, id);
                    }
                }
            }
        }

        for (int i = 0; i < mapData.MapEvents.Count; i++)
        {
            int          x            = mapData.MapEvents[i].Position.X;
            int          y            = mapData.MapEvents[i].Position.Y;
            MapEventPage mapEventPage = mapData.MapEvents[i].MapEventPageList[0];
            if (mapEventPage.GraphicInfo.IsGraphicTileChip)
            {
                int tileId = mapEventPage.GraphicInfo.GraphicTileId;
                RenderNormalTile(mapTexture, x, y, tileId);
            }
            else if (!string.IsNullOrEmpty(mapEventPage.GraphicInfo.CharaChipFilePath))
            {
                string graphicPath = dataPath + mapEventPage.GraphicInfo.CharaChipFilePath;
                Debug.Log(graphicPath);
                CharaChipDirection charaChipDirection = mapEventPage.GraphicInfo.InitDirection;
                Texture2D          charaChipTexture   = new Texture2D(1, 1);
                byte[]             bytes = System.IO.File.ReadAllBytes(graphicPath);
                charaChipTexture.LoadImage(bytes);
                charaChipTexture.filterMode = FilterMode.Point;
                RenderCharaChip(mapTexture, x, y, charaChipTexture, charaChipDirection);
            }
        }

        mapTexture.Apply();
        mapTexture.filterMode = FilterMode.Point;

        Sprite sprite = Sprite.Create(mapTexture,
                                      new Rect(0.0f, 0.0f, mapTexture.width, mapTexture.height), new Vector2(0.5f, 0.5f), 1.0f);

        /*sprite = Sprite.Create(baseTileTexture,
         *  new Rect(0, 0, baseTileTexture.width, baseTileTexture.height), new Vector2(0.5f, 0.5f), 1.0f);*/
        mapSprite.sprite = sprite;
    }