- Added copyright/license headers to a few files.

- Fixed: ACS SetMugShotState needs to check the StatusBar pointer for the
  proper object type.
- Move SBarInfo loading code in d_main.cpp into a static method of DSBarInfo.
- Removed dobject.err from the repository. It only contained a list of compiler
  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.


SVN r812 (trunk)
This commit is contained in:
Christoph Oelckers 2008-03-19 09:53:23 +00:00
parent 02071140a5
commit 5b9073add4
19 changed files with 2969 additions and 2537 deletions

View file

@ -1,3 +1,26 @@
March 19, 2008 (Changes by Graf Zahl)
- Added copyright/license headers to a few files.
- Fixed: ACS SetMugShotState needs to check the StatusBar pointer for the
proper object type.
- Move SBarInfo loading code in d_main.cpp into a static method of DSBarInfo.
- Removed dobject.err from the repository. It only contained a list of compiler
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.
March 18, 2008 March 18, 2008
- Fixed the TArray serializer declaration. - Fixed the TArray serializer declaration.
(Thank you for your warnings, GCC! ;-) (Thank you for your warnings, GCC! ;-)

View file

@ -2439,14 +2439,9 @@ void D_DoomMain (void)
StartScreen->LoadingStatus ("Init game engine", 0x3f); StartScreen->LoadingStatus ("Init game engine", 0x3f);
P_Init (); P_Init ();
//SBarInfo support. //SBarInfo support.
if(Wads.CheckNumForName("SBARINFO") != -1) SBarInfo::Load();
{
Printf ("ParseSBarInfo: Loading custom status bar definition.\n");
SBarInfoScript = new SBarInfo(Wads.GetNumForName("SBARINFO")); //load last SBARINFO lump to avoid clashes
atterm(FreeSBarInfoScript);
}
//end most of the SBarInfo stuff
Printf ("D_CheckNetGame: Checking network game status.\n"); Printf ("D_CheckNetGame: Checking network game status.\n");
StartScreen->LoadingStatus ("Checking network game status.", 0x3f); StartScreen->LoadingStatus ("Checking network game status.", 0x3f);

View file

@ -1,31 +0,0 @@
dobject.h(87): Error! E121: col(27) syntax error
dobject.h(87): Note! N393: col(27) included from dthinker.h(38)
dobject.h(87): Note! N393: col(27) included from actor.h(31)
dobject.h(87): Note! N393: col(27) included from dobject.cpp(39)
dobject.h(120): Error! E412: col(36) only member functions can be declared 'const' or 'volatile'
dobject.h(125): Error! E412: col(9) only member functions can be declared 'const' or 'volatile'
dobject.h(128): Error! E204: col(29) 'this' pointer is not defined
dobject.h(130): Error! E386: col(30) attempt to use pointer to undefined class
dobject.h(130): Note! N638: col(30) 'TypeInfo' defined in: dobject.h(83) (col 8)
dobject.h(135): Error! E412: col(9) only member functions can be declared 'const' or 'volatile'
dobject.h(136): Error! E386: col(24) attempt to use pointer to undefined class
dobject.h(136): Note! N638: col(24) 'TypeInfo' defined in: dobject.h(83) (col 8)
dobject.h(136): Error! E204: col(42) 'this' pointer is not defined
dobject.h(148): Error! E121: col(1) syntax error
dobject.h(299): Error! E275: col(9) the second argument of 'operator delete' must be of type 'size_t'
dobject.h(299): Error! E488: col(9) 'operator delete' cannot be overloaded
dobject.h(236): Error! E386: col(24) attempt to use pointer to undefined class
dobject.h(236): Note! N638: col(24) 'TypeInfo' defined in: dobject.h(83) (col 8)
infomacros.h(166): Error! E080: col(2) Actor default lists are only implemented for Visual C++ and GCC
actor.h(310): Error! E029: col(37) symbol 'FindType' has not been declared
actor.h(315): Error! E386: col(27) attempt to use pointer to undefined class
actor.h(315): Note! N638: col(27) 'TypeInfo' defined in: dobject.h(83) (col 8)
actor.h(320): Error! E409: col(1) template argument 'T' is not used in the function argument list
actor.h(320): Note! N392: col(1) 'T' defined in: actor.h(318) (col 16)
actor.h(344): Error! E386: col(52) attempt to use pointer to undefined class
actor.h(344): Note! N638: col(52) 'TypeInfo' defined in: dobject.h(83) (col 8)
actor.h(617): Error! E029: col(47) symbol 'FindType' has not been declared
actor.h(622): Error! E409: col(1) template argument 'T' is not used in the function argument list
actor.h(622): Note! N392: col(1) 'T' defined in: actor.h(620) (col 16)
d_player.h(31): Error! E059: col(10) unable to open 'a_artifacts.h'
p_pspr.h(87): Error! E133: col(43) too many errors: compilation aborted

