package Ġnet . tor val d . sprite assembler Ċ Ċ import Ġcom . badlogic . gdx . Game Ċ import Ġcom . badlogic . gdx . G dx Ċ import Ġcom . badlogic . gdx . backends . lwjgl 3 . Lwjgl 3 Application Ċ import Ġcom . badlogic . gdx . backends . lwjgl 3 . Lwjgl 3 ApplicationConfiguration Ċ import Ġcom . badlogic . gdx . graphics . Color Ċ import Ġcom . badlogic . gdx . graphics . Pixmap Ċ import Ġcom . badlogic . gdx . graphics . Texture Ċ import Ġcom . badlogic . gdx . graphics . g 2 d . Sprite Batch Ċ import Ġnet . tor val d . EM DASH Ċ import Ġnet . tor val d . gdx . graphics . Pixmap IO 2 Ċ import Ġnet . tor val d . ter rar um . gdx Clear AndSet Blend Ċ import Ġnet . tor val d . ter rar um . in Use Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . awt . Font Ċ import Ġjava . awt . event . Mouse Adapter Ċ import Ġjava . awt . event . MouseEvent Ċ import Ġjava . io . String Reader Ċ import Ġjava . util .* Ċ import Ġjavax . swing .* Ċ import Ġjavax . swing . tree . Default Mutable TreeNode Ċ import Ġjavax . swing . tree . Default Tree Model Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġmin ja es ong Ġon Ġ 2 0 1 9 - 0 1 - 0 5 . Ċ Ġ*/ Ċ class ĠSprite Assembler App ( val Ġg dx Window : ĠSprite Assembler Preview ) Ġ: ĠJ Frame () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpanel Properties Ġ= ĠJ Tree () ĊĠĠĠ Ġprivate Ġval Ġpanel Animations List Ġ= ĠJ List < String >() ĊĠĠĠ Ġprivate Ġval Ġpanel Body parts List Ġ= ĠJ List < String >() ĊĠĠĠ Ġprivate Ġval Ġpanel Image Files List Ġ= ĠJ List < String >() ĊĠĠĠ Ġprivate Ġval Ġpanel S ke letons List Ġ= ĠJ List < String >() ĊĠĠĠ Ġprivate Ġval Ġpanel Transforms List Ġ= ĠJ List < String >() ĊĠĠĠ Ġprivate Ġval Ġpanel Stat List Ġ= ĠJ List < String >() ĊĠĠĠ Ġprivate Ġval Ġpanel Code Ġ= ĠJ Text Pane () ĊĠĠĠ Ġprivate Ġval Ġstat Bar Ġ= ĠJ TextArea (" Null .") ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġad Properties : ĠAD Properties ĊĊĠĠĠ Ġprivate Ġval Ġlang Ġ= ĠProperties () ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠÂ ¤ Ġis Ġused Ġas Ġa Ġ\ n Ġmarker ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġtranslations Ġ= Ġ""" ĊĠĠĠĠĠĠĠ ĠWARNING _ CONTINUE = Continue ? ĊĠĠĠĠĠĠĠ ĠWARNING _ YOUR _ DATA _ W ILL _ GONE = Existing Ġedits Ġwill Ġbe Ġlost . ĊĠĠĠĠĠĠĠ ĠOPER ATION _ CANCEL LED = Operation Ġcancelled . ĊĠĠĠĠĠĠĠ ĠNO _ SU CH _ FILE = No Ġsuch Ġfile Ġexists , Ġoperation Ġcancelled . ĊĠĠĠĠĠĠĠ ĠNEW _ ROWS = Enter Ġthe Ġnumber Ġof Ġrows Ġto Ġinitialise Ġthe Ġnew ĠCSV . Â ¤ Remember , Ġyou Ġcan Ġalways Ġadd Ġor Ġdelete Ġrows Ġlater . ĊĠĠĠĠĠĠĠ ĠADD _ ROWS = Enter Ġthe Ġnumber Ġof Ġrows Ġto Ġadd : ĊĠĠĠĠĠĠĠ ĠWRITE _ FAIL = Writing Ġto Ġfile Ġhas Ġfailed : ĊĠĠĠĠĠĠĠ ĠSTAT _ INIT = Creating Ġa Ġnew ĠCSV . ĠYou Ġcan Ġstill Ġopen Ġexisting Ġfile . ĊĠĠĠĠĠĠĠ ĠSTAT _ SAVE _ T GA _ SUCCESS FUL = Sprites heet Ġexported Ġsuccessfully . ĊĠĠĠĠĠĠĠ ĠSTAT _ LOAD _ SUCCESS FUL = File Ġloaded Ġsuccessfully . ĊĠĠĠĠĠĠĠ ĠERROR _ INTERNAL = Something Ġwent Ġwrong . ĊĠĠĠĠĠĠĠ ĠERROR _ PARSE _ FAIL = Parsing Ġfailed ĊĠĠĠĠĠĠĠ ĠSPR ITE _ DEF _ LOAD _ SUCCESS FUL = Sprite Ġdefinition Ġloaded . ĊĠĠĠĠĠĠĠ ĠSPR ITE _ AS SE MB LE _ SUCCESS FUL = Sprite Ġassemb led . ĊĠĠĠĠĠĠĠ ĠPROPER TIES _ GO _ HERE = Properties Ġwill Ġbe Ġshown Ġhere . ĊĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġprivate Ġvar Ġpanel Code Init Ġ= Ġtrue ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġsetup Ġapplication Ġproperties Ġ// ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlang . load ( String Reader ( translations )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpanel Code . font Ġ= ĠFont ( Font . MON O SP AC ED , ĠFont . PLAIN , Ġ 1 2 ) ĊĠĠĠĠĠĠĠ Ġpanel Code . text Ġ= Ġ""" T err ar um ĠSprite ĠAs sembler ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Copyright Ġ 2 0 1 9 ${ EM DASH } ĠCur ious Tor val d Ġ( min ja es ong ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| This Ġprogram Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| it Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU Ġ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 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| MER CHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| GNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| You Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| along Ġwith Ġthis Ġprogram . Ġ ĠIf Ġnot , Ġsee Ġ< https :// www . gnu . org / licenses />. ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Paste Ġyour ĠAnimation ĠDescription Ġhere Ġand Ġpress Ġ' Update '! """. trim Margin () ĊĠĠĠĠĠĠĠ Ġpanel Code . add Mouse Listener ( object Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Pressed ( e : ĠMouseEvent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( panel Code Init ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel Code Init Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel Code . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġpanel Animations List . model Ġ= ĠDefault ListModel () ĊĠĠĠĠĠĠĠ Ġpanel Body parts List . model Ġ= ĠDefault ListModel () ĊĠĠĠĠĠĠĠ Ġpanel Image Files List . model Ġ= ĠDefault ListModel () ĊĠĠĠĠĠĠĠ Ġpanel S ke letons List . model Ġ= ĠDefault ListModel () ĊĠĠĠĠĠĠĠ Ġpanel Transforms List . model Ġ= ĠDefault ListModel () ĊĠĠĠĠĠĠĠ Ġpanel Stat List . model Ġ= ĠDefault ListModel () ĊĊĠĠĠĠĠĠĠ Ġval Ġpanel Parts List Ġ= ĠJ Tabbed Pane ( J Tabbed Pane . TOP ) ĊĠĠĠĠĠĠĠ Ġpanel Parts List . add (" Animations ", ĠJ ScrollPane ( panel Animations List )) ĊĠĠĠĠĠĠĠ Ġpanel Parts List . add (" Body parts ", ĠJ ScrollPane ( panel Body parts List )) ĊĠĠĠĠĠĠĠ Ġpanel Parts List . add (" Images ", ĠJ ScrollPane ( panel Image Files List )) ĊĠĠĠĠĠĠĠ Ġpanel Parts List . add (" S ke letons ", ĠJ ScrollPane ( panel S ke letons List )) ĊĠĠĠĠĠĠĠ Ġpanel Parts List . add (" Transforms ", ĠJ ScrollPane ( panel Transforms List )) ĊĠĠĠĠĠĠĠ Ġpanel Parts List . add (" Stats ", ĠJ ScrollPane ( panel Stat List )) ĊĊĠĠĠĠĠĠĠ Ġpanel Properties . model Ġ= ĠDefault Tree Model ( Default Mutable TreeNode ( lang . getProperty (" PROPERTIES _ GO _ HERE "))) ĊĠĠĠĠĠĠĠ Ġval Ġpanel Data View Ġ= ĠJ Split Pane ( JS plit Pane . VERTICAL _ SPLIT , ĠJ ScrollPane ( panel Properties ), Ġpanel Parts List ) ĊĠĠĠĠĠĠĠ Ġpanel Data View . resize Weight Ġ= Ġ 0 . 4 ĊĊĠĠĠĠĠĠĠ Ġ// Ġto Ġdisable Ġtext Ġwrap ĊĠĠĠĠĠĠĠ Ġ// val Ġpanel Code No Wrap Ġ= ĠJPanel ( Border Layout ()) ĊĠĠĠĠĠĠĠ Ġ// panel Code No Wrap . add ( panel Code ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpanel Main Ġ= ĠJ Split Pane ( JS plit Pane . HORIZONTAL _ SPLIT , ĠJ ScrollPane ( panel Code ), Ġpanel Data View ) ĊĠĠĠĠĠĠĠ Ġpanel Main . resize Weight Ġ= Ġ 0 . 6 ĊĊĠĠĠĠĠĠĠ Ġval Ġmenu Ġ= ĠJ MenuBar () ĊĠĠĠĠĠĠĠ Ġmenu . add ( J Menu (" Update ")). add Mouse Listener ( object Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Pressed ( e : ĠMouseEvent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġad Properties Ġ= ĠAD Properties ( String Reader ( panel Code . text )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstat Bar . text Ġ= Ġlang . getProperty (" SPR ITE _ DEF _ LOAD _ SUCCESS FUL ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprop Root Ġ= ĠDefault Mutable TreeNode (" Properties ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġad Properties . forEach Ġ{ Ġs , Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbuild Ġtree Ġnode Ġfor Ġthe Ġproperties Ġdisplay ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprop Node Ġ= ĠDefault Mutable TreeNode ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop Root . add ( prop Node ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprop Node . add ( Default Mutable TreeNode ( it . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel Properties . model Ġ= ĠDefault Tree Model ( prop Root ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġclean Ġthe Ġdata Ġviews ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel Animations List . model Ġ= ĠDefault ListModel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel Body parts List . model Ġ= ĠDefault ListModel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel Image Files List . model Ġ= ĠDefault ListModel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel S ke letons List . model Ġ= ĠDefault ListModel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel Transforms List . model Ġ= ĠDefault ListModel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel Stat List . model Ġ= ĠDefault ListModel () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpopulate Ġanimations Ġview ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġad Properties . animations . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( panel Animations List . model Ġas ĠDefault ListModel ). addElement ("${ it . value }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpopulate Ġbody parts Ġview ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġad Properties . body part Joint s . to Sorted Map (). forEach Ġ{ Ġpart Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( panel Body parts List . model Ġas ĠDefault ListModel ). addElement ("${ part . key }: Ġ${ part . value }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpopulate Ġimage Ġfile Ġlist Ġview ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġad Properties . body part Files . forEach Ġ{ Ġpart Name Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( panel Image Files List . model Ġas ĠDefault ListModel ). addElement ( part Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpopulate Ġs ke letons Ġview ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġad Properties . s ke letons . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( panel S ke letons List . model Ġas ĠDefault ListModel ). addElement ("${ it . value }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpopulate Ġtransforms Ġview ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġad Properties . transforms . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( panel Transforms List . model Ġas ĠDefault ListModel ). addElement ("$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpopulate Ġstats ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( panel Stat List . model Ġas ĠDefault ListModel ). addElement (" Sprites heet Ġrows : Ġ${ ad Properties . rows }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( panel Stat List . model Ġas ĠDefault ListModel ). addElement (" Sprites heet Ġcolumns : Ġ${ ad Properties . cols }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( panel Stat List . model Ġas ĠDefault ListModel ). addElement (" Frame Ġsize : Ġ${ ad Properties . frame Width }, Ġ${ ad Properties . frame Height }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( panel Stat List . model Ġas ĠDefault ListModel ). addElement (" Origin Ġposition : Ġ${ ad Properties . origin }") ĊĊĊ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg dx Window . request Assembly Test ( ad Properties ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstat Bar . text Ġ= Ġlang . getProperty (" SPR ITE _ AS SE MB LE _ SUCCESS FUL ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcatch Ġ( fe h ler : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Error (" ERROR _ PARSE _ FAIL ", Ġfe h ler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfe h ler . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġmenu . add ( J Menu (" Zoom Ġ 1 x ")). add Mouse Listener ( object Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Pressed ( e : ĠMouseEvent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg dx Window . zoom Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġmenu . add ( J Menu (" 2 x ")). add Mouse Listener ( object Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Pressed ( e : ĠMouseEvent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg dx Window . zoom Ġ= Ġ 2 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġmenu . add ( J Menu (" 3 x ")). add Mouse Listener ( object Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Pressed ( e : ĠMouseEvent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg dx Window . zoom Ġ= Ġ 3 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġmenu . add ( J Menu (" 4 x ")). add Mouse Listener ( object Ġ: ĠMouse Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmouse Pressed ( e : ĠMouseEvent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg dx Window . zoom Ġ= Ġ 4 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġthis . layout Ġ= ĠBorderLayout () ĊĠĠĠĠĠĠĠ Ġthis . add ( menu , ĠBorderLayout . NORTH ) ĊĠĠĠĠĠĠĠ Ġthis . add ( panel Main , ĠBorderLayout . CENTER ) ĊĠĠĠĠĠĠĠ Ġthis . add ( stat Bar , ĠBorderLayout . SO UTH ) ĊĠĠĠĠĠĠĠ Ġthis . title Ġ= Ġ" T err ar um ĠSprite ĠAs sembler Ġand ĠViewer " ĊĠĠĠĠĠĠĠ Ġthis . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġthis . setSize ( 1 1 2 0 , Ġ 7 6 8 ) ĊĠĠĠĠĠĠĠ Ġthis . default Close Operation Ġ= ĠWindow Constants . EXIT _ ON _ CLOSE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Message ( message Key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠJOptionPane . show Option Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlang . getProperty ( message Key ), Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJOptionPane . DEFAULT _ OPTION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJOptionPane . INFORMATION _ MESSAGE , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" OK ", Ġ" Cancel "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Cancel " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Error ( message Key : ĠString , Ġcause : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ ĠJOptionPane . show Option Dialog ( null , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlang . getProperty ( message Key ) Ġ+ Ġ"\ n " Ġ+ Ġcause . toString (), Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJOptionPane . DEFAULT _ OPTION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJOptionPane . ERROR _ MESSAGE , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" OK ", Ġ" Cancel "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Cancel " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠSprite Assembler Preview : ĠGame () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbatch : ĠSprite Batch ĊĊĠĠĠ Ġvar Ġzoom Ġ= Ġ 1 f ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrender Texture : ĠTexture ĊĠĠĠ Ġprivate Ġvar Ġimage : ĠP ix map ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender Texture . dispose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield ?. dispose () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender Texture Ġ= ĠTexture ( field ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate () Ġ{ ĊĠĠĠĠĠĠĠ ĠG dx . graphics . setTitle (" Sprite ĠAs sembler ĠPreview ") ĊĠĠĠĠĠĠĠ Ġbatch Ġ= ĠSprite Batch () ĊĠĠĠĠĠĠĠ Ġrender Texture Ġ= ĠTexture ( 1 , Ġ 1 , ĠP ix map . Format . RGBA 8 8 8 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbg Col Ġ= ĠColor (. 6 2 f , Ġ. 7 9 f , Ġ 1 f , Ġ 1 f ) ĊĊĠĠĠ Ġprivate Ġvar Ġdo As semble Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġassemble Prop : ĠAD Properties ĊĊĠĠĠ Ġprivate Ġvar Ġdo Export Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġexport Path : ĠString ĊĊĠĠĠ Ġoverride Ġfun Ġrender () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( do As semble ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġassembly Ġrequires ĠGL Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo As semble Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassemble Image ( assemble Prop ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( do Export Ġ&& Ġimage Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Export Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP ix map IO 2 . write TG AH appy ( G dx . files . absolute ( export Path ), Ġimage , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġg dx Clear AndSet Blend ( bg Col ) ĊĊĊĠĠĠĠĠĠĠ Ġbatch . in Use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbatch . color Ġ= ĠColor . WHITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbatch . draw ( render Texture , Ġ 0 f , Ġ 0 f , Ġrender Texture . width Ġ* Ġzoom , Ġrender Texture . height Ġ* Ġzoom ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassemble Image ( prop : ĠAD Properties ) Ġ{ ĊĠĠĠĠĠĠĠ Ġimage Ġ= ĠAs semble Sheet Pixmap . from Assets Dir ( prop , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO Ġrename Ġto Ġrequest Assembly ĊĠĠĠ Ġfun Ġrequest Assembly Test ( prop : ĠAD Properties ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdo As semble Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġassemble Prop Ġ= Ġprop ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrequest Export ( path : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Export Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġexport Path Ġ= Ġpath ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresize ( width : ĠInt , Ġheight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . resize ( width , Ġheight ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġapp Config Ġ= ĠL wjgl 3 ApplicationConfiguration () ĊĠĠĠ Ġapp Config . setWindowedMode ( 1 0 2 4 , Ġ 1 0 2 4 ) ĊĠĠĠ Ġapp Config . set Idle FPS ( 5 ) ĊĠĠĠ Ġapp Config . setForeground FPS ( 5 ) ĊĠĠĠ Ġapp Config . setResizable ( false ) ĊĊĠĠĠ Ġval Ġg dx Window Ġ= ĠSprite Assembler Preview () ĊĊĠĠĠ ĠSprite Assembler App ( gdx Window ) ĊĠĠĠ ĠL wjgl 3 Application ( gdx Window , Ġapp Config ) Ċ }