Пример #1
0
        private void OpenISO(Control control, Command loadISO, Command closeISO)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            FileFilter     isoFilter      = new FileFilter("ISO", ".iso", ".ISO");

            openFileDialog.MultiSelect = false;
            openFileDialog.Filters.Add(isoFilter);
            openFileDialog.ShowDialog(control);

            string filename = openFileDialog.FileName;

            if (!string.IsNullOrEmpty(filename))
            {
                isoFileStream    = File.Open(filename, FileMode.Open);
                cdReader         = new CDReader(isoFileStream, true);
                loadISO.Enabled  = false;
                closeISO.Enabled = true;
                var tfsFiles = ScanDiscDirectory(cdReader.Root);
                foreach (string tfsFilename in tfsFiles)
                {
                    TFSFile newTFSFile    = new TFSFile(tfsFilename, filename);
                    var     directoryPath = Path.GetDirectoryName(tfsFilename);
                    var     newMAPFile    = Path.Combine(
                        directoryPath, $"{Path.GetFileNameWithoutExtension(tfsFilename)}.MAP;1");

                    if (File.Exists(newMAPFile))
                    {
                        newTFSFile.MAPFilename = newMAPFile;
                    }

                    files.Add(newTFSFile);
                }
            }
        }
Пример #2
0
        private void ucAddFileAttr1_AddFileAttr(object sender, ucAddFileAttr.AddFileAttrEventArgs e)
        {
            e.FileAttr.File = mFile;
            mFile.Attrs.Add(e.FileAttr);
            e.FileAttr.FixInBase();

            TFSFile File = mFile;

            ucAddFileAttr1.DB = File.DB;

            while (ltAttributes.Controls.Count > 1)
            {
                ltAttributes.Controls.RemoveAt(0);
            }

            if (File.Attrs != null)
            {
                foreach (TFSFileAttribute FileAttr in File.Attrs)
                {
                    var Attribute = new ucFileAttribute(FileAttr);
                    ltAttributes.Controls.Add(Attribute);
                    ltAttributes.Controls.SetChildIndex(Attribute, ltAttributes.Controls.Count - 2);
                }
            }
        }
Пример #3
0
        private void OpenTFS(Control control)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            FileFilter     tfsFilter      = new FileFilter("TFS", ".tfs", ".TFS");

            openFileDialog.MultiSelect = true;
            openFileDialog.Filters.Add(tfsFilter);
            openFileDialog.ShowDialog(control);

            foreach (var filename in openFileDialog.Filenames)
            {
                if (!string.IsNullOrEmpty(filename) &&
                    !files.Any(i => i.Filename == filename))
                {
                    var newFile       = new TFSFile(filename);
                    var directoryPath = Path.GetDirectoryName(filename);
                    var newMAPFile    = Path.Combine(
                        directoryPath, $"{Path.GetFileNameWithoutExtension(filename)}.MAP");

                    if (File.Exists(newMAPFile))
                    {
                        newFile.MAPFilename = newMAPFile;
                    }

                    files.Add(newFile);
                }
            }
        }
Пример #4
0
        void ucF_Enter(object sender, EventArgs e)
        {
            mTagsDB.LoadAllAttrs();

            TFSFile File = ((ucFile)sender).File;

            ucAddFileAttr1.DB = File.DB;

            while (ltAttributes.Controls.Count > 1)
            {
                ltAttributes.Controls.RemoveAt(0);
            }

            if (File.Attrs != null)
            {
                foreach (TFSFileAttribute FileAttr in File.Attrs)
                {
                    var Attribute = new ucFileAttribute(FileAttr);
                    ltAttributes.Controls.Add(Attribute);
                    ltAttributes.Controls.SetChildIndex(Attribute, ltAttributes.Controls.Count - 2);
                }
            }

            mFile = File;
        }
Пример #5
0
 private void ucFile_Resize(object sender, EventArgs e)
 {
     ltTags.Width  = Width - 4;
     ltTags.Height = Height - ltTags.Top - 2;
     File          = mFile;
     //aftNewTag.Left = ltTags.Width - aftNewTag.Width;
 }
Пример #6
0
        private void ucAddFileTag1_AddFileTag(object sender, ucAddFileTag.AddFileTagEventArgs e)
        {
            e.FileTag.File = mFile;
            e.FileTag.FixInBase();
            if (mFile.Tags == null)
            {
                mFile.Tags = new List <TFSFileTag>();
            }
            mFile.Tags.Add(e.FileTag);

            File = mFile;
        }
