Newer tile selector from Mapfun and some other stuff

git-svn-id: https://svn.eduke32.com/eduke32@534 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
terminx 2007-04-17 05:54:12 +00:00
parent 2440ab75b9
commit 62ae233489
7 changed files with 1413 additions and 94 deletions

View file

@ -55,7 +55,7 @@ void OSD_ResizeDisplay(int w,int h);
void OSD_CaptureInput(int cap); void OSD_CaptureInput(int cap);
// sets the console version string // sets the console version string
void OSD_SetVersionString(const char *version); void OSD_SetVersionString(const char *version, int shade, int pal);
// shows or hides the onscreen display // shows or hides the onscreen display
void OSD_ShowDisplay(int onf); void OSD_ShowDisplay(int onf);

View file

@ -90,8 +90,8 @@ short brightness = 0;
long zlock = 0x7fffffff, zmode = 0, whitecol, kensplayerheight = 32; long zlock = 0x7fffffff, zmode = 0, whitecol, kensplayerheight = 32;
short defaultspritecstat = 0; short defaultspritecstat = 0;
static short localartfreq[MAXTILES]; short localartfreq[MAXTILES];
static short localartlookup[MAXTILES], localartlookupnum; short localartlookup[MAXTILES], localartlookupnum;
char tempbuf[4096]; char tempbuf[4096];

View file

