예제 #1
0
 private void tiles_OnMouseMove(Elements.TileGfxTile tile, InputEventMouse e, int pixel)
 {
     if (tile.TileX == 0 && tile.TileY == 0)
     {
         tiles_OnClick(tile, e, pixel);
     }
 }
예제 #2
0
        private void refreshTiles()
        {
            if (State.Data.TileGfx.PageCount > 0)
            {
                if (m_Tiles.Count == 0)
                {
                    panel_Editor.RemoveAllWidgets();
                    m_Tiles.Clear();
                    int   pixelscale = 16;
                    float tilescale  = 8.5f;
                    int   rows       = (int)System.Math.Ceiling((double)(panel_Editor.Area.Width / pixelscale - 8) / 18);
                    int   columns    = (int)System.Math.Ceiling((double)(panel_Editor.Area.Height / pixelscale - 8) / 18);
                    int   x          = (panel_Editor.Area.Width / 2) - (pixelscale * 4) - rows * (int)(pixelscale * tilescale);
                    int   y          = (panel_Editor.Area.Height / 2) - (pixelscale * 4) - columns * (int)(pixelscale * tilescale);
                    for (int iY = -columns; iY <= columns; iY++)
                    {
                        for (int iX = -rows; iX <= rows; iX++)
                        {
                            Elements.TileGfxTile tile = new Elements.TileGfxTile(
                                x + ((iX + columns) * (int)(tilescale * pixelscale)),
                                y + ((iY + rows) * (int)(tilescale * pixelscale)),
                                pixelscale, iX, iY, tiles_OnClick, tiles_OnMouseMove);
                            panel_Editor.AddWidget(tile);
                            m_Tiles.Add(tile);
                        }
                    }
                }

                foreach (Elements.TileGfxTile tile in m_Tiles)
                {
                    int x = tile.TileX + (State.SelectedTile % 16);
                    int y = tile.TileY + (State.SelectedTile / 16);
                    if (x < 0 || x >= 16 || y < 0 || y >= 16)
                    {
                        tile.Visible = false;
                    }
                    else
                    {
                        tile.Visible     = true;
                        tile.TileIndex   = x + y * 16;
                        tile.PageTexture = State.GfxPage(State.SelectedPage).Texture;
                    }
                }
            }
            else if (State.Data.TileGfx.PageCount == 0 && m_Tiles.Count > 0)
            {
                panel_Editor.RemoveAllWidgets();
                m_Tiles.Clear();
            }
        }
예제 #3
0
 private void tiles_OnClick(Elements.TileGfxTile tile, InputEventMouse e, int pixel)
 {
     if (e.Button == MouseButton.Left)
     {
         if (tile.TileX != 0 || tile.TileY != 0)
         {
             pages_OnClick(State.SelectedPage, tile.TileIndex);
         }
         else
         {
             State.SetPixel(State.SelectedPage, State.SelectedTile, pixel, (byte)State.SelectedColor);
         }
     }
     else if (e.Button == MouseButton.Right)
     {
         byte color = State.Data.TileGfx.GetPixel(State.SelectedPage, State.SelectedTile + tile.TileX + tile.TileY * 16, pixel);
         wells_OnClick(m_Wells[color]);
     }
 }