X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fcarfire;a=blobdiff_plain;f=CarFire%2FCarFire%2FCarFire%2FMap.cs;h=8c744bad3e8a96962288d966ea47c991911d099a;hp=93dc5ef6ba181c1f678298bf79015a0c62d6c118;hb=af9deb873b24dadd0d509ce199fc6cac2b3efbc9;hpb=681f16a95c1c67bdd40ed16842a70f8e10ba31e1 diff --git a/CarFire/CarFire/CarFire/Map.cs b/CarFire/CarFire/CarFire/Map.cs index 93dc5ef..8c744ba 100644 --- a/CarFire/CarFire/CarFire/Map.cs +++ b/CarFire/CarFire/CarFire/Map.cs @@ -166,6 +166,16 @@ namespace CarFire set { mView.Zoom = value; } } + + /// + /// Get and set the associated game object. + /// + public Game Game + { + get { return mData.Game; } + set { mData.Game = value; } + } + #endregion @@ -278,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(); } @@ -358,6 +368,8 @@ namespace CarFire public Point[] PlayerPositions { get { return mPlayerPositions; } } public bool[,] Grid { get { return mBooleanGrid; } } + public Game Game; + public Model(Metadata metadata, char[,] grid, char defaultTile, List entities, Point[] playerPositions) @@ -426,9 +438,9 @@ namespace CarFire } - public List GetAllEntities() + public List GetAllEntities() { - List list = new List(); + List list = new List(); foreach (RawEntity raw in mEntities) { @@ -436,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 @@ -474,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."); } }