예제 #1
0
        // Constructor.
        public EditDoorWindow(Project p, bool createNew)
        {
            InitializeComponent();

            MyProject     = p;
            CreateNew     = createNew;
            ScreenPreview = new UITileViewer(16.0, 16, 16, 16, 16, ScreenPreviewGrid);
            ScreenPreviewGrid.Children.Add(ScreenPreview.Element);
            ScreenPreview.MouseDown    += Tile_Click;
            ScreenPreview.MarkerVisible = true;
            ScreenImage = new BlitImage(256, 256);
            foreach (string name in MyProject.AreaNames)
            {
                AreaListBox.Items.Add(name);
            }

            if (CreateNew)
            {
                AreaListBox.SelectedIndex = MyProject.AreaIndex;
            }
            else
            {
                // Get destination info.
                MyProject.GetDoorDestination(out int areaIndex, out int roomIndex,
                                             out int screenX, out int screenY,
                                             out int doorCapX, out int doorCapY,
                                             out int distanceToSpawn);
                AreaListBox.SelectedIndex = areaIndex;
                RoomListBox.SelectedIndex = roomIndex;
                ScreenX  = screenX;
                ScreenY  = screenY;
                DoorCapX = doorCapX;
                DoorCapY = doorCapY;
                SpawnDistanceInput.Text = Tools.IntToHex(distanceToSpawn, 4);

                // Get other door properties.
                MyProject.GetDoorProperties(out bool isElevator, out bool isElevatorPad,
                                            out int direction, out bool closes);
                if (isElevatorPad)
                {
                    DoorTypeSelect.SelectedIndex = 2;
                }
                else if (isElevator)
                {
                    DoorTypeSelect.SelectedIndex = 1;
                }
                else
                {
                    DoorTypeSelect.SelectedIndex = 0;
                }
                DirectionSelect.SelectedIndex = direction;
                ClosesCheckbox.IsChecked      = closes;

                // Update screen.
                RenderScreen();
                UpdateDoorCap();
                UpdateButtons();
            }
        }
예제 #2
0
        private void UpdateActiveBts(object sender, EventArgs e)
        {
            int type  = MainProject.BtsType;
            int value = MainProject.BtsValue;

            BtsTypeInput.Text  = Tools.IntToHex(type, 1);
            BtsValueInput.Text = Tools.IntToHex(value, 2);
            BlitImage image = new BlitImage(16, 16);

            image.Clear();
            MainProject.RenderBts(image, 0, 0, type, value);
            SelectedBtsImage.Source = image.ToBitmap();
        }
예제 #3
0
        public EditRoomPositionWindow(Project p, bool setSize)
        {
            InitializeComponent();

            MainProject = p;
            SetSize     = setSize;

            NewPositionX = MainProject.RoomX;
            NewPositionY = MainProject.RoomY + 1;
            NewWidth     = MainProject.RoomWidthInScreens;
            NewHeight    = MainProject.RoomHeightInScreens;

            RoomSizeEditor = new UITileViewer(16.0, 64, 32, 64, 32, MapViewer);
            RoomSizeEditor.MarkerVisible = true;
            RoomSizeEditor.Screens [0, 0].SetValue(RenderOptions.BitmapScalingModeProperty,
                                                   BitmapScalingMode.NearestNeighbor);
            MapViewer.Content = RoomSizeEditor.Element;
            BlitImage areaMap = MainProject.RenderAreaMap();

            areaMap.DrawRectangle(NewPositionX * 8, NewPositionY * 8, NewWidth * 8, NewHeight * 8,
                                  0x00, 0xFF, 0x00, 0x40);
            ImageSource source = areaMap.ToBitmap();

            RoomSizeEditor.Screens [0, 0].Source = source;

            if (SetSize)
            {
                RoomSizeEditor.MouseUp += RoomSizeEditor_MouseUp;
                Title = "Crop/expand room to new size";
            }
            else
            {
                RoomSizeEditor.MouseDown += RoomSizeEditor_MouseDown;
                Title = "Set room position on map";
            }

            UpdateSelection();
            ContentRendered += ScrollToMarker;
        }
예제 #4
0
        private void BackgroundSelect_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            BlitImage img = MyProject.RenderBackground(BackgroundSelect.SelectedIndex);

            BackgroundImage.Source = img.ToBitmap();
        }