View file

@ -1,3 +1,37 @@
/*
** dobjtype.cpp
** Implements the type information class
**
**---------------------------------------------------------------------------
** Copyright 1998-2008 Randy Heit
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions
** are met:
**
** 1. Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** 2. Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in the
** documentation and/or other materials provided with the distribution.
** 3. The name of the author may not be used to endorse or promote products
** derived from this software without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**---------------------------------------------------------------------------
**
*/
#include "dobject.h" #include "dobject.h"
#include "i_system.h" #include "i_system.h"
#include "actor.h" #include "actor.h"

View file

@ -1,7 +1,50 @@
/*
** files.cpp
** Implements classes for reading from files or memory blocks
**
**---------------------------------------------------------------------------
** Copyright 1998-2008 Randy Heit
** Copyright 2005-2008 Christoph Oelckers
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions
** are met:
**
** 1. Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** 2. Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in the
** documentation and/or other materials provided with the distribution.
** 3. The name of the author may not be used to endorse or promote products
** derived from this software without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**---------------------------------------------------------------------------
**
*/
#include "files.h" #include "files.h"
#include "i_system.h" #include "i_system.h"
#include "templates.h" #include "templates.h"
//==========================================================================
//
// FileReader
//
// reads data from an uncompressed file or part of it
//
//==========================================================================
FileReader::FileReader () FileReader::FileReader ()
: File(NULL), Length(0), CloseOnDestruct(false) : File(NULL), Length(0), CloseOnDestruct(false)
{ {
@ -99,7 +142,14 @@ long FileReader::CalcFileLen() const
return endpos; return endpos;
} }
// Now for the zlib wrapper ------------------------------------------------- //==========================================================================
//
// FileReaderZ
//
// The zlib wrapper
// reads data from a ZLib compressed stream
//
//==========================================================================
FileReaderZ::FileReaderZ (FileReader &file, bool zip) FileReaderZ::FileReaderZ (FileReader &file, bool zip)
: File(file), SawEOF(false) : File(file), SawEOF(false)
@ -166,6 +216,14 @@ void FileReaderZ::FillBuffer ()
Stream.avail_in = numread; Stream.avail_in = numread;
} }
//==========================================================================
//
// MemoryReader
//
// reads data from a block of memory
//
//==========================================================================
MemoryReader::MemoryReader (const char *buffer, long length) MemoryReader::MemoryReader (const char *buffer, long length)
{ {
bufptr=buffer; bufptr=buffer;

View file

@ -74,7 +74,6 @@
#include "vectors.h" #include "vectors.h"
#include "sbarinfo.h" #include "sbarinfo.h"
#include "r_translate.h" #include "r_translate.h"
#include "sbarinfo.h"
#include "gi.h" #include "gi.h"

File diff suppressed because it is too large Load diff

View file

@ -8,6 +8,7 @@ class FBarTexture;
class FScanner; class FScanner;
struct SBarInfoCommand; //we need to be able to use this before it is defined. struct SBarInfoCommand; //we need to be able to use this before it is defined.
struct MugShotState;
struct SBarInfoBlock struct SBarInfoBlock
{ {
@ -56,6 +57,7 @@ struct SBarInfo
int GetGameType() { return gameType; } int GetGameType() { return gameType; }
void ParseSBarInfo(int lump); void ParseSBarInfo(int lump);
void ParseSBarInfoBlock(FScanner &sc, SBarInfoBlock &block); void ParseSBarInfoBlock(FScanner &sc, SBarInfoBlock &block);
void ParseMugShotBlock(FScanner &sc, MugShotState &state);
void getCoordinates(FScanner &sc, SBarInfoCommand &cmd); //retrieves the next two arguments as x and y. void getCoordinates(FScanner &sc, SBarInfoCommand &cmd); //retrieves the next two arguments as x and y.
int getSignedInteger(FScanner &sc); //returns a signed integer. int getSignedInteger(FScanner &sc); //returns a signed integer.
int newImage(const char* patchname); int newImage(const char* patchname);
@ -64,10 +66,255 @@ struct SBarInfo
SBarInfo(); SBarInfo();
SBarInfo(int lumpnum); SBarInfo(int lumpnum);
~SBarInfo(); ~SBarInfo();
static void Load();
}; };
extern SBarInfo *SBarInfoScript; extern SBarInfo *SBarInfoScript;
void FreeSBarInfoScript(); void FreeSBarInfoScript();
//Mug Shot scripting structs. All functions are defined in sbarinfo_parser.cpp
struct MugShotState;
struct MugShotFrame
{
TArray<FString> graphic;
int delay;
MugShotFrame();
~MugShotFrame();
FTexture *getTexture(FPlayerSkin *skn, int random, int level=0, int direction=0, bool usesLevels=false, bool health2=false, bool healthspecial=false, bool directional=false);
};
struct MugShotState
{
bool usesLevels;
bool health2; //health level is the 2nd character from the end.
bool healthspecial; //like health2 only the 2nd frame gets the normal health type.
bool directional; //faces direction of damage.
unsigned int position;
int time;
int random;
bool finished;
FName state;
TArray<MugShotFrame> frames;
MugShotState();
MugShotState(FString name);
~MugShotState();
void tick();
void reset();
MugShotFrame getCurrentFrame() { return frames[position]; }
FTexture *getCurrentFrameTexture(FPlayerSkin *skn, int level=0, int direction=0) { return getCurrentFrame().getTexture(skn, random, level, direction, usesLevels, health2, healthspecial, directional); }
};
extern TArray<MugShotState> MugShotStates;
const MugShotState *FindMugShotState(FString state);
int FindMugShotStateIndex(FName state);
// Enums used between the parser and the display
enum //statusbar flags
{
STATUSBARFLAG_FORCESCALED = 1,
};
enum //gametype flags
{
GAMETYPE_SINGLEPLAYER = 1,
GAMETYPE_COOPERATIVE = 2,
GAMETYPE_DEATHMATCH = 4,
GAMETYPE_TEAMGAME = 8,
};
enum //drawimage flags
{
DRAWIMAGE_PLAYERICON = 1,
DRAWIMAGE_AMMO1 = 2,
DRAWIMAGE_AMMO2 = 4,
DRAWIMAGE_INVENTORYICON = 8,
DRAWIMAGE_TRANSLATABLE = 16,
DRAWIMAGE_WEAPONSLOT = 32,
DRAWIMAGE_SWITCHABLE_AND = 64,
DRAWIMAGE_INVULNERABILITY = 128,
DRAWIMAGE_OFFSET_CENTER = 256,
DRAWIMAGE_ARMOR = 512,
DRAWIMAGE_WEAPONICON = 1024,
};
enum //drawnumber flags
{
DRAWNUMBER_HEALTH = 1,
DRAWNUMBER_ARMOR = 2,
DRAWNUMBER_AMMO1 = 4,
DRAWNUMBER_AMMO2 = 8,
DRAWNUMBER_AMMO = 16,
DRAWNUMBER_AMMOCAPACITY = 32,
DRAWNUMBER_FRAGS = 64,
DRAWNUMBER_INVENTORY = 128,
DRAWNUMBER_KILLS = 256,
DRAWNUMBER_MONSTERS = 512,
DRAWNUMBER_ITEMS = 1024,
DRAWNUMBER_TOTALITEMS = 2048,
DRAWNUMBER_SECRETS = 4096,
DRAWNUMBER_TOTALSECRETS = 8192,
DRAWNUMBER_ARMORCLASS = 16384,
};
enum //drawbar flags (will go into special2)
{
DRAWBAR_HORIZONTAL = 1,
DRAWBAR_REVERSE = 2,
DRAWBAR_COMPAREDEFAULTS = 4,
DRAWBAR_KEEPOFFSETS = 8,
};
enum //drawselectedinventory flags
{
DRAWSELECTEDINVENTORY_ALTERNATEONEMPTY = 1,
DRAWSELECTEDINVENTORY_ARTIFLASH = 2,
DRAWSELECTEDINVENTORY_ALWAYSSHOWCOUNTER = 4,
};
enum //drawinventorybar flags
{
DRAWINVENTORYBAR_ALWAYSSHOW = 1,
DRAWINVENTORYBAR_NOARTIBOX = 2,
DRAWINVENTORYBAR_NOARROWS = 4,
DRAWINVENTORYBAR_ALWAYSSHOWCOUNTER = 8,
};
enum //drawgem flags
{
DRAWGEM_WIGGLE = 1,
DRAWGEM_TRANSLATABLE = 2,
DRAWGEM_ARMOR = 4,
DRAWGEM_REVERSE = 8,
};
enum //drawshader flags
{
DRAWSHADER_VERTICAL = 1,
DRAWSHADER_REVERSE = 2,
};
enum //drawmugshot flags
{
DRAWMUGSHOT_XDEATHFACE = 1,
DRAWMUGSHOT_ANIMATEDGODMODE = 2,
};
enum //drawkeybar flags
{
DRAWKEYBAR_VERTICAL = 1,
};
enum //event flags
{
SBARINFOEVENT_NOT = 1,
SBARINFOEVENT_OR = 2,
SBARINFOEVENT_AND = 4,
};
enum //Key words
{
SBARINFO_BASE,
SBARINFO_HEIGHT,
SBARINFO_INTERPOLATEHEALTH,
SBARINFO_INTERPOLATEARMOR,
SBARINFO_COMPLETEBORDER,
SBARINFO_STATUSBAR,
SBARINFO_MUGSHOT,
};
enum //Bar types
{
STBAR_NONE,
STBAR_FULLSCREEN,
STBAR_NORMAL,
STBAR_AUTOMAP,
STBAR_INVENTORY,
STBAR_INVENTORYFULLSCREEN,
};
enum //Bar key words
{
SBARINFO_DRAWIMAGE,
SBARINFO_DRAWNUMBER,
SBARINFO_DRAWSWITCHABLEIMAGE,
SBARINFO_DRAWMUGSHOT,
SBARINFO_DRAWSELECTEDINVENTORY,
SBARINFO_DRAWINVENTORYBAR,
SBARINFO_DRAWBAR,
SBARINFO_DRAWGEM,
SBARINFO_DRAWSHADER,
SBARINFO_DRAWSTRING,
SBARINFO_DRAWKEYBAR,
SBARINFO_GAMEMODE,
SBARINFO_PLAYERCLASS,
SBARINFO_WEAPONAMMO,
};
//All this so I can change the mugshot state in ACS...
class FBarShader : public FTexture
{
public:
FBarShader(bool vertical, bool reverse);
const BYTE *GetColumn(unsigned int column, const Span **spans_out);
const BYTE *GetPixels();
void Unload();
private:
BYTE Pixels[512];
Span DummySpan[2];
};
class DSBarInfo : public DBaseStatusBar
{
DECLARE_CLASS(DSBarInfo, DBaseStatusBar)
public:
DSBarInfo();
~DSBarInfo();
void Draw(EHudState state);
void NewGame();
void AttachToPlayer(player_t *player);
void Tick();
void ReceivedWeapon (AWeapon *weapon);
void FlashItem(const PClass *itemtype);
void SetMugShotState(const char* stateName, bool waitTillDone=false);
private:
void doCommands(SBarInfoBlock &block);
void DrawGraphic(FTexture* texture, int x, int y, int flags);
void DrawString(const char* str, int x, int y, EColorRange translation, int spacing=0);
void DrawNumber(int num, int len, int x, int y, EColorRange translation, int spacing=0);
void DrawFace(int accuracy, bool xdth, bool animatedgodmode, int x, int y);
int updateState(bool xdth, bool animatedgodmode);
void DrawInventoryBar(int type, int num, int x, int y, bool alwaysshow,
int counterx, int countery, EColorRange translation, bool drawArtiboxes, bool noArrows, bool alwaysshowcounter);
void DrawGem(FTexture* chain, FTexture* gem, int value, int x, int y, int padleft, int padright, int chainsize,
bool wiggle, bool translate);
FRemapTable* getTranslation();
FImageCollection Images;
FPlayerSkin *oldSkin;
FFont *drawingFont;
FString lastPrefix;
MugShotState *currentState;
bool weaponGrin;
bool damageFaceActive;
int lastDamageAngle;
int rampageTimer;
int oldHealth;
int oldArmor;
int mugshotHealth;
int chainWiggle;
int artiflash;
unsigned int invBarOffset;
FBarShader shader_horz_normal;
FBarShader shader_horz_reverse;
FBarShader shader_vert_normal;
FBarShader shader_vert_reverse;
};
#endif //__SBarInfo_SBAR_H__ #endif //__SBarInfo_SBAR_H__

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -67,6 +67,7 @@
#include "c_bind.h" #include "c_bind.h"
#include "info.h" #include "info.h"
#include "r_translate.h" #include "r_translate.h"
#include "sbarinfo.h"
extern FILE *Logfile; extern FILE *Logfile;
@ -5301,6 +5302,7 @@ int DLevelScript::RunScript ()
} }
case PCD_GETACTORLIGHTLEVEL: case PCD_GETACTORLIGHTLEVEL:
{
AActor *actor = SingleActorFromTID(STACK(1), activator); AActor *actor = SingleActorFromTID(STACK(1), activator);
if (actor != NULL) if (actor != NULL)
{ {
@ -5309,6 +5311,15 @@ int DLevelScript::RunScript ()
else STACK(1)=0; else STACK(1)=0;
break; break;
} }
case PCD_SETMUGSHOTSTATE:
if(StatusBar != NULL && StatusBar->IsKindOf(RUNTIME_CLASS(DSBarInfo)))
{
static_cast<DSBarInfo*>(StatusBar)->SetMugShotState(FBehavior::StaticLookupString(STACK(1)));
}
break;
}
} }
if (state == SCRIPT_DivideBy0) if (state == SCRIPT_DivideBy0)

