mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-10 14:51:46 +00:00
- Fixed: The source no longer built with GCC.
- Added a cheap pitch shifting for underwater environments that should be fairly close to Duke's. It sounds okay for some sounds, but others like the BFG, where the timing of the sound actually matters, don't sound good. I shall have to replace it with a real pitch shifter DSP unit. SVN r819 (trunk)
This commit is contained in:
parent
8244d1ea07
commit
087e34bbb3
10 changed files with 208 additions and 362 deletions
|
@ -28,7 +28,7 @@ CFLAGS += $(INCLUDES)
|
|||
RELEASEOBJ ?= releaseobj
|
||||
DEBUGOBJ ?= debugobj
|
||||
|
||||
CPPSRCS = $(wildcard $(addsuffix *.cpp,$(SRCDIRS)))
|
||||
CPPSRCS = $(wildcard $(addsuffix *.cpp,$(SRCDIRS))) src/xlat/parse_xlat.cpp
|
||||
CSRCS = $(wildcard $(addsuffix *.c,$(SRCDIRS)))
|
||||
ifdef NOASM
|
||||
CFLAGS += -DNOASM
|
||||
|
@ -88,6 +88,13 @@ $(OBJDIR)/nodebuild_classify_sse2.o: nodebuild_classify_sse2.cpp
|
|||
$(OBJDIR)/fmopl.o: src/oplsynth/fmopl.cpp
|
||||
$(CCDV) $(CXX) $(CXXFLAGS) -fno-tree-dominator-opts -fno-tree-fre -c -o $@ $<
|
||||
|
||||
src/xlat/xlat_parser.c: src/xlat/xlat_parser.y
|
||||
$(CCDV) $(LEMON) -s src/xlat/xlat_parser.y
|
||||
|
||||
# Dunno why make isn't picking this stuff up automatically for this file.
|
||||
$(OBJDIR)/parse_xlat.o: src/xlat/parse_xlat.cpp src/xlat/xlat.h src/xlat/xlat_parser.c src/xlat/xlat_parser.h
|
||||
$(CCDV) $(CXX) $(CXXFLAGS) -o $@ -c $<
|
||||
|
||||
$(OBJDIR):
|
||||
mkdir $(OBJDIR)
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ RELEASEOBJDIR ?= releaseobj
|
|||
|
||||
CCDV ?= @ccdv
|
||||
RE2C = tools/re2c/re2c
|
||||
LEMON = tools/lemon/lemon
|
||||
|
||||
CPPFLAGS = -DWIN32 -D_WIN32 -D_WINDOWS -DHAVE_STRUPR -DHAVE_FILELENGTH -DI_DO_NOT_LIKE_BIG_DOWNLOADS -D__forceinline=inline -MMD -Izlib -IFLAC -Ijpeg-6b -Isrc -Isrc/win32 -Isrc/g_doom -Isrc/g_heretic -Isrc/g_hexen -Isrc/g_raven -Isrc/g_strife -Isrc/g_shared -Isrc/oplsynth -Isrc/sound -Isrc/textures -Isrc/thingdef -Isnes_spc/snes_spc
|
||||
LDFLAGS += zlib/libz.a jpeg-6b/libjpeg.a snes_spc/libsnes_spc.a -lfmodex -lwsock32 -lwinmm -lddraw -ldsound -ldxguid -ldinput8 -lole32 -luser32 -lgdi32 -lcomctl32 -lcomdlg32 -lsetupapi -lws2_32 -Wl,--subsystem,windows
|
||||
|
@ -58,7 +59,7 @@ endif
|
|||
SRCDIRS = src/ $(addprefix src/,g_doom/ g_heretic/ g_hexen/ g_raven/ g_shared/ g_strife/ oplsynth/ sound/ win32/ textures/ thingdef/)
|
||||
VPATH = $(SRCDIRS)
|
||||
|
||||
CPPSRCS = $(wildcard $(addsuffix *.cpp,$(SRCDIRS)))
|
||||
CPPSRCS = $(wildcard $(addsuffix *.cpp,$(SRCDIRS))) src/xlat/parse_xlat.cpp
|
||||
CSRCS = $(wildcard $(addsuffix *.c,$(SRCDIRS)))
|
||||
RCSRCS = $(wildcard $(addsuffix *.rc,$(SRCDIRS)))
|
||||
ifdef NOASM
|
||||
|
@ -93,6 +94,13 @@ $(OBJDIR)/fmopl.o: src/oplsynth/fmopl.cpp
|
|||
src/sc_man_scanner.h: src/sc_man_scanner.re
|
||||
$(CCDV) $(RE2C) -s -o $@ $<
|
||||
|
||||
src/xlat/xlat_parser.c: src/xlat/xlat_parser.y
|
||||
$(CCDV) $(LEMON) -s src/xlat/xlat_parser.y
|
||||
|
||||
# Dunno why make isn't picking this stuff up automatically for this file.
|
||||
$(OBJDIR)/parse_xlat.o: src/xlat/parse_xlat.cpp src/xlat/xlat.h src/xlat/xlat_parser.c src/xlat/xlat_parser.h
|
||||
$(CCDV) $(CXX) $(CXXFLAGS) -o $@ -c $<
|
||||
|
||||
$(OBJDIR)/%.o : %.cpp
|
||||
$(CCDV) $(CXX) $(CXXFLAGS) -o $@ -c $<
|
||||
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
March 19, 2008
|
||||
- Fixed: The source no longer built with GCC.
|
||||
|
||||
March 19, 2008 (Changes by Graf Zahl)
|
||||
- Added a new parameter to all crushing action specials that selects
|
||||
which crushing mode is used: 0 uses the game's default for compatibility,
|
||||
|
@ -19,21 +22,26 @@ March 19, 2008 (Changes by Graf Zahl)
|
|||
errors for some very old version of dobject.cpp.
|
||||
- Fixed: A_JumpIfCloser was missing a z-check.
|
||||
- Added Blzut3's SBARINFO update #13:
|
||||
- Split sbarinfo.cpp into two files sbarinfo_display.cpp and sbarinfo_parser.cpp
|
||||
- Rewrote the mug shot system for SBarInfo to allow for scripting and custom
|
||||
states for different means of death.
|
||||
- SBarInfo now loads all SBarInfo lumps instead of just the last one. Clashing
|
||||
status bar definitions will now be cleared before the bar is read.
|
||||
- Fixed: When using transparency with bars the new drawing method (bg over fg)
|
||||
didn't work. In the case that the border value is set to 0 it will revert to
|
||||
the old method (fg over bg).
|
||||
- Fixed: drawbar lost any high res information it was given.
|
||||
- Added: ACS command SetMugShotState(str state) which sets the mug shot state
|
||||
for the activating player.
|
||||
- Added: keepoffsets flag to drawbar. When set the offsets in the fg image will
|
||||
also be applied when displaying the bar.
|
||||
- Split sbarinfo.cpp into two files sbarinfo_display.cpp and sbarinfo_parser.cpp
|
||||
- Rewrote the mug shot system for SBarInfo to allow for scripting and custom
|
||||
states for different means of death.
|
||||
- SBarInfo now loads all SBarInfo lumps instead of just the last one. Clashing
|
||||
status bar definitions will now be cleared before the bar is read.
|
||||
- Fixed: When using transparency with bars the new drawing method (bg over fg)
|
||||
didn't work. In the case that the border value is set to 0 it will revert to
|
||||
the old method (fg over bg).
|
||||
- Fixed: drawbar lost any high res information it was given.
|
||||
- Added: ACS command SetMugShotState(str state) which sets the mug shot state
|
||||
for the activating player.
|
||||
- Added: keepoffsets flag to drawbar. When set the offsets in the fg image will
|
||||
also be applied when displaying the bar.
|
||||
|
||||
March 18, 2008
|
||||
- Added a cheap pitch shifting for underwater environments that should be fairly
|
||||
close to Duke's. It sounds okay for some sounds, but others like the BFG, where
|
||||
the timing of the sound actually matters, don't sound good. I shall have to
|
||||
replace it with a real pitch shifter DSP unit.
|
||||
- Removed hardware 3D sound support, since software is cooler.
|
||||
- Fixed the TArray serializer declaration.
|
||||
(Thank you for your warnings, GCC! ;-)
|
||||
- Changed root sector marking so that it can happen incrementally.
|
||||
|
|
|
@ -71,8 +71,6 @@ struct SBarInfo
|
|||
|
||||
extern SBarInfo *SBarInfoScript;
|
||||
|
||||
void FreeSBarInfoScript();
|
||||
|
||||
//Mug Shot scripting structs. All functions are defined in sbarinfo_parser.cpp
|
||||
struct MugShotState;
|
||||
|
||||
|
|
|
@ -38,14 +38,9 @@ struct sfxinfo_t
|
|||
BYTE PitchMask;
|
||||
BYTE MaxChannels;
|
||||
|
||||
// Next five fields are for use by i_sound.cpp. A non-null data means the
|
||||
// sound has been loaded. The other fields are dependant on whether MIDAS
|
||||
// or FMOD is used for sound.
|
||||
// Next field is for use by the system sound interface.
|
||||
// A non-null data means the sound has been loaded.
|
||||
void* data;
|
||||
void* altdata;
|
||||
long normal;
|
||||
long looping;
|
||||
WORD bHaveLoop:1;
|
||||
|
||||
WORD bRandomHeader:1;
|
||||
WORD bPlayerReserve:1;
|
||||
|
|
|
@ -105,7 +105,6 @@ ReverbContainer *ForcedEnvironment;
|
|||
|
||||
CVAR (Int, snd_driver, 0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||
CVAR (Bool, snd_3d, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||
CVAR (Bool, snd_hw3d, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||
CVAR (Bool, snd_waterreverb, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||
CVAR (String, snd_resampler, "Linear", CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||
CVAR (String, snd_speakermode, "Auto", CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||
|
@ -582,12 +581,10 @@ bool FMODSoundRenderer::Init()
|
|||
rolloff_factor = 0.96f;
|
||||
}
|
||||
Sys->set3DSettings(1.f, 100.f, rolloff_factor);
|
||||
Hardware3D = snd_hw3d;
|
||||
}
|
||||
else
|
||||
{
|
||||
Sound3D = false;
|
||||
Hardware3D = false;
|
||||
}
|
||||
snd_sfxvolume.Callback ();
|
||||
return true;
|
||||
|
@ -629,12 +626,6 @@ void FMODSoundRenderer::Shutdown()
|
|||
((FMOD::Sound *)S_sfx[i].data)->release();
|
||||
S_sfx[i].data = NULL;
|
||||
}
|
||||
if (S_sfx[i].altdata != NULL)
|
||||
{
|
||||
((FMOD::Sound *)S_sfx[i].altdata)->release();
|
||||
S_sfx[i].altdata = NULL;
|
||||
}
|
||||
S_sfx[i].bHaveLoop = false;
|
||||
}
|
||||
|
||||
Sys->close();
|
||||
|
@ -685,10 +676,6 @@ void FMODSoundRenderer::PrintStatus()
|
|||
Printf (TEXTCOLOR_LIGHTBLUE "Software mixer resampler: "TEXTCOLOR_GREEN"%s\n", Enum_NameForNum(ResamplerNames, resampler));
|
||||
}
|
||||
Printf("Using 3D sound: "TEXTCOLOR_GREEN"%s\n", Sound3D ? "yes" : "no");
|
||||
if (Sound3D)
|
||||
{
|
||||
Printf("Using hardware 3D sound: "TEXTCOLOR_GREEN"%s\n", Hardware3D ? "yes" : "no");
|
||||
}
|
||||
}
|
||||
|
||||
void FMODSoundRenderer::DumpDriverCaps(FMOD_CAPS caps, int minfrequency, int maxfrequency)
|
||||
|
@ -782,15 +769,10 @@ int FMODSoundRenderer::GetNumChannels()
|
|||
{
|
||||
int chancount;
|
||||
|
||||
if (!Hardware3D)
|
||||
if (FMOD_OK == Sys->getSoftwareChannels(&chancount))
|
||||
{
|
||||
if (FMOD_OK == Sys->getSoftwareChannels(&chancount))
|
||||
{
|
||||
chancount = MIN<int>(snd_channels, chancount - NUM_EXTRA_SOFTWARE_CHANNELS);
|
||||
}
|
||||
chancount = MIN<int>(snd_channels, chancount - NUM_EXTRA_SOFTWARE_CHANNELS);
|
||||
}
|
||||
// If hardware, let FMOD deal with the maximum actually supported by the hardware.
|
||||
chancount = snd_channels;
|
||||
|
||||
ChannelMap = new ChanMap[chancount];
|
||||
for (int i = 0; i < chancount; i++)
|
||||
|
@ -891,30 +873,37 @@ long FMODSoundRenderer::StartSound(sfxinfo_t *sfx, float vol, float sep, int pit
|
|||
|
||||
int id = int(sfx - &S_sfx[0]);
|
||||
FMOD_RESULT result;
|
||||
FMOD_MODE mode;
|
||||
FMOD::Channel *chan;
|
||||
float freq;
|
||||
|
||||
freq = PITCH(sfx->frequency, pitch);
|
||||
|
||||
result = Sys->playSound(FMOD_CHANNEL_FREE, CheckLooping(sfx, looping), true, &chan);
|
||||
result = Sys->playSound(FMOD_CHANNEL_FREE, (FMOD::Sound *)sfx->data, true, &chan);
|
||||
if (FMOD_OK == result)
|
||||
{
|
||||
result = chan->getMode(&mode);
|
||||
|
||||
if (Sound3D)
|
||||
{ // Make 2D sounds head relative.
|
||||
FMOD_VECTOR zero = { 0, 0, 0 };
|
||||
mode = (mode & ~FMOD_3D_WORLDRELATIVE) | (FMOD_3D_HEADRELATIVE);
|
||||
chan->set3DAttributes(&zero, &zero);
|
||||
}
|
||||
if (looping)
|
||||
{
|
||||
mode |= FMOD_LOOP_NORMAL;
|
||||
}
|
||||
if (result == FMOD_OK)
|
||||
{
|
||||
chan->setMode(mode);
|
||||
}
|
||||
|
||||
chan->setChannelGroup((pausable && !SFXPaused) ? PausableSfx : SfxGroup);
|
||||
chan->setFrequency(freq);
|
||||
chan->setVolume(vol);
|
||||
chan->setPan(sep);
|
||||
if (Sound3D)
|
||||
{ // Make 2D sounds head relative.
|
||||
FMOD_MODE mode;
|
||||
|
||||
if (FMOD_OK == chan->getMode(&mode))
|
||||
{
|
||||
mode = (mode & ~FMOD_3D_WORLDRELATIVE) | (FMOD_3D_HEADRELATIVE);
|
||||
chan->setMode(mode);
|
||||
}
|
||||
FMOD_VECTOR zero = { 0, 0, 0 };
|
||||
chan->set3DAttributes(&zero, &zero);
|
||||
}
|
||||
chan->setPaused(false);
|
||||
ChannelMap[channel].channelID = chan;
|
||||
ChannelMap[channel].soundID = id;
|
||||
|
@ -934,14 +923,24 @@ long FMODSoundRenderer::StartSound3D(sfxinfo_t *sfx, float vol, int pitch, int c
|
|||
|
||||
int id = int(sfx - &S_sfx[0]);
|
||||
FMOD_RESULT result;
|
||||
FMOD_MODE mode;
|
||||
FMOD::Channel *chan;
|
||||
float freq;
|
||||
|
||||
freq = PITCH(sfx->frequency, pitch);
|
||||
|
||||
result = Sys->playSound(FMOD_CHANNEL_FREE, CheckLooping(sfx, looping), true, &chan);
|
||||
result = Sys->playSound(FMOD_CHANNEL_FREE, (FMOD::Sound *)sfx->data, true, &chan);
|
||||
if (FMOD_OK == result)
|
||||
{
|
||||
if (looping)
|
||||
{
|
||||
result = chan->getMode(&mode);
|
||||
if (result == FMOD_OK)
|
||||
{
|
||||
mode |= FMOD_LOOP_NORMAL;
|
||||
chan->setMode(mode);
|
||||
}
|
||||
}
|
||||
chan->setChannelGroup((pausable && !SFXPaused) ? PausableSfx : SfxGroup);
|
||||
chan->setFrequency(freq);
|
||||
chan->setVolume(vol);
|
||||
|
@ -966,7 +965,6 @@ void FMODSoundRenderer::StopSound(long handle)
|
|||
if (ChannelMap[handle].soundID != -1)
|
||||
{
|
||||
ChannelMap[handle].channelID->stop();
|
||||
UncheckSound(&S_sfx[ChannelMap[handle].soundID], ChannelMap[handle].bIsLooping);
|
||||
ChannelMap[handle].soundID = -1;
|
||||
}
|
||||
}
|
||||
|
@ -1069,7 +1067,7 @@ void FMODSoundRenderer::UpdateListener(AActor *listener)
|
|||
|
||||
Sys->set3DListenerAttributes(0, &pos, &vel, &forward, &up);
|
||||
|
||||
bool underwater;
|
||||
bool underwater = false;
|
||||
const ReverbContainer *env;
|
||||
|
||||
if (ForcedEnvironment)
|
||||
|
@ -1095,6 +1093,7 @@ void FMODSoundRenderer::UpdateListener(AActor *listener)
|
|||
DPrintf ("Reverb Environment %s\n", env->Name);
|
||||
const_cast<ReverbContainer*>(env)->Modified = false;
|
||||
Sys->setReverbProperties((FMOD_REVERB_PROPERTIES *)(&env->Properties));
|
||||
PausableSfx->setPitch(underwater ? 0.64171f : 1);
|
||||
PrevEnvironment = env;
|
||||
}
|
||||
}
|
||||
|
@ -1103,7 +1102,7 @@ void FMODSoundRenderer::UpdateListener(AActor *listener)
|
|||
|
||||
void FMODSoundRenderer::LoadSound(sfxinfo_t *sfx)
|
||||
{
|
||||
if (!sfx->data)
|
||||
if (sfx->data == NULL)
|
||||
{
|
||||
DPrintf("loading sound \"%s\" (%d) ", sfx->name.GetChars(), sfx - &S_sfx[0]);
|
||||
getsfx(sfx);
|
||||
|
@ -1112,99 +1111,13 @@ void FMODSoundRenderer::LoadSound(sfxinfo_t *sfx)
|
|||
|
||||
void FMODSoundRenderer::UnloadSound(sfxinfo_t *sfx)
|
||||
{
|
||||
if (sfx->data == NULL)
|
||||
return;
|
||||
|
||||
sfx->bHaveLoop = false;
|
||||
sfx->normal = 0;
|
||||
sfx->looping = 0;
|
||||
if (sfx->altdata != NULL)
|
||||
{
|
||||
((FMOD::Sound *)sfx->altdata)->release();
|
||||
sfx->altdata = NULL;
|
||||
}
|
||||
if (sfx->data != NULL)
|
||||
{
|
||||
((FMOD::Sound *)sfx->data)->release();
|
||||
sfx->data = NULL;
|
||||
}
|
||||
|
||||
DPrintf("Unloaded sound \"%s\" (%d)\n", sfx->name.GetChars(), sfx - &S_sfx[0]);
|
||||
}
|
||||
|
||||
// FSOUND_Sample_Upload seems to mess up the signedness of sound data when
|
||||
// uploading to hardware buffers. The pattern is not particularly predictable,
|
||||
// so this is a replacement for it that loads the data manually. Source data
|
||||
// is mono, unsigned, 8-bit. Output is mono, signed, 8- or 16-bit.
|
||||
#if 0
|
||||
int FMODSoundRenderer::PutSampleData (FSOUND_SAMPLE *sample, const BYTE *data, int len, unsigned int mode)
|
||||
{
|
||||
/*if (mode & FSOUND_2D)
|
||||
{
|
||||
return FSOUND_Sample_Upload (sample, const_cast<BYTE *>(data),
|
||||
FSOUND_8BITS|FSOUND_MONO|FSOUND_UNSIGNED);
|
||||
}
|
||||
else*/ if (FSOUND_Sample_GetMode (sample) & FSOUND_8BITS)
|
||||
{
|
||||
void *ptr1, *ptr2;
|
||||
unsigned int len1, len2;
|
||||
|
||||
if (FSOUND_Sample_Lock (sample, 0, len, &ptr1, &ptr2, &len1, &len2))
|
||||
{
|
||||
int i;
|
||||
BYTE *ptr;
|
||||
int len;
|
||||
|
||||
for (i = 0, ptr = (BYTE *)ptr1, len = len1;
|
||||
i < 2 && ptr && len;
|
||||
i++, ptr = (BYTE *)ptr2, len = len2)
|
||||
{
|
||||
int j;
|
||||
for (j = 0; j < len; j++)
|
||||
{
|
||||
ptr[j] = *data++ - 128;
|
||||
}
|
||||
}
|
||||
FSOUND_Sample_Unlock (sample, ptr1, ptr2, len1, len2);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
void *ptr1, *ptr2;
|
||||
unsigned int len1, len2;
|
||||
|
||||
if (FSOUND_Sample_Lock (sample, 0, len*2, &ptr1, &ptr2, &len1, &len2))
|
||||
{
|
||||
int i;
|
||||
SWORD *ptr;
|
||||
int len;
|
||||
|
||||
for (i = 0, ptr = (SWORD *)ptr1, len = len1/2;
|
||||
i < 2 && ptr && len;
|
||||
i++, ptr = (SWORD *)ptr2, len = len2/2)
|
||||
{
|
||||
int j;
|
||||
for (j = 0; j < len; j++)
|
||||
{
|
||||
ptr[j] = ((*data<<8)|(*data)) - 32768;
|
||||
data++;
|
||||
}
|
||||
}
|
||||
FSOUND_Sample_Unlock (sample, ptr1, ptr2, len1, len2);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
DPrintf("Unloaded sound \"%s\" (%d)\n", sfx->name.GetChars(), sfx - &S_sfx[0]);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void FMODSoundRenderer::DoLoad(void **slot, sfxinfo_t *sfx)
|
||||
{
|
||||
|
@ -1217,8 +1130,7 @@ void FMODSoundRenderer::DoLoad(void **slot, sfxinfo_t *sfx)
|
|||
FMOD_CREATESOUNDEXINFO exinfo = { sizeof(exinfo), };
|
||||
FMOD::Sound *sample;
|
||||
|
||||
samplemode = (Sound3D ? FMOD_3D : FMOD_2D) | FMOD_OPENMEMORY;
|
||||
samplemode |= Hardware3D ? FMOD_HARDWARE : FMOD_SOFTWARE;
|
||||
samplemode = (Sound3D ? FMOD_3D : FMOD_2D) | FMOD_OPENMEMORY | FMOD_SOFTWARE;
|
||||
sfxdata = NULL;
|
||||
|
||||
errcount = 0;
|
||||
|
@ -1368,83 +1280,5 @@ void FMODSoundRenderer::getsfx(sfxinfo_t *sfx)
|
|||
return;
|
||||
}
|
||||
}
|
||||
|
||||
sfx->bHaveLoop = false;
|
||||
sfx->normal = 0;
|
||||
sfx->looping = 0;
|
||||
sfx->altdata = NULL;
|
||||
DoLoad (&sfx->data, sfx);
|
||||
}
|
||||
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
// FMODSoundRenderer :: CheckLooping
|
||||
//
|
||||
// Hardware sounds do not support arbitrarily changing the loop mode for
|
||||
// different playing copies of the same sound, so if we need to play both
|
||||
// a looping and an unlooping version of the same sound, then we need two
|
||||
// copies of the sound.
|
||||
//
|
||||
// Fortunately, most sounds will be played as one or the other and not both.
|
||||
// This function juggles the sample between looping and non-looping, creating
|
||||
// a copy if necessary, and increasing the appropriate use counter.
|
||||
//
|
||||
// Note that software sounds do not have this restriction, but since there's
|
||||
// no way for the engine to designate that a sound should always be software,
|
||||
// this function is used for them too, just to keep things simpler for me.
|
||||
//
|
||||
//===========================================================================
|
||||
|
||||
FMOD::Sound *FMODSoundRenderer::CheckLooping(sfxinfo_t *sfx, bool looped)
|
||||
{
|
||||
if (looped)
|
||||
{
|
||||
sfx->looping++;
|
||||
if (sfx->bHaveLoop)
|
||||
{
|
||||
return (FMOD::Sound *)(sfx->altdata ? sfx->altdata : sfx->data);
|
||||
}
|
||||
else if (sfx->normal == 0)
|
||||
{
|
||||
sfx->bHaveLoop = true;
|
||||
((FMOD::Sound *)sfx->data)->setLoopCount(-1);
|
||||
return (FMOD::Sound *)sfx->data;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sfx->normal++;
|
||||
if (sfx->altdata || !sfx->bHaveLoop)
|
||||
{
|
||||
return (FMOD::Sound *)sfx->data;
|
||||
}
|
||||
else if (sfx->looping == 0)
|
||||
{
|
||||
sfx->bHaveLoop = false;
|
||||
((FMOD::Sound *)sfx->data)->setLoopCount(0);
|
||||
return (FMOD::Sound *)sfx->data;
|
||||
}
|
||||
}
|
||||
|
||||
// If we get here, we need to create an alternate version of the sample.
|
||||
((FMOD::Sound *)sfx->data)->setLoopCount(0);
|
||||
DoLoad(&sfx->altdata, sfx);
|
||||
((FMOD::Sound *)sfx->altdata)->setLoopCount(-1);
|
||||
sfx->bHaveLoop = true;
|
||||
return (FMOD::Sound *)(looped ? sfx->altdata : sfx->data);
|
||||
}
|
||||
|
||||
void FMODSoundRenderer::UncheckSound(sfxinfo_t *sfx, bool looped)
|
||||
{
|
||||
if (looped)
|
||||
{
|
||||
if (sfx->looping > 0)
|
||||
sfx->looping--;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sfx->normal > 0)
|
||||
sfx->normal--;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -66,14 +66,10 @@ private:
|
|||
int NumChannels;
|
||||
unsigned int DriverCaps;
|
||||
int OutputType;
|
||||
bool Hardware3D;
|
||||
bool SFXPaused;
|
||||
|
||||
// int PutSampleData (FSOUND_SAMPLE *sample, const BYTE *data, int len, unsigned int mode);
|
||||
void DoLoad (void **slot, sfxinfo_t *sfx);
|
||||
void getsfx (sfxinfo_t *sfx);
|
||||
FMOD::Sound *CheckLooping (sfxinfo_t *sfx, bool looped);
|
||||
void UncheckSound (sfxinfo_t *sfx, bool looped);
|
||||
|
||||
bool Init ();
|
||||
void Shutdown ();
|
||||
|
|
|
@ -352,7 +352,7 @@ struct XlatParseContext
|
|||
}
|
||||
}
|
||||
|
||||
int PrintError (char *s)
|
||||
int PrintError (const char *s)
|
||||
{
|
||||
if (SourceFile != NULL)
|
||||
Printf ("%s, line %d: %s\n", SourceFile, SourceLine, s);
|
||||
|
@ -397,7 +397,7 @@ void ParseXlatLump(const char *lumpname, void *pParser, XlatParseContext *contex
|
|||
context->SourceFile = lumpname;
|
||||
|
||||
char *sourcep = lumpdata;
|
||||
while (tokentype = context->GetToken(sourcep, &token))
|
||||
while ( (tokentype = context->GetToken(sourcep, &token)) )
|
||||
{
|
||||
// It is much easier to handle include statements outside the main parser.
|
||||
if (tokentype == INCLUDE)
|
||||
|
|
|
@ -64,4 +64,4 @@ extern TAutoGrowArray<FLineTrans> SimpleLineTranslations;
|
|||
extern FBoomTranslator Boomish[MAX_BOOMISH];
|
||||
extern int NumBoomish;
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -520,9 +520,9 @@ static void yy_destructor(YYCODETYPE yymajor, YYMINORTYPE *yypminor){
|
|||
case 28: /* ARG5 */
|
||||
case 29: /* OR_EQUAL */
|
||||
case 30: /* COLON */
|
||||
#line 3 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 3 "src/xlat/xlat_parser.y"
|
||||
{}
|
||||
#line 526 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 526 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
default: break; /* If no destructor action specified: do nothing */
|
||||
}
|
||||
|
@ -860,133 +860,133 @@ static void yy_reduce(
|
|||
case 6: /*external_declaration ::= boom_declaration */
|
||||
case 22: /*enum_list ::= */
|
||||
case 23: /*enum_list ::= single_enum */
|
||||
#line 9 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 9 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
}
|
||||
#line 867 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 867 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 7: /* external_declaration ::= NOP */
|
||||
#line 18 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 18 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yy_destructor(1,&yymsp[0].minor);
|
||||
}
|
||||
#line 874 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 874 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 8: /* exp ::= NUM */
|
||||
#line 29 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 29 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = yymsp[0].minor.yy0.val; }
|
||||
#line 879 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 879 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 9: /* exp ::= SYMNUM */
|
||||
#line 30 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 30 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = yymsp[0].minor.yy0.symval->Value; }
|
||||
#line 884 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 884 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 10: /* exp ::= exp PLUS exp */
|
||||
#line 31 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 31 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = yymsp[-2].minor.yy94 + yymsp[0].minor.yy94; yy_destructor(6,&yymsp[-1].minor);
|
||||
}
|
||||
#line 890 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 890 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 11: /* exp ::= exp MINUS exp */
|
||||
#line 32 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 32 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = yymsp[-2].minor.yy94 - yymsp[0].minor.yy94; yy_destructor(5,&yymsp[-1].minor);
|
||||
}
|
||||
#line 896 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 896 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 12: /* exp ::= exp MULTIPLY exp */
|
||||
#line 33 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 33 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = yymsp[-2].minor.yy94 * yymsp[0].minor.yy94; yy_destructor(7,&yymsp[-1].minor);
|
||||
}
|
||||
#line 902 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 902 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 13: /* exp ::= exp DIVIDE exp */
|
||||
#line 34 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 34 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = yymsp[-2].minor.yy94 / yymsp[0].minor.yy94; yy_destructor(8,&yymsp[-1].minor);
|
||||
}
|
||||
#line 908 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 908 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 14: /* exp ::= exp OR exp */
|
||||
#line 35 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 35 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = yymsp[-2].minor.yy94 | yymsp[0].minor.yy94; yy_destructor(2,&yymsp[-1].minor);
|
||||
}
|
||||
#line 914 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 914 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 15: /* exp ::= exp AND exp */
|
||||
#line 36 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 36 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = yymsp[-2].minor.yy94 & yymsp[0].minor.yy94; yy_destructor(4,&yymsp[-1].minor);
|
||||
}
|
||||
#line 920 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 920 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 16: /* exp ::= exp XOR exp */
|
||||
#line 37 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 37 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = yymsp[-2].minor.yy94 ^ yymsp[0].minor.yy94; yy_destructor(3,&yymsp[-1].minor);
|
||||
}
|
||||
#line 926 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 926 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 17: /* exp ::= MINUS exp */
|
||||
#line 38 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 38 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = -yymsp[0].minor.yy94; yy_destructor(5,&yymsp[-1].minor);
|
||||
}
|
||||
#line 932 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 932 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 18: /* exp ::= LPAREN exp RPAREN */
|
||||
#line 39 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 39 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = yymsp[-1].minor.yy94; yy_destructor(12,&yymsp[-2].minor);
|
||||
yy_destructor(13,&yymsp[0].minor);
|
||||
}
|
||||
#line 939 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 939 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 19: /* define_statement ::= DEFINE SYM LPAREN exp RPAREN */
|
||||
#line 49 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 49 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
context->AddSym (yymsp[-3].minor.yy0.sym, yymsp[-1].minor.yy94);
|
||||
yy_destructor(14,&yymsp[-4].minor);
|
||||
yy_destructor(12,&yymsp[-2].minor);
|
||||
yy_destructor(13,&yymsp[0].minor);
|
||||
}
|
||||
#line 949 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 949 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 20: /* enum_statement ::= enum_open enum_list RBRACE */
|
||||
#line 59 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 59 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yy_destructor(16,&yymsp[0].minor);
|
||||
}
|
||||
#line 956 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 956 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 21: /* enum_open ::= ENUM LBRACE */
|
||||
#line 62 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 62 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
context->EnumVal = 0;
|
||||
yy_destructor(17,&yymsp[-1].minor);
|
||||
yy_destructor(18,&yymsp[0].minor);
|
||||
}
|
||||
#line 965 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 965 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 24: /* enum_list ::= single_enum COMMA enum_list */
|
||||
#line 68 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 68 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 972 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 972 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 25: /* single_enum ::= SYM */
|
||||
#line 71 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 71 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
context->AddSym (yymsp[0].minor.yy0.sym, context->EnumVal++);
|
||||
}
|
||||
#line 979 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 979 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 26: /* single_enum ::= SYM EQUALS exp */
|
||||
#line 76 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 76 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
context->AddSym (yymsp[-2].minor.yy0.sym, context->EnumVal = yymsp[0].minor.yy94);
|
||||
yy_destructor(20,&yymsp[-1].minor);
|
||||
}
|
||||
#line 987 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 987 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 27: /* linetype_declaration ::= exp EQUALS exp COMMA exp LPAREN special_args RPAREN */
|
||||
#line 87 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 87 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
SimpleLineTranslations.SetVal(yymsp[-7].minor.yy94,
|
||||
FLineTrans(yymsp[-3].minor.yy94&0xffff, yymsp[-5].minor.yy94+yymsp[-1].minor.yy15.addflags, yymsp[-1].minor.yy15.args[0], yymsp[-1].minor.yy15.args[1], yymsp[-1].minor.yy15.args[2], yymsp[-1].minor.yy15.args[3], yymsp[-1].minor.yy15.args[4]));
|
||||
|
@ -995,10 +995,10 @@ static void yy_reduce(
|
|||
yy_destructor(12,&yymsp[-2].minor);
|
||||
yy_destructor(13,&yymsp[0].minor);
|
||||
}
|
||||
#line 999 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 999 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 28: /* linetype_declaration ::= exp EQUALS exp COMMA SYM LPAREN special_args RPAREN */
|
||||
#line 93 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 93 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
Printf ("%s, line %d: %s is undefined\n", context->SourceFile, context->SourceLine, yymsp[-3].minor.yy0.sym);
|
||||
yy_destructor(20,&yymsp[-6].minor);
|
||||
|
@ -1006,10 +1006,10 @@ static void yy_reduce(
|
|||
yy_destructor(12,&yymsp[-2].minor);
|
||||
yy_destructor(13,&yymsp[0].minor);
|
||||
}
|
||||
#line 1010 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1010 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 29: /* special_args ::= */
|
||||
#line 100 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 100 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = 0;
|
||||
yygotominor.yy15.args[0] = 0;
|
||||
|
@ -1018,10 +1018,10 @@ static void yy_reduce(
|
|||
yygotominor.yy15.args[3] = 0;
|
||||
yygotominor.yy15.args[4] = 0;
|
||||
}
|
||||
#line 1022 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1022 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 30: /* special_args ::= TAG */
|
||||
#line 109 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 109 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HASTAGAT1;
|
||||
yygotominor.yy15.args[0] = 0;
|
||||
|
@ -1031,10 +1031,10 @@ static void yy_reduce(
|
|||
yygotominor.yy15.args[4] = 0;
|
||||
yy_destructor(21,&yymsp[0].minor);
|
||||
}
|
||||
#line 1035 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1035 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 31: /* special_args ::= TAG COMMA exp */
|
||||
#line 118 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 118 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HASTAGAT1;
|
||||
yygotominor.yy15.args[0] = 0;
|
||||
|
@ -1045,10 +1045,10 @@ static void yy_reduce(
|
|||
yy_destructor(21,&yymsp[-2].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1049 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1049 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 32: /* special_args ::= TAG COMMA exp COMMA exp */
|
||||
#line 127 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 127 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HASTAGAT1;
|
||||
yygotominor.yy15.args[0] = 0;
|
||||
|
@ -1060,10 +1060,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-3].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1064 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1064 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 33: /* special_args ::= TAG COMMA exp COMMA exp COMMA exp */
|
||||
#line 136 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 136 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HASTAGAT1;
|
||||
yygotominor.yy15.args[0] = 0;
|
||||
|
@ -1076,10 +1076,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-3].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1080 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1080 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 34: /* special_args ::= TAG COMMA exp COMMA exp COMMA exp COMMA exp */
|
||||
#line 145 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 145 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HASTAGAT1;
|
||||
yygotominor.yy15.args[0] = 0;
|
||||
|
@ -1093,10 +1093,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-3].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1097 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1097 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 35: /* special_args ::= TAG COMMA TAG */
|
||||
#line 154 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 154 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HAS2TAGS;
|
||||
yygotominor.yy15.args[0] = yygotominor.yy15.args[1] = 0;
|
||||
|
@ -1107,10 +1107,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-1].minor);
|
||||
yy_destructor(21,&yymsp[0].minor);
|
||||
}
|
||||
#line 1111 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1111 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 36: /* special_args ::= TAG COMMA TAG COMMA exp */
|
||||
#line 162 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 162 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HAS2TAGS;
|
||||
yygotominor.yy15.args[0] = yygotominor.yy15.args[1] = 0;
|
||||
|
@ -1122,10 +1122,10 @@ static void yy_reduce(
|
|||
yy_destructor(21,&yymsp[-2].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1126 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1126 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 37: /* special_args ::= TAG COMMA TAG COMMA exp COMMA exp */
|
||||
#line 170 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 170 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HAS2TAGS;
|
||||
yygotominor.yy15.args[0] = yygotominor.yy15.args[1] = 0;
|
||||
|
@ -1138,10 +1138,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-3].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1142 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1142 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 38: /* special_args ::= TAG COMMA TAG COMMA exp COMMA exp COMMA exp */
|
||||
#line 178 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 178 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HAS2TAGS;
|
||||
yygotominor.yy15.args[0] = yygotominor.yy15.args[1] = 0;
|
||||
|
@ -1155,10 +1155,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-3].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1159 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1159 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 39: /* special_args ::= exp */
|
||||
#line 186 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 186 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = 0;
|
||||
yygotominor.yy15.args[0] = yymsp[0].minor.yy94;
|
||||
|
@ -1167,10 +1167,10 @@ static void yy_reduce(
|
|||
yygotominor.yy15.args[3] = 0;
|
||||
yygotominor.yy15.args[4] = 0;
|
||||
}
|
||||
#line 1171 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1171 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 40: /* special_args ::= exp COMMA exp */
|
||||
#line 195 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 195 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = 0;
|
||||
yygotominor.yy15.args[0] = yymsp[-2].minor.yy94;
|
||||
|
@ -1180,10 +1180,10 @@ static void yy_reduce(
|
|||
yygotominor.yy15.args[4] = 0;
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1184 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1184 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 41: /* special_args ::= exp COMMA exp COMMA exp */
|
||||
#line 204 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 204 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = 0;
|
||||
yygotominor.yy15.args[0] = yymsp[-4].minor.yy94;
|
||||
|
@ -1194,10 +1194,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-3].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1198 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1198 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 42: /* special_args ::= exp COMMA exp COMMA exp COMMA exp */
|
||||
#line 213 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 213 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = 0;
|
||||
yygotominor.yy15.args[0] = yymsp[-6].minor.yy94;
|
||||
|
@ -1209,10 +1209,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-3].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1213 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1213 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 43: /* special_args ::= exp COMMA exp COMMA exp COMMA exp COMMA exp */
|
||||
#line 222 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 222 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = 0;
|
||||
yygotominor.yy15.args[0] = yymsp[-8].minor.yy94;
|
||||
|
@ -1225,10 +1225,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-3].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1229 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1229 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 44: /* special_args ::= exp COMMA TAG */
|
||||
#line 231 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 231 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HASTAGAT2;
|
||||
yygotominor.yy15.args[0] = yymsp[-2].minor.yy94;
|
||||
|
@ -1239,10 +1239,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-1].minor);
|
||||
yy_destructor(21,&yymsp[0].minor);
|
||||
}
|
||||
#line 1243 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1243 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 45: /* special_args ::= exp COMMA TAG COMMA exp */
|
||||
#line 240 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 240 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HASTAGAT2;
|
||||
yygotominor.yy15.args[0] = yymsp[-4].minor.yy94;
|
||||
|
@ -1254,10 +1254,10 @@ static void yy_reduce(
|
|||
yy_destructor(21,&yymsp[-2].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1258 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1258 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 46: /* special_args ::= exp COMMA TAG COMMA exp COMMA exp */
|
||||
#line 249 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 249 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HASTAGAT2;
|
||||
yygotominor.yy15.args[0] = yymsp[-6].minor.yy94;
|
||||
|
@ -1270,10 +1270,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-3].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1274 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1274 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 47: /* special_args ::= exp COMMA TAG COMMA exp COMMA exp COMMA exp */
|
||||
#line 258 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 258 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HASTAGAT2;
|
||||
yygotominor.yy15.args[0] = yymsp[-8].minor.yy94;
|
||||
|
@ -1287,10 +1287,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-3].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1291 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1291 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 48: /* special_args ::= exp COMMA exp COMMA TAG */
|
||||
#line 267 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 267 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HASTAGAT3;
|
||||
yygotominor.yy15.args[0] = yymsp[-4].minor.yy94;
|
||||
|
@ -1302,10 +1302,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-1].minor);
|
||||
yy_destructor(21,&yymsp[0].minor);
|
||||
}
|
||||
#line 1306 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1306 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 49: /* special_args ::= exp COMMA exp COMMA TAG COMMA exp */
|
||||
#line 276 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 276 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HASTAGAT3;
|
||||
yygotominor.yy15.args[0] = yymsp[-6].minor.yy94;
|
||||
|
@ -1318,10 +1318,10 @@ static void yy_reduce(
|
|||
yy_destructor(21,&yymsp[-2].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1322 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1322 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 50: /* special_args ::= exp COMMA exp COMMA TAG COMMA exp COMMA exp */
|
||||
#line 285 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 285 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HASTAGAT3;
|
||||
yygotominor.yy15.args[0] = yymsp[-8].minor.yy94;
|
||||
|
@ -1335,10 +1335,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-3].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1339 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1339 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 51: /* special_args ::= exp COMMA exp COMMA exp COMMA TAG */
|
||||
#line 294 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 294 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HASTAGAT4;
|
||||
yygotominor.yy15.args[0] = yymsp[-6].minor.yy94;
|
||||
|
@ -1351,10 +1351,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-1].minor);
|
||||
yy_destructor(21,&yymsp[0].minor);
|
||||
}
|
||||
#line 1355 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1355 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 52: /* special_args ::= exp COMMA exp COMMA exp COMMA TAG COMMA exp */
|
||||
#line 303 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 303 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HASTAGAT4;
|
||||
yygotominor.yy15.args[0] = yymsp[-8].minor.yy94;
|
||||
|
@ -1368,10 +1368,10 @@ static void yy_reduce(
|
|||
yy_destructor(21,&yymsp[-2].minor);
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1372 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1372 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 53: /* special_args ::= exp COMMA exp COMMA exp COMMA exp COMMA TAG */
|
||||
#line 312 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 312 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy15.addflags = LINETRANS_HASTAGAT5;
|
||||
yygotominor.yy15.args[0] = yymsp[-8].minor.yy94;
|
||||
|
@ -1385,10 +1385,10 @@ static void yy_reduce(
|
|||
yy_destructor(19,&yymsp[-1].minor);
|
||||
yy_destructor(21,&yymsp[0].minor);
|
||||
}
|
||||
#line 1389 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1389 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 54: /* boom_declaration ::= LBRACKET exp RBRACKET LPAREN exp COMMA exp RPAREN LBRACE boom_body RBRACE */
|
||||
#line 337 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 337 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
int i;
|
||||
MoreLines *probe;
|
||||
|
@ -1428,26 +1428,26 @@ static void yy_reduce(
|
|||
yy_destructor(18,&yymsp[-2].minor);
|
||||
yy_destructor(16,&yymsp[0].minor);
|
||||
}
|
||||
#line 1432 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1432 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 55: /* boom_body ::= */
|
||||
#line 371 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 371 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy81 = NULL;
|
||||
}
|
||||
#line 1439 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1439 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 56: /* boom_body ::= boom_line boom_body */
|
||||
#line 375 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 375 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy81 = new MoreLines;
|
||||
yygotominor.yy81->next = yymsp[0].minor.yy81;
|
||||
yygotominor.yy81->arg = yymsp[-1].minor.yy20;
|
||||
}
|
||||
#line 1448 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1448 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 57: /* boom_line ::= boom_selector boom_op boom_args */
|
||||
#line 382 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 382 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy20.bOrExisting = (yymsp[-1].minor.yy94 == OR_EQUAL);
|
||||
yygotominor.yy20.bUseConstant = (yymsp[0].minor.yy40.filters == NULL);
|
||||
|
@ -1478,95 +1478,95 @@ static void yy_reduce(
|
|||
yygotominor.yy20.ListSize = i > 15 ? 15 : i;
|
||||
}
|
||||
}
|
||||
#line 1482 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1482 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 58: /* boom_selector ::= FLAGS */
|
||||
#line 413 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 413 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = 4; yy_destructor(24,&yymsp[0].minor);
|
||||
}
|
||||
#line 1488 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1488 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 59: /* boom_selector ::= ARG2 */
|
||||
#line 414 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 414 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = 0; yy_destructor(25,&yymsp[0].minor);
|
||||
}
|
||||
#line 1494 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1494 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 60: /* boom_selector ::= ARG3 */
|
||||
#line 415 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 415 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = 1; yy_destructor(26,&yymsp[0].minor);
|
||||
}
|
||||
#line 1500 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1500 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 61: /* boom_selector ::= ARG4 */
|
||||
#line 416 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 416 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = 2; yy_destructor(27,&yymsp[0].minor);
|
||||
}
|
||||
#line 1506 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1506 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 62: /* boom_selector ::= ARG5 */
|
||||
#line 417 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 417 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = 3; yy_destructor(28,&yymsp[0].minor);
|
||||
}
|
||||
#line 1512 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1512 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 63: /* boom_op ::= EQUALS */
|
||||
#line 419 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 419 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = '='; yy_destructor(20,&yymsp[0].minor);
|
||||
}
|
||||
#line 1518 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1518 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 64: /* boom_op ::= OR_EQUAL */
|
||||
#line 420 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 420 "src/xlat/xlat_parser.y"
|
||||
{ yygotominor.yy94 = OR_EQUAL; yy_destructor(29,&yymsp[0].minor);
|
||||
}
|
||||
#line 1524 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1524 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 65: /* boom_args ::= exp */
|
||||
#line 423 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 423 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy40.constant = yymsp[0].minor.yy94;
|
||||
yygotominor.yy40.filters = NULL;
|
||||
}
|
||||
#line 1532 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1532 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 66: /* boom_args ::= exp LBRACKET arg_list RBRACKET */
|
||||
#line 428 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 428 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy40.mask = yymsp[-3].minor.yy94;
|
||||
yygotominor.yy40.filters = yymsp[-1].minor.yy39;
|
||||
yy_destructor(22,&yymsp[-2].minor);
|
||||
yy_destructor(23,&yymsp[0].minor);
|
||||
}
|
||||
#line 1542 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1542 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 67: /* arg_list ::= list_val */
|
||||
#line 434 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 434 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy39 = new MoreFilters;
|
||||
yygotominor.yy39->next = NULL;
|
||||
yygotominor.yy39->filter = yymsp[0].minor.yy11;
|
||||
}
|
||||
#line 1551 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1551 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 68: /* arg_list ::= list_val COMMA arg_list */
|
||||
#line 440 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 440 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy39 = new MoreFilters;
|
||||
yygotominor.yy39->next = yymsp[0].minor.yy39;
|
||||
yygotominor.yy39->filter = yymsp[-2].minor.yy11;
|
||||
yy_destructor(19,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1561 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1561 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
case 69: /* list_val ::= exp COLON exp */
|
||||
#line 447 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 447 "src/xlat/xlat_parser.y"
|
||||
{
|
||||
yygotominor.yy11.filter = yymsp[-2].minor.yy94;
|
||||
yygotominor.yy11.value = yymsp[0].minor.yy94;
|
||||
yy_destructor(30,&yymsp[-1].minor);
|
||||
}
|
||||
#line 1570 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1570 "src/xlat/xlat_parser.c"
|
||||
break;
|
||||
};
|
||||
yygoto = yyRuleInfo[yyruleno].lhs;
|
||||
|
@ -1624,9 +1624,9 @@ static void yy_syntax_error(
|
|||
){
|
||||
XlatParseARG_FETCH;
|
||||
#define TOKEN (yyminor.yy0)
|
||||
#line 6 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.y"
|
||||
#line 6 "src/xlat/xlat_parser.y"
|
||||
context->PrintError("syntax error");
|
||||
#line 1630 "d:\\windoom\\zdoomstuff\\zdoomsrc\\zdoom\\trunk\\src\\xlat\\xlat_parser.c"
|
||||
#line 1630 "src/xlat/xlat_parser.c"
|
||||
XlatParseARG_STORE; /* Suppress warning about unused %extra_argument variable */
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue