Browse Source

InitAutomap+ScrollView (#545)

pull/25/head
galaxyhaxz 7 years ago committed by Robin Eklind
parent
commit
b048cac4fe
  1. 109
      Source/automap.cpp
  2. 2
      Source/automap.h
  3. 140
      Source/scrollrt.cpp

109
Source/automap.cpp

@ -7,7 +7,7 @@ WORD automaptype[512];
static int MapX; static int MapX;
static int MapY; static int MapY;
BOOL automapflag; // idb BOOL automapflag; // idb
char AMbyte_4B7E4C[32]; char AmShiftTab[32]; // [31]?
unsigned char automapview[DMAXX][DMAXY]; unsigned char automapview[DMAXX][DMAXY];
int AutoMapScale; // idb int AutoMapScale; // idb
int AutoMapXOfs; // weak int AutoMapXOfs; // weak
@ -49,82 +49,63 @@ void __cdecl InitAutomapOnce()
void __cdecl InitAutomap() void __cdecl InitAutomap()
{ {
signed int v0; // edi unsigned char b1, b2;
signed int v1; // ecx unsigned int dwTiles;
int v2; // esi int x, y;
char v3; // al unsigned char *pAFile, *pTmp;
int v4; // esi int i, j;
char v5; // al int d;
char *v6; // ecx
unsigned char *v7; // eax j = 50;
int v8; // ecx
unsigned char *v9; // edx for(i = 0; i < 31; i++) {
unsigned int i; // esi d = (j << 6) / 100;
unsigned char v11; // bl AmShiftTab[i] = 2 * (320 / d) + 1;
_BYTE *v12; // edx if(320 % d)
signed int v13; // ecx AmShiftTab[i]++;
_BYTE *v14; // eax if(320 % d >= (j << 5) / 100)
signed int v15; // edx AmShiftTab[i]++;
int size; // [esp+Ch] [ebp-4h] j += 5;
}
v0 = 50;
v1 = 0;
do {
v2 = (v0 << 6) / 100;
v3 = 2 * (320 / v2);
v4 = 320 % v2;
v5 = v3 + 1;
AMbyte_4B7E4C[v1] = v5;
if (v4)
AMbyte_4B7E4C[v1] = v5 + 1;
if (v4 >= 32 * v0 / 100)
++AMbyte_4B7E4C[v1];
v0 += 5;
++v1;
} while (v1 < 31);
memset(automaptype, 0, sizeof(automaptype)); memset(automaptype, 0, sizeof(automaptype));
switch (leveltype) {
switch(leveltype) {
case DTYPE_CATHEDRAL: case DTYPE_CATHEDRAL:
v6 = "Levels\\L1Data\\L1.AMP"; pAFile = LoadFileInMem("Levels\\L1Data\\L1.AMP", (int *)&dwTiles);
dwTiles >>= 1;
break; break;
case DTYPE_CATACOMBS: case DTYPE_CATACOMBS:
v6 = "Levels\\L2Data\\L2.AMP"; pAFile = LoadFileInMem("Levels\\L2Data\\L2.AMP", (int *)&dwTiles);
dwTiles >>= 1;
break; break;
case DTYPE_CAVES: case DTYPE_CAVES:
v6 = "Levels\\L3Data\\L3.AMP"; pAFile = LoadFileInMem("Levels\\L3Data\\L3.AMP", (int *)&dwTiles);
dwTiles >>= 1;
break; break;
case DTYPE_HELL: case DTYPE_HELL:
v6 = "Levels\\L4Data\\L4.AMP"; pAFile = LoadFileInMem("Levels\\L4Data\\L4.AMP", (int *)&dwTiles);
dwTiles >>= 1;
break; break;
default: default:
return; return;
} }
v7 = LoadFileInMem(v6, &size);
size = (unsigned int)size >> 1; pTmp = pAFile;
v9 = v7;
for (i = 1; i <= size; ++i) { for(i = 1; i <= dwTiles; i++) {
v11 = *v9; b1 = *pTmp++;
v12 = v9 + 1; b2 = *pTmp++;
_LOWORD(v0) = v11; automaptype[i] = b1 + (b2 << 8);
_LOBYTE(v8) = *v12;
v9 = v12 + 1;
_LOWORD(v8) = (unsigned char)v8;
v8 = v0 + (v8 << 8);
automaptype[i] = v8;
} }
mem_free_dbg(v7);
mem_free_dbg(pAFile);
memset(automapview, 0, sizeof(automapview)); memset(automapview, 0, sizeof(automapview));
v13 = 0;
do { for(y = 0; y < MAXDUNY; y++) {
v14 = (unsigned char *)dFlags + v13; for(x = 0; x < MAXDUNX; x++)
v15 = 112; dFlags[x][y] &= ~DFLAG_EXPLORED;
do { }
*v14 &= ~DFLAG_EXPLORED;
v14 += 112;
--v15;
} while (v15);
++v13;
} while (v13 < 112);
} }
void __cdecl StartAutomap() void __cdecl StartAutomap()
@ -210,7 +191,7 @@ void __cdecl DrawAutomap()
AutoMapYOfs--; AutoMapYOfs--;
MapY += AutoMapYOfs; MapY += AutoMapYOfs;
cells = AMbyte_4B7E4C[(AutoMapScale - 50) / 5]; cells = AmShiftTab[(AutoMapScale - 50) / 5];
if (ScrollInfo._sxoff + ScrollInfo._syoff) if (ScrollInfo._sxoff + ScrollInfo._syoff)
cells++; cells++;
mapx = MapX - cells; mapx = MapX - cells;