View file

@ -547,6 +547,7 @@ public:
PCD_CHECKACTORCEILINGTEXTURE, PCD_CHECKACTORCEILINGTEXTURE,
PCD_CHECKACTORFLOORTEXTURE, PCD_CHECKACTORFLOORTEXTURE,
/*340*/ PCD_GETACTORLIGHTLEVEL, /*340*/ PCD_GETACTORLIGHTLEVEL,
PCD_SETMUGSHOTSTATE,
PCODE_COMMAND_COUNT PCODE_COMMAND_COUNT
}; };

View file

@ -1,3 +1,37 @@
/*
** p_converstation.cpp
** Implements Strife style conversation dialogs
**
**---------------------------------------------------------------------------
** Copyright 2004-2008 Randy Heit
** All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions
** are met:
**
** 1. Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** 2. Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in the
** documentation and/or other materials provided with the distribution.
** 3. The name of the author may not be used to endorse or promote products
** derived from this software without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**---------------------------------------------------------------------------
**
*/
#include <assert.h> #include <assert.h>
#include "actor.h" #include "actor.h"

View file

@ -272,6 +272,7 @@ struct sector_t;
struct extsector_t struct extsector_t
{ {
// 3DMIDTEX information
struct midtex struct midtex
{ {
struct plane struct plane
@ -280,6 +281,14 @@ struct extsector_t
TArray<line_s *> AttachedLines; // all 3dMidtex lines attached to this sector TArray<line_s *> AttachedLines; // all 3dMidtex lines attached to this sector
} Floor, Ceiling; } Floor, Ceiling;
} Midtex; } Midtex;
// linked sectors
/*
struct linked
{
TArray<FLinkedSector> Sectors;
} Linked;
*/
void Serialize(FArchive &arc); void Serialize(FArchive &arc);
}; };

