Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void PasteBox_Click(object sender, EventArgs e)
        {
            if (CopyId == -1)
            {
                return;
            }

            if (Decoration == null)
            {
                Decoration = DecorationSet.AddDecoration((int)DecorationIdBox.Value);
            }

            Decoration deco = DecorationSet.GetDecoration(CopyId);

            if (deco == null)
            {
                return;
            }

            foreach (ViewFieldPosition view in Enum.GetValues(typeof(ViewFieldPosition)))
            {
                Decoration.SetTileId(view, deco.GetTileId(view));
                Decoration.SetLocation(view, deco.GetLocation(view));
                Decoration.SetSwap(view, deco.GetSwap(view));
            }
            Decoration.ForceDisplay = deco.ForceDisplay;
            Decoration.IsBlocking   = deco.IsBlocking;
            Decoration.HideItems    = deco.HideItems;

            UpdateViewBoxStatus();
        }
Exemplo n.º 2
0
        /// <summary>
        /// Change the curent decoration
        /// </summary>
        /// <param name="id">Id of the decoration</param>
        void ChangeDecorationId(int id)
        {
            Decoration = DecorationSet.GetDecoration(id);

            if (Decoration != null)
            {
                TileIdBox.Value           = Decoration.GetTileId(ViewPositionBox.Position);
                HorizontalSwapBox.Checked = Decoration.GetSwap(ViewPositionBox.Position);
                BlockBox.Checked          = Decoration.IsBlocking;
                ForceDisplayBox.Checked   = Decoration.ForceDisplay;
                OnHackIdBox.Value         = Decoration.OnHackId;
                OnBashIdBox.Value         = Decoration.OnBashId;
                OnClickIdBox.Value        = Decoration.OnClickId;
                HideItemsBox.Checked      = Decoration.HideItems;
            }
            else
            {
                TileIdBox.Value           = -1;
                HorizontalSwapBox.Checked = false;
                BlockBox.Checked          = false;
                ForceDisplayBox.Checked   = false;
                OnHackIdBox.Value         = -1;
                OnBashIdBox.Value         = -1;
                OnClickIdBox.Value        = -1;
                HideItemsBox.Checked      = false;
            }

            UpdateViewBoxStatus();
        }
Exemplo n.º 3
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="node">XmlNode handle</param>
        public DecorationSetForm(XmlNode node)
        {
            InitializeComponent();

            LastMousePosition = Control.MousePosition;

            BgTileSet = new TileSet();

            DecorationSet = new DecorationSet();
            DecorationSet.Load(node);
            ChangeDecorationId(0);
        }
Exemplo n.º 4
0
		/// <summary>
		/// Constructor
		/// </summary>
		/// <param name="node">XmlNode handle</param>
		public DecorationSetForm(XmlNode node)
		{
			InitializeComponent();

			LastMousePosition = Control.MousePosition;

			BgTileSet = new TileSet();

			DecorationSet = new DecorationSet();
			DecorationSet.Load(node);
			ChangeDecorationId(0);
		}
Exemplo n.º 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TileIdBox_ValueChanged(object sender, System.EventArgs e)
        {
            if (Decoration == null)
            {
                Decoration = DecorationSet.AddDecoration((int)DecorationIdBox.Value);
            }

            Decoration.SetTileId(ViewPositionBox.Position, (int)TileIdBox.Value);


            // If position is empty (aka X=-999 & y=-999), set it to zero
            if (Decoration.GetLocation(ViewPositionBox.Position).X < -500 && Decoration.GetLocation(ViewPositionBox.Position).Y < -500)
            {
                Decoration.SetLocation(ViewPositionBox.Position, Point.Empty);
            }


            UpdateViewBoxStatus();
        }
Exemplo n.º 6
0
        /// <summary>
        ///
        /// </summary>
        void RenderScene()
        {
            VisualBox.MakeCurrent();
            Display.ClearBuffers();

            Batch.Begin();

            // Background
            Batch.DrawTile(Maze.WallTileset, 0, Point.Empty);

            // Draw decoration
            if (DecorationSet != null)
            {
                DecorationSet.Draw(Batch, PressurePlate.DecorationPrimary, ViewFieldPosition.L);
            }

            Batch.End();

            VisualBox.SwapBuffers();
        }
