コード例 #1
0
 /// <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));
 }
コード例 #2
0
        // _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
        //     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());
        }