// DEBUG: Tilesets not implemented at all.\r
public static Texture2D DefaultTile;\r
\r
+ #region Public Exceptions\r
+\r
+ /// <summary>\r
+ /// This exception is thrown during the loading of a map if any\r
+ /// part of the map file is inconsistent with the expected format\r
+ /// and order.\r
+ /// </summary>\r
+ public class RuntimeException : System.ApplicationException\r
+ {\r
+ public RuntimeException() { }\r
+\r
+ public RuntimeException(string message) :\r
+ base(message) { }\r
+\r
+ public RuntimeException(string message, System.Exception inner) :\r
+ base(message, inner) { }\r
+\r
+ protected RuntimeException(SerializationInfo info, StreamingContext context) :\r
+ base(info, context) { }\r
+ }\r
+\r
+ #endregion\r
+\r
+\r
#region Public Constants\r
\r
- public const float PixelsToUnitSquares = 8.0f;\r
+ public const float PixelsToUnitSquares = 60.0f;\r
\r
#endregion\r
\r
/// <summary>\r
/// The type of a map helps determine how the map is intended to be used.\r
/// </summary>\r
- public enum Type\r
+ public enum Mode\r
{\r
None,\r
Campaign,\r
public class Metadata\r
{\r
public string Name;\r
- public Type Type;\r
+ public Mode Type;\r
public string Author;\r
public HashSet<int> NumPlayers = new HashSet<int>();\r
public string Tileset;\r
/// <summary>\r
/// Get the type of the map.\r
/// </summary>\r
- //public Type Type { get { return mData.mMetadata.Type; } }\r
+ public Mode Type { get { return mData.Metadata.Type; } }\r
\r
/// <summary>\r
/// Get the author of the map.\r
/// <summary>\r
/// Construct a map with the provided map data.\r
/// </summary>\r
- /// <param name="data">Map data.</param>\r
+ /// <param name="metadata">The metadata.</param>\r
+ /// <param name="grid">The grid.</param>\r
+ /// <param name="entities">The entities.</param>\r
public Map(Metadata metadata, char[,] grid, List<RawEntity> entities)\r
{\r
mData = new Modal(metadata, grid, entities);\r
args[1] = raw.Position;\r
args[2] = raw.Attributes;\r
\r
- object entity = Activator.CreateInstance(System.Type.GetType("CarFire." + typename), args);\r
- if (entity != null) list.Add(entity);\r
- else Console.WriteLine("Entity of type " + typename + " not loaded because an entity class can't be found.");\r
+ try\r
+ {\r
+\r
+ object entity = Activator.CreateInstance(System.Type.GetType("CarFire." + typename), args);\r
+ if (entity != null) list.Add(entity);\r
+ else throw new RuntimeException();\r
+ }\r
+#pragma warning disable 0168\r
+ catch (System.Exception ex)\r
+#pragma warning restore 0168\r
+ {\r
+ throw new RuntimeException("Entity of type " + typename + " not loaded because an entity class can't be found.");\r
+ }\r
}\r
else\r
{\r
\r
T entity = (T)Activator.CreateInstance(type, args);\r
if (entity != null) list.Add(entity);\r
- else Console.WriteLine("Entity of type " + typename + " not loaded because an entity class can't be found.");\r
+ else throw new RuntimeException("Entity of type " + typename + " not loaded because an entity class can't be found.");\r
}\r
}\r
\r