2008-05-16 19:51:38 +00:00
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
/*
|
2010-05-25 10:56:00 +00:00
|
|
|
Copyright (C) 2010 EDuke32 developers and contributors
|
2008-05-16 19:51:38 +00:00
|
|
|
|
2010-05-25 10:56:00 +00:00
|
|
|
This file is part of EDuke32.
|
2008-05-16 19:51:38 +00:00
|
|
|
|
|
|
|
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
|
|
*/
|
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
|
|
|
|
#include "compat.h"
|
|
|
|
|
|
|
|
#define TICSPERFRAME 3
|
|
|
|
|
|
|
|
// #define VULGARITY
|
|
|
|
|
Patch from Hendricks266 and whatever changes happened to be in my tree. I hope they work ;)
"The most noticeable change is the addition of the "includedefault" CON and DEF command, which will attempt to include eduke.con (or nam.con, or ww2gi.con), then game.con, or duke3d.def, or nam.def, or ww2gi.def. This is useful for TCs like my add-ons, where for my pseudo-mutators I currently say "include EDUKE.CON", but I also have to juggle this terrible order of paths, so that I can have an EDUKE.CON file in my HRP which says "include GAME.CON" to allow the mainline game to actually run, but also allow DukePlus to load its EDUKE.CON file (since it uses that and not an -x switch), and also allow any custom EDUKE.CON files in the root to be used."
git-svn-id: https://svn.eduke32.com/eduke32@1909 1a8010ca-5511-0410-912e-c29ae57300e0
2011-06-19 00:11:52 +00:00
|
|
|
char defsfilename[BMAX_PATH] = "duke3d.def";
|
2008-05-16 19:51:38 +00:00
|
|
|
|
2008-08-09 06:08:24 +00:00
|
|
|
#define COLOR_RED 248
|
|
|
|
#define COLOR_WHITE 31
|
|
|
|
|
2011-03-08 23:02:38 +00:00
|
|
|
//#define NUMOPTIONS 9
|
|
|
|
//char option[NUMOPTIONS] = {0,0,0,0,0,0,1,0,0};
|
2010-05-18 05:14:17 +00:00
|
|
|
|
2011-03-08 23:02:38 +00:00
|
|
|
uint8_t default_buildkeys[NUMBUILDKEYS] =
|
2009-01-10 07:38:50 +00:00
|
|
|
{
|
|
|
|
0xc8,0xd0,0xcb,0xcd,0x2a,0x9d,0x1d,0x39,
|
|
|
|
0x1e,0x2c,0xd1,0xc9,0x47,0x49,
|
2008-05-16 19:51:38 +00:00
|
|
|
0x9c,0x1c,0xd,0xc,0xf,0x29
|
2009-01-10 07:38:50 +00:00
|
|
|
};
|
2008-05-16 19:51:38 +00:00
|
|
|
|
2011-05-15 22:37:24 +00:00
|
|
|
// needed by build/src/defs.c
|
2009-01-09 09:29:17 +00:00
|
|
|
int32_t nextvoxid = 0;
|
2008-05-16 19:51:38 +00:00
|
|
|
|
2009-01-09 09:29:17 +00:00
|
|
|
extern int32_t whitecol;
|
|
|
|
extern char changechar(char dachar, int32_t dadir, char smooshyalign, char boundcheck);
|
2008-05-16 19:51:38 +00:00
|
|
|
extern void updatenumsprites(void);
|
|
|
|
|
2011-05-15 22:37:24 +00:00
|
|
|
static char autospritehelp=0, autosecthelp=0;
|
|
|
|
//static int32_t lastmessagetime=-1;
|
2010-05-18 05:14:17 +00:00
|
|
|
|
|
|
|
static char tempbuf[1024];
|
2011-02-15 21:02:43 +00:00
|
|
|
static int32_t numsprite[MAXTILES], multisprite[MAXTILES];
|
2010-05-18 05:14:17 +00:00
|
|
|
static char lo[64];
|
2011-01-16 00:23:39 +00:00
|
|
|
static char levelname[BMAX_PATH];
|
2010-05-18 05:14:17 +00:00
|
|
|
static int16_t curwall=0, curwallnum=0;
|
|
|
|
static int16_t /*cursearchsprite=0,*/ cursearchspritenum=0, cursector_lotag=0, cursectornum=0;
|
|
|
|
static int16_t search_lotag=0,search_hitag=0;
|
|
|
|
static char wallsprite=0;
|
|
|
|
static char helpon=0;
|
2008-05-16 19:51:38 +00:00
|
|
|
//static char onwater=0;
|
2010-05-18 05:14:17 +00:00
|
|
|
static uint8_t onnames=4, usedcount=1;
|
|
|
|
static int16_t cursprite;
|
|
|
|
int32_t mousxplc, mousyplc;
|
|
|
|
static int32_t ppointhighlight;
|
|
|
|
//static int32_t counter=0;
|
|
|
|
static uint8_t nosprites=0,purpleon=0,skill=4;
|
2010-07-03 08:53:57 +00:00
|
|
|
static uint8_t framerateon=1,shadepreview=0;
|
2010-05-18 05:14:17 +00:00
|
|
|
|
2009-01-09 09:29:17 +00:00
|
|
|
int32_t autosave=180;
|
2010-05-18 05:14:17 +00:00
|
|
|
static int32_t autosavetimer;
|
|
|
|
|
|
|
|
static void SearchSectors(int32_t dir);
|
2009-01-09 09:29:17 +00:00
|
|
|
static inline void SpriteName(int16_t spritenum, char *lo2);
|
2011-02-15 21:02:43 +00:00
|
|
|
//static void PrintStatus(const char *string,int32_t num,char x,char y,char color);
|
2009-09-12 23:03:15 +00:00
|
|
|
void SetBOSS1Palette();
|
|
|
|
void SetSLIMEPalette();
|
|
|
|
void SetWATERPalette();
|
|
|
|
void SetGAMEPalette();
|
2008-05-16 19:51:38 +00:00
|
|
|
|
2009-01-09 09:29:17 +00:00
|
|
|
static void EditSpriteData(int16_t spritenum);
|
|
|
|
static void EditWallData(int16_t wallnum);
|
|
|
|
static void EditSectorData(int16_t sectnum);
|
2008-05-16 19:51:38 +00:00
|
|
|
static void FuncMenu(void);
|
|
|
|
|
2011-01-27 06:35:52 +00:00
|
|
|
#define BASEPALCOUNT 7
|
|
|
|
|
2010-05-18 05:14:17 +00:00
|
|
|
static uint8_t GAMEpalette[768], WATERpalette[768], SLIMEpalette[768], TITLEpalette[768];
|
|
|
|
static uint8_t REALMSpalette[768], BOSS1palette[768];
|
|
|
|
|
2011-01-27 06:35:52 +00:00
|
|
|
uint8_t *basepaltable[BASEPALCOUNT] = { palette, WATERpalette, SLIMEpalette, TITLEpalette, REALMSpalette, BOSS1palette, GAMEpalette };
|
|
|
|
|
|
|
|
|
2010-05-18 05:14:17 +00:00
|
|
|
static char num_tables;
|
2008-05-16 19:51:38 +00:00
|
|
|
|
2010-05-18 05:14:17 +00:00
|
|
|
static int32_t updownunits=1024;
|
2008-05-16 19:51:38 +00:00
|
|
|
|
|
|
|
|
2010-05-18 05:14:17 +00:00
|
|
|
static char getmessage[162], getmessageleng;
|
|
|
|
static int32_t getmessagetimeoff; //, charsperline;
|
|
|
|
|
|
|
|
//int32_t intro=0;
|
2008-05-16 19:51:38 +00:00
|
|
|
|
2009-01-09 09:29:17 +00:00
|
|
|
static int32_t acurpalette=0;
|
2008-05-16 19:51:38 +00:00
|
|
|
|
2010-05-18 05:14:17 +00:00
|
|
|
//void ContextHelp(int16_t spritenum);
|
|
|
|
//void ResetKeys();
|
2008-05-16 19:51:38 +00:00
|
|
|
|
|
|
|
extern void fixspritesectors(void);
|
2010-05-18 05:14:17 +00:00
|
|
|
//#define KEY_PRESSED(sc) KB_KeyPressed((sc))
|
2008-05-16 19:51:38 +00:00
|
|
|
|
|
|
|
// 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
|
2009-01-09 09:29:17 +00:00
|
|
|
static const int32_t ZoomToThumbSize[] =
|
2008-05-16 19:51:38 +00:00
|
|
|
{
|
|
|
|
FUCKING_GOOD_EYESIGHT, 32, 64, 128, 192, 256, 384, 512
|
2010-05-18 05:14:17 +00:00
|
|
|
};
|
2008-05-16 19:51:38 +00:00
|
|
|
|
|
|
|
#define NUM_ZOOMS (sizeof(ZoomToThumbSize)/sizeof(ZoomToThumbSize[0]))
|
|
|
|
#define INITIAL_ZOOM 2
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
2010-05-18 05:14:17 +00:00
|
|
|
int32_t *pIds; // ptr to list of tile Ids
|
|
|
|
int32_t nIds; // num of tile ids
|
|
|
|
char *szText; // description to present to user.
|
|
|
|
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 color1; // 2d sprite color 1
|
|
|
|
char color2; // 2d sprite color 2
|
2008-05-16 19:51:38 +00:00
|
|
|
} TileGroup;
|
|
|
|
|
|
|
|
#define MAX_TILE_GROUPS 32
|
|
|
|
#define MAX_TILE_GROUP_ENTRIES 1024
|
|
|
|
|
2010-05-18 05:14:17 +00:00
|
|
|
static TileGroup s_TileGroups[MAX_TILE_GROUPS];
|
|
|
|
static int32_t tilegroupItems;
|
|
|
|
static int32_t tilegroupActors;
|
2010-08-14 21:32:28 +00:00
|
|
|
static int32_t tile_groups = 0;
|
2008-05-16 19:51:38 +00:00
|
|
|
|
2010-05-18 05:14:17 +00:00
|
|
|
|
2008-09-11 21:22:58 +00:00
|
|
|
#define NUMPRINTABLES 94
|
|
|
|
#define MAX_ALPHABETS 32
|
|
|
|
// alphabet definitions struct for the sprite text renderer
|
|
|
|
typedef struct
|
|
|
|
{
|
2009-01-09 09:29:17 +00:00
|
|
|
int16_t pic[NUMPRINTABLES]; // maps printable ASCII chars to tilenums
|
|
|
|
int8_t xofs[NUMPRINTABLES]; // additional offset
|
|
|
|
int8_t yofs[NUMPRINTABLES];
|
2008-09-11 21:22:58 +00:00
|
|
|
} alphabet_t;
|
|
|
|
|
2010-05-18 05:14:17 +00:00
|
|
|
static alphabet_t alphabets[MAX_ALPHABETS];
|
2009-01-09 09:29:17 +00:00
|
|
|
static int32_t numalphabets = 0;
|
2008-09-11 21:22:58 +00:00
|
|
|
|
2008-05-16 19:51:38 +00:00
|
|
|
#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
|
|
|
|
#define FIRST_EXTENDED_TILE 6144
|
|
|
|
#define SECOND_EXTENDED_TILE 9216
|
|
|
|
|
2009-01-09 09:29:17 +00:00
|
|
|
extern int16_t localartfreq[MAXTILES];
|
|
|
|
extern int16_t localartlookup[MAXTILES], localartlookupnum;
|
|
|
|
extern int32_t lockclock;
|
2008-05-16 19:51:38 +00:00
|
|
|
extern void clearkeys(void);
|
2008-09-12 13:41:18 +00:00
|
|
|
|
2011-02-03 17:44:03 +00:00
|
|
|
static int32_t gs_spriteTagValue[3][7];
|
|
|
|
static char gs_spriteTagInterested[3][7];
|
2010-05-18 05:14:17 +00:00
|
|
|
static int16_t gs_cursprite=-1;
|
2009-03-16 15:18:01 +00:00
|
|
|
|
2011-05-15 22:37:24 +00:00
|
|
|
//int32_t g_musicSize=0;
|