diff --git a/src/level/doomdata.h b/src/level/doomdata.h index 12b2774..1386988 100644 --- a/src/level/doomdata.h +++ b/src/level/doomdata.h @@ -214,8 +214,8 @@ struct MapThing2 short angle; short type; short flags; - char special; - char args[5]; + uint8_t special; + uint8_t args[5]; }; struct IntThing @@ -228,8 +228,8 @@ struct IntThing short angle; short type; short flags; - char special; - char args[5]; + int special; + int args[5]; short pitch; // UDMF float height; // UDMF diff --git a/src/level/level.cpp b/src/level/level.cpp index 7ad3a3f..a6e0993 100644 --- a/src/level/level.cpp +++ b/src/level/level.cpp @@ -43,7 +43,20 @@ enum PO_ANCHOR_TYPE = 9300, PO_SPAWN_TYPE, PO_SPAWNCRUSH_TYPE, - PO_SPAWNHURT_TYPE + PO_SPAWNHURT_TYPE, + + // Thing numbers used to define slopes + SMT_VavoomFloor = 1500, + SMT_VavoomCeiling = 1501, + SMT_VertexFloorZ = 1504, + SMT_VertexCeilingZ = 1505, + SMT_SlopeFloorPointLine = 9500, + SMT_SlopeCeilingPointLine = 9501, + SMT_SetFloorSlope = 9502, + SMT_SetCeilingSlope = 9503, + SMT_CopyFloorPlane = 9510, + SMT_CopyCeilingPlane = 9511, + }; FLevel::FLevel () diff --git a/src/level/level_udmf.cpp b/src/level/level_udmf.cpp index 5bc1a95..306fc04 100644 --- a/src/level/level_udmf.cpp +++ b/src/level/level_udmf.cpp @@ -171,9 +171,6 @@ void FProcessor::ParseThing(IntThing *th) const char *value; const char *key = ParseKey(value); - // The only properties we need from a thing are - // x, y, angle and type. - if (!stricmp(key, "x")) { th->x = CheckFixed(key); @@ -196,7 +193,31 @@ void FProcessor::ParseThing(IntThing *th) } if (!stricmp(key, "height")) { - th->height = CheckFloat(key); + th->height = CheckInt(key); + } + if (!stricmp(key, "special")) + { + th->special = CheckInt(key); + } + if (!stricmp(key, "arg0")) + { + th->args[0] = CheckInt(key); + } + if (!stricmp(key, "arg1")) + { + th->args[1] = CheckInt(key); + } + if (!stricmp(key, "arg2")) + { + th->args[2] = CheckInt(key); + } + if (!stricmp(key, "arg3")) + { + th->args[3] = CheckInt(key); + } + if (!stricmp(key, "arg4")) + { + th->args[4] = CheckInt(key); } // now store the key in its unprocessed form