X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fcarfire;a=blobdiff_plain;f=CarFire%2FCarFire%2FCarFire%2FMap.cs;h=8c744bad3e8a96962288d966ea47c991911d099a;hp=2440f121ac6014a16cfdff81984e1348081afe44;hb=af9deb873b24dadd0d509ce199fc6cac2b3efbc9;hpb=1368c1af3d7a4a12b0b0577dbe3edbfd254e2d04 diff --git a/CarFire/CarFire/CarFire/Map.cs b/CarFire/CarFire/CarFire/Map.cs index 2440f12..8c744ba 100644 --- a/CarFire/CarFire/CarFire/Map.cs +++ b/CarFire/CarFire/CarFire/Map.cs @@ -156,12 +156,26 @@ namespace CarFire set { mView.CenterCell = value; } } + /// + /// Get and set the zoom of the map view. The default zoom is + /// Map.PixelsToUnitSquares. + /// public float Zoom { get { return mView.Zoom; } set { mView.Zoom = value; } } + + /// + /// Get and set the associated game object. + /// + public Game Game + { + get { return mData.Game; } + set { mData.Game = value; } + } + #endregion @@ -176,7 +190,7 @@ namespace CarFire public Map(Metadata metadata, char[,] grid, char defaultTile, List entities, Point[] playerPositions) { - mData = new Modal(metadata, grid, defaultTile, entities, playerPositions); + mData = new Model(metadata, grid, defaultTile, entities, playerPositions); mView = new View(mData); } @@ -274,7 +288,7 @@ namespace CarFire /// thrown if there are entities without associated classes. /// /// List of entity objects loaded. - public List GetAllEntities() + public List GetAllEntities() { return mData.GetAllEntities(); } @@ -347,15 +361,17 @@ namespace CarFire #region Private Types - class Modal + class Model { public Metadata Metadata { get { return mMetadata; } } public List Entities { get { return mEntities; } } public Point[] PlayerPositions { get { return mPlayerPositions; } } public bool[,] Grid { get { return mBooleanGrid; } } + public Game Game; + - public Modal(Metadata metadata, char[,] grid, char defaultTile, + public Model(Metadata metadata, char[,] grid, char defaultTile, List entities, Point[] playerPositions) { Debug.Assert(metadata != null); @@ -422,9 +438,9 @@ namespace CarFire } - public List GetAllEntities() + public List GetAllEntities() { - List list = new List(); + List list = new List(); foreach (RawEntity raw in mEntities) { @@ -432,16 +448,20 @@ namespace CarFire { string typename = raw.Attributes["type"]; - object[] args = new object[3]; + object[] args = new object[4]; args[0] = raw.Id; args[1] = raw.Position; args[2] = raw.Attributes; + args[3] = Game; try { - - object entity = Activator.CreateInstance(System.Type.GetType("CarFire." + typename), args); - if (entity != null) list.Add(entity); + IEntity entity = (IEntity)Activator.CreateInstance(System.Type.GetType("CarFire." + typename), args); + if (entity != null) + { + entity.LoadContent(Game.ContentManager); + list.Add(entity); + } else throw new RuntimeException(); } #pragma warning disable 0168 @@ -470,13 +490,18 @@ namespace CarFire { if (raw.Attributes.ContainsKey("type") && typename == raw.Attributes["type"]) { - object[] args = new object[3]; + object[] args = new object[4]; args[0] = raw.Id; args[1] = raw.Position; args[2] = raw.Attributes; + args[3] = Game; T entity = (T)Activator.CreateInstance(type, args); - if (entity != null) list.Add(entity); + if (entity != null) + { + ((IEntity)entity).LoadContent(Game.ContentManager); + list.Add(entity); + } else throw new RuntimeException("Entity of type " + typename + " not loaded because an entity class can't be found."); } } @@ -500,7 +525,7 @@ namespace CarFire public float Zoom; - public View(Modal data) + public View(Model data) { Debug.Assert(data != null); mData = data; @@ -581,7 +606,7 @@ namespace CarFire } - Modal mData; + Model mData; Viewport mViewport; } @@ -590,7 +615,7 @@ namespace CarFire #region Private Variables - Modal mData; + Model mData; View mView; #endregion