Beispiel #1
0
        protected override void SubtypeWrite(DSBinaryWriter bin)
        {
            bin.Write(SubUnk1);
            bin.Write(SUB_CONST_1);
            bin.Write(SUB_CONST_2);
            bin.Write(SUB_CONST_3);

            sbyte m1 = -1, m2 = -1, m3 = -1, m4 = -1;

            string[] mapNameParts = MapName
                                    .Substring(1)
                                    .Split('_')
                                    .Select(x => x.ToUpper())
                                    .ToArray();

            if (mapNameParts.Length != 4)
            {
                InvalidNameException();
            }

            if (mapNameParts[0].Length != 2 ||
                mapNameParts[1].Length != 2 ||
                mapNameParts[2].Length != 2 ||
                mapNameParts[3].Length != 2
                )
            {
                InvalidNameException();
            }

            try
            {
                if (mapNameParts[0] == "XX")
                {
                    m1 = -1;
                }
                else
                {
                    m1 = (sbyte)(int.Parse(mapNameParts[0]));
                    if (m1 < 0)
                    {
                        InvalidNameException();
                    }
                }

                if (mapNameParts[1] == "XX")
                {
                    m2 = -1;
                }
                else
                {
                    m2 = (sbyte)(int.Parse(mapNameParts[1]));
                    if (m2 < 0)
                    {
                        InvalidNameException();
                    }
                }

                if (mapNameParts[2] == "XX")
                {
                    m3 = -1;
                }
                else
                {
                    m3 = (sbyte)(int.Parse(mapNameParts[2]));
                    if (m3 < 0)
                    {
                        InvalidNameException();
                    }
                }

                if (mapNameParts[3] == "XX")
                {
                    m4 = -1;
                }
                else
                {
                    m4 = (sbyte)(int.Parse(mapNameParts[3]));
                    if (m4 < 0)
                    {
                        InvalidNameException();
                    }
                }
            }
            catch
            {
                InvalidNameException();
            }

            bin.Write(m1);
            bin.Write(m2);
            bin.Write(m3);
            bin.Write(m4);


            bin.Write(SUB_CONST_4);
            bin.Write(SUB_CONST_5);
        }