]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into terencehill/menu_gametype_tooltips_2 243/head
authorterencehill <piuntn@gmail.com>
Wed, 21 Oct 2015 08:22:02 +0000 (10:22 +0200)
committerterencehill <piuntn@gmail.com>
Wed, 21 Oct 2015 08:22:02 +0000 (10:22 +0200)
1  2 
qcsrc/menu/menu.qc
qcsrc/menu/xonotic/dialog_settings_game_model.qc

diff --combined qcsrc/menu/menu.qc
index ecadb75bb0738acba4a827476fd3efb6e363d8f9,fde2c3c1eb7594125c82cb2cac15eb99ae68284d..8f522d42da5779049ca5ce5f79f27ceeddd543f0
@@@ -407,7 -407,7 +407,7 @@@ vector menuTooltipOrigin
  vector menuTooltipSize;
  float menuTooltipAlpha;
  string menuTooltipText;
 -float menuTooltipState; // 0: static, 1: fading in, 2: fading out
 +float menuTooltipState; // 0: static, 1: fading in, 2: fading out, 3: forced fading out
  float m_testmousetooltipbox(vector pos)
  {
        if(pos.x >= menuTooltipOrigin.x && pos.x < menuTooltipOrigin.x + menuTooltipSize.x)
@@@ -478,7 -478,7 +478,7 @@@ entity m_findtooltipitem(entity root, v
        entity it;
        entity best;
  
-       best = world;
+       best = NULL;
        it = root;
  
        while(it.instanceOfContainer)
                                best = it;
                        else if(menu_tooltips == 2 && (it.cvarName || it.onClickCommand))
                                best = it;
-                       it = world;
+                       it = NULL;
                }
                else if(it.instanceOfModalController)
                        it = it.focusedChild;
@@@ -534,7 -534,6 +534,7 @@@ string gettooltip(
        }
        return menuTooltipItem.tooltip;
  }
 +string prev_tooltip;
  void m_tooltip(vector pos)
  {
        float f, i, w;
        if (!menu_tooltips)
        {
                // don't return immediately, fade out the active tooltip first
-               if (menuTooltipItem == world)
+               if (menuTooltipItem == NULL)
                        return;
-               it = world;
+               it = NULL;
                menu_tooltips_old = menu_tooltips;
        }
        else
                menuTooltipAveragedMousePos = menuTooltipAveragedMousePos * (1 - f) + pos * f;
                f = vlen(pos - menuTooltipAveragedMousePos);
                if(f < 0.01)
 +              {
                        it = m_findtooltipitem(main, pos);
 +
 +                      if(it.instanceOfListBox && it.isScrolling(it))
 +                              it = world;
 +
 +                      if(it && prev_tooltip != it.tooltip)
 +                      {
 +                              // fade out if tooltip of a certain item has changed
 +                              menuTooltipState = 3;
 +                              if(prev_tooltip)
 +                                      strunzone(prev_tooltip);
 +                              prev_tooltip = strzone(it.tooltip);
 +                      }
 +                      else if(menuTooltipItem && !m_testmousetooltipbox(pos))
 +                              menuTooltipState = 3; // fade out if mouse touches it
 +
 +              }
                else
-                       it = world;
+                       it = NULL;
        }
        fontsize = '1 0 0' * (SKINFONTSIZE_TOOLTIP / conwidth) + '0 1 0' * (SKINFONTSIZE_TOOLTIP / conheight);
  
 -      // float menuTooltipState; // 0: static, 1: fading in, 2: fading out
 +      // float menuTooltipState; // 0: static, 1: fading in, 2: fading out, 3: forced fading out
        if(it != menuTooltipItem)
        {
                switch(menuTooltipState)
        else if(menuTooltipState == 2) // re-fade in?
                menuTooltipState = 1;
  
 -      if(menuTooltipItem)
 -              if(!m_testmousetooltipbox(pos))
 -                      menuTooltipState = 2; // fade out if mouse touches it
 -
        switch(menuTooltipState)
        {
 -              case 1:
 +              case 1: // fade in
                        menuTooltipAlpha = bound(0, menuTooltipAlpha + 5 * frametime, 1);
                        if(menuTooltipAlpha == 1)
                                menuTooltipState = 0;
                        break;
 -              case 2:
 +              case 2: // fade out
 +              case 3: // forced fade out
                        menuTooltipAlpha = bound(0, menuTooltipAlpha - 2 * frametime, 1);
                        if(menuTooltipAlpha == 0)
                        {
                                menuTooltipState = 0;
-                               menuTooltipItem = world;
+                               menuTooltipItem = NULL;
                        }
                        break;
        }
  
-       if(menuTooltipItem == world)
+       if(menuTooltipItem == NULL)
        {
                if (menuTooltipText)
                {
                if(menu_tooltips != menu_tooltips_old)
                {
                        if (menu_tooltips != 0 && menu_tooltips_old != 0)
-                               menuTooltipItem = world; // reload tooltip next frame
+                               menuTooltipItem = NULL; // reload tooltip next frame
                        menu_tooltips_old = menu_tooltips;
                }
                else if(menuTooltipOrigin.x < 0) // unallocated?
index 6e2779badf9977a26c41af172ca1f972991f5170,7b0794bdd782e671c84693eb6b60b715dbba2b48..45d7aee3048bd743f2cf018cd64d5643b3ec1859
@@@ -5,7 -5,6 +5,7 @@@ CLASS(XonoticGameModelSettingsTab, Xono
        METHOD(XonoticGameModelSettingsTab, fill, void(entity));
        METHOD(XonoticGameModelSettingsTab, showNotify, void(entity));
        ATTRIB(XonoticGameModelSettingsTab, title, string, _("Models"))
 +      ATTRIB(XonoticGameModelSettingsTab, tooltip, string, _("Customize how players and items are displayed in game"))
        ATTRIB(XonoticGameModelSettingsTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticGameModelSettingsTab, rows, float, 13)
        ATTRIB(XonoticGameModelSettingsTab, columns, float, 5)
@@@ -67,8 -66,7 +67,7 @@@ void XonoticGameModelSettingsTab_fill(e
                me.TD(me, 1, 2, e = makeXonoticSlider(0, 2, 0.2, "cl_deathglow"));
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Gibs:")));
-               me.TD(me, 1, 2, e = makeXonoticTextSlider_T("cl_nogibs",
-                       _("Reduce the amount of gibs or remove them completely (default: lots)")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_nogibs"));
                        e.addValue(e, ZCTX(_("GIBS^None")), "1");
                        e.addValue(e, ZCTX(_("GIBS^Few")), "0.75");
                        e.addValue(e, ZCTX(_("GIBS^Many")), "0.5");