/// <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()); }
/// <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})"); }
/// <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); }
/// <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); }
/// <summary> /// 設定種別 & 種別順列 /// </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); }
/// <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; }
/// <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> /// 起動条件比較演算子 & 起動条件 /// </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); }
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(); } }