// for hud config Class OptionMenuItemUTHudPreview : OptionMenuItem { TextureID tex[2]; CVar mColorP, mColorC, mOpacity, mPTeam, mPColor; OptionMenuItemUTHudPreview Init( String label ) { Super.Init(label,"",true); mColorP = CVar.FindCVar("flak_colorprefs"); mColorC = CVar.FindCVar("flak_colorcustom"); mOpacity = CVar.FindCVar("flak_opacity"); mPTeam = CVar.FindCVar("team"); mPColor = CVar.FindCVar("color"); tex[0] = TexMan.CheckForTexture("graphics/HudPreviewBG.png",TexMan.Type_Any); tex[1] = TexMan.CheckForTexture("graphics/HudPreview.png",TexMan.Type_Any); return self; } override bool Selectable() { return false; } override int Draw( OptionMenuDescriptor desc, int y, int indent, bool selected ) { int xpos = indent + CursorSpace(); int ypos = y+OptionMenuSettings.mLinespacing*CleanYfac_1; Screen.DrawFrame(xpos,ypos,64*CleanXFac_1,64*CleanYFac_1); Screen.DrawTexture(tex[0],false,xpos,ypos,DTA_CleanNoMove_1,true); Color tintcolor = Color("White"); switch ( mColorP.GetInt() ) { case 0: int t = mPTeam.GetInt(); if ( t < Teams.Size() ) tintcolor = Color(Teams[t].mName); break; case 1: tintcolor = Color(mPColor.GetString()); break; case 2: tintcolor = Color(mColorC.GetString()); break; } int opacity = mOpacity.GetInt(); if ( opacity >= 16 ) Screen.DrawTexture(tex[1],false,xpos,ypos,DTA_CleanNoMove_1,true,DTA_FillColor,Color("Black")); double alpha = clamp(opacity/15.,0.,1.); Screen.DrawTexture(tex[1],false,xpos,ypos,DTA_CleanNoMove_1,true,DTA_FillColor,tintcolor,DTA_Alpha,alpha,DTA_LegacyRenderStyle,STYLE_AddShaded); return -1; } } // changes to Tahoma Class UTMessageBox : MessageBoxMenu { override void Init( Menu parent, String message, int messagemode, bool playsound, Name cmd, voidptr native_handler ) { Super.Init(parent,message,messagemode,playsound,cmd,native_handler); Font NFont = Font.GetFont('Tahoma10'); if ( !generic_ui ) { if ( NFont && NFont.CanPrint(message) && NFont.CanPrint("$TXT_YES") && NFont.CanPrint("$TXT_NO") ) textFont = NFont; else if ( OriginalSmallFont && OriginalSmallFont.CanPrint(message) && OriginalSmallFont.CanPrint("$TXT_YES") && OriginalSmallFont.CanPrint("$TXT_NO") ) textFont = OriginalSmallFont; } if ( !textFont ) { arrowFont = textFont = NewSmallFont; int factor = (CleanXfac+1)/2; destWidth = screen.GetWidth()/factor; destHeight = screen.GetHeight()/factor; selector = "▶"; } else { arrowFont = ConFont; destWidth = CleanWidth; destHeight = CleanHeight; selector = "\xd"; } int mr1 = destWidth/2+10+textFont.StringWidth(Stringtable.Localize("$TXT_YES")); int mr2 = destWidth/2+10+textFont.StringWidth(Stringtable.Localize("$TXT_NO")); mMouseRight = MAX(mr1,mr2); mMessage = textFont.BreakLines(Stringtable.Localize(message),generic_ui?600:300); } } // Option Menu with tooltips at bottom Class UTOptionMenu : OptionMenu { private String ttip; override void Ticker() { Super.Ticker(); // fetch the tooltip for whatever's selected (if any) if ( mDesc.mSelectedItem == -1 ) return; String mcvar = mDesc.mItems[mDesc.mSelectedItem].GetAction(); mcvar.Replace(" ","_"); // need to strip whitespace for command actions String locstr = String.Format("TOOLTIP_%s",mcvar); ttip = StringTable.Localize(locstr,false); if ( ttip == locstr ) ttip = ""; } override void Drawer() { Super.Drawer(); if ( ttip == "" ) return; // re-evaluate y to check where the cursor is int cy = 0; int y = mDesc.mPosition; if ( y <= 0 ) { let font = generic_ui||!mDesc.mFont?NewSmallFont:mDesc.mFont; if ( font && (mDesc.mTitle.Length() > 0) ) y = -y+font.GetHeight(); else y = -y; } int fontheight = OptionMenuSettings.mLinespacing*CleanYfac_1; y *= CleanYfac_1; int lastrow = Screen.GetHeight()-OptionHeight()*CleanYfac_1; for ( int i=0; ((i < mDesc.mItems.Size()) && (y <= lastrow)); i++ ) { // Don't scroll the uppermost items if ( i == mDesc.mScrollTop ) { i += mDesc.mScrollPos; if ( i >= mDesc.mItems.Size() ) break; // skipped beyond end of menu } y += fontheight; if ( mDesc.mSelectedItem == i ) { cy = y; break; } } let fnt = Font.GetFont('UTFont12'); let lines = fnt.BreakLines(ttip,CleanWidth_1-8); int height = (8+fnt.GetHeight()*lines.Count())*CleanYFac_1; // draw at the bottom unless the selected option could is covered by the tooltip int ypos = Screen.GetHeight()-height; if ( cy >= ypos ) ypos = 0; Screen.Dim("Black",.75,0,ypos,Screen.GetWidth(),height); ypos += 4*CleanYFac_1; for ( int i=0; i