예제 #1
0
    public void LoadLevelData(MapListing map)
    {
        mapDetailScreen.SetActive(true);
        mapNameText.text = map.MapName;
        mapDescText.text = map.MapDescription;
        mapImage.sprite  = map.Image;

        goButton.onClick.AddListener(delegate { SceneManager.LoadScene(map.sceneIndex); });
    }
예제 #2
0
        public SetFile(string inFilename, byte[] rawData, byte[] inHeader, int[] ptrs, int baseAddr, bool bigEndian = false)
        {
            header   = inHeader;
            filename = inFilename;  //Assuming they'll always base 0.
            MemoryStream transFile  = new MemoryStream(rawData);
            BinaryReader fileReader = BigEndianBinaryReader.GetEndianSpecificBinaryReader(transFile, bigEndian);

            transFile.Seek(8, SeekOrigin.Begin);
            int headerLoc = fileReader.ReadInt32();

            transFile.Seek(headerLoc, SeekOrigin.Begin);
            areaID = fileReader.ReadInt16();
            short mapCount        = fileReader.ReadInt16();
            int   mainListPointer = fileReader.ReadInt32() - baseAddr;

            mapData = new MapListing[mapCount];
            for (int i = 0; i < mapCount; i++)
            {
                transFile.Seek(mainListPointer + i * 12, SeekOrigin.Begin);
                mapData[i]           = new MapListing();
                mapData[i].mapNumber = fileReader.ReadInt16();
                short listCount = fileReader.ReadInt16();
                mapData[i].headers = new ListHeader[listCount];
                int listPtr = fileReader.ReadInt32() - baseAddr;
                for (int j = 0; j < listCount; j++)
                {
                    transFile.Seek(listPtr + j * 0x28, SeekOrigin.Begin);
                    mapData[i].headers[j]             = new ListHeader();
                    mapData[i].headers[j].headerBytes = fileReader.ReadBytes(34);
                    short listEntryCount = fileReader.ReadInt16();
                    mapData[i].headers[j].objects = new ObjectEntry[listEntryCount];
                    int objectListLoc = fileReader.ReadInt32() - baseAddr;
                    for (int k = 0; k < listEntryCount; k++)
                    {
                        transFile.Seek(objectListLoc + k * 0x34, SeekOrigin.Begin);
                        ObjectEntry temp = new ObjectEntry();
                        temp.startBytes     = fileReader.ReadBytes(14);
                        temp.objID          = fileReader.ReadInt16();
                        temp.unkInt1        = fileReader.ReadInt32();
                        temp.objX           = fileReader.ReadSingle();
                        temp.objY           = fileReader.ReadSingle();
                        temp.objZ           = fileReader.ReadSingle();
                        temp.objRotX        = fileReader.ReadSingle();
                        temp.objRotY        = fileReader.ReadSingle();
                        temp.objRotZ        = fileReader.ReadSingle();
                        temp.metadataLength = fileReader.ReadInt32();
                        int metadataLoc = fileReader.ReadInt32() - baseAddr;
                        transFile.Seek(metadataLoc, SeekOrigin.Begin);
                        temp.metadata = fileReader.ReadBytes(temp.metadataLength);
                        mapData[i].headers[j].objects[k] = temp;
                    }
                }
            }
        }
예제 #3
0
        private void addMapListButton_Click(object sender, EventArgs e)
        {
            List <MapListing> newMapData = internalFile.mapData.ToList();

            ObjectEntry[] newObjectList = new ObjectEntry[1];
            newObjectList[0] = new ObjectEntry();

            ListHeader newListHeader = new ListHeader();

            newListHeader.headerBytes = new byte[36];
            newListHeader.objects     = newObjectList;

            MapListing newMapListing = new MapListing();

            newMapListing.headers = new ListHeader[] { newListHeader };
            newMapData.Add(newMapListing);

            internalFile.mapData = newMapData.ToArray();

            mapListCB.BeginUpdate();
            mapListCB.Items.Add(internalFile.mapData[mapListCB.Items.Count - 1].mapNumber);
            mapListCB.EndUpdate();
            mapListCB.SelectedIndex = mapListCB.Items.Count - 1;
        }