X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=7e80c6f8a97183964dd159c66507f922221d8773;hb=5eb97ccbaffc671f05dd73bf0548c1666414017e;hp=19965d47a3c9ab9f08a41928f16ce316f48223c5;hpb=93aecd5b2aebfcdda8e26d60b952bd9224c8dede;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 19965d47..7e80c6f8 100644 --- a/src/tools.c +++ b/src/tools.c @@ -4227,11 +4227,24 @@ static int RequestHandleEvents(unsigned int req_state) result = old_player_nr + 1; break; + case KSYM_Up: case KSYM_1: + result = 1; + break; + + case KSYM_Right: case KSYM_2: + result = 2; + break; + + case KSYM_Down: case KSYM_3: + result = 3; + break; + + case KSYM_Left: case KSYM_4: - result = key - KSYM_1 + 1; + result = 4; break; default: @@ -4253,19 +4266,52 @@ static int RequestHandleEvents(unsigned int req_state) case SDL_CONTROLLER_BUTTON_A: case SDL_CONTROLLER_BUTTON_X: case SDL_CONTROLLER_BUTTON_LEFTSHOULDER: + case SDL_CONTROLLER_BUTTON_LEFTSTICK: result = 1; break; case SDL_CONTROLLER_BUTTON_B: case SDL_CONTROLLER_BUTTON_Y: case SDL_CONTROLLER_BUTTON_RIGHTSHOULDER: + case SDL_CONTROLLER_BUTTON_RIGHTSTICK: case SDL_CONTROLLER_BUTTON_BACK: result = 0; break; } if (req_state & REQ_PLAYER) - result = 0; + { + int old_player_nr = setup.network_player_nr; + + if (result != -1) + result = old_player_nr + 1; + + switch (event.cbutton.button) + { + case SDL_CONTROLLER_BUTTON_DPAD_UP: + case SDL_CONTROLLER_BUTTON_Y: + result = 1; + break; + + case SDL_CONTROLLER_BUTTON_DPAD_RIGHT: + case SDL_CONTROLLER_BUTTON_B: + result = 2; + break; + + case SDL_CONTROLLER_BUTTON_DPAD_DOWN: + case SDL_CONTROLLER_BUTTON_A: + result = 3; + break; + + case SDL_CONTROLLER_BUTTON_DPAD_LEFT: + case SDL_CONTROLLER_BUTTON_X: + result = 4; + break; + + default: + break; + } + } break; @@ -4290,6 +4336,22 @@ static int RequestHandleEvents(unsigned int req_state) else if (joy & JOY_BUTTON_2) result = 0; } + else if (AnyJoystick()) + { + int joy = AnyJoystick(); + + if (req_state & REQ_PLAYER) + { + if (joy & JOY_UP) + result = 1; + else if (joy & JOY_RIGHT) + result = 2; + else if (joy & JOY_DOWN) + result = 3; + else if (joy & JOY_LEFT) + result = 4; + } + } if (level_solved) { @@ -4332,7 +4394,7 @@ static boolean RequestDoor(char *text, unsigned int req_state) #if defined(NETWORK_AVALIABLE) /* pause network game while waiting for request to answer */ - if (options.network && + if (network.enabled && game_status == GAME_MODE_PLAYING && req_state & REQUEST_WAIT_FOR_INPUT) SendToServer_PausePlaying(); @@ -4474,7 +4536,7 @@ static boolean RequestDoor(char *text, unsigned int req_state) #if defined(NETWORK_AVALIABLE) /* continue network game after request */ - if (options.network && + if (network.enabled && game_status == GAME_MODE_PLAYING && req_state & REQUEST_WAIT_FOR_INPUT) SendToServer_ContinuePlaying(); @@ -4502,7 +4564,7 @@ static boolean RequestEnvelope(char *text, unsigned int req_state) #if defined(NETWORK_AVALIABLE) /* pause network game while waiting for request to answer */ - if (options.network && + if (network.enabled && game_status == GAME_MODE_PLAYING && req_state & REQUEST_WAIT_FOR_INPUT) SendToServer_PausePlaying(); @@ -4561,7 +4623,7 @@ static boolean RequestEnvelope(char *text, unsigned int req_state) #if defined(NETWORK_AVALIABLE) /* continue network game after request */ - if (options.network && + if (network.enabled && game_status == GAME_MODE_PLAYING && req_state & REQUEST_WAIT_FOR_INPUT) SendToServer_ContinuePlaying();