about summary refs log tree commit diff
path: root/src/game/client
diff options
context:
space:
mode:
authorJakob Fries <jakob.fries@gmail.com>2007-08-15 17:57:21 +0000
committerJakob Fries <jakob.fries@gmail.com>2007-08-15 17:57:21 +0000
commit9899666a7ce6679a3b9667ab09f615f4d0769c16 (patch)
tree5fc8c542b7a72967a49e6652f225a6d92cfbf2e2 /src/game/client
parent3f2071b23bf6d15438b175e715e9ba32a6651ce2 (diff)
downloadzcatch-9899666a7ce6679a3b9667ab09f615f4d0769c16.tar.gz
zcatch-9899666a7ce6679a3b9667ab09f615f4d0769c16.zip
emoticon selector improved
Diffstat (limited to 'src/game/client')
-rw-r--r--src/game/client/game_client.cpp31
1 files changed, 18 insertions, 13 deletions
diff --git a/src/game/client/game_client.cpp b/src/game/client/game_client.cpp
index 5bb166ff..37bf3c65 100644
--- a/src/game/client/game_client.cpp
+++ b/src/game/client/game_client.cpp
@@ -1366,13 +1366,18 @@ int emoticon_selector_render()
 	if (length(emoticon_selector_mouse) > 70)
 		emoticon_selector_mouse = normalize(emoticon_selector_mouse) * 70;
 
-	float selected_angle = get_angle(emoticon_selector_mouse);
-	if (selected_angle > pi)
-		selected_angle -= 2*pi;
+	float selected_angle = get_angle(emoticon_selector_mouse) + 2*pi/24;
+	if (selected_angle < 0)
+		selected_angle += 2*pi;
 
 	static bool mouse_down = false;
-	int emoticon_selected = -1;
 	bool return_now = false;
+	int selected_emoticon; 
+
+	if (length(emoticon_selector_mouse) < 50)
+		selected_emoticon = -1;
+	else
+		selected_emoticon = selected_angle / (2*pi) * 12;
 
 	if (inp_key_pressed(baselib::input::mouse_1))
 	{
@@ -1380,10 +1385,14 @@ int emoticon_selector_render()
 	}
 	else if (mouse_down)
 	{
-		return_now = true;
 		mouse_down = false;
-		emoticon_selector_active = false;
-		emoticon_selector_inactive_override = true;
+
+		if (selected_emoticon != -1)
+		{
+			return_now = true;
+			emoticon_selector_active = false;
+			emoticon_selector_inactive_override = true;
+		}
 	}
 
 	gfx_mapscreen(0,0,400,300);
@@ -1404,12 +1413,8 @@ int emoticon_selector_render()
 		float angle = 2*pi*i/12.0;
 		if (angle > pi)
 			angle -= 2*pi;
-		float diff = fabs(selected_angle-angle);
 
-		bool selected = diff < pi/12;
-		
-		if (return_now && selected)
-			emoticon_selected = i;
+		bool selected = selected_emoticon == i;
 
 		float size = selected ? 48 : 32;
 
@@ -1427,7 +1432,7 @@ int emoticon_selector_render()
     gfx_quads_drawTL(emoticon_selector_mouse.x+200,emoticon_selector_mouse.y+150,12,12);
     gfx_quads_end();
 
-	return emoticon_selected;
+	return return_now ? selected_emoticon : -1;
 }
 
 void render_game()