Merge branch 'platterwrap' into 'master'
Prevent wraparound on Level platter when there are less than 3 rows See merge request STJr/SRB2Internal!383
This commit is contained in:
commit
57d29a9b65
54
src/m_menu.c
54
src/m_menu.c
|
@ -4895,13 +4895,25 @@ static void M_HandleLevelPlatter(INT32 choice)
|
||||||
{
|
{
|
||||||
boolean exitmenu = false; // exit to previous menu
|
boolean exitmenu = false; // exit to previous menu
|
||||||
INT32 selectval;
|
INT32 selectval;
|
||||||
|
UINT8 iter;
|
||||||
|
|
||||||
switch (choice)
|
switch (choice)
|
||||||
{
|
{
|
||||||
case KEY_DOWNARROW:
|
case KEY_DOWNARROW:
|
||||||
|
if (lsrow == levelselect.numrows-1)
|
||||||
|
{
|
||||||
|
if (levelselect.numrows < 3)
|
||||||
|
{
|
||||||
|
if (!lsoffs[0]) // prevent sound spam
|
||||||
|
{
|
||||||
|
lsoffs[0] = -8;
|
||||||
|
S_StartSound(NULL,sfx_s3kb7);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lsrow = UINT8_MAX;
|
||||||
|
}
|
||||||
lsrow++;
|
lsrow++;
|
||||||
if (lsrow == levelselect.numrows)
|
|
||||||
lsrow = 0;
|
|
||||||
|
|
||||||
lsoffs[0] = lsvseperation(lsrow);
|
lsoffs[0] = lsvseperation(lsrow);
|
||||||
|
|
||||||
|
@ -4915,17 +4927,29 @@ static void M_HandleLevelPlatter(INT32 choice)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case KEY_UPARROW:
|
case KEY_UPARROW:
|
||||||
lsoffs[0] = -lsvseperation(lsrow);
|
iter = lsrow;
|
||||||
|
if (!lsrow)
|
||||||
|
{
|
||||||
|
if (levelselect.numrows < 3)
|
||||||
|
{
|
||||||
|
if (!lsoffs[0]) // prevent sound spam
|
||||||
|
{
|
||||||
|
lsoffs[0] = 8;
|
||||||
|
S_StartSound(NULL,sfx_s3kb7);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
lsrow = levelselect.numrows;
|
||||||
|
}
|
||||||
lsrow--;
|
lsrow--;
|
||||||
if (lsrow == UINT8_MAX)
|
|
||||||
lsrow = levelselect.numrows-1;
|
lsoffs[0] = -lsvseperation(iter);
|
||||||
|
|
||||||
if (levelselect.rows[lsrow].header[0])
|
if (levelselect.rows[lsrow].header[0])
|
||||||
lshli = lsrow;
|
lshli = lsrow;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
UINT8 iter = lsrow;
|
iter = lsrow;
|
||||||
do
|
do
|
||||||
iter = ((iter == 0) ? levelselect.numrows-1 : iter-1);
|
iter = ((iter == 0) ? levelselect.numrows-1 : iter-1);
|
||||||
while ((iter != lsrow) && !(levelselect.rows[iter].header[0]));
|
while ((iter != lsrow) && !(levelselect.rows[iter].header[0]));
|
||||||
|
@ -5188,7 +5212,13 @@ static void M_DrawLevelPlatterMenu(void)
|
||||||
// finds row at top of the screen
|
// finds row at top of the screen
|
||||||
while (y > -8)
|
while (y > -8)
|
||||||
{
|
{
|
||||||
iter = ((iter == 0) ? levelselect.numrows-1 : iter-1);
|
if (iter == 0)
|
||||||
|
{
|
||||||
|
if (levelselect.numrows < 3)
|
||||||
|
break;
|
||||||
|
iter = levelselect.numrows;
|
||||||
|
}
|
||||||
|
iter--;
|
||||||
y -= lsvseperation(iter);
|
y -= lsvseperation(iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5197,7 +5227,13 @@ static void M_DrawLevelPlatterMenu(void)
|
||||||
{
|
{
|
||||||
M_DrawLevelPlatterRow(iter, y);
|
M_DrawLevelPlatterRow(iter, y);
|
||||||
y += lsvseperation(iter);
|
y += lsvseperation(iter);
|
||||||
iter = ((iter == levelselect.numrows-1) ? 0 : iter+1);
|
if (iter == levelselect.numrows-1)
|
||||||
|
{
|
||||||
|
if (levelselect.numrows < 3)
|
||||||
|
break;
|
||||||
|
iter = UINT8_MAX;
|
||||||
|
}
|
||||||
|
iter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// draw cursor box
|
// draw cursor box
|
||||||
|
|
Loading…
Reference in New Issue