mirror of
https://github.com/ZDoom/gzdoom-last-svn.git
synced 2025-05-30 00:41:19 +00:00
- Update to ZDoom r2002:
- Make the palette indexes used by FRemapTable subject to the global remap table, just as the images they translate are. - Added MF4_ALLOWPARTICLES checks to blood spawning code. - Fixed: EV_DoDonut, EV_DoElevator and EV_StartWaggle did not to any 0-tag checks. - Fixed: Doom line type 44 (lower ceiling to 8 above floor) must halt movement if blocked which essentially means it acts like a Hexen-style crusher. - Fixed: Not all places checking for player start spots did it correctly. The editor number for player start spot 5 is now stored in the game info so that there's only one place where this check needs to be done. - Fixed: WIF_NOAUTOAIM only worked for projectiles. - Added Windows 7 (aka Windows NT 6.1) and Server 2008 identification to I_DetectOS(). - Fixed: ArtiPork did not use all its sprite frames. - Fixed: FWadCollection::AddFile() did not call FixPathSeperator(), so savegames would hold the full file path for wads that had been specified with backslash characters, because GetWadName() would not trim off the path. git-svn-id: http://mancubus.net/svn/hosted/gzdoom/trunk@636 b0f79afe-0144-0410-b225-9a4edf0717df
This commit is contained in:
parent
976db2f978
commit
964d7d4c8a
22 changed files with 212 additions and 75 deletions
|
@ -1,3 +1,47 @@
|
|||
November 25, 2009
|
||||
- Make the palette indexes used by FRemapTable subject to the global remap
|
||||
table, just as the images they translate are.
|
||||
|
||||
November 24, 2009 (Changes by Graf Zahl)
|
||||
- Added MF4_ALLOWPARTICLES checks to blood spawning code.
|
||||
- Fixed: EV_DoDonut, EV_DoElevator and EV_StartWaggle did not to any 0-tag
|
||||
checks.
|
||||
- Fixed: Doom line type 44 (lower ceiling to 8 above floor) must halt
|
||||
movement if blocked which essentially means it acts like a Hexen-style
|
||||
crusher.
|
||||
- Fixed: Not all places checking for player start spots did it correctly.
|
||||
The editor number for player start spot 5 is now stored in the game info
|
||||
so that there's only one place where this check needs to be done.
|
||||
- Fixed: WIF_NOAUTOAIM only worked for projectiles.
|
||||
|
||||
November 23, 2009
|
||||
- Added Windows 7 (aka Windows NT 6.1) and Server 2008 identification to
|
||||
I_DetectOS().
|
||||
- Fixed: ArtiPork did not use all its sprite frames.
|
||||
- Fixed: FWadCollection::AddFile() did not call FixPathSeperator(), so
|
||||
savegames would hold the full file path for wads that had been specified
|
||||
with backslash characters, because GetWadName() would not trim off the
|
||||
path.
|
||||
|
||||
November 22, 2009 (Changes by Graf Zahl)
|
||||
- extended Doom map format linedef translator so that it also handles the flags.
|
||||
|
||||
November 19, 2009
|
||||
- Replaced toint/quickertoint with the portable routines from xs_Float.h. The
|
||||
former used fistp, which is not portable across platforms, so cannot be
|
||||
used in the play simulation. They were only suitable for the renderer.
|
||||
xs_Float.h also has a very fast float->fixed conversion, so FLOAT2FIXED
|
||||
uses that now.
|
||||
(And I also learned that the FPU's round to nearest is not the rounding I
|
||||
learned in grade school but actually Banker's Rounding. I had no idea.)
|
||||
(Also, also, the only thing that could have made quickertoint faster than
|
||||
toint was that it stored a 32-bit int. I never timed them, and I doubt in
|
||||
practice there was any real difference between the two.)
|
||||
|
||||
November 18, 2009
|
||||
- Added padding around packed textures to compensate for apparent NVidia
|
||||
texture coordinate imprecision.
|
||||
|
||||
November 17, 2009
|
||||
- Fixed two bugs in FMODSoundRenderer::HandleChannelDelay():
|
||||
* Looping sounds that have been playing for a very long time, were evicted,
|
||||
|
|
|
@ -1395,7 +1395,7 @@ const PClass *FArchive::ReadClass ()
|
|||
FName zaname(typeName.val, true);
|
||||
if (zaname != NAME_None)
|
||||
{
|
||||
for (unsigned int i = 0; i < PClass::m_Types.Size(); i++)
|
||||
for (unsigned int i = PClass::m_Types.Size(); i-- > 0; )
|
||||
{
|
||||
if (PClass::m_Types[i]->TypeName == zaname)
|
||||
{
|
||||
|
|
|
@ -1475,10 +1475,8 @@ void G_DeathMatchSpawnPlayer (int playernum)
|
|||
{
|
||||
if (playernum < 4)
|
||||
spot->type = playernum+1;
|
||||
else if (gameinfo.gametype != GAME_Hexen)
|
||||
spot->type = playernum+4001-4; // [RH] > 4 players
|
||||
else
|
||||
spot->type = playernum+9100-4;
|
||||
else
|
||||
spot->type = playernum + gameinfo.player5start - 4;
|
||||
}
|
||||
|
||||
AActor *mo = P_SpawnPlayer (spot);
|
||||
|
@ -1569,17 +1567,13 @@ void G_DoReborn (int playernum, bool freshbot)
|
|||
// fake as other player
|
||||
// [RH] These numbers should be common across all games. Or better yet, not
|
||||
// used at all outside P_SpawnMapThing().
|
||||
if (playernum < 4 || gameinfo.gametype == GAME_Strife)
|
||||
if (playernum < 4)
|
||||
{
|
||||
playerstarts[i].type = playernum + 1;
|
||||
}
|
||||
else if (gameinfo.gametype == GAME_Hexen)
|
||||
{
|
||||
playerstarts[i].type = playernum + 9100 - 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
playerstarts[i].type = playernum + 4001 - 4;
|
||||
playerstarts[i].type = playernum + gameinfo.player5start - 4;
|
||||
}
|
||||
AActor *mo = P_SpawnPlayer (&playerstarts[i]);
|
||||
if (mo != NULL) P_PlayerStartStomp(mo);
|
||||
|
|
|
@ -281,6 +281,7 @@ void FMapInfoParser::ParseGameInfo()
|
|||
GAMEINFOKEY_INT(defaultrespawntime, "defaultrespawntime")
|
||||
GAMEINFOKEY_INT(defaultdropstyle, "defaultdropstyle")
|
||||
GAMEINFOKEY_CSTRING(Endoom, "endoom", 8)
|
||||
GAMEINFOKEY_INT(player5start, "player5start")
|
||||
else
|
||||
{
|
||||
// ignore unkown keys.
|
||||
|
|
1
src/gi.h
1
src/gi.h
|
@ -103,6 +103,7 @@ struct gameinfo_t
|
|||
int definventorymaxamount;
|
||||
int defaultrespawntime;
|
||||
int defaultdropstyle;
|
||||
int player5start;
|
||||
|
||||
const char *GetFinalePage(unsigned int num) const;
|
||||
};
|
||||
|
|
|
@ -770,7 +770,7 @@ manual_stair:
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
bool EV_DoDonut (int tag, fixed_t pillarspeed, fixed_t slimespeed)
|
||||
bool EV_DoDonut (int tag, line_t *line, fixed_t pillarspeed, fixed_t slimespeed)
|
||||
{
|
||||
sector_t* s1;
|
||||
sector_t* s2;
|
||||
|
@ -781,13 +781,24 @@ bool EV_DoDonut (int tag, fixed_t pillarspeed, fixed_t slimespeed)
|
|||
DFloor* floor;
|
||||
vertex_t* spot;
|
||||
fixed_t height;
|
||||
bool manual = false;
|
||||
|
||||
secnum = -1;
|
||||
rtn = false;
|
||||
|
||||
if (tag == 0)
|
||||
{
|
||||
if (!line || !(s1 = line->backsector))
|
||||
return rtn;
|
||||
manual = true;
|
||||
goto manual_donut;
|
||||
}
|
||||
|
||||
while ((secnum = P_FindSectorFromTag(tag,secnum)) >= 0)
|
||||
{
|
||||
s1 = §ors[secnum]; // s1 is pillar's sector
|
||||
|
||||
|
||||
manual_donut:
|
||||
// ALREADY MOVING? IF SO, KEEP GOING...
|
||||
if (s1->PlaneMoving(sector_t::floor))
|
||||
continue;
|
||||
|
@ -834,6 +845,7 @@ bool EV_DoDonut (int tag, fixed_t pillarspeed, fixed_t slimespeed)
|
|||
floor->StartFloorSound ();
|
||||
break;
|
||||
}
|
||||
if (manual) break;
|
||||
}
|
||||
return rtn;
|
||||
}
|
||||
|
@ -989,17 +1001,28 @@ bool EV_DoElevator (line_t *line, DElevator::EElevator elevtype,
|
|||
fixed_t floorheight, ceilingheight;
|
||||
fixed_t newheight;
|
||||
vertex_t* spot;
|
||||
bool manual = false;
|
||||
|
||||
if (!line && (elevtype == DElevator::elevateCurrent))
|
||||
return false;
|
||||
|
||||
secnum = -1;
|
||||
rtn = false;
|
||||
|
||||
if (tag == 0)
|
||||
{
|
||||
if (!line || !(sec = line->backsector))
|
||||
return rtn;
|
||||
manual = true;
|
||||
goto manual_elevator;
|
||||
}
|
||||
|
||||
|
||||
// act on all sectors with the same tag as the triggering linedef
|
||||
while ((secnum = P_FindSectorFromTag (tag, secnum)) >= 0)
|
||||
{
|
||||
sec = §ors[secnum];
|
||||
|
||||
manual_elevator:
|
||||
// If either floor or ceiling is already activated, skip it
|
||||
if (sec->PlaneMoving(sector_t::floor) || sec->ceilingdata) //jff 2/22/98
|
||||
continue;
|
||||
|
@ -1060,6 +1083,7 @@ bool EV_DoElevator (line_t *line, DElevator::EElevator elevtype,
|
|||
elevator->m_CeilingDestDist = sec->ceilingplane.PointToDist (sec->soundorg[0], sec->soundorg[1], ceilingheight - height);
|
||||
break;
|
||||
}
|
||||
if (manual) break;
|
||||
}
|
||||
return rtn;
|
||||
}
|
||||
|
@ -1307,19 +1331,31 @@ void DCeilingWaggle::Tick ()
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
bool EV_StartWaggle (int tag, int height, int speed, int offset,
|
||||
bool EV_StartWaggle (int tag, line_t *line, int height, int speed, int offset,
|
||||
int timer, bool ceiling)
|
||||
{
|
||||
int sectorIndex;
|
||||
sector_t *sector;
|
||||
DWaggleBase *waggle;
|
||||
bool retCode;
|
||||
bool manual = false;
|
||||
|
||||
retCode = false;
|
||||
sectorIndex = -1;
|
||||
|
||||
if (tag == 0)
|
||||
{
|
||||
if (!line || !(sector = line->backsector))
|
||||
return retCode;
|
||||
manual = true;
|
||||
goto manual_waggle;
|
||||
}
|
||||
|
||||
|
||||
while ((sectorIndex = P_FindSectorFromTag(tag, sectorIndex)) >= 0)
|
||||
{
|
||||
sector = §ors[sectorIndex];
|
||||
manual_waggle:
|
||||
if ((!ceiling && sector->PlaneMoving(sector_t::floor)) ||
|
||||
(ceiling && sector->PlaneMoving(sector_t::ceiling)))
|
||||
{ // Already busy with another thinker
|
||||
|
@ -1344,6 +1380,7 @@ bool EV_StartWaggle (int tag, int height, int speed, int offset,
|
|||
/(TICRATE+((3*TICRATE)*height)/255);
|
||||
waggle->m_Ticker = timer ? timer*TICRATE : -1;
|
||||
waggle->m_State = WGLSTATE_EXPAND;
|
||||
if (manual) break;
|
||||
}
|
||||
return retCode;
|
||||
}
|
||||
|
|
|
@ -341,13 +341,13 @@ FUNC(LS_Floor_LowerToLowestTxTy)
|
|||
FUNC(LS_Floor_Waggle)
|
||||
// Floor_Waggle (tag, amplitude, frequency, delay, time)
|
||||
{
|
||||
return EV_StartWaggle (arg0, arg1, arg2, arg3, arg4, false);
|
||||
return EV_StartWaggle (arg0, ln, arg1, arg2, arg3, arg4, false);
|
||||
}
|
||||
|
||||
FUNC(LS_Ceiling_Waggle)
|
||||
// Ceiling_Waggle (tag, amplitude, frequency, delay, time)
|
||||
{
|
||||
return EV_StartWaggle (arg0, arg1, arg2, arg3, arg4, true);
|
||||
return EV_StartWaggle (arg0, ln, arg1, arg2, arg3, arg4, true);
|
||||
}
|
||||
|
||||
FUNC(LS_Floor_TransferTrigger)
|
||||
|
@ -365,7 +365,7 @@ FUNC(LS_Floor_TransferNumeric)
|
|||
FUNC(LS_Floor_Donut)
|
||||
// Floor_Donut (pillartag, pillarspeed, slimespeed)
|
||||
{
|
||||
return EV_DoDonut (arg0, SPEED(arg1), SPEED(arg2));
|
||||
return EV_DoDonut (arg0, ln, SPEED(arg1), SPEED(arg2));
|
||||
}
|
||||
|
||||
FUNC(LS_Generic_Floor)
|
||||
|
|
|
@ -3157,11 +3157,20 @@ fixed_t P_AimLineAttack (AActor *t1, angle_t angle, fixed_t distance, AActor **p
|
|||
}
|
||||
else
|
||||
{
|
||||
// 35 degrees is approximately what Doom used. You cannot have a
|
||||
// vrange of 0 degrees, because then toppitch and bottompitch will
|
||||
// be equal, and PTR_AimTraverse will never find anything to shoot at
|
||||
// if it crosses a line.
|
||||
vrange = clamp (t1->player->userinfo.GetAimDist(), ANGLE_1/2, ANGLE_1*35);
|
||||
// [BB] Disable autoaim on weapons with WIF_NOAUTOAIM.
|
||||
AWeapon *weapon = t1->player->ReadyWeapon;
|
||||
if ( weapon && (weapon->WeaponFlags & WIF_NOAUTOAIM) )
|
||||
{
|
||||
vrange = ANGLE_1/2;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 35 degrees is approximately what Doom used. You cannot have a
|
||||
// vrange of 0 degrees, because then toppitch and bottompitch will
|
||||
// be equal, and PTR_AimTraverse will never find anything to shoot at
|
||||
// if it crosses a line.
|
||||
vrange = clamp (t1->player->userinfo.aimdist, ANGLE_1/2, ANGLE_1*35);
|
||||
}
|
||||
}
|
||||
}
|
||||
aim.toppitch = t1->pitch - vrange;
|
||||
|
|
|
@ -3838,17 +3838,13 @@ APlayerPawn *P_SpawnPlayer (FMapThing *mthing, bool tempplayer)
|
|||
// [RH] Things 4001-? are also multiplayer starts. Just like 1-4.
|
||||
// To make things simpler, figure out which player is being
|
||||
// spawned here.
|
||||
if (mthing->type <= 4 || gameinfo.gametype == GAME_Strife) // don't forget Strife's starts 5-8 here!
|
||||
if (mthing->type <= 4)
|
||||
{
|
||||
playernum = mthing->type - 1;
|
||||
}
|
||||
else if (gameinfo.gametype != GAME_Hexen)
|
||||
{
|
||||
playernum = mthing->type - 4001 + 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
playernum = mthing->type - 9100 + 4;
|
||||
playernum = mthing->type - gameinfo.player5start + 4;
|
||||
}
|
||||
|
||||
// not playing?
|
||||
|
@ -4140,12 +4136,9 @@ AActor *P_SpawnMapThing (FMapThing *mthing, int position)
|
|||
}
|
||||
else
|
||||
{
|
||||
const int base = (gameinfo.gametype == GAME_Strife) ? 5 :
|
||||
(gameinfo.gametype == GAME_Hexen) ? 9100 : 4001;
|
||||
|
||||
if (mthing->type >= base && mthing->type < base + MAXPLAYERS - 4)
|
||||
if (mthing->type >= gameinfo.player5start && mthing->type < gameinfo.player5start + MAXPLAYERS - 4)
|
||||
{
|
||||
pnum = mthing->type - base + 4;
|
||||
pnum = mthing->type - gameinfo.player5start + 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4449,8 +4442,13 @@ void P_SpawnBlood (fixed_t x, fixed_t y, fixed_t z, angle_t dir, int damage, AAc
|
|||
AActor *th;
|
||||
PalEntry bloodcolor = (PalEntry)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodColor);
|
||||
const PClass *bloodcls = PClass::FindClass((ENamedName)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodType, NAME_Blood));
|
||||
|
||||
int bloodtype = cl_bloodtype;
|
||||
|
||||
if (bloodcls != NULL && !(GetDefaultByType(bloodcls)->flags4 & MF4_ALLOWPARTICLES))
|
||||
bloodtype = 0;
|
||||
|
||||
if (bloodcls!=NULL && cl_bloodtype <= 1)
|
||||
if (bloodcls!=NULL && bloodtype <= 1)
|
||||
{
|
||||
z += pr_spawnblood.Random2 () << 10;
|
||||
th = Spawn (bloodcls, x, y, z, ALLOW_REPLACE);
|
||||
|
@ -4492,7 +4490,7 @@ void P_SpawnBlood (fixed_t x, fixed_t y, fixed_t z, angle_t dir, int damage, AAc
|
|||
}
|
||||
}
|
||||
|
||||
if (cl_bloodtype >= 1)
|
||||
if (bloodtype >= 1)
|
||||
P_DrawSplash2 (40, x, y, z, dir, 2, bloodcolor);
|
||||
}
|
||||
|
||||
|
@ -4507,7 +4505,12 @@ void P_BloodSplatter (fixed_t x, fixed_t y, fixed_t z, AActor *originator)
|
|||
PalEntry bloodcolor = (PalEntry)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodColor);
|
||||
const PClass *bloodcls = PClass::FindClass((ENamedName)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodType2, NAME_BloodSplatter));
|
||||
|
||||
if (bloodcls!=NULL && cl_bloodtype <= 1)
|
||||
int bloodtype = cl_bloodtype;
|
||||
|
||||
if (bloodcls != NULL && !(GetDefaultByType(bloodcls)->flags4 & MF4_ALLOWPARTICLES))
|
||||
bloodtype = 0;
|
||||
|
||||
if (bloodcls!=NULL && bloodtype <= 1)
|
||||
{
|
||||
AActor *mo;
|
||||
|
||||
|
@ -4523,7 +4526,7 @@ void P_BloodSplatter (fixed_t x, fixed_t y, fixed_t z, AActor *originator)
|
|||
mo->Translation = TRANSLATION(TRANSLATION_Blood, bloodcolor.a);
|
||||
}
|
||||
}
|
||||
if (cl_bloodtype >= 1)
|
||||
if (bloodtype >= 1)
|
||||
{
|
||||
P_DrawSplash2 (40, x, y, z, R_PointToAngle2 (x, y, originator->x, originator->y), 2, bloodcolor);
|
||||
}
|
||||
|
@ -4540,7 +4543,12 @@ void P_BloodSplatter2 (fixed_t x, fixed_t y, fixed_t z, AActor *originator)
|
|||
PalEntry bloodcolor = (PalEntry)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodColor);
|
||||
const PClass *bloodcls = PClass::FindClass((ENamedName)originator->GetClass()->Meta.GetMetaInt(AMETA_BloodType3, NAME_AxeBlood));
|
||||
|
||||
if (bloodcls!=NULL && cl_bloodtype <= 1)
|
||||
int bloodtype = cl_bloodtype;
|
||||
|
||||
if (bloodcls != NULL && !(GetDefaultByType(bloodcls)->flags4 & MF4_ALLOWPARTICLES))
|
||||
bloodtype = 0;
|
||||
|
||||
if (bloodcls!=NULL && bloodtype <= 1)
|
||||
{
|
||||
AActor *mo;
|
||||
|
||||
|
@ -4556,7 +4564,7 @@ void P_BloodSplatter2 (fixed_t x, fixed_t y, fixed_t z, AActor *originator)
|
|||
mo->Translation = TRANSLATION(TRANSLATION_Blood, bloodcolor.a);
|
||||
}
|
||||
}
|
||||
if (cl_bloodtype >= 1)
|
||||
if (bloodtype >= 1)
|
||||
{
|
||||
P_DrawSplash2 (100, x, y, z, R_PointToAngle2 (0, 0, originator->x - x, originator->y - y), 2, bloodcolor);
|
||||
}
|
||||
|
@ -4577,7 +4585,13 @@ void P_RipperBlood (AActor *mo, AActor *bleeder)
|
|||
x = mo->x + (pr_ripperblood.Random2 () << 12);
|
||||
y = mo->y + (pr_ripperblood.Random2 () << 12);
|
||||
z = mo->z + (pr_ripperblood.Random2 () << 12);
|
||||
if (bloodcls!=NULL && cl_bloodtype <= 1)
|
||||
|
||||
int bloodtype = cl_bloodtype;
|
||||
|
||||
if (bloodcls != NULL && !(GetDefaultByType(bloodcls)->flags4 & MF4_ALLOWPARTICLES))
|
||||
bloodtype = 0;
|
||||
|
||||
if (bloodcls!=NULL && bloodtype <= 1)
|
||||
{
|
||||
AActor *th;
|
||||
th = Spawn (bloodcls, x, y, z, ALLOW_REPLACE);
|
||||
|
@ -4593,7 +4607,7 @@ void P_RipperBlood (AActor *mo, AActor *bleeder)
|
|||
th->Translation = TRANSLATION(TRANSLATION_Blood, bloodcolor.a);
|
||||
}
|
||||
}
|
||||
if (cl_bloodtype >= 1)
|
||||
if (bloodtype >= 1)
|
||||
{
|
||||
P_DrawSplash2 (28, x, y, z, 0, 0, bloodcolor);
|
||||
}
|
||||
|
|
|
@ -825,7 +825,7 @@ protected:
|
|||
friend bool EV_DoFloor (DFloor::EFloor floortype, line_t *line, int tag,
|
||||
fixed_t speed, fixed_t height, int crush, int change, bool hexencrush);
|
||||
friend bool EV_FloorCrushStop (int tag);
|
||||
friend bool EV_DoDonut (int tag, fixed_t pillarspeed, fixed_t slimespeed);
|
||||
friend bool EV_DoDonut (int tag, line_t *line, fixed_t pillarspeed, fixed_t slimespeed);
|
||||
private:
|
||||
DFloor ();
|
||||
};
|
||||
|
@ -836,7 +836,7 @@ bool EV_BuildStairs (int tag, DFloor::EStair type, line_t *line,
|
|||
bool EV_DoFloor (DFloor::EFloor floortype, line_t *line, int tag,
|
||||
fixed_t speed, fixed_t height, int crush, int change, bool hexencrush);
|
||||
bool EV_FloorCrushStop (int tag);
|
||||
bool EV_DoDonut (int tag, fixed_t pillarspeed, fixed_t slimespeed);
|
||||
bool EV_DoDonut (int tag, line_t *line, fixed_t pillarspeed, fixed_t slimespeed);
|
||||
|
||||
inline FArchive &operator<< (FArchive &arc, DFloor::EFloor &type)
|
||||
{
|
||||
|
@ -915,7 +915,7 @@ protected:
|
|||
int m_State;
|
||||
TObjPtr<DInterpolation> m_Interpolation;
|
||||
|
||||
friend bool EV_StartWaggle (int tag, int height, int speed,
|
||||
friend bool EV_StartWaggle (int tag, line_t *line, int height, int speed,
|
||||
int offset, int timer, bool ceiling);
|
||||
|
||||
void DoWaggle (bool ceiling);
|
||||
|
@ -923,7 +923,7 @@ protected:
|
|||
DWaggleBase ();
|
||||
};
|
||||
|
||||
bool EV_StartWaggle (int tag, int height, int speed,
|
||||
bool EV_StartWaggle (int tag, line_t *line, int height, int speed,
|
||||
int offset, int timer, bool ceiling);
|
||||
|
||||
class DFloorWaggle : public DWaggleBase
|
||||
|
|
|
@ -315,18 +315,21 @@ void FRemapTable::AddIndexRange(int start, int end, int pal1, int pal2)
|
|||
}
|
||||
else if (start == end)
|
||||
{
|
||||
start = GPalette.Remap[start];
|
||||
pal1 = GPalette.Remap[pal1];
|
||||
Remap[start] = pal1;
|
||||
Palette[start] = GPalette.BaseColors[pal1];
|
||||
Palette[start].a = start==0? 0:255;
|
||||
Palette[start].a = start == 0 ? 0 : 255;
|
||||
return;
|
||||
}
|
||||
palcol = pal1 << FRACBITS;
|
||||
palstep = ((pal2 << FRACBITS) - palcol) / (end - start);
|
||||
for (int i = start; i <= end; palcol += palstep, ++i)
|
||||
{
|
||||
Remap[i] = palcol >> FRACBITS;
|
||||
Palette[i] = GPalette.BaseColors[palcol >> FRACBITS];
|
||||
Palette[i].a = i==0? 0:255;
|
||||
int j = GPalette.Remap[i], k = GPalette.Remap[palcol >> FRACBITS];
|
||||
Remap[j] = k;
|
||||
Palette[j] = GPalette.BaseColors[k];
|
||||
Palette[j].a = j == 0 ? 0 : 255;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -368,10 +371,10 @@ void FRemapTable::AddColorRange(int start, int end, int _r1,int _g1, int _b1, in
|
|||
}
|
||||
if (start == end)
|
||||
{
|
||||
Remap[start] = ColorMatcher.Pick
|
||||
(r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
|
||||
start = GPalette.Remap[start];
|
||||
Remap[start] = ColorMatcher.Pick(r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
|
||||
Palette[start] = PalEntry(r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
|
||||
Palette[start].a = start==0? 0:255;
|
||||
Palette[start].a = start == 0 ? 0 : 255;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -380,9 +383,9 @@ void FRemapTable::AddColorRange(int start, int end, int _r1,int _g1, int _b1, in
|
|||
bs /= (end - start);
|
||||
for (int i = start; i <= end; ++i)
|
||||
{
|
||||
Remap[i] = ColorMatcher.Pick
|
||||
(r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
|
||||
Palette[i] = PalEntry(start==0? 0:255, r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
|
||||
int j = GPalette.Remap[i];
|
||||
Remap[j] = ColorMatcher.Pick(r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
|
||||
Palette[j] = PalEntry(j == 0 ? 0 : 255, r >> FRACBITS, g >> FRACBITS, b >> FRACBITS);
|
||||
r += rs;
|
||||
g += gs;
|
||||
b += bs;
|
||||
|
@ -412,7 +415,7 @@ void FRemapTable::AddDesaturation(int start, int end, float r1,float g1, float b
|
|||
g1 *= 255;
|
||||
b1 *= 255;
|
||||
|
||||
for(int c=start; c < end; c++)
|
||||
for(int c = start; c < end; c++)
|
||||
{
|
||||
double intensity = (GPalette.BaseColors[c].r * 77 +
|
||||
GPalette.BaseColors[c].g * 143 +
|
||||
|
@ -422,9 +425,11 @@ void FRemapTable::AddDesaturation(int start, int end, float r1,float g1, float b
|
|||
MIN(255, int(g1 + intensity*g2)),
|
||||
MIN(255, int(b1 + intensity*b2)));
|
||||
|
||||
Remap[c] = ColorMatcher.Pick(pe);
|
||||
Palette[c] = pe;
|
||||
Palette[c].a = c==0? 0:255;
|
||||
int cc = GPalette.Remap[c];
|
||||
|
||||
Remap[cc] = ColorMatcher.Pick(pe);
|
||||
Palette[cc] = pe;
|
||||
Palette[cc].a = cc == 0 ? 0:255;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3,5 +3,5 @@
|
|||
// This file was automatically generated by the
|
||||
// updaterevision tool. Do not edit by hand.
|
||||
|
||||
#define ZD_SVN_REVISION_STRING "1991"
|
||||
#define ZD_SVN_REVISION_NUMBER 1991
|
||||
#define ZD_SVN_REVISION_STRING "2001"
|
||||
#define ZD_SVN_REVISION_NUMBER 2001
|
||||
|
|
|
@ -222,7 +222,7 @@ int FWadCollection::AddExternalFile(const char *filename)
|
|||
// [RH] Removed reload hack
|
||||
//==========================================================================
|
||||
|
||||
void FWadCollection::AddFile (const char *filename, FileReader *wadinfo)
|
||||
void FWadCollection::AddFile (char *filename, FileReader *wadinfo)
|
||||
{
|
||||
int startlump;
|
||||
bool isdir = false;
|
||||
|
@ -252,6 +252,7 @@ void FWadCollection::AddFile (const char *filename, FileReader *wadinfo)
|
|||
return;
|
||||
}
|
||||
}
|
||||
FixPathSeperator(filename);
|
||||
}
|
||||
|
||||
Printf (" adding %s", filename);
|
||||
|
|
|
@ -154,7 +154,7 @@ public:
|
|||
enum { IWAD_FILENUM = 1 };
|
||||
|
||||
void InitMultipleFiles (wadlist_t **filenames);
|
||||
void AddFile (const char *filename, FileReader *wadinfo = NULL);
|
||||
void AddFile (char *filename, FileReader *wadinfo = NULL);
|
||||
int CheckIfWadLoaded (const char *name);
|
||||
|
||||
const char *GetWadName (int wadnum) const;
|
||||
|
|
|
@ -480,11 +480,16 @@ void I_WaitVBL(int count)
|
|||
|
||||
void I_DetectOS(void)
|
||||
{
|
||||
OSVERSIONINFO info;
|
||||
OSVERSIONINFOEX info;
|
||||
const char *osname;
|
||||
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||
GetVersionEx (&info);
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
|
||||
if (!GetVersionEx((OSVERSIONINFO *)&info))
|
||||
{
|
||||
// Retry with the older OSVERSIONINFO structure.
|
||||
info.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||
GetVersionEx((OSVERSIONINFO *)&info);
|
||||
}
|
||||
|
||||
switch (info.dwPlatformId)
|
||||
{
|
||||
|
@ -522,9 +527,30 @@ void I_DetectOS(void)
|
|||
osname = "Server 2003";
|
||||
}
|
||||
}
|
||||
else if (info.dwMajorVersion == 6 && info.dwMinorVersion == 0)
|
||||
else if (info.dwMajorVersion == 6)
|
||||
{
|
||||
osname = "Vista";
|
||||
if (info.dwMinorVersion == 0)
|
||||
{
|
||||
if (info.wProductType == VER_NT_WORKSTATION)
|
||||
{
|
||||
osname = "Vista";
|
||||
}
|
||||
else
|
||||
{
|
||||
osname = "Server 2008";
|
||||
}
|
||||
}
|
||||
else if (info.dwMinorVersion == 1)
|
||||
{
|
||||
if (info.wProductType == VER_NT_WORKSTATION)
|
||||
{
|
||||
osname = "7";
|
||||
}
|
||||
else
|
||||
{
|
||||
osname = "Server 2008 R2";
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -543,7 +569,7 @@ void I_DetectOS(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
Printf ("OS: Windows %s %lu.%lu (Build %lu)\n %s\n",
|
||||
Printf ("OS: Windows %s (NT %lu.%lu) Build %lu\n %s\n",
|
||||
osname,
|
||||
info.dwMajorVersion, info.dwMinorVersion,
|
||||
info.dwBuildNumber, info.szCSDVersion);
|
||||
|
|
|
@ -94,7 +94,7 @@ ACTOR ArtiPork : CustomInventory 30
|
|||
States
|
||||
{
|
||||
Spawn:
|
||||
PORK ABCB 6
|
||||
PORK ABCDEFGH 6
|
||||
Loop
|
||||
Use:
|
||||
TNT1 A 0 A_FireCustomMissile("PorkFX", -15, 0, 0, 0, 1)
|
||||
|
|
|
@ -40,6 +40,7 @@ gameinfo
|
|||
defaultrespawntime = 12
|
||||
defaultdropstyle = 1
|
||||
endoom = "ENDOOM"
|
||||
player5start = 4001
|
||||
}
|
||||
|
||||
skill baby
|
||||
|
|
|
@ -39,6 +39,7 @@ gameinfo
|
|||
defaultrespawntime = 12
|
||||
defaultdropstyle = 1
|
||||
endoom = "ENDOOM"
|
||||
player5start = 4001
|
||||
}
|
||||
|
||||
skill baby
|
||||
|
|
|
@ -40,6 +40,7 @@ gameinfo
|
|||
defaultrespawntime = 12
|
||||
defaultdropstyle = 1
|
||||
endoom = "ENDTEXT"
|
||||
player5start = 4001
|
||||
}
|
||||
|
||||
skill baby
|
||||
|
|
|
@ -38,6 +38,7 @@ gameinfo
|
|||
definventorymaxamount = 25
|
||||
defaultrespawntime = 12
|
||||
defaultdropstyle = 1
|
||||
player5start = 9100
|
||||
}
|
||||
|
||||
skill baby
|
||||
|
|
|
@ -41,6 +41,7 @@ gameinfo
|
|||
defaultrespawntime = 16
|
||||
defaultdropstyle = 2
|
||||
endoom = "ENDSTRF"
|
||||
player5start = 5
|
||||
}
|
||||
|
||||
skill baby
|
||||
|
|
|
@ -43,7 +43,7 @@ include "xlat/defines.i"
|
|||
41 = USE, Ceiling_LowerToFloor (tag, C_SLOW)
|
||||
42 = USE|REP, Door_Close (tag, D_SLOW)
|
||||
43 = USE|REP, Ceiling_LowerToFloor (tag, C_SLOW)
|
||||
44 = WALK, Ceiling_LowerAndCrush (tag, C_SLOW, 0)
|
||||
44 = WALK, Ceiling_LowerAndCrush (tag, C_SLOW, 0, 2)
|
||||
45 = USE|REP, Floor_LowerToHighest (tag, F_SLOW, 128)
|
||||
46 = SHOOT|REP|MONST, Door_Open (tag, D_SLOW)
|
||||
47 = SHOOT, Plat_RaiseAndStayTx0 (tag, P_SLOW/2)
|
||||
|
@ -71,7 +71,7 @@ include "xlat/defines.i"
|
|||
69 = USE|REP, Floor_RaiseToNearest (tag, F_SLOW)
|
||||
70 = USE|REP, Floor_LowerToHighest (tag, F_FAST, 136)
|
||||
71 = USE, Floor_LowerToHighest (tag, F_FAST, 136)
|
||||
72 = WALK|REP, Ceiling_LowerAndCrush (tag, C_SLOW, 0)
|
||||
72 = WALK|REP, Ceiling_LowerAndCrush (tag, C_SLOW, 0, 2)
|
||||
73 = WALK|REP, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10)
|
||||
74 = WALK|REP, Ceiling_CrushStop (tag)
|
||||
75 = WALK|REP, Door_Close (tag, D_SLOW)
|
||||
|
@ -169,7 +169,7 @@ include "xlat/defines.i"
|
|||
164 = USE, Ceiling_CrushAndRaiseA (tag, C_NORMAL, C_NORMAL, 10)
|
||||
165 = USE, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10)
|
||||
166 = USE, FloorAndCeiling_LowerRaise (tag, F_SLOW, C_SLOW)
|
||||
167 = USE, Ceiling_LowerAndCrush (tag, C_SLOW, 0)
|
||||
167 = USE, Ceiling_LowerAndCrush (tag, C_SLOW, 0, 2)
|
||||
168 = USE, Ceiling_CrushStop (tag)
|
||||
169 = USE, Light_MaxNeighbor (tag)
|
||||
170 = USE, Light_ChangeToValue (tag, 35)
|
||||
|
@ -189,7 +189,7 @@ include "xlat/defines.i"
|
|||
184 = USE|REP, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10)
|
||||
185 = USE|REP, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10)
|
||||
186 = USE|REP, FloorAndCeiling_LowerRaise (tag, F_SLOW, C_SLOW)
|
||||
187 = USE|REP, Ceiling_LowerAndCrush (tag, C_SLOW, 0)
|
||||
187 = USE|REP, Ceiling_LowerAndCrush (tag, C_SLOW, 0, 2)
|
||||
188 = USE|REP, Ceiling_CrushStop (tag)
|
||||
189 = USE, Floor_TransferTrigger (tag)
|
||||
190 = USE|REP, Floor_TransferTrigger (tag)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue