X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fminigames%2Fminigame%2Fnmm.qc;h=ab35deaf9656fa35842c4ca53acd1182df2cb16f;hp=4184c2638251f8df15f3b43a4b594166cba73221;hb=4e21f418ad9e6287efb942c1fa2861a51981110a;hpb=268f9c69576b6bb929f66d19f0d077d19ba47edd diff --git a/qcsrc/common/minigames/minigame/nmm.qc b/qcsrc/common/minigames/minigame/nmm.qc index 4184c2638..ab35deaf9 100644 --- a/qcsrc/common/minigames/minigame/nmm.qc +++ b/qcsrc/common/minigames/minigame/nmm.qc @@ -1,5 +1,6 @@ #include "nmm.qh" -REGISTER_MINIGAME(nmm, "Nine Men's Morris"); + +REGISTER_MINIGAME(nmm, _("Nine Men's Morris")); const int NMM_TURN_PLACE = 0x0100; // player has to place a piece on the board const int NMM_TURN_MOVE = 0x0200; // player has to move a piece by one tile @@ -121,9 +122,9 @@ void nmm_kill_tiles(entity minig) while ( ( e = findentity(e,owner,minig) ) ) if ( e.classname == "minigame_nmm_tile" ) { - strunzone(e.netname); - strunzone(e.nmm_tile_hmill); - strunzone(e.nmm_tile_vmill); + strfree(e.netname); + strfree(e.nmm_tile_hmill); + strfree(e.nmm_tile_vmill); delete(e); } } @@ -222,10 +223,10 @@ int nmm_server_event(entity minigame, string event, ...) entity e; for ( int i = 0; i < 7; i++ ) { - e = msle_spawn(minigame,"minigame_board_piece"); + e = msle_spawn(minigame,new(minigame_board_piece)); e.team = 1; e.minigame_flags = NMM_PIECE_HOME; - e = msle_spawn(minigame,"minigame_board_piece"); + e = msle_spawn(minigame,new(minigame_board_piece)); e.team = 2; e.minigame_flags = NMM_PIECE_HOME; } @@ -474,22 +475,22 @@ void nmm_hud_board(vector pos, vector mySize) if ( active_minigame.minigame_flags & NMM_TURN_WIN ) { vector winfs = hud_fontsize*2; - string playername = ""; + string pname = ""; FOREACH_MINIGAME_ENTITY(e) if ( e.classname == "minigame_player" && e.team == (active_minigame.minigame_flags & NMM_TURN_TEAM) ) - playername = entcs_GetName(e.minigame_playerslot-1); + pname = entcs_GetName(e.minigame_playerslot-1); vector win_pos = pos+eY*(mySize_y-winfs_y)/2; vector win_sz; win_sz = minigame_drawcolorcodedstring_wrapped(mySize_x,win_pos, - sprintf("%s^7 won the game!",playername), + sprintf(_("%s^7 won the game!"), pname), 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("%s^7 won the game!",playername), + sprintf(_("%s^7 won the game!"), pname), winfs, panel_fg_alpha, DRAWFLAG_NORMAL, 0.5); } } @@ -623,87 +624,104 @@ int nmm_client_event(entity minigame, string event, ...) { nmm_fromtile = NULL; nmm_init_tiles(minigame); - minigame.message = nmm_turn_to_string(minigame.minigame_flags); + strcpy(minigame.message, nmm_turn_to_string(minigame.minigame_flags)); } else if ( event == "deactivate" ) { nmm_fromtile = NULL; nmm_kill_tiles(minigame); + strfree(minigame.message); } - else if ( event == "key_pressed" && (minigame.minigame_flags&NMM_TURN_TEAM) == minigame_self.team ) + else if ( (event == "key_pressed" || event == "key_released") ) { - switch ( ...(0,int) ) + bool event_blocked = ((event == "key_released") + || ((minigame.minigame_flags & NMM_TURN_TEAM) != minigame_self.team)); + if (!(minigame.minigame_flags & NMM_TURN_WIN)) { - case K_RIGHTARROW: - case K_KP_RIGHTARROW: - if ( ! nmm_currtile ) - nmm_currtile = nmm_find_tile(active_minigame,"a7"); - else - { - string tileid = nmm_currtile.netname; - nmm_currtile = NULL; - while ( !nmm_currtile ) + switch ( ...(0,int) ) + { + case K_RIGHTARROW: + case K_KP_RIGHTARROW: + if (event_blocked) + return true; + if ( ! nmm_currtile ) + nmm_currtile = nmm_find_tile(active_minigame,"a7"); + else { - tileid = minigame_relative_tile(tileid,1,0,7,7); - nmm_currtile = nmm_find_tile(active_minigame,tileid); + string tileid = nmm_currtile.netname; + nmm_currtile = NULL; + while ( !nmm_currtile ) + { + tileid = minigame_relative_tile(tileid,1,0,7,7); + nmm_currtile = nmm_find_tile(active_minigame,tileid); + } } - } - return 1; - case K_LEFTARROW: - case K_KP_LEFTARROW: - if ( ! nmm_currtile ) - nmm_currtile = nmm_find_tile(active_minigame,"g7"); - else - { - string tileid = nmm_currtile.netname; - nmm_currtile = NULL; - while ( !nmm_currtile ) + return 1; + case K_LEFTARROW: + case K_KP_LEFTARROW: + if (event_blocked) + return true; + if ( ! nmm_currtile ) + nmm_currtile = nmm_find_tile(active_minigame,"g7"); + else { - tileid = minigame_relative_tile(tileid,-1,0,7,7); - nmm_currtile = nmm_find_tile(active_minigame,tileid); + string tileid = nmm_currtile.netname; + nmm_currtile = NULL; + while ( !nmm_currtile ) + { + tileid = minigame_relative_tile(tileid,-1,0,7,7); + nmm_currtile = nmm_find_tile(active_minigame,tileid); + } } - } - return 1; - case K_UPARROW: - case K_KP_UPARROW: - if ( ! nmm_currtile ) - nmm_currtile = nmm_find_tile(active_minigame,"a1"); - else - { - string tileid = nmm_currtile.netname; - nmm_currtile = NULL; - while ( !nmm_currtile ) + return 1; + case K_UPARROW: + case K_KP_UPARROW: + if (event_blocked) + return true; + if ( ! nmm_currtile ) + nmm_currtile = nmm_find_tile(active_minigame,"a1"); + else { - tileid = minigame_relative_tile(tileid,0,1,7,7); - nmm_currtile = nmm_find_tile(active_minigame,tileid); + string tileid = nmm_currtile.netname; + nmm_currtile = NULL; + while ( !nmm_currtile ) + { + tileid = minigame_relative_tile(tileid,0,1,7,7); + nmm_currtile = nmm_find_tile(active_minigame,tileid); + } } - } - return 1; - case K_DOWNARROW: - case K_KP_DOWNARROW: - if ( ! nmm_currtile ) - nmm_currtile = nmm_find_tile(active_minigame,"a7"); - else - { - string tileid = nmm_currtile.netname; - nmm_currtile = NULL; - while ( !nmm_currtile ) + return 1; + case K_DOWNARROW: + case K_KP_DOWNARROW: + if (event_blocked) + return true; + if ( ! nmm_currtile ) + nmm_currtile = nmm_find_tile(active_minigame,"a7"); + else { - tileid = minigame_relative_tile(tileid,0,-1,7,7); - nmm_currtile = nmm_find_tile(active_minigame,tileid); + string tileid = nmm_currtile.netname; + nmm_currtile = NULL; + while ( !nmm_currtile ) + { + tileid = minigame_relative_tile(tileid,0,-1,7,7); + nmm_currtile = nmm_find_tile(active_minigame,tileid); + } } - } - return 1; - case K_ENTER: - case K_KP_ENTER: - case K_SPACE: - nmm_make_move(minigame); - return 1; + return 1; + case K_ENTER: + case K_KP_ENTER: + case K_SPACE: + if (event_blocked) + return true; + nmm_make_move(minigame); + return 1; + } } return 0; } else if ( event == "mouse_pressed" && ...(0,int) == K_MOUSE1 ) { + nmm_client_event(minigame, "mouse_moved"); nmm_make_move(minigame); return 1; } @@ -750,7 +768,7 @@ int nmm_client_event(entity minigame, string event, ...) } else if ( sent.classname == "minigame" && ( ...(1,int) & MINIG_SF_UPDATE ) ) { - sent.message = nmm_turn_to_string(sent.minigame_flags); + strcpy(sent.message, nmm_turn_to_string(sent.minigame_flags)); if ( sent.minigame_flags & minigame_self.team ) minigame_prompt(); }