Exemplo n.º 1
0
 void RenderLayerMaps(int tilePixSize, Point camPos, Size numTilesScreen, TileMaps tileMaps)
 {
     for (int l = 0; l < m_layerMap.Length; l++)
     {
         m_layerSpriteBatch.GraphicsDevice.SetRenderTarget(m_layerMap[l]);
         m_layerSpriteBatch.GraphicsDevice.Clear(Color.Transparent);
         m_layerSpriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.Default, RasterizerState.CullNone);
         int  tileSize = tilePixSize;
         Tile worldTile;
         int  mapOffsetX = (camPos.X / tileSize) - (numTilesScreen.Width / 2);
         int  mapOffsetY = (camPos.Y / tileSize) - (numTilesScreen.Height / 2);
         for (int x = 0; x < (numTilesScreen.Width + 1); x++)
         {
             for (int y = 0; y < (numTilesScreen.Height + 1); y++)
             {
                 worldTile = GetTile(x + mapOffsetX, y + mapOffsetY);
                 Rectangle drawRec = new Rectangle(x * tileSize, y * tileSize, tileSize, tileSize);
                 Rectangle tileRec = new Rectangle(worldTile.tileLayers[l].Position.X * tileSize, worldTile.tileLayers[l].Position.Y * tileSize, tileSize, tileSize);
                 if (worldTile.tileLayers[l].NumTileMap == -1)
                 {
                     m_layerSpriteBatch.Draw(tileMaps.GetEmptyTile(), drawRec, tileRec, Color.White, 0.0f, Vector2.Zero, SpriteEffects.None, 1.0f);
                 }
                 else
                 {
                     m_layerSpriteBatch.Draw(tileMaps.GetTileMap(worldTile.tileLayers[l].NumTileMap), drawRec, tileRec, Color.White, 0.0f, Vector2.Zero, SpriteEffects.None, 1.0f);
                 }
             }
         }
         m_layerSpriteBatch.End();
     }
     m_layerSpriteBatch.GraphicsDevice.SetRenderTarget(null);
     m_layerSpriteBatch.GraphicsDevice.Clear(Color.Black);
 }
Exemplo n.º 2
0
 public void HandleInput(int tileSize, int nLayers, TileMaps tileMaps, Map currentMap)
 {
     HandleInputTileBox(tileSize);
     HandleInputLayerBox(nLayers);
     HandleInputTileMapSelecter(tileMaps);
     HandleInputOpenButton();
     HandleInputOpenFileWindow();
     HandleInputDeleteButton(currentMap, nLayers);
     HandleInputScrollBars();
     m_prevMouseState = Mouse.GetState();
 }
Exemplo n.º 3
0
        public GameFiles(Texture2D emptyTileTex, Size windowSize, Size numTilesScreen, string filePath)
        {
            m_filePath = filePath;

            if (!Directory.Exists(m_filePath))
            {
                Directory.CreateDirectory(m_filePath);
            }

            tileMaps = new TileMaps(emptyTileTex,
                                    windowSize, numTilesScreen);
        }
Exemplo n.º 4
0
 void HandleInputTileMapSelecter(TileMaps tileMaps)
 {
     m_tileMapSelecter.HandleInput();
     if (m_nActiveTileMap != m_tileMapSelecter.GetValue())
     {
         m_nActiveTileMap = m_tileMapSelecter.GetValue();
         Texture2D tileMap = tileMaps.GetTileMap(m_nActiveTileMap);
         m_activeTileMapSize = new Size(tileMap.Width, tileMap.Height);
         CalculateCropBounds(tileMap);
         ConfigurateScrollBars(tileMaps.TilePixSize());
     }
 }
