Browse Source

♻️ Extract item position generation logic to common function

pull/2099/head
Juliano Leal Goncalves 5 years ago committed by Anders Jenbo
parent
commit
6aa6efb720
  1. 37
      Source/items.cpp

37
Source/items.cpp

@ -438,24 +438,29 @@ bool ItemPlace(int xp, int yp)
return true;
}
Point GetRandomAvailableItemPosition()
{
Point position = {};
do {
position = Point { 16, 16 } + Point { GenerateRnd(80), GenerateRnd(80) };
} while (!ItemPlace(position.x, position.y));
return position;
}
void AddInitItems()
{
int x, y, j, rnd;
int j, rnd;
int curlv = items_get_currlevel();
rnd = GenerateRnd(3) + 3;
for (j = 0; j < rnd; j++) {
int ii = AllocateItem();
x = GenerateRnd(80) + 16;
y = GenerateRnd(80) + 16;
while (!ItemPlace(x, y)) {
x = GenerateRnd(80) + 16;
y = GenerateRnd(80) + 16;
}
items[ii].position = { x, y };
Point position = GetRandomAvailableItemPosition();
items[ii].position = position;
dItem[x][y] = ii + 1;
dItem[position.x][position.y] = ii + 1;
items[ii]._iSeed = AdvanceRndSeed();
@ -475,14 +480,8 @@ void AddInitItems()
static void items_42390F()
{
int x, y, id;
x = GenerateRnd(80) + 16;
y = GenerateRnd(80) + 16;
while (!ItemPlace(x, y)) {
x = GenerateRnd(80) + 16;
y = GenerateRnd(80) + 16;
}
int id;
switch (currlevel) {
case 22:
id = IDI_NOTE2;
@ -494,7 +493,9 @@ static void items_42390F()
id = IDI_NOTE1;
break;
}
SpawnQuestItem(id, { x, y }, 0, 1);
Point position = GetRandomAvailableItemPosition();
SpawnQuestItem(id, position, 0, 1);
}
void InitItems()

Loading…
Cancel
Save