From 4dba12a5d3e039fbb044610a6a7fc0989423369c Mon Sep 17 00:00:00 2001 From: helixhorned Date: Thu, 17 Mar 2011 23:37:38 +0000 Subject: [PATCH] Tweakery in various places. Engine stuff: * Add 'r_shadescale_unbounded' cvar. When set to 0, OpenGL renderers should never draw completely black objects (currently only implemented for Polymost) Mapster32: * Add 'r_shadescale' to config * In 3D mode, make SPACE behave the same as holding down a mose button: the currently pointed-at object is locked. Required some modification of a.m32 to play well (i.e. not reset SPACE). This is useful by itself but more so in conjunction with the next point * make Alt behave as a modifier with PGUP/PGDN: when aiming at a 2-sided wall, move the other side's sector's ceiling or floor (only this is new). * Auto-alignment of walls can be controlled in a finer grained fashion now: When pressing '.', only the immediate neighbors get aligned. Use Ctrl-. for the old behaviour. * When inserting a point in 2D mode, auto-align the neighboring wall git-svn-id: https://svn.eduke32.com/eduke32@1848 1a8010ca-5511-0410-912e-c29ae57300e0 --- polymer/eduke32/build/include/compat.h | 8 +- polymer/eduke32/build/include/editor.h | 11 +- polymer/eduke32/build/include/m32script.h | 20 +-- polymer/eduke32/build/include/polymost.h | 1 + polymer/eduke32/build/src/build.c | 144 ++++++++++++---------- polymer/eduke32/build/src/config.c | 120 ++++++++++-------- polymer/eduke32/build/src/engine.c | 13 +- polymer/eduke32/build/src/engine_priv.h | 2 +- polymer/eduke32/build/src/polymer.c | 1 + polymer/eduke32/build/src/polymost.c | 23 +++- polymer/eduke32/samples/a.m32 | 47 +++---- polymer/eduke32/source/astub.c | 121 +++++++++--------- polymer/eduke32/source/m32def.c | 12 +- polymer/eduke32/source/m32exec.c | 7 +- polymer/eduke32/source/mapster32.h | 3 - polymer/eduke32/source/old.diff | 18 +++ 16 files changed, 298 insertions(+), 253 deletions(-) diff --git a/polymer/eduke32/build/include/compat.h b/polymer/eduke32/build/include/compat.h index 680f2e4ad..4872d88b3 100644 --- a/polymer/eduke32/build/include/compat.h +++ b/polymer/eduke32/build/include/compat.h @@ -14,7 +14,10 @@ #define UNREFERENCED_PARAMETER(x) x=x #endif -#define clamp(in, min, max) ((in) <= (min) ? (min) : (in) >= (max) ? (max) : (in)) +static inline int clamp(int in, int min, int max) +{ + return in <= min ? min : in >= max ? max : in; +} #if defined __GNUC__ || defined __clang__ # define ATTRIBUTE(attrlist) __attribute__(attrlist) @@ -566,8 +569,5 @@ char *Bstrupr(char *); #define EDUKE32_TMRTIC t[ti++]=getticks() #define EDUKE32_TMRPRN do { int ii=0; fprintf(stderr,"%s: ",tmrstr); for (ii=1; ii640?0:1); } #endif @@ -1048,7 +1047,7 @@ void editinput(void) searchit = 2; if (searchstat >= 0) { - if ((bstatus&(1|2|4)) > 0) + if ((bstatus&(1|2|4)) || keystatus[0x39]) // SPACE searchit = 0; if (keystatus[0x1f]) //S (insert sprite) (3D) @@ -2773,10 +2772,10 @@ void overheadeditor(void) if (inside_editor(&pos, searchx,searchy, zoom, mousxplc,mousyplc,i) == 1) { Bsprintf(buffer, "Sector (%d) Ceilingpal: ", i); - sector[i].ceilingpal = getnumber16(buffer, sector[i].ceilingpal, MAXPALOOKUPS-1, 0); + sector[i].ceilingpal = getnumber16(buffer, sector[i].ceilingpal, M32_MAXPALOOKUPS, 0); Bsprintf(buffer, "Sector (%d) Floorpal: ", i); - sector[i].floorpal = getnumber16(buffer, sector[i].floorpal, MAXPALOOKUPS-1, 0); + sector[i].floorpal = getnumber16(buffer, sector[i].floorpal, M32_MAXPALOOKUPS, 0); break; } } @@ -4883,6 +4882,7 @@ end_space_handling: { getclosestpointonwall(mousxplc,mousyplc, linehighlight, &dax,&day); adjustmark(&dax,&day, newnumwalls); + i = linehighlight; if ((wall[i].x == dax && wall[i].y == day) || (POINT2(i).x == dax && POINT2(i).y == day)) { @@ -5705,7 +5705,6 @@ static void insertpoint(int16_t linehighlight, int32_t dax, int32_t day) j = linehighlight; sucksect = sectorofwall(j); templenrepquot = divscale12(wallength(j), wall[j].xrepeat); - templenrepquot = max(1, templenrepquot); sector[sucksect].wallnum++; for (i=sucksect+1; i= 0) { k = wall[j].nextwall; + templenrepquot = divscale12(wallength(k), wall[k].xrepeat); sucksect = sectorofwall(k); @@ -5737,6 +5738,7 @@ static void insertpoint(int16_t linehighlight, int32_t dax, int32_t day) wall[k+1].x = dax; wall[k+1].y = day; fixxrepeat(k, templenrepquot); + AlignWallPoint2(k); fixxrepeat(k+1, templenrepquot); j = wall[k].nextwall; @@ -5903,7 +5905,10 @@ void fixrepeats(int16_t i) void fixxrepeat(int16_t i, uint32_t lenrepquot) // lenrepquot: divscale12(wallength,xrepeat) { if (lenrepquot != 0) - wall[i].xrepeat = clamp(divscale12(wallength(i), lenrepquot), 1, 255); + { + uint32_t res = (((wallength(i)<<12)+(1<<11))/lenrepquot); + wall[i].xrepeat = clamp(res, 1, 255); + } } @@ -7354,123 +7359,132 @@ static void initcrc(void) } } -static int32_t GetWallZPeg(int32_t nWall) +static int32_t GetWallBaseZ(int32_t wallnum) { - int32_t z=0, nSector, nNextSector; + int32_t z=0, sectnum, nextsec; - nSector = sectorofwall((int16_t)nWall); - nNextSector = wall[nWall].nextsector; - if (nNextSector == -1) + sectnum = sectorofwall(wallnum); + nextsec = wall[wallnum].nextsector; + + if (nextsec == -1) //1-sided wall { - //1-sided wall - if (wall[nWall].cstat&4) z = sector[nSector].floorz; - else z = sector[nSector].ceilingz; + if (wall[wallnum].cstat&4) // floor-aligned + z = sector[sectnum].floorz; + else + z = sector[sectnum].ceilingz; } - else + else //2-sided wall { - //2-sided wall - if (wall[nWall].cstat&4) - z = sector[nSector].ceilingz; + if (wall[wallnum].cstat&4) + z = sector[sectnum].ceilingz; else { - if (sector[nNextSector].ceilingz > sector[nSector].ceilingz) - z = sector[nNextSector].ceilingz; //top step - if (sector[nNextSector].floorz < sector[nSector].floorz) - z = sector[nNextSector].floorz; //bottom step + if (sector[nextsec].ceilingz > sector[sectnum].ceilingz) + z = sector[nextsec].ceilingz; //top step + if (sector[nextsec].floorz < sector[sectnum].floorz) + z = sector[nextsec].floorz; //bottom step } } return(z); } -static void AlignWalls(int32_t nWall0, int32_t z0, int32_t nWall1, int32_t z1, int32_t nTile) +static void AlignWalls(int32_t w0, int32_t z0, int32_t w1, int32_t z1, int32_t tilenum) { int32_t n; //do the x alignment - wall[nWall1].cstat &= ~0x0108; //Set to non-flip - wall[nWall1].xpanning = (uint8_t)((wall[nWall0].xpanning+(wall[nWall0].xrepeat<<3))%tilesizx[nTile]); + wall[w1].cstat &= ~0x0108; //Set to non-flip + wall[w1].xpanning = (uint8_t)((wall[w0].xpanning + (wall[w0].xrepeat<<3))%tilesizx[tilenum]); - z1 = GetWallZPeg(nWall1); + for (n=picsiz[tilenum]>>4; (1<>4; (1<>(n+3))); + wall[w1].yrepeat = wall[w0].yrepeat; + wall[w1].ypanning = (uint8_t)(wall[w0].ypanning + (((z1-z0)*wall[w0].yrepeat)>>(n+3))); } -void AutoAlignWalls(int32_t nWall0, int32_t ply) +void AlignWallPoint2(int32_t w0) { - int32_t z0, z1, nTile, nWall1, branch, visible, nNextSector, nSector; + int32_t w1 = wall[w0].point2; + AlignWalls(w0,GetWallBaseZ(w0), w1,GetWallBaseZ(w1), wall[w0].picnum); +} - nTile = wall[nWall0].picnum; - branch = 0; - if (ply == 0) +// pass maxrecurs=0 for unconstrained recursion +int32_t AutoAlignWalls(int32_t w0, int32_t dorecurse, int32_t nrecurs) +{ + int32_t z0, z1, tilenum, w1, visible, nextsec, sectnum; + static int32_t numaligned; + + tilenum = wall[w0].picnum; + + if (nrecurs == 0) { //clear visited bits Bmemset(visited, 0, sizeof(visited)); - visited[nWall0>>3] |= (1<<(nWall0&7)); + visited[w0>>3] |= (1<<(w0&7)); + numaligned = 0; } - z0 = GetWallZPeg(nWall0); + z0 = GetWallBaseZ(w0); - nWall1 = wall[nWall0].point2; + w1 = wall[w0].point2; //loop through walls at this vertex in CCW order while (1) { //break if this wall would connect us in a loop - if (visited[nWall1>>3]&(1<<(nWall1&7))) + if (visited[w1>>3]&(1<<(w1&7))) break; - visited[nWall1>>3] |= (1<<(nWall1&7)); + visited[w1>>3] |= (1<<(w1&7)); //break if reached back of left wall - if (wall[nWall1].nextwall == nWall0) + if (wall[w1].nextwall == w0) break; - if (wall[nWall1].picnum == nTile) + if (wall[w1].picnum == tilenum) { - z1 = GetWallZPeg(nWall1); + z1 = GetWallBaseZ(w1); visible = 0; - nNextSector = wall[nWall1].nextsector; - if (nNextSector < 0) + nextsec = wall[w1].nextsector; + if (nextsec < 0) visible = 1; else { - //ignore two sided walls that have no visible face - nSector = NEXTWALL(nWall1).nextsector; - if (getceilzofslope((int16_t)nSector,wall[nWall1].x,wall[nWall1].y) < - getceilzofslope((int16_t)nNextSector,wall[nWall1].x,wall[nWall1].y)) - visible = 1; + int32_t cz,fz, czn,fzn; - if (getflorzofslope((int16_t)nSector,wall[nWall1].x,wall[nWall1].y) > - getflorzofslope((int16_t)nNextSector,wall[nWall1].x,wall[nWall1].y)) + //ignore two sided walls that have no visible face + sectnum = NEXTWALL(w1).nextsector; + getzsofslope(sectnum, wall[w1].x,wall[w1].y, &cz, &fz); + getzsofslope(nextsec, wall[w1].x,wall[w1].y, &czn, &fzn); + + if (cz < czn || fz > fzn) visible = 1; } if (visible) { - branch++; - AlignWalls(nWall0,z0,nWall1,z1,nTile); + numaligned++; + AlignWalls(w0,z0, w1,z1, tilenum); //if wall was 1-sided, no need to recurse - if (wall[nWall1].nextwall < 0) + if (wall[w1].nextwall < 0) { - nWall0 = nWall1; - z0 = GetWallZPeg(nWall0); - nWall1 = wall[nWall0].point2; - branch = 0; + w0 = w1; + z0 = GetWallBaseZ(w0); + w1 = wall[w0].point2; continue; } - else - AutoAlignWalls(nWall1,ply+1); + else if (dorecurse) + AutoAlignWalls(w1, 1, nrecurs+1); } } - if (wall[nWall1].nextwall < 0) break; - nWall1 = NEXTWALL(nWall1).point2; + if (wall[w1].nextwall < 0) break; + w1 = NEXTWALL(w1).point2; } + + return numaligned; } #define PLAYTEST_MAPNAME "autosave_playtest.map" diff --git a/polymer/eduke32/build/src/config.c b/polymer/eduke32/build/src/config.c index e6cce4e0d..5f9f7ef1b 100644 --- a/polymer/eduke32/build/src/config.c +++ b/polymer/eduke32/build/src/config.c @@ -16,6 +16,15 @@ static int32_t vesares[13][2] = {{320,200},{360,200},{320,240},{360,240},{320,40 {1024,768},{1280,1024},{1600,1200} }; +static double clampd(double d, double mind, double maxd) +{ + if (d != d || dmaxd) + d = maxd; + return d; +} + static int32_t readconfig(BFILE *fp, const char *key, char *value, uint32_t len) { char buf[1000], *k, *v, *eq; @@ -117,70 +126,79 @@ int32_t loadsetup(const char *fn) if ((fp = Bfopen(fn, "rt")) == NULL) return -1; - if (readconfig(fp, "forcesetup", val, VL) > 0) { if (Batoi(val) != 0) forcesetup = 1; else forcesetup = 0; } - if (readconfig(fp, "fullscreen", val, VL) > 0) { if (Batoi(val) != 0) fullscreen = 1; else fullscreen = 0; } + if (readconfig(fp, "forcesetup", val, VL) > 0) { if (atoi_safe(val) != 0) forcesetup = 1; else forcesetup = 0; } + if (readconfig(fp, "fullscreen", val, VL) > 0) { if (atoi_safe(val) != 0) fullscreen = 1; else fullscreen = 0; } if (readconfig(fp, "resolution", val, VL) > 0) { - i = Batoi(val) & 0x0f; + i = atoi_safe(val) & 0x0f; if ((unsigned)i<13) { xdimgame = xdim2d = vesares[i][0]; ydimgame = ydim2d = vesares[i][1]; } } if (readconfig(fp, "2dresolution", val, VL) > 0) { - i = Batoi(val) & 0x0f; + i = atoi_safe(val) & 0x0f; if ((unsigned)i<13) { xdim2d = vesares[i][0]; ydim2d = vesares[i][1]; } } - if (readconfig(fp, "xdim2d", val, VL) > 0) xdim2d = Batoi(val); - if (readconfig(fp, "ydim2d", val, VL) > 0) ydim2d = Batoi(val); - if (readconfig(fp, "xdim3d", val, VL) > 0) xdimgame = Batoi(val); - if (readconfig(fp, "ydim3d", val, VL) > 0) ydimgame = Batoi(val); -// if (readconfig(fp, "samplerate", val, VL) > 0) option[7] = (Batoi(val) & 0x0f) << 4; -// if (readconfig(fp, "music", val, VL) > 0) { if (Batoi(val) != 0) option[2] = 1; else option[2] = 0; } -// if (readconfig(fp, "mouse", val, VL) > 0) { if (Batoi(val) != 0) option[3] = 1; else option[3] = 0; } - if (readconfig(fp, "bpp", val, VL) > 0) bppgame = Batoi(val); - if (readconfig(fp, "vsync", val, VL) > 0) vsync = Batoi(val)?1:0; - if (readconfig(fp, "editorgridextent", val, VL) > 0) editorgridextent = max(min(262144,Batoi(val)),32768); + if (readconfig(fp, "xdim2d", val, VL) > 0) xdim2d = atoi_safe(val); + if (readconfig(fp, "ydim2d", val, VL) > 0) ydim2d = atoi_safe(val); + if (readconfig(fp, "xdim3d", val, VL) > 0) xdimgame = atoi_safe(val); + if (readconfig(fp, "ydim3d", val, VL) > 0) ydimgame = atoi_safe(val); +// if (readconfig(fp, "samplerate", val, VL) > 0) option[7] = (atoi_safe(val) & 0x0f) << 4; +// if (readconfig(fp, "music", val, VL) > 0) { if (atoi_safe(val) != 0) option[2] = 1; else option[2] = 0; } +// if (readconfig(fp, "mouse", val, VL) > 0) { if (atoi_safe(val) != 0) option[3] = 1; else option[3] = 0; } + if (readconfig(fp, "bpp", val, VL) > 0) bppgame = atoi_safe(val); + if (readconfig(fp, "vsync", val, VL) > 0) vsync = !!atoi_safe(val); + if (readconfig(fp, "editorgridextent", val, VL) > 0) + { + int32_t tmp = atoi_safe(val); + editorgridextent = clamp(tmp, 65536, BXY_MAX); + } + if (readconfig(fp, "grid", val, VL) > 0) { - grid = Batoi(val); + grid = atoi_safe(val); default_grid = grid; autogrid = (grid==9); - grid = min(max(0, grid), 8); + grid = clamp(grid, 0, 8); } #ifdef POLYMER - if (readconfig(fp, "rendmode", val, VL) > 0) { i = Batoi(val); glrendmode = i; } + if (readconfig(fp, "rendmode", val, VL) > 0) { i = atoi_safe(val); glrendmode = i; } #endif - if (readconfig(fp, "vid_gamma", val, VL) > 0) vid_gamma = Bstrtod(val, NULL); - if (readconfig(fp, "vid_brightness", val, VL) > 0) vid_brightness = Bstrtod(val, NULL); - if (readconfig(fp, "vid_contrast", val, VL) > 0) vid_contrast = Bstrtod(val, NULL); + if (readconfig(fp, "vid_gamma", val, VL) > 0) vid_gamma = clampd(Bstrtod(val, NULL), 0.0, 10.0); + if (readconfig(fp, "vid_brightness", val, VL) > 0) vid_brightness = clampd(Bstrtod(val, NULL), 0.0, 10.0); + if (readconfig(fp, "vid_contrast", val, VL) > 0) vid_contrast = clampd(Bstrtod(val, NULL), 0.0, 10.0); #ifdef RENDERTYPEWIN - if (readconfig(fp, "maxrefreshfreq", val, VL) > 0) maxrefreshfreq = Batoi(val); + if (readconfig(fp, "maxrefreshfreq", val, VL) > 0) maxrefreshfreq = atoi_safe(val); #endif #ifdef USE_OPENGL - if (readconfig(fp, "usemodels", val, VL) > 0) usemodels = Batoi(val)?1:0; - if (readconfig(fp, "usehightile", val, VL) > 0) usehightile = Batoi(val)?1:0; + if (readconfig(fp, "usemodels", val, VL) > 0) usemodels = !!atoi_safe(val); + if (readconfig(fp, "usehightile", val, VL) > 0) usehightile = !!atoi_safe(val); glusetexcache = -1; if (readconfig(fp, "glusetexcache", val, VL) > 0) { - glusetexcache = clamp(Batoi(val), 0, 2); + glusetexcache = clamp(atoi_safe(val), 0, 2); } if (readconfig(fp, "gltexfiltermode", val, VL) > 0) { - gltexfiltermode = Batoi(val); + gltexfiltermode = atoi_safe(val); } if (readconfig(fp, "glanisotropy", val, VL) > 0) { - glanisotropy = Batoi(val); + glanisotropy = atoi_safe(val); } if (readconfig(fp, "r_downsize", val, VL) > 0) { - r_downsize = Batoi(val); + r_downsize = atoi_safe(val); r_downsize = clamp(r_downsize, 0, 5); r_downsizevar = r_downsize; } if (readconfig(fp, "r_texcompr", val, VL) > 0) { - glusetexcompr = !!Batoi(val); + glusetexcompr = !!atoi_safe(val); + } + if (readconfig(fp, "r_shadescale", val, VL) > 0) + { + shadescale = clampd(Bstrtod(val, NULL), 0.0, 10.0); } #endif @@ -215,49 +233,49 @@ int32_t loadsetup(const char *fn) #endif #ifdef RENDERTYPEWIN - if (readconfig(fp, "windowpositioning", val, VL) > 0) windowpos = Batoi(val); + if (readconfig(fp, "windowpositioning", val, VL) > 0) windowpos = atoi_safe(val); windowx = -1; - if (readconfig(fp, "windowposx", val, VL) > 0) windowx = Batoi(val); + if (readconfig(fp, "windowposx", val, VL) > 0) windowx = atoi_safe(val); windowy = -1; - if (readconfig(fp, "windowposy", val, VL) > 0) windowy = Batoi(val); + if (readconfig(fp, "windowposy", val, VL) > 0) windowy = atoi_safe(val); #endif if (readconfig(fp, "keyconsole", val, VL) > 0) { keys[19] = Bstrtol(val, NULL, 16); OSD_CaptureKey(keys[19]); } if (readconfig(fp, "mousesensitivity", val, VL) > 0) msens = Bstrtod(val, NULL); - if (readconfig(fp, "mousenavigation", val, VL) > 0) unrealedlook = !!Batoi(val); + if (readconfig(fp, "mousenavigation", val, VL) > 0) unrealedlook = !!atoi_safe(val); - if (readconfig(fp, "mousenavigationaccel", val, VL) > 0) pk_uedaccel = Batoi(val); + if (readconfig(fp, "mousenavigationaccel", val, VL) > 0) pk_uedaccel = atoi_safe(val); - if (readconfig(fp, "quickmapcycling", val, VL) > 0) quickmapcycling = !!Batoi(val); + if (readconfig(fp, "quickmapcycling", val, VL) > 0) quickmapcycling = !!atoi_safe(val); - if (readconfig(fp, "sideview_reversehorizrot", val, VL) > 0) sideview_reversehrot = !!Batoi(val); - if (readconfig(fp, "revertCTRL", val, VL) > 0) revertCTRL = !!Batoi(val); + if (readconfig(fp, "sideview_reversehorizrot", val, VL) > 0) sideview_reversehrot = !!atoi_safe(val); + if (readconfig(fp, "revertCTRL", val, VL) > 0) revertCTRL = !!atoi_safe(val); - if (readconfig(fp, "scrollamount", val, VL) > 0) scrollamount = Batoi(val); + if (readconfig(fp, "scrollamount", val, VL) > 0) scrollamount = atoi_safe(val); - if (readconfig(fp, "turnaccel", val, VL) > 0) pk_turnaccel = Batoi(val); + if (readconfig(fp, "turnaccel", val, VL) > 0) pk_turnaccel = atoi_safe(val); - if (readconfig(fp, "turndecel", val, VL) > 0) pk_turndecel = Batoi(val); + if (readconfig(fp, "turndecel", val, VL) > 0) pk_turndecel = atoi_safe(val); -// if (readconfig(fp, "autosave", val, VL) > 0) autosave = Batoi(val)*60; - if (readconfig(fp, "autosavesec", val, VL) > 0) autosave = max(0, Batoi(val)); - if (readconfig(fp, "autocorruptchecksec", val, VL) > 0) autocorruptcheck = max(0, Batoi(val)); +// if (readconfig(fp, "autosave", val, VL) > 0) autosave = atoi_safe(val)*60; + if (readconfig(fp, "autosavesec", val, VL) > 0) autosave = max(0, atoi_safe(val)); + if (readconfig(fp, "autocorruptchecksec", val, VL) > 0) autocorruptcheck = max(0, atoi_safe(val)); if (readconfig(fp, "showheightindicators", val, VL) > 0) - showheightindicators = min(max(Batoi(val),0),2); + showheightindicators = clamp(atoi_safe(val), 0, 2); if (readconfig(fp, "showambiencesounds", val, VL) > 0) - showambiencesounds = min(max(Batoi(val),0),2); + showambiencesounds = clamp(atoi_safe(val), 0, 2); if (readconfig(fp, "graphicsmode", val, VL) > 0) - graphicsmode = min(max(Batoi(val),0),2); + graphicsmode = clamp(atoi_safe(val), 0, 2); - if (readconfig(fp, "samplerate", val, VL) > 0) MixRate = min(max(8000, Batoi(val)), 48000); - if (readconfig(fp, "ambiencetoggle", val, VL) > 0) AmbienceToggle = !!Batoi(val); - if (readconfig(fp, "parlock", val, VL) > 0) ParentalLock = !!Batoi(val); + if (readconfig(fp, "samplerate", val, VL) > 0) MixRate = clamp(atoi_safe(val), 8000, 48000); + if (readconfig(fp, "ambiencetoggle", val, VL) > 0) AmbienceToggle = !!atoi_safe(val); + if (readconfig(fp, "parlock", val, VL) > 0) ParentalLock = !!atoi_safe(val); - if (readconfig(fp, "osdtryscript", val, VL) > 0) m32_osd_tryscript = !!Batoi(val); + if (readconfig(fp, "osdtryscript", val, VL) > 0) m32_osd_tryscript = !!atoi_safe(val); for (i=0; i<256; i++) remap[i]=i; @@ -355,6 +373,7 @@ int32_t writesetup(const char *fn) "glanisotropy = %d\n" "r_downsize = %d\n" "r_texcompr = %d\n" + "r_shadescale = %g\n" "\n" #endif @@ -505,10 +524,11 @@ int32_t writesetup(const char *fn) #ifdef POLYMER glrendmode, #endif - editorgridextent, min(max(0, default_grid), 9), + editorgridextent, clamp(default_grid, 0, 9), #ifdef USE_OPENGL usemodels, usehightile, glusetexcache, gltexfiltermode, glanisotropy,r_downsize,glusetexcompr, + shadescale, #endif #ifdef RENDERTYPEWIN maxrefreshfreq, windowpos, windowx, windowy, diff --git a/polymer/eduke32/build/src/engine.c b/polymer/eduke32/build/src/engine.c index d5de12c3a..0aa9e3d83 100644 --- a/polymer/eduke32/build/src/engine.c +++ b/polymer/eduke32/build/src/engine.c @@ -1230,9 +1230,14 @@ int16_t searchit; int32_t searchx = -1, searchy; //search input int16_t searchsector, searchwall, searchstat; //search output -// if searchstat==0 (wall), searchbottomwall is ==.nextwall if aiming at -// bottom of a wall with swapped walls (.cstat&2), else it's ==searchwall -int16_t searchbottomwall; +// SEARCHBOTTOMWALL: +// When aiming at a the bottom part of a 2-sided wall whose bottom part +// is swapped (.cstat&2), searchbottomwall equals that wall's .nextwall. In all +// other cases (when aiming at a wall), searchbottomwall equals searchwall. +// +// SEARCHISBOTTOM: +// When aiming at a 2-sided wall, 1 if aiming at the bottom part, 0 else +int16_t searchbottomwall, searchisbottom; double msens = 1.0; @@ -3230,6 +3235,7 @@ static void drawalls(int32_t bunch) if (searchy <= dwall[searchx]) //wall { searchsector = sectnum; searchbottomwall = searchwall = wallnum; + searchisbottom = 0; searchstat = 0; searchit = 1; } @@ -3320,6 +3326,7 @@ static void drawalls(int32_t bunch) { searchsector = sectnum; searchbottomwall = searchwall = wallnum; if ((wal->cstat&2) > 0) searchbottomwall = wal->nextwall; + searchisbottom = 1; searchstat = 0; searchit = 1; } diff --git a/polymer/eduke32/build/src/engine_priv.h b/polymer/eduke32/build/src/engine_priv.h index 579150e5f..5ddadbb58 100644 --- a/polymer/eduke32/build/src/engine_priv.h +++ b/polymer/eduke32/build/src/engine_priv.h @@ -36,7 +36,7 @@ extern int32_t globalorientation; extern int16_t searchit; extern int32_t searchx, searchy; extern int16_t searchsector, searchwall, searchstat; -extern int16_t searchbottomwall; +extern int16_t searchbottomwall, searchisbottom; extern char inpreparemirror; diff --git a/polymer/eduke32/build/src/polymer.c b/polymer/eduke32/build/src/polymer.c index df609ec2d..c9067f98a 100644 --- a/polymer/eduke32/build/src/polymer.c +++ b/polymer/eduke32/build/src/polymer.c @@ -1097,6 +1097,7 @@ void polymer_editorpick(void) case 4: // 1-way/masked wall searchsector = sectorofwall(num); searchbottomwall = searchwall = num; + searchisbottom = (searchstat==5); if (searchstat == 5) { searchstat = 0; if (wall[num].nextwall >= 0 && (wall[num].cstat & 2)) { diff --git a/polymer/eduke32/build/src/polymost.c b/polymer/eduke32/build/src/polymost.c index 5e455e7be..c778e1573 100644 --- a/polymer/eduke32/build/src/polymost.c +++ b/polymer/eduke32/build/src/polymost.c @@ -110,6 +110,7 @@ static double dxb1[MAXWALLSB], dxb2[MAXWALLSB]; #define DEPTHDEBUG 0 //1:render distance instead of texture, for debugging only!, 0:default float shadescale = 1.3f; +int32_t shadescale_unbounded = 0; double gyxscale, gxyaspect, gviewxrange, ghalfx, grhalfxdown10, grhalfxdown10x, ghoriz; double gcosang, gsinang, gcosang2, gsinang2; @@ -2185,7 +2186,8 @@ void drawpoly(double *dpx, double *dpy, int32_t n, int32_t method) { float pc[4]; - f = ((float)(numpalookups-min(max((globalshade * shadescale),0),numpalookups)))/((float)numpalookups); + int32_t shadebound = shadescale_unbounded ? numpalookups : 31; + f = ((float)(numpalookups-min(max((globalshade * shadescale),0),shadebound)))/((float)numpalookups); pc[0] = pc[1] = pc[2] = f; switch (method&3) { @@ -4398,7 +4400,9 @@ void polymost_drawrooms() hitallsprites = 0; searchsector = hitinfo.hitsect; - if (hitinfo.pos.zfz) searchstat = 2; else if (hitinfo.hitwall >= 0) + if (hitinfo.pos.zfz) searchstat = 2; + else if (hitinfo.hitwall >= 0) { searchbottomwall = searchwall = hitinfo.hitwall; searchstat = 0; if (wall[hitinfo.hitwall].nextwall >= 0) @@ -4407,11 +4411,16 @@ void polymost_drawrooms() getzsofslope(wall[hitinfo.hitwall].nextsector,hitinfo.pos.x,hitinfo.pos.y,&cz,&fz); if (hitinfo.pos.z > fz) { + searchisbottom = 1; if (wall[hitinfo.hitwall].cstat&2) //'2' bottoms of walls searchbottomwall = wall[hitinfo.hitwall].nextwall; } - else if ((hitinfo.pos.z > cz) && (wall[hitinfo.hitwall].cstat&(16+32))) //masking or 1-way - searchstat = 4; + else + { + searchisbottom = 0; + if ((hitinfo.pos.z > cz) && (wall[hitinfo.hitwall].cstat&(16+32))) //masking or 1-way + searchstat = 4; + } } } else if (hitinfo.hitsprite >= 0) { searchwall = hitinfo.hitsprite; searchstat = 3; } @@ -5840,6 +5849,7 @@ void polymost_fillpolygon(int32_t npoints) pthtyp *pth; float f,a=0.0; int32_t i; + int32_t shadebound = shadescale_unbounded ? numpalookups-1 : 31; globalx1 = mulscale16(globalx1,xyaspect); globaly2 = mulscale16(globaly2,xyaspect); @@ -5863,7 +5873,7 @@ void polymost_fillpolygon(int32_t npoints) pth = gltexcache(globalpicnum,globalpal,0); bglBindTexture(GL_TEXTURE_2D, pth ? pth->glpic : 0); - f = ((float)(numpalookups-min(max((globalshade * shadescale),0),numpalookups)))/((float)numpalookups); + f = ((float)(numpalookups-min(max((globalshade * shadescale),0),shadebound)))/((float)numpalookups); switch ((globalorientation>>7)&3) { case 0: @@ -6237,7 +6247,8 @@ void polymost_initosdfuncs(void) }, { "r_polygonmode","r_polygonmode: debugging feature",(void *) &glpolygonmode, CVAR_INT | CVAR_NOSAVE, 0, 3 }, { "r_redbluemode","r_redbluemode: enable/disable experimental OpenGL red-blue glasses mode",(void *) &glredbluemode, CVAR_BOOL, 0, 1 }, - { "r_shadescale","r_shadescale: multiplier for lighting",(void *) &shadescale, CVAR_FLOAT, 0, 10 }, + { "r_shadescale","r_shadescale: multiplier for shading",(void *) &shadescale, CVAR_FLOAT, 0, 10 }, + { "r_shadescale_unbounded","r_shadescale_unbounded: enable/disable allowance of complete blackness",(void *) &shadescale_unbounded, CVAR_BOOL, 0, 1 }, { "r_swapinterval","r_swapinterval: sets the GL swap interval (VSync)",(void *) &vsync, CVAR_BOOL|CVAR_FUNCPTR, 0, 1 }, { "r_texcache","r_texcache: enable/disable OpenGL compressed texture cache",(void *) &glusetexcache, CVAR_INT, 0, 2 }, { "r_texcompr","r_texcompr: enable/disable OpenGL texture compression",(void *) &glusetexcompr, CVAR_BOOL, 0, 1 }, diff --git a/polymer/eduke32/samples/a.m32 b/polymer/eduke32/samples/a.m32 index 860be045d..c09096e8b 100644 --- a/polymer/eduke32/samples/a.m32 +++ b/polymer/eduke32/samples/a.m32 @@ -122,10 +122,7 @@ ends // KP+/-: radius // KP 1,2,3: RGB color (Shift inverts) // -// when aiming at wall or sector: -// ----Alt-KP/ enable/disable parallax override /// none, toggle them manually in the OSD -// ----Alt-KP* enable/disable bias override /// none, toggle them manually in the OSD -// when the respective overrides are on: +// when aiming at wall or sector and the respective overrides are on: // KP 5,8: parallaxscale // KP 4,6: parallaxbias // KP /,*: specularfactor @@ -134,27 +131,7 @@ ends // Also try Shift and/or Ctrl modifiers for different increments defstate fiddlewithlights var minval maxval -/* - ifaimingsprite nullop else - { - ifeithershift ifhitkey KEY_gSLASH - { - xor pr_overrideparallax 1, and pr_overrideparallax 1 - ife pr_overrideparallax 1 - quote "OVERRIDE POLYMER PARALLAX: ON" - else - quote "OVERRIDE POLYMER PARALLAX: OFF" - } - else ifeithershift ifhitkey KEY_gSTAR - { - xor pr_overridespecular 1, and pr_overridespecular 1 - ife pr_overridespecular 1 - quote "OVERRIDE POLYMER SPECULAR: ON" - else - quote "OVERRIDE POLYMER SPECULAR: OFF" - } - } -*/ + // if aiming at sector or wall ifaimingsprite nullop else ifn pr_overrideparallax 0 @@ -818,7 +795,7 @@ onevent EVENT_KEYS3D var l m // door sound tester - ifaimingwall + ifeitherctrl ifeithershift ifaimingwall ifholdkey KEY_SPACE { set k wall[searchwall].nextsector @@ -833,17 +810,21 @@ onevent EVENT_KEYS3D { getsoundflags .lotag m ifand m 1 nullop else soundonce .lotag + resetkey KEY_SPACE } } } - // swinging doors tester -- hit space on a door wall - ifaimingwall - ifhitkey KEY_SPACE // SE11 ST23 up:ccw + // swinging doors tester -- hit Ctrl-Shift-SPACE on a door wall + ifeitherctrl ifeithershift ifaimingwall + ifholdkey KEY_SPACE // SE11 ST23 up:ccw { set k wall[searchwall].nextsector ifl k 0 return ifn sector[k].lotag 23 return + + resetkey KEY_SPACE + set tmp 0 for i loopofwall searchwall { @@ -894,8 +875,8 @@ onevent EVENT_KEYS3D } // teleporter -- works on SE7 and SE17 (elevator) - ifaimingsprite - ifhitkey KEY_SPACE + ifeitherctrl ifaimingsprite + ifholdkey KEY_SPACE { ife sprite[searchwall].picnum SECTOREFFECTOR { @@ -904,6 +885,8 @@ onevent EVENT_KEYS3D ife sprite[searchwall].lotag 17 set tmp 1 ife tmp 0 return + resetkey KEY_SPACE + for i allsprites { ifn i searchwall, ifactor SECTOREFFECTOR, ife sprite[i].lotag sprite[searchwall].lotag @@ -922,10 +905,12 @@ onevent EVENT_KEYS3D else ife sprite[searchwall].extra DUP_ROT_MAGIC { state duprot + resetkey KEY_SPACE } else ife sprite[searchwall].extra DUP_LIN_MAGIC2 { state duplin + resetkey KEY_SPACE } } diff --git a/polymer/eduke32/source/astub.c b/polymer/eduke32/source/astub.c index b502e9174..bd20d3833 100644 --- a/polymer/eduke32/source/astub.c +++ b/polymer/eduke32/source/astub.c @@ -4589,14 +4589,14 @@ static void Keys3d(void) if (keystatus[KEYSC_QUOTE]) { - pal[0] = getnumber256("Ceiling palette: ", -1, MAXPALOOKUPS-1, 1); - pal[1] = getnumber256("Floor palette: ", -1, MAXPALOOKUPS-1, 1); - pal[2] = getnumber256("Wall palette: ", -1, MAXPALOOKUPS-1, 1); - pal[3] = getnumber256("Sprite palette: ", -1, MAXPALOOKUPS-1, 1); + pal[0] = getnumber256("Ceiling palette: ", -1, M32_MAXPALOOKUPS, 1); + pal[1] = getnumber256("Floor palette: ", -1, M32_MAXPALOOKUPS, 1); + pal[2] = getnumber256("Wall palette: ", -1, M32_MAXPALOOKUPS, 1); + pal[3] = getnumber256("Sprite palette: ", -1, M32_MAXPALOOKUPS, 1); } else { - pal[0] = getnumber256("Global palette: ", 0, MAXPALOOKUPS-1, 0); + pal[0] = getnumber256("Global palette: ", 0, M32_MAXPALOOKUPS, 0); pal[1] = pal[2] = pal[3] = pal[0]; } @@ -4674,8 +4674,9 @@ static void Keys3d(void) if (AIMING_AT_WALL_OR_MASK && PRESSED_KEYSC(PERIOD)) { - AutoAlignWalls(searchwall, 0); - message("Wall %d autoalign", searchwall); + int32_t naligned=AutoAlignWalls(searchwall, eitherCTRL, 0); + message("Auto-aligned %d wall%s %s based on wall %d", naligned, + naligned==1?"":"s", eitherCTRL?"recursively":"", searchwall); } @@ -4709,7 +4710,7 @@ static void Keys3d(void) sector[searchsector].ceilingheinum = 0; } getnumberptr256("Sector ceiling slope: ", §or[searchsector].ceilingheinum, - sizeof(sector[0].ceilingheinum), 32767, 1, NULL); + sizeof(sector[0].ceilingheinum), BHEINUM_MAX, 1, NULL); break; case SEARCH_FLOOR: getnumberptr256("Sector floorz: ", §or[searchsector].floorz, @@ -4720,14 +4721,15 @@ static void Keys3d(void) sector[searchsector].floorstat |= 2; } getnumberptr256("Sector floor slope: ", §or[searchsector].floorheinum, - sizeof(sector[0].floorheinum), 32767, 1, NULL); + sizeof(sector[0].floorheinum), BHEINUM_MAX, 1, NULL); break; case SEARCH_SPRITE: getnumberptr256("Sprite x: ", &sprite[searchwall].x, sizeof(sprite[0].x), editorgridextent-1, 1, NULL); getnumberptr256("Sprite y: ", &sprite[searchwall].y, sizeof(sprite[0].y), editorgridextent-1, 1, NULL); getnumberptr256("Sprite z: ", &sprite[searchwall].z, sizeof(sprite[0].z), BZ_MAX, 1, NULL); - getnumberptr256("Sprite angle: ", &sprite[searchwall].ang, sizeof(sprite[0].ang), 2047, 0, NULL); + getnumberptr256("Sprite angle: ", &sprite[searchwall].ang, sizeof(sprite[0].ang), 2047, 1, NULL); + sprite[searchwall].ang &= 2047; break; } @@ -5185,14 +5187,16 @@ static void Keys3d(void) if (ASSERT_AIMING) { // PK: PGUP/PGDN, rmb only & mwheel - tsign -= (PRESSED_KEYSC(PGUP) || (mouseaction && mousey<0) || ((bstatus&18)==18 && !(bstatus&1))); - tsign += (PRESSED_KEYSC(PGDN) || (mouseaction && mousey>0) || ((bstatus&34)==34 && !(bstatus&1))); + tsign -= (PRESSED_KEYSC(PGUP) || (mouseaction && mousey<0) || ((bstatus&(16|2|1))==(16|2))); + tsign += (PRESSED_KEYSC(PGDN) || (mouseaction && mousey>0) || ((bstatus&(32|2|1))==(32|2))); } if (tsign) { + int16_t sect, havebtm=0, havetop=0; + k = 0; - if (highlightsectorcnt >= 0) + if (highlightsectorcnt > 0) { for (i=0; i=0 + && eitherALT && !(bstatus&1)) + { + sect = wall[searchwall].nextsector; + havebtm = searchisbottom; + havetop = !havebtm; + } + else + { + sect = searchsector; + havetop = AIMING_AT_WALL; + } + } + + if (AIMING_AT_CEILING || havetop) { - int16_t sect = k ? highlightsector[0] : - ((AIMING_AT_WALL && wall[searchwall].nextsector>=0 && (eitherALT && !(bstatus&1))) ? - wall[searchwall].nextsector : searchsector); int32_t tmphei; for (j=0; j<(k?k:1); j++, sect=highlightsector[j]) @@ -5229,10 +5251,8 @@ static void Keys3d(void) message("Sector %d ceilingz = %d", sect, sector[sect].ceilingz); } } - else if (AIMING_AT_FLOOR) + else if (AIMING_AT_FLOOR || havebtm) { - int16_t sect = k ? highlightsector[0] : searchsector; - for (j=0; j<(k?k:1); j++, sect=highlightsector[j]) { for (i=headspritesect[sect]; i!=-1; i=nextspritesect[i]) @@ -5364,12 +5384,12 @@ static void Keys3d(void) Bsprintf(tempbuf,"VIEW"); else if ((bstatus&(2|1))==2) Bsprintf(tempbuf,"Z%s", keystatus[KEYSC_HOME]?" 256":keystatus[KEYSC_END]?" 512":""); - else if ((bstatus&(2|1))==1) + + if ((bstatus&(2|1))==1 || (keystatus[KEYSC_SPACE])) Bsprintf(tempbuf,"LOCK"); if (bstatus&1) { - Bsprintf(tempbuf,"LOCK"); switch (searchstat) { case SEARCH_WALL: @@ -5464,14 +5484,6 @@ static void Keys3d(void) } } - /* if(purpleon) { - begindrawing(); - // printext256(1*4,1*8,whitecol,-1,"Purple ON",0); - message("Purple ON"); - enddrawing(); - } - */ - if (cursectnum>=0 && sector[cursectnum].lotag==2) { if (sector[cursectnum].ceilingpicnum==FLOORSLIME) @@ -5518,25 +5530,7 @@ static void Keys3d(void) DeletePolymerLights(); #endif } - - - /* if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_G]) // ' g - { - keystatus[KEYSC_G] = 0; - tabgraphic++; - if (tabgraphic > 2) tabgraphic = 0; - if (tabgraphic) message("Graphics ON"); - else message("Graphics OFF"); - }*/ - - /* if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_R]) // ' r - { - keystatus[KEYSC_R] = 0; - framerateon=!framerateon; - if (framerateon) message("Framerate ON"); - else message("Framerate OFF"); - }*/ - +///___unused_keys___ if (keystatus[KEYSC_QUOTE] && PRESSED_KEYSC(W)) // ' w { nosprites = (nosprites+1)%MAXNOSPRITES; @@ -5850,7 +5844,7 @@ static void Keys3d(void) if (!(AIMED_CEILINGFLOOR(stat)&2)) AIMED_CEILINGFLOOR(heinum) = 0; - AIMED_CEILINGFLOOR(heinum) = clamp(AIMED_CEILINGFLOOR(heinum) + tsign*i, -32768, 32767); + AIMED_CEILINGFLOOR(heinum) = clamp(AIMED_CEILINGFLOOR(heinum) + tsign*i, -BHEINUM_MAX, BHEINUM_MAX); message("Sector %d ceiling slope = %d",searchsector,AIMED_CEILINGFLOOR(heinum)); } @@ -6557,7 +6551,7 @@ static void Keys3d(void) if (ASSERT_AIMING) { Bsprintf(tempbuf, "%s pal: ", Typestr[searchstat]); - getnumberptr256(tempbuf, &AIMED_CF_SEL(pal), sizeof(uint8_t), 255, 0, NULL); + getnumberptr256(tempbuf, &AIMED_CF_SEL(pal), sizeof(uint8_t), M32_MAXPALOOKUPS, 0, NULL); asksave = 1; } } @@ -7671,11 +7665,6 @@ int32_t ExtPreInit(int32_t argc,const char **argv) return 0; } -static int32_t atoi_safe(const char *str) -{ - return (int32_t)strtol(str, NULL, 10); -} - static int32_t osdcmd_quit(const osdfuncparm_t *parm) { UNREFERENCED_PARAMETER(parm); @@ -7963,7 +7952,7 @@ static int32_t osdcmd_tint(const osdfuncparm_t *parm) if (parm->numparms==1) { i = atoi_safe(parm->parms[0]); - if (i>=0 && i=0 && i<=M32_MAXPALOOKUPS) { p = &hictinting[i]; OSD_Printf("pal %d: r=%d g=%d b=%d f=%d\n", i, p->r, p->g, p->b, p->f); @@ -7972,14 +7961,14 @@ static int32_t osdcmd_tint(const osdfuncparm_t *parm) else if (parm->numparms==0) { OSD_Printf("Hightile tintings:\n"); - for (i=0,p=&hictinting[0]; ir, p->g, p->b, p->f); } else if (parm->numparms>=2) { i = atoi_safe(parm->parms[0]); - if (i<0 || i>=MAXPALOOKUPS-RESERVEDPALS) + if (i<0 || i>M32_MAXPALOOKUPS) return OSDCMD_SHOWHELP; p = &hictinting[i]; @@ -10610,11 +10599,11 @@ static void EditSectorData(int16_t sectnum) break; case 5: handlemed(0, "Ceiling heinum", "Ceiling Heinum", §or[sectnum].ceilingheinum, - sizeof(sector[sectnum].ceilingheinum), 32767, 1); + sizeof(sector[sectnum].ceilingheinum), BHEINUM_MAX, 1); break; case 6: handlemed(0, "Palookup number", "Ceiling Palookup Number", §or[sectnum].ceilingpal, - sizeof(sector[sectnum].ceilingpal), MAXPALOOKUPS-1, 0); + sizeof(sector[sectnum].ceilingpal), M32_MAXPALOOKUPS, 0); break; } } @@ -10654,11 +10643,11 @@ static void EditSectorData(int16_t sectnum) break; case 5: handlemed(0, "Floor heinum", "Floor Heinum", §or[sectnum].floorheinum, - sizeof(sector[sectnum].floorheinum), 32767, 1); + sizeof(sector[sectnum].floorheinum), BHEINUM_MAX, 1); break; case 6: handlemed(0, "Palookup number", "Floor Palookup Number", §or[sectnum].floorpal, - sizeof(sector[sectnum].floorpal), MAXPALOOKUPS-1, 0); + sizeof(sector[sectnum].floorpal), M32_MAXPALOOKUPS, 0); break; } } @@ -10710,7 +10699,7 @@ static void EditWallData(int16_t wallnum) break; case 2: handlemed(0, "Pal", "Pal", &wall[wallnum].pal, - sizeof(wall[wallnum].pal), MAXPALOOKUPS-1, 0); + sizeof(wall[wallnum].pal), M32_MAXPALOOKUPS, 0); break; case 3: for (i=Bsprintf(med_disptext,"(X,Y)repeat: %d, %d",wall[wallnum].xrepeat,wall[wallnum].yrepeat); i < med_dispwidth; i++) med_disptext[i] = ' '; @@ -10900,7 +10889,7 @@ static void EditSpriteData(int16_t spritenum) break; case 2: handlemed(0, "Pal", "Pal", &sprite[spritenum].pal, - sizeof(sprite[spritenum].pal), MAXPALOOKUPS-1, 0); + sizeof(sprite[spritenum].pal), M32_MAXPALOOKUPS, 0); break; case 3: { @@ -11016,7 +11005,7 @@ static void GenericSpriteSearch() { { BXY_MAX , 65535 , 2048 }, { BXY_MAX , 128 , 65535 }, - { BZ_MAX , MAXPALOOKUPS-1, 65535 }, + { BZ_MAX , M32_MAXPALOOKUPS, 65535 }, { MAXSECTORS-1, 128 , 65535 }, { MAXSTATUS-1 , 128 , MAXSPRITES-1 }, { BTAG_MAX , MAXTILES-1 , 256 }, diff --git a/polymer/eduke32/source/m32def.c b/polymer/eduke32/source/m32def.c index a0d70a034..06a9f410a 100644 --- a/polymer/eduke32/source/m32def.c +++ b/polymer/eduke32/source/m32def.c @@ -446,6 +446,11 @@ const memberlabel_t SectorLabels[]= { "lotag", SECTOR_LOTAG, 0, 0, 0 }, { "hitag", SECTOR_HITAG, 0, 0, 0 }, { "extra", SECTOR_EXTRA, 0, 0, 0 }, +// aliases + { "filler", SECTOR_ALIGNTO, 0, 0, 0 }, + { "ceilingheinum", SECTOR_CEILINGSLOPE, 0, 0, 0}, + { "floorheinum", SECTOR_FLOORSLOPE, 0, 0, 0}, + { "", -1, 0, 0, 0 } // END OF LIST }; @@ -496,6 +501,9 @@ const memberlabel_t SpriteLabels[]= { "lotag", SPRITE_LOTAG, 0, 0, 0 }, { "hitag", SPRITE_HITAG, 0, 0, 0 }, { "extra", SPRITE_EXTRA, 0, 0, 0 }, +// aliases + { "filler", SPRITE_DETAIL, 1, 0, 0 }, + { "", -1, 0, 0, 0 } // END OF LIST }; @@ -555,7 +563,7 @@ static void C_InitHashes() hash_init(&h_sector); for (i=0; SectorLabels[i].lId >=0; i++) hash_add(&h_sector,SectorLabels[i].name,i, 0); - hash_add(&h_sector,"filler", SECTOR_ALIGNTO, 0); +// hash_add(&h_sector,"filler", SECTOR_ALIGNTO, 0); hash_init(&h_wall); for (i=0; WallLabels[i].lId >=0; i++) @@ -564,7 +572,7 @@ static void C_InitHashes() hash_init(&h_sprite); for (i=0; SpriteLabels[i].lId >=0; i++) hash_add(&h_sprite,SpriteLabels[i].name,i, 0); - hash_add(&h_sprite,"filler", SPRITE_DETAIL, 0); +// hash_add(&h_sprite,"filler", SPRITE_DETAIL, 0); hash_init(&h_iter); for (i=0; iter_tokens[i].val >=0; i++) diff --git a/polymer/eduke32/source/m32exec.c b/polymer/eduke32/source/m32exec.c index d9f76bbd4..22a87cf88 100644 --- a/polymer/eduke32/source/m32exec.c +++ b/polymer/eduke32/source/m32exec.c @@ -25,15 +25,16 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "m32script.h" #include "m32def.h" -#include "macros.h" + #include "sounds_mapster32.h" #include "fx_man.h" -//#include "scriplib.h" -//#include "osdcmds.h" #include "osd.h" #include "keys.h" +// from macros.h +#define rnd(X) ((krand()>>8)>=(255-(X))) + vmstate_t vm; vmstate_t vm_default = { diff --git a/polymer/eduke32/source/mapster32.h b/polymer/eduke32/source/mapster32.h index ce906157e..66fdc8613 100644 --- a/polymer/eduke32/source/mapster32.h +++ b/polymer/eduke32/source/mapster32.h @@ -39,8 +39,6 @@ extern int32_t ydim16, xdimgame, ydimgame, bppgame, xdim2d, ydim2d; extern int16_t editstatus, searchit; extern int32_t searchx, searchy, osearchx, osearchy; //search input -extern int16_t searchsector, searchwall, searchstat; //search output -extern int16_t searchbottomwall; #define COLOR_RED 248 #define COLOR_WHITE 31 @@ -59,7 +57,6 @@ int32_t nextvoxid = 0; extern int32_t whitecol; extern char vgapal16[4*256]; -extern void AutoAlignWalls(int32_t nWall0, int32_t ply); extern char changechar(char dachar, int32_t dadir, char smooshyalign, char boundcheck); extern void updatenumsprites(void); diff --git a/polymer/eduke32/source/old.diff b/polymer/eduke32/source/old.diff index 6cfa24d39..2c5e3711d 100644 --- a/polymer/eduke32/source/old.diff +++ b/polymer/eduke32/source/old.diff @@ -175,3 +175,21 @@ Index: astub.c + } + } + */ +@@ -5532,1 +5532,17 @@ + ///__unused_keys__ ++ /* if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_G]) // ' g ++ { ++ keystatus[KEYSC_G] = 0; ++ tabgraphic++; ++ if (tabgraphic > 2) tabgraphic = 0; ++ if (tabgraphic) message("Graphics ON"); ++ else message("Graphics OFF"); ++ }*/ ++ ++ /* if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_R]) // ' r ++ { ++ keystatus[KEYSC_R] = 0; ++ framerateon=!framerateon; ++ if (framerateon) message("Framerate ON"); ++ else message("Framerate OFF"); ++ }*/