From 4e1e162bcaaa0079f1216b4b518af4903a110fb7 Mon Sep 17 00:00:00 2001 From: "p.kosyh" Date: Thu, 28 Apr 2011 11:15:58 +0000 Subject: [PATCH] fix --- src/sdl-instead/instead.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/sdl-instead/instead.c b/src/sdl-instead/instead.c index ae01a59..b34265e 100644 --- a/src/sdl-instead/instead.c +++ b/src/sdl-instead/instead.c @@ -1235,7 +1235,7 @@ static int luaB_fill_sprite(lua_State *L) { static int luaB_pixel_sprite(lua_State *L) { img_t d; float v; - int rc; + int rc, w, h; color_t col = { .r = game_theme.bgcol.r, .g = game_theme.bgcol.g, .b = game_theme.bgcol.b, .a = 255 }; const char *dst = luaL_optstring(L, 1, NULL); int x = luaL_optnumber(L, 2, 0); @@ -1255,18 +1255,22 @@ static int luaB_pixel_sprite(lua_State *L) { if (!d) return 0; + w = gfx_img_w(d) - 2 * xoff; + h = gfx_img_h(d) - 2 * yoff; + v = game_theme.scale; if (v != 1.0f) { x *= v; y *= v; } + if (color) { + if (x < 0 || y < 0 || x >= w || y >= h) + return 0; game_pict_modify(d); - gfx_clip(game_theme.xoff, game_theme.yoff, game_theme.w - 2*game_theme.xoff, game_theme.h - 2*game_theme.yoff); col.a = alpha; rc = gfx_set_pixel(d, x + xoff, y + yoff, col); - gfx_noclip(); } else { rc = gfx_get_pixel(d, x + xoff, y + yoff, &col); }