Exemplo n.º 5
0
        void DrawTileBox(SpriteBatch spriteBatch, TileMaps tileMaps)
        {
            spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.Default, RasterizerState.CullNone);
            Texture2D tileMap = tileMaps.GetTileMap(m_nActiveTileMap);
            Rectangle boxRec  = new Rectangle(m_toolBarLocation.X + m_tileBoxLocation.X - m_tileBoxBorderSize, m_toolBarLocation.Y + m_tileBoxLocation.Y - m_tileBoxBorderSize, m_tileBoxSize.Width + m_tileBoxBorderSize * 2, m_tileBoxSize.Height + m_tileBoxBorderSize * 2);

            spriteBatch.Draw(m_tileBoxTexture, boxRec, null, Color.White, 0.0f, Vector2.Zero, SpriteEffects.None, 0.68f);
            Rectangle cropRec = new Rectangle(m_hScrollBarTileBox.GetValue() * tileMaps.TilePixSize(), m_vScrollBarTileBox.GetValue() * tileMaps.TilePixSize(), m_activeTileMapCropSize.Width, m_activeTileMapCropSize.Height);
            Rectangle drawRec = new Rectangle(m_toolBarLocation.X + m_tileBoxLocation.X, m_toolBarLocation.Y + m_tileBoxLocation.Y, m_activeTileMapCropSize.Width * m_tileZoom, m_activeTileMapCropSize.Height * m_tileZoom);

            spriteBatch.Draw(tileMap, drawRec, cropRec, Color.White, 0.0f, Vector2.Zero, SpriteEffects.None, 0.67f);
            spriteBatch.End();
        }
Exemplo n.º 6
0
        public void Draw(SpriteBatch spriteBatch, Size numTilesScreen, Point camPos, TileMaps tileMaps, Point screenOffset, Size tileScreenSize)
        {
            int tilePixelSize = tileMaps.TilePixSize();

            RenderLayerMaps(tilePixelSize, camPos, numTilesScreen, tileMaps);

            Rectangle drawRec = new Rectangle(screenOffset.X, screenOffset.Y, tileScreenSize.Width * numTilesScreen.Width, tileScreenSize.Height * numTilesScreen.Height);
            Rectangle sRec    = new Rectangle(camPos.X % tilePixelSize, camPos.Y % tilePixelSize, numTilesScreen.Width * tilePixelSize, numTilesScreen.Height * tilePixelSize);

            for (int l = 0; l < m_layerMap.Length; l++)
            {
                spriteBatch.Draw(m_layerMap[l], drawRec, sRec, Color.White, 0.0f, Vector2.Zero, SpriteEffects.None, 1.0f - (0.01f * l));
            }
        }
