- fixed: the ambient sound things need both the args from the DoomEdNum mapping and the actual map.

This commit is contained in:
Christoph Oelckers 2016-01-04 11:52:07 +01:00
parent 772a572431
commit bd95c5eadf
4 changed files with 77 additions and 70 deletions

View File

@ -81,7 +81,7 @@ struct MapinfoEdMapItem
{
FName classname; // DECORATE is read after MAPINFO so we do not have the actual classes available here yet.
short special;
bool argsdefined;
signed char argsdefined;
int args[5];
// These are for error reporting. We must store the file information because it's no longer available when these items get resolved.
FString filename;
@ -181,14 +181,14 @@ void FMapInfoParser::ParseDoomEdNums()
editem.special = -1;
}
memset(editem.args, 0, sizeof(editem.args));
editem.argsdefined = false;
editem.argsdefined = 0;
int minargs = 0;
int maxargs = 5;
FString specialname;
if (sc.CheckString(","))
{
editem.argsdefined = true; // mark args as used - if this is done we need to prevent assignment of map args in P_SpawnMapThing.
editem.argsdefined = 5; // mark args as used - if this is done we need to prevent assignment of map args in P_SpawnMapThing.
if (editem.special < 0) editem.special = 0;
if (!sc.CheckNumber())
{
@ -221,7 +221,14 @@ void FMapInfoParser::ParseDoomEdNums()
editem.args[i] = sc.Number;
i++;
if (!sc.CheckString(",")) break;
// special check for the ambient sounds which combine the arg being set here with the ones on the mapthing.
if (sc.CheckString("+"))
{
editem.argsdefined = i;
break;
}
sc.MustGetNumber();
}
if (specialname.IsNotEmpty() && (i < minargs || i > maxargs))
{

View File

@ -283,7 +283,7 @@ struct FDoomEdEntry
{
const PClass *Type;
short Special;
bool ArgsDefined;
signed char ArgsDefined;
int Args[5];
};

View File

@ -4674,10 +4674,10 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
}
// copy args to mapthing so that we have them in one place for the rest of this function
if (mentry->ArgsDefined)
if (mentry->ArgsDefined > 0)
{
if (mentry->Type!= NULL) mthing->special = mentry->Special;
memcpy(mthing->args, mentry->Args, sizeof(mthing->args));
memcpy(mthing->args, mentry->Args, sizeof(mthing->args[0]) * mentry->ArgsDefined);
}
int pnum = -1;

View File

@ -118,70 +118,70 @@ DoomEdNums
9997 = SecActExit
9998 = SecActEnter
9999 = SecActHitFloor
14001 = AmbientSound, 1
14002 = AmbientSound, 2
14003 = AmbientSound, 3
14004 = AmbientSound, 4
14005 = AmbientSound, 5
14006 = AmbientSound, 6
14007 = AmbientSound, 7
14008 = AmbientSound, 8
14009 = AmbientSound, 9
14010 = AmbientSound, 10
14011 = AmbientSound, 11
14012 = AmbientSound, 12
14013 = AmbientSound, 13
14014 = AmbientSound, 14
14015 = AmbientSound, 15
14016 = AmbientSound, 16
14017 = AmbientSound, 17
14018 = AmbientSound, 18
14019 = AmbientSound, 19
14020 = AmbientSound, 20
14021 = AmbientSound, 21
14022 = AmbientSound, 22
14023 = AmbientSound, 23
14024 = AmbientSound, 24
14025 = AmbientSound, 25
14026 = AmbientSound, 26
14027 = AmbientSound, 27
14028 = AmbientSound, 28
14029 = AmbientSound, 29
14030 = AmbientSound, 30
14031 = AmbientSound, 31
14032 = AmbientSound, 32
14033 = AmbientSound, 33
14034 = AmbientSound, 34
14035 = AmbientSound, 35
14036 = AmbientSound, 36
14037 = AmbientSound, 37
14038 = AmbientSound, 38
14039 = AmbientSound, 39
14040 = AmbientSound, 40
14041 = AmbientSound, 41
14042 = AmbientSound, 42
14043 = AmbientSound, 43
14044 = AmbientSound, 44
14045 = AmbientSound, 45
14046 = AmbientSound, 46
14047 = AmbientSound, 47
14048 = AmbientSound, 48
14049 = AmbientSound, 49
14050 = AmbientSound, 50
14051 = AmbientSound, 51
14052 = AmbientSound, 52
14053 = AmbientSound, 53
14054 = AmbientSound, 54
14055 = AmbientSound, 55
14056 = AmbientSound, 56
14057 = AmbientSound, 57
14058 = AmbientSound, 58
14059 = AmbientSound, 59
14060 = AmbientSound, 60
14061 = AmbientSound, 61
14062 = AmbientSound, 62
14063 = AmbientSound, 63
14064 = AmbientSound, 64
14001 = AmbientSound, 1, +
14002 = AmbientSound, 2, +
14003 = AmbientSound, 3, +
14004 = AmbientSound, 4, +
14005 = AmbientSound, 5, +
14006 = AmbientSound, 6, +
14007 = AmbientSound, 7, +
14008 = AmbientSound, 8, +
14009 = AmbientSound, 9, +
14010 = AmbientSound, 10, +
14011 = AmbientSound, 11, +
14012 = AmbientSound, 12, +
14013 = AmbientSound, 13, +
14014 = AmbientSound, 14, +
14015 = AmbientSound, 15, +
14016 = AmbientSound, 16, +
14017 = AmbientSound, 17, +
14018 = AmbientSound, 18, +
14019 = AmbientSound, 19, +
14020 = AmbientSound, 20, +
14021 = AmbientSound, 21, +
14022 = AmbientSound, 22, +
14023 = AmbientSound, 23, +
14024 = AmbientSound, 24, +
14025 = AmbientSound, 25, +
14026 = AmbientSound, 26, +
14027 = AmbientSound, 27, +
14028 = AmbientSound, 28, +
14029 = AmbientSound, 29, +
14030 = AmbientSound, 30, +
14031 = AmbientSound, 31, +
14032 = AmbientSound, 32, +
14033 = AmbientSound, 33, +
14034 = AmbientSound, 34, +
14035 = AmbientSound, 35, +
14036 = AmbientSound, 36, +
14037 = AmbientSound, 37, +
14038 = AmbientSound, 38, +
14039 = AmbientSound, 39, +
14040 = AmbientSound, 40, +
14041 = AmbientSound, 41, +
14042 = AmbientSound, 42, +
14043 = AmbientSound, 43, +
14044 = AmbientSound, 44, +
14045 = AmbientSound, 45, +
14046 = AmbientSound, 46, +
14047 = AmbientSound, 47, +
14048 = AmbientSound, 48, +
14049 = AmbientSound, 49, +
14050 = AmbientSound, 50, +
14051 = AmbientSound, 51, +
14052 = AmbientSound, 52, +
14053 = AmbientSound, 53, +
14054 = AmbientSound, 54, +
14055 = AmbientSound, 55, +
14056 = AmbientSound, 56, +
14057 = AmbientSound, 57, +
14058 = AmbientSound, 58, +
14059 = AmbientSound, 59, +
14060 = AmbientSound, 60, +
14061 = AmbientSound, 61, +
14062 = AmbientSound, 62, +
14063 = AmbientSound, 63, +
14064 = AmbientSound, 64, +
14065 = AmbientSound
14066 = SoundSequence
14067 = AmbientSoundNoGravity