Fix eukara's error-on-restart issue.

Tweak downloads menu tooltips.
Some minor cleanups.



git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5383 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2019-01-15 14:12:49 +00:00
parent 4c2ac0cff3
commit 001bad5541
20 changed files with 136 additions and 111 deletions

View file

@ -1785,10 +1785,10 @@ void SCR_DrawFPS (void)
lastupdatetime = t; lastupdatetime = t;
break; break;
case 5: case 5:
R_FrameTimeGraph((int)(1000.0*2*frametime)); R_FrameTimeGraph(1000.0*2*frametime);
break; break;
case 7: case 7:
R_FrameTimeGraph((int)(1000.0*1*frametime)); R_FrameTimeGraph(1000.0*1*frametime);
break; break;
case 6: case 6:
{ {
@ -1964,6 +1964,7 @@ void SCR_SetLoadingFile(char *str)
if (scr_loadingrefresh.ival) if (scr_loadingrefresh.ival)
{ {
r_refdef.warndraw = false;
SCR_UpdateScreen(); SCR_UpdateScreen();
} }
} }
@ -2213,6 +2214,7 @@ void SCR_BeginLoadingPlaque (void)
if (!scr_disabled_for_loading) if (!scr_disabled_for_loading)
{ {
Sbar_Changed (); Sbar_Changed ();
r_refdef.warndraw = false;
scr_drawloading = true; scr_drawloading = true;
SCR_UpdateScreen (); SCR_UpdateScreen ();
scr_drawloading = false; scr_drawloading = false;
@ -2266,8 +2268,10 @@ void SCR_ImageName (const char *mapname)
scr_drawloading = true; scr_drawloading = true;
if (qrenderer != QR_NONE) if (qrenderer != QR_NONE)
{ {
r_refdef.warndraw = false;
Sbar_Changed (); Sbar_Changed ();
SCR_UpdateScreen (); SCR_UpdateScreen ();
r_refdef.warndraw = true;
} }
scr_disabled_time = Sys_DoubleTime(); //realtime tends to change... Hmmm.... scr_disabled_time = Sys_DoubleTime(); //realtime tends to change... Hmmm....

View file

@ -3337,41 +3337,3 @@ char *Con_CopyConsole(console_t *con, qboolean nomarkup, qboolean onlyiflink, qb
return result; return result;
} }
/*
==================
Con_NotifyBox
==================
*/
void Con_NotifyBox (char *text)
{
double t1, t2;
qboolean hadconsole;
// during startup for sound / cd warnings
Con_Printf("\n\n^Ue01d^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01f\n");
Con_Printf ("%s", text);
Con_Printf ("Press a key.\n");
Con_Printf("^Ue01d^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01f\n");
key_count = -2; // wait for a key down and up
hadconsole = !!Key_Dest_Has(kdm_console);
Key_Dest_Add(kdm_console);
do
{
t1 = Sys_DoubleTime ();
SCR_UpdateScreen ();
Sys_SendKeyEvents ();
t2 = Sys_DoubleTime ();
realtime += t2-t1; // make the cursor blink
} while (key_count < 0);
Con_Printf ("\n");
if (!hadconsole)
Key_Dest_Remove(kdm_console);
}

View file

@ -146,6 +146,7 @@ typedef struct package_s {
char *description; char *description;
char *license; char *license;
char *author; char *author;
char *website;
char *previewimage; char *previewimage;
enum enum
{ {
@ -253,6 +254,7 @@ static void PM_FreePackage(package_t *p)
Z_Free(p->title); Z_Free(p->title);
Z_Free(p->description); Z_Free(p->description);
Z_Free(p->author); Z_Free(p->author);
Z_Free(p->website);
Z_Free(p->license); Z_Free(p->license);
Z_Free(p->previewimage); Z_Free(p->previewimage);
Z_Free(p->qhash); Z_Free(p->qhash);
@ -747,6 +749,7 @@ static void PM_ParsePackageList(vfsfile_t *f, int parseflags, const char *url, c
char *license = NULL; char *license = NULL;
char *author = NULL; char *author = NULL;
char *previewimage = NULL; char *previewimage = NULL;
char *website = NULL;
int extract = EXTRACT_COPY; int extract = EXTRACT_COPY;
int priority = PM_DEFAULTPRIORITY; int priority = PM_DEFAULTPRIORITY;
unsigned int flags = parseflags; unsigned int flags = parseflags;
@ -786,6 +789,8 @@ static void PM_ParsePackageList(vfsfile_t *f, int parseflags, const char *url, c
author = arg+7; author = arg+7;
else if (!strncmp(arg, "preview=", 8)) else if (!strncmp(arg, "preview=", 8))
previewimage = arg+8; previewimage = arg+8;
else if (!strncmp(arg, "website=", 8))
website = arg+8;
else if (!strncmp(arg, "file=", 5)) else if (!strncmp(arg, "file=", 5))
{ {
if (!file) if (!file)
@ -879,6 +884,7 @@ static void PM_ParsePackageList(vfsfile_t *f, int parseflags, const char *url, c
p->license = license?Z_StrDup(license):NULL; p->license = license?Z_StrDup(license):NULL;
p->author = author?Z_StrDup(author):NULL; p->author = author?Z_StrDup(author):NULL;
p->previewimage = previewimage?Z_StrDup(previewimage):NULL; p->previewimage = previewimage?Z_StrDup(previewimage):NULL;
p->website = website?Z_StrDup(website):NULL;
if (url && (!strncmp(url, "http://", 7) || !strncmp(url, "https://", 8))) if (url && (!strncmp(url, "http://", 7) || !strncmp(url, "https://", 8)))
p->mirror[0] = Z_StrDup(url); p->mirror[0] = Z_StrDup(url);
@ -1476,7 +1482,7 @@ static unsigned int PM_MarkUpdates (void)
{ {
if (p == o || (o->flags & DPF_HIDDEN)) if (p == o || (o->flags & DPF_HIDDEN))
continue; continue;
if (!(p->flags & DPF_TESTING) || pm_autoupdate.ival >= UPD_TESTING) if (!(o->flags & DPF_TESTING) || pm_autoupdate.ival >= UPD_TESTING)
if (!strcmp(o->name, p->name) && !strcmp(o->arch?o->arch:"", p->arch?p->arch:"") && strcmp(o->version, p->version) > 0) if (!strcmp(o->name, p->name) && !strcmp(o->arch?o->arch:"", p->arch?p->arch:"") && strcmp(o->version, p->version) > 0)
{ {
if (!b || strcmp(b->version, o->version) < 0) if (!b || strcmp(b->version, o->version) < 0)
@ -1841,21 +1847,26 @@ static void PM_WriteInstalledPackages(void)
COM_QuotedConcat(va("arch=%s", p->arch), buf, sizeof(buf)); COM_QuotedConcat(va("arch=%s", p->arch), buf, sizeof(buf));
} }
if (p->description)
{
Q_strncatz(buf, " ", sizeof(buf));
COM_QuotedConcat(va("desc=%s", p->description), buf, sizeof(buf));
}
if (p->license) if (p->license)
{ {
Q_strncatz(buf, " ", sizeof(buf)); Q_strncatz(buf, " ", sizeof(buf));
COM_QuotedConcat(va("license=%s", p->license), buf, sizeof(buf)); COM_QuotedConcat(va("license=%s", p->license), buf, sizeof(buf));
} }
if (p->website)
{
Q_strncatz(buf, " ", sizeof(buf));
COM_QuotedConcat(va("website=%s", p->website), buf, sizeof(buf));
}
if (p->author) if (p->author)
{ {
Q_strncatz(buf, " ", sizeof(buf)); Q_strncatz(buf, " ", sizeof(buf));
COM_QuotedConcat(va("author=%s", p->author), buf, sizeof(buf)); COM_QuotedConcat(va("author=%s", p->author), buf, sizeof(buf));
} }
if (p->description)
{
Q_strncatz(buf, " ", sizeof(buf));
COM_QuotedConcat(va("desc=%s", p->description), buf, sizeof(buf));
}
if (p->previewimage) if (p->previewimage)
{ {
Q_strncatz(buf, " ", sizeof(buf)); Q_strncatz(buf, " ", sizeof(buf));
@ -2740,8 +2751,10 @@ void PM_Command_f(void)
Con_Printf(" license: %s\n", p->license); Con_Printf(" license: %s\n", p->license);
if (p->author) if (p->author)
Con_Printf(" author: %s\n", p->author); Con_Printf(" author: %s\n", p->author);
if (p->website)
Con_Printf(" website: %s\n", p->website);
if (p->description) if (p->description)
Con_Printf(" %s\n", p->description); Con_Printf("%s\n", p->description);
if (p->flags & DPF_MARKED) if (p->flags & DPF_MARKED)
{ {
@ -3101,12 +3114,16 @@ static void MD_Draw (int x, int y, struct menucustom_s *c, struct menu_s *m)
static qboolean MD_Key (struct menucustom_s *c, struct menu_s *m, int key, unsigned int unicode) static qboolean MD_Key (struct menucustom_s *c, struct menu_s *m, int key, unsigned int unicode)
{ {
extern qboolean keydown[];
qboolean ctrl = keydown[K_LCTRL] || keydown[K_RCTRL];
package_t *p, *p2; package_t *p, *p2;
struct packagedep_s *dep, *dep2; struct packagedep_s *dep, *dep2;
if (c->dint != downloadablessequence) if (c->dint != downloadablessequence)
return false; //probably stale return false; //probably stale
p = c->dptr; p = c->dptr;
if (key == K_ENTER || key == K_KP_ENTER || key == K_GP_START || key == K_MOUSE1) if (key == 'c' && ctrl)
Sys_SaveClipboard(CBT_CLIPBOARD, p->website);
else if (key == K_ENTER || key == K_KP_ENTER || key == K_GP_START || key == K_MOUSE1)
{ {
if (p->alternative && (p->flags & DPF_HIDDEN)) if (p->alternative && (p->flags & DPF_HIDDEN))
p = p->alternative; p = p->alternative;
@ -3296,12 +3313,16 @@ static int MD_AddItemsToDownloadMenu(menu_t *m, int y, const char *pathprefix)
slash = strchr(p->category+prefixlen, '/'); slash = strchr(p->category+prefixlen, '/');
if (!slash) if (!slash)
{ {
c = MC_AddCustom(m, 0, y, p, downloadablessequence); char *desc;
if (p->author || p->license || p->website)
desc = va("^aauthor: ^a%s\n^alicense: ^a%s\n^awebsite: ^a%s\n%s", p->author?p->author:"^hUnknown^h", p->license?p->license:"^hUnknown^h", p->website?p->website:"^hUnknown^h", p->description);
else
desc = p->description;
c = MC_AddCustom(m, 0, y, p, downloadablessequence, desc);
c->draw = MD_Draw; c->draw = MD_Draw;
c->key = MD_Key; c->key = MD_Key;
c->common.width = 320; c->common.width = 320;
c->common.height = 8; c->common.height = 8;
c->common.tooltip = p->description;
y += 8; y += 8;
if (!m->selecteditem) if (!m->selecteditem)
@ -3467,7 +3488,7 @@ static void MD_Download_UpdateStatus(struct menu_s *m)
b->common.tooltip = "Reset selection to only those packages that are currently installed."; b->common.tooltip = "Reset selection to only those packages that are currently installed.";
y+=8; y+=8;
#ifdef WEBCLIENT #ifdef WEBCLIENT
c = MC_AddCustom(m, 48, y, p, 0); c = MC_AddCustom(m, 48, y, p, 0, NULL);
c->draw = MD_AutoUpdate_Draw; c->draw = MD_AutoUpdate_Draw;
c->key = MD_AutoUpdate_Key; c->key = MD_AutoUpdate_Key;
c->common.width = 320; c->common.width = 320;

View file

@ -333,6 +333,7 @@ static qboolean M_MouseMoved(menu_t *menu)
{ {
int ypos = menu->ypos, framescroll = 0; int ypos = menu->ypos, framescroll = 0;
menuoption_t *option; menuoption_t *option;
qboolean havemouseitem = false;
// if (menu->prev && !menu->exclusive) // if (menu->prev && !menu->exclusive)
// if (M_MouseMoved(menu->prev)) // if (M_MouseMoved(menu->prev))
// return true; // return true;
@ -351,22 +352,11 @@ static qboolean M_MouseMoved(menu_t *menu)
{ {
if (menu->mouseitem != option) if (menu->mouseitem != option)
{ {
/* if (!option->common.noselectionsound && vid.activeapp)
{
#ifdef HEXEN2
if (M_GameType() == MGT_HEXEN2)
S_LocalSound ("raven/menu1.wav");
else
#endif
S_LocalSound ("misc/menu1.wav");
}
*/
menu->mouseitem = option; menu->mouseitem = option;
menu->tooltiptime = realtime + 1; menu->tooltiptime = realtime + 1;
MenuTooltipChange(menu, menu->mouseitem->common.tooltip); MenuTooltipChange(menu, menu->mouseitem->common.tooltip);
} }
// if (menu->cursoritem) havemouseitem = true;
// menu->cursoritem->common.posy = menu->selecteditem->common.posy;
} }
} }
} }
@ -395,6 +385,11 @@ static qboolean M_MouseMoved(menu_t *menu)
break; break;
} }
} }
if (!havemouseitem && menu->mouseitem)
{
menu->mouseitem = NULL;
MenuTooltipChange(menu, NULL);
}
return true; return true;
} }
@ -781,10 +776,10 @@ static void MenuDraw(menu_t *menu)
// draw tooltip // draw tooltip
if (menu->mouseitem && menu->tooltip && realtime > menu->tooltiptime) if (menu->mouseitem && menu->tooltip && realtime > menu->tooltiptime)
{ {
menuoption_t *option = menu->mouseitem; // menuoption_t *option = menu->mouseitem;
if (omousex > menu->xpos+option->common.posx && omousex < menu->xpos+option->common.posx+option->common.width) // if (omousex > menu->xpos+option->common.posx && omousex < menu->xpos+option->common.posx+option->common.width)
if (omousey > menu->ypos+option->common.posy && omousey < menu->ypos+option->common.posy+option->common.height) // if (omousey > menu->ypos+option->common.posy && omousey < menu->ypos+option->common.posy+option->common.height)
{ {
int x = omousex+8; int x = omousex+8;
int y = omousey; int y = omousey;
@ -1159,15 +1154,16 @@ menubox_t *MC_AddBox(menu_t *menu, int x, int y, int width, int height)
return n; return n;
} }
menucustom_t *MC_AddCustom(menu_t *menu, int x, int y, void *dptr, int dint) menucustom_t *MC_AddCustom(menu_t *menu, int x, int y, void *dptr, int dint, const char *tooltip)
{ {
menucustom_t *n = Z_Malloc(sizeof(menucustom_t)); menucustom_t *n = Z_Malloc(sizeof(menucustom_t) + (tooltip?strlen(tooltip)+1:0));
n->common.type = mt_custom; n->common.type = mt_custom;
n->common.iszone = true; n->common.iszone = true;
n->common.posx = x; n->common.posx = x;
n->common.posy = y; n->common.posy = y;
n->dptr = dptr; n->dptr = dptr;
n->dint = dint; n->dint = dint;
n->common.tooltip = tooltip?strcpy((char*)(n+1), tooltip):NULL;
n->common.next = menu->options; n->common.next = menu->options;
menu->options = (menuoption_t *)n; menu->options = (menuoption_t *)n;

View file

@ -1149,7 +1149,7 @@ void M_Menu_ServerList2_f(void)
info = (serverlist_t*)(menu + 1); info = (serverlist_t*)(menu + 1);
y = 16; y = 16;
cust = MC_AddCustom(menu, 0, y, NULL, 0); cust = MC_AddCustom(menu, 0, y, NULL, 0, NULL);
cust->draw = SL_TitlesDraw; cust->draw = SL_TitlesDraw;
cust->key = SL_TitlesKey; cust->key = SL_TitlesKey;
cust->common.height = 8; cust->common.height = 8;
@ -1159,7 +1159,7 @@ void M_Menu_ServerList2_f(void)
info->servers_top = y; info->servers_top = y;
info->visibleslots = (vid.height-info->servers_top - 64); info->visibleslots = (vid.height-info->servers_top - 64);
cust = MC_AddCustom(menu, vid.width-8, 16, NULL, 0); cust = MC_AddCustom(menu, vid.width-8, 16, NULL, 0, NULL);
cust->draw = SL_SliderDraw; cust->draw = SL_SliderDraw;
cust->key = SL_SliderKey; cust->key = SL_SliderKey;
cust->common.height = info->visibleslots; cust->common.height = info->visibleslots;
@ -1168,7 +1168,7 @@ void M_Menu_ServerList2_f(void)
info->visibleslots = (info->visibleslots-8)/8; info->visibleslots = (info->visibleslots-8)/8;
for (i = 0, y = info->servers_top; i <= info->visibleslots; y +=8, i++) for (i = 0, y = info->servers_top; i <= info->visibleslots; y +=8, i++)
{ {
cust = MC_AddCustom(menu, 0, y, NULL, i); cust = MC_AddCustom(menu, 0, y, NULL, i, NULL);
if (i==0) if (i==0)
menu->selecteditem = (menuoption_t*)&cust->common; menu->selecteditem = (menuoption_t*)&cust->common;
cust->draw = SL_ServerDraw; cust->draw = SL_ServerDraw;
@ -1184,7 +1184,7 @@ void M_Menu_ServerList2_f(void)
{ {
for (y = vid.height-64+8; y < vid.height; y += 8, i++) for (y = vid.height-64+8; y < vid.height; y += 8, i++)
{ {
cust = MC_AddCustom(menu, x+16, y, NULL, i); cust = MC_AddCustom(menu, x+16, y, NULL, i, NULL);
cust->draw = SL_ServerPlayer; cust->draw = SL_ServerPlayer;
cust->key = NULL; cust->key = NULL;
cust->common.height = 8; cust->common.height = 8;
@ -1354,7 +1354,7 @@ void M_QuickConnect_f(void)
menu->key = M_QuickConnect_Key; menu->key = M_QuickConnect_Key;
menu->remove = M_QuickConnect_Remove; menu->remove = M_QuickConnect_Remove;
cust = MC_AddCustom(menu, 64, 64, NULL, 0); cust = MC_AddCustom(menu, 64, 64, NULL, 0, NULL);
cust->draw = M_QuickConnect_DrawStatus; cust->draw = M_QuickConnect_DrawStatus;
cust->common.height = 8; cust->common.height = 8;
cust->common.width = vid.width-8; cust->common.width = vid.width-8;

View file

@ -461,7 +461,7 @@ void M_Menu_Setup_f (void)
(info->nameedit = MC_AddEdit(menu, 64, 160, 40, "Your name", name.string)); (info->nameedit = MC_AddEdit(menu, 64, 160, 40, "Your name", name.string));
(info->modeledit = MC_AddCvarCombo(menu, 64, 160,72, "model", &skin, (const char **)modeloptions, (const char **)modeloptions)); (info->modeledit = MC_AddCvarCombo(menu, 64, 160,72, "model", &skin, (const char **)modeloptions, (const char **)modeloptions));
info->modeledit->selectedoption = !strncmp(skin.string, "female", 6); info->modeledit->selectedoption = !strncmp(skin.string, "female", 6);
cu = MC_AddCustom(menu, 64, 88+16, NULL, 0); cu = MC_AddCustom(menu, 64, 88+16, NULL, 0, NULL);
cu->draw = MSetupQ2_TransDraw; cu->draw = MSetupQ2_TransDraw;
cu->key = MSetupQ2_ChangeSkin; cu->key = MSetupQ2_ChangeSkin;
@ -505,7 +505,7 @@ void M_Menu_Setup_f (void)
(info->skinedit = MC_AddEdit(menu, 64, 160, 72, "Your skin", skin.string)); (info->skinedit = MC_AddEdit(menu, 64, 160, 72, "Your skin", skin.string));
} }
ci = MC_AddCustom(menu, 172+32, 88, NULL, 0); ci = MC_AddCustom(menu, 172+32, 88, NULL, 0, NULL);
ci->draw = MSetup_TransDraw; ci->draw = MSetup_TransDraw;
ci->key = NULL; ci->key = NULL;

View file

@ -3755,7 +3755,7 @@ void M_Menu_ModelViewer_f(void)
menu = M_CreateMenu(sizeof(*mv)); menu = M_CreateMenu(sizeof(*mv));
mv = menu->data; mv = menu->data;
c = MC_AddCustom(menu, 64, 32, mv, 0); c = MC_AddCustom(menu, 64, 32, mv, 0, NULL);
menu->cursoritem = (menuoption_t*)c; menu->cursoritem = (menuoption_t*)c;
c->draw = M_ModelViewerDraw; c->draw = M_ModelViewerDraw;
c->key = M_ModelViewerKey; c->key = M_ModelViewerKey;
@ -3990,7 +3990,7 @@ void M_Menu_Mods_f (void)
MC_AddCenterPicture(menu, 0, 24, "gfx/p_option.lmp"); MC_AddCenterPicture(menu, 0, 24, "gfx/p_option.lmp");
} }
c = MC_AddCustom(menu, 64, 32, menu->data, 0); c = MC_AddCustom(menu, 64, 32, menu->data, 0, NULL);
menu->cursoritem = (menuoption_t*)c; menu->cursoritem = (menuoption_t*)c;
c->draw = Mods_Draw; c->draw = Mods_Draw;
c->key = Mods_Key; c->key = Mods_Key;

View file

@ -267,7 +267,7 @@ void M_Menu_Save_f (void)
menu->selecteditem = op; menu->selecteditem = op;
} }
MC_AddCustom(menu, 192, 60-16, NULL, 0)->draw = M_Menu_LoadSave_Preview_Draw; MC_AddCustom(menu, 192, 60-16, NULL, 0, NULL)->draw = M_Menu_LoadSave_Preview_Draw;
} }
void M_Menu_Load_f (void) void M_Menu_Load_f (void)
{ {
@ -314,7 +314,7 @@ void M_Menu_Load_f (void)
if (menu->selecteditem) if (menu->selecteditem)
menu->cursoritem = (menuoption_t *)MC_AddRedText(menu, 8, 0, menu->selecteditem->common.posy, NULL, false); menu->cursoritem = (menuoption_t *)MC_AddRedText(menu, 8, 0, menu->selecteditem->common.posy, NULL, false);
MC_AddCustom(menu, 192, 60-16, NULL, 0)->draw = M_Menu_LoadSave_Preview_Draw; MC_AddCustom(menu, 192, 60-16, NULL, 0, NULL)->draw = M_Menu_LoadSave_Preview_Draw;
} }
@ -1108,7 +1108,7 @@ void M_Menu_Demos_f (void)
MC_AddWhiteText(menu, 24, 170, 8, "Choose a Demo", false); MC_AddWhiteText(menu, 24, 170, 8, "Choose a Demo", false);
MC_AddWhiteText(menu, 16, 170, 24, "^Ue01d^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01f", false); MC_AddWhiteText(menu, 16, 170, 24, "^Ue01d^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01f", false);
info->list = MC_AddCustom(menu, 0, 32, NULL, 0); info->list = MC_AddCustom(menu, 0, 32, NULL, 0, NULL);
info->list->draw = M_DemoDraw; info->list->draw = M_DemoDraw;
info->list->key = M_DemoKey; info->list->key = M_DemoKey;
@ -1172,7 +1172,7 @@ void M_Menu_MediaFiles_f (void)
MC_AddWhiteText(menu, 24, 170, 8, "Media List", false); MC_AddWhiteText(menu, 24, 170, 8, "Media List", false);
MC_AddWhiteText(menu, 16, 170, 24, "^Ue01d^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01f", false); MC_AddWhiteText(menu, 16, 170, 24, "^Ue01d^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01e^Ue01f", false);
info->list = MC_AddCustom(menu, 0, 32, NULL, 0); info->list = MC_AddCustom(menu, 0, 32, NULL, 0, NULL);
info->list->draw = M_DemoDraw; info->list->draw = M_DemoDraw;
info->list->key = M_DemoKey; info->list->key = M_DemoKey;

View file

@ -1498,7 +1498,7 @@ void M_Keydown (int key, int unicode)
{ {
if (key == K_MOUSE1) //mouse clicks are deferred until the release event. this is for touch screens and aiming. if (key == K_MOUSE1) //mouse clicks are deferred until the release event. this is for touch screens and aiming.
{ {
if (topmenu->mouseitem->common.type == mt_frameend) if (topmenu->mouseitem && topmenu->mouseitem->common.type == mt_frameend)
topmenu->mouseitem->frame.mousedown = true; topmenu->mouseitem->frame.mousedown = true;
else else
menu_mousedown = true; menu_mousedown = true;

View file

@ -334,7 +334,7 @@ menucombo_t *MC_AddCombo(menu_t *menu, int tx, int cx, int y, const char *captio
menucombo_t *MC_AddCvarCombo(menu_t *menu, int tx, int cx, int y, const char *caption, cvar_t *cvar, const char **ops, const char **values); menucombo_t *MC_AddCvarCombo(menu_t *menu, int tx, int cx, int y, const char *caption, cvar_t *cvar, const char **ops, const char **values);
menuedit_t *MC_AddEdit(menu_t *menu, int cx, int ex, int y, char *text, char *def); menuedit_t *MC_AddEdit(menu_t *menu, int cx, int ex, int y, char *text, char *def);
menuedit_t *MC_AddEditCvar(menu_t *menu, int cx, int ex, int y, char *text, char *name, qboolean slim); menuedit_t *MC_AddEditCvar(menu_t *menu, int cx, int ex, int y, char *text, char *name, qboolean slim);
menucustom_t *MC_AddCustom(menu_t *menu, int x, int y, void *dptr, int dint); menucustom_t *MC_AddCustom(menu_t *menu, int x, int y, void *dptr, int dint, const char *tooltip);
menuframe_t *MC_AddFrameStart(menu_t *menu, int y); //call before items are added menuframe_t *MC_AddFrameStart(menu_t *menu, int y); //call before items are added
menuframe_t *MC_AddFrameEnd(menu_t *menu, int y); //and call AFTER that stuff with the same y. menuframe_t *MC_AddFrameEnd(menu_t *menu, int y); //and call AFTER that stuff with the same y.

View file

@ -3865,7 +3865,7 @@ static const char *PF_cs_getplayerkey_internal (unsigned int pnum, const char *k
else if (csqc_isdarkplaces && !strcmp(keyname, "colors")) //checks to see if a player has locally been set to ignored (for text chat) else if (csqc_isdarkplaces && !strcmp(keyname, "colors")) //checks to see if a player has locally been set to ignored (for text chat)
{ {
ret = buffer; ret = buffer;
sprintf(ret, "%i", cl.players[pnum].ttopcolor + cl.players[pnum].tbottomcolor*16); sprintf(ret, "%i", cl.players[pnum].dtopcolor + cl.players[pnum].dbottomcolor*16);
} }
#endif #endif
else if (!strcmp(keyname, "ignored")) //checks to see if a player has locally been set to ignored (for text chat) else if (!strcmp(keyname, "ignored")) //checks to see if a player has locally been set to ignored (for text chat)
@ -4163,7 +4163,7 @@ static void QCBUILTIN PF_cs_sound(pubprogfuncs_t *prinst, struct globalvars_s *p
if (sfx) if (sfx)
S_StartSound(-entity->entnum, channel, sfx, org, entity->v->velocity, volume, attenuation, startoffset, pitchpct, flags); S_StartSound(-entity->entnum, channel, sfx, org, entity->v->velocity, volume, attenuation, startoffset, pitchpct, flags);
}; }
static void QCBUILTIN PF_cs_pointsound(pubprogfuncs_t *prinst, struct globalvars_s *pr_globals) static void QCBUILTIN PF_cs_pointsound(pubprogfuncs_t *prinst, struct globalvars_s *pr_globals)
{ {

View file

@ -29,4 +29,6 @@ extern char *particle_set_q2part;
extern char *particle_set_tsshaft; extern char *particle_set_tsshaft;
#define R_PARTSET_BUILTINS_tsshaft {"tsshaft", &particle_set_tsshaft}, #define R_PARTSET_BUILTINS_tsshaft {"tsshaft", &particle_set_tsshaft},
#define R_PARTSET_BUILTINS R_PARTSET_BUILTINS_spikeset R_PARTSET_BUILTINS_faithful R_PARTSET_BUILTINS_highfps R_PARTSET_BUILTINS_high R_PARTSET_BUILTINS_minimal R_PARTSET_BUILTINS_h2part R_PARTSET_BUILTINS_q2part R_PARTSET_BUILTINS_tsshaft #define R_PARTSET_BUILTINS R_PARTSET_BUILTINS_spikeset R_PARTSET_BUILTINS_faithful R_PARTSET_BUILTINS_highfps R_PARTSET_BUILTINS_high R_PARTSET_BUILTINS_minimal R_PARTSET_BUILTINS_h2part R_PARTSET_BUILTINS_q2part R_PARTSET_BUILTINS_tsshaft
#else
#define R_PARTSET_BUILTINS
#endif #endif

View file

@ -323,4 +323,4 @@ fte_inline float M_LinearToSRGB(float x, float mag)
void R_NetgraphInit(void); void R_NetgraphInit(void);
void R_NetGraph (void); void R_NetGraph (void);
void R_FrameTimeGraph (int frametime); void R_FrameTimeGraph (float frametime);

View file

@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "shader.h" #include "shader.h"
void Draw_ExpandedString(struct font_s *font, float x, float y, conchar_t *str); void Draw_ExpandedString(struct font_s *font, float x, float y, conchar_t *str);
static int timehistory[NET_TIMINGS]; static float timehistory[NET_TIMINGS];
static int findex; static int findex;
#define NET_GRAPHHEIGHT 32 #define NET_GRAPHHEIGHT 32
@ -201,7 +201,7 @@ void R_NetGraph (void)
#endif #endif
} }
void R_FrameTimeGraph (int frametime) void R_FrameTimeGraph (float frametime)
{ {
int a, x, i, y; int a, x, i, y;

View file

@ -143,7 +143,7 @@ const char *temp_type (int temp, dstatement_t *start, dfunction_t *df)
} }
boolean IsConstant(QCC_ddef_t *def) pbool IsConstant(QCC_ddef_t *def)
{ {
int i; int i;
@ -964,7 +964,7 @@ char *DecompileReturnType(dfunction_t *df)
{ {
dstatement_t *ds; dstatement_t *ds;
unsigned short dom; unsigned short dom;
boolean foundret = false; pbool foundret = false;
static int recursion; static int recursion;
char *ret = NULL; //return null if we don't know. char *ret = NULL; //return null if we don't know.
int couldbeastring = true; int couldbeastring = true;
@ -2297,7 +2297,7 @@ void DecompileDecompileStatement(dfunction_t * df, dstatement_t * s, int *indent
return; return;
} }
boolean DecompileDecompileFunction(dfunction_t * df, dstatement_t *altdone) pbool DecompileDecompileFunction(dfunction_t * df, dstatement_t *altdone)
{ {
dstatement_t *ds; dstatement_t *ds;
int indent; int indent;
@ -3034,11 +3034,11 @@ void DecompileFunction(const char *name, int *lastglobal)
QCC_CatVFile(Decompileofile, "};\n"); QCC_CatVFile(Decompileofile, "};\n");
} }
extern boolean safedecomp; extern pbool safedecomp;
int fake_name; int fake_name;
char synth_name[1024]; // fake name part2 char synth_name[1024]; // fake name part2
boolean TrySynthName(const char *first) pbool TrySynthName(const char *first)
{ {
int i; int i;
@ -3060,7 +3060,7 @@ void DecompileDecompileFunctions(const char *origcopyright)
int i; int i;
unsigned int o; unsigned int o;
dfunction_t *d; dfunction_t *d;
boolean bogusname; pbool bogusname;
vfile_t *f; vfile_t *f;
char fname[512]; char fname[512];
int lastglob = 1; int lastglob = 1;

View file

@ -1,6 +1,9 @@
#include "qcc.h" #include "qcc.h"
#if !defined(MINIMAL) && !defined(OMIT_QCC) #if !defined(MINIMAL) && !defined(OMIT_QCC)
#include <time.h> #include <time.h>
#ifndef _WIN32
#include <unistd.h>
#endif
void QCC_Canonicalize(char *fullname, size_t fullnamesize, const char *newfile, const char *base); void QCC_Canonicalize(char *fullname, size_t fullnamesize, const char *newfile, const char *base);
//package formats: //package formats:
@ -66,8 +69,8 @@ struct pkgctx_s
pbool test; pbool test;
pbool readoldpacks; pbool readoldpacks;
char gamepath[MAX_PATH]; char gamepath[MAX_OSPATH];
char sourcepath[MAX_PATH]; char sourcepath[MAX_OSPATH];
time_t buildtime; time_t buildtime;
//skips the file if its listed in one of these packages, unless the modification time on disk is newer. //skips the file if its listed in one of these packages, unless the modification time on disk is newer.
@ -341,7 +344,7 @@ static void PKG_ReplaceString(char *str, char *find, char *newpart)
} }
static void PKG_CreateOutput(struct pkgctx_s *ctx, struct dataset_s *s, const char *code, const char *filename, pbool diff) static void PKG_CreateOutput(struct pkgctx_s *ctx, struct dataset_s *s, const char *code, const char *filename, pbool diff)
{ {
char path[MAX_PATH]; char path[MAX_OSPATH];
char date[64]; char date[64];
struct output_s *o; struct output_s *o;
for (o = s->outputs; o; o = o->next) for (o = s->outputs; o; o = o->next)
@ -437,8 +440,8 @@ static void PKG_AddOldPack(struct pkgctx_s *ctx, const char *fname)
} }
static void PKG_ParseOldPack(struct pkgctx_s *ctx) static void PKG_ParseOldPack(struct pkgctx_s *ctx)
{ {
char token[MAX_PATH]; char token[MAX_OSPATH];
char oldpack[MAX_PATH]; char oldpack[MAX_OSPATH];
if (!PKG_GetStringToken(ctx, token, sizeof(token))) if (!PKG_GetStringToken(ctx, token, sizeof(token)))
return; return;
@ -958,11 +961,11 @@ static void *PKG_OpenSourceFile(struct pkgctx_s *ctx, struct file_s *file, size_
while(fgets(commandline, sizeof(commandline), p)) while(fgets(commandline, sizeof(commandline), p))
ctx->messagecallback(ctx->userctx, "%s", commandline); ctx->messagecallback(ctx->userctx, "%s", commandline);
if (feof(p)) if (feof(p))
ctx->messagecallback(ctx->userctx, "Process returned %d\n", _pclose( p )); ctx->messagecallback(ctx->userctx, "Process returned %d\n", pclose( p ));
else else
{ {
printf( "Error: Failed to read the pipe to the end.\n"); fprintf(stderr, "Error: Failed to read the pipe to the end.\n");
_pclose(p); pclose(p);
} }
} }
#endif #endif
@ -982,7 +985,11 @@ static void *PKG_OpenSourceFile(struct pkgctx_s *ctx, struct file_s *file, size_
fclose(f); fclose(f);
*fsize = size; *fsize = size;
#ifdef _WIN32
_unlink(tempname); _unlink(tempname);
#else
unlink(tempname);
#endif
return data; return data;
} }
} }
@ -1042,7 +1049,7 @@ static void PKG_WritePackageData(struct pkgctx_s *ctx, struct output_s *out, uns
if (out->usediffs && !directoryonly) if (out->usediffs && !directoryonly)
{ {
char newname[MAX_PATH]; char newname[MAX_OSPATH];
memcpy(newname, out->filename, sizeof(newname)); memcpy(newname, out->filename, sizeof(newname));
if (ext) if (ext)
{ {
@ -1583,7 +1590,7 @@ void Packager_ParseText(struct pkgctx_s *ctx, char *scripttext)
PKG_ParseOutput(ctx, true); PKG_ParseOutput(ctx, true);
else if (!strcmp(cmd, "inputdir")) else if (!strcmp(cmd, "inputdir"))
{ {
char old[MAX_PATH]; char old[MAX_OSPATH];
memcpy(old, ctx->sourcepath, sizeof(old)); memcpy(old, ctx->sourcepath, sizeof(old));
if (PKG_GetStringToken(ctx, cmd, sizeof(cmd))) if (PKG_GetStringToken(ctx, cmd, sizeof(cmd)))
{ {

View file

@ -17,6 +17,13 @@
//this is for testing //this is for testing
#define WRITEASM #define WRITEASM
#ifndef MAX_QPATH
#define MAX_QPATH 128
#endif
#ifndef MAX_OSPATH
#define MAX_OSPATH 1024
#endif
#ifdef __MINGW32_VERSION #ifdef __MINGW32_VERSION
#define MINGW #define MINGW
#endif #endif

View file

@ -1,6 +1,12 @@
#include "qcc.h" #include "qcc.h"
#include "gui.h" #include "gui.h"
#ifdef _WIN32
#define alloca _alloca
#else
#include <unistd.h>
#endif
//common gui things //common gui things
pbool fl_nondfltopts; pbool fl_nondfltopts;
@ -15,8 +21,8 @@ int fl_tabsize;
char parameters[16384]; char parameters[16384];
char progssrcname[256]; char progssrcname[256];
char progssrcdir[256]; char progssrcdir[256];
char enginebinary[MAX_PATH]; char enginebinary[MAX_OSPATH];
char enginebasedir[MAX_PATH]; char enginebasedir[MAX_OSPATH];
char enginecommandline[8192]; char enginecommandline[8192];
int qccpersisthunk = 1; int qccpersisthunk = 1;
@ -462,7 +468,7 @@ int GUI_ParseCommandLine(char *args, pbool keepsrcanddir)
fseek(f, 0, SEEK_END); fseek(f, 0, SEEK_END);
len = ftell(f); len = ftell(f);
fseek(f, 0, SEEK_SET); fseek(f, 0, SEEK_SET);
args = _alloca(len+1); args = alloca(len+1);
fread(args, 1, len, f); fread(args, 1, len, f);
args[len] = '\0'; args[len] = '\0';
fclose(f); fclose(f);
@ -515,7 +521,11 @@ int GUI_ParseCommandLine(char *args, pbool keepsrcanddir)
args++; args++;
memmove(progssrcname, args, strlen(args)+1); memmove(progssrcname, args, strlen(args)+1);
#ifdef _WIN32
SetCurrentDirectoryA(progssrcdir); SetCurrentDirectoryA(progssrcdir);
#else
chdir(progssrcdir);
#endif
*progssrcdir = 0; *progssrcdir = 0;
} }
} }

View file

@ -919,9 +919,13 @@ void PR_LoadGlabalStruct(qboolean muted)
globalint (true, trace_ent); globalint (true, trace_ent);
globalfloat (false, trace_inopen); globalfloat (false, trace_inopen);
globalfloat (false, trace_inwater); globalfloat (false, trace_inwater);
#ifndef NOLEGACY
globalfloat (false, trace_endcontentsf); globalfloat (false, trace_endcontentsf);
#endif
globalint (false, trace_endcontentsi); globalint (false, trace_endcontentsi);
#ifndef NOLEGACY
globalfloat (false, trace_surfaceflagsf); globalfloat (false, trace_surfaceflagsf);
#endif
globalint (false, trace_surfaceflagsi); globalint (false, trace_surfaceflagsi);
globalstring (false, trace_surfacename); globalstring (false, trace_surfacename);
globalint (false, trace_brush_id); globalint (false, trace_brush_id);
@ -972,6 +976,12 @@ void PR_LoadGlabalStruct(qboolean muted)
#define ensureglobal(name,var) if (!(pr_globals)->name) (pr_globals)->name = &var; #define ensureglobal(name,var) if (!(pr_globals)->name) (pr_globals)->name = &var;
#ifdef NOLEGACY
if (!(pr_globals)->trace_surfaceflagsi)
(pr_globals)->trace_surfaceflagsi = (int*)PR_FindGlobal(svprogfuncs, "trace_surfaceflags", 0, NULL);
if (!(pr_globals)->trace_surfaceflagsi)
(pr_globals)->trace_endcontentsi = (int*)PR_FindGlobal(svprogfuncs, "trace_endcontents", 0, NULL);
#else
if (!(pr_globals)->trace_surfaceflagsf && !(pr_globals)->trace_surfaceflagsi) if (!(pr_globals)->trace_surfaceflagsf && !(pr_globals)->trace_surfaceflagsi)
{ {
etype_t etype; etype_t etype;
@ -990,13 +1000,14 @@ void PR_LoadGlabalStruct(qboolean muted)
else if (etype == ev_integer) else if (etype == ev_integer)
(pr_globals)->trace_endcontentsi = (int*)v; (pr_globals)->trace_endcontentsi = (int*)v;
} }
ensureglobal(trace_endcontentsf, endcontentsf);
ensureglobal(trace_surfaceflagsf, surfaceflagsf);
#endif
// make sure these entries are always valid pointers // make sure these entries are always valid pointers
ensureglobal(dimension_send, dimension_send_default); ensureglobal(dimension_send, dimension_send_default);
ensureglobal(dimension_default, dimension_default); ensureglobal(dimension_default, dimension_default);
ensureglobal(trace_endcontentsf, endcontentsf);
ensureglobal(trace_endcontentsi, endcontentsi); ensureglobal(trace_endcontentsi, endcontentsi);
ensureglobal(trace_surfaceflagsf, surfaceflagsf);
ensureglobal(trace_surfaceflagsi, surfaceflagsi); ensureglobal(trace_surfaceflagsi, surfaceflagsi);
ensureglobal(trace_brush_id, writeonly_int); ensureglobal(trace_brush_id, writeonly_int);
ensureglobal(trace_brush_faceid, writeonly_int); ensureglobal(trace_brush_faceid, writeonly_int);
@ -3655,11 +3666,9 @@ static void set_trace_globals(pubprogfuncs_t *prinst, /*struct globalvars_s *pr_
pr_global_struct->trace_fraction = trace->fraction; pr_global_struct->trace_fraction = trace->fraction;
pr_global_struct->trace_inwater = trace->inwater; pr_global_struct->trace_inwater = trace->inwater;
pr_global_struct->trace_inopen = trace->inopen; pr_global_struct->trace_inopen = trace->inopen;
pr_global_struct->trace_surfaceflagsf = trace->surface?trace->surface->flags:0;
pr_global_struct->trace_surfaceflagsi = trace->surface?trace->surface->flags:0; pr_global_struct->trace_surfaceflagsi = trace->surface?trace->surface->flags:0;
if (pr_global_ptrs->trace_surfacename) if (pr_global_ptrs->trace_surfacename)
prinst->SetStringField(prinst, NULL, &pr_global_struct->trace_surfacename, trace->surface?trace->surface->name:NULL, true); prinst->SetStringField(prinst, NULL, &pr_global_struct->trace_surfacename, trace->surface?trace->surface->name:NULL, true);
pr_global_struct->trace_endcontentsf = trace->contents;
pr_global_struct->trace_endcontentsi = trace->contents; pr_global_struct->trace_endcontentsi = trace->contents;
pr_global_struct->trace_brush_id = trace->brush_id; pr_global_struct->trace_brush_id = trace->brush_id;
pr_global_struct->trace_brush_faceid = trace->brush_face; pr_global_struct->trace_brush_faceid = trace->brush_face;
@ -3668,6 +3677,9 @@ static void set_trace_globals(pubprogfuncs_t *prinst, /*struct globalvars_s *pr_
pr_global_struct->trace_triangle_id = trace->triangle_id; pr_global_struct->trace_triangle_id = trace->triangle_id;
#ifndef NOLEGACY #ifndef NOLEGACY
pr_global_struct->trace_surfaceflagsf = trace->surface?trace->surface->flags:0;
pr_global_struct->trace_endcontentsf = trace->contents;
if (pr_global_ptrs->trace_dphittexturename) if (pr_global_ptrs->trace_dphittexturename)
prinst->SetStringField(prinst, NULL, &pr_global_struct->trace_dphittexturename, trace->surface?trace->surface->name:NULL, true); prinst->SetStringField(prinst, NULL, &pr_global_struct->trace_dphittexturename, trace->surface?trace->surface->name:NULL, true);
if (pr_global_ptrs->trace_dpstartcontents) if (pr_global_ptrs->trace_dpstartcontents)

View file

@ -60,10 +60,14 @@ typedef struct nqglobalvars_s
float *trace_allsolid; float *trace_allsolid;
float *trace_startsolid; float *trace_startsolid;
float *trace_fraction; float *trace_fraction;
#ifndef NOLEGACY
float *trace_surfaceflagsf; float *trace_surfaceflagsf;
#endif
int *trace_surfaceflagsi; int *trace_surfaceflagsi;
string_t*trace_surfacename; string_t*trace_surfacename;
#ifndef NOLEGACY
float *trace_endcontentsf; float *trace_endcontentsf;
#endif
int *trace_endcontentsi; int *trace_endcontentsi;
int *trace_brush_id; int *trace_brush_id;
int *trace_brush_faceid; int *trace_brush_faceid;