abebbdd698
git-svn-id: svn://kolibrios.org@8557 a494cfbc-eb01-0410-851d-a64ba20cac60
870 lines
21 KiB
C++
Executable File
870 lines
21 KiB
C++
Executable File
// WL_DEBUG.C
|
|
|
|
#ifdef _WIN32
|
|
#include <io.h>
|
|
#else
|
|
#include <unistd.h>
|
|
#endif
|
|
|
|
#include "wl_def.h"
|
|
#pragma hdrstop
|
|
|
|
#ifdef USE_CLOUDSKY
|
|
#include "wl_cloudsky.h"
|
|
#endif
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
LOCAL CONSTANTS
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
#define VIEWTILEX (viewwidth/16)
|
|
#define VIEWTILEY (viewheight/16)
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
GLOBAL VARIABLES
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
#ifdef DEBUGKEYS
|
|
|
|
int DebugKeys (void);
|
|
|
|
|
|
// from WL_DRAW.C
|
|
|
|
void ScalePost();
|
|
void SimpleScaleShape (int xcenter, int shapenum, unsigned height);
|
|
|
|
/*
|
|
=============================================================================
|
|
|
|
LOCAL VARIABLES
|
|
|
|
=============================================================================
|
|
*/
|
|
|
|
int maporgx;
|
|
int maporgy;
|
|
enum {mapview,tilemapview,actoratview,visview} viewtype;
|
|
|
|
void ViewMap (void);
|
|
|
|
//===========================================================================
|
|
|
|
/*
|
|
==================
|
|
=
|
|
= CountObjects
|
|
=
|
|
==================
|
|
*/
|
|
|
|
void CountObjects (void)
|
|
{
|
|
int i,total,count,active,inactive,doors;
|
|
objtype *obj;
|
|
|
|
CenterWindow (17,7);
|
|
active = inactive = count = doors = 0;
|
|
|
|
US_Print ("Total statics :");
|
|
total = (int)(laststatobj-&statobjlist[0]);
|
|
US_PrintUnsigned (total);
|
|
|
|
char str[60];
|
|
sprintf(str,"\nlaststatobj=%.8X",(int32_t)(uintptr_t)laststatobj);
|
|
US_Print(str);
|
|
|
|
US_Print ("\nIn use statics:");
|
|
for (i=0;i<total;i++)
|
|
{
|
|
if (statobjlist[i].shapenum != -1)
|
|
count++;
|
|
else
|
|
doors++; //debug
|
|
}
|
|
US_PrintUnsigned (count);
|
|
|
|
US_Print ("\nDoors :");
|
|
US_PrintUnsigned (doornum);
|
|
|
|
for (obj=player->next;obj;obj=obj->next)
|
|
{
|
|
if (obj->active)
|
|
active++;
|
|
else
|
|
inactive++;
|
|
}
|
|
|
|
US_Print ("\nTotal actors :");
|
|
US_PrintUnsigned (active+inactive);
|
|
|
|
US_Print ("\nActive actors :");
|
|
US_PrintUnsigned (active);
|
|
|
|
VW_UpdateScreen();
|
|
IN_Ack ();
|
|
}
|
|
|
|
|
|
//===========================================================================
|
|
|
|
/*
|
|
===================
|
|
=
|
|
= PictureGrabber
|
|
=
|
|
===================
|
|
*/
|
|
void PictureGrabber (void)
|
|
{
|
|
static char fname[] = "WSHOT000.BMP";
|
|
|
|
for(int i = 0; i < 1000; i++)
|
|
{
|
|
fname[7] = i % 10 + '0';
|
|
fname[6] = (i / 10) % 10 + '0';
|
|
fname[5] = i / 100 + '0';
|
|
int file = open(fname, O_RDONLY | O_BINARY);
|
|
if(file == -1) break; // file does not exist, so use that filename
|
|
close(file);
|
|
}
|
|
|
|
// overwrites WSHOT999.BMP if all wshot files exist
|
|
|
|
SDL_SaveBMP(curSurface, fname);
|
|
|
|
CenterWindow (18,2);
|
|
US_PrintCentered ("Screenshot taken");
|
|
VW_UpdateScreen();
|
|
IN_Ack();
|
|
}
|
|
|
|
|
|
//===========================================================================
|
|
|
|
/*
|
|
===================
|
|
=
|
|
= BasicOverhead
|
|
=
|
|
===================
|
|
*/
|
|
|
|
void BasicOverhead (void)
|
|
{
|
|
int x, y, z, offx, offy;
|
|
|
|
z = 128/MAPSIZE; // zoom scale
|
|
offx = 320/2;
|
|
offy = (160-MAPSIZE*z)/2;
|
|
|
|
#ifdef MAPBORDER
|
|
int temp = viewsize;
|
|
NewViewSize(16);
|
|
DrawPlayBorder();
|
|
#endif
|
|
|
|
// right side (raw)
|
|
|
|
for(x=0;x<MAPSIZE;x++)
|
|
for(y=0;y<MAPSIZE;y++)
|
|
VWB_Bar(x*z+offx, y*z+offy,z,z,(unsigned)(uintptr_t)actorat[x][y]);
|
|
|
|
// left side (filtered)
|
|
|
|
uintptr_t tile;
|
|
int color;
|
|
offx -= 128;
|
|
|
|
for(x=0;x<MAPSIZE;x++)
|
|
{
|
|
for(y=0;y<MAPSIZE;y++)
|
|
{
|
|
tile = (uintptr_t)actorat[x][y];
|
|
if (ISPOINTER(tile) && ((objtype *)tile)->flags&FL_SHOOTABLE) color = 72; // enemy
|
|
else if (!tile || ISPOINTER(tile))
|
|
{
|
|
if (spotvis[x][y]) color = 111; // visable
|
|
else color = 0; // nothing
|
|
}
|
|
else if (MAPSPOT(x,y,1) == PUSHABLETILE) color = 171; // pushwall
|
|
else if (tile == 64) color = 158; // solid obj
|
|
else if (tile < 128) color = 154; // walls
|
|
else if (tile < 256) color = 146; // doors
|
|
|
|
VWB_Bar(x*z+offx, y*z+offy,z,z,color);
|
|
}
|
|
}
|
|
|
|
VWB_Bar(player->tilex*z+offx,player->tiley*z+offy,z,z,15); // player
|
|
|
|
// resize the border to match
|
|
|
|
VW_UpdateScreen();
|
|
IN_Ack();
|
|
|
|
#ifdef MAPBORDER
|
|
NewViewSize(temp);
|
|
DrawPlayBorder();
|
|
#endif
|
|
}
|
|
|
|
|
|
//===========================================================================
|
|
|
|
/*
|
|
================
|
|
=
|
|
= ShapeTest
|
|
=
|
|
================
|
|
*/
|
|
|
|
void ShapeTest (void)
|
|
{
|
|
//TODO
|
|
#if NOTYET
|
|
extern word NumDigi;
|
|
extern word *DigiList;
|
|
extern int postx;
|
|
extern int postwidth;
|
|
extern byte *postsource;
|
|
static char buf[10];
|
|
|
|
boolean done;
|
|
ScanCode scan;
|
|
int i,j,k,x;
|
|
longword l;
|
|
byte *addr;
|
|
soundnames sound;
|
|
// PageListStruct far *page;
|
|
|
|
CenterWindow(20,16);
|
|
VW_UpdateScreen();
|
|
for (i = 0,done = false; !done;)
|
|
{
|
|
US_ClearWindow();
|
|
sound = (soundnames) -1;
|
|
|
|
// page = &PMPages[i];
|
|
US_Print(" Page #");
|
|
US_PrintUnsigned(i);
|
|
if (i < PMSpriteStart)
|
|
US_Print(" (Wall)");
|
|
else if (i < PMSoundStart)
|
|
US_Print(" (Sprite)");
|
|
else if (i == ChunksInFile - 1)
|
|
US_Print(" (Sound Info)");
|
|
else
|
|
US_Print(" (Sound)");
|
|
|
|
/* US_Print("\n XMS: ");
|
|
if (page->xmsPage != -1)
|
|
US_PrintUnsigned(page->xmsPage);
|
|
else
|
|
US_Print("No");
|
|
|
|
US_Print("\n Main: ");
|
|
if (page->mainPage != -1)
|
|
US_PrintUnsigned(page->mainPage);
|
|
else if (page->emsPage != -1)
|
|
{
|
|
US_Print("EMS ");
|
|
US_PrintUnsigned(page->emsPage);
|
|
}
|
|
else
|
|
US_Print("No");
|
|
|
|
US_Print("\n Last hit: ");
|
|
US_PrintUnsigned(page->lastHit);*/
|
|
|
|
US_Print("\n Address: ");
|
|
addr = (byte *) PM_GetPage(i);
|
|
sprintf(buf,"0x%08X",(int32_t) addr);
|
|
US_Print(buf);
|
|
|
|
if (addr)
|
|
{
|
|
if (i < PMSpriteStart)
|
|
{
|
|
//
|
|
// draw the wall
|
|
//
|
|
vbuf += 32*SCREENWIDTH;
|
|
postx = 128;
|
|
postwidth = 1;
|
|
postsource = addr;
|
|
for (x=0;x<64;x++,postx++,postsource+=64)
|
|
{
|
|
wallheight[postx] = 256;
|
|
ScalePost ();
|
|
}
|
|
vbuf -= 32*SCREENWIDTH;
|
|
}
|
|
else if (i < PMSoundStart)
|
|
{
|
|
//
|
|
// draw the sprite
|
|
//
|
|
vbuf += 32*SCREENWIDTH;
|
|
SimpleScaleShape (160, i-PMSpriteStart, 64);
|
|
vbuf -= 32*SCREENWIDTH;
|
|
}
|
|
else if (i == ChunksInFile - 1)
|
|
{
|
|
US_Print("\n\n Number of sounds: ");
|
|
US_PrintUnsigned(NumDigi);
|
|
for (l = j = k = 0;j < NumDigi;j++)
|
|
{
|
|
l += DigiList[(j * 2) + 1];
|
|
k += (DigiList[(j * 2) + 1] + (PMPageSize - 1)) / PMPageSize;
|
|
}
|
|
US_Print("\n Total bytes: ");
|
|
US_PrintUnsigned(l);
|
|
US_Print("\n Total pages: ");
|
|
US_PrintUnsigned(k);
|
|
}
|
|
else
|
|
{
|
|
byte *dp = addr;
|
|
for (j = 0;j < NumDigi;j++)
|
|
{
|
|
k = (DigiList[(j * 2) + 1] + (PMPageSize - 1)) / PMPageSize;
|
|
if ((i >= PMSoundStart + DigiList[j * 2])
|
|
&& (i < PMSoundStart + DigiList[j * 2] + k))
|
|
break;
|
|
}
|
|
if (j < NumDigi)
|
|
{
|
|
sound = (soundnames) j;
|
|
US_Print("\n Sound #");
|
|
US_PrintUnsigned(j);
|
|
US_Print("\n Segment #");
|
|
US_PrintUnsigned(i - PMSoundStart - DigiList[j * 2]);
|
|
}
|
|
for (j = 0;j < PageLengths[i];j += 32)
|
|
{
|
|
byte v = dp[j];
|
|
int v2 = (unsigned)v;
|
|
v2 -= 128;
|
|
v2 /= 4;
|
|
if (v2 < 0)
|
|
VWB_Vlin(WindowY + WindowH - 32 + v2,
|
|
WindowY + WindowH - 32,
|
|
WindowX + 8 + (j / 32),BLACK);
|
|
else
|
|
VWB_Vlin(WindowY + WindowH - 32,
|
|
WindowY + WindowH - 32 + v2,
|
|
WindowX + 8 + (j / 32),BLACK);
|
|
}
|
|
}
|
|
}
|
|
|
|
VW_UpdateScreen();
|
|
|
|
IN_Ack();
|
|
scan = LastScan;
|
|
|
|
IN_ClearKey(scan);
|
|
switch (scan)
|
|
{
|
|
case sc_LeftArrow:
|
|
if (i)
|
|
i--;
|
|
break;
|
|
case sc_RightArrow:
|
|
if (++i >= ChunksInFile)
|
|
i--;
|
|
break;
|
|
case sc_W: // Walls
|
|
i = 0;
|
|
break;
|
|
case sc_S: // Sprites
|
|
i = PMSpriteStart;
|
|
break;
|
|
case sc_D: // Digitized
|
|
i = PMSoundStart;
|
|
break;
|
|
case sc_I: // Digitized info
|
|
i = ChunksInFile - 1;
|
|
break;
|
|
/* case sc_L: // Load all pages
|
|
for (j = 0;j < ChunksInFile;j++)
|
|
PM_GetPage(j);
|
|
break;*/
|
|
case sc_P:
|
|
if (sound != -1)
|
|
SD_PlayDigitized(sound,8,8);
|
|
break;
|
|
case sc_Escape:
|
|
done = true;
|
|
break;
|
|
/* case sc_Enter:
|
|
PM_GetPage(i);
|
|
break;*/
|
|
}
|
|
}
|
|
SD_StopDigitized();
|
|
#endif
|
|
}
|
|
|
|
|
|
//===========================================================================
|
|
|
|
|
|
/*
|
|
================
|
|
=
|
|
= DebugKeys
|
|
=
|
|
================
|
|
*/
|
|
|
|
int DebugKeys (void)
|
|
{
|
|
boolean esc;
|
|
int level;
|
|
|
|
if (Keyboard[sc_B]) // B = border color
|
|
{
|
|
CenterWindow(20,3);
|
|
PrintY+=6;
|
|
US_Print(" Border color (0-56): ");
|
|
VW_UpdateScreen();
|
|
esc = !US_LineInput (px,py,str,NULL,true,2,0);
|
|
if (!esc)
|
|
{
|
|
level = atoi (str);
|
|
if (level>=0 && level<=99)
|
|
{
|
|
if (level<30) level += 31;
|
|
else
|
|
{
|
|
if (level > 56) level=31;
|
|
else level -= 26;
|
|
}
|
|
|
|
bordercol=level*4+3;
|
|
|
|
if (bordercol == VIEWCOLOR)
|
|
DrawStatusBorder(bordercol);
|
|
|
|
DrawPlayBorder();
|
|
|
|
return 0;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
if (Keyboard[sc_C]) // C = count objects
|
|
{
|
|
CountObjects();
|
|
return 1;
|
|
}
|
|
if (Keyboard[sc_D]) // D = Darkone's FPS counter
|
|
{
|
|
CenterWindow (22,2);
|
|
if (fpscounter)
|
|
US_PrintCentered ("Darkone's FPS Counter OFF");
|
|
else
|
|
US_PrintCentered ("Darkone's FPS Counter ON");
|
|
VW_UpdateScreen();
|
|
IN_Ack();
|
|
fpscounter ^= 1;
|
|
return 1;
|
|
}
|
|
if (Keyboard[sc_E]) // E = quit level
|
|
playstate = ex_completed;
|
|
|
|
if (Keyboard[sc_F]) // F = facing spot
|
|
{
|
|
char str[60];
|
|
CenterWindow (14,6);
|
|
US_Print ("x:"); US_PrintUnsigned (player->x);
|
|
US_Print (" ("); US_PrintUnsigned (player->x%65536);
|
|
US_Print (")\ny:"); US_PrintUnsigned (player->y);
|
|
US_Print (" ("); US_PrintUnsigned (player->y%65536);
|
|
US_Print (")\nA:"); US_PrintUnsigned (player->angle);
|
|
US_Print (" X:"); US_PrintUnsigned (player->tilex);
|
|
US_Print (" Y:"); US_PrintUnsigned (player->tiley);
|
|
US_Print ("\n1:"); US_PrintUnsigned (tilemap[player->tilex][player->tiley]);
|
|
sprintf(str," 2:%.8X",(unsigned)(uintptr_t)actorat[player->tilex][player->tiley]); US_Print(str);
|
|
US_Print ("\nf 1:"); US_PrintUnsigned (player->areanumber);
|
|
US_Print (" 2:"); US_PrintUnsigned (MAPSPOT(player->tilex,player->tiley,1));
|
|
US_Print (" 3:");
|
|
if ((unsigned)(uintptr_t)actorat[player->tilex][player->tiley] < 256)
|
|
US_PrintUnsigned (spotvis[player->tilex][player->tiley]);
|
|
else
|
|
US_PrintUnsigned (actorat[player->tilex][player->tiley]->flags);
|
|
VW_UpdateScreen();
|
|
IN_Ack();
|
|
return 1;
|
|
}
|
|
|
|
if (Keyboard[sc_G]) // G = god mode
|
|
{
|
|
CenterWindow (12,2);
|
|
if (godmode == 0)
|
|
US_PrintCentered ("God mode ON");
|
|
else if (godmode == 1)
|
|
US_PrintCentered ("God (no flash)");
|
|
else if (godmode == 2)
|
|
US_PrintCentered ("God mode OFF");
|
|
|
|
VW_UpdateScreen();
|
|
IN_Ack();
|
|
if (godmode != 2)
|
|
godmode++;
|
|
else
|
|
godmode = 0;
|
|
return 1;
|
|
}
|
|
if (Keyboard[sc_H]) // H = hurt self
|
|
{
|
|
IN_ClearKeysDown ();
|
|
TakeDamage (16,NULL);
|
|
}
|
|
else if (Keyboard[sc_I]) // I = item cheat
|
|
{
|
|
CenterWindow (12,3);
|
|
US_PrintCentered ("Free items!");
|
|
VW_UpdateScreen();
|
|
GivePoints (100000);
|
|
HealSelf (99);
|
|
if (gamestate.bestweapon<wp_chaingun)
|
|
GiveWeapon (gamestate.bestweapon+1);
|
|
gamestate.ammo += 50;
|
|
if (gamestate.ammo > 99)
|
|
gamestate.ammo = 99;
|
|
DrawAmmo ();
|
|
IN_Ack ();
|
|
return 1;
|
|
}
|
|
else if (Keyboard[sc_K]) // K = give keys
|
|
{
|
|
CenterWindow(16,3);
|
|
PrintY+=6;
|
|
US_Print(" Give Key (1-4): ");
|
|
VW_UpdateScreen();
|
|
esc = !US_LineInput (px,py,str,NULL,true,1,0);
|
|
if (!esc)
|
|
{
|
|
level = atoi (str);
|
|
if (level>0 && level<5)
|
|
GiveKey(level-1);
|
|
}
|
|
return 1;
|
|
}
|
|
else if (Keyboard[sc_L]) // L = level ratios
|
|
{
|
|
byte x,start,end=LRpack;
|
|
|
|
if (end == 8) // wolf3d
|
|
{
|
|
CenterWindow(17,10);
|
|
start = 0;
|
|
}
|
|
else // sod
|
|
{
|
|
CenterWindow(17,12);
|
|
start = 0; end = 10;
|
|
}
|
|
again:
|
|
for(x=start;x<end;x++)
|
|
{
|
|
US_PrintUnsigned(x+1);
|
|
US_Print(" ");
|
|
US_PrintUnsigned(LevelRatios[x].time/60);
|
|
US_Print(":");
|
|
if (LevelRatios[x].time%60 < 10)
|
|
US_Print("0");
|
|
US_PrintUnsigned(LevelRatios[x].time%60);
|
|
US_Print(" ");
|
|
US_PrintUnsigned(LevelRatios[x].kill);
|
|
US_Print("% ");
|
|
US_PrintUnsigned(LevelRatios[x].secret);
|
|
US_Print("% ");
|
|
US_PrintUnsigned(LevelRatios[x].treasure);
|
|
US_Print("%\n");
|
|
}
|
|
VW_UpdateScreen();
|
|
IN_Ack();
|
|
if (end == 10 && gamestate.mapon > 9)
|
|
{
|
|
start = 10; end = 20;
|
|
CenterWindow(17,12);
|
|
goto again;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
else if (Keyboard[sc_N]) // N = no clip
|
|
{
|
|
noclip^=1;
|
|
CenterWindow (18,3);
|
|
if (noclip)
|
|
US_PrintCentered ("No clipping ON");
|
|
else
|
|
US_PrintCentered ("No clipping OFF");
|
|
VW_UpdateScreen();
|
|
IN_Ack ();
|
|
return 1;
|
|
}
|
|
else if (Keyboard[sc_O]) // O = basic overhead
|
|
{
|
|
BasicOverhead();
|
|
return 1;
|
|
}
|
|
else if(Keyboard[sc_P]) // P = Ripper's picture grabber
|
|
{
|
|
PictureGrabber();
|
|
return 1;
|
|
}
|
|
else if (Keyboard[sc_Q]) // Q = fast quit
|
|
Quit (NULL);
|
|
else if (Keyboard[sc_S]) // S = slow motion
|
|
{
|
|
CenterWindow(30,3);
|
|
PrintY+=6;
|
|
US_Print(" Slow Motion steps (default 14): ");
|
|
VW_UpdateScreen();
|
|
esc = !US_LineInput (px,py,str,NULL,true,2,0);
|
|
if (!esc)
|
|
{
|
|
level = atoi (str);
|
|
if (level>=0 && level<=50)
|
|
singlestep = level;
|
|
}
|
|
return 1;
|
|
}
|
|
else if (Keyboard[sc_T]) // T = shape test
|
|
{
|
|
ShapeTest ();
|
|
return 1;
|
|
}
|
|
else if (Keyboard[sc_V]) // V = extra VBLs
|
|
{
|
|
CenterWindow(30,3);
|
|
PrintY+=6;
|
|
US_Print(" Add how many extra VBLs(0-8): ");
|
|
VW_UpdateScreen();
|
|
esc = !US_LineInput (px,py,str,NULL,true,1,0);
|
|
if (!esc)
|
|
{
|
|
level = atoi (str);
|
|
if (level>=0 && level<=8)
|
|
extravbls = level;
|
|
}
|
|
return 1;
|
|
}
|
|
else if (Keyboard[sc_W]) // W = warp to level
|
|
{
|
|
CenterWindow(26,3);
|
|
PrintY+=6;
|
|
#ifndef SPEAR
|
|
US_Print(" Warp to which level(1-10): ");
|
|
#else
|
|
US_Print(" Warp to which level(1-21): ");
|
|
#endif
|
|
VW_UpdateScreen();
|
|
esc = !US_LineInput (px,py,str,NULL,true,2,0);
|
|
if (!esc)
|
|
{
|
|
level = atoi (str);
|
|
#ifndef SPEAR
|
|
if (level>0 && level<11)
|
|
#else
|
|
if (level>0 && level<22)
|
|
#endif
|
|
{
|
|
gamestate.mapon = level-1;
|
|
playstate = ex_warped;
|
|
}
|
|
}
|
|
return 1;
|
|
}
|
|
else if (Keyboard[sc_X]) // X = item cheat
|
|
{
|
|
CenterWindow (12,3);
|
|
US_PrintCentered ("Extra stuff!");
|
|
VW_UpdateScreen();
|
|
// DEBUG: put stuff here
|
|
IN_Ack ();
|
|
return 1;
|
|
}
|
|
#ifdef USE_CLOUDSKY
|
|
else if(Keyboard[sc_Z])
|
|
{
|
|
char defstr[15];
|
|
|
|
CenterWindow(34,4);
|
|
PrintY+=6;
|
|
US_Print(" Recalculate sky with seek: ");
|
|
int seekpx = px, seekpy = py;
|
|
US_PrintUnsigned(curSky->seed);
|
|
US_Print("\n Use color map (0-");
|
|
US_PrintUnsigned(numColorMaps - 1);
|
|
US_Print("): ");
|
|
int mappx = px, mappy = py;
|
|
US_PrintUnsigned(curSky->colorMapIndex);
|
|
VW_UpdateScreen();
|
|
|
|
sprintf(defstr, "%u", curSky->seed);
|
|
esc = !US_LineInput(seekpx, seekpy, str, defstr, true, 10, 0);
|
|
if(esc) return 0;
|
|
curSky->seed = (uint32_t) atoi(str);
|
|
|
|
sprintf(defstr, "%u", curSky->colorMapIndex);
|
|
esc = !US_LineInput(mappx, mappy, str, defstr, true, 10, 0);
|
|
if(esc) return 0;
|
|
uint32_t newInd = (uint32_t) atoi(str);
|
|
if(newInd < (uint32_t) numColorMaps)
|
|
{
|
|
curSky->colorMapIndex = newInd;
|
|
InitSky();
|
|
}
|
|
else
|
|
{
|
|
CenterWindow (18,3);
|
|
US_PrintCentered ("Illegal color map!");
|
|
VW_UpdateScreen();
|
|
IN_Ack ();
|
|
}
|
|
}
|
|
#endif
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
#if 0
|
|
/*
|
|
===================
|
|
=
|
|
= OverheadRefresh
|
|
=
|
|
===================
|
|
*/
|
|
|
|
void OverheadRefresh (void)
|
|
{
|
|
unsigned x,y,endx,endy,sx,sy;
|
|
unsigned tile;
|
|
|
|
|
|
endx = maporgx+VIEWTILEX;
|
|
endy = maporgy+VIEWTILEY;
|
|
|
|
for (y=maporgy;y<endy;y++)
|
|
{
|
|
for (x=maporgx;x<endx;x++)
|
|
{
|
|
sx = (x-maporgx)*16;
|
|
sy = (y-maporgy)*16;
|
|
|
|
switch (viewtype)
|
|
{
|
|
#if 0
|
|
case mapview:
|
|
tile = *(mapsegs[0]+farmapylookup[y]+x);
|
|
break;
|
|
|
|
case tilemapview:
|
|
tile = tilemap[x][y];
|
|
break;
|
|
|
|
case visview:
|
|
tile = spotvis[x][y];
|
|
break;
|
|
#endif
|
|
case actoratview:
|
|
tile = (unsigned)actorat[x][y];
|
|
break;
|
|
}
|
|
|
|
if (tile<MAXWALLTILES)
|
|
LatchDrawTile(sx,sy,tile);
|
|
else
|
|
{
|
|
LatchDrawChar(sx,sy,NUMBERCHARS+((tile&0xf000)>>12));
|
|
LatchDrawChar(sx+8,sy,NUMBERCHARS+((tile&0x0f00)>>8));
|
|
LatchDrawChar(sx,sy+8,NUMBERCHARS+((tile&0x00f0)>>4));
|
|
LatchDrawChar(sx+8,sy+8,NUMBERCHARS+(tile&0x000f));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif
|
|
|
|
#if 0
|
|
/*
|
|
===================
|
|
=
|
|
= ViewMap
|
|
=
|
|
===================
|
|
*/
|
|
|
|
void ViewMap (void)
|
|
{
|
|
boolean button0held;
|
|
|
|
viewtype = actoratview;
|
|
// button0held = false;
|
|
|
|
|
|
maporgx = player->tilex - VIEWTILEX/2;
|
|
if (maporgx<0)
|
|
maporgx = 0;
|
|
if (maporgx>MAPSIZE-VIEWTILEX)
|
|
maporgx=MAPSIZE-VIEWTILEX;
|
|
maporgy = player->tiley - VIEWTILEY/2;
|
|
if (maporgy<0)
|
|
maporgy = 0;
|
|
if (maporgy>MAPSIZE-VIEWTILEY)
|
|
maporgy=MAPSIZE-VIEWTILEY;
|
|
|
|
do
|
|
{
|
|
//
|
|
// let user pan around
|
|
//
|
|
PollControls ();
|
|
if (controlx < 0 && maporgx>0)
|
|
maporgx--;
|
|
if (controlx > 0 && maporgx<mapwidth-VIEWTILEX)
|
|
maporgx++;
|
|
if (controly < 0 && maporgy>0)
|
|
maporgy--;
|
|
if (controly > 0 && maporgy<mapheight-VIEWTILEY)
|
|
maporgy++;
|
|
|
|
#if 0
|
|
if (c.button0 && !button0held)
|
|
{
|
|
button0held = true;
|
|
viewtype++;
|
|
if (viewtype>visview)
|
|
viewtype = mapview;
|
|
}
|
|
if (!c.button0)
|
|
button0held = false;
|
|
#endif
|
|
|
|
OverheadRefresh ();
|
|
|
|
} while (!Keyboard[sc_Escape]);
|
|
|
|
IN_ClearKeysDown ();
|
|
}
|
|
#endif
|
|
#endif
|