/// <summary>
        /// メモ前の文字列
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="commonEvent">結果格納インスタンス</param>
        private void ReadBeforeMemoString(BinaryReadStatus readStatus, CommonEvent commonEvent)
        {
            var str = readStatus.ReadString();

            commonEvent.Description = str.String;
            readStatus.AddOffset(str.ByteLength);
        }
        public async Task <TFile> ReadFileAsync(string filePath)
        {
            byte[] rawData = await FetchFile(filePath);

            ReadStatus = new BinaryReadStatus(rawData);
            return(Read());
        }
Beispiel #3
0
        /// <summary>
        /// 特殊指定数値パラメータ
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <returns>特殊指定数値パラメータリスト</returns>
        private List <List <DatabaseValueCaseNumber> > ReadSpecialNumberValue(BinaryReadStatus readStatus)
        {
            var length = readStatus.ReadInt();

            readStatus.IncreaseIntOffset();

            var result = new List <List <DatabaseValueCaseNumber> >();

            for (var i = 0; i < length; i++)
            {
                var descriptionLength = readStatus.ReadInt();
                readStatus.IncreaseIntOffset();

                var paramList = new List <DatabaseValueCaseNumber>();
                for (var j = 0; j < descriptionLength; j++)
                {
                    var value = readStatus.ReadInt();
                    readStatus.IncreaseIntOffset();

                    paramList.Add(value);
                }

                result.Add(paramList);
            }

            return(result);
        }
        /// <summary>
        /// メモ
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="commonEvent">結果格納インスタンス</param>
        private void ReadMemo(BinaryReadStatus readStatus, CommonEvent commonEvent)
        {
            var str = readStatus.ReadString();

            commonEvent.Memo = str.String;
            readStatus.AddOffset(str.ByteLength);
        }
        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);
        }
        /// <summary>
        /// コモンイベント末尾A
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <returns>あとに返戻値が続く場合true</returns>
        /// <exception cref="InvalidOperationException">データが仕様と異なる場合</exception>
        private HasNext ReadFooterA(BinaryReadStatus readStatus)
        {
            var b1 = readStatus.ReadByte();

            if (b1 == CommonEvent.BeforeReturnValueSummaryBytesBefore[0])
            {
                foreach (var b in CommonEvent.BeforeReturnValueSummaryBytesBefore)
                {
                    if (readStatus.ReadByte() != b)
                    {
                        throw new InvalidOperationException(
                                  $"ファイルデータが仕様と異なります。(offset:{readStatus.Offset})");
                    }
                    readStatus.IncreaseByteOffset();
                }

                return(HasNext.Yes);
            }

            if (b1 == CommonEvent.FooterBytesBeforeVer2_00[0])
            {
                readStatus.IncreaseByteOffset();
                return(HasNext.No);
            }

            throw new InvalidOperationException(
                      $"ファイルデータが仕様と異なります。(offset:{readStatus.Offset})");
        }
Beispiel #7
0
        /// <summary>
        /// 数値特殊指定文字列パラメータ
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <returns>数値特殊指定文字列パラメータリスト</returns>
        private List <List <string> > ReadSpecialStringArgList(BinaryReadStatus readStatus)
        {
            var result = new List <List <string> >();

            var length = readStatus.ReadInt();

            readStatus.IncreaseIntOffset();

            for (var i = 0; i < length; i++)
            {
                var caseLength = readStatus.ReadInt();
                readStatus.IncreaseIntOffset();

                var caseDescriptionList = new List <string>();

                for (var j = 0; j < caseLength; j++)
                {
                    var caseDescription = readStatus.ReadString();
                    readStatus.AddOffset(caseDescription.ByteLength);
                    caseDescriptionList.Add(caseDescription.String);
                }

                result.Add(caseDescriptionList);
            }

            return(result);
        }
Beispiel #8
0
        /// <summary>
        /// 数値特殊指定数値パラメータ
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <returns>数値特殊指定数値パラメータリスト</returns>
        private List <List <int> > ReadSpecialNumberArgList(BinaryReadStatus readStatus)
        {
            var result = new List <List <int> >();

            var length = readStatus.ReadInt();

            readStatus.IncreaseIntOffset();

            for (var i = 0; i < length; i++)
            {
                var caseLength = readStatus.ReadInt();
                readStatus.IncreaseIntOffset();

                var caseNumberList = new List <int>();

                for (var j = 0; j < caseLength; j++)
                {
                    var caseNumber = readStatus.ReadInt();
                    readStatus.IncreaseIntOffset();
                    caseNumberList.Add(caseNumber);
                }

                result.Add(caseNumberList);
            }

            return(result);
        }
