mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-24 10:40:46 +00:00
A week worth of Mapster hacking: first, there is an experimental side view mode toggled with [F3]. Nav keys are {QWAZ}, MMB and RMB. Use with care because it is still in construction. The sector selection routines have been rewritten -- it is now possible to paste the selection into a room and a new inner loop will be added automatically (MickyC's idea). Adds m32script commands drawline16z and drawcircle16z.
git-svn-id: https://svn.eduke32.com/eduke32@1730 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
c0fd65345e
commit
639cabc0e6
15 changed files with 1669 additions and 756 deletions
|
@ -101,6 +101,7 @@ void initprintf(const char *, ...);
|
|||
void debugprintf(const char *,...);
|
||||
|
||||
int32_t handleevents(void);
|
||||
extern void (*after_handleevents_hook)(void);
|
||||
extern inline void idle(void);
|
||||
extern inline void idle_waitevent(void);
|
||||
extern inline void idle_waitevent_timeout(uint32_t timeout);
|
||||
|
|
|
@ -488,6 +488,7 @@ int32_t hitscan(const vec3_t *sv, int16_t sectnum, int32_t vx, int32_t vy, int
|
|||
int32_t neartag(int32_t xs, int32_t ys, int32_t zs, int16_t sectnum, int16_t ange, int16_t *neartagsector, int16_t *neartagwall, int16_t *neartagsprite, int32_t *neartaghitdist, int32_t neartagrange, char tagsearch);
|
||||
int32_t cansee(int32_t x1, int32_t y1, int32_t z1, int16_t sect1, int32_t x2, int32_t y2, int32_t z2, int16_t sect2);
|
||||
void updatesector(int32_t x, int32_t y, int16_t *sectnum);
|
||||
void updatesectorexclude(int32_t x, int32_t y, int16_t *sectnum, const uint8_t *excludesectbitmap);
|
||||
void updatesectorz(int32_t x, int32_t y, int32_t z, int16_t *sectnum);
|
||||
int32_t inside(int32_t x, int32_t y, int16_t sectnum);
|
||||
void dragpoint(int16_t pointhighlight, int32_t dax, int32_t day);
|
||||
|
@ -584,10 +585,10 @@ void qsetmode640350(void);
|
|||
void qsetmode640480(void);
|
||||
void qsetmodeany(int32_t,int32_t);
|
||||
void clear2dscreen(void);
|
||||
void draw2dgrid(int32_t posxe, int32_t posye, int16_t ange, int32_t zoome, int16_t gride);
|
||||
void draw2dscreen(int32_t posxe, int32_t posye, int16_t ange, int32_t zoome, int16_t gride);
|
||||
void drawline16(int32_t x1, int32_t y1, int32_t x2, int32_t y2, char col);
|
||||
void drawcircle16(int32_t x1, int32_t y1, int32_t r, char col);
|
||||
void draw2dgrid(int32_t posxe, int32_t posye, int32_t posze, int16_t ange, int32_t zoome, int16_t gride);
|
||||
void draw2dscreen(const vec3_t *pos, int16_t ange, int32_t zoome, int16_t gride);
|
||||
int32_t drawline16(int32_t x1, int32_t y1, int32_t x2, int32_t y2, char col);
|
||||
void drawcircle16(int32_t x1, int32_t y1, int32_t r, int32_t eccen, char col);
|
||||
|
||||
int32_t setrendermode(int32_t renderer);
|
||||
int32_t getrendermode(void);
|
||||
|
|
|
@ -67,6 +67,20 @@ extern int32_t m32_osd_tryscript;
|
|||
extern int32_t showheightindicators;
|
||||
extern int32_t showambiencesounds;
|
||||
|
||||
// editor side view
|
||||
extern int32_t m32_sideview;
|
||||
extern int32_t m32_sideelev;
|
||||
extern int16_t m32_sideang;
|
||||
extern int32_t m32_sidecos, m32_sidesin;
|
||||
extern int32_t m32_swcnt;
|
||||
extern int16_t *m32_wallsprite;
|
||||
extern int8_t sideview_reversehrot;
|
||||
extern inline int32_t scalescreeny(int32_t sy);
|
||||
extern void screencoords(int32_t *xres, int32_t *yres, int32_t x, int32_t y, int32_t zoome);
|
||||
extern inline int32_t getscreenvdisp(int32_t bz, int32_t zoome);
|
||||
extern void setup_sideview_sincos(void);
|
||||
extern void m32_setkeyfilter(int32_t on);
|
||||
|
||||
extern int32_t ExtInit(void);
|
||||
extern int32_t ExtPreInit(int32_t argc,const char **argv);
|
||||
extern void ExtUnInit(void);
|
||||
|
|
|
@ -24,6 +24,7 @@ int32_t joyaxespresent=0;
|
|||
void(*keypresscallback)(int32_t,int32_t) = 0;
|
||||
void(*mousepresscallback)(int32_t,int32_t) = 0;
|
||||
void(*joypresscallback)(int32_t,int32_t) = 0;
|
||||
void (*after_handleevents_hook)(void) = 0;
|
||||
|
||||
extern int16_t brightness;
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -216,13 +216,14 @@ int32_t loadsetup(const char *fn)
|
|||
|
||||
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 = !!Batoi(val);
|
||||
|
||||
if (readconfig(fp, "mousenavigationaccel", val, VL) > 0) pk_uedaccel = Batoi(val);
|
||||
|
||||
if (readconfig(fp, "quickmapcycling", val, VL) > 0) quickmapcycling = Batoi(val);
|
||||
|
||||
if (readconfig(fp, "revertCTRL", val, VL) > 0) revertCTRL = Batoi(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, "scrollamount", val, VL) > 0) scrollamount = Batoi(val);
|
||||
|
||||
|
@ -242,10 +243,10 @@ int32_t loadsetup(const char *fn)
|
|||
graphicsmode = min(max(Batoi(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, "ambiencetoggle", val, VL) > 0) AmbienceToggle = !!Batoi(val);
|
||||
if (readconfig(fp, "parlock", val, VL) > 0) ParentalLock = !!Batoi(val);
|
||||
|
||||
if (readconfig(fp, "osdtryscript", val, VL) > 0) m32_osd_tryscript = Batoi(val);
|
||||
if (readconfig(fp, "osdtryscript", val, VL) > 0) m32_osd_tryscript = !!Batoi(val);
|
||||
|
||||
for (i=0; i<256; i++)
|
||||
remap[i]=i;
|
||||
|
@ -399,12 +400,15 @@ int32_t writesetup(const char *fn)
|
|||
"; 1 - Yes\n"
|
||||
"quickmapcycling = %d\n"
|
||||
"\n"
|
||||
"; Reverse meaning of Q and W keys in side view mode\n"
|
||||
"sideview_reversehorizrot = %d\n"
|
||||
"\n"
|
||||
"; Revert CTRL for tile selction\n"
|
||||
"; 0 - WHEEL:scrolling, CTRL+WHEEL:zooming\n"
|
||||
"; 1 - CTRL+WHEEL:scrolling, WHEEL:zooming\n"
|
||||
"revertCTRL = %d\n"
|
||||
"\n"
|
||||
"; Scroll amount for WHEEL in the tile selcetion\n"
|
||||
"; Scroll amount for WHEEL in the tile selection\n"
|
||||
"scrollamount = %d\n"
|
||||
"\n"
|
||||
"; Turning acceleration+declaration\n"
|
||||
|
@ -480,10 +484,9 @@ int32_t writesetup(const char *fn)
|
|||
#endif
|
||||
// "; Console key scancode, in hex\n"
|
||||
"keyconsole = %X\n"
|
||||
"; example: make 'Q' function as CapsLock, KP. as AltGr\n"
|
||||
"; and KP0 as KP5 (counters inability to pan using Shift-KP5-KP8/2\n"
|
||||
"; in 3D mode)\n"
|
||||
"; remap = 10-3A,52-4C,53-B8\n"
|
||||
"; example: make KP0 function as KP5 (counters inability\n"
|
||||
"; inability to pan using Shift-KP5-KP8/2 in 3D mode)\n"
|
||||
"; remap = 52-4C\n"
|
||||
"remap = ",
|
||||
|
||||
forcesetup, fullscreen, xdim2d, ydim2d, xdimgame, ydimgame, bppgame, vsync,
|
||||
|
@ -506,6 +509,7 @@ int32_t writesetup(const char *fn)
|
|||
option[7]>>4, option[2],
|
||||
#endif
|
||||
option[3], msens, unrealedlook, pk_uedaccel, quickmapcycling,
|
||||
sideview_reversehrot,
|
||||
revertCTRL,scrollamount,pk_turnaccel,pk_turndecel,autosave,
|
||||
showheightindicators,showambiencesounds,graphicsmode,
|
||||
MixRate,AmbienceToggle,ParentalLock, !!m32_osd_tryscript,
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1829,6 +1829,9 @@ int32_t handleevents(void)
|
|||
|
||||
#undef SetKey
|
||||
|
||||
if (after_handleevents_hook)
|
||||
after_handleevents_hook();
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
|
|
@ -764,6 +764,9 @@ int32_t handleevents(void)
|
|||
|
||||
sampletimer();
|
||||
|
||||
if (after_handleevents_hook)
|
||||
after_handleevents_hook();
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,9 +22,10 @@ define SFACTORSTEPS 100
|
|||
|
||||
// color of various drawing enhancements
|
||||
define PREVIEW_DRAW_COLOR 11
|
||||
gamevar showpal 0 0
|
||||
|
||||
// 2d mode corruption checker interval, 120 = 1 second
|
||||
gamevar checkinterval 600 0
|
||||
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
|
||||
|
@ -72,14 +73,15 @@ definequote LIGHTQUOTE light %d %d %d %d %d %d %d %d %d %d %d %d %d %d
|
|||
|
||||
// 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: sector[%d].wallptr=%d, endwall=%d!!!
|
||||
definequote 24 WALL[%d].NEXTWALL=%d out of range: numwalls=%d!!!
|
||||
definequote 25 WALL[%d].NEXTSECTOR=%d out of range: numsectors=%d!!!
|
||||
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
|
||||
|
@ -477,7 +479,7 @@ defstate connectlocators
|
|||
{
|
||||
set j ar[i]
|
||||
set k i, add k 1, set k ar[k]
|
||||
drawline16b sprite[j].x sprite[j].y sprite[k].x sprite[k].y drawcol
|
||||
drawline16z sprite[j].x sprite[j].y sprite[j].z sprite[k].x sprite[k].y sprite[k].z drawcol
|
||||
}
|
||||
ends
|
||||
|
||||
|
@ -504,13 +506,12 @@ defstate draw_prlightprojections
|
|||
|
||||
set x .x, set x2 .x, set y .y, set y2 .y
|
||||
add x d, add y d, sub x2 d, sub y2 d
|
||||
drawline16b x y x2 y2 c
|
||||
drawline16z x y .z x2 y2 .z c
|
||||
|
||||
set x .x, set x2 .x, set y .y, set y2 .y
|
||||
add x d, sub y d, sub x2 d, add y2 d
|
||||
drawline16b x y x2 y2 c
|
||||
|
||||
drawcircle16b .x .y .hitag c
|
||||
drawline16z x y .z x2 y2 .z c
|
||||
drawcircle16z .x .y .z .hitag c
|
||||
}
|
||||
else ife .lotag 50 // spot light
|
||||
{
|
||||
|
@ -543,8 +544,8 @@ defstate draw_prlightprojections
|
|||
add xx[0] dx, add yy[0] dy
|
||||
add xx[1] dx, add yy[1] dy
|
||||
|
||||
drawline16b .x .y xx[0] yy[0] c
|
||||
drawline16b .x .y xx[1] yy[1] c
|
||||
drawline16z .x .y .z xx[0] yy[0] .z c
|
||||
drawline16z .x .y .z xx[1] yy[1] .z c
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -559,7 +560,7 @@ defstate previewdoors2d
|
|||
set valid 0
|
||||
set sect searchsector
|
||||
|
||||
ifge sect 0
|
||||
ifge sect 0 ifl sect numsectors
|
||||
{
|
||||
set lo sector[sect].lotag
|
||||
ife lo 23 set valid 1
|
||||
|
@ -630,7 +631,7 @@ defstate previewdoors2d
|
|||
for i range numw
|
||||
{
|
||||
set j i, add j 1
|
||||
drawline16b xx[i] yy[i] xx[j] yy[j] PREVIEW_DRAW_COLOR
|
||||
drawline16z xx[i] yy[i] sector[sect].floorz xx[j] yy[j] sector[sect].floorz PREVIEW_DRAW_COLOR
|
||||
}
|
||||
set drawlinepat 0xffffffff
|
||||
}
|
||||
|
@ -1014,10 +1015,13 @@ ends
|
|||
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
|
||||
{
|
||||
|
@ -1044,26 +1048,43 @@ defstate corruptchk
|
|||
set k 0
|
||||
}
|
||||
|
||||
and ok k
|
||||
|
||||
ifn k 0
|
||||
{
|
||||
sub endwall 1
|
||||
for j wallsofsector i
|
||||
{
|
||||
ifge wall[j].point2 sector[i].wallptr ifl wall[i].point2 endwall nullop else
|
||||
ifge wall[j].point2 sector[i].wallptr ifle wall[i].point2 endwall nullop else
|
||||
{
|
||||
qsprintf TQUOTE 23 j wall[j].point2 i sector[i].wallptr endwall
|
||||
qsprintf TQUOTE 23 j wall[j].point2 sector[i].wallptr endwall
|
||||
quote TQUOTE printmessage16 TQUOTE
|
||||
set ok 0
|
||||
}
|
||||
|
||||
ifge wall[i].nextwall numwalls
|
||||
ifge wall[j].nextwall numwalls
|
||||
{
|
||||
qsprintf TQUOTE 24 j wall[j].nextwall numwalls
|
||||
quote TQUOTE printmessage16 TQUOTE
|
||||
set ok 0
|
||||
}
|
||||
|
||||
ifge wall[i].nextsector numsectors
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1075,6 +1096,7 @@ defstate corruptchk
|
|||
{
|
||||
qsprintf TQUOTE 26 i .sectnum
|
||||
quote TQUOTE printmessage16 TQUOTE
|
||||
set ok 0
|
||||
}
|
||||
|
||||
ifge .picnum 0 ifl .picnum MAXTILES nullop else
|
||||
|
@ -1082,14 +1104,19 @@ defstate corruptchk
|
|||
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
|
||||
|
||||
ifge cursectnum 0
|
||||
{
|
||||
|
@ -1106,6 +1133,25 @@ onevent EVENT_DRAW2DSCREEN
|
|||
set d2d_lastcheck totalclock
|
||||
state corruptchk
|
||||
}
|
||||
|
||||
ifn showpal 0
|
||||
{
|
||||
set xx 100
|
||||
for tmp range 256
|
||||
{
|
||||
drawline16 xx 100 xx 200 -tmp
|
||||
add xx 1
|
||||
drawline16 xx 100 xx 200 -tmp
|
||||
add xx 1
|
||||
ifge tmp 240
|
||||
{
|
||||
drawline16 xx 100 xx 200 -tmp
|
||||
add xx 1
|
||||
drawline16 xx 100 xx 200 -tmp
|
||||
add xx 1
|
||||
}
|
||||
}
|
||||
}
|
||||
endevent
|
||||
|
||||
|
||||
|
|
|
@ -4137,6 +4137,8 @@ ENDFOR1:
|
|||
{
|
||||
i = insertsprite(sect,0);
|
||||
Bmemcpy(&sprite[i], &sprite[linebegspr], sizeof(spritetype));
|
||||
sprite[i].sectnum = sect;
|
||||
|
||||
sprite[i].x = dax, sprite[i].y = day;
|
||||
sprite[i].picnum = t;
|
||||
sprite[i].ang = daang;
|
||||
|
@ -6710,7 +6712,7 @@ static void Keys2d(void)
|
|||
drawgradient();
|
||||
showspritedata(pointhighlight&16383, 0);
|
||||
}
|
||||
else if (linehighlight >= 0 && ((bstatus&1) || sectorofwall(linehighlight)==cursectornum))
|
||||
else if (linehighlight >= 0 /* && ((bstatus&1) || sectorofwall(linehighlight)==cursectornum)*/)
|
||||
{
|
||||
drawgradient();
|
||||
showwalldata(linehighlight, 0);
|
||||
|
@ -6823,14 +6825,24 @@ static void Keys2d(void)
|
|||
{
|
||||
// PK_
|
||||
if (numhelppages>0)
|
||||
{
|
||||
m32_setkeyfilter(0);
|
||||
IntegratedHelp();
|
||||
m32_setkeyfilter(1);
|
||||
}
|
||||
else
|
||||
printmessage16("m32help.hlp invalid or not found!");
|
||||
}
|
||||
|
||||
if (PRESSED_KEYSC(F2))
|
||||
if (g_numsounds > 0)
|
||||
{
|
||||
m32_setkeyfilter(0);
|
||||
SoundDisplay();
|
||||
m32_setkeyfilter(1);
|
||||
}
|
||||
|
||||
// F3: side view toggle (handled in build.c)
|
||||
|
||||
getpoint(searchx,searchy, &mousxplc,&mousyplc);
|
||||
ppointhighlight = getpointhighlight(mousxplc,mousyplc, ppointhighlight);
|
||||
|
@ -7739,6 +7751,11 @@ static int32_t osdcmd_vars_pk(const osdfuncparm_t *parm)
|
|||
m32_osd_tryscript = !m32_osd_tryscript;
|
||||
OSD_Printf("Try M32 script execution on invalid OSD command: %s\n", m32_osd_tryscript?"on":"off");
|
||||
}
|
||||
else if (!Bstrcasecmp(parm->name, "sideview_reversehorizrot"))
|
||||
{
|
||||
sideview_reversehrot = !sideview_reversehrot;
|
||||
OSD_Printf("Side view reverse horizontal rotation: %s\n", sideview_reversehrot?"on":"off");
|
||||
}
|
||||
else if (!Bstrcasecmp(parm->name, "script_expertmode"))
|
||||
{
|
||||
m32_script_expertmode = !m32_script_expertmode;
|
||||
|
@ -8060,6 +8077,7 @@ static int32_t registerosdcommands(void)
|
|||
OSD_RegisterFunction("enableevent", "enableevent <all|EVENT_...|(event number)>", osdcmd_endisableevent);
|
||||
OSD_RegisterFunction("disableevent", "disableevent <all|EVENT_...|(event number)>", osdcmd_endisableevent);
|
||||
OSD_RegisterFunction("osd_tryscript", "osd_tryscript: toggles execution of M32 script on invalid OSD command", osdcmd_vars_pk);
|
||||
OSD_RegisterFunction("sideview_reversehorizrot", "sideview_reversehorizrot: toggles reversion of Q and W keys in side view mode", osdcmd_vars_pk);
|
||||
#ifdef DEBUGGINGAIDS
|
||||
OSD_RegisterFunction("disasm", "disasm [s|e] <state or event number>", osdcmd_disasm);
|
||||
#endif
|
||||
|
@ -9352,7 +9370,7 @@ void ExtPreCheckKeys(void) // just before drawrooms
|
|||
// if (cursectornum >= 0)
|
||||
// fillsector(cursectornum, 31);
|
||||
|
||||
if (graphicsmode && zoom >= 256)
|
||||
if (graphicsmode && !m32_sideview && zoom >= 256)
|
||||
{
|
||||
for (i=ii=0; i<MAXSPRITES && ii < numsprites; i++)
|
||||
{
|
||||
|
@ -9469,25 +9487,29 @@ void ExtPreCheckKeys(void) // just before drawrooms
|
|||
}
|
||||
|
||||
if (showambiencesounds)
|
||||
for (i=0; i<numsprites; i++)
|
||||
if (sprite[i].picnum == MUSICANDSFX /*&& zoom >= 256*/ && sprite[i].sectnum != MAXSECTORS)
|
||||
{
|
||||
for (ii=0; ii<numsectors; ii++)
|
||||
for (i=headspritesect[ii]; i>=0; i=nextspritesect[i])
|
||||
if (sprite[i].picnum == MUSICANDSFX /*&& zoom >= 256*/ )
|
||||
{
|
||||
if (showambiencesounds==1 && sprite[i].sectnum!=cursectnum)
|
||||
continue;
|
||||
|
||||
xp1 = mulscale14(sprite[i].x-pos.x,zoom);
|
||||
yp1 = mulscale14(sprite[i].y-pos.y,zoom);
|
||||
screencoords(&xp1,&yp1, sprite[i].x-pos.x,sprite[i].y-pos.y, zoom);
|
||||
if (m32_sideview)
|
||||
yp1 += getscreenvdisp(sprite[i].z-pos.z, zoom);
|
||||
|
||||
radius = mulscale14(sprite[i].hitag,zoom);
|
||||
col = 6;
|
||||
if (i+16384 == pointhighlight)
|
||||
if (totalclock & 32) col += (2<<2);
|
||||
drawlinepat = 0xf0f0f0f0;
|
||||
drawcircle16(halfxdim16+xp1, midydim16+yp1, radius, editorcolors[(int32_t)col]);
|
||||
drawcircle16(halfxdim16+xp1, midydim16+yp1, radius, scalescreeny(16384), editorcolors[(int32_t)col]);
|
||||
drawlinepat = 0xffffffff;
|
||||
// radius = mulscale15(sprite[i].hitag,zoom);
|
||||
// drawcircle16(halfxdim16+xp1, midydim16+yp1, radius, col);
|
||||
}
|
||||
}
|
||||
|
||||
enddrawing();
|
||||
}
|
||||
|
|
|
@ -409,8 +409,10 @@ const char *keyw[] =
|
|||
|
||||
"drawline16",
|
||||
"drawline16b",
|
||||
"drawline16z",
|
||||
"drawcircle16",
|
||||
"drawcircle16b",
|
||||
"drawcircle16z",
|
||||
"rotatesprite16",
|
||||
"rotatesprite",
|
||||
"setgamepalette",
|
||||
|
@ -3401,14 +3403,21 @@ repeatcase:
|
|||
|
||||
case CON_DRAWLINE16:
|
||||
case CON_DRAWLINE16B:
|
||||
case CON_DRAWLINE16Z:
|
||||
case CON_DRAWCIRCLE16:
|
||||
case CON_DRAWCIRCLE16B:
|
||||
case CON_DRAWCIRCLE16Z:
|
||||
if (cs.parsingEventOfs < 0 && cs.currentStateIdx < 0)
|
||||
{
|
||||
C_ReportError(ERROR_EVENTONLY);
|
||||
g_numCompilerErrors++;
|
||||
}
|
||||
C_GetManyVars((tw==CON_DRAWLINE16||tw==CON_DRAWLINE16B) ? 5 : 4);
|
||||
if (tw==CON_DRAWLINE16 || tw==CON_DRAWLINE16B || tw==CON_DRAWCIRCLE16Z)
|
||||
C_GetManyVars(5);
|
||||
else if (tw==CON_DRAWLINE16Z)
|
||||
C_GetManyVars(7);
|
||||
else
|
||||
C_GetManyVars(4);
|
||||
break;
|
||||
|
||||
case CON_ROTATESPRITE16:
|
||||
|
|
|
@ -531,8 +531,10 @@ enum ScriptKeywords_t
|
|||
/// CON_DIGITALNUMBERZ,
|
||||
CON_DRAWLINE16,
|
||||
CON_DRAWLINE16B,
|
||||
CON_DRAWLINE16Z,
|
||||
CON_DRAWCIRCLE16,
|
||||
CON_DRAWCIRCLE16B,
|
||||
CON_DRAWCIRCLE16Z,
|
||||
CON_ROTATESPRITE16,
|
||||
CON_ROTATESPRITE,
|
||||
CON_SETGAMEPALETTE,
|
||||
|
|
|
@ -2822,19 +2822,27 @@ dodefault:
|
|||
// ^^^
|
||||
case CON_DRAWLINE16:
|
||||
case CON_DRAWLINE16B:
|
||||
case CON_DRAWLINE16Z:
|
||||
insptr++;
|
||||
{
|
||||
int32_t x1=Gv_GetVarX(*insptr++), y1=Gv_GetVarX(*insptr++);
|
||||
int32_t z1=tw==CON_DRAWLINE16Z?Gv_GetVarX(*insptr++):0;
|
||||
int32_t x2=Gv_GetVarX(*insptr++), y2=Gv_GetVarX(*insptr++);
|
||||
int32_t z2=tw==CON_DRAWLINE16Z?Gv_GetVarX(*insptr++):0;
|
||||
int32_t col=Gv_GetVarX(*insptr++), odrawlinepat=drawlinepat;
|
||||
int32_t xofs=0, yofs=0;
|
||||
|
||||
if (tw==CON_DRAWLINE16B)
|
||||
if (tw==CON_DRAWLINE16B || tw==CON_DRAWLINE16Z)
|
||||
{
|
||||
x1 = mulscale14(x1-pos.x,zoom);
|
||||
y1 = mulscale14(y1-pos.y,zoom);
|
||||
x2 = mulscale14(x2-pos.x,zoom);
|
||||
y2 = mulscale14(y2-pos.y,zoom);
|
||||
screencoords(&x1,&y1, x1-pos.x,y1-pos.y, zoom);
|
||||
screencoords(&x2,&y2, x2-pos.x,y2-pos.y, zoom);
|
||||
|
||||
if (tw==CON_DRAWLINE16Z && m32_sideview)
|
||||
{
|
||||
y1 += getscreenvdisp(z1-pos.z,zoom);
|
||||
y2 += getscreenvdisp(z2-pos.z,zoom);
|
||||
}
|
||||
|
||||
xofs = halfxdim16;
|
||||
yofs = midydim16;
|
||||
}
|
||||
|
@ -2847,24 +2855,28 @@ dodefault:
|
|||
|
||||
case CON_DRAWCIRCLE16:
|
||||
case CON_DRAWCIRCLE16B:
|
||||
case CON_DRAWCIRCLE16Z:
|
||||
insptr++;
|
||||
{
|
||||
int32_t x1=Gv_GetVarX(*insptr++), y1=Gv_GetVarX(*insptr++);
|
||||
int32_t z1 = tw==CON_DRAWCIRCLE16Z ? Gv_GetVarX(*insptr++) : 0;
|
||||
int32_t r=Gv_GetVarX(*insptr++);
|
||||
int32_t col=Gv_GetVarX(*insptr++), odrawlinepat=drawlinepat;
|
||||
int32_t xofs=0, yofs=0;
|
||||
int32_t xofs=0, yofs=0, eccen=16384;
|
||||
|
||||
if (tw==CON_DRAWCIRCLE16B)
|
||||
{
|
||||
x1 = mulscale14(x1-pos.x,zoom);
|
||||
y1 = mulscale14(y1-pos.y,zoom);
|
||||
screencoords(&x1,&y1, x1-pos.x,y1-pos.y, zoom);
|
||||
if (m32_sideview)
|
||||
y1 += getscreenvdisp(z1, zoom);
|
||||
r = mulscale14(r,zoom);
|
||||
eccen = scalescreeny(eccen);
|
||||
xofs = halfxdim16;
|
||||
yofs = midydim16;
|
||||
}
|
||||
|
||||
drawlinepat = m32_drawlinepat;
|
||||
drawcircle16(xofs+x1, yofs+y1, r, col>=0?editorcolors[col&15]:(-col&255));
|
||||
drawcircle16(xofs+x1, yofs+y1, r, eccen, col>=0?editorcolors[col&15]:(-col&255));
|
||||
drawlinepat = odrawlinepat;
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -617,6 +617,7 @@ static void Gv_AddSystemVars(void)
|
|||
Gv_NewVar("halfxdim16", (intptr_t)&halfxdim16, GAMEVAR_READONLY | GAMEVAR_INTPTR | GAMEVAR_SYSTEM);
|
||||
Gv_NewVar("midydim16", (intptr_t)&midydim16, GAMEVAR_READONLY | GAMEVAR_INTPTR | GAMEVAR_SYSTEM);
|
||||
Gv_NewVar("ydim16",(intptr_t)&ydim16, GAMEVAR_INTPTR | GAMEVAR_SYSTEM | GAMEVAR_READONLY);
|
||||
Gv_NewVar("m32_sideview",(intptr_t)&m32_sideview, GAMEVAR_INTPTR | GAMEVAR_SYSTEM | GAMEVAR_READONLY);
|
||||
|
||||
Gv_NewVar("SV1",(intptr_t)&m32_sortvar1, GAMEVAR_INTPTR | GAMEVAR_SYSTEM | GAMEVAR_READONLY);
|
||||
Gv_NewVar("SV2",(intptr_t)&m32_sortvar2, GAMEVAR_INTPTR | GAMEVAR_SYSTEM | GAMEVAR_READONLY);
|
||||
|
|
Loading…
Reference in a new issue