Exemplo n.º 7
0
        public void Draw(SpriteBatch spriteBatch, TileMaps tileMaps, int nLayers)
        {
            spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.Default, RasterizerState.CullNone);
            Rectangle drawRec = new Rectangle(m_toolBarLocation.X, m_toolBarLocation.Y, m_toolBarSize.Width, m_toolBarSize.Height);

            spriteBatch.Draw(m_backGroundTexture, drawRec, null, Color.White, 0.0f, Vector2.Zero, SpriteEffects.None, 0.7f);
            spriteBatch.End();
            m_tileMapSelecter.Draw(spriteBatch, 0.68f);
            m_openTileMapButton.Draw(spriteBatch, Color.Gold, 0.69f);
            m_deleteTileMapButton.Draw(spriteBatch, Color.White, 0.69f);
            DrawTileBox(spriteBatch, tileMaps);
            DrawLayerBox(spriteBatch, nLayers);
            m_hScrollBarTileBox.Draw(spriteBatch, 0.68f);
            m_vScrollBarTileBox.Draw(spriteBatch, 0.68f);
            m_openFileWindow.Draw(spriteBatch);
        }
        public TileToolBar(Texture2D background, Texture2D floorTex, Texture2D roofTex, Texture2D tileBoxTex, Texture2D arrowLeft, Texture2D arrowRight, Texture2D openTex, Texture2D deleteTex, Texture2D openFileBGTex, Texture2D closeButtonTex, Texture2D folderTex, Texture2D fileTex, Texture2D backButtonTex, Texture2D hScrollBarBGTex, Texture2D hScrollBarButtonTex, Texture2D vScrollBarBGTex, Texture2D vScrollBarButtonTex, SpriteFont numberFont, SpriteFont fileFont, GraphicsDeviceManager graphics, int nLayers, TileMaps tileMaps, Network network)
        {
            if (tileMaps.GetTileMapCount() > 0)
            {
                m_Ready = true;
            }

            m_tileMaps = tileMaps;
            m_network  = network;

            m_backGroundTexture = background;
            m_tileBoxTexture    = tileBoxTex;

            m_toolBarSize     = new Size(graphics.PreferredBackBufferWidth, 320);
            m_toolBarLocation = new Point(0, graphics.PreferredBackBufferHeight - m_toolBarSize.Height);

            m_layerDrawDistance = 17;
            m_layerBoxLocation  = new Point(8, 48);
            m_layerButtonWidth  = 48;
            InitializeFloorLayerButtons(floorTex, nLayers);
            InitializeRoofLayerButtons(roofTex, nLayers);

            m_tileBoxSize       = new Size(640, 256);
            m_activeTileMapSize = m_tileBoxSize;
            m_nActiveTileMap    = 0;
            m_tileBoxLocation   = new Point(m_layerBoxLocation.X + 8 + m_layerButtonWidth, 48);
            m_tileZoom          = 2;
            m_tileBoxBorderSize = 5;

            m_tileMapSelecterLoc  = new Point(0, 14);
            m_tileMapSelecterSize = new Size(96, 32);
            InitializeTileMapSelecter(arrowLeft, arrowRight, numberFont);

            m_openTileMapButtonLoc    = new Point(m_tileBoxLocation.X + m_tileBoxSize.Width + 17, m_tileBoxLocation.Y);
            m_openTileMapButtonSize   = new Size(32, 32);
            m_deleteTileMapButtonLoc  = new Point(m_openTileMapButtonLoc.X, m_openTileMapButtonLoc.Y + m_openTileMapButtonSize.Height + 5);
            m_deleteTileMapButtonSize = new Size(32, 32);
            InitializeTileMapButtons(openTex, deleteTex);
            m_prevMouseState = Mouse.GetState();

            Size          openFileWindowSize = new Size(768, 512);
            List <string> fileTypes          = new List <string>();

            fileTypes.Add(".png");
            Point openFileWindowLocation = new Point(graphics.PreferredBackBufferWidth / 2 - openFileWindowSize.Width / 2, graphics.PreferredBackBufferHeight / 2 - openFileWindowSize.Height / 2);

            m_openFileWindow = new OpenFileWindow(openFileWindowLocation, openFileWindowSize,
                                                  openFileBGTex, closeButtonTex, backButtonTex, folderTex, fileTex, hScrollBarBGTex,
                                                  hScrollBarButtonTex, fileFont, System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyPictures), fileTypes);
            m_openFileWindow.WindowOkEvent += new OkHandler(OpenFileWindowOk);

            m_hScrollBarTileBoxSize = new Size(m_tileBoxSize.Width + m_tileBoxBorderSize * 2, 16);
            m_hScrollBarTileBoxLoc  = new Point(m_tileBoxLocation.X - m_tileBoxBorderSize, m_tileBoxLocation.Y + m_tileBoxSize.Height);
            m_vScrollBarTileBoxSize = new Size(16, m_tileBoxSize.Height + m_tileBoxBorderSize * 2);
            m_vScrollBarTileBoxLoc  = new Point(m_tileBoxLocation.X + m_tileBoxSize.Width, m_tileBoxLocation.Y - m_tileBoxBorderSize);
            InitializeScrollBars(hScrollBarBGTex, hScrollBarButtonTex, vScrollBarBGTex, vScrollBarButtonTex);

            Texture2D tileMap = tileMaps.GetTileMap(m_nActiveTileMap);

            CalculateCropBounds(tileMap);
            ConfigurateScrollBars(tileMaps.TilePixSize());
        }