Beispiel #9
0
        /// <summary>
        /// 設定種別 &amp; 種別順列
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="itemTypes">取得した項目種別リスト格納先</param>
        private void ReadValueType(BinaryReadStatus readStatus, out List <DBItemType> itemTypes)
        {
            var length = readStatus.ReadInt();

            readStatus.IncreaseIntOffset();

            var countDic = new Dictionary <DBItemType, int>
            {
                { DBItemType.Int, 0 },
                { DBItemType.String, 0 }
            };

            itemTypes = new List <DBItemType>();

            for (var i = 0; i < length; i++)
            {
                var settingCode = readStatus.ReadInt();
                readStatus.IncreaseIntOffset();

                var itemType = DBItemType.FromValue(settingCode);

                // 項目タイプ数集計
                countDic[itemType]++;

                // 種別順位は無視する

                itemTypes.Add(itemType);
            }
        }
        /// <summary>
        /// コモンイベント名
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="commonEvent">結果格納インスタンス</param>
        private void ReadCommonEventName(BinaryReadStatus readStatus, CommonEvent commonEvent)
        {
            var commonEventName = readStatus.ReadString();

            commonEvent.Name = commonEventName.String;
            readStatus.AddOffset(commonEventName.ByteLength);
        }
        /// <summary>
        /// 引数特殊指定
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="commonEvent">結果格納インスタンス</param>
        /// <exception cref="InvalidOperationException">データが仕様と異なる場合</exception>
        private void ReadSpecialArgDesc(BinaryReadStatus readStatus, CommonEvent commonEvent)
        {
            try
            {
                var specialArgDescReader = new SpecialArgDescReader();
                specialArgDescReader.Read(readStatus);

                UpdateSpecialNumberArgDesc(
                    specialArgDescReader.NumberArgNameList,
                    specialArgDescReader.NumberArgTypeList,
                    specialArgDescReader.NumberArgStringParamsList,
                    specialArgDescReader.NumberArgNumberParamsList,
                    specialArgDescReader.NumberArgInitValueList,
                    commonEvent
                    );

                UpdateSpecialStringArgDesc(
                    specialArgDescReader.StringArgNameList,
                    commonEvent
                    );
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException(
                          $"引数特殊指定データが仕様と異なります。(offset:{readStatus.Offset})", ex);
            }
        }
        /// <summary>
        /// 基本タイルセットファイル名
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="fileName">結果格納インスタンス</param>
        private void ReadBaseTileSetFileName(BinaryReadStatus readStatus, out BaseTileSetFileName fileName)
        {
            var read = readStatus.ReadString();

            fileName = read.String;

            readStatus.AddOffset(read.ByteLength);
        }
        /// <summary>
        /// 返戻値
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="commonEvent">結果格納インスタンス</param>
        private void ReadReturnValue(BinaryReadStatus readStatus, CommonEvent commonEvent)
        {
            // 返戻値の意味
            ReadReturnValueDescription(readStatus, commonEvent);

            // 返戻セルフ変数インデックス
            ReadReturnVariableIndex(readStatus, commonEvent);
        }
        /// <summary>
        /// 返戻値の意味
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="commonEvent">結果格納インスタンス</param>
        private void ReadReturnValueDescription(BinaryReadStatus readStatus, CommonEvent commonEvent)
        {
            var description = readStatus.ReadString();

            readStatus.AddOffset(description.ByteLength);

            commonEvent.ReturnValueDescription = description.String;
        }
        /// <summary>
        /// ラベル色
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="commonEvent">結果格納インスタンス</param>
        private void ReadLabelColor(BinaryReadStatus readStatus, CommonEvent commonEvent)
        {
            var colorNumber = readStatus.ReadInt();

            readStatus.IncreaseIntOffset();

            commonEvent.LabelColor = CommonEventLabelColor.FromInt(colorNumber);
        }
Beispiel #16
0
        /// <summary>
        /// メモ
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="setting">結果格納インスタンス</param>
        private void ReadMemo(BinaryReadStatus readStatus, DBTypeSetting setting)
        {
            var memo = readStatus.ReadString();

            setting.Memo = memo.String;

            readStatus.AddOffset(memo.ByteLength);
        }
        /// <summary>
        /// タイプ名
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="name">結果格納インスタンス</param>
        private void ReadName(BinaryReadStatus readStatus, out TileSetName name)
        {
            var read = readStatus.ReadString();

            name = read.String;

            readStatus.AddOffset(read.ByteLength);
        }
        /// <summary>
        /// 返戻セルフ変数インデックス
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="commonEvent">結果格納インスタンス</param>
        private void ReadReturnVariableIndex(BinaryReadStatus readStatus, CommonEvent commonEvent)
        {
            var index = readStatus.ReadInt();

            readStatus.IncreaseIntOffset();

            commonEvent.SetReturnVariableIndex(index);
        }
        /// <summary>
        /// フッタ文字列
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="commonEvent">結果格納インスタンス</param>
        private void ReadFooterString(BinaryReadStatus readStatus, CommonEvent commonEvent)
        {
            var footerString = readStatus.ReadString();

            readStatus.AddOffset(footerString.ByteLength);

            commonEvent.FooterString = footerString.String;
        }
