]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/minigames/minigame/nmm.qc
Merge branch 'master' into terencehill/hud_updates
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / minigames / minigame / nmm.qc
index 1e4da05075ad20c76b11587a69f4a2e5b3105782..4184c2638251f8df15f3b43a4b594166cba73221 100644 (file)
@@ -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
@@ -79,9 +80,8 @@ string nmm_tile_build_vmill(entity tile)
 void nmm_spawn_tile(string id, entity minig, int distance)
 {
        // TODO global variable + list_next for simpler tile loops
-       entity e = spawn();
+       entity e = new(minigame_nmm_tile);
        e.origin = minigame_tile_pos(id,7,7);
-       e.classname = "minigame_nmm_tile";
        e.netname = id;
        e.owner = minig;
        e.team = 0;
@@ -117,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);
                }
 }
 
@@ -137,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
@@ -158,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) )
@@ -199,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;
@@ -252,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" &&
@@ -266,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;
@@ -284,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;
@@ -302,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;
@@ -317,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;
@@ -338,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) )
@@ -350,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) )
@@ -370,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;
                }
        }
@@ -478,7 +478,7 @@ void nmm_hud_board(vector pos, vector mySize)
                FOREACH_MINIGAME_ENTITY(e)
                        if ( e.classname == "minigame_player" &&
                                        e.team == (active_minigame.minigame_flags & NMM_TURN_TEAM) )
-                               playername = GetPlayerName(e.minigame_playerslot-1);
+                               playername = entcs_GetName(e.minigame_playerslot-1);
 
                vector win_pos = pos+eY*(mySize_y-winfs_y)/2;
                vector win_sz;
@@ -497,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;
@@ -515,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 )
@@ -532,7 +531,7 @@ void nmm_hud_status(vector pos, vector mySize)
                        if ( e.team == 2 )
                                mypos_y  += player_fontsize_y + ts_y;
                        minigame_drawcolorcodedstring_trunc(mySize_x,mypos,
-                               GetPlayerName(e.minigame_playerslot-1),
+                               entcs_GetName(e.minigame_playerslot-1),
                                player_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
                }
                else if ( e.classname == "minigame_board_piece" )
@@ -571,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 )
                        {
@@ -586,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)
@@ -619,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 )
@@ -642,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);
@@ -657,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);
@@ -672,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);
@@ -687,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);
@@ -710,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;
@@ -730,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();
                }
        }