X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fevents.c;h=039be790270c51f9eb82c11990f3d6986d67d1be;hb=5e8d9d0308f76bb35e7578a8859d6f01977d0f69;hp=c669e5e7b5d24f189f297768a4c1c116515b31d8;hpb=4b0c6356359ee52f98cee8fa578179c6c41d4ef1;p=rocksndiamonds.git diff --git a/src/events.c b/src/events.c index c669e5e7..039be790 100644 --- a/src/events.c +++ b/src/events.c @@ -72,7 +72,7 @@ void EventLoop(void) if (game_status != PLAYING) { XSync(display, FALSE); - Delay(10000); + Delay(10); } } @@ -171,7 +171,7 @@ void HandleExposeEvent(XExposeEvent *event) for(yy=0;yy=x1 && xx<=x2 && yy>=y1 && yy<=y2) DrawScreenField(xx,yy); - DrawPlayerField(); + DrawPlayerField(JX,JY); SetDrawtoField(DRAW_DIRECT); } @@ -180,8 +180,8 @@ void HandleExposeEvent(XExposeEvent *event) { int fx = FX, fy = FY; - fx += (PlayerMovDir & (MV_LEFT|MV_RIGHT) ? ScreenMovPos : 0); - fy += (PlayerMovDir & (MV_UP|MV_DOWN) ? ScreenMovPos : 0); + fx += (local_player->MovDir & (MV_LEFT|MV_RIGHT) ? ScreenMovPos : 0); + fy += (local_player->MovDir & (MV_UP|MV_DOWN) ? ScreenMovPos : 0); XCopyArea(display,fieldbuffer,backbuffer,gc, fx,fy, SXSIZE,SYSIZE, @@ -291,7 +291,7 @@ void HandleButton(int mx, int my, int button) HandleSetupScreen(mx,my,0,0,button); break; case PLAYING: - HandleGameActions(); + HandleGameActions(0); break; default: break; @@ -516,10 +516,11 @@ void HandleKey(KeySym key, int key_status) case XK_8: case XK_9: if (key == XK_0) - GameSpeed = 50; + GameFrameDelay = 500; else - GameSpeed = key - XK_0; - printf("GameSpeed == %d\n", GameSpeed); + GameFrameDelay = (key - XK_0) * 10; + printf("Game speed == %d%% (%d ms delay between two frames)\n", + GAME_FRAME_DELAY * 100 / GameFrameDelay, GameFrameDelay); break; case XK_a: @@ -551,7 +552,7 @@ void HandleKey(KeySym key, int key_status) case XK_Q: #endif case XK_q: - Dynamite = 1000; + local_player->dynamite = 1000; break; case XK_x: @@ -592,15 +593,15 @@ void HandleKey(KeySym key, int key_status) } else { - Delay(1000); + Delay(1); } } /* - Delay(160000 / num_steps); + Delay(160 / num_steps); */ /* - Delay(120000 / num_steps); + Delay(120 / num_steps); */ } } @@ -619,7 +620,7 @@ void HandleKey(KeySym key, int key_status) 0,0); XFlush(display); XSync(display,FALSE); - Delay(1000000); + Delay(1000); } break; @@ -654,7 +655,11 @@ void HandleNoXEvent() break; case PLAYING: HandleJoystick(); - HandleGameActions(); + + /* + HandleGameActions(0); + */ + break; default: break; @@ -671,15 +676,10 @@ void HandleJoystick() int up = joy & JOY_UP; int down = joy & JOY_DOWN; int button = joy & JOY_BUTTON; - int button1 = joy & JOY_BUTTON_1; - int button2 = joy & JOY_BUTTON_2; int newbutton = (JoystickButton() == JOY_BUTTON_NEW_PRESSED); int dx = (left ? -1 : right ? 1 : 0); int dy = (up ? -1 : down ? 1 : 0); - if (game_status==PLAYING && (tape.playing || keyboard)) - newbutton = ((joy & JOY_BUTTON) != 0); - switch(game_status) { case MAINMENU: @@ -699,16 +699,18 @@ void HandleJoystick() HandleSetupScreen(0,0,dx,dy,newbutton ? MB_MENU_CHOICE : MB_MENU_MARK); break; } + case HALLOFFAME: HandleHallOfFame(!newbutton); break; + case HELPSCREEN: HandleHelpScreen(!newbutton); break; + case PLAYING: - { - static int player_frame_reset_delay = 0; - BOOL moved = FALSE, snapped = FALSE, bombed = FALSE; + if (tape.playing || keyboard) + newbutton = ((joy & JOY_BUTTON) != 0); if (GameOver && newbutton) { @@ -721,61 +723,9 @@ void HandleJoystick() if (tape.pausing || PlayerGone) joy = 0; - if (joy) - { - player_frame_reset_delay = 0; - - if (button1) - snapped = SnapField(dx,dy); - else - { - if (button2) - bombed = PlaceBomb(); - moved = MoveFigure(dx,dy); - } - - if (tape.recording && (moved || snapped || bombed)) - { - if (bombed && !moved) - joy &= JOY_BUTTON; - TapeRecordAction(joy); - } - else if (tape.playing && snapped) - SnapField(0,0); /* stop snapping */ - } - else - { - DigField(0,0,0,0,DF_NO_PUSH); - SnapField(0,0); - if (++player_frame_reset_delay > MoveSpeed) - PlayerFrame = 0; - } - - if (tape.playing && !tape.pausing && !joy && tape.counter= tape.pos[tape.counter].delay) - { - PlayerMovDir = next_joy; - PlayerFrame = FrameCounter % 4; - PlayerPushing = TRUE; - } - } - } - } + HandleGameActions(joy); break; - } + default: break; }