Beispiel #20
0
        /// <summary>
        /// タイプ名
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="setting">結果格納インスタンス</param>
        private void ReadTypeName(BinaryReadStatus readStatus, DBTypeSetting setting)
        {
            var typeName = readStatus.ReadString();

            setting.TypeName = typeName.String;

            readStatus.AddOffset(typeName.ByteLength);
        }
        /// <summary>
        /// 起動条件比較演算子 &amp; 起動条件
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="condition">結果格納インスタンス</param>
        private void ReadBootConditionOperationAndType(BinaryReadStatus readStatus,
                                                       CommonEventBootCondition condition)
        {
            var b = readStatus.ReadByte();

            readStatus.IncreaseByteOffset();
            condition.Operation           = CriteriaOperator.FromByte((byte)(b & 0xF0));
            condition.CommonEventBootType = CommonEventBootType.FromByte((byte)(b & 0x0F));
        }
        /// <summary>
        /// イベントコマンド
        /// </summary>
        /// <param name="readStatus">読み込み経過状態</param>
        /// <param name="commonEvent">結果格納インスタンス</param>
        private void ReadEventCommand(BinaryReadStatus readStatus, CommonEvent commonEvent)
        {
            var length = readStatus.ReadInt();

            readStatus.IncreaseIntOffset();

            var reader = new EventCommandListReader();

            commonEvent.EventCommands = reader.Read(readStatus, length);
        }
        public List <ICharaMoveCommand> Read(int length, BinaryReadStatus readStatus)
        {
            var charaMoveCommandList = new List <ICharaMoveCommand>();

            for (var i = 0; i < length; i++)
            {
                ReadCharaMoveCommand(readStatus, charaMoveCommandList);
            }

            return(charaMoveCommandList);
        }
        public EventCommandList Read(int length, BinaryReadStatus readStatus)
        {
            var eventCommandList = new List <IEventCommand>();

            for (var i = 0; i < length; i++)
            {
                ReadEventCommand(readStatus, eventCommandList);
            }

            return(new EventCommandList(eventCommandList));
        }
        public List <CommonEvent> Read(BinaryReadStatus readStatus, int length)
        {
            var list = new List <CommonEvent>();

            for (var i = 0; i < length; i++)
            {
                ReadOneCommonEvent(readStatus, list);
            }

            return(list);
        }
Beispiel #26
0
        public List <DBDataSetting> Read(BinaryReadStatus readStatus, int length)
        {
            var list = new List <DBDataSetting>();

            for (var i = 0; i < length; i++)
            {
                ReadOneDBTypeSetting(readStatus, list);
            }

            return(list);
        }
        /// <summary>
        /// 起動条件
        /// </summary>
        /// <param name="readStatus"></param>
        /// <param name="commonEvent"></param>
        private void ReadBootCondition(BinaryReadStatus readStatus, CommonEvent commonEvent)
        {
            // 起動条件比較演算子 & 起動条件
            ReadBootConditionOperationAndType(readStatus, commonEvent.BootCondition);

            // 起動条件左辺
            ReadBootConditionLeftSide(readStatus, commonEvent.BootCondition);

            // 起動条件右辺
            ReadBootConditionRightSide(readStatus, commonEvent.BootCondition);
        }
 /// <summary>
 /// コモンイベントヘッダ
 /// </summary>
 /// <param name="readStatus">読み込み経過状態</param>
 /// <exception cref="InvalidOperationException">ヘッダが仕様と異なる場合</exception>
 private void ReadHeader(BinaryReadStatus readStatus)
 {
     foreach (var b in CommonEvent.HeaderBytes)
     {
         if (readStatus.ReadByte() != b)
         {
             throw new InvalidOperationException(
                       $"ファイルヘッダが仕様と異なります。(offset:{readStatus.Offset})");
         }
         readStatus.IncreaseByteOffset();
     }
 }
 /// <summary>
 /// コモンイベント末尾B
 /// </summary>
 /// <param name="readStatus">読み込み経過状態</param>
 /// <exception cref="InvalidOperationException">データが仕様と異なる場合</exception>
 private void ReadFooterB(BinaryReadStatus readStatus)
 {
     foreach (var b in CommonEvent.FooterBytesAfterVer2_00)
     {
         if (readStatus.ReadByte() != b)
         {
             throw new InvalidOperationException(
                       $"ファイルデータが仕様と異なります。(offset:{readStatus.Offset})");
         }
         readStatus.IncreaseByteOffset();
     }
 }
 /// <summary>
 /// セルフ変数名の後のチェックディジット
 /// </summary>
 /// <param name="readStatus">読み込み経過状態</param>
 /// <exception cref="InvalidOperationException">データが仕様と異なる場合</exception>
 private void ReadAfterMemoBytesSelfVariableNamesBytes(BinaryReadStatus readStatus)
 {
     foreach (var b in CommonEvent.AfterMemoBytesSelfVariableNamesBytes)
     {
         if (readStatus.ReadByte() != b)
         {
             throw new InvalidOperationException(
                       $"ファイルデータが仕様と異なります。(offset:{readStatus.Offset})");
         }
         readStatus.IncreaseByteOffset();
     }
 }