#include "menu.qh"
-#include "classes.qc"
+
+#include "item.qh"
+
+#include "anim/animhost.qh"
+
+#include "item/dialog.qh"
+#include "item/listbox.qh"
+#include "item/nexposee.qh"
+
+#include "xonotic/commandbutton.qh"
+#include "xonotic/mainwindow.qh"
+#include "xonotic/serverlist.qh"
+#include "xonotic/slider_resolution.qh"
+
+.string cvarName;
+
#include "xonotic/util.qh"
#include "../common/items/all.qh"
-#include "../common/weapons/all.qh"
+#include <common/weapons/all.qh>
#include "../common/mapinfo.qh"
#include "../common/mutators/base.qh"
else
{
draw_reset_cropped();
- if (!mouseButtonsPressed && key >= K_MOUSE1 && key <= K_MOUSE3) main.mousePress(main, menuMousePos);
+ if (!mouseButtonsPressed && key >= K_MOUSE1 && key <= K_MOUSE3)
+ main.mousePress(main, menuMousePos);
if (!main.keyDown(main, key, ascii, menuShiftState))
{
// disable menu on unhandled ESC
draw_Picture_Aligned(v, scalemode, strcat(img, "_l", ftos(l + 1)), a);
}
++l;
- : nopic
+LABEL(nopic)
}
}
{
float f = bound(0, frametime * 2, 1);
menuTooltipAveragedMousePos = menuTooltipAveragedMousePos * (1 - f) + pos * f;
- f = vlen(pos - menuTooltipAveragedMousePos);
- if (f < 0.01)
+ if (vdist(pos - menuTooltipAveragedMousePos, <, 0.01))
{
it = m_findtooltipitem(main, pos);
- if (it.instanceOfListBox && it.isScrolling(it)) it = world;
+ if (it.instanceOfListBox && it.isScrolling(it)) it = NULL;
if (it && prev_tooltip != it.tooltip)
{
int i = 0;
float w = 0;
- for (getWrappedLine_remaining = menuTooltipText; getWrappedLine_remaining; ++i)
+ for (getWrappedLine_remaining = menuTooltipText; getWrappedLine_remaining && i <= 16; ++i)
{
string s = getWrappedLine(SKINWIDTH_TOOLTIP, fontsize, draw_TextWidth_WithoutColors);
+ if (i == 16)
+ s = "...";
float f = draw_TextWidth(s, false, fontsize);
if (f > w) w = f;
}
p = menuTooltipOrigin;
p.x += SKINMARGIN_TOOLTIP_x / conwidth;
p.y += SKINMARGIN_TOOLTIP_y / conheight;
- for (getWrappedLine_remaining = menuTooltipText; getWrappedLine_remaining; p.y += fontsize.y)
+ int i = 0;
+ for (getWrappedLine_remaining = menuTooltipText; getWrappedLine_remaining && i <= 16; ++i, p.y += fontsize.y)
{
string s = getWrappedLine(SKINWIDTH_TOOLTIP, fontsize, draw_TextWidth_WithoutColors);
+ if (i == 16)
+ s = "...";
draw_Text(p, s, fontsize, SKINCOLOR_TOOLTIP, SKINALPHA_TOOLTIP * menuTooltipAlpha, false);
}
}
}
}
+float autocvar_menu_force_on_disconnection;
void m_draw(float width, float height)
{
+ if (autocvar_menu_force_on_disconnection > 0)
+ {
+ static float connected_time;
+ if (clientstate() == CS_DISCONNECTED)
+ {
+ if (connected_time && time - connected_time > autocvar_menu_force_on_disconnection)
+ {
+ m_toggle(true);
+ connected_time = 0;
+ }
+ }
+ else
+ connected_time = time;
+ }
+
m_gamestatus();
execute_next_frame();
draw_alpha *= menuAlpha;
- if (!Menu_Active)
- {
- // do not update mouse position
- // it prevents mouse jumping to '0 0 0' when menu is fading out
- }
- else if (menuMouseMode)
+ if (menuMouseMode)
{
- vector newMouse = globalToBox(getmousepos(), draw_shift, draw_scale);
- if (newMouse != '0 0 0' && newMouse != menuMousePos)
+ vector rawMousePos = getmousepos();
+ vector newMouse = globalToBox(rawMousePos, draw_shift, draw_scale);
+ if (rawMousePos != '0 0 0' && newMouse != menuMousePos)
{
menuMousePos = newMouse;
if (mouseButtonsPressed) main.mouseDrag(main, menuMousePos);
postMenuDraw();
frametime = 0;
+ IL_ENDFRAME();
}
void m_display()
void Shutdown()
{
m_hide();
- FOREACH_ENTITY_ORDERED(it.destroy, LAMBDA(
+ FOREACH_ENTITY_ORDERED(it.destroy, {
if (it.classname == "vtbl") continue;
it.destroy(it);
- ));
+ });
}
void m_focus_item_chain(entity outermost, entity innermost)