]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/minigames/minigame/bd.qc
Shownames: fade when moving to spectate
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / minigames / minigame / bd.qc
index 9867ed0ad9919452802ea2de5f62433a64352a96..ed84b6469c33c56b79eda5592d92c51206fe0228 100644 (file)
@@ -682,6 +682,9 @@ int bd_server_event(entity minigame, string event, ...)
 int bd_curr_tile;
 string bd_curr_pos;
 
+.entity bd_enemy;
+.bool bd_hide;
+
 vector bd_boardpos; // HUD board position
 vector bd_boardsize;// HUD board size
 
@@ -720,59 +723,42 @@ void bd_hud_board(vector pos, vector mySize)
        entity e;
        FOREACH_MINIGAME_ENTITY(e)
        {
-               if ( e.classname == "minigame_board_piece" && e.bd_tiletype != BD_TILE_TARGET && e.bd_tiletype != BD_TILE_DOZER )
-               {
-                       tile_pos = minigame_tile_pos(e.netname,BD_NUM_CNT,BD_LET_CNT);
-                       tile_pos = minigame_hud_denormalize(tile_pos,pos,mySize);
-
-                       string thepiece = bd_get_tile_pic(e.bd_tiletype);
-
-                       minigame_drawpic_centered( tile_pos,  
-                                       minigame_texture(thepiece),
-                                       tile_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL );
-               }
-
-               if ( e.classname == "minigame_board_piece" && e.bd_tiletype == BD_TILE_TARGET && e.bd_tiletype != BD_TILE_DOZER )
-               {
-                       tile_pos = minigame_tile_pos(e.netname,BD_NUM_CNT,BD_LET_CNT);
-                       tile_pos = minigame_hud_denormalize(tile_pos,pos,mySize);
-
-                       minigame_drawpic_centered( tile_pos,  
-                                       minigame_texture("bd/target"),
-                                       tile_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL );
-               }
-
-               if ( e.classname == "minigame_board_piece" && e.bd_tiletype != BD_TILE_TARGET && e.bd_tiletype == BD_TILE_DOZER )
+               if(e.classname == "minigame_board_piece")
                {
-                       tile_pos = minigame_tile_pos(e.netname,BD_NUM_CNT,BD_LET_CNT);
-                       tile_pos = minigame_hud_denormalize(tile_pos,pos,mySize);
-
-                       vector thedir = e.bd_dir;
-                       float theang = 0;
-
-                       if(thedir_y == -1) { theang = M_PI; }
-                       if(thedir_x == 1) { theang = M_PI/2; }
-                       if(thedir_x == -1) { theang = M_PI*3/2; }
-
-                       drawrotpic(tile_pos, theang, minigame_texture("bd/dozer"),
-                                               tile_size, tile_size/2, '1 1 1',
-                                               panel_fg_alpha, DRAWFLAG_NORMAL );
+                       if(e.bd_tiletype == BD_TILE_TARGET)
+                       {
+                               e.bd_enemy = world;
+                               e.bd_enemy = bd_find_piece(active_minigame, e.netname, false);
+                       }
+                       else if(e.bd_tiletype == BD_TILE_BOULDER)
+                       {
+                               e.bd_hide = false; // reset either way
+                               e.bd_hide = ((bd_find_piece(active_minigame, e.netname, true)) != world);
+                       }
                }
        }
-
        FOREACH_MINIGAME_ENTITY(e)
        {
-               if ( e.classname == "minigame_board_piece" && e.bd_tiletype == BD_TILE_TARGET )
+               if ( e.classname == "minigame_board_piece" )
                {
-                       tile_pos = minigame_tile_pos(e.netname,BD_NUM_CNT,BD_LET_CNT);
-                       tile_pos = minigame_hud_denormalize(tile_pos,pos,mySize);
+                       if(e.bd_tiletype != BD_TILE_DOZER && !e.bd_hide) // hide boulders
+                       {
+                               tile_pos = minigame_tile_pos(e.netname,BD_NUM_CNT,BD_LET_CNT);
+                               tile_pos = minigame_hud_denormalize(tile_pos,pos,mySize);
+
+                               string thepiece = bd_get_tile_pic(e.bd_tiletype);
 
-                       minigame_drawpic_centered( tile_pos,  
-                                       minigame_texture("bd/target"),
-                                       tile_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL );
+                               if(e.bd_enemy)
+                                       thepiece = "bd/boulder_target";
+
+                               minigame_drawpic_centered( tile_pos,  
+                                               minigame_texture(thepiece),
+                                               tile_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL );
+                       }       
                }
        }
 
+       // draw dozers on top, always
        FOREACH_MINIGAME_ENTITY(e)
        {
                if ( e.classname == "minigame_board_piece" && e.bd_tiletype == BD_TILE_DOZER )
@@ -868,7 +854,7 @@ void bd_hud_status(vector pos, vector mySize)
                {
                        mypos = pos;
                        minigame_drawcolorcodedstring_trunc(mySize_x,mypos,
-                               GetPlayerName(e.minigame_playerslot-1),
+                               entcs_GetName(e.minigame_playerslot-1),
                                player_fontsize, panel_fg_alpha, DRAWFLAG_NORMAL);
 
                        mypos_y += player_fontsize_y;
@@ -1157,4 +1143,4 @@ int bd_client_event(entity minigame, string event, ...)
        return false;
 }
 
-#endif
\ No newline at end of file
+#endif