View file

@ -550,7 +550,11 @@ void A_JumpIfCloser(AActor * self)
if (target==NULL) return; if (target==NULL) return;
fixed_t dist = fixed_t(EvalExpressionF (StateParameters[index], self) * FRACUNIT); fixed_t dist = fixed_t(EvalExpressionF (StateParameters[index], self) * FRACUNIT);
if (index > 0 && P_AproxDistance(self->x-target->x, self->y-target->y) < dist) if (index > 0 && P_AproxDistance(self->x-target->x, self->y-target->y) < dist &&
( (self->z > target->z && self->z - (target->z + target->height) < dist) ||
(self->z <=target->z && target->z - (self->z + self->height) < dist)
)
)
DoJump(self, CallingState, StateParameters[index+1]); DoJump(self, CallingState, StateParameters[index+1]);
} }

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="Windows-1252"?> <?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject <VisualStudioProject
ProjectType="Visual C++" ProjectType="Visual C++"
Version="8.00" Version="8,00"
Name="updaterevision" Name="updaterevision"
ProjectGUID="{6077B7D6-349F-4077-B552-3BC302EF5859}" ProjectGUID="{6077B7D6-349F-4077-B552-3BC302EF5859}"
RootNamespace="updaterevision" RootNamespace="updaterevision"
@ -95,82 +95,6 @@
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration <Configuration
Name="Release|Win32" Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)" OutputDirectory="$(SolutionDir)$(ConfigurationName)"
@ -248,6 +172,82 @@
Name="VCPostBuildEventTool" Name="VCPostBuildEventTool"
/> />
</Configuration> </Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
LinkIncremental="2"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration <Configuration
Name="Release|x64" Name="Release|x64"
OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)" OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"

