/* Ċ Ġ* Ġ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 . van illa . render Ċ Ċ import Ġnet . minecraft . client . gui . widget . Button Widget Ċ import Ġorg . anti _ ad . mc . common . math 2 d . Rectangle Ċ import Ġorg . anti _ ad . mc . common . math 2 d . resize Bottom Ċ import Ġorg . anti _ ad . mc . common . math 2 d . resize Bottom Left Ċ import Ġorg . anti _ ad . mc . common . math 2 d . resize Bottom Right Ċ import Ġorg . anti _ ad . mc . common . math 2 d . resize Left Ċ import Ġorg . anti _ ad . mc . common . math 2 d . resize Right Ċ import Ġorg . anti _ ad . mc . common . math 2 d . resize Top Ċ import Ġorg . anti _ ad . mc . common . math 2 d . resize Top Left Ċ import Ġorg . anti _ ad . mc . common . math 2 d . resize Top Right Ċ import Ġorg . anti _ ad . mc . common . math 2 d . split 3 x 3 Ċ import Ġorg . anti _ ad . mc . common . van illa . alias . Drawable Helper Ċ import Ġorg . anti _ ad . mc . common . van illa . alias . Identifier Ċ import Ġorg . anti _ ad . mc . common . van illa . alias . Render System Ċ import Ġorg . anti _ ad . mc . common . van illa . render . glue . Dynamic Size Mode Ċ import Ġorg . anti _ ad . mc . common . van illa . render . glue . Dynamic Size Sprite Ċ import Ġorg . anti _ ad . mc . common . van illa . render . glue . Identifier Holder Ċ import Ġorg . anti _ ad . mc . common . van illa . render . glue . Sprite Ċ import Ġorg . anti _ ad . mc . common . van illa . render . glue .__ glue _ V AN IL LA _ TEXTURE _ WIDGET S Ċ import Ġorg . anti _ ad . mc . common . van illa . render . glue .__ glue ___ glue _ V AN IL LA _ TEXTURE _ WIDGET S _ Sprite Ċ import Ġorg . anti _ ad . mc . common . van illa . render . glue .__ glue _ make _ Identifier Ċ import Ġorg . anti _ ad . mc . common . van illa . render . glue .__ glue _ r Blit Ċ import Ġorg . anti _ ad . mc . common . van illa . render . glue .__ glue _ r Draw Dynamic Size Sprite Ċ import Ġorg . anti _ ad . mc . common . van illa . render . glue .__ glue _ r Draw Sprite Ċ Ċ inline Ġoperator Ġfun ĠIdentifier Holder . invoke (): ĠIdentifier Ġ{ ĊĠĠĠ Ġreturn Ġthis . id Ġas ĠIdentifier Ċ } ĊĊ Ċ private Ġval ĠV AN IL LA _ TEXTURE _ WIDGET S : ĠIdentifier Holder ĊĠĠĠ Ġget () Ġ= ĠIdentifier Holder ( ĠButton Widget . WIDGET S _ TEXTURE Ġ) Ċ Ċ private Ġval Ġ Ġinternal _ r Van illa Button Sprite F Ġ= ĠSprite ( V AN IL LA _ TEXTURE _ WIDGET S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRectangle ( 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 )) ĊĊ Ċ private Ġfun Ġmake Identifier ( ns : ĠString , Ġpath : ĠString ): ĠAny Ġ{ ĊĠĠĠ Ġreturn ĠIdentifier ( ns , Ġpath ) Ċ } Ċ Ċ fun Ġinit Texture Gl ue () Ġ{ ĊĠĠĠ Ġ__ glue _ make _ Identifier Ġ= Ġ:: make Identifier ĊĊĠĠĠ Ġ__ glue _ r Blit Ġ= Ġ:: r Blit ĊĠĠĠ Ġ__ glue _ r Draw Sprite Ġ= Ġ:: internal _ r Draw Sprite ĊĠĠĠ Ġ__ glue _ r Draw Dynamic Size Sprite Ġ= Ġ:: internal _ r Draw Dynamic Size Sprite ĊĊĠĠĠ Ġ__ glue ___ glue _ V AN IL LA _ TEXTURE _ WIDGET S _ Sprite Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal _ r Van illa Button Sprite F ĊĠĠĠ Ġ} ĊĠĠĠ Ġ__ glue _ V AN IL LA _ TEXTURE _ WIDGET S Ġ= ĠV AN IL LA _ TEXTURE _ WIDGET S Ċ } ĊĊ Ċ // Ġfor Ġ 2 5 6 Ġx Ġ 2 5 6 Ġtexture Ċ private Ġfun Ġr Blit ( x : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsx : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsy : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsh : ĠInt ) Ġ{ Ġ// Ġscreen Ġxy Ġsprite Ġxy Ġwh ĊĠĠĠ ĠDrawable Helper . draw Texture ( r Matrix Stack , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsx . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsy . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsh , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 6 ) Ċ } Ċ Ċ // Ġscreen Ġxy Ġwh Ġsprite Ġxy Ġwh Ġtexture Ġwh Ċ private Ġfun Ġr Blit ( x : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsx : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsy : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsh : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtw : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġth : ĠInt ) Ġ{ ĊĠĠĠ ĠDrawable Helper . draw Texture ( r Matrix Stack , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsx . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsy . toFloat (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsw , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsh , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtw , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġth ) Ċ } ĊĊĊ Ċ // private Ġfun Ġr Blit ( screen Location : ĠPoint , Ġtexture Location : ĠPoint , Ġsize : ĠSize ) Ġ{ Ċ // Ġ Ġr Blit ( screen Location . x , Ġscreen Location . y , Ġtexture Location . x , Ġtexture Location . y , Ġsize . width , Ġsize . height ) Ċ //} ĊĊĊ Ċ private Ġfun Ġinternal _ r Draw Sprite ( sprite : ĠSprite , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt Index : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy : ĠInt ) Ġ{ ĊĠĠĠ ĠRender System . set Shader Color ( 1 f , Ġ 1 f , Ġ 1 f , Ġ 1 f ) ĊĠĠĠ ĠRender System . set Shader Texture ( t Index , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsprite . identifier ()) ĊĠĠĠ ĠRender System . disable Depth Test (); ĊĠĠĠ Ġ// r Bind Texture ( sprite . identifier ) ĊĠĠĠ Ġval Ġ( sx , Ġsy , Ġsw , Ġsh ) Ġ= Ġsprite . sprite Bounds ĊĠĠĠ Ġval Ġ( tw , Ġth ) Ġ= Ġsprite . texture Size ĊĠĠĠ Ġr Blit ( x , Ġy , Ġsw , Ġsh , Ġsx , ĊĠĠĠĠĠĠĠĠĠ Ġsy , Ġsw , Ġsh , Ġtw , Ġth ) ĊĠĠĠ ĠRender System . enable Depth Test (); Ċ } ĊĊĊ Ċ // Ġ============ Ċ // Ġdynamic Ċ // Ġ============ ĊĊĊ Ċ private Ġfun ĠInt . split ( a : ĠInt Ġ= Ġthis Ġ/ Ġ 2 ): ĠPair < Int , ĠInt > Ġ{ ĊĠĠĠ Ġreturn Ġa Ġto Ġthis Ġ- Ġa Ċ } ĊĊ Ċ private Ġfun Ġresize Cli ps ( cli ps : ĠList < Rectangle >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Left : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Right : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Top : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Bottom : ĠInt ): ĠList < Rectangle > Ġ{ ĊĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġcli ps [ 0 ], ĊĠĠĠĠĠĠĠ Ġcli ps [ 1 ]. resize Bottom Right ( x Left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Top ), ĊĠĠĠĠĠĠĠ Ġcli ps [ 2 ]. resize Bottom ( y Top ), ĊĠĠĠĠĠĠĠ Ġcli ps [ 3 ]. resize Bottom Left ( x Right , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Top ), ĊĠĠĠĠĠĠĠ Ġcli ps [ 4 ]. resize Right ( x Left ), ĊĠĠĠĠĠĠĠ Ġcli ps [ 5 ], Ġ// . resize Top Left ( x Left , Ġy Top ). resize Bottom Right ( x Right , Ġy Bottom ), ĊĠĠĠĠĠĠĠ Ġcli ps [ 6 ]. resize Left ( x Right ), ĊĠĠĠĠĠĠĠ Ġcli ps [ 7 ]. resize Top Right ( x Left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Bottom ), ĊĠĠĠĠĠĠĠ Ġcli ps [ 8 ]. resize Top ( y Bottom ), ĊĠĠĠĠĠĠĠ Ġcli ps [ 9 ]. resize Top Left ( x Right , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Bottom ), ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġfun Ġinternal _ r Draw Dynamic Size Sprite ( sprite : ĠDynamic Size Sprite , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbounds : ĠRectangle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmode : ĠDynamic Size Mode Ġ= ĠDynamic Size Mode . REPEAT _ BOTH ) Ġ{ ĊĊĠĠĠ Ġval Ġ( x , Ġy , Ġwidth , Ġheight ) Ġ= Ġbounds ĊĠĠĠ Ġ// Ġdraw Ġcorners ĊĠĠĠ Ġval Ġ( corner Width , Ġcorner Height ) Ġ= Ġsprite . corner Size ĊĠĠĠ Ġval Ġtw Ġ= Ġwidth Ġ- Ġcorner Width Ġ// Ġcli ps [ 2 ] Ġor Ġcli ps [ 8 ] Ġwidth ĊĠĠĠ Ġval Ġth Ġ= Ġheight Ġ- Ġcorner Height Ġ// Ġcli ps [ 4 ] Ġor Ġcli ps [ 6 ] Ġheight ĊĠĠĠ Ġval Ġ( aw , Ġbw ) Ġ= Ġ(- tw ). coerce At Least ( 0 ). split () Ġ// Ġtrimmed Ġborder ĊĠĠĠ Ġval Ġ( ah , Ġbh ) Ġ= Ġ(- th ). coerce At Least ( 0 ). split () ĊĊĠĠĠ Ġval Ġtexture Areas Ġ= Ġresize Cli ps ( sprite . cli ps , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaw , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbw , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġah , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbh ) ĊĠĠĠ Ġval Ġdraw Areas Ġ= Ġbounds . split 3 x 3 ( texture Areas [ 1 ]. size , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture Areas [ 9 ]. size ) ĊĠĠĠ ĠRender System . set Shader Texture ( 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsprite . identifier ()) ĊĊĠĠĠ Ġmode . draw ( draw Areas , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtexture Areas , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsprite . texture Size ) Ċ } Ċ