Exemplo n.º 7
0
        /// <summary>
        /// Form closing
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DecorationForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (DrawTimer != null)
            {
                DrawTimer.Dispose();
            }
            DrawTimer = null;

            if (Batch != null)
            {
                Batch.Dispose();
            }
            Batch = null;

            if (BgTileSet != null)
            {
                BgTileSet.Dispose();
            }
            BgTileSet = null;

            if (DecorationSet != null)
            {
                DecorationSet.Dispose();
            }
            DecorationSet = null;

            if (ItemTileset != null)
            {
                ItemTileset.Dispose();
            }
            ItemTileset = null;

            if (OpenGLBox != null)
            {
                OpenGLBox.Dispose();
            }
            OpenGLBox = null;
        }
Exemplo n.º 8
0
        /// <summary>
        /// Render the scene
        /// </summary>
        void RenderScene()
        {
            OpenGLBox.MakeCurrent();
            Display.ClearBuffers();

            Batch.Begin();

            // Background
            Batch.DrawTile(BgTileSet, 0, Point.Empty);

            // Render the walls
            if (DisplayWallBox.Checked)
            {
                foreach (TileDrawing tmp in DisplayCoordinates.GetWalls(ViewPositionBox.Position))
                {
                    Batch.DrawTile(BgTileSet, tmp.ID, tmp.Location, Color.White, 0.0f, tmp.Effect, 0.0f);
                }
            }


            #region Draw the decoration
            if (Decoration != null && DecorationSet.Tileset != null)
            {
                DecorationSet.Draw(Batch, (int)DecorationIdBox.Value, ViewPositionBox.Position);

                Tile tile = DecorationSet.Tileset.GetTile(Decoration.GetTileId(ViewPositionBox.Position));
                if (tile != null)
                {
                    Point     start = Decoration.GetLocation(ViewPositionBox.Position);
                    Rectangle rect  = new Rectangle(start, tile.Size);

                    // Red rectangle around tile
                    if (rect.Contains(OpenGLBox.PointToClient(Control.MousePosition)) && !ItemsModeSelected)
                    {
                        Batch.DrawRectangle(rect, Color.Red);
                    }
                }

                TileLocationBox.Text = Decoration.GetLocation(ViewPositionBox.Position).ToString();
            }
            else
            {
                TileLocationBox.Text = "";
            }
            #endregion


            #region Display item
            if (ItemsModeSelected && ItemTileset != null &&
                (ViewPositionBox.Position == ViewFieldPosition.L ||
                 ViewPositionBox.Position == ViewFieldPosition.H ||
                 ViewPositionBox.Position == ViewFieldPosition.C))
            {
                // Offset the item locations according to the distance
                Vector2 vect = DisplayCoordinates.GetMonsterScaleFactor(ViewPositionBox.Position);
                Point   loc  = Decoration.PrepareLocation(ViewPositionBox.Position);
                loc.Offset((int)(Decoration.ItemLocation.X * vect.X), (int)(Decoration.ItemLocation.Y * vect.Y));


                Batch.DrawTile(ItemTileset, (int)ItemIdBox.Value, loc,
                               DisplayCoordinates.GetDistantColor(ViewPositionBox.Position), 0.0f,
                               DisplayCoordinates.GetItemScaleFactor(ViewPositionBox.Position), SpriteEffects.None, 0.0f);

                ItemPositionBox.Text = Decoration.ItemLocation.ToString();
            }
            #endregion

            Batch.End();

            OpenGLBox.SwapBuffers();
        }
Exemplo n.º 9
0
 /// <summary>
 /// Changes the decoration tileset
 /// </summary>
 /// <param name="name">TileSet name</param>
 /// <returns>True on success</returns>
 bool ChangeDecorationTileSet(string name)
 {
     return(DecorationSet.LoadTileSet(name));
 }