Browse Source

Cleanup "DRLG_L5" (#368)

pull/4/head
galaxyhaxz 8 years ago committed by GitHub
parent
commit
eabad93e09
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 201
      Source/drlg_l1.cpp

201
Source/drlg_l1.cpp

@ -550,44 +550,33 @@ void __cdecl DRLG_FreeL1SP()
void __fastcall DRLG_L5(int entry)
{
signed int v1; // esi
signed int v2; // edi
int v5; // eax
int v6; // ebx
int v7; // edi
int v8; // edi
int v9; // ebp
_BYTE *v10; // ebx
signed int v11; // eax
signed int v12; // ecx
int v13; // [esp+10h] [ebp-8h]
int v14; // [esp+10h] [ebp-8h]
int v15; // [esp+14h] [ebp-4h]
_BYTE *v16; // [esp+14h] [ebp-4h]
int i, j;
long minarea;
BOOL doneflag;
v13 = entry;
if ( currlevel == 1 )
{
v15 = 533;
}
else if ( currlevel == 2 )
{
v15 = 693;
}
else if ( currlevel > 2u && currlevel <= 4u )
{
v15 = 761;
switch(currlevel) {
case 1:
minarea = 533;
break;
case 2:
minarea = 693;
break;
case 3:
case 4:
minarea = 761;
break;
default:
break;
}
v1 = 0;
while ( 1 )
{
do {
DRLG_InitTrans();
do
{
do {
InitL5Dungeon();
L5firstRoom();
}
while ( L5GetArea() < v15 );
} while(L5GetArea() < minarea);
L5makeDungeon();
L5makeDmt();
L5FillChambers();
@ -595,117 +584,85 @@ void __fastcall DRLG_L5(int entry)
L5AddWall();
L5ClearFlags();
DRLG_L5FloodTVal();
v2 = 1;
if ( QuestStatus(QTYPE_PW) )
{
if ( v13 )
{
if ( DRLG_PlaceMiniSet(PWATERIN, 1, 1, 0, 0, 0, -1, 0) < 0 )
v2 = 0;
--ViewY;
doneflag = TRUE;
if(QuestStatus(QTYPE_PW)) {
if(entry == 0) {
if(DRLG_PlaceMiniSet(PWATERIN, 1, 1, 0, 0, 1, -1, 0) < 0)
doneflag = FALSE;
}
else if ( DRLG_PlaceMiniSet(PWATERIN, 1, 1, 0, 0, 1, -1, 0) < 0 )
{
v2 = 0;
else {
if(DRLG_PlaceMiniSet(PWATERIN, 1, 1, 0, 0, 0, -1, 0) < 0)
doneflag = FALSE;
ViewY--;
}
}
if ( QuestStatus(QTYPE_BOL) )
{
if ( !v13 )
{
v5 = DRLG_PlaceMiniSet(STAIRSUP, 1, 1, 0, 0, 1, -1, 0);
goto LABEL_21;
if(QuestStatus(QTYPE_BOL)) {
if(entry == 0) {
if(DRLG_PlaceMiniSet(STAIRSUP, 1, 1, 0, 0, 1, -1, 0) < 0)
doneflag = FALSE;
}
if ( DRLG_PlaceMiniSet(STAIRSUP, 1, 1, 0, 0, 0, -1, 0) < 0 )
v2 = 0;
if ( v13 == 1 )
{
ViewX = 2 * setpc_x + 20;
ViewY = 2 * setpc_y + 28;
goto LABEL_34;
else {
if(DRLG_PlaceMiniSet(STAIRSUP, 1, 1, 0, 0, 0, -1, 0) < 0)
doneflag = FALSE;
if(entry == 1) {
ViewX = 2 * setpc_x + 20;
ViewY = 2 * setpc_y + 28;
}
else {
ViewY--;
}
}
LABEL_33:
--ViewY;
goto LABEL_34;
}
if ( v13 )
{
if ( DRLG_PlaceMiniSet(L5STAIRSUP, 1, 1, 0, 0, 0, -1, 0) < 0
|| DRLG_PlaceMiniSet(STAIRSDOWN, 1, 1, 0, 0, 1, -1, 1) < 0 )
{
v2 = 0;
}
goto LABEL_33;
else if(entry == 0) {
if(DRLG_PlaceMiniSet(L5STAIRSUP, 1, 1, 0, 0, 1, -1, 0) < 0)
doneflag = FALSE;
else if(DRLG_PlaceMiniSet(STAIRSDOWN, 1, 1, 0, 0, 0, -1, 1) < 0)
doneflag = FALSE;
}
if ( DRLG_PlaceMiniSet(L5STAIRSUP, 1, 1, 0, 0, 1, -1, 0) >= 0 )
{
v5 = DRLG_PlaceMiniSet(STAIRSDOWN, 1, 1, 0, 0, 0, -1, 1);
LABEL_21:
if ( v5 < 0 )
v2 = 0;
LABEL_34:
if ( v2 )
break;
else {
if(DRLG_PlaceMiniSet(L5STAIRSUP, 1, 1, 0, 0, 0, -1, 0) < 0)
doneflag = FALSE;
else if(DRLG_PlaceMiniSet(STAIRSDOWN, 1, 1, 0, 0, 1, -1, 1) < 0)
doneflag = FALSE;
ViewY--;
}
}
v14 = 0;
v6 = 16;
do
{
v7 = 16;
v16 = (unsigned char *)dungeon + v14;
do
{
if ( *v16 == 64 )
{
DRLG_CopyTrans(v7, v6 + 1, v7, v6);
DRLG_CopyTrans(v7 + 1, v6 + 1, v7 + 1, v6);
} while(doneflag == FALSE);
for(j = 0; j < DMAXY; j++) {
for(i = 0; i < DMAXX; i++) {
if(dungeon[i][j] == 64) {
int xx = 2 * i + 16; /* todo: fix loop */
int yy = 2 * j + 16;
DRLG_CopyTrans(xx, yy+1, xx, yy);
DRLG_CopyTrans(xx+1, yy+1, xx+1, yy);
}
v16 += 40;
v7 += 2;
}
while ( v7 < 96 );
++v14;
v6 += 2;
}
while ( v6 < 96 );
DRLG_L5TransFix();
DRLG_L5DirtFix();
DRLG_L5CornerFix();
v8 = 0;
do
{
v9 = 0;
v10 = (unsigned char *)mydflags + v8;
do
{
if ( *v10 & 0x7F )
DRLG_PlaceDoor(v9, v8);
++v9;
v10 += 40;
for(j = 0; j < DMAXY; j++) {
for(i = 0; i < DMAXX; i++) {
if(mydflags[i][j] & 0x7F)
DRLG_PlaceDoor(i, j);
}
while ( v9 < 40 );
++v8;
}
while ( v8 < 40 );
DRLG_L5Subs();
DRLG_L1Shadows();
DRLG_PlaceMiniSet(LAMPS, 5, 10, 0, 0, 0, -1, 4);
DRLG_L1Floor();
do
{
v11 = v1;
v12 = 40;
do
{
pdungeon[0][v11] = dungeon[0][v11];
v11 += 40;
--v12;
for(j = 0; j < DMAXY; j++) {
for(i = 0; i < DMAXX; i++) {
pdungeon[i][j] = dungeon[i][j];
}
while ( v12 );
++v1;
}
while ( v1 < 40 );
DRLG_Init_Globals();
DRLG_CheckQuests(setpc_x, setpc_y);
}

Loading…
Cancel
Save