mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-15 00:42:08 +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 StartGame(FGameStartup& gs) {}
|
||||
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;
|
||||
|
|
|
@ -38,7 +38,8 @@ bool gHaveNetworking;
|
|||
|
||||
FString currentGame;
|
||||
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)
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
#include "zstring.h"
|
||||
#include "inputstate.h"
|
||||
#include "gamecvars.h"
|
||||
#include "tarray.h"
|
||||
#include "name.h"
|
||||
|
||||
EXTERN_CVAR(Int, cl_defaultconfiguration)
|
||||
|
||||
|
@ -14,6 +16,8 @@ extern FString currentGame;
|
|||
extern FString LumpFilter;
|
||||
class FArgs;
|
||||
|
||||
extern TMap<FName, int32_t> NameToTileIndex;
|
||||
|
||||
void D_AddWildFile(TArray<FString>& wadfiles, const char* value);
|
||||
|
||||
int CONFIG_Init();
|
||||
|
|
|
@ -40,6 +40,8 @@
|
|||
#include "menu.h"
|
||||
#include "v_draw.h"
|
||||
#include "baselayer.h"
|
||||
#include "gamecontrol.h"
|
||||
#include "build.h"
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
|
@ -619,3 +621,34 @@ int FListMenuItemPatch::GetWidth()
|
|||
: 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"
|
||||
|
||||
void RegisterDukeMenus();
|
||||
void RegisterSpecialMenus();
|
||||
extern bool rotatesprite_2doverride;
|
||||
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.
|
||||
|
@ -872,6 +873,7 @@ void Menu_Close(int playerid)
|
|||
|
||||
void M_Init (void)
|
||||
{
|
||||
RegisterSpecialMenus();
|
||||
RegisterDukeMenus();
|
||||
timerSetCallback(M_Ticker);
|
||||
M_ParseMenuDefs();
|
||||
|
|
|
@ -141,6 +141,7 @@ enum EMenuDescriptorType
|
|||
{
|
||||
MDESC_ListMenu,
|
||||
MDESC_OptionsMenu,
|
||||
MDESC_ImageScroller,
|
||||
};
|
||||
|
||||
struct FMenuDescriptor
|
||||
|
@ -252,7 +253,20 @@ 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;
|
||||
|
||||
|
@ -494,11 +508,11 @@ public:
|
|||
DListMenu(DMenu *parent = NULL, FListMenuDescriptor *desc = NULL);
|
||||
virtual void Init(DMenu *parent = NULL, FListMenuDescriptor *desc = NULL);
|
||||
FListMenuItem *GetItem(FName name);
|
||||
bool Responder (event_t *ev);
|
||||
bool MenuEvent (int mkey, bool fromcontroller);
|
||||
bool MouseEvent(int type, int x, int y);
|
||||
void Ticker ();
|
||||
void Drawer ();
|
||||
bool Responder (event_t *ev) override;
|
||||
bool MenuEvent (int mkey, bool fromcontroller) override;
|
||||
bool MouseEvent(int type, int x, int y) override;
|
||||
void Ticker () override;
|
||||
void Drawer () override;
|
||||
virtual void SelectionChanged() {}
|
||||
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
|
||||
|
|
|
@ -142,6 +142,8 @@ struct gamefilter
|
|||
static const gamefilter games[] = {
|
||||
{ "Duke", GAMEFLAG_DUKE},
|
||||
{ "Nam", GAMEFLAG_NAM|GAMEFLAG_NAPALM},
|
||||
{ "NamOnly", GAMEFLAG_NAM}, // for cases where the difference matters.
|
||||
{ "Napalm", GAMEFLAG_NAPALM},
|
||||
{ "WW2GI", GAMEFLAG_WW2GI},
|
||||
{ "Fury", GAMEFLAG_FURY},
|
||||
{ "Redneck", GAMEFLAG_RR},
|
||||
|
@ -150,6 +152,19 @@ static const gamefilter games[] = {
|
|||
{ "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)
|
||||
{
|
||||
|
@ -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)
|
||||
{
|
||||
FName optname;
|
||||
|
@ -948,6 +1042,10 @@ void M_ParseMenuDefs()
|
|||
{
|
||||
ParseListMenu(sc);
|
||||
}
|
||||
if (sc.Compare("ImageScroller"))
|
||||
{
|
||||
ParseImageScroller(sc);
|
||||
}
|
||||
else if (sc.Compare("DEFAULTLISTMENU"))
|
||||
{
|
||||
ParseListMenuBody(sc, &DefaultListMenuSettings);
|
||||
|
|
|
@ -35,4 +35,5 @@ xx(CustomSubMenu5)
|
|||
xx(CustomSubMenu6)
|
||||
xx(CustomSubMenu7)
|
||||
xx(UsermapMenu)
|
||||
xx(StartGame)
|
||||
xx(StartGame)
|
||||
xx(ImageScroller)
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include "c_cvars.h"
|
||||
#include "printf.h"
|
||||
|
||||
bool validFilter(const char *str);
|
||||
EXTERN_CVAR(String, language)
|
||||
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++)
|
||||
{
|
||||
auto &row = data[i];
|
||||
#if 0
|
||||
#if 1
|
||||
if (filtercol > -1)
|
||||
{
|
||||
auto filterstr = row[filtercol];
|
||||
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;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -37,6 +37,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#include "menu/menu.h"
|
||||
#include "gstrings.h"
|
||||
#include "version.h"
|
||||
#include "namesdyn.h"
|
||||
#include "../../glbackend/glbackend.h"
|
||||
|
||||
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
|
||||
{
|
||||
using Super = DListMenu;
|
||||
|
@ -401,149 +410,11 @@ class MainMenu : public DukeListMenu
|
|||
}
|
||||
};
|
||||
|
||||
class DukeCreditScreen : public DMenu
|
||||
{
|
||||
int screen;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
};
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Menu related game interface functions
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
void GameInterface::MenuOpened()
|
||||
{
|
||||
|
@ -638,9 +509,181 @@ FSavegameInfo GameInterface::GetSaveSig()
|
|||
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
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
//
|
||||
// Class registration
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
|
||||
static TMenuClassDescriptor<Duke::MainMenu> _mm("Duke.MainMenu");
|
||||
static TMenuClassDescriptor<Duke::DukeListMenu> _lm("Duke.ListMenu");
|
||||
static TMenuClassDescriptor<Duke::DukeNewGameCustomSubMenu> _ngcsm("Duke.NewGameCustomSubMenu");
|
||||
|
|
|
@ -164,6 +164,8 @@ struct GameInterface : ::GameInterface
|
|||
void CustomMenuSelection(int menu, int item) override;
|
||||
void StartGame(FGameStartup& gs) 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);
|
||||
g_warningCnt++;
|
||||
}
|
||||
#ifdef DYNTILEREMAP_ENABLE
|
||||
#ifdef DEBUGGINGAIDS
|
||||
else
|
||||
initprintf("Using dynamic tile remapping\n");
|
||||
#endif
|
||||
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;
|
||||
|
||||
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)
|
||||
{
|
||||
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 "global.h"
|
||||
#include "gamecontrol.h"
|
||||
|
||||
BEGIN_DUKE_NS
|
||||
|
||||
#ifdef DYNTILEREMAP_ENABLE
|
||||
# define DVPTR(x) &x
|
||||
#else
|
||||
# define DVPTR(x) NULL
|
||||
#endif
|
||||
|
||||
int16_t DynamicTileMap[MAXTILES];
|
||||
|
||||
|
@ -170,6 +167,9 @@ LUNATIC_EXTERN struct dynitem g_dynTileList[] =
|
|||
{ "CRACKKNUCKLES", DVPTR(CRACKKNUCKLES), CRACKKNUCKLES__STATIC },
|
||||
{ "CRANE", DVPTR(CRANE), CRANE__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 },
|
||||
{ "CRYSTALAMMO", DVPTR(CRYSTALAMMO), CRYSTALAMMO__STATIC },
|
||||
{ "CYCLER", DVPTR(CYCLER), CYCLER__STATIC },
|
||||
|
@ -642,7 +642,7 @@ LUNATIC_EXTERN struct dynitem g_dynTileList[] =
|
|||
{ "XXXSTACY", DVPTR(XXXSTACY), XXXSTACY__STATIC },
|
||||
};
|
||||
|
||||
#ifdef DYNTILEREMAP_ENABLE
|
||||
|
||||
int32_t ACCESS_ICON = ACCESS_ICON__STATIC;
|
||||
int32_t ACCESSCARD = ACCESSCARD__STATIC;
|
||||
int32_t ACCESSSWITCH = ACCESSSWITCH__STATIC;
|
||||
|
@ -766,6 +766,9 @@ int32_t CRACK4 = CRACK4__STATIC;
|
|||
int32_t CRACKKNUCKLES = CRACKKNUCKLES__STATIC;
|
||||
int32_t CRANE = CRANE__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 CRYSTALAMMO = CRYSTALAMMO__STATIC;
|
||||
int32_t CYCLER = CYCLER__STATIC;
|
||||
|
@ -1237,7 +1240,6 @@ int32_t WOMAN = WOMAN__STATIC;
|
|||
int32_t WOODENHORSE = WOODENHORSE__STATIC;
|
||||
int32_t XXXSTACY = XXXSTACY__STATIC;
|
||||
|
||||
#if !defined LUNATIC
|
||||
static hashtable_t h_names = {512, NULL};
|
||||
|
||||
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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@ -1270,8 +1268,6 @@ void freehashnames(void)
|
|||
{
|
||||
hash_free(&h_names);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// This is run after all CON define's have been processed to set up the
|
||||
// dynamic->static tile mapping.
|
||||
|
@ -1280,11 +1276,10 @@ void G_InitDynamicTiles(void)
|
|||
Bmemset(DynamicTileMap, 0, sizeof(DynamicTileMap));
|
||||
|
||||
for (auto & i : g_dynTileList)
|
||||
#ifdef DYNTILEREMAP_ENABLE
|
||||
{
|
||||
DynamicTileMap[*(i.dynvalptr)] = i.staticval;
|
||||
#else
|
||||
DynamicTileMap[i.staticval] = i.staticval;
|
||||
#endif
|
||||
NameToTileIndex.Insert(i.str, *(i.dynvalptr));
|
||||
}
|
||||
|
||||
g_blimpSpawnItems[0] = RPGSPRITE;
|
||||
g_blimpSpawnItems[1] = CHAINGUNSPRITE;
|
||||
|
@ -1314,10 +1309,5 @@ void G_InitDynamicTiles(void)
|
|||
WeaponPickupSprites[9] = FREEZESPRITE;
|
||||
WeaponPickupSprites[10] = HEAVYHBOMB;
|
||||
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
|
||||
|
|
|
@ -26,9 +26,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
BEGIN_DUKE_NS
|
||||
|
||||
|
||||
#define DYNTILEREMAP_ENABLE
|
||||
|
||||
|
||||
#define SECTOREFFECTOR__STATIC 1
|
||||
#define ACTIVATOR__STATIC 2
|
||||
#define TOUCHPLATE__STATIC 3
|
||||
|
@ -505,6 +502,9 @@ BEGIN_DUKE_NS
|
|||
#define INGAMEDUKETHREEDEE__STATIC 2499
|
||||
#define TENSCREEN__STATIC 2500
|
||||
#define PLUTOPAKSPRITE__STATIC 2501
|
||||
#define CREDITSTEXT1__STATIC 2504
|
||||
#define CREDITSTEXT2__STATIC 2505
|
||||
#define CREDITSTEXT3__STATIC 2506
|
||||
#define DEVISTATOR__STATIC 2510
|
||||
#define KNEE__STATIC 2521
|
||||
#define CROSSHAIR__STATIC 2523
|
||||
|
@ -627,8 +627,6 @@ extern int16_t DynamicTileMap[MAXTILES];
|
|||
|
||||
void G_InitDynamicTiles(void);
|
||||
|
||||
#ifdef DYNTILEREMAP_ENABLE
|
||||
|
||||
void G_ProcessDynamicTileMapping(const char *szLabel, int32_t lValue);
|
||||
|
||||
#if !defined LUNATIC
|
||||
|
@ -759,6 +757,9 @@ extern int32_t CRACK4;
|
|||
extern int32_t CRACKKNUCKLES;
|
||||
extern int32_t CRANE;
|
||||
extern int32_t CRANEPOLE;
|
||||
extern int32_t CREDITSTEXT1;
|
||||
extern int32_t CREDITSTEXT2;
|
||||
extern int32_t CREDITSTEXT3;
|
||||
extern int32_t CROSSHAIR;
|
||||
extern int32_t CRYSTALAMMO;
|
||||
extern int32_t CYCLER;
|
||||
|
@ -1232,22 +1233,6 @@ extern int32_t XXXSTACY;
|
|||
|
||||
#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
|
||||
|
||||
#endif // namesdyn_h__
|
||||
|
|
|
@ -26,6 +26,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
|
||||
#include "namesdyn.h"
|
||||
#include "global.h"
|
||||
#include "gamecontrol.h"
|
||||
|
||||
BEGIN_RR_NS
|
||||
|
||||
|
@ -2965,6 +2966,7 @@ void G_InitDynamicTiles(void)
|
|||
*(g_dynTileList[i].dynvalptr) = -g_dynTileList[i].staticval_rr;
|
||||
if (RRRA && *(g_dynTileList[i].dynvalptr) == -UFO1__STATICRR) *(g_dynTileList[i].dynvalptr) = -UFO1__STATICRRRA;
|
||||
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++)
|
||||
*(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++)
|
||||
if (g_dynTileList[i].staticval > 0)
|
||||
{
|
||||
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++)
|
||||
DynamicWeaponMap[*(g_dynWeaponList[i].dynvalptr)] = g_dynWeaponList[i].staticval;
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
//-------------------------------------------------------------------------------------------
|
||||
//
|
||||
//
|
||||
// Main Memu
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------
|
||||
|
||||
LISTMENU "MainMenu"
|
||||
{
|
||||
ScriptId 0
|
||||
ifgame(Duke, Nam, WW2GI, Fury)
|
||||
ifgame(Duke, Nam, WW2GI, Fury, Redneck, RedneckRides)
|
||||
{
|
||||
ifgame(fury)
|
||||
{
|
||||
|
@ -20,7 +20,14 @@ LISTMENU "MainMenu"
|
|||
centermenu
|
||||
animatedtransition
|
||||
}
|
||||
class "Duke.MainMenu"
|
||||
ifgame(Duke, Nam, WW2GI, Fury)
|
||||
{
|
||||
class "Duke.ListMenu"
|
||||
}
|
||||
else
|
||||
{
|
||||
class "Redneck.ListMenu"
|
||||
}
|
||||
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)
|
||||
ifgame(fury)
|
||||
|
@ -36,16 +43,6 @@ LISTMENU "MainMenu"
|
|||
NativeTextItem "$MNU_CREDITS", "c", "CreditsMenu"
|
||||
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)
|
||||
{
|
||||
NativeTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
|
||||
|
@ -67,6 +64,11 @@ LISTMENU "MainMenu"
|
|||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------
|
||||
//
|
||||
// Ingame Memu (same as above with a few more options)
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------
|
||||
|
||||
LISTMENU "IngameMenu"
|
||||
{
|
||||
|
@ -84,19 +86,14 @@ LISTMENU "IngameMenu"
|
|||
centermenu
|
||||
animatedtransition
|
||||
}
|
||||
linespacing 15
|
||||
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
|
||||
ifgame(Duke, Nam, WW2GI, Fury)
|
||||
{
|
||||
class "Duke.ListMenu"
|
||||
}
|
||||
else
|
||||
{
|
||||
class "Redneck.ListMenu"
|
||||
}
|
||||
NativeTextItem "$MNU_NEWGAME", "n", "EpisodeMenu"
|
||||
NativeTextItem "$MNU_SAVEGAME", "s", "SaveGameMenu"
|
||||
NativeTextItem "$MNU_LOADGAME", "l", "LoadGameMenu"
|
||||
|
@ -128,24 +125,36 @@ LISTMENU "IngameMenu"
|
|||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------
|
||||
//
|
||||
// Episode and skill menu are filled in programmatically
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------
|
||||
|
||||
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"
|
||||
position 160, 48, 142
|
||||
centermenu
|
||||
fixedspacing 5
|
||||
animatedtransition
|
||||
class "Duke.ListMenu"
|
||||
ifgame(Duke, Nam, WW2GI, Fury)
|
||||
{
|
||||
class "Duke.ListMenu"
|
||||
}
|
||||
else
|
||||
{
|
||||
class "Redneck.ListMenu"
|
||||
}
|
||||
}
|
||||
|
||||
ScriptId 100
|
||||
}
|
||||
|
||||
LISTMENU "SkillMenu"
|
||||
{
|
||||
ifgame(Duke, Nam, WW2GI, Fury) // Ion Fury does not use this menu.
|
||||
ifgame(Duke, Nam, WW2GI, Fury, Redneck, RedneckRides)
|
||||
{
|
||||
ifgame(fury)
|
||||
{
|
||||
|
@ -160,13 +169,25 @@ LISTMENU "SkillMenu"
|
|||
}
|
||||
caption "$MNU_SELECTSKILL"
|
||||
fixedspacing 5
|
||||
class "Duke.ListMenu"
|
||||
ifgame(Duke, Nam, WW2GI, Fury)
|
||||
{
|
||||
class "Duke.ListMenu"
|
||||
}
|
||||
else
|
||||
{
|
||||
class "Redneck.ListMenu"
|
||||
}
|
||||
animatedtransition
|
||||
}
|
||||
ScriptId 110
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------
|
||||
//
|
||||
// The custom menus are only supported by the EDuke32 frontend.
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------
|
||||
|
||||
LISTMENU "CustomGameMenu"
|
||||
{
|
||||
caption "$MNU_NEWGAME"
|
||||
|
@ -305,14 +326,27 @@ LISTMENU "CustomSubMenu7"
|
|||
class "Duke.ListMenu"
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------
|
||||
//
|
||||
// No multiplayer support for now, but kept as a reminder.
|
||||
//
|
||||
//-------------------------------------------------------------------------------------------
|
||||
|
||||
LISTMENU "MultiMenu"
|
||||
{
|
||||
ifgame(Duke, Nam, WW2GI, Fury) // Ion Fury does not use this menu.
|
||||
ifgame(Duke, Nam, WW2GI, Fury)
|
||||
{
|
||||
position 160, 55, 135
|
||||
centermenu
|
||||
fixedspacing 5
|
||||
class "Duke.ListMenu"
|
||||
ifgame(Duke, Nam, WW2GI, Fury)
|
||||
{
|
||||
class "Duke.ListMenu"
|
||||
}
|
||||
else
|
||||
{
|
||||
class "Redneck.ListMenu"
|
||||
}
|
||||
animatedtransition
|
||||
}
|
||||
|
||||
|
@ -321,3 +355,106 @@ LISTMENU "MultiMenu"
|
|||
NativeTextItem "$MNU_JOINGAME", "j", "JoinGameMenu"
|
||||
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