@ -44,6 +44,8 @@ static void _internal_onshowosd(int);
static char osdtext[TEXTSIZE]; static char osdtext[TEXTSIZE];
static char osdversionstring[32]; static char osdversionstring[32];
static int osdversionstringlen; static int osdversionstringlen;
static int osdversionstringshade;
static int osdversionstringpal;
static int osdpos=0; // position next character will be written at static int osdpos=0; // position next character will be written at
static int osdlines=1; // # lines of text in the buffer static int osdlines=1; // # lines of text in the buffer
static int osdrows=20; // # lines of the buffer that are visible static int osdrows=20; // # lines of the buffer that are visible
@ -773,7 +775,7 @@ void OSD_Draw(void)
clearbackground(osdcols,osdrowscur+1); clearbackground(osdcols,osdrowscur+1);
if (osdversionstring[0]) if (osdversionstring[0])
drawosdstr(osdcols-osdversionstringlen,osdrowscur,osdversionstring,osdversionstringlen,0,2); drawosdstr(osdcols-osdversionstringlen,osdrowscur,osdversionstring,osdversionstringlen,osdversionstringshade,osdversionstringpal);
for (; lines>0; lines--, row--) { for (; lines>0; lines--, row--) {
drawosdstr(0,row,osdtext+topoffs,osdcols,osdtextshade,osdtextpal); drawosdstr(0,row,osdtext+topoffs,osdcols,osdtextshade,osdtextpal);
@ -1051,12 +1053,14 @@ int OSD_RegisterFunction(const char *name, const char *help, int (*func)(const o
// //
// OSD_SetVersionString() // OSD_SetVersionString()
// //
void OSD_SetVersionString(const char *version) void OSD_SetVersionString(const char *version, int shade, int pal)
{ {
if (!osdinited) OSD_Init(); if (!osdinited) OSD_Init();
strcpy(osdversionstring,version); Bstrcpy(osdversionstring,version);
osdversionstringlen = strlen(osdversionstring); osdversionstringlen = Bstrlen(osdversionstring);
osdversionstringshade = shade;
osdversionstringpal = pal;
} }
// //

File diff suppressed because it is too large Load diff

View file

@ -102,7 +102,7 @@ extern int32 numlumps;
static FILE *frecfilep = (FILE *)NULL; static FILE *frecfilep = (FILE *)NULL;
int restorepalette,screencapt; int restorepalette,screencapt;
static int nomorelogohack; static int nomorelogohack, nologo = 0;
static int sendmessagecommand = -1; static int sendmessagecommand = -1;
char defaultduke3dgrp[BMAX_PATH] = "duke3d.grp"; char defaultduke3dgrp[BMAX_PATH] = "duke3d.grp";
@ -8715,6 +8715,12 @@ static void checkcommandline(int argc,char **argv)
i++; i++;
continue; continue;
} }
if (!Bstrcasecmp(c+1,"nologo"))
{
nologo = 1;
i++;
continue;
}
#if !defined(_WIN32) #if !defined(_WIN32)
if (!Bstrcasecmp(c+1,"usecwd")) if (!Bstrcasecmp(c+1,"usecwd"))
{ {
@ -9022,7 +9028,7 @@ static void Logo(void)
MUSIC_StopSong(); MUSIC_StopSong();
FX_StopAllSounds(); // JBF 20031228 FX_StopAllSounds(); // JBF 20031228
clearsoundlocks(); // JBF 20031228 clearsoundlocks(); // JBF 20031228
if (ud.multimode < 2 && (logoflags & LOGO_FLAG_ENABLED)) if (ud.multimode < 2 && (logoflags & LOGO_FLAG_ENABLED) && !nologo)
{ {
if (VOLUMEALL && (logoflags & LOGO_FLAG_PLAYANIM)) if (VOLUMEALL && (logoflags & LOGO_FLAG_PLAYANIM))
{ {
@ -10064,7 +10070,7 @@ while (findfiles) { Bsprintf(tempbuf,"autoload/%s",findfiles->name); initprintf(
} }
if (quitevent) return; if (quitevent) return;
if (!loaddefinitionsfile(duke3ddef)) initprintf("Definitions file loaded.\n"); if (!loaddefinitionsfile(duke3ddef)) initprintf("Definitions file '%s' loaded.\n",duke3ddef);
// initprintf("numplayers=%i\n",numplayers); // initprintf("numplayers=%i\n",numplayers);
@ -10119,7 +10125,7 @@ while (findfiles) { Bsprintf(tempbuf,"autoload/%s",findfiles->name); initprintf(
GAME_onshowosd GAME_onshowosd
); );
OSD_SetParameters(0,2, 0,0, 4,0); OSD_SetParameters(0,2, 0,0, 4,0);
OSD_SetVersionString(HEAD2); OSD_SetVersionString(HEAD2,0,2);
registerosdcommands(); registerosdcommands();
if (setgamemode(ScreenMode,ScreenWidth,ScreenHeight,ScreenBPP) < 0) if (setgamemode(ScreenMode,ScreenWidth,ScreenHeight,ScreenBPP) < 0)

View file

@ -28,6 +28,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
extern int g_i,g_p; extern int g_i,g_p;
static void ResetPointerVars(void);
static void FreeGameVars(void) static void FreeGameVars(void)
{ {
// call this function as many times as needed. // call this function as many times as needed.
@ -129,6 +131,8 @@ int ReadGameVars(long fil)
// else nothing 'extra...' // else nothing 'extra...'
} }
ResetPointerVars();
// Bsprintf(g_szBuf,"CP:%s %d",__FILE__,__LINE__); // Bsprintf(g_szBuf,"CP:%s %d",__FILE__,__LINE__);
// AddLog(g_szBuf); // AddLog(g_szBuf);
if (kdfread(apScriptGameEvent,sizeof(apScriptGameEvent),1,fil) != 1) goto corrupt; if (kdfread(apScriptGameEvent,sizeof(apScriptGameEvent),1,fil) != 1) goto corrupt;
@ -1256,3 +1260,75 @@ void InitGameVarPointers(void)
} }
} }
static void ResetPointerVars(void)
{
aGameVars[GetGameID("RESPAWN_MONSTERS")].lValue = (long)&ud.respawn_monsters;
aGameVars[GetGameID("RESPAWN_ITEMS")].lValue = (long)&ud.respawn_items;
aGameVars[GetGameID("RESPAWN_INVENTORY")].lValue = (long)&ud.respawn_inventory;
aGameVars[GetGameID("MONSTERS_OFF")].lValue = (long)&ud.monsters_off;
aGameVars[GetGameID("MARKER")].lValue = (long)&ud.marker;
aGameVars[GetGameID("FFIRE")].lValue = (long)&ud.ffire;
aGameVars[GetGameID("LEVEL")].lValue = (long)&ud.level_number;
aGameVars[GetGameID("VOLUME")].lValue = (long)&ud.volume_number;
aGameVars[GetGameID("COOP")].lValue = (long)&ud.coop;
aGameVars[GetGameID("MULTIMODE")].lValue = (long)&ud.multimode;
aGameVars[GetGameID("myconnectindex")].lValue = (long)&myconnectindex;
aGameVars[GetGameID("screenpeek")].lValue = (long)&screenpeek;
aGameVars[GetGameID("currentweapon")].lValue = (long)&g_currentweapon;
aGameVars[GetGameID("gs")].lValue = (long)&g_gs;
aGameVars[GetGameID("looking_arc")].lValue = (long)&g_looking_arc;
aGameVars[GetGameID("gun_pos")].lValue = (long)&g_gun_pos;
aGameVars[GetGameID("weapon_xoffset")].lValue = (long)&g_weapon_xoffset;
aGameVars[GetGameID("weaponcount")].lValue = (long)&g_kb;
aGameVars[GetGameID("looking_angSR1")].lValue = (long)&g_looking_angSR1;
aGameVars[GetGameID("xdim")].lValue = (long)&xdim;
aGameVars[GetGameID("ydim")].lValue = (long)&ydim;
aGameVars[GetGameID("windowx1")].lValue = (long)&windowx1;
aGameVars[GetGameID("windowx2")].lValue = (long)&windowx2;
aGameVars[GetGameID("windowy1")].lValue = (long)&windowy1;
aGameVars[GetGameID("windowy2")].lValue = (long)&windowy2;
aGameVars[GetGameID("totalclock")].lValue = (long)&totalclock;
aGameVars[GetGameID("lastvisinc")].lValue = (long)&lastvisinc;
aGameVars[GetGameID("numsectors")].lValue = (long)&numsectors;
aGameVars[GetGameID("numplayers")].lValue = (long)&numplayers;
aGameVars[GetGameID("viewingrange")].lValue = (long)&viewingrange;
aGameVars[GetGameID("yxaspect")].lValue = (long)&yxaspect;
aGameVars[GetGameID("gravitationalconstant")].lValue = (long)&gc;
aGameVars[GetGameID("gametype_flags")].lValue = (long)&gametype_flags[ud.coop];
aGameVars[GetGameID("framerate")].lValue = (long)&framerate;
aGameVars[GetGameID("camerax")].lValue = (long)&ud.camerax;
aGameVars[GetGameID("cameray")].lValue = (long)&ud.cameray;
aGameVars[GetGameID("cameraz")].lValue = (long)&ud.cameraz;
aGameVars[GetGameID("cameraang")].lValue = (long)&ud.cameraang;
aGameVars[GetGameID("camerahoriz")].lValue = (long)&ud.camerahoriz;
aGameVars[GetGameID("camerasect")].lValue = (long)&ud.camerasect;
aGameVars[GetGameID("myx")].lValue = (long)&myx;
aGameVars[GetGameID("myy")].lValue = (long)&myy;
aGameVars[GetGameID("myz")].lValue = (long)&myz;
aGameVars[GetGameID("omyx")].lValue = (long)&omyx;
aGameVars[GetGameID("omyy")].lValue = (long)&omyy;
aGameVars[GetGameID("omyz")].lValue = (long)&omyz;
aGameVars[GetGameID("myxvel")].lValue = (long)&myxvel;
aGameVars[GetGameID("myyvel")].lValue = (long)&myyvel;
aGameVars[GetGameID("myzvel")].lValue = (long)&myzvel;
aGameVars[GetGameID("myhoriz")].lValue = (long)&myhoriz;
aGameVars[GetGameID("myhorizoff")].lValue = (long)&myhorizoff;
aGameVars[GetGameID("omyhoriz")].lValue = (long)&omyhoriz;
aGameVars[GetGameID("omyhorizoff")].lValue = (long)&omyhorizoff;
aGameVars[GetGameID("myang")].lValue = (long)&myang;
aGameVars[GetGameID("omyang")].lValue = (long)&omyang;
aGameVars[GetGameID("mycursectnum")].lValue = (long)&mycursectnum;
aGameVars[GetGameID("myjumpingcounter")].lValue = (long)&myjumpingcounter;
aGameVars[GetGameID("myjumpingtoggle")].lValue = (long)&myjumpingtoggle;
aGameVars[GetGameID("myonground")].lValue = (long)&myonground;
aGameVars[GetGameID("myhardlanding")].lValue = (long)&myhardlanding;
aGameVars[GetGameID("myreturntocenter")].lValue = (long)&myreturntocenter;
aGameVars[GetGameID("display_mirror")].lValue = (long)&display_mirror;
}

View file

@ -156,3 +156,188 @@ void ResetKeys();
extern void fixspritesectors(void); extern void fixspritesectors(void);
#define KEY_PRESSED(sc) KB_KeyPressed((sc)) #define KEY_PRESSED(sc) KB_KeyPressed((sc))
// REM : This file should be included in file BUILD.C _ONLY_
#include "names.h"
// This table defines the various zoom levels, the numbers being the pixel width
// and height of the sprite when plotted on the screen. Probably zooms in too far
// for some, but I'm a blind old git :-(
#define FUCKING_GOOD_EYESIGHT 16
static const long ZoomToThumbSize[] =
{
FUCKING_GOOD_EYESIGHT, 32, 64, 128, 192, 256, 384, 512
} ;
#define NUM_ZOOMS (sizeof(ZoomToThumbSize)/sizeof(ZoomToThumbSize[0]))
#define INITIAL_ZOOM 2
// If I wasn't a lazy sod I'd have made these loadable from external config files.
///////////////////
// ACTOR SPRITES //
///////////////////
static const long s_idActors[] =
{
LIZTROOP, LIZTROOPRUNNING, LIZTROOPSTAYPUT, LIZTROOPSHOOT, LIZTROOPJETPACK,
LIZTROOPONTOILET, LIZTROOPJUSTSIT, LIZTROOPDUCKING,
PIGCOP, PIGCOPSTAYPUT, PIGCOPDIVE,
LIZMAN, LIZMANSTAYPUT, LIZMANSPITTING, LIZMANFEEDING, LIZMANJUMP,
COMMANDER, COMMANDERSTAYPUT,
OCTABRAIN, OCTABRAINSTAYPUT,
ORGANTIC,
NEWBEAST, NEWBEASTSTAYPUT, NEWBEASTJUMP,
EGG, GREENSLIME, ROTATEGUN, RECON, TANK, BOUNCEMINE,
FLOORFLAME,
// FEMS
FEM1, FEM2, FEM3, FEM4, FEM5, FEM6, FEM7, FEM8, FEM9, FEM10, NAKED1,
// Lil' critters
SHARK,
// BIG critters
BOSS1, BOSS1STAYPUT, BOSS1SHOOT, BOSS1LOB,
BOSS2,
BOSS3,
BOSS4, BOSS4STAYPUT
} ;
#define NUM_ACTORS (sizeof(s_idActors)/sizeof(s_idActors[0]))
/////////////////
// DOOR TILES ///
/////////////////
// Not all of these are tuely door tiles but are useable as such
static const long s_idDoors[] =
{
DOORTILE1, DOORTILE2, DOORTILE3, DOORTILE4, DOORTILE5,
DOORTILE6, DOORTILE7, DOORTILE8, DOORTILE9, DOORTILE10,
312, 313, 314, 345,
DOORTILE22, DOORTILE18, DOORTILE19, DOORTILE20,
450, 455, 457, 458, 459, 469, 470, 477,
DOORTILE14,
719, 735, 771,
DOORTILE16,
843, 858, 883,
DOORTILE15, DOORTILE21,
1173,
DOORTILE11,DOORTILE12,
353, 355,
// Related items
DOORSHOCK, ACCESSCARD
};
#define NUM_DOORS (sizeof(s_idDoors)/sizeof(s_idDoors[0]))
//////////////////
// SWITCH TILES //
//////////////////
static const long s_idSwitches[] =
{
ACCESSSWITCH,ACCESSSWITCH2, SLOTDOOR, LIGHTSWITCH, SPACEDOORSWITCH, SPACELIGHTSWITCH,
FRANKENSTINESWITCH, MULTISWITCH,
DIPSWITCH, DIPSWITCH2, DIPSWITCH3, TECHSWITCH,
LIGHTSWITCH2, LIGHTSWITCH2+1,
POWERSWITCH1, LOCKSWITCH1, POWERSWITCH2, HANDSWITCH, PULLSWITCH,
ALIENSWITCH, HANDPRINTSWITCH, NUKEBUTTON,
TARGET,
4083, 4954 // Busted switches (Atomic)
} ;
#define NUM_SWITCHES (sizeof(s_idSwitches)/sizeof(s_idSwitches[0]))
///////////////////
// GOODIES TILES //
///////////////////
static const long s_idGoodies[] =
{
// Ammo
AMMO,SHOTGUNAMMO, BATTERYAMMO, RPGAMMO, HEAVYHBOMB, FREEZEAMMO, GROWAMMO, CRYSTALAMMO,
DEVISTATORAMMO, HBOMBAMMO,
// Items (health,etc)
COLA, SIXPAK, FIRSTAID, SHIELD, STEROIDS, AIRTANK, JETPACK, HEATSENSOR, ACCESSCARD,
BOOTS, ATOMICHEALTH,
// Weapons
FIRSTGUNSPRITE, CHAINGUNSPRITE, RPGSPRITE, FREEZESPRITE, SHRINKERSPRITE,
TRIPBOMBSPRITE, SHOTGUNSPRITE, DEVISTATORSPRITE
} ;
#define NUM_GOODIES (sizeof(s_idGoodies)/sizeof(s_idGoodies[0]))
////////////////////////
// ITEMS THAT RESPAWN //
////////////////////////
// Thought there were more than just these :-(
static const long s_idRespawns[] =
{
CANWITHSOMETHING, CANWITHSOMETHING2, CANWITHSOMETHING3, CANWITHSOMETHING4,
// FEMS
FEM1, FEM2, FEM3, FEM4, FEM5, FEM6, FEM7, FEM8, FEM9, FEM10, NAKED1,
} ;
#define NUM_RESPAWNS (sizeof(s_idRespawns)/sizeof(s_idRespawns[0]))
////////////////////////
// EXPLOSION AND FIRE //
////////////////////////
static const long s_idExplosions[] =
{
CRACK1, CRACK2, CRACK3, CRACK4,
FIREEXT, SEENINE, OOZFILTER,
EXPLODINGBARREL, EXPLODINGBARREL2, FIREBARREL, GUNPOWDERBARREL,
REACTOR2SPARK, BOLT1, SIDEBOLT1,
CEILINGSTEAM,
FIREVASE, 2066, BURNING, FIRE, BURNING2, FIRE2
} ;
#define NUM_EXPLOSIONS (sizeof(s_idExplosions)/sizeof(s_idExplosions[0]))
////////////////////////////////////////////////////////////////
// BUILD STRUCTURE USED IN SELECTING ONE OF ABOVE LTILE LISTS //
////////////////////////////////////////////////////////////////
const struct
{
const long *pIds ; // ptr to list of tile Ids
long nIds ; // num of tile ids
char key1 ; // key1 and key2 are two alternative keypresses used to
char key2 ; // select tile set. Bodge to do eary upper/lower case handling
char *szText ; // description to present to user.
} s_TileGroups[] =
{
{ s_idActors, NUM_ACTORS, 'A', 'a', "(A) Actor group" },
{ s_idDoors, NUM_DOORS, 'D', 'd', "(D) Door group" },
{ s_idGoodies, NUM_GOODIES, 'G', 'g', "(G) Goodies (ammo, weapons, etc)" },
{ s_idRespawns, NUM_RESPAWNS, 'R', 'r', "(R) Respawning Items" },
{ s_idSwitches, NUM_SWITCHES, 'S', 's', "(S) Switch group" },
{ s_idExplosions, NUM_EXPLOSIONS, 'X', 'x', "(X) eXplosions, fire, sparks, etc" }
} ;
#define NUM_TILE_GROUPS (sizeof(s_TileGroups)/sizeof(s_TileGroups[0]))
#define FIRST_USER_ART_TILE 3584
// Some atomic tiles are sprinkled in the V1.3d's area but
// this is where the main atomic tiles start :-
#define FIRST_ATOMIC_TILE 4096
extern short localartfreq[MAXTILES];
extern short localartlookup[MAXTILES], localartlookupnum;
extern long lockclock;
extern void clearkeys(void);