]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Add an option for classic style wrapping around the screen, rather than instant death...
authorMario <zacjardine@y7mail.com>
Sat, 26 Sep 2015 08:50:43 +0000 (18:50 +1000)
committerMario <zacjardine@y7mail.com>
Sat, 26 Sep 2015 08:50:43 +0000 (18:50 +1000)
minigames.cfg
qcsrc/common/minigames/minigame/snake.qc

index e18b13b07af64abdf1f3b440341ea738744e3706..6dfec5088f886a3b229b0185c35f2e6d24a4ff17 100644 (file)
@@ -15,6 +15,7 @@ set sv_minigames_pong_ai_tolerance  0.33    "Distance of the ball relative to th
 
 
 // Snake? Snake! SNAAAAKE!!
+set sv_minigames_snake_wrap 0 "Wrap around the edges of the screen instead of dying on touch"
 set sv_minigames_snake_delay_initial 0.7 "Initial delay between snake movement"
 set sv_minigames_snake_delay_multiplier 50 "Multiplier of incremental of movement speed (player_score / cvar)"
 set sv_minigames_snake_delay_min 0.1 "Minimum delay between snake movement (at fastest rate)"
index 47cf81ab9268fa35a5863b819940bc6edd4dd81f..493e7250cb7f2a68887e3b091eed8313fff447d2 100644 (file)
@@ -10,6 +10,7 @@ const int SNAKE_NUM_CNT = 15;
 
 const int SNAKE_TILE_SIZE = 15;
 
+bool autocvar_sv_minigames_snake_wrap = false;
 float autocvar_sv_minigames_snake_delay_initial = 0.7;
 float autocvar_sv_minigames_snake_delay_multiplier = 50;
 float autocvar_sv_minigames_snake_delay_min = 0.1;
@@ -163,10 +164,17 @@ void snake_move_head(entity minigame)
        int myx = minigame_tile_letter(head.netname);
        int myy = minigame_tile_number(head.netname);
 
-       myx += minigame.snake_dir_x;
-       myy += minigame.snake_dir_y;
+       string newpos;
 
-       string newpos = minigame_tile_buildname(myx, myy);
+       if(autocvar_sv_minigames_snake_wrap)
+               newpos = minigame_relative_tile(head.netname, minigame.snake_dir_x, minigame.snake_dir_y, SNAKE_NUM_CNT, SNAKE_LET_CNT);
+       else
+       {
+               myx += minigame.snake_dir_x;
+               myy += minigame.snake_dir_y;
+
+               newpos = minigame_tile_buildname(myx, myy);
+       }
 
        if(!snake_valid_tile(newpos) || (snake_find_piece(minigame, newpos)).cnt)
        {