sleep clearing bug fix

git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@2462 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
Lee Salzman
2008-08-31 18:37:34 +00:00
parent dfebf82451
commit 1d4f153af5
+11 -7
View File
@@ -273,7 +273,6 @@ void moveotherplayers()
struct scriptsleep { int wait; char *cmd; };
vector<scriptsleep> sleeps;
bool resetsleeps = false;
void addsleep(char *msec, char *cmd)
{
@@ -282,21 +281,26 @@ void addsleep(char *msec, char *cmd)
s.cmd = newstring(cmd);
}
void resetsleep() { resetsleeps = true; }
void resetsleep()
{
loopv(sleeps) DELETEA(sleeps[i].cmd);
sleeps.setsize(0);
}
COMMANDN(sleep, addsleep, ARG_2STR);
void updateworld(int curtime, int lastmillis) // main game update loop
{
// process command sleeps
if(resetsleeps) { sleeps.setsize(0); resetsleeps = false; }
loopv(sleeps)
{
if(sleeps[i].wait && lastmillis > sleeps[i].wait && !resetsleeps)
if(sleeps[i].wait && lastmillis > sleeps[i].wait)
{
execute(sleeps[i].cmd);
delete[] sleeps[i].cmd;
sleeps.remove(i--);
char *cmd = sleeps[i].cmd;
sleeps[i].cmd = NULL;
execute(cmd);
delete[] cmd;
if(sleeps.length() > i) sleeps.remove(i--);
}
}