X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fcarfire;a=blobdiff_plain;f=CarFire%2FCarFire%2FCarFire%2FGame.cs;h=f78945b65d21fc85bf8fe94624d4b2af6b16b621;hp=e42a827b8d93f920bf613415e917037c88ad48a4;hb=08f41ef45f3c41ca6302150bc6d5270c8e7143db;hpb=f67652c2fe85f9ba6c71dedbab26760775004e00 diff --git a/CarFire/CarFire/CarFire/Game.cs b/CarFire/CarFire/CarFire/Game.cs index e42a827..f78945b 100644 --- a/CarFire/CarFire/CarFire/Game.cs +++ b/CarFire/CarFire/CarFire/Game.cs @@ -31,7 +31,7 @@ namespace CarFire public List mProjectiles = new List(); public Player[] mCharacters; public Display mDisplay; - //public AI AIData; + public AI AIData; #endregion @@ -240,6 +240,11 @@ namespace CarFire #region Public Methods + /// + /// Get an entity at a certain place on the map. + /// + /// The coordinates. + /// The entity, or null if none is at that location. public IEntity GetEntityAtCoordinates(Point point) { foreach (IEntity entity in State.Entities) @@ -249,6 +254,11 @@ namespace CarFire return null; } + /// + /// Get a player at a certain place on the map. + /// + /// The coordinates. + /// The player, or null if none is at that location. public Player GetPlayerAtCoordinates(Point point) { foreach (Player player in State.mCharacters) @@ -258,13 +268,51 @@ namespace CarFire return null; } + /// + /// Determine if a cell is open, depending on the static scenery + /// of the map and if there are any collidable entities. + /// + /// The coordinates. + /// True if the cell is open; false otherwise. public bool IsCellOpen(Point point) { if (!State.Map.IsCellOpen(point)) return false; - if (GetEntityAtCoordinates(point) != null) return false; + IEntity entity = GetEntityAtCoordinates(point); + if (entity != null && entity.IsCollidable) return false; return true; } + /// + /// Remove a specific entity from the game. The entity can still + /// be tracked some other way, but it won't included when the game is + /// updating and drawing stuff. + /// + /// The entity. + /// The entity that was removed, or null if no entity was removed. + public IEntity RemoveEntity(IEntity entity) + { + if (State.Entities.Remove(entity)) return entity; + return null; + } + + /// + /// Move on to the next map, and advance the level. + /// + public void AdvanceLevel() + { + // TODO: Load the next map, etc... + } + + /// + /// Restart the current level. + /// + public void Reset() + { + State.Map.Reset(); + // TODO: Do other stuff to reset everything. + } + + public Game() { @@ -333,44 +381,46 @@ namespace CarFire State.mDisplay = new Display(this); State.mDisplay.LoadContent(mContentManager); + // Load the tilemap. Texture2D mapTiles = mContentManager.Load("graphics/wallAndFloorTilesNoEdgeScale"); Tilemap tilemap = new Tilemap(mapTiles, 10, 7); - tilemap.SetTile(' ', new Point(4, 5)); - tilemap.SetTile('`', new Point(0, 1)); - tilemap.SetTile('~', new Point(1, 1)); - tilemap.SetTile('!', new Point(3, 1)); - tilemap.SetTile('@', new Point(4, 1)); - tilemap.SetTile('#', new Point(5, 1)); - tilemap.SetTile('$', new Point(6, 1)); - tilemap.SetTile('%', new Point(8, 1)); - tilemap.SetTile('^', new Point(9, 1)); - tilemap.SetTile('&', new Point(0, 2)); - tilemap.SetTile('=', new Point(1, 2)); - tilemap.SetTile('*', new Point(2, 2)); - tilemap.SetTile('(', new Point(4, 2)); - tilemap.SetTile(')', new Point(0, 3)); - tilemap.SetTile('_', new Point(2, 3)); - tilemap.SetTile('-', new Point(9, 3)); - tilemap.SetTile(',', new Point(1, 4)); - tilemap.SetTile('+', new Point(2, 4)); - tilemap.SetTile('[', new Point(3, 4)); - tilemap.SetTile(']', new Point(4, 4)); - tilemap.SetTile('{', new Point(5, 4)); - tilemap.SetTile('}', new Point(6, 4)); - tilemap.SetTile('\\', new Point(8, 4)); - tilemap.SetTile('|', new Point(9, 4)); - tilemap.SetTile(';', new Point(0, 5)); - tilemap.SetTile(':', new Point(1, 5)); - tilemap.SetTile('\'', new Point(2, 5)); - tilemap.SetTile('"', new Point(3, 5)); - tilemap.SetTile('.', new Point(5, 5)); - tilemap.SetTile('<', new Point(6, 5)); - tilemap.SetTile('>', new Point(7, 5)); - tilemap.SetTile('/', new Point(8, 5)); - tilemap.SetTile('?', new Point(9, 5)); - + tilemap.SetTile(' ', new Point(4, 5), TileFlags.Default); + tilemap.SetTile('`', new Point(0, 1), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('~', new Point(1, 1), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('!', new Point(3, 1), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('@', new Point(4, 1), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('#', new Point(5, 1), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('$', new Point(6, 1), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('%', new Point(8, 1), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('^', new Point(9, 1), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('&', new Point(0, 2), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('=', new Point(1, 2), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('*', new Point(2, 2), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('(', new Point(4, 2), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile(')', new Point(0, 3), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('_', new Point(2, 3), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('-', new Point(9, 3), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile(',', new Point(1, 4), TileFlags.Default); + tilemap.SetTile('+', new Point(2, 4), TileFlags.Default); + tilemap.SetTile('[', new Point(3, 4), TileFlags.Default); + tilemap.SetTile(']', new Point(4, 4), TileFlags.Default); + tilemap.SetTile('{', new Point(5, 4), TileFlags.Default); + tilemap.SetTile('}', new Point(6, 4), TileFlags.Default); + tilemap.SetTile('\\', new Point(8, 4), TileFlags.Default); + tilemap.SetTile('|', new Point(9, 4), TileFlags.Default); + tilemap.SetTile(';', new Point(0, 5), TileFlags.Default); + tilemap.SetTile(':', new Point(1, 5), TileFlags.Default); + tilemap.SetTile('\'', new Point(2, 5), TileFlags.Default); + tilemap.SetTile('"', new Point(3, 5), TileFlags.Default); + tilemap.SetTile('.', new Point(5, 5), TileFlags.Default); + tilemap.SetTile('<', new Point(6, 5), TileFlags.Default); + tilemap.SetTile('>', new Point(7, 5), TileFlags.Default); + tilemap.SetTile('/', new Point(8, 5), TileFlags.Default); + tilemap.SetTile('?', new Point(9, 5), TileFlags.Default); + Map.Tilemap = tilemap; + + // Load the first map. State.Map = mContentManager.Load("Maps/level1"); - State.Map.Tilemap = tilemap; State.Entities = State.Map.GetAllEntities(this); //State.AIData = new AI(this);