public AttackingUnit(Level initial) : base(initial) { }
public MultiLevelEntity(Level level) : base() { this.Level = level; }
public MovableUnit(Level initial) : base(initial) { }
public void LoadMultiLevel(string name) { // Get a mapping of level instances to tilesets. Dictionary<Level, string> mapping = this.GetLevelToTilesetMapping(name); // Perform the actual level switch. this.m_Levels = mapping.Keys.ToArray(); this.m_Tilesets = TilesetXmlLoader.MultiLoad(Path.Combine(World.BaseDirectory, "Resources/" + name + ".oel"), mapping.Values.ToArray()); for (int i = 0; i < this.m_Levels.Length; i++) { foreach (Tile t in this.m_Tilesets[i].AsLinear()) if (t is MultiLevelEntityTile) { this.m_Levels[i].Entities.Add(t as MultiLevelEntityTile); if (t is IMultiLevelEntity) (t as IMultiLevelEntity).Level = this.m_Levels[i]; } else if (t is EntityTile) throw new InvalidOperationException("All entity tiles must derive from MultiLevelEntityTile for MultiLevelWorld."); else if (t is SolidTile && this.m_Levels[i] is PathFindingLevel) { // Mark areas in the level's path finding that are solid. for (int x = (int)(t as SolidTile).X; x < (int)(t as SolidTile).X + (t as SolidTile).Width; x += Tileset.TILESET_CELL_WIDTH) for (int y = (int)(t as SolidTile).Y; y < (int)(t as SolidTile).Y + (t as SolidTile).Height; y += Tileset.TILESET_CELL_HEIGHT) (this.m_Levels[i] as PathFindingLevel).PathMarkTile(x, y, true); } } // Set initial active level. this.m_ActiveLevel = this.m_Levels[0]; }
public Unit(Level initial) : base(initial) { }