/// <summary> /// 値を比較する。 /// </summary> /// <param name="other">比較対象</param> /// <returns>一致する場合、true</returns> public bool Equals(CommonEventSpecialArgDescList other) { if (ReferenceEquals(null, other)) { return(false); } if (ReferenceEquals(this, other)) { return(true); } return(NumberArgDescList.SequenceEqual(other.NumberArgDescList) && StringArgDescList.SequenceEqual(other.StringArgDescList)); }
// _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ // Common // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ /// <summary> /// バイナリ変換する。 /// </summary> /// <returns>バイナリデータ</returns> public byte[] ToBinary() { var result = new List <byte>(); // ヘッダ result.AddRange(Header); // 数値引数と文字列引数を結合 var numberArgInterfaceList = NumberArgDescList.Select(x => (ICommonEventSpecialArgDesc)x); var stringArgInterfaceList = StringArgDescList.Select(x => (ICommonEventSpecialArgDesc)x); var argTypeList = numberArgInterfaceList.Concat(stringArgInterfaceList).ToList(); // 引数名数 var argLength = argTypeList.Count; result.AddRange(argLength.ToBytes(Endian.Woditor)); // 引数名 var argNames = argTypeList.Select(x => x.ArgName); foreach (var argName in argNames) { result.AddRange(argName.ToWoditorStringBytes()); } // 特殊指定数 result.AddRange(argLength.ToBytes(Endian.Woditor)); // 特殊指定種別 var specialArgTypes = argTypeList.Select(x => x.ArgType); result.AddRange(specialArgTypes.Select(specialArgType => specialArgType.Code)); // 特殊指定文字列パラメータ数 result.AddRange(argLength.ToBytes(Endian.Woditor)); // 特殊指定文字列パラメータ var specialStringArgCasesList = argTypeList.Select(x => x.GetAllSpecialCaseDescription()); result.AddRange(MakeSpecialArgCaseStringByte(specialStringArgCasesList)); // 特殊指定数値パラメータ数 result.AddRange(argLength.ToBytes(Endian.Woditor)); // 特殊指定数値 var specialNumberArgCasesList = argTypeList.Select(x => x.GetAllSpecialCaseNumber()); result.AddRange(MakeSpecialArgCaseIntByte(specialNumberArgCasesList)); // 数値引数初期値数 var specialNumberArgDescList = argTypeList.Where(x => x is CommonEventSpecialNumberArgDesc).ToList(); result.AddRange(specialNumberArgDescList.Count.ToBytes(Endian.Woditor)); // 数値引数初期値 var initValueList = specialNumberArgDescList.Select(x => x.InitValue); foreach (var initValue in initValueList) { result.AddRange(initValue.ToBytes(Endian.Woditor)); } return(result.ToArray()); }