set { mView.CenterCell = value; }\r
}\r
\r
+ /// <summary>\r
+ /// Get and set the zoom of the map view. The default zoom is\r
+ /// Map.PixelsToUnitSquares.\r
+ /// </summary>\r
public float Zoom\r
{\r
get { return mView.Zoom; }\r
set { mView.Zoom = value; }\r
}\r
\r
+\r
+ /// <summary>\r
+ /// Get and set the associated game object.\r
+ /// </summary>\r
+ public Game Game\r
+ {\r
+ get { return mData.Game; }\r
+ set { mData.Game = value; }\r
+ }\r
+\r
#endregion\r
\r
\r
public Map(Metadata metadata, char[,] grid, char defaultTile,\r
List<RawEntity> entities, Point[] playerPositions)\r
{\r
- mData = new Modal(metadata, grid, defaultTile, entities, playerPositions);\r
+ mData = new Model(metadata, grid, defaultTile, entities, playerPositions);\r
mView = new View(mData);\r
}\r
\r
/// thrown if there are entities without associated classes.\r
/// </summary>\r
/// <returns>List of entity objects loaded.</returns>\r
- public List<object> GetAllEntities()\r
+ public List<IEntity> GetAllEntities()\r
{\r
return mData.GetAllEntities();\r
}\r
\r
#region Private Types\r
\r
- class Modal\r
+ class Model\r
{\r
public Metadata Metadata { get { return mMetadata; } }\r
public List<RawEntity> Entities { get { return mEntities; } }\r
public Point[] PlayerPositions { get { return mPlayerPositions; } }\r
public bool[,] Grid { get { return mBooleanGrid; } }\r
\r
+ public Game Game;\r
+\r
\r
- public Modal(Metadata metadata, char[,] grid, char defaultTile,\r
+ public Model(Metadata metadata, char[,] grid, char defaultTile,\r
List<RawEntity> entities, Point[] playerPositions)\r
{\r
Debug.Assert(metadata != null);\r
}\r
\r
\r
- public List<object> GetAllEntities()\r
+ public List<IEntity> GetAllEntities()\r
{\r
- List<object> list = new List<object>();\r
+ List<IEntity> list = new List<IEntity>();\r
\r
foreach (RawEntity raw in mEntities)\r
{\r
{\r
string typename = raw.Attributes["type"];\r
\r
- object[] args = new object[3];\r
+ object[] args = new object[4];\r
args[0] = raw.Id;\r
args[1] = raw.Position;\r
args[2] = raw.Attributes;\r
+ args[3] = Game;\r
\r
try\r
{\r
-\r
- object entity = Activator.CreateInstance(System.Type.GetType("CarFire." + typename), args);\r
- if (entity != null) list.Add(entity);\r
+ IEntity entity = (IEntity)Activator.CreateInstance(System.Type.GetType("CarFire." + typename), args);\r
+ if (entity != null)\r
+ {\r
+ entity.LoadContent(Game.ContentManager);\r
+ list.Add(entity);\r
+ }\r
else throw new RuntimeException();\r
}\r
#pragma warning disable 0168\r
{\r
if (raw.Attributes.ContainsKey("type") && typename == raw.Attributes["type"])\r
{\r
- object[] args = new object[3];\r
+ object[] args = new object[4];\r
args[0] = raw.Id;\r
args[1] = raw.Position;\r
args[2] = raw.Attributes;\r
+ args[3] = Game;\r
\r
T entity = (T)Activator.CreateInstance(type, args);\r
- if (entity != null) list.Add(entity);\r
+ if (entity != null)\r
+ {\r
+ ((IEntity)entity).LoadContent(Game.ContentManager);\r
+ list.Add(entity);\r
+ }\r
else throw new RuntimeException("Entity of type " + typename + " not loaded because an entity class can't be found.");\r
}\r
}\r
public float Zoom;\r
\r
\r
- public View(Modal data)\r
+ public View(Model data)\r
{\r
Debug.Assert(data != null);\r
mData = data;\r
}\r
\r
\r
- Modal mData;\r
+ Model mData;\r
Viewport mViewport;\r
}\r
\r
\r
#region Private Variables\r
\r
- Modal mData;\r
+ Model mData;\r
View mView;\r
\r
#endregion\r