X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fminigames%2Fminigame%2Fpong.qc;h=baf7cf2859575b267e515c861e896998e7458ef0;hb=d28cca0c0ed2f6dd6c98cbd02488d3c02a27038e;hp=6b9b0480451a12758fc05c836f0702947319cde6;hpb=f64d037f9d2f38d874422e04d6147c1876a1c829;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/minigames/minigame/pong.qc b/qcsrc/common/minigames/minigame/pong.qc index 6b9b04804..baf7cf285 100644 --- a/qcsrc/common/minigames/minigame/pong.qc +++ b/qcsrc/common/minigames/minigame/pong.qc @@ -18,6 +18,7 @@ const int PONG_KEY_BOTH = 0x03; // Player jamming keys at ramdom // fields const int PONG_MAX_PLAYERS = 4; +const int PONG_SPECTATOR_TEAM = 255; // must be above max teams and equal to or below 255 .int pong_score; // (minigame_player) number of goals .int pong_keys; // (client) pressed keys .entity pong_paddles[PONG_MAX_PLAYERS];// (minigame) paddles @@ -352,7 +353,7 @@ int pong_server_event(entity minigame, string event, ...) { // Don't allow joining a match that is already running if ( minigame.minigame_flags & PONG_STATUS_PLAY ) - return false; + return PONG_SPECTATOR_TEAM; entity player = ...(0,entity); int i; @@ -365,7 +366,7 @@ int pong_server_event(entity minigame, string event, ...) } } - return false; + return PONG_SPECTATOR_TEAM; } case "part": { @@ -389,9 +390,12 @@ int pong_server_event(entity minigame, string event, ...) case "cmd": { entity player = ...(0,entity); + bool event_blocked = (player.team == PONG_SPECTATOR_TEAM); switch(argv(0)) { case "throw": + if(event_blocked) + return true; if ( minigame.minigame_flags & PONG_STATUS_WAIT ) { minigame.minigame_flags = PONG_STATUS_PLAY | @@ -410,23 +414,35 @@ int pong_server_event(entity minigame, string event, ...) } return true; case "+movei": + if(event_blocked) + return true; player.pong_keys |= PONG_KEY_INCREASE; return true; case "+moved": + if(event_blocked) + return true; player.pong_keys |= PONG_KEY_DECREASE; return true; case "-movei": + if(event_blocked) + return true; player.pong_keys &= ~PONG_KEY_INCREASE; return true; case "-moved": + if(event_blocked) + return true; player.pong_keys &= ~PONG_KEY_DECREASE; return true; case "move": + if(event_blocked) + return true; if(argv(1)) player.pong_keys = stoi(argv(1)); return true; case "pong_aimore": { + if(event_blocked) + return true; // keep declaration here, moving it into for() reverses weapon order // potentially compiler bug int j; @@ -445,6 +461,8 @@ int pong_server_event(entity minigame, string event, ...) } case "pong_ailess": { + if(event_blocked) + return true; if ( minigame.minigame_flags & PONG_STATUS_WAIT ) { entity paddle; @@ -557,6 +575,8 @@ void pong_hud_board(vector pos, vector mySize) } } + + minigame_show_allspecs(pos, mySize); } // Required function, draw the game status panel @@ -578,7 +598,7 @@ void pong_hud_status(vector pos, vector mySize) entity e; FOREACH_MINIGAME_ENTITY(e) { - if ( e.classname == "minigame_player" || e.classname == "pong_ai" ) + if ( (e.classname == "minigame_player" || e.classname == "pong_ai") && e.team != PONG_SPECTATOR_TEAM ) { mypos = pos; mypos_y += (e.team-1) * (player_fontsize_y + ts_y); @@ -602,7 +622,9 @@ void pong_hud_status(vector pos, vector mySize) string pong_message(int mgflags) { string rmessage = ""; - if (mgflags & PONG_STATUS_WAIT) + if(minigame_self.team == PONG_SPECTATOR_TEAM) + rmessage = _("You are spectating"); + else if (mgflags & PONG_STATUS_WAIT) rmessage = _("Press ^1Start Match^7 to start the match with the current players"); return rmessage; } @@ -620,42 +642,41 @@ int pong_client_event(entity minigame, string event, ...) return false; } case "key_pressed": - switch ( ...(0,int) ) - { - case K_UPARROW: - case K_KP_UPARROW: - case K_LEFTARROW: - case K_KP_LEFTARROW: - //minigame_cmd("+moved"); - pong_keys_pressed |= PONG_KEY_DECREASE; - return true; - case K_DOWNARROW: - case K_KP_DOWNARROW: - case K_RIGHTARROW: - case K_KP_RIGHTARROW: - //minigame_cmd("+movei"); - pong_keys_pressed |= PONG_KEY_INCREASE; - return true; - } - return false; case "key_released": - switch ( ...(0,int) ) - { - case K_UPARROW: - case K_KP_UPARROW: - case K_LEFTARROW: - case K_KP_LEFTARROW: - //minigame_cmd("-moved"); - pong_keys_pressed &= ~PONG_KEY_DECREASE; - return true; - case K_DOWNARROW: - case K_KP_DOWNARROW: - case K_RIGHTARROW: - case K_KP_RIGHTARROW: - //minigame_cmd("-movei"); - pong_keys_pressed &= ~PONG_KEY_INCREASE; - return true; - } + if ((minigame.minigame_flags & PONG_STATUS_PLAY) && minigame_self.team != PONG_SPECTATOR_TEAM) + switch ( ...(0,int) ) + { + case K_UPARROW: + case K_KP_UPARROW: + case K_LEFTARROW: + case K_KP_LEFTARROW: + if (event == "key_pressed") + { + //minigame_cmd("+moved"); + pong_keys_pressed |= PONG_KEY_DECREASE; + } + else + { + //minigame_cmd("-moved"); + pong_keys_pressed &= ~PONG_KEY_DECREASE; + } + return true; + case K_DOWNARROW: + case K_KP_DOWNARROW: + case K_RIGHTARROW: + case K_KP_RIGHTARROW: + if (event == "key_pressed") + { + //minigame_cmd("+movei"); + pong_keys_pressed |= PONG_KEY_INCREASE; + } + else + { + //minigame_cmd("-movei"); + pong_keys_pressed &= ~PONG_KEY_INCREASE; + } + return true; + } return false; case "network_receive": { @@ -684,7 +705,7 @@ int pong_client_event(entity minigame, string event, ...) case "menu_click": { string cmd = ...(0,string); - if( cmd == "pong_throw" && minigame.minigame_flags & PONG_STATUS_WAIT ) + if( cmd == "pong_throw" && ( minigame.minigame_flags & PONG_STATUS_WAIT ) ) { minigame_cmd("throw"); }