X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fcarfire;a=blobdiff_plain;f=CarFire%2FCarFire%2FCarFire%2FGame.cs;h=a2b6cafb7e0f26f1a4121fc53b5ab97a41c3126d;hp=d213f2e279a6e0400015eb7b4d518884b94e7298;hb=d0bdd76b2cfd38fe985a7493f42b5d6e0f79ac91;hpb=5929d5818dbc0a0c22838678ee8a34f4c512d2ba diff --git a/CarFire/CarFire/CarFire/Game.cs b/CarFire/CarFire/CarFire/Game.cs index d213f2e..a2b6caf 100644 --- a/CarFire/CarFire/CarFire/Game.cs +++ b/CarFire/CarFire/CarFire/Game.cs @@ -9,27 +9,76 @@ using Microsoft.Xna.Framework.Input; namespace CarFire { + //code from Prof Jensen's TestHarness + // This class encapsulates inputs from the players. + public class NextInputs + { + public List[] keysPressed; + public List[] keysReleased; + public int[] mouseLocationX; + public int[] mouseLocationY; + public bool[] mouseLocationChanged; + public bool[] mousePressed; + public bool[] mousePressedChanged; + + public NextInputs() + { + keysPressed = new List[4]; + keysReleased = new List[4]; + mouseLocationX = new int[4]; + mouseLocationY = new int[4]; + mouseLocationChanged = new bool[4]; + mousePressed = new bool[4]; + mousePressedChanged = new bool[4]; + for (int i = 0; i < 4; i++) + keysPressed[i] = new List(); + for (int i = 0; i < 4; i++) + keysReleased[i] = new List(); + } + } + public class Game : IDeterministicGame { #region IDeterministicGame Members List mPlayers; + NextInputs inputs; + Object[] playerIdentifiers; Display mDisplay; Map mMap; public Game() { mDisplay = new Display(); + mPlayers = new List(); } public void LoadContent(ContentManager contentManager) { //Texture2D everything = contentManager.Load("default"); mDisplay.LoadContent(contentManager); + int currentCenterX = 5; //Creates a map like the one in Display + int currentCenterY = 5; + mMap = contentManager.Load("Maps/stable"); + Map.DefaultTile = contentManager.Load("default"); + mMap.CenterCell = new Vector2(currentCenterX, currentCenterY); + + Human player = new Human(mMap, ""); + player.LoadContent(contentManager); + mPlayers.Add(player); + mDisplay.AddCharacters(player); } public void UnloadContent() { } + private int idPlayer(Object playerIdentifier) + { + for (int i = 0; i < playerIdentifiers.Length; i++) + if (playerIdentifiers[i] == playerIdentifier) + return i; + throw new Exception("Illegal player identifier" + playerIdentifier); + } + public Vector2 PreferredScreenSize { get { return new Vector2(800, 600); } @@ -47,6 +96,10 @@ namespace CarFire public void ResetGame(object[] playerIdentifiers, object thisPlayer) { + foreach (IPlayer player in mPlayers) + { + player.Spawn(mMap.CenterCell); + } } public long CurrentFrameNumber @@ -61,6 +114,14 @@ namespace CarFire public void ApplyKeyInput(object playerIdentifier, Keys key, bool isKeyPressed) { + //code from Prof Jensen's TestHarness + int player = idPlayer(playerIdentifier); + + if (isKeyPressed && !inputs.keysPressed[player].Contains(key)) + inputs.keysPressed[player].Add(key); + + if (!isKeyPressed && !inputs.keysReleased[player].Contains(key)) + inputs.keysReleased[player].Add(key); } public void ApplyMouseLocationInput(object playerIdentifier, int x, int y)