package Ġcom . mat he ws achin . f ate grand autom ata . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġcom . mat he ws achin . f ate grand autom ata . R Ċ import Ġcom . mat he ws achin . f ate grand autom ata . Storage Dirs Ċ import Ġcom . mat he ws achin . f ate grand autom ata . accessibility . Script Runner User Interface Ċ import Ġcom . mat he ws achin . f ate grand autom ata . accessibility . show Overlay Dialog Ċ import Ġcom . mat he ws achin . f ate grand autom ata . di . script . Script Component Builder Ċ import Ġcom . mat he ws achin . f ate grand autom ata . di . script . Script EntryPoint Ċ import Ġcom . mat he ws achin . f ate grand autom ata . scripts . Support Image Maker Exit Exception Ċ import Ġcom . mat he ws achin . f ate grand autom ata . scripts . enums . Script Mode Enum Ċ import Ġcom . mat he ws achin . f ate grand autom ata . scripts . prefs . IP references Ċ import Ġcom . mat he ws achin . f ate grand autom ata . ui . support _ img _ nam er . show Support Image N amer Ċ import Ġcom . mat he ws achin . lib autom ata . EntryPoint Ċ import Ġcom . mat he ws achin . lib autom ata . IS creen shot Service Ċ import Ġdagger . h ilt . Entry Points Ċ import Ġdagger . h ilt . android . scopes . Service Scoped Ċ import Ġmu . Kotlin Logging Ċ import Ġjavax . inject . Inject Ċ import Ġkotlin . time . seconds Ċ Ċ private Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{} Ċ Ċ @ Service Scoped Ċ class ĠScript Manager Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġval Ġuser Interface : ĠScript Runner User Interface , ĊĠĠĠ Ġval Ġimage Loader : ĠImage Loader , ĊĠĠĠ Ġval Ġpreferences : ĠIP references , ĊĠĠĠ Ġval Ġstorage Dirs : ĠStorage Dirs Ċ ) Ġ{ ĊĠĠĠ Ġvar Ġscript State : ĠScript State Ġ= ĠScript State . Stopped ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġprivate Ġfun Ġon Script Exit ( e : ĠException ?) Ġ= Ġhandler . post Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Interface . set Play Icon () ĊĠĠĠĠĠĠĠ Ġuser Interface . is Pause Button Vis ib ile Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġimage Loader . clear Support Cache () ĊĊĠĠĠĠĠĠĠ Ġscript State . let Ġ{ Ġprev State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( prev State Ġis ĠScript State . Started Ġ&& Ġprev State . recording Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrecord Ġfor Ġ 2 Ġseconds Ġmore Ġto Ġshow Ġthings Ġlike Ġerror Ġmessages ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Interface . post Delayed ( 2 . seconds ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev State . recording . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġscript State Ġ= ĠScript State . Stopped ĊĊĠĠĠĠĠĠĠ Ġif Ġ( e Ġis ĠSupport Image Maker Exit Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Support Image N amer ( user Interface , Ġstorage Dirs ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget EntryPoint ( entry Point : ĠScript EntryPoint ): ĠEntry Point Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( preferences . script Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScript Mode Enum . Lot tery Ġ-> Ġentry Point . lot tery () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScript Mode Enum . Friend G acha Ġ-> Ġentry Point . friend G acha () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScript Mode Enum . Support Image Maker Ġ-> Ġentry Point . support Image Maker () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScript Mode Enum . Gift Box Ġ-> Ġentry Point . gift Box () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġentry Point . battle () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġhandler Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpause Script () Ġ{ ĊĠĠĠĠĠĠĠ Ġscript State . let Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġis ĠScript State . Started ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! state . paused ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Interface . set Resume Icon () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . entry Point . exit Manager . pause () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . paused Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresume Script () Ġ{ ĊĠĠĠĠĠĠĠ Ġscript State . let Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġis ĠScript State . Started ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state . paused ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Interface . set Pause Icon () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . entry Point . exit Manager . resume () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . paused Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart Script ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġscreenshot Service : ĠIS creen shot Service , ĊĠĠĠĠĠĠĠ Ġcomponent Builder : ĠScript Component Builder ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( script State Ġis ĠScript State . Started ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġscript Component Ġ= Ġcomponent Builder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. screenshot Service ( screenshot Service ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġh ilt EntryPoint Ġ= ĠEntry Points . get ( script Component , ĠScript EntryPoint :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġentry Point Provider Ġ= Ġ{ Ġget EntryPoint ( h ilt EntryPoint ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( preferences . script Mode Ġ== ĠScript Mode Enum . Battle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauto Skill Picker ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun EntryPoint ( screenshot Service , Ġentry Point Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġrun EntryPoint ( screenshot Service , Ġentry Point Provider ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop Script () Ġ{ ĊĠĠĠĠĠĠĠ Ġscript State . let Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( state Ġis ĠScript State . Started ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . entry Point . stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrun EntryPoint ( screenshot Service : ĠIS creen shot Service , Ġentry Point Provider : Ġ() Ġ-> ĠEntry Point ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( script State Ġis ĠScript State . Started ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrecording Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( preferences . record Screen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscreenshot Service . start Recording () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġuser Interface . Service . getString ( R . string . cannot _ start _ recording ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ( msg , Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( user Interface . Service , Ġmsg , ĠToast . LENGTH _ SHORT ). show () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġentry Point Ġ= Ġentry Point Provider () ĊĊĠĠĠĠĠĠĠ Ġscript State Ġ= ĠScript State . Started ( entry Point , Ġrecording ) ĊĊĠĠĠĠĠĠĠ Ġentry Point . script Exit Listener Ġ= Ġ{ Ġon Script Exit ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġuser Interface . set Stop Icon () ĊĠĠĠĠĠĠĠ Ġif Ġ( preferences . can Pause Script ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Interface . set Pause Icon () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Interface . is Pause Button Vis ib ile Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( recording Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Interface . show As Recording () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġentry Point . run () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġauto Skill Picker ( context : ĠContext , Ġentry Point Runner : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġselected Ġ= Ġpreferences . selected Auto Skill Config ĊĠĠĠĠĠĠĠ Ġval Ġauto Skill Items Ġ= Ġpreferences . auto Skill Preferences ĊĠĠĠĠĠĠĠ Ġval Ġinitial SelectedIndex Ġ= Ġauto Skill Items . indexOf First Ġ{ Ġit . id Ġ== Ġselected . id Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠDialog Interface . set Ok Btn Enabled ( enable : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠAlertDialog ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Button ( AlertDialog . BUTTON _ POSITIVE )?. isEnabled Ġ= Ġenable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġshow Overlay Dialog ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( R . string . select _ auto _ skill _ config ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( auto Skill Items . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Single Choice Items ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Skill Items . map Ġ{ Ġit . name Ġ}. to Typed Array (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial SelectedIndex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġdialog , Ġchoice Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġauto Skill Items [ choice ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . set Ok Btn Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġset Message ( R . string . no _ auto _ skill _ configs ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( android . R . string . cancel , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . selected Auto Skill Config Ġ= Ġselected ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry Point Runner () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. set Ok Btn Enabled ( initial SelectedIndex Ġ!= Ġ- 1 ) ĊĠĠĠ Ġ} Ċ }