From 704cb641309d39cbef1bcacee73458f1ef6c01a7 Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Sat, 11 Oct 2008 21:31:56 +0000 Subject: [PATCH] clamp dynlight area to map git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@2964 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/worldlight.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/source/src/worldlight.cpp b/source/src/worldlight.cpp index d899b43d..43d0089b 100644 --- a/source/src/worldlight.cpp +++ b/source/src/worldlight.cpp @@ -200,10 +200,12 @@ void preparedynlight(dlight &d) { block area = { (int)d.o.x-d.reach, (int)d.o.y-d.reach, d.reach*2+1, d.reach*2+1 }; - if(area.x<1) area.x = 1; - if(area.y<1) area.y = 1; - if(area.xs+area.x>ssize-2) area.xs = ssize-2-area.x; - if(area.ys+area.y>ssize-2) area.ys = ssize-2-area.y; + if(area.x<1) { area.xs = max(area.xs - (1 - area.x), 0); area.x = 1; } + else if(area.x>ssize-2) { area.x = ssize-2; area.xs = 0; } + if(area.y<1) { area.ys = max(area.ys - (1 - area.y), 0); area.y = 1; } + else if(area.y>ssize-2) { area.y = ssize-2; area.ys = 0; } + if(area.x+area.xs>ssize-2) area.xs = ssize-2-area.x; + if(area.y+area.ys>ssize-2) area.ys = ssize-2-area.y; if(d.area) {