X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fcarfire;a=blobdiff_plain;f=CarFire%2FCarFire%2FCarFire%2FGame.cs;h=2d4c95c381eedff50bb6f32726d691f7643a7c70;hp=f78945b65d21fc85bf8fe94624d4b2af6b16b621;hb=7431a91b0db64e69e994a2bfced6516b2891086e;hpb=08f41ef45f3c41ca6302150bc6d5270c8e7143db diff --git a/CarFire/CarFire/CarFire/Game.cs b/CarFire/CarFire/CarFire/Game.cs index f78945b..2d4c95c 100644 --- a/CarFire/CarFire/CarFire/Game.cs +++ b/CarFire/CarFire/CarFire/Game.cs @@ -15,8 +15,7 @@ namespace CarFire public class GameState { #region Public Properties - private const int hitMonsterScore = 20; - private const int killMonsterScore = 100; + public int HitMonsterScore { get { return hitMonsterScore; } } public int KillMonsterScore { get { return killMonsterScore; } } @@ -31,7 +30,6 @@ namespace CarFire public List mProjectiles = new List(); public Player[] mCharacters; public Display mDisplay; - public AI AIData; #endregion @@ -161,7 +159,8 @@ namespace CarFire #region Private Variables - + private const int hitMonsterScore = 20; + private const int killMonsterScore = 100; int mNumberOfPlayers; public Point[] mMouseLocation; public bool[] mMouseButton; @@ -225,11 +224,17 @@ namespace CarFire { get { - bool[,] grid = State.Map.Grid; + bool[,] grid = (bool[,])State.Map.Grid.Clone(); foreach (IEntity entity in State.Entities) { Point coordinates = entity.Coordinates; - if (State.Map.IsCellOpen(coordinates)) grid[coordinates.X, coordinates.Y] = false; + grid[coordinates.X, coordinates.Y] = false; + } + foreach (Player player in State.mCharacters) + { + if (player == null) continue; + Point coordinates = player.Coordinates; + grid[coordinates.X, coordinates.Y] = false; } return grid; } @@ -279,6 +284,8 @@ namespace CarFire if (!State.Map.IsCellOpen(point)) return false; IEntity entity = GetEntityAtCoordinates(point); if (entity != null && entity.IsCollidable) return false; + Player player = GetPlayerAtCoordinates(point); + if (player != null) return false; return true; } @@ -301,6 +308,15 @@ namespace CarFire public void AdvanceLevel() { // TODO: Load the next map, etc... + //TODO somehow get next map + State.Entities.Clear(); + String nextMap = State.Map.Next; + State.Map = mContentManager.Load("Maps/"+nextMap); + for (int i = 0; i < State.mCharacters.Length; i++) + { + State.mCharacters[i].Coordinates = State.Map.GetStartingPositionForPlayer(i + 1); + } + State.Entities = State.Map.GetAllEntities(this); } /// @@ -316,21 +332,6 @@ namespace CarFire public Game() { - } - /// - /// This method should be called whenever the players want to move to a new map. - /// Not implemented yet. Need some way to get next map. - /// - public void startNewMap() - { - //TODO somehow get next map - State.Entities.Clear(); - //State.Map = State.Map.getNextMap(); - for (int i = 0; i < State.mCharacters.Length; i++) - { - State.mCharacters[i].Coordinates = State.Map.GetStartingPositionForPlayer(i + 1); - } - State.Entities = State.Map.GetAllEntities(this); } public void LoadContent(ContentManager contentManager) { @@ -384,46 +385,46 @@ namespace CarFire // Load the tilemap. Texture2D mapTiles = mContentManager.Load("graphics/wallAndFloorTilesNoEdgeScale"); Tilemap tilemap = new Tilemap(mapTiles, 10, 7); - 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(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(3, 2), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('#', new Point(4, 2), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('$', new Point(5, 2), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('%', new Point(6, 2), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('^', new Point(8, 2), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('&', new Point(9, 2), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('*', new Point(0, 3), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('(', new Point(1, 3), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile(')', new Point(2, 3), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('-', new Point(3, 3), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('=', new Point(4, 3), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('_', new Point(5, 3), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('+', new Point(6, 3), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('|', new Point(8, 3), TileFlags.Closed | TileFlags.Wall); + tilemap.SetTile('[', new Point(0, 4), TileFlags.Default); + 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(7, 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); + tilemap.SetTile('"', new Point(3, 5), TileFlags.Default); + tilemap.SetTile(' ', new Point(4, 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 = mContentManager.Load("Maps/colosseumClosed"); State.Entities = State.Map.GetAllEntities(this); - //State.AIData = new AI(this); + mAIData = new AI(this); /* mPlayers.Clear(); @@ -444,6 +445,8 @@ namespace CarFire */ } + public AI AIData { get { return mAIData; } } + public long CurrentFrameNumber { get { return State.FrameNumber; } @@ -491,6 +494,24 @@ namespace CarFire { State.AdvanceFrame(mInputs, elapsedTime.Milliseconds); // Apply the inputs, advance game state. State.mDisplay.Update(elapsedTime, mThisPlayerID); + /* + State.Entities.ForEach(delegate(IEntity e) + { + IMonster m = e as IMonster; + if (m != null) + { + if (State.mCharacters[0] != null && mAIData.spaceVisible(e.Coordinates, State.mCharacters[0].Coordinates)) + { + m.Chasing(State.mCharacters[0].Coordinates); + } + else + { + m.DefaultAction(); + } + } + e.Update(elapsedTime); + }); + */ State.Entities.ForEach(delegate(IEntity e) { e.Update(elapsedTime); }); mInputs = new NextInputs(State.NumberOfPlayers); // Start with inputs cleared on the next frame. //mDisplay.Update(elapsedTime); @@ -538,7 +559,7 @@ namespace CarFire #region Private Variables SpriteFont menu; - + AI mAIData; ContentManager mContentManager; NextInputs mInputs;