public LevelTreeNode(Level level) { this.level = level; ImageIndex = 2; SelectedImageIndex = 2; Text = level.Id; Name = "level"; }
//----------------------------------------------------------------------------- // Constructor //----------------------------------------------------------------------------- public RoomControl() { level = null; room = null; tiles = null; roomLocation = Point2I.Zero; entities = new List<Entity>(); eventTiles = new List<EventTile>(); viewControl = new ViewControl(); }
public bool FindDestinationInLevel(string id, Level level, out Room destRoom, out EventTileDataInstance destEvent) { for (int x = 0; x < level.Width; x++) { for (int y = 0; y < level.Height; y++) { if (FindDestinationInRoom(id, level.GetRoomAt(x, y), out destRoom, out destEvent)) return true; } } destRoom = null; destEvent = null; return false; }
//----------------------------------------------------------------------------- // Constructors //----------------------------------------------------------------------------- public Room(Level level, int x, int y) { this.level = level; this.location = new Point2I(x, y); this.tileData = new TileDataInstance[level.RoomSize.X, level.RoomSize.Y, level.RoomLayerCount]; this.eventData = new List<EventTileDataInstance>(); this.zone = null; this.properties = new Properties(); this.properties.PropertyObject = this; this.properties.BaseProperties = new Properties(); this.properties.BaseProperties.Set("id", "") .SetDocumentation("ID", "", "", "The id used to refer to this room.", true, false); this.properties.BaseProperties.Set("music", "") .SetDocumentation("Music", "song", "", "The music to play in this room. Select none to choose the default music.", true, false); this.properties.BaseProperties.Set("zone", "") .SetDocumentation("Zone", "zone", "", "The zone type for this room.", true, false); }
private TileDataInstance[,,] tileData; // 3D grid of tile data (x, y, layer) #endregion Fields #region Constructors //----------------------------------------------------------------------------- // Constructors //----------------------------------------------------------------------------- public Room(Level level, int x, int y, Zone zone = null) { this.level = level; this.location = new Point2I(x, y); this.tileData = new TileDataInstance[level.RoomSize.X, level.RoomSize.Y, level.RoomLayerCount]; this.eventData = new List<EventTileDataInstance>(); //this.zone = zone; this.events = new ObjectEventCollection(); this.properties = new Properties(); this.properties.PropertyObject = this; this.properties.BaseProperties = new Properties(); properties.BaseProperties.Set("id", "") .SetDocumentation("ID", "", "", "", "The id used to refer to this room.", true, false); properties.BaseProperties.Set("music", "") .SetDocumentation("Music", "song", "", "", "The music to play in this room. Select none to choose the default music.", true, false); properties.BaseProperties.Set("zone", "") .SetDocumentation("Zone", "zone", "", "", "The zone type for this room.", true, false); properties.BaseProperties.Set("discovered", false); properties.BaseProperties.Set("hidden_from_map", false); properties.BaseProperties.Set("boss_room", false); events.AddEvent("event_room_start", "Room Start", "Occurs when the room begins."); properties.BaseProperties.Set("event_room_start", "") .SetDocumentation("Room Start", "script", "", "Events", "Occurs when the room begins."); events.AddEvent("event_all_monsters_dead", "All Monsters Dead", "Occurs when all monsters are dead."); properties.BaseProperties.Set("event_all_monsters_dead", "") .SetDocumentation("All Monsters Dead", "script", "", "Events", "Occurs when all monsters are dead."); // Room Flags: // - sidescroll ??? could be in Zone // - underwater ??? could be in Zone // - discovered // - hiddenFromMap // - boss // - trasure // - signal /*if (zone != null) this.properties.Set("zone", zone.ID);*/ }
//----------------------------------------------------------------------------- // Mutators //----------------------------------------------------------------------------- public void AddLevel(Level level) { levels.Add(level); level.World = this; }
public void SetSelectionGridArea(Rectangle2I area, Level level) { PlaceSelectionGrid(); selectionGridArea = area; selectionGridLevel = level; SetSelectionBox(selectionGridArea.Point * GameSettings.TILE_SIZE, selectionGridArea.Size * GameSettings.TILE_SIZE); }
// Return an enumerable lits of placed tiles in the given level. private IEnumerable<IPropertyObject> GetPropertyObjectsInLevel(Level level) { foreach (Room room in level.GetRooms()) { foreach (TileDataInstance tile in room.GetTiles()) yield return tile; foreach (EventTileDataInstance tile in room.EventData) yield return tile; } }
// Open the given level index in the level display. public void OpenLevel(int index) { level = world.Levels[index]; editorForm.LevelDisplay.UpdateLevel(); UpdateWindowTitle(); propertyGridControl.OpenProperties(level.Properties, level); }
// Close the world file. public void CloseFile() { if (IsWorldOpen) { propertyGridControl.CloseProperties(); world = null; level = null; hasMadeChanges = false; worldFilePath = ""; editorForm.LevelTreeView.Nodes.Clear(); } }
private void buttonTreeViewNewLevel_Click(object sender, EventArgs e) { using (LevelAddForm form = new LevelAddForm()) { if (form.ShowDialog(this) == DialogResult.OK) { Level level = new Level(form.LevelName, form.LevelWidth, form.LevelHeight, form.LevelLayerCount, form.LevelRoomSize, form.LevelZone); editorControl.AddLevel(level, true); treeViewWorld.SelectedNode = treeViewWorld.Nodes[0].Nodes[0].Nodes[treeViewWorld.Nodes[0].Nodes[0].Nodes.Count - 1]; } } }
// Close the world file. public void CloseFile() { if (IsWorldOpen) { PropertyGrid.CloseProperties(); world = null; level = null; hasMadeChanges = false; worldFilePath = ""; RefreshWorldTreeView(); } }
// Add a new level the world, and open it if specified. public void AddLevel(Level level, bool openLevel) { world.Levels.Add(level); RefreshWorldTreeView(); if (openLevel) OpenLevel(world.Levels.Count - 1); }
public void BeginRoom(Room room) { this.room = room; this.roomLocation = room.Location; this.level = room.Level; // Clear event tiles. eventTiles.Clear(); // Clear all entities from the old room (except for the player). entities.Clear(); if (Player != null) { Player.Initialize(this); entities.Add(Player); } // Create the tile grid. tiles = new Tile[room.Width, room.Height, room.LayerCount]; for (int x = 0; x < room.Width; x++) { for (int y = 0; y < room.Height; y++) { for (int i = 0; i < room.LayerCount; i++) { TileDataInstance data = room.TileData[x, y, i]; tiles[x, y, i] = null; if (data != null) tiles[x, y, i] = Tile.CreateTile(data); } } } // Create the event tiles. eventTiles.Capacity = room.EventData.Count; for (int i = 0; i < room.EventData.Count; i++) { EventTileDataInstance data = room.EventData[i]; EventTile eventTile = EventTile.CreateEvent(data); eventTiles.Add(eventTile); } // Initialize the tiles. for (int x = 0; x < room.Width; x++) { for (int y = 0; y < room.Height; y++) { for (int i = 0; i < room.LayerCount; i++) { Tile t = tiles[x, y, i]; if (t != null) t.Initialize(this); } } } // Initialize the event tiles. for (int i = 0; i < eventTiles.Count; i++) { eventTiles[i].Initialize(this); } viewControl.Bounds = RoomBounds; viewControl.ViewSize = GameSettings.VIEW_SIZE; }
public DungeonFloor(Level level, int floorNumber) { this.level = level; this.floorNumber = floorNumber; }
public void RemoveLevel(Level level) { levels.Remove(level); }
// Open the given level. public void OpenLevel(Level level) { this.level = level; editorForm.LevelDisplay.UpdateLevel(); UpdateWindowTitle(); PropertyGrid.OpenProperties(level.Properties, level); }
// Load a level from an java level file. public static Level LoadJavaLevel(string filename) { BinaryReader bin = new BinaryReader(File.OpenRead(filename)); int width = bin.ReadByte(); int height = bin.ReadByte(); Level level = new Level(width, height, GameSettings.ROOM_SIZE_SMALL); // Load the rooms in the level. for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { level.Rooms[x, y] = LoadJavaRoom(bin, level, x, y); } } level.RoomSize = level.Rooms[0, 0].Size; level.RoomLayerCount = level.Rooms[0, 0].LayerCount; bin.Close(); return level; }
// Add Level... private void addLevelToolStripMenuItem_Click(object sender, EventArgs e) { using (LevelAddForm form = new LevelAddForm()) { if (form.ShowDialog(this) == DialogResult.OK) { Level level = new Level(form.LevelName, form.LevelWidth, form.LevelHeight, form.LevelLayerCount, form.LevelRoomSize, form.LevelZone); editorControl.AddLevel(level, true); } } }
// 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; }
// Add a new level the world, and open it if specified. public void AddLevel(Level level, bool openLevel) { world.Levels.Add(level); // Add node in level list. //TreeNode levelNode = new TreeNode(level.Name); //editorForm.LevelTreeView.Nodes[0].Nodes.Add(levelNode); //levelNode.ContextMenuStrip = editorForm.ContextMenuLevelSelect; RefreshWorldTreeView(); if (openLevel) OpenLevel(world.Levels.Count - 1); }
// Add New Level... private void addLevelToolStripMenuItem_Click(object sender, EventArgs e) { using (LevelAddForm form = new LevelAddForm(editorControl.World)) { if (form.ShowDialog(this) == DialogResult.OK) { Level level = new Level(form.LevelName, form.LevelWidth, form.LevelHeight, GameSettings.DEFAULT_TILE_LAYER_COUNT, form.LevelRoomSize, form.LevelZone); // Setup the level with default tiles. level.FillWithDefaultTiles(); editorControl.AddLevel(level, true); } } }
public void CloseLevel() { level = null; editorForm.LevelDisplay.UpdateLevel(); UpdateWindowTitle(); propertyGridControl.CloseProperties(); }
public void SetSelectionGrid(TileGrid tileGrid, Point2I location, Level level) { PlaceSelectionGrid(); selectionGridArea = new Rectangle2I(location, tileGrid.Size); selectionGridLevel = level; selectionGrid = tileGrid; SetSelectionBox(selectionGridArea.Point * GameSettings.TILE_SIZE, selectionGridArea.Size * GameSettings.TILE_SIZE); }
//----------------------------------------------------------------------------- // Constructors //----------------------------------------------------------------------------- public EditorControl() { this.propertyGridControl = null; this.worldFilePath = String.Empty; this.worldFileName = "untitled"; this.world = null; this.level = null; this.tileset = null; this.zone = null; this.rewardManager = null; this.inventory = null; this.timer = null; this.ticks = 0; this.roomSpacing = 1; this.playAnimations = false; this.isInitialized = false; this.hasMadeChanges = false; this.currentLayer = 0; this.currentToolIndex = 0; this.aboveTileDrawMode = TileDrawModes.Fade; this.belowTileDrawMode = TileDrawModes.Fade; this.showRewards = true; this.showGrid = false; this.showEvents = false; this.highlightMouseTile = true; this.selectedRoom = -Point2I.One; this.selectedTile = -Point2I.One; this.selectedTilesetTile = Point2I.Zero; this.selectedTilesetTileData = null; this.playerPlaceMode = false; this.sampleFromAllLayers = false; }
//----------------------------------------------------------------------------- // Mutators //----------------------------------------------------------------------------- public void AddLevel(Level level) { levels.Add(level); }