X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fminigames%2Fminigame%2Fps.qc;h=c976819dc4dfe2afff2f4baf0cce03cb1ada5570;hb=4007372efa4f5a012028d366bca3ba3ff6199d34;hp=c8851f2ac4bad90e9f437751a20482182736050c;hpb=0b6694545ba935bbac13c20fc11842ba1850d972;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/minigames/minigame/ps.qc b/qcsrc/common/minigames/minigame/ps.qc index c8851f2ac..c976819dc 100644 --- a/qcsrc/common/minigames/minigame/ps.qc +++ b/qcsrc/common/minigames/minigame/ps.qc @@ -1,5 +1,5 @@ #include "ps.qh" -REGISTER_MINIGAME(ps, "Peg Solitaire"); +REGISTER_MINIGAME(ps, _("Peg Solitaire")); const float PS_TURN_MOVE = 0x0100; // player has to click on a piece on the board const float PS_TURN_WIN = 0x0200; // player has won @@ -39,15 +39,19 @@ bool ps_tile_blacklisted(string tile) int number = minigame_tile_number(tile); int letter = minigame_tile_letter(tile); if(letter < 2) + { if(number < 2) return true; else if(number > PS_NUM_CNT - 3) return true; + } if(letter > PS_LET_CNT - 3) + { if(number < 2) return true; else if(number > PS_NUM_CNT - 3) return true; + } return false; } @@ -120,7 +124,7 @@ void ps_setup_pieces(entity minigame) continue; if(i == floor(PS_NUM_CNT * 0.5) && t == floor(PS_LET_CNT * 0.5)) continue; // middle piece is empty - entity piece = msle_spawn(minigame,"minigame_board_piece"); + entity piece = msle_spawn(minigame,new(minigame_board_piece)); piece.team = 1; // init default team? piece.netname = strzone(minigame_tile_buildname(t,i)); minigame_server_sendflags(piece,MINIG_SF_ALL); @@ -407,20 +411,20 @@ void ps_hud_board(vector pos, vector mySize) vector winfs = hud_fontsize*2; string remaining_text; if(active_minigame.minigame_flags & PS_TURN_WIN) - remaining_text = "All pieces cleared!"; + remaining_text = _("All pieces cleared!"); else - remaining_text = strcat("Remaining pieces: ", ftos(remaining)); + remaining_text = strcat(_("Remaining pieces:"), " ", ftos(remaining)); vector win_pos = pos+eY*(mySize_y-winfs_y)/2; vector win_sz; win_sz = minigame_drawcolorcodedstring_wrapped(mySize_x,win_pos, - sprintf("Game over! %s", remaining_text), + strcat(_("Game over!"), " ", remaining_text), winfs, 0, DRAWFLAG_NORMAL, 0.5); drawfill(win_pos-eY*hud_fontsize_y,win_sz+2*eY*hud_fontsize_y,'1 1 1',0.5,DRAWFLAG_ADDITIVE); minigame_drawcolorcodedstring_wrapped(mySize_x,win_pos, - sprintf("Game over! %s", remaining_text), + strcat(_("Game over!"), " ", remaining_text), winfs, panel_fg_alpha, DRAWFLAG_NORMAL, 0.5); } } @@ -528,17 +532,26 @@ int ps_client_event(entity minigame, string event, ...) { ps_set_curr_pos(""); ps_curr_piece = NULL; - minigame.message = ps_turn_to_string(minigame.minigame_flags); + strcpy(minigame.message, ps_turn_to_string(minigame.minigame_flags)); + return false; + } + case "deactivate": + { + strfree(minigame.message); return false; } case "key_pressed": + case "key_released": { - //if((minigame.minigame_flags & PS_TURN_TEAM) == minigame_self.team) + bool event_blocked = (event == "key_released"); + if (!(minigame.minigame_flags & PS_TURN_WIN) && !(minigame.minigame_flags & PS_TURN_DRAW)) { switch ( ...(0,int) ) { case K_RIGHTARROW: case K_KP_RIGHTARROW: + if (event_blocked) + return true; if ( ! ps_curr_pos ) ps_set_curr_pos("a3"); else @@ -546,6 +559,8 @@ int ps_client_event(entity minigame, string event, ...) return true; case K_LEFTARROW: case K_KP_LEFTARROW: + if (event_blocked) + return true; if ( ! ps_curr_pos ) ps_set_curr_pos("c3"); else @@ -553,6 +568,8 @@ int ps_client_event(entity minigame, string event, ...) return true; case K_UPARROW: case K_KP_UPARROW: + if (event_blocked) + return true; if ( ! ps_curr_pos ) ps_set_curr_pos("a1"); else @@ -560,6 +577,8 @@ int ps_client_event(entity minigame, string event, ...) return true; case K_DOWNARROW: case K_KP_DOWNARROW: + if (event_blocked) + return true; if ( ! ps_curr_pos ) ps_set_curr_pos("a3"); else @@ -568,6 +587,8 @@ int ps_client_event(entity minigame, string event, ...) case K_ENTER: case K_KP_ENTER: case K_SPACE: + if (event_blocked) + return true; ps_make_move(minigame); return true; } @@ -579,6 +600,7 @@ int ps_client_event(entity minigame, string event, ...) { if(...(0,int) == K_MOUSE1) { + ps_client_event(minigame, "mouse_moved"); ps_make_move(minigame); return true; } @@ -605,9 +627,9 @@ int ps_client_event(entity minigame, string event, ...) { if ( sf & MINIG_SF_UPDATE ) { - sent.message = ps_turn_to_string(sent.minigame_flags); - if ( sent.minigame_flags & minigame_self.team ) - minigame_prompt(); + strcpy(sent.message, ps_turn_to_string(sent.minigame_flags)); + //if ( sent.minigame_flags & minigame_self.team ) + //minigame_prompt(); } }