/* Ċ Ġ* ĠInventory ĠPro files ĠNext Ċ Ġ* Ċ Ġ* ĠĠ ĠCopyright Ġ( c ) Ġ 2 0 1 9 - 2 0 2 0 Ġjs nim da Ġ< 7 6 1 5 2 5 5 + js nim da @ users . nore ply . github . com > Ċ Ġ* ĠĠ ĠCopyright Ġ( c ) Ġ 2 0 2 1 - 2 0 2 2 ĠPl amen ĠK . ĠK os se ff Ġ< p . kos se ff @ gmail . com > Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠAffero ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* Ġthe ĠFree ĠSoftware ĠFoundation , Ġeither Ġversion Ġ 3 Ġof Ġthe ĠLicense , Ġor Ċ Ġ* Ġ( at Ġyour Ġoption ) Ġany Ġlater Ġversion . Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠGNU ĠAffero ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠAffero ĠGeneral ĠPublic ĠLicense Ċ Ġ* ĠĠĠĠ Ġalong Ġwith Ġthis Ġprogram . Ġ ĠIf Ġnot , Ġsee Ġ< https :// www . gnu . org / licenses />. Ċ Ġ*/ Ċ Ċ package Ġorg . anti _ ad . mc . common . gui . debug Ċ Ċ import Ġorg . anti _ ad . mc . common . extensions . detect able Ċ import Ġorg . anti _ ad . mc . common . extensions . mod Ċ import Ġorg . anti _ ad . mc . common . extensions . run If Ċ import Ġorg . anti _ ad . mc . common . gui . screen . Base Overlay Ċ import Ġorg . anti _ ad . mc . common . gui . widget . AnchorStyles Ċ import Ġorg . anti _ ad . mc . common . gui . widget . fill Parent Ċ import Ġorg . anti _ ad . mc . common . gui . widgets . Hud Text Ċ import Ġorg . anti _ ad . mc . common . gui . widgets . Page Ċ import Ġorg . anti _ ad . mc . common . gui . widgets . Widget Ċ import Ġorg . anti _ ad . mc . common . van illa . glue . Van illa Util Ċ import Ġorg . anti _ ad . mc . common . van illa . render . COLOR _ BLACK Ċ import Ġorg . anti _ ad . mc . common . van illa . render . COLOR _ WHITE Ċ 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 Horizontal Line Ċ import Ġorg . anti _ ad . mc . common . van illa . render . glue . r Draw Vertical Line Ċ import Ġorg . anti _ ad . mc . common . van illa . render . glue . r Wrap Text Ċ import Ġkotlin . math . sign Ċ Ċ /* ĊĠ Ġtext Ġbounds : Ġ( 2 Ġ+ Ġr Measure Text ( s )) Ġx Ġ 9 ĊĠĠĠĠĠ Ġoffset Ġx Ġ 1 Ġy Ġ 1 ĊĠ Ġmargin Ġ 1 Ċ Ġ*/ Ċ open Ġclass ĠBase Debug Screen Ġ: ĠBase Overlay () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġtext Position Ġ// Ġ 0 - 3 : Ġtop - left Ġ/ Ġtop - right Ġ/ Ġbottom - left Ġ/ Ġbottom - right ĊĠĠĠĠĠĠĠĠĠĠĠ Ġby Ġdetect able ( 0 ) Ġ{ Ġ_, Ġ_ Ġ-> Ġupdate Widgets () Ġ} ĊĠĠĠ Ġprivate Ġval Ġis Top ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtext Position Ġin Ġ 0 .. 1 ĊĠĠĠ Ġprivate Ġval Ġis Left ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtext Position Ġ% Ġ 2 Ġ== Ġ 0 ĊĊĠĠĠ Ġvar Ġpage Index Ġ= Ġ 0 ĊĠĠĠ Ġval Ġpages Ġ= Ġmutable ListOf < Page >() ĊĠĠĠ Ġprivate Ġval Ġpage : ĠPage ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpages . get OrNull ( page Index ) ĊĊĠĠĠ Ġprivate Ġval Ġdefault Page Name Widget Ġ= ĠH ud Text (" [- 1 ] Ġnull ") ĊĠĠĠ Ġvar Ġpage Name Widget Ġ= Ġdefault Page Name Widget ĊĠĠĠ Ġprivate Ġval Ġh ud Text Container Ġ= ĠWidget () ĊĊĊĠĠĠ Ġfun Ġh ud Text Contains ( mouse X : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġh ud Text Container . any Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . contains ( mouse X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Hud Text () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġpage Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġh ud Text Container . clear Children () Ċ // ĠĠĠ Ġval Ġtexts Ġ= Ġpage . content . map Ġ{ ĠH ud Text ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġr Wrap Text ( page . content . join ToString ("\ n "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġglue _ r Screen Width ) ĊĠĠĠĠĠĠĠ Ġval Ġtexts Ġ= Ġcontent . lines (). map Ġ{ ĠH ud Text ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġtexts . forEach Ġ{ Ġh ud Text Container . addChild ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġh ud Texts Ġ= Ġh ud Text Container . children . run If (! is Top ) Ġ{ Ġas Re versed () Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġdy Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġfor Ġ( h ud Text Ġin Ġh ud Texts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh ud Text . anchor Ġ= ĠAnchor Styles ( is Top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! is Top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! is Left ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Left ) Ġh ud Text . left Ġ= Ġ 1 Ġelse Ġh ud Text . right Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Top ) Ġh ud Text . top Ġ= Ġdy Ġelse Ġh ud Text . bottom Ġ= Ġdy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdy Ġ+= Ġh ud Text . height ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Widgets () Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Clear Widgets () ĊĠĠĠĠĠĠĠ Ġpage Name Widget Ġ= ĠH ud Text ( if Ġ( is Left ) Ġ"${ page ?. name } Ġ[$ page Index ]" Ġelse Ġ" [$ page Index ] Ġ${ page ?. name }") ĊĠĠĠĠĠĠĠ Ġadd Widget ( page Name Widget ) ĊĠĠĠĠĠĠĠ Ġpage Name Widget . anchor Ġ= ĠAnchor Styles . top Only . copy ( left Ġ= Ġ! is Left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright Ġ= Ġis Left ) ĊĠĠĠĠĠĠĠ Ġpage Name Widget . top Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( is Left ) Ġ// Ġ 0 Ġor Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Name Widget . right Ġ= Ġ 1 Ġelse Ġpage Name Widget . left Ġ= Ġ 1 Ġ// Ġopposite Ġside ĊĠĠĠĠĠĠĠ Ġadd Widget ( h ud Text Container ); Ġh ud Text Container . fill Parent () ĊĠĠĠĠĠĠĠ Ġpage ?. widget ?. let Ġ{ Ġadd Widget ( it ); Ġit . fill Parent () Ġ} Ġ// Ġpage . widget ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġswitch Page ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pages . isEmpty ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġpage Index Ġ= Ġif Ġ( index Ġin Ġ 0 Ġuntil Ġpages . size ) Ġindex Ġelse Ġ 0 ĊĠĠĠĠĠĠĠ Ġupdate Widgets () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmouse Clicked ( d : ĠDouble , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe : ĠDouble , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinc Ġ= Ġif Ġ( Van illa Util . shift Down ()) Ġ- 1 Ġelse Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġ 1 ) Ġswitch Page (( page Index Ġ+ Ġinc ) Ġmod Ġpages . size ) Ġ// Ġright Ġclick ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . mouse Clicked ( d , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmouse Sc rolled ( d : ĠDouble , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe : ĠDouble , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf : ĠDouble ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Position Ġ= Ġ( text Position Ġ+ Ġsign (- f ). toInt ()) Ġmod Ġ 4 ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . mouse Sc rolled ( d , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( mouse X : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpartial Ticks : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpage ?. pre Render ( mouse X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpartial Ticks ) ĊĠĠĠĠĠĠĠ Ġupdate Hud Text () Ċ // ĠĠĠ Ġif Ġ( h ud Text Contains ( mouse X , ĠmouseY )) Ġ{ Ċ // ĠĠĠĠĠ Ġtext Position Ġ= Ġ( text Position Ġ+ Ġ 1 ) Ġ% Ġ 2 Ġ// Ġ( text Position Ġ+ Ġ 1 ) Ġ% Ġ 4 Ċ // ĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . render ( mouse X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpartial Ticks ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ============ ĊĠĠĠ Ġ// ĠPage Ġ 1 ĊĠĠĠ Ġ// Ġ============ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage 1 Ġ= Ġobject Ġ: ĠPage (" Input ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġcontent : ĠList < String > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠDebug Infos . as Texts Ġ/* + ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| mouse X Ġ${ Van illa Util . mouse X } ĠmouseY Ġ${ Van illa Util . mouse Y } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| last Mouse X Ġ${ Van illa Util . last Mouse X } Ġlast Mouse Y Ġ${ Van illa Util . last Mouse Y } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin (). lines () */ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpre Render ( mouse X : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpartial Ticks : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDebug Infos . mouse X Ġ= Ġmouse X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDebug Infos . mouse Y Ġ= ĠmouseY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtoggle Color Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġwidget Ġ= Ġobject Ġ: ĠWidget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġz Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrender ( mouse X : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpartial Ticks : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( toggle Color Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Ġ= Ġif Ġ( toggle Color Ġ== Ġ 0 ) ĠCOLOR _ WHITE Ġelse ĠCOLOR _ BLACK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Draw Vertical Line ( mouse X , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ- Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr Draw Horizontal Line ( 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ- Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmouseY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Clicked ( x : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( button Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoggle Color Ġ= Ġ( toggle Color Ġ+ Ġ 1 ) Ġ% Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . mouse Clicked ( x , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpages . add ( page 1 ) ĊĠĠĠĠĠĠĠ Ġswitch Page ( 0 ) ĊĠĠĠ Ġ} Ċ } Ċ