X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=4fe2668937485e97ab2235f780cd78a38a3947c3;hb=615a8c2934804dacec082ba713078d9fd7070b12;hp=5bba1c107785e4bfbb5dc8dc1c70e03ca7037f4a;hpb=1c3065c351ef8a8637af5540dea2b39c1d86e80f;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 5bba1c10..4fe26689 100644 --- a/src/tools.c +++ b/src/tools.c @@ -70,7 +70,7 @@ void SetDrawtoField(int mode) void RedrawPlayfield(boolean force_redraw, int x, int y, int width, int height) { - if (game_status == PLAYING) + if (game_status == GAME_MODE_PLAYING) { if (force_redraw) { @@ -118,7 +118,7 @@ void BackToFront() int x,y; DrawBuffer *buffer = (drawto_field == window ? backbuffer : drawto_field); - if (setup.direct_draw && game_status == PLAYING) + if (setup.direct_draw && game_status == GAME_MODE_PLAYING) redraw_mask &= ~REDRAW_MAIN; if (redraw_mask & REDRAW_TILES && redraw_tiles > REDRAWTILES_THRESHOLD) @@ -130,7 +130,7 @@ void BackToFront() if (redraw_mask == REDRAW_NONE) return; - if (global.fps_slowdown && game_status == PLAYING) + if (global.fps_slowdown && game_status == GAME_MODE_PLAYING) { static boolean last_frame_skipped = FALSE; boolean skip_even_when_not_scrolling = TRUE; @@ -175,7 +175,8 @@ void BackToFront() if (redraw_mask & REDRAW_FIELD) { - if (game_status != PLAYING || redraw_mask & REDRAW_FROM_BACKBUFFER) + if (game_status != GAME_MODE_PLAYING || + redraw_mask & REDRAW_FROM_BACKBUFFER) { BlitBitmap(backbuffer, window, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE, REAL_SX, REAL_SY); @@ -388,7 +389,7 @@ void ClearWindow() { DrawBackground(REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE); - if (setup.soft_scrolling && game_status == PLAYING) + if (setup.soft_scrolling && game_status == GAME_MODE_PLAYING) { ClearRectangle(fieldbuffer, 0, 0, FXSIZE, FYSIZE); SetDrawtoField(DRAW_BUFFERED); @@ -396,7 +397,7 @@ void ClearWindow() else SetDrawtoField(DRAW_BACKBUFFER); - if (setup.direct_draw && game_status == PLAYING) + if (setup.direct_draw && game_status == GAME_MODE_PLAYING) { ClearRectangle(window, REAL_SX, REAL_SY, FULL_SXSIZE, FULL_SYSIZE); SetDrawtoField(DRAW_DIRECT); @@ -1072,9 +1073,9 @@ void DrawScreenElementExt(int x, int y, int dx, int dy, int element, { boolean left_stopped = FALSE, right_stopped = FALSE; - if (!IN_LEV_FIELD(lx - 1, ly) || IS_MAUER(Feld[lx - 1][ly])) + if (!IN_LEV_FIELD(lx - 1, ly) || IS_WALL(Feld[lx - 1][ly])) left_stopped = TRUE; - if (!IN_LEV_FIELD(lx + 1, ly) || IS_MAUER(Feld[lx + 1][ly])) + if (!IN_LEV_FIELD(lx + 1, ly) || IS_WALL(Feld[lx + 1][ly])) right_stopped = TRUE; if (left_stopped && right_stopped) @@ -1198,7 +1199,8 @@ static void DrawLevelFieldCrumbledSandExt(int x, int y, int graphic, int frame) element = (IN_LEV_FIELD(xx, yy) ? Feld[xx][yy] : EL_STEELWALL); - if (CAN_BE_CRUMBLED(element)) /* neighbour is of same type */ + /* check if neighbour field is of same type */ + if (CAN_BE_CRUMBLED(element)) continue; if (i == 1 || i == 2) @@ -1588,7 +1590,8 @@ void DrawMicroLevel(int xpos, int ypos, boolean restart) static int label_state, label_counter; int last_game_status = game_status; /* save current game status */ - game_status = PSEUDO_PREVIEW; /* force PREVIEW font on preview level */ + /* force PREVIEW font on preview level */ + game_status = GAME_MODE_PSEUDO_PREVIEW; if (restart) { @@ -1711,7 +1714,7 @@ boolean Request(char *text, unsigned int req_state) #if defined(PLATFORM_UNIX) /* pause network game while waiting for request to answer */ if (options.network && - game_status == PLAYING && + game_status == GAME_MODE_PLAYING && req_state & REQUEST_WAIT_FOR) SendToServer_PausePlaying(); #endif @@ -1732,7 +1735,8 @@ boolean Request(char *text, unsigned int req_state) /* clear door drawing field */ DrawBackground(DX, DY, DXSIZE, DYSIZE); - game_status = PSEUDO_DOOR; /* force DOOR font on preview level */ + /* force DOOR font on preview level */ + game_status = GAME_MODE_PSEUDO_DOOR; /* write text for request */ for(ty=0; ty < MAX_REQUEST_LINES; ty++) @@ -1804,7 +1808,7 @@ boolean Request(char *text, unsigned int req_state) return FALSE; } - if (game_status != MAINMENU) + if (game_status != GAME_MODE_MAIN) InitAnimation(); button_status = MB_RELEASED; @@ -1928,7 +1932,7 @@ boolean Request(char *text, unsigned int req_state) Delay(10); } - if (game_status != MAINMENU) + if (game_status != GAME_MODE_MAIN) StopAnimation(); UnmapToolButtons(); @@ -1953,7 +1957,7 @@ boolean Request(char *text, unsigned int req_state) #if defined(PLATFORM_UNIX) /* continue network game after request */ if (options.network && - game_status == PLAYING && + game_status == GAME_MODE_PLAYING && req_state & REQUEST_WAIT_FOR) SendToServer_ContinuePlaying(); #endif @@ -2007,8 +2011,8 @@ unsigned int MoveDoor(unsigned int door_state) static int door1 = DOOR_OPEN_1; static int door2 = DOOR_CLOSE_2; static unsigned long door_delay = 0; - int x, start, stepsize = global.door_step_offset; - unsigned long door_delay_value = global.door_step_delay; + int x, start, stepsize = door.step_offset; + unsigned long door_delay_value = door.step_delay; if (door_state == DOOR_GET_STATE) return(door1 | door2); @@ -2146,7 +2150,7 @@ unsigned int MoveDoor(unsigned int door_state) BackToFront(); - if (game_status == MAINMENU) + if (game_status == GAME_MODE_MAIN) DoAnimation(); } } @@ -2387,6 +2391,7 @@ int get_next_element(int element) int el_act_dir2img(int element, int action, int direction) { + element = GFX_ELEMENT(element); direction = MV_DIR_BIT(direction); return element_info[element].direction_graphic[action][direction]; @@ -2394,25 +2399,35 @@ int el_act_dir2img(int element, int action, int direction) int el_act2img(int element, int action) { + element = GFX_ELEMENT(element); + return element_info[element].graphic[action]; } int el_dir2img(int element, int direction) { + element = GFX_ELEMENT(element); + return el_act_dir2img(element, ACTION_DEFAULT, direction); } int el2img(int element) { + element = GFX_ELEMENT(element); + return element_info[element].graphic[ACTION_DEFAULT]; } int el2edimg(int element) { + element = GFX_ELEMENT(element); + return element_info[element].special_graphic[GFX_SPECIAL_ARG_EDITOR]; } int el2preimg(int element) { + element = GFX_ELEMENT(element); + return element_info[element].special_graphic[GFX_SPECIAL_ARG_PREVIEW]; }