// 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; }
//----------------------------------------------------------------------------- // 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; } } }