From 148f3cadefba8cc48ea5c92bd774de1fadbea8a3 Mon Sep 17 00:00:00 2001 From: helixhorned Date: Mon, 7 Mar 2011 16:30:06 +0000 Subject: [PATCH] mapster32: new command-line switch '-namesfile ' for overriding NAMES.H; new 'drawlabel ' m32script command for drawing small labels, see end of a.m32 for an example; some special handling for sprites whose tile yoffset is greater or equal their pixel height. git-svn-id: https://svn.eduke32.com/eduke32@1832 1a8010ca-5511-0410-912e-c29ae57300e0 --- polymer/eduke32/build/include/editor.h | 4 + polymer/eduke32/build/src/build.c | 116 +++++++++++------- polymer/eduke32/build/src/engine.c | 2 +- polymer/eduke32/samples/a.m32 | 156 ++++--------------------- polymer/eduke32/samples/tests.m32 | 23 ++++ polymer/eduke32/source/astub.c | 46 +++++++- polymer/eduke32/source/m32def.c | 7 +- polymer/eduke32/source/m32def.h | 1 + polymer/eduke32/source/m32exec.c | 44 +++++-- polymer/eduke32/source/m32vars.c | 2 + 10 files changed, 214 insertions(+), 187 deletions(-) diff --git a/polymer/eduke32/build/include/editor.h b/polymer/eduke32/build/include/editor.h index 1d4399633..c0accd53d 100644 --- a/polymer/eduke32/build/include/editor.h +++ b/polymer/eduke32/build/include/editor.h @@ -64,6 +64,7 @@ extern int16_t prefixtiles[16]; extern char program_origcwd[BMAX_PATH]; extern char *mapster32_fullpath; extern char *testplay_addparam; +extern const char *g_namesFileName; extern int32_t m32_osd_tryscript; extern int32_t showheightindicators; @@ -126,6 +127,8 @@ extern void showsectordata(int16_t sectnum, int16_t small); extern void showwalldata(int16_t wallnum, int16_t small); extern void showspritedata(int16_t spritenum, int16_t small); +extern void drawsmallabel(const char *text, char col, char backcol, int32_t dax, int32_t day, int32_t daz); + extern int32_t circlewall; int32_t loadsetup(const char *fn); // from config.c @@ -162,6 +165,7 @@ void update_highlightsector(); int32_t inside_editor(const vec3_t *pos, int32_t searchx, int32_t searchy, int32_t zoom, int32_t x, int32_t y, int16_t sectnum); +void correct_sprite_yoffset(int32_t i); extern uint8_t hlsectorbitmap[MAXSECTORS>>3]; diff --git a/polymer/eduke32/build/src/build.c b/polymer/eduke32/build/src/build.c index 43c6fe553..703c5db8d 100644 --- a/polymer/eduke32/build/src/build.c +++ b/polymer/eduke32/build/src/build.c @@ -106,6 +106,7 @@ int16_t localartlookup[MAXTILES], localartlookupnum; char tempbuf[4096]; char names[MAXTILES][25]; +const char *g_namesFileName = "NAMES.H"; int16_t asksave = 0; extern int16_t editstatus, searchit; @@ -229,7 +230,7 @@ void overheadeditor(void); static int32_t getlinehighlight(int32_t xplc, int32_t yplc, int32_t line); void fixspritesectors(void); static int32_t movewalls(int32_t start, int32_t offs); -int32_t loadnames(void); +int32_t loadnames(const char *namesfile); void updatenumsprites(void); static void getclosestpointonwall(int32_t x, int32_t y, int32_t dawall, int32_t *nx, int32_t *ny); static void initcrc(void); @@ -446,7 +447,7 @@ int32_t app_main(int32_t argc, const char **argv) } #endif - loadnames(); + loadnames(g_namesFileName); if (initinput()) return -1; // if (option[3] != 0) moustat = @@ -1132,6 +1133,8 @@ void editinput(void) else sprite[i].cstat |= (tilesizy[sprite[i].picnum]>=32); + correct_sprite_yoffset(i); + updatenumsprites(); asksave = 1; @@ -1285,10 +1288,14 @@ static inline void drawline16base(int32_t bx, int32_t by, int32_t x1, int32_t y1 drawline16(bx+x1, by+y1, bx+x2, by+y2, col); } -static void drawsmalllabel(const char *text, char col, char backcol, int32_t dax, int32_t day) +void drawsmallabel(const char *text, char col, char backcol, int32_t dax, int32_t day, int32_t daz) { int32_t x1, y1, x2, y2; + screencoords(&dax,&day, dax-pos.x,day-pos.y, zoom); + if (m32_sideview) + day += getscreenvdisp(daz-pos.z, zoom); + x1 = halfxdim16+dax-(Bstrlen(text)<<1); y1 = midydim16+day-4; x2 = x1 + (Bstrlen(text)<<2)+2; @@ -1781,6 +1788,22 @@ static int32_t insert_sprite_common(int32_t sucksect, int32_t dax, int32_t day) return i; } +void correct_sprite_yoffset(int32_t i) +{ + int32_t tileyofs = (int8_t)((picanm[sprite[i].picnum]>>16)&255); + int32_t tileysiz = tilesizy[sprite[i].picnum]; + + if (klabs(tileyofs) >= tileysiz) + { + tileyofs *= -1; + if (tileyofs == 128) + tileyofs = 127; + + sprite[i].yoffset = tileyofs; + } + else + sprite[i].yoffset = 0; +} static void fade_screen() { @@ -2186,7 +2209,6 @@ void overheadeditor(void) } draw2dscreen(&pos,cursectnum,ang,zoom,grid); - VM_OnEvent(EVENT_DRAW2DSCREEN, -1); begindrawing(); //{{{ if (showtags == 1) @@ -2195,7 +2217,6 @@ void overheadeditor(void) { for (i=0; i x3) && (dax < x4) && (day > y3) && (day < y4)) { dabuffer = (char *)ExtGetWallCaption(i); - if (dabuffer[0] != 0) - { - screencoords(&dax,&day, dax-pos.x,day-pos.y, zoom); - if (m32_sideview) - day += getscreenvdisp(getflorzofslope(sectorofwall(i), dax,day)-pos.z, zoom); + if (dabuffer[0] == 0) + continue; - drawsmalllabel(dabuffer, editorcolors[0], editorcolors[31], dax, day); - } + drawsmallabel(dabuffer, editorcolors[0], editorcolors[31], + dax, day, getflorzofslope(sectorofwall(i), dax,day)); } } @@ -2267,23 +2280,17 @@ void overheadeditor(void) dabuffer = (char *)ExtGetSpriteCaption(i); if (dabuffer[0] != 0) { - //Get average point of sprite - screencoords(&dax,&day, sprite[i].x-pos.x,sprite[i].y-pos.y, zoom); - if (m32_sideview) - day += getscreenvdisp(sprite[i].z-pos.z, zoom); + int32_t blocking = (sprite[i].cstat&1); - { - int32_t blocking = (sprite[i].cstat&1); + col = 3 + 2*blocking; + if (spritecol2d[sprite[i].picnum][blocking]) + col = spritecol2d[sprite[i].picnum][blocking]; - col = 3 + 2*blocking; - if (spritecol2d[sprite[i].picnum][blocking]) - col = spritecol2d[sprite[i].picnum][blocking]; + if ((i == pointhighlight-16384) && (totalclock & 32)) + col += (2<<2); - if ((i == pointhighlight-16384) && (totalclock & 32)) - col += (2<<2); - - drawsmalllabel(dabuffer, editorcolors[0], editorcolors[col], dax, day); - } + drawsmallabel(dabuffer, editorcolors[0], editorcolors[col], + sprite[i].x, sprite[i].y, sprite[i].z); } j--; } @@ -2291,14 +2298,23 @@ void overheadeditor(void) } } + // stick this event right between begin- end enddrawing()... + // also after the above label stuff so users can redefine them + VM_OnEvent(EVENT_DRAW2DSCREEN, -1); + printcoords16(pos.x,pos.y,ang); numwalls = tempint; if (highlightsectorcnt >= 0) + { + int32_t oydim16 = ydim16; + ydim16 = ydim-STATUS2DSIZ2; for (i=0; i>3]&(1<<(i&7))) fillsector(i,2); + ydim16 = oydim16; + } if (keystatus[0x2a]) // FIXME { @@ -2375,7 +2391,7 @@ void overheadeditor(void) ////// Draw the white pixel closest to mouse cursor on linehighlight if (linehighlight>=0 && !m32_sideview) { - getclosestpointonwall(mousxplc,mousyplc,(int32_t)linehighlight,&dax,&day); + getclosestpointonwall(mousxplc,mousyplc, linehighlight, &dax,&day); x2 = mulscale14(dax-pos.x,zoom); y2 = mulscale14(day-pos.y,zoom); @@ -2660,7 +2676,7 @@ void overheadeditor(void) keystatus[0x46] = 0; asksave = 1; } - +#if 1 if (keystatus[0x3f]) //F5 { // keystatus[0x3f] = 0; @@ -2730,6 +2746,7 @@ void overheadeditor(void) ydim16 = ydim-STATUS2DSIZ2; } } +#endif if (keystatus[0x23]) //H (Hi 16 bits of tag) { @@ -4052,6 +4069,8 @@ end_join_sectors: if (tilesizy[sprite[i].picnum] >= 32) sprite[i].cstat |= 1; + correct_sprite_yoffset(i); + printmessage16("Sprite inserted."); updatenumsprites(); asksave = 1; @@ -6788,18 +6807,35 @@ static int16_t whitelinescan(int16_t dalinehighlight) return(tnewnumwalls); } -int32_t loadnames(void) +int32_t loadnames(const char *namesfile) { char buffer[1024], *p, *name, *number, *endptr; int32_t num, syms=0, line=0, a, comment=0; BFILE *fp; - fp = fopenfrompath("NAMES.H","r"); + Bstrncpy(buffer, namesfile, sizeof(buffer)); + buffer[sizeof(buffer)-1] = 0; + + p = buffer; + while (*p) + { + *p = Btoupper(*p); + p++; + } + + fp = fopenfrompath(buffer,"r"); if (!fp) { - if ((fp = fopenfrompath("names.h","r")) == NULL) + p = buffer; + while (*p) { - initprintf("Failed to open NAMES.H\n"); + *p = Btolower(*p); + p++; + } + + if ((fp = fopenfrompath(buffer,"r")) == NULL) + { + initprintf("Failed to open %s\n", buffer); return -1; } } @@ -6807,7 +6843,7 @@ int32_t loadnames(void) //clearbufbyte(names, sizeof(names), 0); Bmemset(names,0,sizeof(names)); - initprintf("Loading NAMES.H\n"); + initprintf("Loading %s\n", buffer); while (Bfgets(buffer, 1024, fp)) { diff --git a/polymer/eduke32/build/src/engine.c b/polymer/eduke32/build/src/engine.c index b3bdddb71..d189955b9 100644 --- a/polymer/eduke32/build/src/engine.c +++ b/polymer/eduke32/build/src/engine.c @@ -9179,7 +9179,7 @@ static int32_t hitscan_trysector(const vec3_t *sv, const sectortype *sec, hitdat } } } - else if ((how*vz > 0) && (how *sv->z <= how*z)) + else if ((how*vz > 0) && (how*sv->z <= how*z)) { z1 = z; i = z1-sv->z; if ((klabs(i)>>1) < vz*how) diff --git a/polymer/eduke32/samples/a.m32 b/polymer/eduke32/samples/a.m32 index 64aeffe60..34b927d75 100644 --- a/polymer/eduke32/samples/a.m32 +++ b/polymer/eduke32/samples/a.m32 @@ -24,16 +24,15 @@ define SFACTORSTEPS 100 define PREVIEW_DRAW_COLOR 11 gamevar showpal 0 0 -// 2d mode corruption checker interval, 120 = 1 second -gamevar checkinterval 1200 0 - // whether to use overridden aspect/range values when entering 3d mode (software/Polymost). // tweak with keys 7,8,9,0 on the top row gamevar use_custom_aspect 0 0 // this is now the same as r_usenewaspect gamevar davr 65536 0 gamevar dayx 65536 0 -// see end of file for user key defs + +// see end of file for more user settings and examples + ////////// END USER SETTINGS ////////// @@ -72,18 +71,6 @@ definequote LIGHTQUOTE light %d %d %d %d %d %d %d %d %d %d %d %d %d %d // sec range radius fade ang horiz prio tile -// Corruption checker -definequote 19 PANIC!!! SECTOR OR WALL LIMIT EXCEEDED!!! -definequote 20 SECTOR[%d].WALLPTR=%d out of range: numwalls=%d -definequote 21 SECTOR[%d].WALLPTR=%d inconsistent, expected %d -definequote 22 SECTOR[%d]: wallptr+wallnum=%d out of range: numwalls=%d -definequote 23 WALL[%d].POINT2=%d out of range [%d, %d] -definequote 24 WALL[%d].NEXTWALL=%d out of range: numwalls=%d -definequote 25 WALL[%d].NEXTSECTOR=%d out of range: numsectors=%d -definequote 26 SPRITE[%d].SECTNUM=%d. Expect problems! -definequote 27 SPRITE[%d].PICNUM=%d out of range, resetting to 0 -definequote 28 WALL[%d] has nextsector but no nextwall or vice versa! - define PRSCALE 1000 define MAXSPECULAR 100000 @@ -393,7 +380,9 @@ defstate fiddlewithlights } ends -defstate userkeys_3d ends // forward-ref +// forward refs +defstate userkeys_3d ends +defstate userdrawlabel ends onevent EVENT_PREKEYS3D // state testkeyavail @@ -1017,116 +1006,13 @@ defstate jumptosec // (tmp) updatecursectnum ends -// Map corruption checker -// now included in Mapster32 natively -/* -defstate corruptchk - var ewall - var endwall - var ok - - ifle numsectors MAXSECTORS ifle numwalls MAXWALLS nullop else - { quote 19 printmessage16 19 return } - - set ok 1 - - set ewall 0 // expected wall index - for i allsectors - { - set k 1 - ifge sector[i].wallptr 0 ifl sector[i].wallptr numwalls nullop else - { - qsprintf TQUOTE 20 i sector[i].wallptr numwalls - quote TQUOTE printmessage16 TQUOTE - set k 0 - } - ifn ewall sector[i].wallptr - { - qsprintf TQUOTE 21 i sector[i].wallptr ewall - quote TQUOTE printmessage16 TQUOTE - set ewall sector[i].wallptr - } - add ewall sector[i].wallnum - - set endwall sector[i].wallptr add endwall sector[i].wallnum - ifg endwall numwalls - { - qsprintf TQUOTE 22 i endwall numwalls - quote TQUOTE printmessage16 TQUOTE - set k 0 - } - - and ok k - - ifn k 0 - { - sub endwall 1 - for j wallsofsector i - { - ifge wall[j].point2 sector[i].wallptr ifle wall[i].point2 endwall nullop else - { - qsprintf TQUOTE 23 j wall[j].point2 sector[i].wallptr endwall - quote TQUOTE printmessage16 TQUOTE - set ok 0 - } - - ifge wall[j].nextwall numwalls - { - qsprintf TQUOTE 24 j wall[j].nextwall numwalls - quote TQUOTE printmessage16 TQUOTE - set ok 0 - } - - ifge wall[j].nextsector numsectors - { - qsprintf TQUOTE 25 j wall[j].nextsector numsectors - quote TQUOTE printmessage16 TQUOTE - set ok 0 - } - - set k 0 - ifge wall[j].nextsector 0, xor k 1 - ifge wall[j].nextwall 0, xor k 1 - - ife k 1 - { - qsprintf TQUOTE 28 j - quote TQUOTE printmessage16 TQUOTE - set ok 0 - } - } - } - } - - for i allsprites - { - ifl .sectnum 0 - { - qsprintf TQUOTE 26 i .sectnum - quote TQUOTE printmessage16 TQUOTE - set ok 0 - } - - ifge .picnum 0 ifl .picnum MAXTILES nullop else - { - qsprintf TQUOTE 27 i .picnum - quote TQUOTE printmessage16 TQUOTE - set .picnum 0 - set ok 0 - } - } - - ife ok 0 - print "--" -ends -*/ - -gamevar d2d_lastcheck 0 0 onevent EVENT_DRAW2DSCREEN var tmp var xx + state userdrawlabel + ifge cursectnum 0 { state connectlocators @@ -1135,14 +1021,6 @@ onevent EVENT_DRAW2DSCREEN state previewdoors2d - ifl checkinterval 120, set checkinterval 120 - set tmp totalclock, sub tmp checkinterval - ifl d2d_lastcheck tmp - { - set d2d_lastcheck totalclock -// state corruptchk - } - ifn showpal 0 { set xx 100 @@ -1237,7 +1115,23 @@ defstate chselshade ends -////////// USER KEY SETTINGS ////////// +////////// USER AREA ////////// + +// key settings defstate userkeys_3d ifholdkey KEY_SEMI ifhitkey KEY_C state chselshade ends + +/* +// example for custom labels +defstate userdrawlabel + for i allsprites + { + ifactor 2978 + { + qsprintf TQUOTE "MOVABLE EX:%d OW:%d", sprite[i].owner, sprite[i].extra + drawlabel TQUOTE .x .y .z 0 31 + } + } +ends +*/ diff --git a/polymer/eduke32/samples/tests.m32 b/polymer/eduke32/samples/tests.m32 index 34f410e75..d804746d8 100644 --- a/polymer/eduke32/samples/tests.m32 +++ b/polymer/eduke32/samples/tests.m32 @@ -152,3 +152,26 @@ defstate consttest qsprintf TQUOTE "%d %d %d %d" -2147483648 MIN_CONSTANT i j quote TQUOTE, quote " " ends + +defstate anmtest + var yo + + for i range MAXTILES + { + set j tilesizx[i], or j tilesizy[i] + + ifn j 0 + { + set yo picanm[i] + shiftl yo 8, shiftr yo 24 // sign-extend + + ifl yo 0, inv yo + + ifge yo tilesizy[i] + { + qsprintf TQUOTE "Tile %d's y offset >= y size" i + quote TQUOTE + } + } + } +ends diff --git a/polymer/eduke32/source/astub.c b/polymer/eduke32/source/astub.c index 29cb2b97a..c56ace785 100644 --- a/polymer/eduke32/source/astub.c +++ b/polymer/eduke32/source/astub.c @@ -400,6 +400,8 @@ void create_map_snapshot(void) } } } + + CheckMapCorruption(6, 0); } void map_undoredo_free(void) @@ -3211,7 +3213,6 @@ static int32_t m32gettile(int32_t idInitialTile) keystatus[KEYSC_ENTER] = 0; return idSelectedTile; - } // Dir = 0 (zoom out) or 1 (zoom in) @@ -3671,10 +3672,19 @@ static int32_t DrawTiles(int32_t iTopLeft, int32_t iSelected, int32_t nXTiles, i Bsprintf(szT,"%dx%d",tilesizx[idTile],tilesizy[idTile]); printext256(xdim>>2,ydim-10,whitecol,-1,szT,0); - // EditArt animation flags. - Bsprintf(szT,"%d, %d",(picanm[idTile]>>8)&0xFF,(picanm[idTile]>>16)&0xFF); + // EditArt offset flags. + Bsprintf(szT,"%d, %d", (int8_t)((picanm[idTile]>>8)&0xFF), (int8_t)((picanm[idTile]>>16)&0xFF)); printext256((xdim>>2)+100,ydim-10,whitecol,-1,szT,0); + // EditArt animation flags. + if (picanm[idTile]&0xc0) + { + static const char *anmtype[] = {"", "Osc", "Fwd", "Bck"}; + + Bsprintf(szT,"%s %d", anmtype[(picanm[idTile]&0xc0)>>6], picanm[idTile]&0x3f); + printext256((xdim>>2)+100+14*8,ydim-10,whitecol,-1,szT,0); + } + if (showmsg) TMPERRMSG_SHOW(0); @@ -4420,7 +4430,8 @@ static void Keys3d(void) sprite[searchwall].hitag, sprite[searchwall].extra); Bsprintf(lines[num++], "Repeat: %d,%d", sprite[searchwall].xrepeat, sprite[searchwall].yrepeat); - Bsprintf(lines[num++], "PosXY: %d,%d", sprite[searchwall].x, sprite[searchwall].y); + Bsprintf(lines[num++], "PosXY: %d,%d%s", sprite[searchwall].x, sprite[searchwall].y, + sprite[searchwall].xoffset|sprite[searchwall].yoffset ? " ^251*":""); Bsprintf(lines[num++], "PosZ: "" %d", sprite[searchwall].z);// prevents tab character lines[num++][0]=0; @@ -4511,6 +4522,9 @@ static void Keys3d(void) if (AIMING_AT_MASKWALL && wall[searchwall].nextwall >= 0) NEXTWALL(searchwall).overpicnum = tempint; + if (AIMING_AT_SPRITE) + correct_sprite_yoffset(searchwall); + if (oldtile != tempint) asksave = 1; } @@ -5023,6 +5037,9 @@ static void Keys3d(void) j = 0; } + if (AIMING_AT_SPRITE) + correct_sprite_yoffset(searchwall); + asksave = 1; } keystatus[KEYSC_DASH] = keystatus[KEYSC_EQUAL] = 0; @@ -5661,11 +5678,14 @@ static void Keys3d(void) { if (ASSERT_AIMING) { - int16_t opicnum = AIMED_CF_SEL(picnum); + int16_t opicnum = AIMED_CF_SEL(picnum), aimspr=AIMING_AT_SPRITE; static const char *Typestr_tmp[5] = { "Wall", "Sector ceiling", "Sector floor", "Sprite", "Masked wall" }; Bsprintf(tempbuf, "%s picnum: ", Typestr_tmp[searchstat]); getnumberptr256(tempbuf, &AIMED_CF_SEL(picnum), sizeof(int16_t), MAXTILES-1, 0, NULL); asksave |= (opicnum != AIMED_CF_SEL(picnum)); + + if (aimspr) + correct_sprite_yoffset(searchwall); } } @@ -5765,6 +5785,9 @@ static void Keys3d(void) { AIMED_SELOVR_PICNUM = temppicnum; message("Pasted picnum only"); + + if (AIMING_AT_SPRITE) + correct_sprite_yoffset(searchwall); } i = 512; @@ -6410,6 +6433,8 @@ static void Keys3d(void) sprite[searchwall].yvel = tempyvel; sprite[searchwall].zvel = tempzvel; } + else + correct_sprite_yoffset(searchwall); } message("Pasted clipboard"); asksave = 1; @@ -6442,7 +6467,10 @@ static void Keys3d(void) for (i=0; i= CON_PRINTEXT256) C_GetManyVars(5); + return 0; case CON_GETNUMBER16: diff --git a/polymer/eduke32/source/m32def.h b/polymer/eduke32/source/m32def.h index 9da93f7df..fb6bd8375 100644 --- a/polymer/eduke32/source/m32def.h +++ b/polymer/eduke32/source/m32def.h @@ -467,6 +467,7 @@ enum ScriptKeywords_t CON_PRINTMESSAGE256, CON_PRINTEXT256, CON_PRINTEXT16, + CON_DRAWLABEL, CON_GETNUMBER16, CON_GETNUMBER256, CON_QSPRINTF, diff --git a/polymer/eduke32/source/m32exec.c b/polymer/eduke32/source/m32exec.c index 7989b7359..d96c78b2f 100644 --- a/polymer/eduke32/source/m32exec.c +++ b/polymer/eduke32/source/m32exec.c @@ -2385,6 +2385,7 @@ badindex: case CON_PRINTMESSAGE256: case CON_PRINTEXT256: case CON_PRINTEXT16: + case CON_DRAWLABEL: insptr++; { int32_t i=*insptr++; @@ -2395,30 +2396,55 @@ badindex: { int32_t x=(tw>=CON_PRINTMESSAGE256)?Gv_GetVarX(*insptr++):0; int32_t y=(tw>=CON_PRINTMESSAGE256)?Gv_GetVarX(*insptr++):0; + int32_t col=(tw>=CON_PRINTEXT256)?Gv_GetVarX(*insptr++):0; int32_t backcol=(tw>=CON_PRINTEXT256)?Gv_GetVarX(*insptr++):0; int32_t fontsize=(tw>=CON_PRINTEXT256)?Gv_GetVarX(*insptr++):0; - if (tw==CON_ERRORINS) vm.flags |= VMFLAG_ERROR; - if (tw==CON_PRINT || tw==CON_ERRORINS) + { OSD_Printf("%s\n", quotetext); + if (tw==CON_ERRORINS) + vm.flags |= VMFLAG_ERROR; + } else if (tw==CON_QUOTE) + { message("%s", quotetext); + } else if (tw==CON_PRINTMESSAGE16) - printmessage16("%s", quotetext); + { + if (qsetmode != 200) + printmessage16("%s", quotetext); + } else if (tw==CON_PRINTMESSAGE256) - printmessage256(x, y, quotetext); + { + if (qsetmode == 200) + printmessage256(x, y, quotetext); + } else if (tw==CON_PRINTEXT256) { - if (col<0 || col>=256) col=0; - if (backcol<0 || backcol>=256) backcol=-1; - printext256(x, y, col, backcol, quotetext, fontsize); + if (qsetmode == 200) + { + if (col<0 || col>=256) col=0; + if (backcol<0 || backcol>=256) backcol=-1; + printext256(x, y, col, backcol, quotetext, fontsize); + } } else if (tw==CON_PRINTEXT16) { - printext16(x, y, editorcolors[col&15], backcol<0 ? -1 : editorcolors[backcol&15], - quotetext, fontsize); + if (qsetmode != 200) + printext16(x, y, editorcolors[col&255], backcol<0 ? -1 : editorcolors[backcol&255], + quotetext, fontsize); + } + else if (tw==CON_DRAWLABEL) + { + if (qsetmode != 200) + { + drawsmallabel(quotetext, + editorcolors[backcol&255], // col + fontsize < 0 ? -1 : editorcolors[fontsize&255], // backcol + x, y, col); // x y z + } } } } diff --git a/polymer/eduke32/source/m32vars.c b/polymer/eduke32/source/m32vars.c index 3fa53709e..d312f744b 100644 --- a/polymer/eduke32/source/m32vars.c +++ b/polymer/eduke32/source/m32vars.c @@ -668,6 +668,8 @@ static void Gv_AddSystemVars(void) Gv_NewArray("tilesizx", (void *)tilesizx, MAXTILES, GAMEARRAY_READONLY|GAMEARRAY_OFSHORT); Gv_NewArray("tilesizy", (void *)tilesizy, MAXTILES, GAMEARRAY_READONLY|GAMEARRAY_OFSHORT); +// Gv_NewArray("picsiz", (void *)picsiz, MAXTILES, GAMEARRAY_READONLY|GAMEARRAY_OFCHAR); + Gv_NewArray("picanm", (void *)picanm, MAXTILES, GAMEARRAY_READONLY|GAMEARRAY_OFINT); Gv_NewArray("show2dsector", (void *)show2dsector, (MAXSECTORS+7)>>3, GAMEARRAY_READONLY|GAMEARRAY_OFCHAR); Gv_NewArray("show2dwall", (void *)show2dwall, (MAXWALLS+7)>>3, GAMEARRAY_READONLY|GAMEARRAY_OFCHAR);