Browse Source

Clean up StoreAutoPlace (#956)

pull/88/head
Anders Jenbo 7 years ago committed by GitHub
parent
commit
26737a1594
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      Source/inv.cpp
  2. 2
      Source/inv.h
  3. 206
      Source/stores.cpp

2
Source/inv.cpp

@ -463,7 +463,7 @@ void DrawInvBelt()
// 4B8960: using guessed type int talkflag;
// 4B8CB8: using guessed type char pcursinvitem;
BOOL AutoPlace(int pnum, int ii, int sx, int sy, int saveflag)
BOOL AutoPlace(int pnum, int ii, int sx, int sy, BOOL saveflag)
{
int i, j, xx, yy;
BOOL done;

2
Source/inv.h

@ -10,7 +10,7 @@ void InitInv();
void InvDrawSlotBack(int X, int Y, int W, int H);
void DrawInv();
void DrawInvBelt();
BOOL AutoPlace(int pnum, int ii, int sx, int sy, int saveflag);
BOOL AutoPlace(int pnum, int ii, int sx, int sy, BOOL saveflag);
BOOL SpecialAutoPlace(int pnum, int ii, int sx, int sy, int saveflag);
BOOL GoldAutoPlace(int pnum);
int WeaponAutoPlace(int pnum);

206
Source/stores.cpp

@ -401,156 +401,72 @@ void AddSText(int x, int y, int j, char *str, char clr, int sel)
void StoreAutoPlace()
{
int v0; // edi
int v1; // eax
int v2; // edx
ItemStruct *v3; // ebp
int v4; // esi
int v5; // esi
int v6; // esi
int v7; // esi
int v8; // esi
int v9; // esi
int v10; // esi
int v11; // esi
int *v12; // esi
int v13; // esi
int v14; // esi
int v15; // esi
int v16; // esi
int v17; // esi
signed int v19; // [esp+10h] [ebp-Ch]
int v20; // [esp+14h] [ebp-8h]
int v21; // [esp+18h] [ebp-4h]
BOOL done;
int i, w, h, idx;
SetICursor(plr[myplr].HoldItem._iCurs + CURSOR_FIRSTITEM);
v0 = icursH28;
v1 = 0;
v21 = icursW28;
v20 = icursH28;
if (icursW28 == 1) {
if (icursH28 == 1) {
v2 = myplr;
if (plr[myplr].HoldItem._iStatFlag && AllItemsList[plr[v2].HoldItem.IDidx].iUsable) {
v19 = 0;
v3 = plr[v2].SpdList;
do {
if (v1)
break;
if (v3->_itype == -1) {
qmemcpy(v3, &plr[v2].HoldItem, sizeof(ItemStruct));
v0 = v20;
v1 = 1;
}
++v19;
++v3;
} while (v19 < 8);
}
v4 = 30;
do {
if (v1)
break;
v1 = AutoPlace(myplr, v4++, 1, 1, 1);
} while (v4 <= 39);
v5 = 20;
do {
if (v1)
break;
v1 = AutoPlace(myplr, v5++, 1, 1, 1);
} while (v5 <= 29);
v6 = 10;
do {
if (v1)
break;
v1 = AutoPlace(myplr, v6++, 1, 1, 1);
} while (v6 <= 19);
v7 = 0;
while (!v1) {
v1 = AutoPlace(myplr, v7++, 1, 1, 1);
if (v7 > 9)
goto LABEL_22;
}
} else {
LABEL_22:
if (v0 == 2) {
v8 = 29;
do {
if (v1)
break;
v1 = AutoPlace(myplr, v8--, 1, 2, 1);
} while (v8 >= 20);
v9 = 9;
do {
if (v1)
break;
v1 = AutoPlace(myplr, v9--, 1, 2, 1);
} while (v9 >= 0);
v10 = 19;
while (!v1) {
v1 = AutoPlace(myplr, v10--, 1, 2, 1);
if (v10 < 10)
goto LABEL_32;
}
} else {
LABEL_32:
if (v0 == 3) {
v11 = 0;
while (!v1) {
v1 = AutoPlace(myplr, v11++, 1, 3, 1);
if (v11 >= 20)
goto LABEL_36;
}
done = FALSE;
w = icursW28;
h = icursH28;
if (w == 1 && h == 1) {
idx = plr[myplr].HoldItem.IDidx;
if (plr[myplr].HoldItem._iStatFlag && AllItemsList[idx].iUsable) {
for (i = 0; i < 8 && !done; i++) {
if (plr[myplr].SpdList[i]._itype == ITYPE_NONE) {
plr[myplr].SpdList[i] = plr[myplr].HoldItem;
done = TRUE;
}
}
}
} else {
LABEL_36:
if (v21 == 2) {
if (v0 == 2) {
v12 = AP2x2Tbl;
do {
if (v1)
break;
v1 = AutoPlace(myplr, *v12, 2, 2, 1);
++v12;
} while ((signed int)v12 < (signed int)&AP2x2Tbl[10]);
v13 = 21;
do {
if (v1)
break;
v1 = AutoPlace(myplr, v13, 2, 2, 1);
v13 += 2;
} while (v13 < 29);
v14 = 1;
do {
if (v1)
break;
v1 = AutoPlace(myplr, v14, 2, 2, 1);
v14 += 2;
} while (v14 < 9);
v15 = 10;
while (!v1) {
v1 = AutoPlace(myplr, v15++, 2, 2, 1);
if (v15 >= 19)
goto LABEL_50;
}
} else {
LABEL_50:
if (v0 == 3) {
v16 = 0;
do {
if (v1)
break;
v1 = AutoPlace(myplr, v16++, 2, 3, 1);
} while (v16 < 9);
v17 = 10;
do {
if (v1)
break;
v1 = AutoPlace(myplr, v17++, 2, 3, 1);
} while (v17 < 19);
}
}
for (i = 30; i <= 39 && !done; i++) {
done = AutoPlace(myplr, i, w, h, TRUE);
}
for (i = 20; i <= 29 && !done; i++) {
done = AutoPlace(myplr, i, w, h, TRUE);
}
for (i = 10; i <= 19 && !done; i++) {
done = AutoPlace(myplr, i, w, h, TRUE);
}
for (i = 0; i <= 9 && !done; i++) {
done = AutoPlace(myplr, i, w, h, TRUE);
}
}
if (w == 1 && h == 2) {
for (i = 29; i >= 20 && !done; i--) {
done = AutoPlace(myplr, i, w, h, TRUE);
}
for (i = 9; i >= 0 && !done; i--) {
done = AutoPlace(myplr, i, w, h, TRUE);
}
for (i = 19; i >= 10 && !done; i--) {
done = AutoPlace(myplr, i, w, h, TRUE);
}
}
if (w == 1 && h == 3) {
for (i = 0; i < 20 && !done; i++) {
done = AutoPlace(myplr, i, w, h, TRUE);
}
}
if (w == 2 && h == 2) {
for (i = 0; i < 10 && !done; i++) {
done = AutoPlace(myplr, AP2x2Tbl[i], w, h, TRUE);
}
for (i = 21; i < 29 && !done; i += 2) {
done = AutoPlace(myplr, i, w, h, TRUE);
}
for (i = 1; i < 9 && !done; i += 2) {
done = AutoPlace(myplr, i, w, h, TRUE);
}
for (i = 10; i < 19 && !done; i++) {
done = AutoPlace(myplr, i, w, h, TRUE);
}
}
if (w == 2 && h == 3) {
for (i = 0; i < 9 && !done; i++) {
done = AutoPlace(myplr, i, w, h, TRUE);
}
for (i = 10; i < 19 && !done; i++) {
done = AutoPlace(myplr, i, w, h, TRUE);
}
}
}

Loading…
Cancel
Save