package Ġgg . r sm od . plugins . content . objs . deposit box Ċ Ċ import Ġcom . google . common . collect . Immutable Set Ċ import Ġgg . r sm od . game . model . attr . INTER ACT ING _ ITEM _ SLOT Ċ import Ġgg . r sm od . game . model . attr . OTHER _ ITEM _ SLOT _ ATTR Ċ Ċ val ĠDE POSIT _ INTERFACE _ ID Ġ= Ġ 1 9 2 Ċ val ĠDE POSIT _ EQ U IP MENT _ S FX Ġ= Ġ 2 2 3 8 Ċ Ċ val ĠDE POSIT _ BOX ES Ġ= ĠImmutable Set . of ( Objs . BANK _ DE POSIT _ BOX , ĠOb js . BANK _ DE POSIT _ BOX _ 2 5 9 3 7 , ĠOb js . BANK _ DE POSIT _ BOX _ 2 6 2 5 4 , ĊĠĠĠĠĠĠĠ ĠOb js . BANK _ DE POSIT _ BOX _ 2 9 1 0 3 , ĠOb js . BANK _ DE POSIT _ BOX _ 2 9 1 0 4 , ĠOb js . BANK _ DE POSIT _ BOX _ 2 9 1 0 5 , ĠOb js . BANK _ DE POSIT _ BOX _ 2 9 1 0 6 , ĊĠĠĠĠĠĠĠ ĠOb js . BANK _ DE POSIT _ BOX _ 2 9 3 2 7 , ĠOb js . BANK _ DE POSIT _ BOX _ 3 0 2 6 8 , ĠOb js . BANK _ DE POSIT _ BOX _ 3 1 7 2 6 , ĠOb js . BANK _ DE POSIT _ BOX _ 3 2 6 6 5 , ĊĠĠĠĠĠĠĠ ĠOb js . BANK _ DE POSIT _ BOX _ 3 4 3 4 4 ) Ċ Ċ DE POSIT _ BOX ES . forEach Ġ{ Ġbox Ġ-> ĊĠĠĠ Ġon _ obj _ option ( obj Ġ= Ġbox , Ġoption Ġ= Ġ" deposit ") Ġ{ ĊĠĠĠĠĠĠĠ Ġopen _ deposit _ box ( player ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ on _ interface _ close ( DE POSIT _ INTERFACE _ ID ) Ġ{ ĊĠĠĠ Ġclose _ deposit _ box ( player ) Ċ } Ċ Ċ on _ button ( interface Id Ġ= ĠDE POSIT _ INTERFACE _ ID , Ġcomponent Ġ= Ġ 2 ) Ġ{ ĊĠĠĠ Ġval Ġslot Ġ= Ġplayer . get Interact ing Slot () ĊĠĠĠ Ġval Ġopt Ġ= Ġplayer . get Interact ing Option () ĊĠĠĠ Ġwhen Ġ( opt ) Ġ{ ĊĠĠĠĠĠĠĠĠ 2 Ġ-> Ġdeposit _ item ( player , Ġslot , Ġ 1 ) ĊĠĠĠĠĠĠĠĠ 3 Ġ-> Ġdeposit _ item ( player , Ġslot , Ġ 5 ) ĊĠĠĠĠĠĠĠĠ 4 Ġ-> Ġdeposit _ item ( player , Ġslot , Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠ 5 Ġ-> Ġdeposit _ item ( player , Ġslot , ĠInt . MAX _ VALUE ) ĊĠĠĠĠĠĠĠĠ 1 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . inventory [ slot ]?. let Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer . world . send Exam ine ( player , Ġitem . id , ĠExam ine EntityType . ITEM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ on _ button ( interface Id Ġ= ĠDE POSIT _ INTERFACE _ ID , Ġcomponent Ġ= Ġ 4 ) Ġ{ ĊĠĠĠ Ġval Ġplayer Ġ= Ġplayer ĊĠĠĠ Ġdeposit _ all ( player , Ġplayer . inventory ) Ċ } Ċ Ċ on _ button ( interface Id Ġ= ĠDE POSIT _ INTERFACE _ ID , Ġcomponent Ġ= Ġ 6 ) Ġ{ ĊĠĠĠ Ġval Ġplayer Ġ= Ġplayer ĊĠĠĠ Ġdeposit _ all ( player , Ġplayer . equipment , Ġsound Ġ= ĠDE POSIT _ EQ U IP MENT _ S FX ) Ċ } Ċ Ċ on _ component _ to _ component _ item _ swap ( ĊĠĠĠĠĠĠĠ Ġsrc Interface Id Ġ= ĠDE POSIT _ INTERFACE _ ID , Ġsrc Component Ġ= Ġ 2 , ĊĠĠĠĠĠĠĠ Ġdst Interface Id Ġ= ĠDE POSIT _ INTERFACE _ ID , Ġdst Component Ġ= Ġ 2 ) Ġ{ ĊĠĠĠ Ġval Ġsrc Slot Ġ= Ġplayer . attr [ INTER ACT ING _ ITEM _ SLOT ] !! ĊĠĠĠ Ġval Ġdst Slot Ġ= Ġplayer . attr [ OTHER _ ITEM _ SLOT _ ATTR ] !! ĊĊĠĠĠ Ġval Ġcontainer Ġ= Ġplayer . inventory ĊĊĠĠĠ Ġif Ġ( src Slot Ġin Ġ 0 Ġuntil Ġcontainer . capacity Ġ&& Ġdst Slot Ġin Ġ 0 Ġuntil Ġcontainer . capacity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer . swap ( src Slot , Ġdst Slot ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSync Ġthe Ġcontainer Ġon Ġthe Ġclient ĊĠĠĠĠĠĠĠ Ġcontainer . dirty Ġ= Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġopen _ deposit _ box ( p : ĠPlayer ) Ġ{ ĊĠĠĠ Ġp . set Interface Under lay ( color Ġ= Ġ- 1 , Ġtransparency Ġ= Ġ- 1 ) ĊĠĠĠ Ġp . open Interface ( interface Id Ġ= ĠDE POSIT _ INTERFACE _ ID , Ġdest Ġ= ĠInterface Destination . MAIN _ SCREEN ) ĊĠĠĠ Ġp . set Interface Events ( interface Id Ġ= ĠDE POSIT _ INTERFACE _ ID , Ġcomponent Ġ= Ġ 2 , Ġrange Ġ= Ġ 0 .. 2 7 , Ġsetting Ġ= Ġ 1 1 8 0 7 3 4 ) ĊĠĠĠ Ġp . close Interface ( Interface Destination . IN VENT ORY ) ĊĠĠĠ Ġp . close Interface ( Interface Destination . EQ U IP MENT ) Ċ } Ċ Ċ fun Ġclose _ deposit _ box ( p : ĠPlayer ) Ġ{ ĊĠĠĠ Ġp . open Interface ( Interface Destination . IN VENT ORY ) ĊĠĠĠ Ġp . open Interface ( Interface Destination . EQ U IP MENT ) Ċ } Ċ Ċ fun Ġdeposit _ item ( p : ĠPlayer , Ġslot : ĠInt , Ġamt : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġitem Ġ= Ġp . inventory [ slot ] Ġ?: Ġreturn ĊĠĠĠ Ġval Ġamount Ġ= ĠMath . min ( p . inventory . getItem Count ( item . id ), Ġamt ) ĊĊĠĠĠ Ġval Ġadd Ġ= Ġp . bank . add ( item . id , Ġamount , Ġass ure Full Insertion Ġ= Ġfalse ) ĊĠĠĠ Ġif Ġ( add . completed Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġp . message (" Bank Ġfull .") ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġremove Ġ= Ġp . inventory . remove ( item . id , Ġadd . completed , Ġass ure Full Removal Ġ= Ġtrue ) ĊĠĠĠ Ġif Ġ( remove . has Failed ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd . items . forEach Ġ{ Ġp . bank . remove ( it . item , Ġbegin Slot Ġ= Ġit . slot ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġdeposit _ all ( p : ĠPlayer , Ġcontainer : ĠItem Container , Ġsound : ĠInt Ġ= Ġ- 1 ) Ġ{ ĊĠĠĠ Ġvar Ġany Ġ= Ġfalse ĊĊĠĠĠ Ġif Ġ( container . isEmpty ) Ġ{ ĊĠĠĠĠĠĠĠ Ġp . message (" You Ġhave Ġnothing Ġto Ġdeposit .") ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcontainer . filter NotNull (). forEach Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġadd Ġ= Ġp . bank . add ( item , Ġass ure Full Insertion Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġif Ġ( add . completed Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġremove Ġ= Ġcontainer . remove ( item . id , Ġadd . completed , Ġass ure Full Removal Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġif Ġ( remove . has Failed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd . items . forEach Ġ{ Ġp . bank . remove ( it . item , Ġbegin Slot Ġ= Ġit . slot ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġany Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ(! any ) Ġ{ ĊĠĠĠĠĠĠĠ Ġp . message (" Bank Ġfull .") ĊĠĠĠ Ġ} Ġelse Ġif Ġ( sound Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġp . play Sound ( sound ) ĊĠĠĠ Ġ} Ċ }