49
wadsrc/sbarinfo.txt Normal file
View file

@ -0,0 +1,49 @@
mugshot "Normal", health2
{
{ST00, ST01, ST02} 17;
}
mugshot "Pain", healthspecial, directional
{
{TR00, KILL0, TL00} 35;
}
mugshot "Rampage", health
{
KILL0 1;
}
mugshot "Ouch", health
{
OUCH0 35;
}
mugshot "Grin", health
{
EVL0 70;
}
mugshot "God"
{
GOD0 -1;
}
mugshot "GodAnimated"
{
{GOD0, GOD1, GOD2} 17;
}
mugshot "Death"
{
DEAD0 -1;
}
mugshot "XDeath"
{
XDTH0 10;
XDTH1 10;
XDTH2 10;
XDTH3 10;
XDTH4 10;
XDTH5 -1;
}

View file

@ -61,6 +61,7 @@ in_htc3.txt in_htc3.txt
lockdefs.txt lockdefs.txt lockdefs.txt lockdefs.txt
teaminfo.txt teaminfo.txt teaminfo.txt teaminfo.txt
althudcf.txt althudcf.txt althudcf.txt althudcf.txt
sbarinfo.txt sbarinfo.txt
======== ========
# Support lumps # Support lumps

View file

@ -3904,11 +3904,15 @@
> >
</File> </File>
<File <File
RelativePath=".\src\g_shared\sbarinfo.cpp" RelativePath=".\src\g_shared\sbarinfo.h"
> >
</File> </File>
<File <File
RelativePath=".\src\g_shared\sbarinfo.h" RelativePath=".\src\g_shared\sbarinfo_display.cpp"
>
</File>
<File
RelativePath=".\src\g_shared\sbarinfo_parser.cpp"
> >
</File> </File>
<File <File