pingus-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pingus-CVS] r3948 - in trunk/pingus: . src/components


From: jsalmon3
Subject: [Pingus-CVS] r3948 - in trunk/pingus: . src/components
Date: Mon, 15 Dec 2008 03:40:07 +0100

Author: jsalmon3
Date: 2008-12-15 03:40:00 +0100 (Mon, 15 Dec 2008)
New Revision: 3948

Modified:
   trunk/pingus/TODO
   trunk/pingus/src/components/button_panel.cpp
   trunk/pingus/src/components/button_panel.hpp
Log:
Added tooltips for actions



Modified: trunk/pingus/TODO
===================================================================
--- trunk/pingus/TODO   2008-12-15 01:42:04 UTC (rev 3947)
+++ trunk/pingus/TODO   2008-12-15 02:40:00 UTC (rev 3948)
@@ -64,8 +64,6 @@
 
 * clicking while the screen changes is weird
 
-* tooltip missing for actions (got removed in refactoring)
-
 * fullscreen must use a different size then the current window size (round to 
nearest 'normal' resolution or so)
 
 * input recording in the ScreenManager can't work when the underlying

Modified: trunk/pingus/src/components/button_panel.cpp
===================================================================
--- trunk/pingus/src/components/button_panel.cpp        2008-12-15 01:42:04 UTC 
(rev 3947)
+++ trunk/pingus/src/components/button_panel.cpp        2008-12-15 02:40:00 UTC 
(rev 3948)
@@ -32,7 +32,9 @@
     session(s),
     background("core/buttons/buttonbackground"),
     highlight("core/buttons/buttonbackgroundhl"),
-    current_button(0)
+    current_button(0),
+    show_tip(false),
+    tip_button(0)
 {
   ActionHolder* aholder = session->get_server()->get_action_holder();
 
@@ -75,6 +77,11 @@
 
       std::string str = 
StringUtil::to_string(aholder->get_available(buttons[i].name));
       gc.print_center(Fonts::pingus_small, Vector2i(rect.left + 46, rect.top + 
5 + 38*i), str);
+
+      if (show_tip && tip_button == i)
+        {
+          gc.print_left(Fonts::pingus_small, Vector2i(rect.left + 65, rect.top 
+ 5 + 38*i), action_to_screenname(buttons[i].name));
+        }
     }
 }
 
@@ -132,6 +139,25 @@
 }
 
 void
+ButtonPanel::on_pointer_enter()
+{
+  show_tip = true;
+}
+
+void
+ButtonPanel::on_pointer_leave()
+{
+  show_tip = false;
+}
+
+void
+ButtonPanel::on_pointer_move(int x, int y)
+{
+  int action = (y - rect.top) / 38;
+  tip_button = Math::clamp(0, action, int(buttons.size()-1));
+}
+
+void
 ButtonPanel::set_pos(const Vector2i& pos)
 {
   set_rect(Rect(Vector2i(pos.x, pos.y - (buttons.size() * 38)/2),

Modified: trunk/pingus/src/components/button_panel.hpp
===================================================================
--- trunk/pingus/src/components/button_panel.hpp        2008-12-15 01:42:04 UTC 
(rev 3947)
+++ trunk/pingus/src/components/button_panel.hpp        2008-12-15 02:40:00 UTC 
(rev 3948)
@@ -39,6 +39,9 @@
   std::vector<ActionButton> buttons;
   std::vector<ActionButton>::size_type current_button;
 
+  bool show_tip;
+  std::vector<ActionButton>::size_type tip_button;
+
 public:
   ButtonPanel(GameSession* s, const Vector2i& pos);
   virtual ~ButtonPanel();
@@ -57,6 +60,10 @@
   void on_primary_button_press(int x, int y);
   void on_primary_button_release(int x, int y);
 
+  void on_pointer_enter();
+  void on_pointer_leave();
+  void on_pointer_move(int x, int y);
+
   void set_pos(const Vector2i& pos);
   
 private:





reply via email to

[Prev in Thread] Current Thread [Next in Thread]