From 7874c516abc910775b734b57a344b3d47d45321e Mon Sep 17 00:00:00 2001 From: stpohle Date: Tue, 10 Jun 2003 20:46:07 +0000 Subject: [PATCH] Fixed CPU usage bug if the player have got a special.. --- ChangeLog | 6 ++- src/multiwait.c | 18 ++++--- src/special.c | 130 +++++++++++++++++++++++++++--------------------- 3 files changed, 91 insertions(+), 63 deletions(-) diff --git a/ChangeLog b/ChangeLog index 444bbde..39e9dfd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ + +- PowerUps will be painted diffrent now. Depend + on what it is. + - New Font Drawing enginge, so we can draw in with diffrent fonts and colors. @@ -8,7 +12,7 @@ - Added Sound Support (thanks to Henrik Enqvist for the help and the sound files.) -- Added new powerups (Patty) +- Added new special powerups (Patty) - Fixed make install, so the source will be able to install correctly now with the data packages diff --git a/src/multiwait.c b/src/multiwait.c index 9128e8f..702b8c3 100644 --- a/src/multiwait.c +++ b/src/multiwait.c @@ -53,6 +53,7 @@ mw_shutdown () chat_show (-1, -1, -1, -1); gfx_free_players (); + for (i = 0; i < MAX_PLAYERS; i++) SDL_FreeSurface (mw_plgfx[i]); }; @@ -82,9 +83,13 @@ mw_draw_status () px = gfx.res.x / 320; x = (gfx.res.x - px * 320) / 2; - for (pnr = 0; pnr < px; pnr++) - font_draw (pnr * 320 + x, 24, " Wins Points", 1); - + for (pnr = 0; pnr < px; pnr++) { + font_setcolor (128,128,128,0); + font_draw (pnr * 320 + x - 2, 22, " Wins Points", 0); + font_setcolor (192,192,255,0); + font_draw (pnr * 320 + x, 24, " Wins Points", 0); + } + /* 2. the names with points */ for (x1 = pnr = 0, y = 48; pnr < MAX_PLAYERS; pnr++) { redraw_logo (x1 * 320, y - 4, 320, 32); @@ -105,9 +110,10 @@ mw_draw_status () if (PS_IS_used (bman.players[pnr].state)) { if (bman.lastwinner == pnr) - font_draw (x + x1 * 320, y, text, 0); - else - font_draw (x + x1 * 320, y, text, 0); + font_setcolor (255,255,192,0); + else + font_setcolor (192,192,192,0); + font_draw (x + x1 * 320, y, text, 0); } x1++; if (x1 >= px) { diff --git a/src/special.c b/src/special.c index f903b43..3735f1d 100644 --- a/src/special.c +++ b/src/special.c @@ -26,10 +26,11 @@ special_trigger (int p_nr) if (z) { - bman.last_ex_nr = ex_nr + 6; - p->special.numuse--; - if (!p->special.numuse) special_clear(p_nr); - } + bman.last_ex_nr = ex_nr + 6; + p->special.numuse--; + if (!p->special.numuse) + special_clear (p_nr); + } } @@ -74,8 +75,8 @@ special_row (int p_nr) b->state = BS_ticking; b->r = p->range; b->ex_nr = -1; - b->pos.x = x<<8; - b->pos.y = y<<8; + b->pos.x = x << 8; + b->pos.y = y << 8; b->to = BOMB_TIMEOUT * TIME_FACTOR + t; // 5 Secs * 200 bman.bfield[x][y] = 1; if (bman.gametype != GT_single) { @@ -93,7 +94,7 @@ special_push (int p_nr) _bomb *b = NULL; _player *p = &bman.players[p_nr]; _point bombs[MAX_PLAYERS * MAX_BOMBS]; - + int x = p->pos.x >> 8, y = p->pos.y >> 8, dx = 0, @@ -102,7 +103,9 @@ special_push (int p_nr) y1, i; - if ((p->pos.x & 0xff) || (p->pos.y & 0xff)) {return;} + if ((p->pos.x & 0xff) || (p->pos.y & 0xff)) { + return; + } switch (p->d) { case left: dx = -1; @@ -119,88 +122,103 @@ special_push (int p_nr) } x += dx; y += dy; - - // check that player is beside a bomb + + // check that player is beside a bomb if (!bman.bfield[x][y]) return; - + x1 = x + dx; y1 = y + dy; - - // check the field behind the bomb + + // check the field behind the bomb if (bman.bfield[x1][y1] || bman.field[x1][y1].type != FT_nothing) return; get_bomb_on (x << 8, y << 8, bombs); - // move all bombs on that field (there should be only 1) + // move all bombs on that field (there should be only 1) for (i = 0; bombs[i].x != -1; i++) { b = &bman.players[bombs[i].x].bombs[bombs[i].y]; if (b->state != BS_exploding) { - b->moveto.x = x1<<8; - b->moveto.y = y1<<8; - b->moves=p->speed; - bman.bfield[x][y]=0; - bman.bfield[x1][y1]=1; - draw_stone(x,y); - field_update(x,y); + b->moveto.x = x1 << 8; + b->moveto.y = y1 << 8; + b->moves = p->speed; + bman.bfield[x][y] = 0; + bman.bfield[x1][y1] = 1; + draw_stone (x, y); + field_update (x, y); if (bman.gametype != GT_single) { - net_game_send_bomb (bombs[i].x, bombs[i].y);} - } + net_game_send_bomb (bombs[i].x, bombs[i].y); + } + } } } -void -special_pickup (int p_nr, int s_nr) { +void +special_pickup (int p_nr, int s_nr) +{ _special *s = &bman.players[p_nr].special; - s->to=0; - s->numuse=0; - s->type=s_nr; - switch(s_nr) { - case SP_trigger: - s->numuse=SPECIAL_TRIGGER_NUMUSE; - s->to=SPECIAL_TRIGGER_TIME*TIME_FACTOR; - break; - case SP_row : - s->to=SPECIAL_ROW_TIME*TIME_FACTOR; - break; - case SP_push : - s->to=SPECIAL_PUSH_TIME*TIME_FACTOR; - break; - } + + s->to = 0; + s->numuse = 0; + s->type = s_nr; + switch (s_nr) { + case SP_trigger: + s->numuse = SPECIAL_TRIGGER_NUMUSE; + s->to = SPECIAL_TRIGGER_TIME * TIME_FACTOR; + break; + case SP_row: + s->to = SPECIAL_ROW_TIME * TIME_FACTOR; + break; + case SP_push: + s->to = SPECIAL_PUSH_TIME * TIME_FACTOR; + break; + } + + bman.updatestatusbar = 1; } -void -special_clear (int p_nr) { - bman.players[p_nr].special.type=0; - bman.updatestatusbar=1; +void +special_clear (int p_nr) +{ + bman.players[p_nr].special.type = 0; + bman.updatestatusbar = 1; } + void -special_loop (int p_nr) { +special_loop (int p_nr) +{ _special *s = &bman.players[p_nr].special; - if (!s->type) return; - bman.updatestatusbar=1; - if (s->to) { + + if (!s->type) + return; + + if (s->to) { s->to--; - if (!s->to) special_clear (p_nr); - } + if (!s->to) + special_clear (p_nr); + } } void - special_use (int p_nr) { +special_use (int p_nr) +{ switch (bman.players[p_nr].special.type) { - case SP_trigger: special_trigger (p_nr); break; - case SP_row:if (bman.players[p_nr].m) + case SP_row: + if (bman.players[p_nr].m) special_row (p_nr); break; - case SP_push:if (bman.players[p_nr].m) + case SP_push: + if (bman.players[p_nr].m) special_push (p_nr); break; - case SP_kick:break; -}} + case SP_kick: + break; + } +}