X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fminigames%2Fminigame%2Fnmm.qc;h=4184c2638251f8df15f3b43a4b594166cba73221;hb=c039d054a46888048d214000273ccfc63e4611b6;hp=e4e0dc6380d9aec56a1b05601a8f5d733fe1b9c5;hpb=f203a8239ab58e776da8df7bce46be73d2d655a4;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/minigames/minigame/nmm.qc b/qcsrc/common/minigames/minigame/nmm.qc index e4e0dc638..4184c2638 100644 --- a/qcsrc/common/minigames/minigame/nmm.qc +++ b/qcsrc/common/minigames/minigame/nmm.qc @@ -1,3 +1,4 @@ +#include "nmm.qh" REGISTER_MINIGAME(nmm, "Nine Men's Morris"); const int NMM_TURN_PLACE = 0x0100; // player has to place a piece on the board @@ -116,14 +117,14 @@ void nmm_spawn_tile_square( entity minig, int offset, int skip ) // Remove tiles of a NMM minigame void nmm_kill_tiles(entity minig) { - entity e = world; + entity e = NULL; 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); - remove(e); + delete(e); } } @@ -136,11 +137,11 @@ void nmm_init_tiles(entity minig) // Find a tile by its id entity nmm_find_tile(entity minig, string id) { - entity e = world; + entity e = NULL; while ( ( e = findentity(e,owner,minig) ) ) if ( e.classname == "minigame_nmm_tile" && e.netname == id ) return e; - return world; + return NULL; } // Check whether two tiles are adjacent @@ -157,7 +158,7 @@ bool nmm_tile_adjacent(entity tile1, entity tile2) // Returns 1 if there is at least 1 free adjacent tile bool nmm_tile_canmove(entity tile) { - entity e = world; + entity e = NULL; while ( ( e = findentity(e,owner,tile.owner) ) ) if ( e.classname == "minigame_nmm_tile" && !e.nmm_tile_piece && nmm_tile_adjacent(e,tile) ) @@ -198,14 +199,14 @@ entity nmm_find_piece(entity start, entity minigame, int teamn, int pieceflags) if ( e.classname == "minigame_board_piece" && (e.minigame_flags & pieceflags) && e.team == teamn ) return e; - return world; + return NULL; } // Count NMM pieces matching flags and team number int nmm_count_pieces(entity minigame, int teamn, int pieceflags) { int n = 0; - entity e = world; + entity e = NULL; while (( e = nmm_find_piece(e,minigame, teamn, pieceflags) )) n++; return n; @@ -251,8 +252,8 @@ int nmm_server_event(entity minigame, string event, ...) { entity e = ...(0,entity); int argc = ...(1,int); - entity tile = world; - entity piece = world; + entity tile = NULL; + entity piece = NULL; bool move_ok = false; if ( e && argc >= 2 && argv(0) == "move" && @@ -265,7 +266,7 @@ int nmm_server_event(entity minigame, string event, ...) } else if ( minigame.minigame_flags & NMM_TURN_PLACE ) { - piece = nmm_find_piece(world,minigame,e.team,NMM_PIECE_HOME); + piece = nmm_find_piece(NULL,minigame,e.team,NMM_PIECE_HOME); if ( !tile.nmm_tile_piece && piece ) { tile.nmm_tile_piece = piece; @@ -283,7 +284,7 @@ int nmm_server_event(entity minigame, string event, ...) entity tile2 = nmm_find_tile(minigame,argv(2)); if ( tile2 && nmm_tile_adjacent(tile,tile2) && !tile2.nmm_tile_piece ) { - tile.nmm_tile_piece = world; + tile.nmm_tile_piece = NULL; tile2.nmm_tile_piece = piece; piece.origin = tile2.origin; piece.SendFlags |= MINIG_SF_UPDATE; @@ -301,7 +302,7 @@ int nmm_server_event(entity minigame, string event, ...) entity tile2 = nmm_find_tile(minigame,argv(2)); if ( tile2 && !tile2.nmm_tile_piece ) { - tile.nmm_tile_piece = world; + tile.nmm_tile_piece = NULL; tile2.nmm_tile_piece = piece; piece.origin = tile2.origin; piece.SendFlags |= MINIG_SF_UPDATE; @@ -316,7 +317,7 @@ int nmm_server_event(entity minigame, string event, ...) piece = tile.nmm_tile_piece; if ( piece && piece.nmm_tile_piece.team != e.team ) { - tile.nmm_tile_piece = world; + tile.nmm_tile_piece = NULL; piece.minigame_flags = NMM_PIECE_DEAD; piece.SendFlags |= MINIG_SF_UPDATE; move_ok = true; @@ -337,7 +338,7 @@ int nmm_server_event(entity minigame, string event, ...) { minigame.minigame_flags = NMM_TURN_TAKE|e.team; int takemill = NMM_TURN_TAKEANY; - entity f = world; + entity f = NULL; while ( ( f = findentity(f,owner,minigame) ) ) if ( f.classname == "minigame_nmm_tile" && f.nmm_tile_piece && f.nmm_tile_piece.team == nextteam && !nmm_in_mill(f) ) @@ -349,14 +350,14 @@ int nmm_server_event(entity minigame, string event, ...) } else { - if ( nmm_find_piece(world,minigame,nextteam,NMM_PIECE_HOME) ) + if ( nmm_find_piece(NULL,minigame,nextteam,NMM_PIECE_HOME) ) minigame.minigame_flags = NMM_TURN_PLACE|nextteam; else if ( npieces == 3 ) minigame.minigame_flags = NMM_TURN_FLY|nextteam; else { minigame.minigame_flags = NMM_TURN_WIN|e.team; - entity f = world; + entity f = NULL; while ( ( f = findentity(f,owner,minigame) ) ) if ( f.classname == "minigame_nmm_tile" && f.nmm_tile_piece && f.nmm_tile_piece.team == nextteam && nmm_tile_canmove(f) ) @@ -369,7 +370,7 @@ int nmm_server_event(entity minigame, string event, ...) minigame.SendFlags |= MINIG_SF_UPDATE; } else - LOG_TRACE("Invalid move: ",...(2,string),"\n"); + LOG_TRACE("Invalid move: ", ...(2, string)); return 1; } } @@ -496,9 +497,8 @@ void nmm_hud_board(vector pos, vector mySize) // Required function, draw the game status panel void nmm_hud_status(vector pos, vector mySize) { - HUD_Panel_DrawBg(1); + HUD_Panel_DrawBg(); vector ts; - ts = minigame_drawstring_wrapped(mySize_x,pos,active_minigame.descriptor.message, hud_fontsize * 2, '0.25 0.47 0.72', panel_fg_alpha, DRAWFLAG_NORMAL,0.5); pos_y += ts_y; @@ -514,7 +514,7 @@ void nmm_hud_status(vector pos, vector mySize) float piece_space = piece_sz_x + ( ts_x - 7 * piece_sz_x ) / 6; vector mypos; float piece_light = 1; - entity e = world; + entity e = NULL; mypos = pos; if ( (active_minigame.minigame_flags&NMM_TURN_TEAM) == 2 ) @@ -570,13 +570,13 @@ void nmm_make_move(entity minigame) if ( minigame.minigame_flags & (NMM_TURN_PLACE|NMM_TURN_TAKE) ) { minigame_cmd("move ",nmm_currtile.netname); - nmm_fromtile = world; + nmm_fromtile = NULL; } else if ( (minigame.minigame_flags & (NMM_TURN_MOVE|NMM_TURN_FLY)) ) { if ( nmm_fromtile == nmm_currtile ) { - nmm_fromtile = world; + nmm_fromtile = NULL; } else if ( nmm_currtile.nmm_tile_piece && nmm_currtile.nmm_tile_piece.team == minigame_self.team ) { @@ -585,12 +585,12 @@ void nmm_make_move(entity minigame) else if ( nmm_fromtile ) { minigame_cmd("move ",nmm_fromtile.netname," ",nmm_currtile.netname); - nmm_fromtile = world; + nmm_fromtile = NULL; } } } else - nmm_fromtile = world; + nmm_fromtile = NULL; } string nmm_turn_to_string(int turnflags) @@ -618,16 +618,16 @@ string nmm_turn_to_string(int turnflags) // Required function, handle client events int nmm_client_event(entity minigame, string event, ...) -{SELFPARAM(); +{ if ( event == "activate" ) { - nmm_fromtile = world; + nmm_fromtile = NULL; nmm_init_tiles(minigame); minigame.message = nmm_turn_to_string(minigame.minigame_flags); } else if ( event == "deactivate" ) { - nmm_fromtile = world; + nmm_fromtile = NULL; nmm_kill_tiles(minigame); } else if ( event == "key_pressed" && (minigame.minigame_flags&NMM_TURN_TEAM) == minigame_self.team ) @@ -641,7 +641,7 @@ int nmm_client_event(entity minigame, string event, ...) else { string tileid = nmm_currtile.netname; - nmm_currtile = world; + nmm_currtile = NULL; while ( !nmm_currtile ) { tileid = minigame_relative_tile(tileid,1,0,7,7); @@ -656,7 +656,7 @@ int nmm_client_event(entity minigame, string event, ...) else { string tileid = nmm_currtile.netname; - nmm_currtile = world; + nmm_currtile = NULL; while ( !nmm_currtile ) { tileid = minigame_relative_tile(tileid,-1,0,7,7); @@ -671,7 +671,7 @@ int nmm_client_event(entity minigame, string event, ...) else { string tileid = nmm_currtile.netname; - nmm_currtile = world; + nmm_currtile = NULL; while ( !nmm_currtile ) { tileid = minigame_relative_tile(tileid,0,1,7,7); @@ -686,7 +686,7 @@ int nmm_client_event(entity minigame, string event, ...) else { string tileid = nmm_currtile.netname; - nmm_currtile = world; + nmm_currtile = NULL; while ( !nmm_currtile ) { tileid = minigame_relative_tile(tileid,0,-1,7,7); @@ -709,7 +709,7 @@ int nmm_client_event(entity minigame, string event, ...) } else if ( event == "mouse_moved" ) { - nmm_currtile = world; + nmm_currtile = NULL; vector tile_pos; vector tile_size = minigame_hud_denormalize_size('1 1 0'/7,nmm_boardpos,nmm_boardsize); entity e; @@ -729,27 +729,29 @@ int nmm_client_event(entity minigame, string event, ...) } else if ( event == "network_receive" ) { - if ( self.classname == "minigame_board_piece" && ( ...(1,int) & MINIG_SF_UPDATE ) ) + entity sent = ...(0,entity); + + if ( sent.classname == "minigame_board_piece" && ( ...(1,int) & MINIG_SF_UPDATE ) ) { entity e; string tileid = ""; - if ( self.minigame_flags & NMM_PIECE_BOARD ) - tileid = minigame_tile_name(self.origin,7,7); + if ( sent.minigame_flags & NMM_PIECE_BOARD ) + tileid = minigame_tile_name(sent.origin,7,7); FOREACH_MINIGAME_ENTITY(e) { if ( e.classname == "minigame_nmm_tile" ) { - if ( e.nmm_tile_piece == self ) - e.nmm_tile_piece = world; + if ( e.nmm_tile_piece == sent ) + e.nmm_tile_piece = NULL; if ( e.netname == tileid ) - e.nmm_tile_piece = self; + e.nmm_tile_piece = sent; } } } - else if ( self.classname == "minigame" && ( ...(1,int) & MINIG_SF_UPDATE ) ) + else if ( sent.classname == "minigame" && ( ...(1,int) & MINIG_SF_UPDATE ) ) { - self.message = nmm_turn_to_string(self.minigame_flags); - if ( self.minigame_flags & minigame_self.team ) + sent.message = nmm_turn_to_string(sent.minigame_flags); + if ( sent.minigame_flags & minigame_self.team ) minigame_prompt(); } }