2
Source/automap.h

@ -4,7 +4,7 @@
extern WORD automaptype[512]; extern WORD automaptype[512];
extern BOOL automapflag; // idb extern BOOL automapflag; // idb
extern char AMbyte_4B7E4C[32]; extern char AmShiftTab[32];
extern unsigned char automapview[DMAXX][DMAXY]; extern unsigned char automapview[DMAXX][DMAXY];
extern int AutoMapScale; // idb extern int AutoMapScale; // idb
extern int AutoMapXOfs; // weak extern int AutoMapXOfs; // weak

140
Source/scrollrt.cpp

@ -2545,94 +2545,80 @@ void __cdecl ClearScreenBuffer()
#ifdef _DEBUG #ifdef _DEBUG
void __cdecl ScrollView() void __cdecl ScrollView()
{ {
signed int v0; // esi BOOL scroll;
int v1; // edi
int v2; // edx if(pcurs >= CURSOR_FIRSTITEM)
return;
if (pcurs < 12) {
v0 = 0; scroll = FALSE;
if (MouseX >= 20) {
v2 = ViewX; if(MouseX < 20) {
v1 = ViewY; if(dmaxy - 1 <= ViewY || dminx >= ViewX) {
} else { if(dmaxy - 1 > ViewY) {
v1 = ViewY; ViewY++;
v2 = ViewX; scroll = TRUE;
if (ViewY >= dmaxy - 1 || dminx >= ViewX) { }
if (ViewY < dmaxy - 1) { if(dminx < ViewX) {
v1 = ViewY + 1; ViewX--;
v0 = 1; scroll = TRUE;
}
if (dminx < ViewX) {
v2 = ViewX - 1;
v0 = 1;
}
} else {
v1 = ViewY + 1;
v2 = ViewX - 1;
v0 = 1;
} }
} else {
ViewY++;
ViewX--;
scroll = TRUE;
} }
if (MouseX > 620) { }
if (dmaxx - 1 > v2) { if(MouseX > 640-20) {
if (dminy < v1) { if(dmaxx - 1 <= ViewX || dminy >= ViewY) {
--v1; if(dmaxx - 1 > ViewX) {
++v2; ViewX++;
v0 = 1; scroll = TRUE;
goto LABEL_19;
}
if (dmaxx - 1 > v2) {
++v2;
v0 = 1;
}
} }
if (dminy < v1) { if(dminy < ViewY) {
--v1; ViewY--;
v0 = 1; scroll = TRUE;
} }
} else {
ViewY--;
ViewX++;
scroll = TRUE;
} }
LABEL_19: }
if (MouseY >= 20) if(MouseY < 20) {
goto LABEL_28; if(dminy >= ViewY || dminx >= ViewX) {
if (dminy < v1) { if(dminy < ViewY) {
if (dminx < v2) { ViewY--;
--v2; scroll = TRUE;
--v1;
goto LABEL_27;
} }
if (dminy < v1) { if(dminx < ViewX) {
--v1; ViewX--;
v0 = 1; scroll = TRUE;
} }
} else {
ViewX--;
ViewY--;
scroll = TRUE;
} }
if (dminx >= v2) }
goto LABEL_28; if(MouseY > 480-20) {
--v2; if(dmaxy - 1 <= ViewY || dmaxx - 1 <= ViewX) {
LABEL_27: if(dmaxy - 1 > ViewY) {
v0 = 1; ViewY++;
LABEL_28: scroll = TRUE;
ViewX = v2; }
ViewY = v1; if(dmaxx - 1 > ViewX) {
if (MouseY > 460) { ViewX++;
if (v1 >= dmaxy - 1 || dmaxx - 1 <= v2) { scroll = TRUE;
ViewY = v1;
if (v1 < dmaxy - 1) {
v0 = 1;
ViewY = v1 + 1;
}
ViewX = v2;
if (dmaxx - 1 <= v2)
goto LABEL_37;
ViewX = v2 + 1;
} else {
ViewX = v2 + 1;
ViewY = v1 + 1;
} }
v0 = 1; } else {
ViewX++;
ViewY++;
scroll = TRUE;
} }
LABEL_37:
if (v0)
ScrollInfo._sdir = 0;
} }
if(scroll)
ScrollInfo._sdir = 0;
} }
void __cdecl EnableFrameCount() void __cdecl EnableFrameCount()

Loading…
Cancel
Save