Exemplo n.º 9
0
        public void HandleInput(Point screenOffset, Map currentMap, Size windowSize, Size tileScreenSize, Camera cam, int tilePixSize, Size numTilesScreen, TileMaps tileMaps)
        {
            MouseState mouseState = Mouse.GetState();
            Point      mousePosLocalGameWindow = new Point(mouseState.X - screenOffset.X, mouseState.Y - screenOffset.Y);

            if (mouseState.Y < m_tileToolBar.GetToolBarLocation().Y)
            {
                if (mouseState.LeftButton == ButtonState.Pressed)
                {
                    if (m_tileToolBar.IsReady())
                    {
                        if (mouseState.X > screenOffset.X && mouseState.X < (windowSize.Width - screenOffset.X))
                        {
                            if (mouseState.Y > screenOffset.Y && mouseState.Y < (windowSize.Height - screenOffset.Y))
                            {
                                if (mouseState.X < m_exitButton.GetLocation().X || mouseState.Y > m_exitButton.GetLocation().Y + m_exitButtonSize.Height)
                                {
                                    Vector2 clickOffSet = new Vector2(((float)cam.Position().X / tilePixSize) - (numTilesScreen.Width / 2), ((float)cam.Position().Y / tilePixSize) - (numTilesScreen.Height / 2));
                                    Point   clickedTile = new Point((int)(((float)mousePosLocalGameWindow.X / tileScreenSize.Width) + clickOffSet.X), (int)(((float)mousePosLocalGameWindow.Y / tileScreenSize.Height) + clickOffSet.Y));
                                    currentMap.SetTile(clickedTile.X, clickedTile.Y, m_tileToolBar.GetActiveTile(), m_tileToolBar.GetActiveTileMap(), m_tileToolBar.GetActivelayer());
                                }
                            }
                        }
                    }
                }
            }
            ControlCamera(cam, tilePixSize, numTilesScreen, currentMap.Width(), currentMap.Height());
            m_tileToolBar.HandleInput(tilePixSize, m_nLayers, tileMaps, currentMap);

            if (m_exitButton.IsClicked())
            {
                FinishedEvent();
            }

            m_prevKeyState = Keyboard.GetState();
        }
Exemplo n.º 10
0
 public void DrawUI(SpriteBatch spriteBatch, TileMaps tileMaps)
 {
     m_tileToolBar.Draw(spriteBatch, tileMaps, m_nLayers);
     m_exitButton.Draw(spriteBatch, Color.IndianRed, 0.0f);
 }
Exemplo n.º 11
0
        public MapEditor(Texture2D toolBarBgTex, Texture2D toolBarFloorLayerTex, Texture2D toolBarRoofLayerTex, Texture2D toolBarTileBoxTex, Texture2D arrowLeft, Texture2D arrowRight, Texture2D openTex, Texture2D deleteTex, Texture2D openFileBGTex, Texture2D closeButtonTex, Texture2D folderTex, Texture2D fileTex, Texture2D backButtonTex, Texture2D hScrollBarBGTex, Texture2D hScrollBarButtonTex, Texture2D vScrollBarBGTex, Texture2D vScrollBarButtonTex, SpriteFont numberFont, SpriteFont fileFont, GraphicsDeviceManager graphics, TileMaps tileMaps, Network network, Size windowSize, Point screenOffset)
        {
            m_tileToolBar = new TileToolBar(toolBarBgTex, toolBarFloorLayerTex, toolBarRoofLayerTex,
                                            toolBarTileBoxTex, arrowLeft, arrowRight, openTex, deleteTex, openFileBGTex,
                                            closeButtonTex, folderTex, fileTex, backButtonTex, hScrollBarBGTex, hScrollBarButtonTex,
                                            vScrollBarBGTex, vScrollBarButtonTex, numberFont, fileFont, graphics, m_nLayers, tileMaps, network);

            m_exitButtonSize = new Size(32, 32);
            InitializeExitButton(new Point(windowSize.Width - m_exitButtonSize.Width - screenOffset.X, 0 + screenOffset.Y), closeButtonTex);
        }