mirror of
https://github.com/dwsJason/xrick2gs.git
synced 2024-06-07 02:29:33 +00:00
Fix sprite clipping issues
This commit is contained in:
parent
21e3c2cd54
commit
18a1069e8d
25
src/draw.c
25
src/draw.c
|
@ -130,7 +130,7 @@ U8
|
||||||
draw_clipms(S16 *x, S16 *y, U16 *width, U16 *height)
|
draw_clipms(S16 *x, S16 *y, U16 *width, U16 *height)
|
||||||
{
|
{
|
||||||
if (*x < 0) {
|
if (*x < 0) {
|
||||||
if (*x + *width < 0)
|
if (*x + ((S16)*width) < 0)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else {
|
else {
|
||||||
*width += *x;
|
*width += *x;
|
||||||
|
@ -146,7 +146,7 @@ draw_clipms(S16 *x, S16 *y, U16 *width, U16 *height)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*y < DRAW_XYMAP_SCRTOP) {
|
if (*y < DRAW_XYMAP_SCRTOP) {
|
||||||
if ((*y + *height) < DRAW_XYMAP_SCRTOP)
|
if ((*y + ((S16)*height)) < DRAW_XYMAP_SCRTOP)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else {
|
else {
|
||||||
*height += *y - DRAW_XYMAP_SCRTOP;
|
*height += *y - DRAW_XYMAP_SCRTOP;
|
||||||
|
@ -156,7 +156,7 @@ draw_clipms(S16 *x, S16 *y, U16 *width, U16 *height)
|
||||||
else {
|
else {
|
||||||
if (*y >= DRAW_XYMAP_HBTOP)
|
if (*y >= DRAW_XYMAP_HBTOP)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
else if (*y + *height > DRAW_XYMAP_HBTOP)
|
else if (*y + ((S16)*height) > DRAW_XYMAP_HBTOP)
|
||||||
*height = DRAW_XYMAP_HBTOP - *y;
|
*height = DRAW_XYMAP_HBTOP - *y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -331,7 +331,10 @@ draw_sprite(U8 number, U16 x, U16 y)
|
||||||
{
|
{
|
||||||
int frameNo = number;
|
int frameNo = number;
|
||||||
|
|
||||||
if (y >= (200-21))
|
if (y >= (200-22))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (x >= 320)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
frameNo<<=1;
|
frameNo<<=1;
|
||||||
|
@ -360,16 +363,20 @@ draw_sprite2(U8 number, U16 x, U16 y, U8 front)
|
||||||
|
|
||||||
frameNo<<=1;
|
frameNo<<=1;
|
||||||
|
|
||||||
x0 -= DRAW_XYMAP_SCRLEFT;
|
x -= DRAW_XYMAP_SCRLEFT;
|
||||||
y0 -= (DRAW_XYMAP_SCRTOP-8);
|
y -= (DRAW_XYMAP_SCRTOP-8);
|
||||||
|
|
||||||
if (x0 & 1)
|
if (x & 1)
|
||||||
frameNo|=1;
|
frameNo|=1;
|
||||||
|
|
||||||
if (y0 >= (200-21))
|
if (x >= 320)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (y >= (200 - 24))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
draw_setfb(x0, y0);
|
draw_setfb(x, y);
|
||||||
DrawSprite((int)fb, frameNo);
|
DrawSprite((int)fb, frameNo);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue
Block a user