Exemplo n.º 1
0
        // Load a single room from an java level file.
        public static Room LoadJavaRoom(BinaryReader bin, Level level, int locX, int locY)
        {
            byte width		= bin.ReadByte();
            byte height		= bin.ReadByte();
            level.RoomSize	= new Point2I(width, height);
            Room room		= new Room(level, locX, locY);
            room.Zone		= GameData.ZONE_SUMMER;

            // Read the tile data.
            for (int y = 0; y < height; y++) {
                for (int x = 0; x < width; x++) {
                    byte tilesetIndex = bin.ReadByte();

                    if (tilesetIndex > 0) {
                        Tileset tileset = GameData.TILESET_OVERWORLD;
                        if (tilesetIndex == 2)
                            tileset = GameData.TILESET_INTERIOR;
                        byte tilesetSourceX = bin.ReadByte();
                        byte tilesetSourceY = bin.ReadByte();
                        room.CreateTile(tileset.TileData[tilesetSourceX, tilesetSourceY], x, y, 0);
                    }
                    else {
                        // Only use default tiles on bottom layer.
                        Tileset tileset = GameData.TILESET_OVERWORLD;
                        room.CreateTile(tileset.TileData[tileset.DefaultTile.X, tileset.DefaultTile.Y], x, y, 0);
                    }

                }
            }

            return room;
        }
Exemplo n.º 2
0
        //-----------------------------------------------------------------------------
        // Internal methods
        //-----------------------------------------------------------------------------
        private void ActivateTile(MouseButtons mouseButton, Room room, Point2I tileLocation)
        {
            if (mouseButton == MouseButtons.Left) {
                room.CreateTile(
                    editorControl.SelectedTilesetTileData,
                    tileLocation.X, tileLocation.Y, editorControl.CurrentLayer
                );

            }
            else if (mouseButton == MouseButtons.Right) {
                if (editorControl.CurrentLayer == 0) {
                    room.CreateTile(
                        editorControl.Tileset.DefaultTileData,
                        tileLocation.X, tileLocation.Y, editorControl.CurrentLayer
                    );
                }
                else {
                    room.RemoveTile(tileLocation.X, tileLocation.Y, editorControl.CurrentLayer);
                }
            }
            else if (mouseButton == MouseButtons.Middle) {
                // Sample the tile.
                TileDataInstance tile = room.GetTile(tileLocation, EditorControl.CurrentLayer);
                if (tile != null) {
                    editorControl.SelectedTilesetTile = -Point2I.One;
                    editorControl.SelectedTilesetTileData = tile.TileData;
                }
            }
        }