mirror of
https://github.com/ZDoom/raze-gles.git
synced 2025-01-11 18:50:46 +00:00
- Menu WIP
* implemented single image screens * implemented skeleton of the image scroller * added RR-specific definitions to the menus (need to copy and adjust d_menu.cpp) * added definitions for credits screens.
This commit is contained in:
parent
ef3ad690da
commit
4e5f59a373
18 changed files with 582 additions and 1033 deletions
|
@ -210,6 +210,8 @@ struct GameInterface
|
||||||
virtual void CustomMenuSelection(int menu, int item) {}
|
virtual void CustomMenuSelection(int menu, int item) {}
|
||||||
virtual void StartGame(FGameStartup& gs) {}
|
virtual void StartGame(FGameStartup& gs) {}
|
||||||
virtual FSavegameInfo GetSaveSig() { return { "", 0, 0}; }
|
virtual FSavegameInfo GetSaveSig() { return { "", 0, 0}; }
|
||||||
|
virtual bool DrawSpecialScreen(const DVector2 &origin, int tilenum) { return false; }
|
||||||
|
virtual void DrawCenteredTextScreen(const DVector2 &origin, const char *text, int position);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern GameInterface* gi;
|
extern GameInterface* gi;
|
||||||
|
|
|
@ -38,7 +38,8 @@ bool gHaveNetworking;
|
||||||
|
|
||||||
FString currentGame;
|
FString currentGame;
|
||||||
FString LumpFilter;
|
FString LumpFilter;
|
||||||
|
TMap<FName, int32_t> NameToTileIndex; // for assigning names to tiles. The menu accesses this list. By default it gets everything from the dynamic tile map in Duke Nukem and Redneck Rampage.
|
||||||
|
// Todo: Add additional definition file for the other games or textures not in that list so that the menu does not have to rely on indices.
|
||||||
|
|
||||||
CVAR(Int, cl_defaultconfiguration, 2, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
CVAR(Int, cl_defaultconfiguration, 2, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
#include "zstring.h"
|
#include "zstring.h"
|
||||||
#include "inputstate.h"
|
#include "inputstate.h"
|
||||||
#include "gamecvars.h"
|
#include "gamecvars.h"
|
||||||
|
#include "tarray.h"
|
||||||
|
#include "name.h"
|
||||||
|
|
||||||
EXTERN_CVAR(Int, cl_defaultconfiguration)
|
EXTERN_CVAR(Int, cl_defaultconfiguration)
|
||||||
|
|
||||||
|
@ -14,6 +16,8 @@ extern FString currentGame;
|
||||||
extern FString LumpFilter;
|
extern FString LumpFilter;
|
||||||
class FArgs;
|
class FArgs;
|
||||||
|
|
||||||
|
extern TMap<FName, int32_t> NameToTileIndex;
|
||||||
|
|
||||||
void D_AddWildFile(TArray<FString>& wadfiles, const char* value);
|
void D_AddWildFile(TArray<FString>& wadfiles, const char* value);
|
||||||
|
|
||||||
int CONFIG_Init();
|
int CONFIG_Init();
|
||||||
|
|
|
@ -40,6 +40,8 @@
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
#include "v_draw.h"
|
#include "v_draw.h"
|
||||||
#include "baselayer.h"
|
#include "baselayer.h"
|
||||||
|
#include "gamecontrol.h"
|
||||||
|
#include "build.h"
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
//
|
//
|
||||||
|
@ -619,3 +621,34 @@ int FListMenuItemPatch::GetWidth()
|
||||||
: 0;
|
: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
//
|
||||||
|
// Fullscreen image drawer (move to its own source file!)
|
||||||
|
//
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
void ImageScreen::Drawer()
|
||||||
|
{
|
||||||
|
if (mDesc->mType == 0)
|
||||||
|
{
|
||||||
|
auto tileindexp = NameToTileIndex.CheckKey(mDesc->mText);
|
||||||
|
int tileindex;
|
||||||
|
if (tileindexp == nullptr)
|
||||||
|
{
|
||||||
|
// If this isn't a name, try a literal tile index;
|
||||||
|
auto c = mDesc->mMenuName.GetChars();
|
||||||
|
if (*c == '#') tileindex = (int)strtoll(c+1, nullptr, 0);
|
||||||
|
// Error out if the screen cannot be found, this is always a definition error that needs to be reported.
|
||||||
|
else I_Error("Invalid menu screen '%s'", mDesc->mMenuName.GetChars());
|
||||||
|
}
|
||||||
|
else tileindex = *tileindexp;
|
||||||
|
if (!gi->DrawSpecialScreen(origin, tileindex)) // allows the front end to do custom handling for a given image.
|
||||||
|
{
|
||||||
|
rotatesprite_fs(int(origin.X * 65536) + (160<<16), int(origin.Y * 65536) + (100<<16), 65536L,0,tileindex,0,0,10+64);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gi->DrawCenteredTextScreen(origin, mDesc->mText, mDesc->type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -53,6 +53,7 @@
|
||||||
#include "build.h"
|
#include "build.h"
|
||||||
|
|
||||||
void RegisterDukeMenus();
|
void RegisterDukeMenus();
|
||||||
|
void RegisterSpecialMenus();
|
||||||
extern bool rotatesprite_2doverride;
|
extern bool rotatesprite_2doverride;
|
||||||
bool help_disabled, credits_disabled;
|
bool help_disabled, credits_disabled;
|
||||||
int g_currentMenu; // accessible by CON scripts - contains the current menu's script ID if defined or INT_MAX if none given.
|
int g_currentMenu; // accessible by CON scripts - contains the current menu's script ID if defined or INT_MAX if none given.
|
||||||
|
@ -872,6 +873,7 @@ void Menu_Close(int playerid)
|
||||||
|
|
||||||
void M_Init (void)
|
void M_Init (void)
|
||||||
{
|
{
|
||||||
|
RegisterSpecialMenus();
|
||||||
RegisterDukeMenus();
|
RegisterDukeMenus();
|
||||||
timerSetCallback(M_Ticker);
|
timerSetCallback(M_Ticker);
|
||||||
M_ParseMenuDefs();
|
M_ParseMenuDefs();
|
||||||
|
|
|
@ -141,6 +141,7 @@ enum EMenuDescriptorType
|
||||||
{
|
{
|
||||||
MDESC_ListMenu,
|
MDESC_ListMenu,
|
||||||
MDESC_OptionsMenu,
|
MDESC_OptionsMenu,
|
||||||
|
MDESC_ImageScroller,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FMenuDescriptor
|
struct FMenuDescriptor
|
||||||
|
@ -253,6 +254,19 @@ struct FOptionMenuDescriptor : public FMenuDescriptor
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct FImageScrollerDescriptor : public FMenuDescriptor
|
||||||
|
{
|
||||||
|
struct ScrollerItem
|
||||||
|
{
|
||||||
|
int type; // 0: fullscreen image; 1: centered text
|
||||||
|
int scriptID;
|
||||||
|
FString text;
|
||||||
|
};
|
||||||
|
|
||||||
|
TArray<ScrollerItem> mItems;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
typedef TMap<FName, FMenuDescriptor *> MenuDescriptorList;
|
typedef TMap<FName, FMenuDescriptor *> MenuDescriptorList;
|
||||||
|
|
||||||
|
@ -494,11 +508,11 @@ public:
|
||||||
DListMenu(DMenu *parent = NULL, FListMenuDescriptor *desc = NULL);
|
DListMenu(DMenu *parent = NULL, FListMenuDescriptor *desc = NULL);
|
||||||
virtual void Init(DMenu *parent = NULL, FListMenuDescriptor *desc = NULL);
|
virtual void Init(DMenu *parent = NULL, FListMenuDescriptor *desc = NULL);
|
||||||
FListMenuItem *GetItem(FName name);
|
FListMenuItem *GetItem(FName name);
|
||||||
bool Responder (event_t *ev);
|
bool Responder (event_t *ev) override;
|
||||||
bool MenuEvent (int mkey, bool fromcontroller);
|
bool MenuEvent (int mkey, bool fromcontroller) override;
|
||||||
bool MouseEvent(int type, int x, int y);
|
bool MouseEvent(int type, int x, int y) override;
|
||||||
void Ticker ();
|
void Ticker () override;
|
||||||
void Drawer ();
|
void Drawer () override;
|
||||||
virtual void SelectionChanged() {}
|
virtual void SelectionChanged() {}
|
||||||
void SetFocus(FListMenuItem *fc)
|
void SetFocus(FListMenuItem *fc)
|
||||||
{
|
{
|
||||||
|
@ -613,6 +627,33 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
//
|
||||||
|
// ImageScroller
|
||||||
|
//
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
class DImageScrollerMenu : public DMenu
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
//
|
||||||
|
// Show a fullscreen image / centered text screen for an image scroller
|
||||||
|
//
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
class ImageScreen : public DMenu // Todo: This should be global
|
||||||
|
{
|
||||||
|
const FImageScrollerDescriptor::ScrollerItem *mDesc;
|
||||||
|
ImageScreen(const FImageScrollerDescriptor::ScrollerItem *it)
|
||||||
|
{
|
||||||
|
mDesc = it;
|
||||||
|
}
|
||||||
|
void Drawer() override;
|
||||||
|
};
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
//
|
//
|
||||||
// Input some text
|
// Input some text
|
||||||
|
|
|
@ -142,6 +142,8 @@ struct gamefilter
|
||||||
static const gamefilter games[] = {
|
static const gamefilter games[] = {
|
||||||
{ "Duke", GAMEFLAG_DUKE},
|
{ "Duke", GAMEFLAG_DUKE},
|
||||||
{ "Nam", GAMEFLAG_NAM|GAMEFLAG_NAPALM},
|
{ "Nam", GAMEFLAG_NAM|GAMEFLAG_NAPALM},
|
||||||
|
{ "NamOnly", GAMEFLAG_NAM}, // for cases where the difference matters.
|
||||||
|
{ "Napalm", GAMEFLAG_NAPALM},
|
||||||
{ "WW2GI", GAMEFLAG_WW2GI},
|
{ "WW2GI", GAMEFLAG_WW2GI},
|
||||||
{ "Fury", GAMEFLAG_FURY},
|
{ "Fury", GAMEFLAG_FURY},
|
||||||
{ "Redneck", GAMEFLAG_RR},
|
{ "Redneck", GAMEFLAG_RR},
|
||||||
|
@ -150,6 +152,19 @@ static const gamefilter games[] = {
|
||||||
{ "ShadowWarrior", GAMEFLAG_SW},
|
{ "ShadowWarrior", GAMEFLAG_SW},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// for other parts that need to filter by game name.
|
||||||
|
bool validFilter(const char *str)
|
||||||
|
{
|
||||||
|
for (auto &gf : games)
|
||||||
|
{
|
||||||
|
if (g_gameType & gf.gameflag)
|
||||||
|
{
|
||||||
|
if (!stricmp(str, gf.gamename)) return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool CheckSkipGameBlock(FScanner &sc)
|
static bool CheckSkipGameBlock(FScanner &sc)
|
||||||
{
|
{
|
||||||
|
@ -542,6 +557,85 @@ static void ParseListMenu(FScanner &sc)
|
||||||
//
|
//
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
||||||
|
static void ParseImageScrollerBody(FScanner &sc, FImageScrollerDescriptor *desc)
|
||||||
|
{
|
||||||
|
sc.MustGetStringName("{");
|
||||||
|
while (!sc.CheckString("}"))
|
||||||
|
{
|
||||||
|
sc.MustGetString();
|
||||||
|
if (sc.Compare("else"))
|
||||||
|
{
|
||||||
|
SkipSubBlock(sc);
|
||||||
|
}
|
||||||
|
else if (sc.Compare("ifgame"))
|
||||||
|
{
|
||||||
|
if (!CheckSkipGameBlock(sc))
|
||||||
|
{
|
||||||
|
// recursively parse sub-block
|
||||||
|
ParseImageScrollerBody(sc, desc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (sc.Compare("ifoption"))
|
||||||
|
{
|
||||||
|
if (!CheckSkipOptionBlock(sc))
|
||||||
|
{
|
||||||
|
// recursively parse sub-block
|
||||||
|
ParseImageScrollerBody(sc, desc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (sc.Compare("TextItem") || sc.Compare("ImageItem"))
|
||||||
|
{
|
||||||
|
FImageScrollerDescriptor::ScrollerItem item;
|
||||||
|
sc.MustGetString();
|
||||||
|
item.text = sc.String;
|
||||||
|
int type = sc.Compare("TextItem");
|
||||||
|
if (type)
|
||||||
|
{
|
||||||
|
sc.MustGetStringName(",");
|
||||||
|
sc.MustGetNumber();
|
||||||
|
item.type = sc.Number; // y-coordinate
|
||||||
|
}
|
||||||
|
item.scriptID = INT_MAX;
|
||||||
|
if (sc.CheckString(","))
|
||||||
|
{
|
||||||
|
sc.MustGetNumber();
|
||||||
|
item.scriptID = sc.Number;
|
||||||
|
}
|
||||||
|
desc->mItems.Push(item);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sc.ScriptError("Unknown keyword '%s'", sc.String);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
|
static void ParseImageScroller(FScanner &sc)
|
||||||
|
{
|
||||||
|
sc.MustGetString();
|
||||||
|
|
||||||
|
FImageScrollerDescriptor *desc = new FImageScrollerDescriptor;
|
||||||
|
desc->mType = MDESC_ImageScroller;
|
||||||
|
desc->mMenuName = sc.String;
|
||||||
|
|
||||||
|
ParseImageScrollerBody(sc, desc);
|
||||||
|
bool scratch = ReplaceMenu(sc, desc);
|
||||||
|
if (scratch) delete desc;
|
||||||
|
}
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//=============================================================================
|
||||||
|
|
||||||
static void ParseOptionValue(FScanner &sc)
|
static void ParseOptionValue(FScanner &sc)
|
||||||
{
|
{
|
||||||
FName optname;
|
FName optname;
|
||||||
|
@ -948,6 +1042,10 @@ void M_ParseMenuDefs()
|
||||||
{
|
{
|
||||||
ParseListMenu(sc);
|
ParseListMenu(sc);
|
||||||
}
|
}
|
||||||
|
if (sc.Compare("ImageScroller"))
|
||||||
|
{
|
||||||
|
ParseImageScroller(sc);
|
||||||
|
}
|
||||||
else if (sc.Compare("DEFAULTLISTMENU"))
|
else if (sc.Compare("DEFAULTLISTMENU"))
|
||||||
{
|
{
|
||||||
ParseListMenuBody(sc, &DefaultListMenuSettings);
|
ParseListMenuBody(sc, &DefaultListMenuSettings);
|
||||||
|
|
|
@ -36,3 +36,4 @@ xx(CustomSubMenu6)
|
||||||
xx(CustomSubMenu7)
|
xx(CustomSubMenu7)
|
||||||
xx(UsermapMenu)
|
xx(UsermapMenu)
|
||||||
xx(StartGame)
|
xx(StartGame)
|
||||||
|
xx(ImageScroller)
|
||||||
|
|
|
@ -43,6 +43,7 @@
|
||||||
#include "c_cvars.h"
|
#include "c_cvars.h"
|
||||||
#include "printf.h"
|
#include "printf.h"
|
||||||
|
|
||||||
|
bool validFilter(const char *str);
|
||||||
EXTERN_CVAR(String, language)
|
EXTERN_CVAR(String, language)
|
||||||
CUSTOM_CVAR(Int, cl_gender, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
CUSTOM_CVAR(Int, cl_gender, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||||
{
|
{
|
||||||
|
@ -239,12 +240,21 @@ bool FStringTable::ParseLanguageCSV(int lumpnum, const TArray<uint8_t> &buffer)
|
||||||
for (unsigned i = 1; i < data.Size(); i++)
|
for (unsigned i = 1; i < data.Size(); i++)
|
||||||
{
|
{
|
||||||
auto &row = data[i];
|
auto &row = data[i];
|
||||||
#if 0
|
#if 1
|
||||||
if (filtercol > -1)
|
if (filtercol > -1)
|
||||||
{
|
{
|
||||||
auto filterstr = row[filtercol];
|
auto filterstr = row[filtercol];
|
||||||
auto filter = filterstr.Split(" ", FString::TOK_SKIPEMPTY);
|
auto filter = filterstr.Split(" ", FString::TOK_SKIPEMPTY);
|
||||||
if (filter.Size() > 0 && filter.FindEx([](const auto &str) { return str.CompareNoCase(GameNames[gameinfo.gametype]) == 0; }) == filter.Size())
|
bool ok = false;
|
||||||
|
for (auto &entry : filter)
|
||||||
|
{
|
||||||
|
if (validFilter(entry))
|
||||||
|
{
|
||||||
|
ok = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!ok) continue;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -37,6 +37,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
#include "menu/menu.h"
|
#include "menu/menu.h"
|
||||||
#include "gstrings.h"
|
#include "gstrings.h"
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
|
#include "namesdyn.h"
|
||||||
#include "../../glbackend/glbackend.h"
|
#include "../../glbackend/glbackend.h"
|
||||||
|
|
||||||
BEGIN_DUKE_NS
|
BEGIN_DUKE_NS
|
||||||
|
@ -279,6 +280,14 @@ void GameInterface::DrawNativeMenuText(int fontnum, int state, int xpos, int ypo
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// Implements the native looking menu used for the main menu
|
||||||
|
// and the episode/skill selection screens, i.e. the parts
|
||||||
|
// that need to look authentic
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
class DukeListMenu : public DListMenu
|
class DukeListMenu : public DListMenu
|
||||||
{
|
{
|
||||||
using Super = DListMenu;
|
using Super = DListMenu;
|
||||||
|
@ -401,149 +410,11 @@ class MainMenu : public DukeListMenu
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class DukeCreditScreen : public DMenu
|
//----------------------------------------------------------------------------
|
||||||
{
|
//
|
||||||
int screen;
|
// Menu related game interface functions
|
||||||
|
//
|
||||||
void shadowminitext(int32_t x, int32_t y, const char* t, int32_t p)
|
//----------------------------------------------------------------------------
|
||||||
{
|
|
||||||
int32_t f = 0;
|
|
||||||
|
|
||||||
if (!minitext_lowercase)
|
|
||||||
f |= TEXT_UPPERCASE;
|
|
||||||
|
|
||||||
G_ScreenTextShadow(1, 1, MINIFONT, x, y, 65536, 0, 0, t, 0, p, 2 | 8 | 16 | ROTATESPRITE_FULL16, 0, 4 << 16, 8 << 16, 1 << 16, 0, f, 0, 0, xdim - 1, ydim - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void Drawer()
|
|
||||||
{
|
|
||||||
if (VOLUMEALL && PLUTOPAK)
|
|
||||||
{
|
|
||||||
rotatesprite_fs(int(origin.X * 65536) + (MENU_MARGIN_CENTER << 16), int(origin.Y * 65536) + (100 << 16), 65536L, 0, 2504 + screen, 0, 0, 10 + 64);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Menu_DrawBackground(origin);
|
|
||||||
|
|
||||||
// On the latest version there's real graphics for this.
|
|
||||||
int32_t m, l;
|
|
||||||
switch (screen)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
m = int(origin.X * 65536) + (20 << 16);
|
|
||||||
l = int(origin.Y * 65536) + (33 << 16);
|
|
||||||
|
|
||||||
shadowminitext(m, l, "Original Concept", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Todd Replogle and Allen H. Blum III", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "Produced & Directed By", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Greg Malone", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "Executive Producer", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "George Broussard", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "BUILD Engine", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Ken Silverman", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "Game Programming", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Todd Replogle", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "3D Engine/Tools/Net", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Ken Silverman", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "Network Layer/Setup Program", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Mark Dochtermann", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "Map Design", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Allen H. Blum III", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Richard Gray", 12); l += 7 << 16;
|
|
||||||
|
|
||||||
m = int(origin.X * 65536) + (180 << 16);
|
|
||||||
l = int(origin.Y * 65536) + (33 << 16);
|
|
||||||
|
|
||||||
shadowminitext(m, l, "3D Modeling", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Chuck Jones", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Sapphire Corporation", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "Artwork", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Dirk Jones, Stephen Hornback", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "James Storey, David Demaret", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Douglas R. Wood", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "Sound Engine", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Jim Dose", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "Sound & Music Development", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Robert Prince", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Lee Jackson", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "Voice Talent", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Lani Minella - Voice Producer", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Jon St. John as \"Duke Nukem\"", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "Graphic Design", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Packaging, Manual, Ads", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Robert M. Atkins", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Michael Hadwin", 12); l += 7 << 16;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
m = int(origin.X * 65536) + (20 << 16);
|
|
||||||
l = int(origin.Y * 65536) + (33 << 16);
|
|
||||||
|
|
||||||
shadowminitext(m, l, "Special Thanks To", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Steven Blackburn, Tom Hall", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Scott Miller, Joe Siegler", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Terry Nagy, Colleen Compton", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "HASH, Inc., FormGen, Inc.", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "The 3D Realms Beta Testers", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "Nathan Anderson, Wayne Benner", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Glenn Brensinger, Rob Brown", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Erik Harris, Ken Heckbert", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Terry Herrin, Greg Hively", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Hank Leukart, Eric Baker", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Jeff Rausch, Kelly Rogers", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Mike Duncan, Doug Howell", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "Bill Blair", 12); l += 7 << 16;
|
|
||||||
|
|
||||||
m = int(origin.X * 65536) + (160 << 16);
|
|
||||||
l = int(origin.Y * 65536) + (33 << 16);
|
|
||||||
|
|
||||||
shadowminitext(m, l, "Company Product Support", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "The following companies were cool", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "enough to give us lots of stuff", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "during the making of Duke Nukem 3D.", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "Altec Lansing Multimedia", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "for tons of speakers and the", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "THX-licensed sound system.", 12); l += 7 << 16;
|
|
||||||
shadowminitext(m, l, "For info call 1-800-548-0620", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "Creative Labs, Inc.", 12); l += 7 << 16;
|
|
||||||
l += 3 << 16;
|
|
||||||
shadowminitext(m, l, "Thanks for the hardware, guys.", 12); l += 7 << 16;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
mgametextcenter(int(origin.X * 65536), int(origin.Y * 65536) + (50 << 16), "Duke Nukem 3D is a trademark of\n"
|
|
||||||
"3D Realms Entertainment"
|
|
||||||
"\n"
|
|
||||||
"Duke Nukem 3D\n"
|
|
||||||
"(C) 1996 3D Realms Entertainment");
|
|
||||||
|
|
||||||
if (VOLUMEONE)
|
|
||||||
{
|
|
||||||
mgametextcenter(int(origin.X * 65536), int(origin.Y * 65536) + (106 << 16), "Please read LICENSE.DOC for shareware\n"
|
|
||||||
"distribution grants and restrictions.");
|
|
||||||
}
|
|
||||||
mgametextcenter(int(origin.X * 65536), int(origin.Y * 65536) + ((VOLUMEONE ? 134 : 115) << 16), "Made in Dallas, Texas USA");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
void GameInterface::MenuOpened()
|
void GameInterface::MenuOpened()
|
||||||
{
|
{
|
||||||
|
@ -638,9 +509,181 @@ FSavegameInfo GameInterface::GetSaveSig()
|
||||||
return { SAVESIG_DN3D, MINSAVEVER_DN3D, SAVEVER_DN3D };
|
return { SAVESIG_DN3D, MINSAVEVER_DN3D, SAVEVER_DN3D };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
static void shadowminitext(int32_t x, int32_t y, const char* t, int32_t p)
|
||||||
|
{
|
||||||
|
int32_t f = 0;
|
||||||
|
|
||||||
|
if (!minitext_lowercase)
|
||||||
|
f |= TEXT_UPPERCASE;
|
||||||
|
|
||||||
|
G_ScreenTextShadow(1, 1, MINIFONT, x, y, 65536, 0, 0, t, 0, p, 2 | 8 | 16 | ROTATESPRITE_FULL16, 0, 4 << 16, 8 << 16, 1 << 16, 0, f, 0, 0, xdim - 1, ydim - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// allows the front end to override certain fullscreen image menus
|
||||||
|
// with custom implementations.
|
||||||
|
//
|
||||||
|
// This is needed because the credits screens in Duke Nukem
|
||||||
|
// are eithrr done by providing an image or by printing text, based on the version used.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
bool GameInterface::DrawSpecialScreen(const DVector2 &origin, int tilenum)
|
||||||
|
{
|
||||||
|
// Older versions of Duke Nukem create the credits screens manually.
|
||||||
|
// On the latest version there's real graphics for this.
|
||||||
|
bool haveCredits = VOLUMEALL && PLUTOPAK;
|
||||||
|
|
||||||
|
int32_t m, l;
|
||||||
|
if (!haveCredits)
|
||||||
|
{
|
||||||
|
if (tilenum == CREDITSTEXT1)
|
||||||
|
{
|
||||||
|
Menu_DrawBackground(origin);
|
||||||
|
m = int(origin.X * 65536) + (20 << 16);
|
||||||
|
l = int(origin.Y * 65536) + (33 << 16);
|
||||||
|
|
||||||
|
shadowminitext(m, l, "Original Concept", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Todd Replogle and Allen H. Blum III", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "Produced & Directed By", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Greg Malone", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "Executive Producer", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "George Broussard", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "BUILD Engine", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Ken Silverman", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "Game Programming", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Todd Replogle", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "3D Engine/Tools/Net", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Ken Silverman", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "Network Layer/Setup Program", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Mark Dochtermann", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "Map Design", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Allen H. Blum III", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Richard Gray", 12); l += 7 << 16;
|
||||||
|
|
||||||
|
m = int(origin.X * 65536) + (180 << 16);
|
||||||
|
l = int(origin.Y * 65536) + (33 << 16);
|
||||||
|
|
||||||
|
shadowminitext(m, l, "3D Modeling", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Chuck Jones", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Sapphire Corporation", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "Artwork", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Dirk Jones, Stephen Hornback", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "James Storey, David Demaret", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Douglas R. Wood", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "Sound Engine", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Jim Dose", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "Sound & Music Development", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Robert Prince", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Lee Jackson", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "Voice Talent", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Lani Minella - Voice Producer", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Jon St. John as \"Duke Nukem\"", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "Graphic Design", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Packaging, Manual, Ads", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Robert M. Atkins", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Michael Hadwin", 12); l += 7 << 16;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (tilenum == CREDITSTEXT2__STATIC)
|
||||||
|
{
|
||||||
|
Menu_DrawBackground(origin);
|
||||||
|
m = int(origin.X * 65536) + (20 << 16);
|
||||||
|
l = int(origin.Y * 65536) + (33 << 16);
|
||||||
|
|
||||||
|
shadowminitext(m, l, "Special Thanks To", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Steven Blackburn, Tom Hall", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Scott Miller, Joe Siegler", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Terry Nagy, Colleen Compton", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "HASH, Inc., FormGen, Inc.", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "The 3D Realms Beta Testers", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "Nathan Anderson, Wayne Benner", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Glenn Brensinger, Rob Brown", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Erik Harris, Ken Heckbert", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Terry Herrin, Greg Hively", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Hank Leukart, Eric Baker", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Jeff Rausch, Kelly Rogers", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Mike Duncan, Doug Howell", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "Bill Blair", 12); l += 7 << 16;
|
||||||
|
|
||||||
|
m = int(origin.X * 65536) + (160 << 16);
|
||||||
|
l = int(origin.Y * 65536) + (33 << 16);
|
||||||
|
|
||||||
|
shadowminitext(m, l, "Company Product Support", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "The following companies were cool", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "enough to give us lots of stuff", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "during the making of Duke Nukem 3D.", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "Altec Lansing Multimedia", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "for tons of speakers and the", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "THX-licensed sound system.", 12); l += 7 << 16;
|
||||||
|
shadowminitext(m, l, "For info call 1-800-548-0620", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "Creative Labs, Inc.", 12); l += 7 << 16;
|
||||||
|
l += 3 << 16;
|
||||||
|
shadowminitext(m, l, "Thanks for the hardware, guys.", 12); l += 7 << 16;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (tilenum == CREDITSTEXT3)
|
||||||
|
{
|
||||||
|
Menu_DrawBackground(origin);
|
||||||
|
mgametextcenter(int(origin.X * 65536), int(origin.Y * 65536) + (50 << 16), "Duke Nukem 3D is a trademark of\n"
|
||||||
|
"3D Realms Entertainment"
|
||||||
|
"\n"
|
||||||
|
"Duke Nukem 3D\n"
|
||||||
|
"(C) 1996 3D Realms Entertainment");
|
||||||
|
|
||||||
|
if (VOLUMEONE)
|
||||||
|
{
|
||||||
|
mgametextcenter(int(origin.X * 65536), int(origin.Y * 65536) + (106 << 16), "Please read LICENSE.DOC for shareware\n"
|
||||||
|
"distribution grants and restrictions.");
|
||||||
|
}
|
||||||
|
mgametextcenter(int(origin.X * 65536), int(origin.Y * 65536) + ((VOLUMEONE ? 134 : 115) << 16), "Made in Dallas, Texas USA");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GameInterface::DrawCenteredTextScreen(const DVector2 &origin, const char *text, int position)
|
||||||
|
{
|
||||||
|
Menu_DrawBackground(origin);
|
||||||
|
mgametextcenter(int(origin.X * 65536), int((origin.Y + position) * 65536), text);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
END_DUKE_NS
|
END_DUKE_NS
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// Class registration
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
static TMenuClassDescriptor<Duke::MainMenu> _mm("Duke.MainMenu");
|
static TMenuClassDescriptor<Duke::MainMenu> _mm("Duke.MainMenu");
|
||||||
static TMenuClassDescriptor<Duke::DukeListMenu> _lm("Duke.ListMenu");
|
static TMenuClassDescriptor<Duke::DukeListMenu> _lm("Duke.ListMenu");
|
||||||
static TMenuClassDescriptor<Duke::DukeNewGameCustomSubMenu> _ngcsm("Duke.NewGameCustomSubMenu");
|
static TMenuClassDescriptor<Duke::DukeNewGameCustomSubMenu> _ngcsm("Duke.NewGameCustomSubMenu");
|
||||||
|
|
|
@ -164,6 +164,8 @@ struct GameInterface : ::GameInterface
|
||||||
void CustomMenuSelection(int menu, int item) override;
|
void CustomMenuSelection(int menu, int item) override;
|
||||||
void StartGame(FGameStartup& gs) override;
|
void StartGame(FGameStartup& gs) override;
|
||||||
FSavegameInfo GetSaveSig() override;
|
FSavegameInfo GetSaveSig() override;
|
||||||
|
bool DrawSpecialScreen(const DVector2 &origin, int tilenum) override;
|
||||||
|
void DrawCenteredTextScreen(const DVector2 &origin, const char *text, int position) override;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -3560,19 +3560,7 @@ DO_DEFSTATE:
|
||||||
initprintf("%s:%d: warning: duplicate dynamicremap statement\n",g_scriptFileName,g_lineNumber);
|
initprintf("%s:%d: warning: duplicate dynamicremap statement\n",g_scriptFileName,g_lineNumber);
|
||||||
g_warningCnt++;
|
g_warningCnt++;
|
||||||
}
|
}
|
||||||
#ifdef DYNTILEREMAP_ENABLE
|
|
||||||
#ifdef DEBUGGINGAIDS
|
|
||||||
else
|
|
||||||
initprintf("Using dynamic tile remapping\n");
|
|
||||||
#endif
|
|
||||||
g_dynamicTileMapping = 1;
|
g_dynamicTileMapping = 1;
|
||||||
#else
|
|
||||||
else
|
|
||||||
{
|
|
||||||
initprintf("%s:%d: warning: dynamic tile remapping is disabled in this build\n",g_scriptFileName,g_lineNumber);
|
|
||||||
g_warningCnt++;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
case CON_DYNAMICSOUNDREMAP:
|
case CON_DYNAMICSOUNDREMAP:
|
||||||
|
|
|
@ -1926,35 +1926,6 @@ static void Menu_Pre(MenuID_t cm)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void Menu_PreDrawBackground(MenuID_t cm, const vec2_t origin)
|
|
||||||
{
|
|
||||||
switch (cm)
|
|
||||||
{
|
|
||||||
case MENU_CREDITS:
|
|
||||||
case MENU_CREDITS2:
|
|
||||||
case MENU_CREDITS3:
|
|
||||||
|
|
||||||
case MENU_LOAD:
|
|
||||||
case MENU_SAVE:
|
|
||||||
if (FURY)
|
|
||||||
break;
|
|
||||||
fallthrough__;
|
|
||||||
case MENU_CREDITS4:
|
|
||||||
case MENU_CREDITS5:
|
|
||||||
Menu_DrawBackground(origin);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MENU_STORY:
|
|
||||||
rotatesprite_fs(origin.x + (MENU_MARGIN_CENTER<<16), origin.y + (100<<16), 65536L,0,TEXTSTORY,0,0,10+64);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MENU_F1HELP:
|
|
||||||
rotatesprite_fs(origin.x + (MENU_MARGIN_CENTER<<16), origin.y + (100<<16), 65536L,0,F1HELP,0,0,10+64);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void Menu_DrawVerifyPrompt(int32_t x, int32_t y, const char * text, int numlines = 1)
|
static void Menu_DrawVerifyPrompt(int32_t x, int32_t y, const char * text, int numlines = 1)
|
||||||
{
|
{
|
||||||
mgametextcenter(x, y + (90<<16), text);
|
mgametextcenter(x, y + (90<<16), text);
|
||||||
|
|
|
@ -1,764 +0,0 @@
|
||||||
//-------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
Copyright (C) 2010 EDuke32 developers and contributors
|
|
||||||
|
|
||||||
This file is part of EDuke32.
|
|
||||||
|
|
||||||
EDuke32 is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU General Public License version 2
|
|
||||||
as published by the Free Software Foundation.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
See the GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program; if not, write to the Free Software
|
|
||||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
*/
|
|
||||||
//-------------------------------------------------------------------------
|
|
||||||
|
|
||||||
#define SECTOREFFECTOR 1
|
|
||||||
#define ACTIVATOR 2
|
|
||||||
#define TOUCHPLATE 3
|
|
||||||
#define ACTIVATORLOCKED 4
|
|
||||||
#define MUSICANDSFX 5
|
|
||||||
#define LOCATORS 6
|
|
||||||
#define CYCLER 7
|
|
||||||
#define MASTERSWITCH 8
|
|
||||||
#define RESPAWN 9
|
|
||||||
#define GPSPEED 10
|
|
||||||
#define FOF 13
|
|
||||||
#define ARROW 20
|
|
||||||
#define FIRSTGUNSPRITE 21
|
|
||||||
#define CHAINGUNSPRITE 22
|
|
||||||
#define RPGSPRITE 23
|
|
||||||
#define FREEZESPRITE 24
|
|
||||||
#define SHRINKERSPRITE 25
|
|
||||||
#define HEAVYHBOMB 26
|
|
||||||
#define TRIPBOMBSPRITE 27
|
|
||||||
#define SHOTGUNSPRITE 28
|
|
||||||
#define DEVISTATORSPRITE 29
|
|
||||||
#define HEALTHBOX 30
|
|
||||||
#define AMMOBOX 31
|
|
||||||
#define GROWSPRITEICON 32
|
|
||||||
#define INVENTORYBOX 33
|
|
||||||
#define FREEZEAMMO 37
|
|
||||||
#define AMMO 40
|
|
||||||
#define BATTERYAMMO 41
|
|
||||||
#define DEVISTATORAMMO 42
|
|
||||||
#define RPGAMMO 44
|
|
||||||
#define GROWAMMO 45
|
|
||||||
#define CRYSTALAMMO 46
|
|
||||||
#define HBOMBAMMO 47
|
|
||||||
#define AMMOLOTS 48
|
|
||||||
#define SHOTGUNAMMO 49
|
|
||||||
#define COLA 51
|
|
||||||
#define SIXPAK 52
|
|
||||||
#define FIRSTAID 53
|
|
||||||
#define SHIELD 54
|
|
||||||
#define STEROIDS 55
|
|
||||||
#define AIRTANK 56
|
|
||||||
#define JETPACK 57
|
|
||||||
#define HEATSENSOR 59
|
|
||||||
#define ACCESSCARD 60
|
|
||||||
#define BOOTS 61
|
|
||||||
#define MIRRORBROKE 70
|
|
||||||
#define CLOUDYOCEAN 78
|
|
||||||
#define CLOUDYSKIES 79
|
|
||||||
#define MOONSKY1 80
|
|
||||||
#define MOONSKY2 81
|
|
||||||
#define MOONSKY3 82
|
|
||||||
#define MOONSKY4 83
|
|
||||||
#define BIGORBIT1 84
|
|
||||||
#define BIGORBIT2 85
|
|
||||||
#define BIGORBIT3 86
|
|
||||||
#define BIGORBIT4 87
|
|
||||||
#define BIGORBIT5 88
|
|
||||||
#define LA 89
|
|
||||||
#define REDSKY1 98
|
|
||||||
#define REDSKY2 99
|
|
||||||
#define ATOMICHEALTH 100
|
|
||||||
#define TECHLIGHT2 120
|
|
||||||
#define TECHLIGHTBUST2 121
|
|
||||||
#define TECHLIGHT4 122
|
|
||||||
#define TECHLIGHTBUST4 123
|
|
||||||
#define WALLLIGHT4 124
|
|
||||||
#define WALLLIGHTBUST4 125
|
|
||||||
#define ACCESSSWITCH 130
|
|
||||||
#define SLOTDOOR 132
|
|
||||||
#define LIGHTSWITCH 134
|
|
||||||
#define SPACEDOORSWITCH 136
|
|
||||||
#define SPACELIGHTSWITCH 138
|
|
||||||
#define FRANKENSTINESWITCH 140
|
|
||||||
#define NUKEBUTTON 142
|
|
||||||
#define MULTISWITCH 146
|
|
||||||
#define DOORTILE5 150
|
|
||||||
#define DOORTILE6 151
|
|
||||||
#define DOORTILE1 152
|
|
||||||
#define DOORTILE2 153
|
|
||||||
#define DOORTILE3 154
|
|
||||||
#define DOORTILE4 155
|
|
||||||
#define DOORTILE7 156
|
|
||||||
#define DOORTILE8 157
|
|
||||||
#define DOORTILE9 158
|
|
||||||
#define DOORTILE10 159
|
|
||||||
#define DOORSHOCK 160
|
|
||||||
#define DIPSWITCH 162
|
|
||||||
#define DIPSWITCH2 164
|
|
||||||
#define TECHSWITCH 166
|
|
||||||
#define DIPSWITCH3 168
|
|
||||||
#define ACCESSSWITCH2 170
|
|
||||||
#define REFLECTWATERTILE 180
|
|
||||||
#define FLOORSLIME 200
|
|
||||||
#define BIGFORCE 230
|
|
||||||
#define EPISODE 247
|
|
||||||
#define MASKWALL9 255
|
|
||||||
#define W_LIGHT 260
|
|
||||||
#define SCREENBREAK1 263
|
|
||||||
#define SCREENBREAK2 264
|
|
||||||
#define SCREENBREAK3 265
|
|
||||||
#define SCREENBREAK4 266
|
|
||||||
#define SCREENBREAK5 267
|
|
||||||
#define SCREENBREAK6 268
|
|
||||||
#define SCREENBREAK7 269
|
|
||||||
#define SCREENBREAK8 270
|
|
||||||
#define SCREENBREAK9 271
|
|
||||||
#define SCREENBREAK10 272
|
|
||||||
#define SCREENBREAK11 273
|
|
||||||
#define SCREENBREAK12 274
|
|
||||||
#define SCREENBREAK13 275
|
|
||||||
#define MASKWALL1 285
|
|
||||||
#define W_TECHWALL1 293
|
|
||||||
#define W_TECHWALL2 297
|
|
||||||
#define W_TECHWALL15 299
|
|
||||||
#define W_TECHWALL3 301
|
|
||||||
#define W_TECHWALL4 305
|
|
||||||
#define W_TECHWALL10 306
|
|
||||||
#define W_TECHWALL16 307
|
|
||||||
#define WATERTILE2 336
|
|
||||||
#define BPANNEL1 341
|
|
||||||
#define PANNEL1 342
|
|
||||||
#define PANNEL2 343
|
|
||||||
#define WATERTILE 344
|
|
||||||
#define STATIC 351
|
|
||||||
#define W_SCREENBREAK 357
|
|
||||||
#define W_HITTECHWALL3 360
|
|
||||||
#define W_HITTECHWALL4 361
|
|
||||||
#define W_HITTECHWALL2 362
|
|
||||||
#define W_HITTECHWALL1 363
|
|
||||||
#define MASKWALL10 387
|
|
||||||
#define MASKWALL11 391
|
|
||||||
#define DOORTILE22 395
|
|
||||||
#define FANSPRITE 407
|
|
||||||
#define FANSPRITEBROKE 411
|
|
||||||
#define FANSHADOW 412
|
|
||||||
#define FANSHADOWBROKE 416
|
|
||||||
#define DOORTILE18 447
|
|
||||||
#define DOORTILE19 448
|
|
||||||
#define DOORTILE20 449
|
|
||||||
#define SPACESHUTTLE 487
|
|
||||||
#define SATELLITE 489
|
|
||||||
#define VIEWSCREEN2 499
|
|
||||||
#define VIEWSCREENBROKE 501
|
|
||||||
#define VIEWSCREEN 502
|
|
||||||
#define GLASS 503
|
|
||||||
#define GLASS2 504
|
|
||||||
#define STAINGLASS1 510
|
|
||||||
#define MASKWALL5 514
|
|
||||||
#define SATELITE 516
|
|
||||||
#define FUELPOD 517
|
|
||||||
#define SLIMEPIPE 538
|
|
||||||
#define CRACK1 546
|
|
||||||
#define CRACK2 547
|
|
||||||
#define CRACK3 548
|
|
||||||
#define CRACK4 549
|
|
||||||
#define FOOTPRINTS 550
|
|
||||||
#define DOMELITE 551
|
|
||||||
#define CAMERAPOLE 554
|
|
||||||
#define CHAIR1 556
|
|
||||||
#define CHAIR2 557
|
|
||||||
#define BROKENCHAIR 559
|
|
||||||
#define MIRROR 560
|
|
||||||
#define WATERFOUNTAIN 563
|
|
||||||
#define WATERFOUNTAINBROKE 567
|
|
||||||
#define FEMMAG1 568
|
|
||||||
#define TOILET 569
|
|
||||||
#define STALL 571
|
|
||||||
#define STALLBROKE 573
|
|
||||||
#define FEMMAG2 577
|
|
||||||
#define REACTOR2 578
|
|
||||||
#define REACTOR2BURNT 579
|
|
||||||
#define REACTOR2SPARK 580
|
|
||||||
#define GRATE1 595
|
|
||||||
#define BGRATE1 596
|
|
||||||
#define SOLARPANNEL 602
|
|
||||||
#define NAKED1 603
|
|
||||||
#define ANTENNA 607
|
|
||||||
#define MASKWALL12 609
|
|
||||||
#define TOILETBROKE 615
|
|
||||||
#define PIPE2 616
|
|
||||||
#define PIPE1B 617
|
|
||||||
#define PIPE3 618
|
|
||||||
#define PIPE1 619
|
|
||||||
#define CAMERA1 621
|
|
||||||
#define BRICK 626
|
|
||||||
#define SPLINTERWOOD 630
|
|
||||||
#define PIPE2B 633
|
|
||||||
#define BOLT1 634
|
|
||||||
#define W_NUMBERS 640
|
|
||||||
#define WATERDRIP 660
|
|
||||||
#define WATERBUBBLE 661
|
|
||||||
#define WATERBUBBLEMAKER 662
|
|
||||||
#define W_FORCEFIELD 663
|
|
||||||
#define VACUUM 669
|
|
||||||
#define FOOTPRINTS2 672
|
|
||||||
#define FOOTPRINTS3 673
|
|
||||||
#define FOOTPRINTS4 674
|
|
||||||
#define EGG 675
|
|
||||||
#define SCALE 678
|
|
||||||
#define CHAIR3 680
|
|
||||||
#define CAMERALIGHT 685
|
|
||||||
#define MOVIECAMERA 686
|
|
||||||
#define IVUNIT 689
|
|
||||||
#define POT1 694
|
|
||||||
#define POT2 695
|
|
||||||
#define POT3 697
|
|
||||||
#define PIPE3B 700
|
|
||||||
#define WALLLIGHT3 701
|
|
||||||
#define WALLLIGHTBUST3 702
|
|
||||||
#define WALLLIGHT1 703
|
|
||||||
#define WALLLIGHTBUST1 704
|
|
||||||
#define WALLLIGHT2 705
|
|
||||||
#define WALLLIGHTBUST2 706
|
|
||||||
#define LIGHTSWITCH2 712
|
|
||||||
#define WAITTOBESEATED 716
|
|
||||||
#define DOORTILE14 717
|
|
||||||
#define STATUE 753
|
|
||||||
#define MIKE 762
|
|
||||||
#define VASE 765
|
|
||||||
#define SUSHIPLATE1 768
|
|
||||||
#define SUSHIPLATE2 769
|
|
||||||
#define SUSHIPLATE3 774
|
|
||||||
#define SUSHIPLATE4 779
|
|
||||||
#define DOORTILE16 781
|
|
||||||
#define SUSHIPLATE5 792
|
|
||||||
#define OJ 806
|
|
||||||
#define MASKWALL13 830
|
|
||||||
#define HURTRAIL 859
|
|
||||||
#define POWERSWITCH1 860
|
|
||||||
#define LOCKSWITCH1 862
|
|
||||||
#define POWERSWITCH2 864
|
|
||||||
#define ATM 867
|
|
||||||
#define STATUEFLASH 869
|
|
||||||
#define ATMBROKE 888
|
|
||||||
#define BIGHOLE2 893
|
|
||||||
#define STRIPEBALL 901
|
|
||||||
#define QUEBALL 902
|
|
||||||
#define POCKET 903
|
|
||||||
#define WOODENHORSE 904
|
|
||||||
#define TREE1 908
|
|
||||||
#define TREE2 910
|
|
||||||
#define CACTUS 911
|
|
||||||
#define MASKWALL2 913
|
|
||||||
#define MASKWALL3 914
|
|
||||||
#define MASKWALL4 915
|
|
||||||
#define FIREEXT 916
|
|
||||||
#define TOILETWATER 921
|
|
||||||
#define NEON1 925
|
|
||||||
#define NEON2 926
|
|
||||||
#define CACTUSBROKE 939
|
|
||||||
#define BOUNCEMINE 940
|
|
||||||
#define BROKEFIREHYDRENT 950
|
|
||||||
#define BOX 951
|
|
||||||
#define BULLETHOLE 952
|
|
||||||
#define BOTTLE1 954
|
|
||||||
#define BOTTLE2 955
|
|
||||||
#define BOTTLE3 956
|
|
||||||
#define BOTTLE4 957
|
|
||||||
#define FEMPIC5 963
|
|
||||||
#define FEMPIC6 964
|
|
||||||
#define FEMPIC7 965
|
|
||||||
#define HYDROPLANT 969
|
|
||||||
#define OCEANSPRITE1 971
|
|
||||||
#define OCEANSPRITE2 972
|
|
||||||
#define OCEANSPRITE3 973
|
|
||||||
#define OCEANSPRITE4 974
|
|
||||||
#define OCEANSPRITE5 975
|
|
||||||
#define GENERICPOLE 977
|
|
||||||
#define CONE 978
|
|
||||||
#define HANGLIGHT 979
|
|
||||||
#define HYDRENT 981
|
|
||||||
#define MASKWALL14 988
|
|
||||||
#define TIRE 990
|
|
||||||
#define PIPE5 994
|
|
||||||
#define PIPE6 995
|
|
||||||
#define PIPE4 996
|
|
||||||
#define PIPE4B 997
|
|
||||||
#define BROKEHYDROPLANT 1003
|
|
||||||
#define PIPE5B 1005
|
|
||||||
#define NEON3 1007
|
|
||||||
#define NEON4 1008
|
|
||||||
#define NEON5 1009
|
|
||||||
#define BOTTLE5 1012
|
|
||||||
#define BOTTLE6 1013
|
|
||||||
#define BOTTLE8 1014
|
|
||||||
#define SPOTLITE 1020
|
|
||||||
#define HANGOOZ 1022
|
|
||||||
#define MASKWALL15 1024
|
|
||||||
#define BOTTLE7 1025
|
|
||||||
#define HORSEONSIDE 1026
|
|
||||||
#define GLASSPIECES 1031
|
|
||||||
#define HORSELITE 1034
|
|
||||||
#define DONUTS 1045
|
|
||||||
#define NEON6 1046
|
|
||||||
#define MASKWALL6 1059
|
|
||||||
#define CLOCK 1060
|
|
||||||
#define RUBBERCAN 1062
|
|
||||||
#define BROKENCLOCK 1067
|
|
||||||
#define PLUG 1069
|
|
||||||
#define OOZFILTER 1079
|
|
||||||
#define FLOORPLASMA 1082
|
|
||||||
#define REACTOR 1088
|
|
||||||
#define REACTORSPARK 1092
|
|
||||||
#define REACTORBURNT 1096
|
|
||||||
#define DOORTILE15 1102
|
|
||||||
#define HANDSWITCH 1111
|
|
||||||
#define CIRCLEPANNEL 1113
|
|
||||||
#define CIRCLEPANNELBROKE 1114
|
|
||||||
#define PULLSWITCH 1122
|
|
||||||
#define MASKWALL8 1124
|
|
||||||
#define BIGHOLE 1141
|
|
||||||
#define ALIENSWITCH 1142
|
|
||||||
#define DOORTILE21 1144
|
|
||||||
#define HANDPRINTSWITCH 1155
|
|
||||||
#define BOTTLE10 1157
|
|
||||||
#define BOTTLE11 1158
|
|
||||||
#define BOTTLE12 1159
|
|
||||||
#define BOTTLE13 1160
|
|
||||||
#define BOTTLE14 1161
|
|
||||||
#define BOTTLE15 1162
|
|
||||||
#define BOTTLE16 1163
|
|
||||||
#define BOTTLE17 1164
|
|
||||||
#define BOTTLE18 1165
|
|
||||||
#define BOTTLE19 1166
|
|
||||||
#define DOORTILE17 1169
|
|
||||||
#define MASKWALL7 1174
|
|
||||||
#define JAILBARBREAK 1175
|
|
||||||
#define DOORTILE11 1178
|
|
||||||
#define DOORTILE12 1179
|
|
||||||
#define VENDMACHINE 1212
|
|
||||||
#define VENDMACHINEBROKE 1214
|
|
||||||
#define COLAMACHINE 1215
|
|
||||||
#define COLAMACHINEBROKE 1217
|
|
||||||
#define CRANEPOLE 1221
|
|
||||||
#define CRANE 1222
|
|
||||||
#define BARBROKE 1225
|
|
||||||
#define BLOODPOOL 1226
|
|
||||||
#define NUKEBARREL 1227
|
|
||||||
#define NUKEBARRELDENTED 1228
|
|
||||||
#define NUKEBARRELLEAKED 1229
|
|
||||||
#define CANWITHSOMETHING 1232
|
|
||||||
#define MONEY 1233
|
|
||||||
#define BANNER 1236
|
|
||||||
#define EXPLODINGBARREL 1238
|
|
||||||
#define EXPLODINGBARREL2 1239
|
|
||||||
#define FIREBARREL 1240
|
|
||||||
#define SEENINE 1247
|
|
||||||
#define SEENINEDEAD 1248
|
|
||||||
#define STEAM 1250
|
|
||||||
#define CEILINGSTEAM 1255
|
|
||||||
#define PIPE6B 1260
|
|
||||||
#define TRANSPORTERBEAM 1261
|
|
||||||
#define RAT 1267
|
|
||||||
#define TRASH 1272
|
|
||||||
#define FEMPIC1 1280
|
|
||||||
#define FEMPIC2 1289
|
|
||||||
#define BLANKSCREEN 1293
|
|
||||||
#define PODFEM1 1294
|
|
||||||
#define FEMPIC3 1298
|
|
||||||
#define FEMPIC4 1306
|
|
||||||
#define FEM1 1312
|
|
||||||
#define FEM2 1317
|
|
||||||
#define FEM3 1321
|
|
||||||
#define FEM5 1323
|
|
||||||
#define BLOODYPOLE 1324
|
|
||||||
#define FEM4 1325
|
|
||||||
#define FEM6 1334
|
|
||||||
#define FEM6PAD 1335
|
|
||||||
#define FEM8 1336
|
|
||||||
#define HELECOPT 1346
|
|
||||||
#define FETUSJIB 1347
|
|
||||||
#define HOLODUKE 1348
|
|
||||||
#define SPACEMARINE 1353
|
|
||||||
#define INDY 1355
|
|
||||||
#define FETUS 1358
|
|
||||||
#define FETUSBROKE 1359
|
|
||||||
#define MONK 1352
|
|
||||||
#define LUKE 1354
|
|
||||||
#define COOLEXPLOSION1 1360
|
|
||||||
#define WATERSPLASH2 1380
|
|
||||||
#define FIREVASE 1390
|
|
||||||
#define SCRATCH 1393
|
|
||||||
#define FEM7 1395
|
|
||||||
#define APLAYERTOP 1400
|
|
||||||
#define APLAYER 1405
|
|
||||||
#define PLAYERONWATER 1420
|
|
||||||
#define DUKELYINGDEAD 1518
|
|
||||||
#define DUKETORSO 1520
|
|
||||||
#define DUKEGUN 1528
|
|
||||||
#define DUKELEG 1536
|
|
||||||
#define SHARK 1550
|
|
||||||
#define BLOOD 1620
|
|
||||||
#define FIRELASER 1625
|
|
||||||
#define TRANSPORTERSTAR 1630
|
|
||||||
#define SPIT 1636
|
|
||||||
#define LOOGIE 1637
|
|
||||||
#define FIST 1640
|
|
||||||
#define FREEZEBLAST 1641
|
|
||||||
#define DEVISTATORBLAST 1642
|
|
||||||
#define SHRINKSPARK 1646
|
|
||||||
#define TONGUE 1647
|
|
||||||
#define MORTER 1650
|
|
||||||
#define SHRINKEREXPLOSION 1656
|
|
||||||
#define RADIUSEXPLOSION 1670
|
|
||||||
#define FORCERIPPLE 1671
|
|
||||||
#define LIZTROOP 1680
|
|
||||||
#define LIZTROOPRUNNING 1681
|
|
||||||
#define LIZTROOPSTAYPUT 1682
|
|
||||||
#define LIZTOP 1705
|
|
||||||
#define LIZTROOPSHOOT 1715
|
|
||||||
#define LIZTROOPJETPACK 1725
|
|
||||||
#define LIZTROOPDSPRITE 1734
|
|
||||||
#define LIZTROOPONTOILET 1741
|
|
||||||
#define LIZTROOPJUSTSIT 1742
|
|
||||||
#define LIZTROOPDUCKING 1744
|
|
||||||
#define HEADJIB1 1768
|
|
||||||
#define ARMJIB1 1772
|
|
||||||
#define LEGJIB1 1776
|
|
||||||
#define CANNON 1810
|
|
||||||
#define CANNONBALL 1817
|
|
||||||
#define CANNONBALLS 1818
|
|
||||||
#define OCTABRAIN 1820
|
|
||||||
#define OCTABRAINSTAYPUT 1821
|
|
||||||
#define OCTATOP 1845
|
|
||||||
#define OCTADEADSPRITE 1855
|
|
||||||
#define INNERJAW 1860
|
|
||||||
#define DRONE 1880
|
|
||||||
#define EXPLOSION2 1890
|
|
||||||
#define COMMANDER 1920
|
|
||||||
#define COMMANDERSTAYPUT 1921
|
|
||||||
#define RECON 1960
|
|
||||||
#define TANK 1975
|
|
||||||
#define PIGCOP 2000
|
|
||||||
#define PIGCOPSTAYPUT 2001
|
|
||||||
#define PIGCOPDIVE 2045
|
|
||||||
#define PIGCOPDEADSPRITE 2060
|
|
||||||
#define PIGTOP 2061
|
|
||||||
#define LIZMAN 2120
|
|
||||||
#define LIZMANSTAYPUT 2121
|
|
||||||
#define LIZMANSPITTING 2150
|
|
||||||
#define LIZMANFEEDING 2160
|
|
||||||
#define LIZMANJUMP 2165
|
|
||||||
#define LIZMANDEADSPRITE 2185
|
|
||||||
#define FECES 2200
|
|
||||||
#define LIZMANHEAD1 2201
|
|
||||||
#define LIZMANARM1 2205
|
|
||||||
#define LIZMANLEG1 2209
|
|
||||||
#define EXPLOSION2BOT 2219
|
|
||||||
#define USERWEAPON 2235
|
|
||||||
#define HEADERBAR 2242
|
|
||||||
#define JIBS1 2245
|
|
||||||
#define JIBS2 2250
|
|
||||||
#define JIBS3 2255
|
|
||||||
#define JIBS4 2260
|
|
||||||
#define JIBS5 2265
|
|
||||||
#define BURNING 2270
|
|
||||||
#define FIRE 2271
|
|
||||||
#define JIBS6 2286
|
|
||||||
#define BLOODSPLAT1 2296
|
|
||||||
#define BLOODSPLAT3 2297
|
|
||||||
#define BLOODSPLAT2 2298
|
|
||||||
#define BLOODSPLAT4 2299
|
|
||||||
#define OOZ 2300
|
|
||||||
#define OOZ2 2309
|
|
||||||
#define WALLBLOOD1 2301
|
|
||||||
#define WALLBLOOD2 2302
|
|
||||||
#define WALLBLOOD3 2303
|
|
||||||
#define WALLBLOOD4 2304
|
|
||||||
#define WALLBLOOD5 2305
|
|
||||||
#define WALLBLOOD6 2306
|
|
||||||
#define WALLBLOOD7 2307
|
|
||||||
#define WALLBLOOD8 2308
|
|
||||||
#define BURNING2 2310
|
|
||||||
#define FIRE2 2311
|
|
||||||
#define CRACKKNUCKLES 2324
|
|
||||||
#define SMALLSMOKE 2329
|
|
||||||
#define SMALLSMOKEMAKER 2330
|
|
||||||
#define FLOORFLAME 2333
|
|
||||||
#define ROTATEGUN 2360
|
|
||||||
#define GREENSLIME 2370
|
|
||||||
#define WATERDRIPSPLASH 2380
|
|
||||||
#define SCRAP6 2390
|
|
||||||
#define SCRAP1 2400
|
|
||||||
#define SCRAP2 2404
|
|
||||||
#define SCRAP3 2408
|
|
||||||
#define SCRAP4 2412
|
|
||||||
#define SCRAP5 2416
|
|
||||||
#define ORGANTIC 2420
|
|
||||||
#define BETAVERSION 2440
|
|
||||||
#define PLAYERISHERE 2442
|
|
||||||
#define PLAYERWASHERE 2443
|
|
||||||
#define SELECTDIR 2444
|
|
||||||
#define F1HELP 2445
|
|
||||||
#define NOTCHON 2446
|
|
||||||
#define NOTCHOFF 2447
|
|
||||||
#define GROWSPARK 2448
|
|
||||||
#define DUKEICON 2452
|
|
||||||
#define BADGUYICON 2453
|
|
||||||
#define FOODICON 2454
|
|
||||||
#define GETICON 2455
|
|
||||||
#define MENUSCREEN 2456
|
|
||||||
#define MENUBAR 2457
|
|
||||||
#define KILLSICON 2458
|
|
||||||
#define FIRSTAID_ICON 2460
|
|
||||||
#define HEAT_ICON 2461
|
|
||||||
#define BOTTOMSTATUSBAR 2462
|
|
||||||
#define BOOT_ICON 2463
|
|
||||||
#define FRAGBAR 2465
|
|
||||||
#define JETPACK_ICON 2467
|
|
||||||
#define AIRTANK_ICON 2468
|
|
||||||
#define STEROIDS_ICON 2469
|
|
||||||
#define HOLODUKE_ICON 2470
|
|
||||||
#define ACCESS_ICON 2471
|
|
||||||
#define DIGITALNUM 2472
|
|
||||||
#define DUKECAR 2491
|
|
||||||
#define CAMCORNER 2482
|
|
||||||
#define CAMLIGHT 2484
|
|
||||||
#define LOGO 2485
|
|
||||||
#define TITLE 2486
|
|
||||||
#define NUKEWARNINGICON 2487
|
|
||||||
#define MOUSECURSOR 2488
|
|
||||||
#define SLIDEBAR 2489
|
|
||||||
#define DREALMS 2492
|
|
||||||
#define BETASCREEN 2493
|
|
||||||
#define WINDOWBORDER1 2494
|
|
||||||
#define TEXTBOX 2495
|
|
||||||
#define WINDOWBORDER2 2496
|
|
||||||
#define DUKENUKEM 2497
|
|
||||||
#define THREEDEE 2498
|
|
||||||
#define INGAMEDUKETHREEDEE 2499
|
|
||||||
#define TENSCREEN 2500
|
|
||||||
#define PLUTOPAKSPRITE 2501
|
|
||||||
#define DEVISTATOR 2510
|
|
||||||
#define KNEE 2521
|
|
||||||
#define CROSSHAIR 2523
|
|
||||||
#define FIRSTGUN 2524
|
|
||||||
#define FIRSTGUNRELOAD 2528
|
|
||||||
#define FALLINGCLIP 2530
|
|
||||||
#define CLIPINHAND 2531
|
|
||||||
#define HAND 2532
|
|
||||||
#define SHELL 2533
|
|
||||||
#define SHOTGUNSHELL 2535
|
|
||||||
#define CHAINGUN 2536
|
|
||||||
#define RPGGUN 2544
|
|
||||||
#define RPGMUZZLEFLASH 2545
|
|
||||||
#define FREEZE 2548
|
|
||||||
#define CATLITE 2552
|
|
||||||
#define SHRINKER 2556
|
|
||||||
#define HANDHOLDINGLASER 2563
|
|
||||||
#define TRIPBOMB 2566
|
|
||||||
#define LASERLINE 2567
|
|
||||||
#define HANDHOLDINGACCESS 2568
|
|
||||||
#define HANDREMOTE 2570
|
|
||||||
#define HANDTHROW 2573
|
|
||||||
#define TIP 2576
|
|
||||||
#define GLAIR 2578
|
|
||||||
#define SCUBAMASK 2581
|
|
||||||
#define SPACEMASK 2584
|
|
||||||
#define FORCESPHERE 2590
|
|
||||||
#define SHOTSPARK1 2595
|
|
||||||
#define RPG 2605
|
|
||||||
#define LASERSITE 2612
|
|
||||||
#define SHOTGUN 2613
|
|
||||||
#define BOSS1 2630
|
|
||||||
#define BOSS1STAYPUT 2631
|
|
||||||
#define BOSS1SHOOT 2660
|
|
||||||
#define BOSS1LOB 2670
|
|
||||||
#define BOSSTOP 2696
|
|
||||||
#define BOSS2 2710
|
|
||||||
#define BOSS3 2760
|
|
||||||
#define SPINNINGNUKEICON 2813
|
|
||||||
#define BIGFNTCURSOR 2820
|
|
||||||
#define SMALLFNTCURSOR 2821
|
|
||||||
#define STARTALPHANUM 2822
|
|
||||||
#define ENDALPHANUM 2915
|
|
||||||
#define BIGALPHANUM 2940
|
|
||||||
#define BIGPERIOD 3002
|
|
||||||
#define BIGCOMMA 3003
|
|
||||||
#define BIGX 3004
|
|
||||||
#define BIGQ 3005
|
|
||||||
#define BIGSEMI 3006
|
|
||||||
#define BIGCOLIN 3007
|
|
||||||
#define THREEBYFIVE 3010
|
|
||||||
#define BIGAPPOS 3022
|
|
||||||
#define BLANK 3026
|
|
||||||
#define MINIFONT 3072
|
|
||||||
#define BUTTON1 3164
|
|
||||||
#define GLASS3 3187
|
|
||||||
#define RESPAWNMARKERRED 3190
|
|
||||||
#define RESPAWNMARKERYELLOW 3200
|
|
||||||
#define RESPAWNMARKERGREEN 3210
|
|
||||||
#define BONUSSCREEN 3240
|
|
||||||
#define VIEWBORDER 3250
|
|
||||||
#define VICTORY1 3260
|
|
||||||
#define ORDERING 3270
|
|
||||||
#define TEXTSTORY 3280
|
|
||||||
#define LOADSCREEN 3281
|
|
||||||
#define BORNTOBEWILDSCREEN 3370
|
|
||||||
#define BLIMP 3400
|
|
||||||
#define FEM9 3450
|
|
||||||
#define FOOTPRINT 3701
|
|
||||||
#define FRAMEEFFECT1_13 3999
|
|
||||||
#define POOP 4094
|
|
||||||
#define FRAMEEFFECT1 4095
|
|
||||||
#define PANNEL3 4099
|
|
||||||
#define SCREENBREAK14 4120
|
|
||||||
#define SCREENBREAK15 4123
|
|
||||||
#define SCREENBREAK19 4125
|
|
||||||
#define SCREENBREAK16 4127
|
|
||||||
#define SCREENBREAK17 4128
|
|
||||||
#define SCREENBREAK18 4129
|
|
||||||
#define W_TECHWALL11 4130
|
|
||||||
#define W_TECHWALL12 4131
|
|
||||||
#define W_TECHWALL13 4132
|
|
||||||
#define W_TECHWALL14 4133
|
|
||||||
#define W_TECHWALL5 4134
|
|
||||||
#define W_TECHWALL6 4136
|
|
||||||
#define W_TECHWALL7 4138
|
|
||||||
#define W_TECHWALL8 4140
|
|
||||||
#define W_TECHWALL9 4142
|
|
||||||
#define BPANNEL3 4100
|
|
||||||
#define W_HITTECHWALL16 4144
|
|
||||||
#define W_HITTECHWALL10 4145
|
|
||||||
#define W_HITTECHWALL15 4147
|
|
||||||
#define W_MILKSHELF 4181
|
|
||||||
#define W_MILKSHELFBROKE 4203
|
|
||||||
#define PURPLELAVA 4240
|
|
||||||
#define LAVABUBBLE 4340
|
|
||||||
#define DUKECUTOUT 4352
|
|
||||||
#define TARGET 4359
|
|
||||||
#define GUNPOWDERBARREL 4360
|
|
||||||
#define DUCK 4361
|
|
||||||
#define HATRACK 4367
|
|
||||||
#define DESKLAMP 4370
|
|
||||||
#define COFFEEMACHINE 4372
|
|
||||||
#define CUPS 4373
|
|
||||||
#define GAVALS 4374
|
|
||||||
#define GAVALS2 4375
|
|
||||||
#define POLICELIGHTPOLE 4377
|
|
||||||
#define FLOORBASKET 4388
|
|
||||||
#define PUKE 4389
|
|
||||||
#define DOORTILE23 4391
|
|
||||||
#define TOPSECRET 4396
|
|
||||||
#define SPEAKER 4397
|
|
||||||
#define TEDDYBEAR 4400
|
|
||||||
#define ROBOTDOG 4402
|
|
||||||
#define ROBOTPIRATE 4404
|
|
||||||
#define ROBOTMOUSE 4407
|
|
||||||
#define MAIL 4410
|
|
||||||
#define MAILBAG 4413
|
|
||||||
#define HOTMEAT 4427
|
|
||||||
#define COFFEEMUG 4438
|
|
||||||
#define DONUTS2 4440
|
|
||||||
#define TRIPODCAMERA 4444
|
|
||||||
#define METER 4453
|
|
||||||
#define DESKPHONE 4454
|
|
||||||
#define GUMBALLMACHINE 4458
|
|
||||||
#define GUMBALLMACHINEBROKE 4459
|
|
||||||
#define PAPER 4460
|
|
||||||
#define MACE 4464
|
|
||||||
#define GENERICPOLE2 4465
|
|
||||||
#define XXXSTACY 4470
|
|
||||||
#define WETFLOOR 4495
|
|
||||||
#define BROOM 4496
|
|
||||||
#define MOP 4497
|
|
||||||
#define LETTER 4502
|
|
||||||
#define PIRATE1A 4510
|
|
||||||
#define PIRATE4A 4511
|
|
||||||
#define PIRATE2A 4512
|
|
||||||
#define PIRATE5A 4513
|
|
||||||
#define PIRATE3A 4514
|
|
||||||
#define PIRATE6A 4515
|
|
||||||
#define PIRATEHALF 4516
|
|
||||||
#define CHESTOFGOLD 4520
|
|
||||||
#define SIDEBOLT1 4525
|
|
||||||
#define FOODOBJECT1 4530
|
|
||||||
#define FOODOBJECT2 4531
|
|
||||||
#define FOODOBJECT3 4532
|
|
||||||
#define FOODOBJECT4 4533
|
|
||||||
#define FOODOBJECT5 4534
|
|
||||||
#define FOODOBJECT6 4535
|
|
||||||
#define FOODOBJECT7 4536
|
|
||||||
#define FOODOBJECT8 4537
|
|
||||||
#define FOODOBJECT9 4538
|
|
||||||
#define FOODOBJECT10 4539
|
|
||||||
#define FOODOBJECT11 4540
|
|
||||||
#define FOODOBJECT12 4541
|
|
||||||
#define FOODOBJECT13 4542
|
|
||||||
#define FOODOBJECT14 4543
|
|
||||||
#define FOODOBJECT15 4544
|
|
||||||
#define FOODOBJECT16 4545
|
|
||||||
#define FOODOBJECT17 4546
|
|
||||||
#define FOODOBJECT18 4547
|
|
||||||
#define FOODOBJECT19 4548
|
|
||||||
#define FOODOBJECT20 4549
|
|
||||||
#define HEADLAMP 4550
|
|
||||||
#define TAMPON 4557
|
|
||||||
#define SKINNEDCHICKEN 4554
|
|
||||||
#define FEATHEREDCHICKEN 4555
|
|
||||||
#define ROBOTDOG2 4560
|
|
||||||
#define JOLLYMEAL 4569
|
|
||||||
#define DUKEBURGER 4570
|
|
||||||
#define SHOPPINGCART 4576
|
|
||||||
#define CANWITHSOMETHING2 4580
|
|
||||||
#define CANWITHSOMETHING3 4581
|
|
||||||
#define CANWITHSOMETHING4 4582
|
|
||||||
#define SNAKEP 4590
|
|
||||||
#define DOLPHIN1 4591
|
|
||||||
#define DOLPHIN2 4592
|
|
||||||
#define NEWBEAST 4610
|
|
||||||
#define NEWBEASTSTAYPUT 4611
|
|
||||||
#define NEWBEASTJUMP 4690
|
|
||||||
#define NEWBEASTHANG 4670
|
|
||||||
#define NEWBEASTHANGDEAD 4671
|
|
||||||
#define BOSS4 4740
|
|
||||||
#define BOSS4STAYPUT 4741
|
|
||||||
#define FEM10 4864
|
|
||||||
#define TOUGHGAL 4866
|
|
||||||
#define MAN 4871
|
|
||||||
#define MAN2 4872
|
|
||||||
#define WOMAN 4874
|
|
||||||
#define PLEASEWAIT 4887
|
|
||||||
#define NATURALLIGHTNING 4890
|
|
||||||
#define WEATHERWARN 4893
|
|
||||||
#define DUKETAG 4900
|
|
||||||
#define SIGN1 4909
|
|
||||||
#define SIGN2 4912
|
|
||||||
#define JURYGUY 4943
|
|
||||||
|
|
||||||
// These tile positions are reserved!
|
|
||||||
#define RESERVEDSLOT1 6132
|
|
||||||
#define RESERVEDSLOT2 6133
|
|
||||||
#define RESERVEDSLOT3 6134
|
|
||||||
#define RESERVEDSLOT4 6135
|
|
||||||
#define RESERVEDSLOT5 6136
|
|
||||||
#define RESERVEDSLOT6 6137
|
|
||||||
#define RESERVEDSLOT7 6138
|
|
||||||
#define RESERVEDSLOT8 6139
|
|
||||||
#define RESERVEDSLOT9 6140
|
|
||||||
#define RESERVEDSLOT10 6141
|
|
||||||
#define RESERVEDSLOT11 6142
|
|
||||||
#define RESERVEDSLOT12 6143
|
|
|
@ -27,14 +27,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
#include "namesdyn.h"
|
#include "namesdyn.h"
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
#include "gamecontrol.h"
|
||||||
|
|
||||||
BEGIN_DUKE_NS
|
BEGIN_DUKE_NS
|
||||||
|
|
||||||
#ifdef DYNTILEREMAP_ENABLE
|
|
||||||
# define DVPTR(x) &x
|
# define DVPTR(x) &x
|
||||||
#else
|
|
||||||
# define DVPTR(x) NULL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int16_t DynamicTileMap[MAXTILES];
|
int16_t DynamicTileMap[MAXTILES];
|
||||||
|
|
||||||
|
@ -170,6 +167,9 @@ LUNATIC_EXTERN struct dynitem g_dynTileList[] =
|
||||||
{ "CRACKKNUCKLES", DVPTR(CRACKKNUCKLES), CRACKKNUCKLES__STATIC },
|
{ "CRACKKNUCKLES", DVPTR(CRACKKNUCKLES), CRACKKNUCKLES__STATIC },
|
||||||
{ "CRANE", DVPTR(CRANE), CRANE__STATIC },
|
{ "CRANE", DVPTR(CRANE), CRANE__STATIC },
|
||||||
{ "CRANEPOLE", DVPTR(CRANEPOLE), CRANEPOLE__STATIC },
|
{ "CRANEPOLE", DVPTR(CRANEPOLE), CRANEPOLE__STATIC },
|
||||||
|
{ "CREDITSTEXT1", DVPTR(CREDITSTEXT1), CREDITSTEXT1__STATIC },
|
||||||
|
{ "CREDITSTEXT2", DVPTR(CREDITSTEXT2), CREDITSTEXT2__STATIC },
|
||||||
|
{ "CREDITSTEXT3", DVPTR(CREDITSTEXT3), CREDITSTEXT3__STATIC },
|
||||||
{ "CROSSHAIR", DVPTR(CROSSHAIR), CROSSHAIR__STATIC },
|
{ "CROSSHAIR", DVPTR(CROSSHAIR), CROSSHAIR__STATIC },
|
||||||
{ "CRYSTALAMMO", DVPTR(CRYSTALAMMO), CRYSTALAMMO__STATIC },
|
{ "CRYSTALAMMO", DVPTR(CRYSTALAMMO), CRYSTALAMMO__STATIC },
|
||||||
{ "CYCLER", DVPTR(CYCLER), CYCLER__STATIC },
|
{ "CYCLER", DVPTR(CYCLER), CYCLER__STATIC },
|
||||||
|
@ -642,7 +642,7 @@ LUNATIC_EXTERN struct dynitem g_dynTileList[] =
|
||||||
{ "XXXSTACY", DVPTR(XXXSTACY), XXXSTACY__STATIC },
|
{ "XXXSTACY", DVPTR(XXXSTACY), XXXSTACY__STATIC },
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef DYNTILEREMAP_ENABLE
|
|
||||||
int32_t ACCESS_ICON = ACCESS_ICON__STATIC;
|
int32_t ACCESS_ICON = ACCESS_ICON__STATIC;
|
||||||
int32_t ACCESSCARD = ACCESSCARD__STATIC;
|
int32_t ACCESSCARD = ACCESSCARD__STATIC;
|
||||||
int32_t ACCESSSWITCH = ACCESSSWITCH__STATIC;
|
int32_t ACCESSSWITCH = ACCESSSWITCH__STATIC;
|
||||||
|
@ -766,6 +766,9 @@ int32_t CRACK4 = CRACK4__STATIC;
|
||||||
int32_t CRACKKNUCKLES = CRACKKNUCKLES__STATIC;
|
int32_t CRACKKNUCKLES = CRACKKNUCKLES__STATIC;
|
||||||
int32_t CRANE = CRANE__STATIC;
|
int32_t CRANE = CRANE__STATIC;
|
||||||
int32_t CRANEPOLE = CRANEPOLE__STATIC;
|
int32_t CRANEPOLE = CRANEPOLE__STATIC;
|
||||||
|
int32_t CREDITSTEXT1 = CREDITSTEXT1__STATIC;
|
||||||
|
int32_t CREDITSTEXT2 = CREDITSTEXT2__STATIC;
|
||||||
|
int32_t CREDITSTEXT3 = CREDITSTEXT3__STATIC;
|
||||||
int32_t CROSSHAIR = CROSSHAIR__STATIC;
|
int32_t CROSSHAIR = CROSSHAIR__STATIC;
|
||||||
int32_t CRYSTALAMMO = CRYSTALAMMO__STATIC;
|
int32_t CRYSTALAMMO = CRYSTALAMMO__STATIC;
|
||||||
int32_t CYCLER = CYCLER__STATIC;
|
int32_t CYCLER = CYCLER__STATIC;
|
||||||
|
@ -1237,7 +1240,6 @@ int32_t WOMAN = WOMAN__STATIC;
|
||||||
int32_t WOODENHORSE = WOODENHORSE__STATIC;
|
int32_t WOODENHORSE = WOODENHORSE__STATIC;
|
||||||
int32_t XXXSTACY = XXXSTACY__STATIC;
|
int32_t XXXSTACY = XXXSTACY__STATIC;
|
||||||
|
|
||||||
#if !defined LUNATIC
|
|
||||||
static hashtable_t h_names = {512, NULL};
|
static hashtable_t h_names = {512, NULL};
|
||||||
|
|
||||||
void G_ProcessDynamicTileMapping(const char *szLabel, int32_t lValue)
|
void G_ProcessDynamicTileMapping(const char *szLabel, int32_t lValue)
|
||||||
|
@ -1250,10 +1252,6 @@ void G_ProcessDynamicTileMapping(const char *szLabel, int32_t lValue)
|
||||||
if (i>=0)
|
if (i>=0)
|
||||||
{
|
{
|
||||||
struct dynitem *di = &g_dynTileList[i];
|
struct dynitem *di = &g_dynTileList[i];
|
||||||
#ifdef DEBUGGINGAIDS
|
|
||||||
if (g_scriptDebug && di->staticval != lValue)
|
|
||||||
OSD_Printf("REMAP %s (%d) --> %d\n", di->str, di->staticval, lValue);
|
|
||||||
#endif
|
|
||||||
*di->dynvalptr = lValue;
|
*di->dynvalptr = lValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1270,8 +1268,6 @@ void freehashnames(void)
|
||||||
{
|
{
|
||||||
hash_free(&h_names);
|
hash_free(&h_names);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// This is run after all CON define's have been processed to set up the
|
// This is run after all CON define's have been processed to set up the
|
||||||
// dynamic->static tile mapping.
|
// dynamic->static tile mapping.
|
||||||
|
@ -1280,11 +1276,10 @@ void G_InitDynamicTiles(void)
|
||||||
Bmemset(DynamicTileMap, 0, sizeof(DynamicTileMap));
|
Bmemset(DynamicTileMap, 0, sizeof(DynamicTileMap));
|
||||||
|
|
||||||
for (auto & i : g_dynTileList)
|
for (auto & i : g_dynTileList)
|
||||||
#ifdef DYNTILEREMAP_ENABLE
|
{
|
||||||
DynamicTileMap[*(i.dynvalptr)] = i.staticval;
|
DynamicTileMap[*(i.dynvalptr)] = i.staticval;
|
||||||
#else
|
NameToTileIndex.Insert(i.str, *(i.dynvalptr));
|
||||||
DynamicTileMap[i.staticval] = i.staticval;
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
g_blimpSpawnItems[0] = RPGSPRITE;
|
g_blimpSpawnItems[0] = RPGSPRITE;
|
||||||
g_blimpSpawnItems[1] = CHAINGUNSPRITE;
|
g_blimpSpawnItems[1] = CHAINGUNSPRITE;
|
||||||
|
@ -1314,10 +1309,5 @@ void G_InitDynamicTiles(void)
|
||||||
WeaponPickupSprites[9] = FREEZESPRITE;
|
WeaponPickupSprites[9] = FREEZESPRITE;
|
||||||
WeaponPickupSprites[10] = HEAVYHBOMB;
|
WeaponPickupSprites[10] = HEAVYHBOMB;
|
||||||
WeaponPickupSprites[11] = SHRINKERSPRITE;
|
WeaponPickupSprites[11] = SHRINKERSPRITE;
|
||||||
|
|
||||||
// ouch... the big background image takes up a fuckload of memory and takes a second to load!
|
|
||||||
#ifdef EDUKE32_GLES
|
|
||||||
MENUSCREEN = LOADSCREEN = BETASCREEN;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
END_DUKE_NS
|
END_DUKE_NS
|
||||||
|
|
|
@ -26,9 +26,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
BEGIN_DUKE_NS
|
BEGIN_DUKE_NS
|
||||||
|
|
||||||
|
|
||||||
#define DYNTILEREMAP_ENABLE
|
|
||||||
|
|
||||||
|
|
||||||
#define SECTOREFFECTOR__STATIC 1
|
#define SECTOREFFECTOR__STATIC 1
|
||||||
#define ACTIVATOR__STATIC 2
|
#define ACTIVATOR__STATIC 2
|
||||||
#define TOUCHPLATE__STATIC 3
|
#define TOUCHPLATE__STATIC 3
|
||||||
|
@ -505,6 +502,9 @@ BEGIN_DUKE_NS
|
||||||
#define INGAMEDUKETHREEDEE__STATIC 2499
|
#define INGAMEDUKETHREEDEE__STATIC 2499
|
||||||
#define TENSCREEN__STATIC 2500
|
#define TENSCREEN__STATIC 2500
|
||||||
#define PLUTOPAKSPRITE__STATIC 2501
|
#define PLUTOPAKSPRITE__STATIC 2501
|
||||||
|
#define CREDITSTEXT1__STATIC 2504
|
||||||
|
#define CREDITSTEXT2__STATIC 2505
|
||||||
|
#define CREDITSTEXT3__STATIC 2506
|
||||||
#define DEVISTATOR__STATIC 2510
|
#define DEVISTATOR__STATIC 2510
|
||||||
#define KNEE__STATIC 2521
|
#define KNEE__STATIC 2521
|
||||||
#define CROSSHAIR__STATIC 2523
|
#define CROSSHAIR__STATIC 2523
|
||||||
|
@ -627,8 +627,6 @@ extern int16_t DynamicTileMap[MAXTILES];
|
||||||
|
|
||||||
void G_InitDynamicTiles(void);
|
void G_InitDynamicTiles(void);
|
||||||
|
|
||||||
#ifdef DYNTILEREMAP_ENABLE
|
|
||||||
|
|
||||||
void G_ProcessDynamicTileMapping(const char *szLabel, int32_t lValue);
|
void G_ProcessDynamicTileMapping(const char *szLabel, int32_t lValue);
|
||||||
|
|
||||||
#if !defined LUNATIC
|
#if !defined LUNATIC
|
||||||
|
@ -759,6 +757,9 @@ extern int32_t CRACK4;
|
||||||
extern int32_t CRACKKNUCKLES;
|
extern int32_t CRACKKNUCKLES;
|
||||||
extern int32_t CRANE;
|
extern int32_t CRANE;
|
||||||
extern int32_t CRANEPOLE;
|
extern int32_t CRANEPOLE;
|
||||||
|
extern int32_t CREDITSTEXT1;
|
||||||
|
extern int32_t CREDITSTEXT2;
|
||||||
|
extern int32_t CREDITSTEXT3;
|
||||||
extern int32_t CROSSHAIR;
|
extern int32_t CROSSHAIR;
|
||||||
extern int32_t CRYSTALAMMO;
|
extern int32_t CRYSTALAMMO;
|
||||||
extern int32_t CYCLER;
|
extern int32_t CYCLER;
|
||||||
|
@ -1232,22 +1233,6 @@ extern int32_t XXXSTACY;
|
||||||
|
|
||||||
#define DYNAMICTILEMAP(Tilenum) (DynamicTileMap[Tilenum])
|
#define DYNAMICTILEMAP(Tilenum) (DynamicTileMap[Tilenum])
|
||||||
|
|
||||||
#else /* if !defined DYNTILEREMAP_ENABLE */
|
|
||||||
|
|
||||||
#define G_ProcessDynamicTileMapping(x, y) ((void)(0))
|
|
||||||
|
|
||||||
#define inithashnames() ((void)0)
|
|
||||||
#define freehashnames() ((void)0)
|
|
||||||
|
|
||||||
#include "names.h"
|
|
||||||
#undef SPACESHUTTLE
|
|
||||||
#undef CANNON
|
|
||||||
#undef CANNONBALLS
|
|
||||||
|
|
||||||
#define DYNAMICTILEMAP(Tilenum) (Tilenum)
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
END_DUKE_NS
|
END_DUKE_NS
|
||||||
|
|
||||||
#endif // namesdyn_h__
|
#endif // namesdyn_h__
|
||||||
|
|
|
@ -26,6 +26,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
#include "namesdyn.h"
|
#include "namesdyn.h"
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
#include "gamecontrol.h"
|
||||||
|
|
||||||
BEGIN_RR_NS
|
BEGIN_RR_NS
|
||||||
|
|
||||||
|
@ -2965,6 +2966,7 @@ void G_InitDynamicTiles(void)
|
||||||
*(g_dynTileList[i].dynvalptr) = -g_dynTileList[i].staticval_rr;
|
*(g_dynTileList[i].dynvalptr) = -g_dynTileList[i].staticval_rr;
|
||||||
if (RRRA && *(g_dynTileList[i].dynvalptr) == -UFO1__STATICRR) *(g_dynTileList[i].dynvalptr) = -UFO1__STATICRRRA;
|
if (RRRA && *(g_dynTileList[i].dynvalptr) == -UFO1__STATICRR) *(g_dynTileList[i].dynvalptr) = -UFO1__STATICRRRA;
|
||||||
DynamicTileMap[*(g_dynTileList[i].dynvalptr)] = g_dynTileList[i].staticval_rr;
|
DynamicTileMap[*(g_dynTileList[i].dynvalptr)] = g_dynTileList[i].staticval_rr;
|
||||||
|
NameToTileIndex.Insert(g_dynTileList[i].str, *(g_dynTileList[i].dynvalptr));
|
||||||
}
|
}
|
||||||
for (i = 0; g_dynWeaponList[i].staticval >= 0; i++)
|
for (i = 0; g_dynWeaponList[i].staticval >= 0; i++)
|
||||||
*(g_dynWeaponList[i].dynvalptr) = g_dynWeaponList[i].staticval_rr;
|
*(g_dynWeaponList[i].dynvalptr) = g_dynWeaponList[i].staticval_rr;
|
||||||
|
@ -2974,7 +2976,10 @@ void G_InitDynamicTiles(void)
|
||||||
|
|
||||||
for (i=0; g_dynTileList[i].staticval >= 0; i++)
|
for (i=0; g_dynTileList[i].staticval >= 0; i++)
|
||||||
if (g_dynTileList[i].staticval > 0)
|
if (g_dynTileList[i].staticval > 0)
|
||||||
|
{
|
||||||
DynamicTileMap[*(g_dynTileList[i].dynvalptr)] = g_dynTileList[i].staticval;
|
DynamicTileMap[*(g_dynTileList[i].dynvalptr)] = g_dynTileList[i].staticval;
|
||||||
|
NameToTileIndex.Insert(g_dynTileList[i].str, *(g_dynTileList[i].dynvalptr));
|
||||||
|
}
|
||||||
|
|
||||||
for (i=0; g_dynWeaponList[i].staticval >= 0; i++)
|
for (i=0; g_dynWeaponList[i].staticval >= 0; i++)
|
||||||
DynamicWeaponMap[*(g_dynWeaponList[i].dynvalptr)] = g_dynWeaponList[i].staticval;
|
DynamicWeaponMap[*(g_dynWeaponList[i].dynvalptr)] = g_dynWeaponList[i].staticval;
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
//-------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------
|
||||||
//
|
//
|
||||||
//
|
// Main Memu
|
||||||
//
|
//
|
||||||
//-------------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
LISTMENU "MainMenu"
|
LISTMENU "MainMenu"
|
||||||
{
|
{
|
||||||
ScriptId 0
|
ScriptId 0
|
||||||
ifgame(Duke, Nam, WW2GI, Fury)
|
ifgame(Duke, Nam, WW2GI, Fury, Redneck, RedneckRides)
|
||||||
{
|
{
|
||||||
ifgame(fury)
|
ifgame(fury)
|
||||||
{
|
{
|
||||||
|
@ -20,7 +20,14 @@ LISTMENU "MainMenu"
|
||||||
centermenu
|
centermenu
|
||||||
animatedtransition
|
animatedtransition
|
||||||
}
|
}
|
||||||
class "Duke.MainMenu"
|
ifgame(Duke, Nam, WW2GI, Fury)
|
||||||
|
{
|
||||||
|
class "Duke.ListMenu"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
class "Redneck.ListMenu"
|
||||||
|
}
|
||||||
NativeTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
|
NativeTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
|
||||||
//NativeTextItem "$MNU_NEWGAME", "m", "MultiMenu" // In EDuke this replaces "New Game" when in networking mode. Kept here as a reminder (I'm not going to support EDuke's C/S implementation)
|
//NativeTextItem "$MNU_NEWGAME", "m", "MultiMenu" // In EDuke this replaces "New Game" when in networking mode. Kept here as a reminder (I'm not going to support EDuke's C/S implementation)
|
||||||
ifgame(fury)
|
ifgame(fury)
|
||||||
|
@ -36,16 +43,6 @@ LISTMENU "MainMenu"
|
||||||
NativeTextItem "$MNU_CREDITS", "c", "CreditsMenu"
|
NativeTextItem "$MNU_CREDITS", "c", "CreditsMenu"
|
||||||
NativeTextItem "$MNU_QUITGAME", "q", "QuitMenu"
|
NativeTextItem "$MNU_QUITGAME", "q", "QuitMenu"
|
||||||
}
|
}
|
||||||
ifgame(Redneck, RedneckRides)
|
|
||||||
{
|
|
||||||
NativeTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
|
|
||||||
//NativeTextItem "$MNU_NEWGAME", "m", "MultiMenu" // In EDuke this replaces "New Game" when in networking mode. Kept here as a reminder (I'm not going to support EDuke's C/S implementation)
|
|
||||||
NativeTextItem "$MNU_LOADGAME", "l", "LoadGameMenu"
|
|
||||||
NativeTextItem "$MNU_OPTIONS", "o", "OptionsMenu"
|
|
||||||
NativeTextItem "$MNU_HELP", "h", "HelpMenu"
|
|
||||||
NativeTextItem "$MNU_CREDITS", "c", "CreditsMenu"
|
|
||||||
NativeTextItem "$MNU_QUITGAME", "q", "QuitMenu"
|
|
||||||
}
|
|
||||||
ifgame(Blood)
|
ifgame(Blood)
|
||||||
{
|
{
|
||||||
NativeTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
|
NativeTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
|
||||||
|
@ -67,6 +64,11 @@ LISTMENU "MainMenu"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// Ingame Memu (same as above with a few more options)
|
||||||
|
//
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
LISTMENU "IngameMenu"
|
LISTMENU "IngameMenu"
|
||||||
{
|
{
|
||||||
|
@ -84,19 +86,14 @@ LISTMENU "IngameMenu"
|
||||||
centermenu
|
centermenu
|
||||||
animatedtransition
|
animatedtransition
|
||||||
}
|
}
|
||||||
linespacing 15
|
ifgame(Duke, Nam, WW2GI, Fury)
|
||||||
class "Duke.MainMenu"
|
|
||||||
NativeTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
|
|
||||||
NativeTextItem "$MNU_SAVEGAME", "s", "SaveGameMenu"
|
|
||||||
NativeTextItem "$MNU_LOADGAME", "l", "LoadGameMenu"
|
|
||||||
NativeTextItem "$MNU_OPTIONS", "o", "OptionsMenu"
|
|
||||||
NativeTextItem "$MNU_HELP", "h", "HelpMenu"
|
|
||||||
NativeTextItem "$MNU_ENDGAME", "e", "QuitToMenu"
|
|
||||||
NativeTextItem "$MNU_QUITGAME", "q", "QuitMenu"
|
|
||||||
}
|
|
||||||
ifgame(Redneck, RedneckRides)
|
|
||||||
{
|
{
|
||||||
linespacing 15
|
class "Duke.ListMenu"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
class "Redneck.ListMenu"
|
||||||
|
}
|
||||||
NativeTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
|
NativeTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
|
||||||
NativeTextItem "$MNU_SAVEGAME", "s", "SaveGameMenu"
|
NativeTextItem "$MNU_SAVEGAME", "s", "SaveGameMenu"
|
||||||
NativeTextItem "$MNU_LOADGAME", "l", "LoadGameMenu"
|
NativeTextItem "$MNU_LOADGAME", "l", "LoadGameMenu"
|
||||||
|
@ -128,24 +125,36 @@ LISTMENU "IngameMenu"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// Episode and skill menu are filled in programmatically
|
||||||
|
//
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
LISTMENU "EpisodeMenu"
|
LISTMENU "EpisodeMenu"
|
||||||
{
|
{
|
||||||
ifgame(Duke, Nam, WW2GI, Fury) // Ion Fury does not use this menu.
|
ifgame(Duke, Nam, WW2GI, Fury, Redneck, RedneckRides) // Ion Fury does not use this menu.
|
||||||
{
|
{
|
||||||
caption "$MNU_SELECTEPISODE"
|
caption "$MNU_SELECTEPISODE"
|
||||||
position 160, 48, 142
|
position 160, 48, 142
|
||||||
centermenu
|
centermenu
|
||||||
fixedspacing 5
|
fixedspacing 5
|
||||||
animatedtransition
|
animatedtransition
|
||||||
|
ifgame(Duke, Nam, WW2GI, Fury)
|
||||||
|
{
|
||||||
class "Duke.ListMenu"
|
class "Duke.ListMenu"
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
class "Redneck.ListMenu"
|
||||||
|
}
|
||||||
|
}
|
||||||
ScriptId 100
|
ScriptId 100
|
||||||
}
|
}
|
||||||
|
|
||||||
LISTMENU "SkillMenu"
|
LISTMENU "SkillMenu"
|
||||||
{
|
{
|
||||||
ifgame(Duke, Nam, WW2GI, Fury) // Ion Fury does not use this menu.
|
ifgame(Duke, Nam, WW2GI, Fury, Redneck, RedneckRides)
|
||||||
{
|
{
|
||||||
ifgame(fury)
|
ifgame(fury)
|
||||||
{
|
{
|
||||||
|
@ -160,13 +169,25 @@ LISTMENU "SkillMenu"
|
||||||
}
|
}
|
||||||
caption "$MNU_SELECTSKILL"
|
caption "$MNU_SELECTSKILL"
|
||||||
fixedspacing 5
|
fixedspacing 5
|
||||||
|
ifgame(Duke, Nam, WW2GI, Fury)
|
||||||
|
{
|
||||||
class "Duke.ListMenu"
|
class "Duke.ListMenu"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
class "Redneck.ListMenu"
|
||||||
|
}
|
||||||
animatedtransition
|
animatedtransition
|
||||||
}
|
}
|
||||||
ScriptId 110
|
ScriptId 110
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
//
|
||||||
// The custom menus are only supported by the EDuke32 frontend.
|
// The custom menus are only supported by the EDuke32 frontend.
|
||||||
|
//
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
LISTMENU "CustomGameMenu"
|
LISTMENU "CustomGameMenu"
|
||||||
{
|
{
|
||||||
caption "$MNU_NEWGAME"
|
caption "$MNU_NEWGAME"
|
||||||
|
@ -305,14 +326,27 @@ LISTMENU "CustomSubMenu7"
|
||||||
class "Duke.ListMenu"
|
class "Duke.ListMenu"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// No multiplayer support for now, but kept as a reminder.
|
||||||
|
//
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
LISTMENU "MultiMenu"
|
LISTMENU "MultiMenu"
|
||||||
{
|
{
|
||||||
ifgame(Duke, Nam, WW2GI, Fury) // Ion Fury does not use this menu.
|
ifgame(Duke, Nam, WW2GI, Fury)
|
||||||
{
|
{
|
||||||
position 160, 55, 135
|
position 160, 55, 135
|
||||||
centermenu
|
centermenu
|
||||||
fixedspacing 5
|
fixedspacing 5
|
||||||
|
ifgame(Duke, Nam, WW2GI, Fury)
|
||||||
|
{
|
||||||
class "Duke.ListMenu"
|
class "Duke.ListMenu"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
class "Redneck.ListMenu"
|
||||||
|
}
|
||||||
animatedtransition
|
animatedtransition
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -321,3 +355,106 @@ LISTMENU "MultiMenu"
|
||||||
NativeTextItem "$MNU_JOINGAME", "j", "JoinGameMenu"
|
NativeTextItem "$MNU_JOINGAME", "j", "JoinGameMenu"
|
||||||
NativeTextItem "$MNU_HOSTGAME", "h", "HostGameMenu"
|
NativeTextItem "$MNU_HOSTGAME", "h", "HostGameMenu"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
ImageScroller "HelpMenu"
|
||||||
|
{
|
||||||
|
ifgame(Duke, Nam, WW2GI, Fury)
|
||||||
|
{
|
||||||
|
ImageItem "TEXTSTORY", 400
|
||||||
|
ImageItem "F1HELP", 401
|
||||||
|
}
|
||||||
|
ifgame(Redneck, RedneckRides)
|
||||||
|
{
|
||||||
|
ImageItem "TEXTSTORY"
|
||||||
|
ImageItem "F1HELP"
|
||||||
|
ImageItem "RRTILE1636"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
//
|
||||||
|
// Credits menu. This is logically highly game specific.
|
||||||
|
// Note that this has been split into two submenus so that the engine
|
||||||
|
// credits can be handled in a generic fashion instead of having to define
|
||||||
|
// them for each game natively.
|
||||||
|
//
|
||||||
|
// Engine credits are now in the options menu, i.e. the generic part of the menu.
|
||||||
|
//
|
||||||
|
//-------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
ImageScroller "CreditsMenu"
|
||||||
|
{
|
||||||
|
ifgame(Duke, Nam, WW2GI, Fury)
|
||||||
|
{
|
||||||
|
ImageItem "CREDITSTEXT1", 990
|
||||||
|
ImageItem "CREDITSTEXT2", 991
|
||||||
|
ImageItem "CREDITSTEXT3", 992
|
||||||
|
}
|
||||||
|
ifgame(Redneck)
|
||||||
|
{
|
||||||
|
// no point putting this into the string table.
|
||||||
|
TextItem "ORIGINAL CONCEPT, DESIGN AND DIRECTION\n\nDREW MARKHAM", 80
|
||||||
|
TextItem "PRODUCED BY\n\nGREG GOODRICH", 80
|
||||||
|
TextItem "GAME PROGRAMMING\n\nRAFAEL PAIZ", 80
|
||||||
|
TextItem "ART DIRECTORS\n\nCLAIRE PRADERIE MAXX KAUFMAN ", 80
|
||||||
|
TextItem "LEAD LEVEL DESIGNER\nALEX MAYBERRY\n\nLEVEL DESIGN\nMAL BLACKWELL\nSVERRE KVERNMO", 80
|
||||||
|
TextItem "SENIOR ANIMATOR AND ARTIST\n\nJASON HOOVER", 80
|
||||||
|
TextItem "TECHNICAL DIRECTOR\n\nBARRY DEMPSEY", 80
|
||||||
|
TextItem "MOTION CAPTURE SPECIALIST AND\nCHARACTER ANIMATION\nAMIT DORON\n\nA.I. PROGRAMMING\nARTHUR DONAVAN\n\nADDITIONAL ANIMATION\nGEORGE KARL", 60
|
||||||
|
TextItem "CHARACTER DESIGN\nCORKY LEHMKUHL\n\nMAP PAINTERS\n"VIKTOR ANTONOV\nMATTHIAS BEEGUER\nSTEPHAN BURLE\n\nSCULPTORS\nGEORGE ENGEL\nJAKE GARBER\nJEFF HIMMEL", 50
|
||||||
|
TextItem "CHARACTER VOICES\n\nLEONARD\nBURTON GILLIAM\n\nBUBBA, BILLY RAY, SKINNY OL' COOT\nAND THE TURD MINION\nDREW MARKHAM\n\nSHERIFF LESTER T. HOBBES\nMOJO NIXON\n\nALIEN VIXEN\nPEGGY JO JACOBS", 40
|
||||||
|
TextItem "SOUND DESIGN\nGARY BRADFIELD\n\nMUSIC\nMOJO NIXON\nTHE BEAT FARMERS\nTHE REVEREND HORTON HEAT\nCEMENT POND\n\nADDITIONAL SOUND EFFECTS\nJIM SPURGIN", 50
|
||||||
|
TextItem "MOTION CAPTURE ACTOR\nJ.P. MANOUX\n\nMOTION CAPTURE VIXEN\nSHAWN WOLFE", 80
|
||||||
|
TextItem "PRODUCTION ASSISTANCE\nMINERVA MAYBERRY\n\nNUTS AND BOLTS\nSTEVE GOLDBERG\nMARCUS HUTCHINSON\n\nBEAN COUNTING\nMAX YOSHIKAWA\n\nADMINISTRATIVE ASSISTANCE\nSERAFIN LEWIS", 50
|
||||||
|
TextItem "LOCATION MANAGER, LOUISIANA\nRICK SKINNER\n\nLOCATION SCOUT, LOUISIANA\nBRIAN BENOS\n\nPHOTOGRAPHER\nCARLOS SERRAO", 70
|
||||||
|
TextItem "ADDITIONAL 3D MODELING BY\n3 NAME 3D\nVIEWPOINT DATALABS INTERNATIONAL\n\nAUDIO RECORDED AT\nPACIFIC OCEAN POST, SANTA MONICA, C.A.\n\nCEMENT POND TRACKS RECORDED AT\nDREAMSTATE RECORDING, BURBANK, C.A.\n\nRECORDING ENGINEER\nDAVE AHLERT", 50
|
||||||
|
TextItem "3D BUILD ENGINE LICENSED FROM\n3D REALMS ENTERTAINMENT\n\nBUILD ENGINE AND RELATED TOOLS\nCREATED BY KEN SILVERMAN", 80
|
||||||
|
TextItem "FOR INTERPLAY\n\nLEAD TESTER\nDARRELL JONES\n\nTESTERS\nTIM ANDERSON\nERICK LUJAN\nTIEN TRAN", 60
|
||||||
|
TextItem "IS TECHS\nBILL DELK\nAARON MEYERS\n\nCOMPATIBILITY TECHS\nMARC DURAN\nDAN FORSYTH\nDEREK GIBBS\nAARON OLAIZ\nJACK PARKER", 60
|
||||||
|
TextItem "DIRECTOR OF COMPATIBILITY\nPHUONG NGUYEN\n\nASSISTANT QA DIRECTOR\nCOLIN TOTMAN\n\nQA DIRECTOR\nCHAD ALLISON", 70
|
||||||
|
TextItem "INTERPLAY PRODUCER\nBILL DUGAN\n\nINTERPLAY LINE PRODUCER\nCHRIS BENSON\n\nPRODUCT MANAGER\nJIM VEEVAERT\n\nPUBLIC RELATIONS\nERIKA PRICE", 50
|
||||||
|
TextItem "SPECIAL THANKS\n\nJIM GAUER\nPAUL VAIS\nSCOTT MILLER\nTODD REPLOGLE\nCHUCK BUECHE\nCARTER LIPSCOMB\nJOHN CONLEY\nDON MAGGI", 60
|
||||||
|
TextItem "EXTRA SPECIAL THANKS\n\nBRIAN FARGO", 80
|
||||||
|
TextItem "REDNECK RAMPAGE\n(c) 1997 XATRIX ENTERTAINMENT, INC.\n\nREDNECK RAMPAGE IS A TRADEMARK OF\nINTERPLAY PRODUCTIONS", 60
|
||||||
|
}
|
||||||
|
ifgame(RedneckRides)
|
||||||
|
{
|
||||||
|
TextItem "ORIGINAL CONCEPT, DESIGN AND DIRECTION\n\nDREW MARKHAM", 80
|
||||||
|
TextItem "ART DIRECTION AND ADDITIONAL DESIGN\n\nCORKY LEHMKUHL", 80
|
||||||
|
TextItem "PRODUCED BY\n\nGREG GOODRICH", 80
|
||||||
|
TextItem "GAME PROGRAMMING\n\nJOSEPH AURILI", 80
|
||||||
|
TextItem "ORIGINAL GAME PROGRAMMING\n\nRAFAEL PAIZ", 80
|
||||||
|
TextItem "LEVEL DESIGN\n\nRHETT BALDWIN & AARON BARBER", 80
|
||||||
|
TextItem "ORIGINAL ART DIRECTION AND SUPPORT\n\nMAXX KAUFMAN & CLAIRE PRADERIE-MARKHAM", 80
|
||||||
|
TextItem "COMPUTER GRAPHICS SUPERVISOR &\nCHARACTER ANIMATION DIRECTION\n\nBARRY DEMPSEY", 80
|
||||||
|
TextItem "SENIOR ANIMATOR & MODELER\n\nJASON HOOVER", 80
|
||||||
|
TextItem "CHARACTER ANIMATION &\nMOTION CAPTURE SPECIALIST\n\nAMIT DORON", 80
|
||||||
|
TextItem "SOUND DESIGN &\nMUSIC PRODUCTION COORDINATION\n\nGARY BRADFIELD", 80
|
||||||
|
TextItem "INTRODUCTION ANIMATION\n\nDOMINIQUE DROZDZ", 80
|
||||||
|
TextItem "ARTIST\n\nMATTHIAS BEEGUER", 80
|
||||||
|
TextItem "ADDITIONAL ART\n\nVIKTOR ANTONOV", 80
|
||||||
|
TextItem "PRODUCTION COORDINATOR\n\nVICTORIA SYLVESTER", 80
|
||||||
|
TextItem "CHARACTER VOICES\n\nLEONARD\nBURTON GILLIAM\n\nDAISY MAE\nTARA CHARENDOFF\n\nBUBBA, BILLY RAY, SKINNY OL' COOT,\nFRANK THE BIKER, THE TURD MINION\n& ALL OTHER VARIOUS RAMBLINGS...\nDREW MARKHAM", 40
|
||||||
|
TextItem "SPECIAL APPEARENCE BY\n\nSHERIFF LESTER T. HOBBES\nMOJO NIXON\n\nALIEN VIXEN\nPEGGY JO JACOBS", 70
|
||||||
|
TextItem "REDNECK RAMPAGE TITLE TRACK & CYBERSEX\nWRITTEN & PERFORMED BY\nMOJO NIXON\n\n(c) MUFFIN'STUFFIN' MUSIC (BMI)\nADMINISTERED BY BUG.", 70
|
||||||
|
TextItem "MUSIC\n\nDISGRACELAND\nTINY D & THE SOFA KINGS\n\nBANJO AND GUITAR PICKIN\nJOHN SCHLOCKER\nHOWARD YEARWOOD", 60
|
||||||
|
TextItem "RECORDING ENGINEER\nDAVE AHLERT\n\nRECORDING ASSISTANCE\nJEFF GILBERT", 80
|
||||||
|
TextItem "MOTION CAPTURE ACTOR\nJ.P. MANOUX\n\nMOTION CAPTURE ACTRESS\nSHAWN WOLFE", 80
|
||||||
|
TextItem "THIS GAME COULD NOT HAVE BEEN MADE WITHOUT\nALEX MAYBERRY\nMAL BLACKWELL\n\nNUTS AND BOLTS\nSTEVE GOLDBERG\n\nBEAN COUNTING\nMAX YOSHIKAWA\n\nADMINISTRATIVE ASSISTANCE\nMINERVA MAYBERRY", 50
|
||||||
|
TextItem "FOR INTERPLAY\n\nPRODUCER\nBILL DUGAN\n\nLINE PRODUCER\nCHRIS BENSON\n\nLEAD TESTER\nDARRELL JONES", 60
|
||||||
|
TextItem "TESTERS\n\nTIM ANDERSON\nPRIMO PULANCO\nMARK MCCARTY\nBRIAN AXLINE", 70
|
||||||
|
TextItem "PRODUCTION BABY\n\nPAULINE MARIE MARKHAM", 80
|
||||||
|
TextItem "ORIGINAL PRODUCTION BABY\n\nALYSON KAUFMAN", 80
|
||||||
|
TextItem "3D BUILD ENGINE LICENSED FROM\n3D REALMS ENTERTAINMENT\n\nBUILD ENGINE AND RELATED TOOLS\nCREATED BY KEN SILVERMAN", 80
|
||||||
|
TextItem "SPECIAL THANKS\n\nSCOTT MILLER\nGEORGE BROUSSARD", 80
|
||||||
|
TextItem "EXTRA SPECIAL THANKS\n\nBRIAN FARGO", 80
|
||||||
|
TextItem "REDNECK RAMPAGE RIDES AGAIN\n(c) 1998 XATRIX ENTERTAINMENT, INC.\n\nREDNECK RAMPAGE RIDES AGAIN\nIS A TRADEMARK OF\nINTERPLAY PRODUCTIONS", 70
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue