From 2605a0ef47d8f03bfbd47b02ea4d1279f90196f9 Mon Sep 17 00:00:00 2001
From: FruitieX <rasse@rasse-lappy.localdomain>
Date: Thu, 17 Jun 2010 14:04:47 +0300
Subject: [PATCH] relative coordinates on grid

---
 defaultXonotic.cfg  |  4 ++--
 qcsrc/client/hud.qc | 16 ++++++++--------
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg
index 82289bff9a..909dfd6d47 100644
--- a/defaultXonotic.cfg
+++ b/defaultXonotic.cfg
@@ -1320,8 +1320,8 @@ set _hud_configure 0 "1 = configure the HUD"
 seta hud_configure_checkcollisions 1 "check for collisions against other panels when in hud configure mode"
 seta hud_configure_bg_minalpha 0.25 "minimum panel background alpha when in hud configure mode"
 seta hud_configure_grid 1 "snap to grid when moving/resizing panels"
-seta hud_configure_grid_x 5 "snap each X pixels"
-seta hud_configure_grid_y 5 "snap each Y pixels"
+seta hud_configure_grid_x 0.01 "snap to X * vid_conwidth"
+seta hud_configure_grid_y 0.01 "snap to Y * vid_conheight"
 seta hud_configure_grid_alpha 0.15 "alpha for visible grid when in configure mode"
 
 seta sbar_info_pos 0 "Y-axis distance from lower right corner for engine info prints"
diff --git a/qcsrc/client/hud.qc b/qcsrc/client/hud.qc
index 95304ee500..f7deec4fe1 100644
--- a/qcsrc/client/hud.qc
+++ b/qcsrc/client/hud.qc
@@ -1016,8 +1016,8 @@ void HUD_Panel_SetPos(float id, vector pos)
 
 	if(cvar("hud_configure_grid"))
 	{
-		pos_x = floor(pos_x/cvar("hud_configure_grid_x") + 0.5) * cvar("hud_configure_grid_x");
-		pos_y = floor(pos_y/cvar("hud_configure_grid_y") + 0.5) * cvar("hud_configure_grid_y");
+		pos_x = floor((pos_x/vid_conwidth)/bound(0.005, cvar("hud_configure_grid_x"), 0.2) + 0.5) * cvar("hud_configure_grid_x") * vid_conwidth;
+		pos_y = floor((pos_y/vid_conheight)/bound(0.005, cvar("hud_configure_grid_y"), 0.2) + 0.5) * cvar("hud_configure_grid_y") * vid_conheight;
 	}
 
 	string s;
@@ -1225,8 +1225,8 @@ void HUD_Panel_SetPosSize(float id)
 	// before checkresize, otherwise panel can be snapped partially inside another panel or panel aspect ratio can be broken
 	if(cvar("hud_configure_grid"))
 	{
-		mySize_x = floor(mySize_x/cvar("hud_configure_grid_x") + 0.5) * cvar("hud_configure_grid_x");
-		mySize_y = floor(mySize_y/cvar("hud_configure_grid_y") + 0.5) * cvar("hud_configure_grid_y");
+		mySize_x = floor((mySize_x/vid_conwidth)/bound(0.005, cvar("hud_configure_grid_x"), 0.2) + 0.5) * cvar("hud_configure_grid_x") * vid_conwidth;
+		mySize_y = floor((mySize_y/vid_conheight)/bound(0.005, cvar("hud_configure_grid_y"), 0.2) + 0.5) * cvar("hud_configure_grid_y") * vid_conheight;
 	}
 
 	if (fixedRatio > 0)
@@ -4393,14 +4393,14 @@ void HUD_Main (void)
 	{
 		float i;
 		// x-axis
-		for(i = 0; i < vid_conwidth/max(2, cvar("hud_configure_grid_x")); ++i)
+		for(i = 0; i < 1/bound(0.005, bound(0.005, cvar("hud_configure_grid_x"), 0.2), 0.2); ++i)
 		{
-			drawfill(eX * i * max(2, cvar("hud_configure_grid_x")), eX + eY * vid_conheight, '0.5 0.5 0.5', cvar("hud_configure_grid_alpha"), DRAWFLAG_NORMAL);
+			drawfill(eX * i * vid_conwidth * bound(0.005, bound(0.005, cvar("hud_configure_grid_x"), 0.2), 0.2), eX + eY * vid_conheight, '0.5 0.5 0.5', cvar("hud_configure_grid_alpha"), DRAWFLAG_NORMAL);
 		}
 		// y-axis
-		for(i = 0; i < vid_conheight/max(2, cvar("hud_configure_grid_y")); ++i)
+		for(i = 0; i < 1/bound(0.005, bound(0.005, cvar("hud_configure_grid_y"), 0.2), 0.2); ++i)
 		{
-			drawfill(eY * i * max(2, cvar("hud_configure_grid_y")), eY + eX * vid_conwidth, '0.5 0.5 0.5', cvar("hud_configure_grid_alpha"), DRAWFLAG_NORMAL);
+			drawfill(eY * i * vid_conheight * bound(0.005, bound(0.005, cvar("hud_configure_grid_y"), 0.2), 0.2), eY + eX * vid_conwidth, '0.5 0.5 0.5', cvar("hud_configure_grid_alpha"), DRAWFLAG_NORMAL);
 		}
 	}
 
-- 
2.39.5