package Ġorg . anti _ ad . mc . common . gui . widgets Ċ Ċ import Ġorg . anti _ ad . mc . common . config . Categor ized Multi Config Ċ import Ġorg . anti _ ad . mc . common . config . I Config Option Ċ import Ġorg . anti _ ad . mc . common . gui . Tooltip s Ċ import Ġorg . anti _ ad . mc . common . gui . widget . AnchorStyles Ċ import Ġorg . anti _ ad . mc . common . van illa . render . glue . glue _ r Screen Width Ċ import Ġorg . anti _ ad . mc . common . van illa . render . glue . r Draw Center ed Text Ċ Ċ private Ġconst Ġval ĠCOLOR _ WHITE Ġ= Ġ- 0 x 1 Ċ private Ġconst Ġval Ġtext Y Ġ= Ġ 6 Ċ Ċ fun ĠCategor ized Multi Config . toList Widget ( displayName Of : Ġ( String ) Ġ-> ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Of : Ġ( String ) Ġ-> ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Name Of : Ġ( String ) Ġ-> ĠString ): ĠConfig List Widget Ġ= ĊĠĠĠ ĠConfig List Widget ( displayName Of , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Of ). apply Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( category Name , Ġconfig Options ) Ġin Ġcategories ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġcategory Name Of ( category Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . isEmpty () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . isBlank () Ġ-> Ġadd Entry ( Category Entry ( name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . startsWith (" Â§ Â§ vg ap :") Ġ-> Ġadd Height ( name . substring ( 7 ). toInt OrNull () Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . startsWith (" Â§ Â§ hide ") Ġ-> Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġadd Category ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Options . forEach Ġ{ Ġadd Config Option ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ class ĠConfig List Widget ( private Ġval ĠdisplayName Of : Ġ( String ) Ġ-> ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġdescription Of : Ġ( String ) Ġ-> ĠString ) Ġ: ĊĠĠĠ ĠAn ch ored List Widget () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( mouse X : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpartial Ticks : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . render ( mouse X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpartial Ticks ) ĊĠĠĠĠĠĠĠ ĠTool tips . render All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Category ( category Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Anchor ( category Name ) ĊĠĠĠĠĠĠĠ Ġadd Entry ( Category Entry ( category Name )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Config Option ( config Option : ĠI Config Option ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Entry ( Config Option Entry ( config Option )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Height ( height : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Entry ( Entry (). apply Ġ{ Ġthis . height Ġ= Ġheight Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ============ ĊĠĠĠ Ġ// Ġinner Ġclasses ĊĠĠĠ Ġ// Ġ============ ĊĠĠĠ Ġinner Ġclass ĠConfig Option Entry ( val Ġconfig Option : ĠI Config Option ) Ġ: ĠEntry () Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠdisplayName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠdisplayName Of ( config Option . key ) ĊĠĠĠĠĠĠĠ Ġval Ġdescription ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġdescription Of ( config Option . key ) ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Widget : ĠConfig Widget Base < *> Ġ= Ġconfig Option . to Config Widget (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanchor Ġ= ĠAnchor Styles . all ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Config Option Entry . addChild ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġthis @ Config Option Entry . width Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠdisplayName Text Widget Ġ= ĠText Button Widget ( displayName ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Through Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Config Option Entry . addChild ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop Ġ= Ġtext Y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleft Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġz Index Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrender ( mouse X : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpartial Ticks : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( out Of Container ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . render ( mouse X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpartial Ticks ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( description . isNotEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠdisplayName Text Widget . contains ( mouse X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! anchor Header . contains ( mouse X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTool tips . add Tooltip ( description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmouse X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġglue _ r Screen Width Ġ* Ġ 2 Ġ/ Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Changed Ġ+= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Widget . left Ġ= Ġwidth Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠCategory Entry ( private Ġval Ġcategory Name : ĠString ) Ġ: ĠEntry () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrender ( mouse X : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpartial Ticks : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( out Of Container ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr Draw Center ed Text ( category Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġabsolute Bounds , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCOLOR _ WHITE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġinner Ġclass ĠEntry Ġ: ĠWidget () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 2 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġout Of Container : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġis OutOf Container ( this ) ĊĠĠĠ Ġ} Ċ }