Пример #7
0
        private void OpenSelectedTFS(
            Command saveImage,
            DropDown paletteDropdown,
            Label paletteDropdownLabel,
            Label toolbarImageInfoLabel,
            ImageView imageView,
            ImageView collisionMapImageView,
            TextArea mapDetailsText,
            TabPage timDataPage)
        {
            if (fileList.SelectedKey == null)
            {
                imageView.Image = null;
                return;
            }

            saveImage.Enabled       = false;
            paletteDropdown.Visible = false;
            paletteDropdown.Items.Clear();
            paletteDropdownLabel.Visible = false;
            saveImage.Enabled            = false;
            toolbarImageInfoLabel.Text   = "";
            mapDetailsText.Text          = "";
            timDataPage.Content          = null;

            TFSFile selectedItem = files[fileList.SelectedIndex];

            if (selectedItem.DiscFile == null)
            {
                roomData = selectedItem.MAPFilename == null
                    ? roomReader.ReadRoomDataTFSOnly(selectedItem.Filename)
                    : roomReader.ReadRoomData(selectedItem.Filename, selectedItem.MAPFilename);
            }
            else
            {
                using (Stream fileStream
                           = cdReader.OpenFile(selectedItem.Filename, FileMode.Open)) {
                    if (selectedItem.MAPFilename == null)
                    {
                        roomData = roomReader.ReadRoomDataTFSOnly(fileStream);
                    }
                    else
                    {
                        using (Stream mapFileStream
                                   = cdReader.OpenFile(selectedItem.MAPFilename, FileMode.Open)) {
                            roomData = roomReader.ReadRoomData(fileStream, mapFileStream);
                        }
                    }
                }
            }

            if (roomData.MAPData != null)
            {
                mapDetailsText.Text = getDetailsText(roomData.MAPData);
                var timDataTabControl = new TabControl();
                for (var i = 0; i < roomData.MAPData.TIMImages.Count; ++i)
                {
                    var timImageView = new ImageView();
                    var timBitmap    = roomData.MAPData.TIMImages[i].GetBitmapAsFlatArray(0);
                    timImageView.Image
                        = getBitmap(roomData.MAPData.TIMImages[i].ImageSize, timBitmap);

                    var tabPage = new TabPage {
                        Text = $"Image {i + 1}"
                    };
                    tabPage.Content = timImageView;
                    timDataTabControl.Pages.Add(tabPage);
                }

                timDataPage.Content = timDataTabControl;

                List <Color> bitmapData         = new List <Color>();
                var          collisionMapWidth  = roomData.MAPData.Collision.CollisionMap.GetLength(0);
                var          collisionMapHeight = roomData.MAPData.Collision.CollisionMap.GetLength(1);
                for (int y = 0; y < collisionMapHeight; ++y)
                {
                    for (int x = 0; x < collisionMapWidth; ++x)
                    {
                        CollisionType collisionType
                            = roomData.MAPData.Collision.CollisionMap[x, y];

                        switch (collisionType)
                        {
                        case CollisionType.SOLID:
                            bitmapData.Add(Color.FromArgb(29, 31, 33));
                            break;

                        case CollisionType.EMPTY:
                            bitmapData.Add(Color.FromArgb(197, 200, 198));
                            break;

                        case CollisionType.EXIT_1:
                        case CollisionType.EXIT_2:
                        case CollisionType.EXIT_3:
                        case CollisionType.EXIT_4:
                        case CollisionType.EXIT_5:
                        case CollisionType.EXIT_6:
                        case CollisionType.EXIT_7:
                        case CollisionType.EXIT_8:
                        case CollisionType.EXIT_9:
                        case CollisionType.EXIT_10:
                            bitmapData.Add(Color.FromArgb(181, 189, 104));
                            break;

                        case CollisionType.TOILET:
                            bitmapData.Add(Color.FromArgb(129, 162, 190));
                            break;

                        default:
                            bitmapData.Add(Color.FromArgb(133, 103, 143));
                            break;
                        }
                    }
                }

                collisionMapImageView.Image
                    = new Bitmap(
                          collisionMapWidth,
                          collisionMapHeight,
                          PixelFormat.Format32bppRgba,
                          bitmapData);
            }

            toolbarImageInfoLabel.Text
                = $"{roomData.TFSData.ImageSize.X} x {roomData.TFSData.ImageSize.Y} pixels";

            var tfsBitmap = roomData.TFSData.GetBitmapAsFlatArray(0);

            imageView.Image = getBitmap(roomData.TFSData.ImageSize, tfsBitmap);

            if (roomData.TFSData.PaletteCount > 1)
            {
                List <string> options = Enumerable
                                        .Range(0, roomData.TFSData.PaletteCount)
                                        .Select(i => i.ToString())
                                        .ToList();

                foreach (var option in options)
                {
                    paletteDropdown.Items.Add(option);
                }

                paletteDropdown.SelectedKey  = "0";
                paletteDropdown.Visible      = true;
                paletteDropdownLabel.Visible = true;
            }

            saveImage.Enabled = true;
        }
Пример #8
0
 public ucFile(TFSFile _File)
 {
     InitializeComponent();
     File = _File;
 }
Пример #9
0
 void Tag_DeleteClick(object sender, ucFileTagBranch.DeleteClickEventArgs e)
 {
     e.FileTag.Delete();
     File = mFile;
 }