public CheckPoints(CKPT data, CKPH paths)
 {
     foreach (var path in paths.Entries)
     {
         Entries.Add(new CheckpointGroup(path, data));
     }
 }
        public KMP(byte[] Data)
        {
            EndianBinaryReaderEx er = new EndianBinaryReaderEx(new MemoryStream(Data), Endianness.LittleEndian);

            try
            {
                Header = new KMPHeader(er);
                foreach (var v in Header.SectionOffsets)
                {
                    er.BaseStream.Position = Header.HeaderSize + v;
                    String sig = er.ReadString(Encoding.ASCII, 4);
                    er.BaseStream.Position -= 4;
                    switch (sig)
                    {
                    case "TPTK": KartPoint = new KTPT(er); break;

                    case "TPNE": EnemyPoint = new ENPT(er); break;

                    case "HPNE": EnemyPointPath = new ENPH(er); break;

                    case "TPTI": ItemPoint = new ITPT(er); break;

                    case "HPTI": ItemPointPath = new ITPH(er); break;

                    case "TPKC": CheckPoint = new CKPT(er); break;

                    case "HPKC": CheckPointPath = new CKPH(er); break;

                    case "JBOG": GlobalObject = new GOBJ(er); break;

                    case "ITOP": PointInfo = new POTI(er); break;

                    case "AERA": Area = new AREA(er); break;

                    case "EMAC": Camera = new CAME(er); break;

                    case "TPGJ": JugemPoint = new JGPT(er); break;

                    case "TPNC": CannonPoint = new CNPT(er); break;

                    case "TPSM": MissionPoint = new MSPT(er); break;

                    case "IGTS": StageInfo = new STGI(er); break;

                    case "SROC": CourseSect = new CORS(er); break;

                    case "TPLG": GliderPoint = new GLPT(er); break;

                    case "HPLG": GliderPointPath = new GLPH(er); break;

                    default: continue;
                    }
                }
            }
            finally
            {
                er.Close();
            }
        }
 public CheckpointGroup(CKPH.CKPHEntry path, CKPT data)
 {
     Previous = path.Previous;
     Next     = path.Next;
     Unknown  = path.Unknown;
     for (int i = path.Start; i < path.Start + path.Length; i++)
     {
         Entries.Add(new CheckpointEntry(data.Entries[i]));
     }
 }
        public CKPT ToCKPT()
        {
            CKPT data  = new CKPT();
            uint Count = 0;
            uint Index;
            Byte Prev;
            Byte Next;

            foreach (var group in Entries)
            {
                Index = 0;
                foreach (var entry in group.Entries)
                {
                    if (Index + 1 == group.Entries.Count)
                    {
                        Next = 255;
                    }
                    else
                    {
                        Next = (byte)(Count + 1);
                    }

                    if (Index == 0)
                    {
                        Prev = 255;
                    }
                    else
                    {
                        Prev = (byte)(Count - 1);
                    }

                    data.Entries.Add(entry.ToCKPTEntry(Prev, Next));
                    Count++;
                    Index++;
                }
            }

            data.NrEntries = Count;
            return(data);
        }
Exemple #5
0
        public CDMD(byte[] Data)
        {
            EndianBinaryReader er = new EndianBinaryReader(new MemoryStream(Data), Endianness.LittleEndian);

            try
            {
                Header = new CDMDHeader(er);
                foreach (var v in Header.SectionOffsets)
                {
                    er.BaseStream.Position = Header.HeaderSize + v;
                    String sig = er.ReadString(Encoding.ASCII, 4);
                    er.BaseStream.Position -= 4;
                    switch (sig)
                    {
                    case "TPKC": CheckPoints = new CKPT(er); break;

                    case "HPKC": CheckPaths = new CKPH(er); break;

                    case "JBOG": GlobalObjects = new GOBJ(er); break;

                    default:
                        //throw new Exception("Unknown Section: " + sig);
                        continue;
                        //goto cont;
                    }
                }
cont:
                ;
            }
            catch (SignatureNotCorrectException e)
            {
                MessageBox.Show(e.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                er.Close();
            }
        }