package Ġx lite kt . cache . provider . config . obj čĊč Ċ import Ġio . ktor . utils . io . core . Byte Read Packet č Ċ import Ġio . ktor . utils . io . core . readInt č Ċ import Ġio . ktor . utils . io . core . read U Byte č Ċ import Ġio . ktor . utils . io . core . read U Short č Ċ import Ġx lite kt . cache . provider . Entry Type Provider č Ċ import Ġx lite kt . shared . buffer . readString Cp 1 2 5 2 Null Terminated čĊč Ċ /** čĊ Ġ* Ġ@ author ĠJ ordan ĠA br ah am čĊ Ġ*/ č Ċ class ĠObj Entry Type Provider Ġ: ĠEntry Type Provider < Obj Entry Type >() Ġ{ čĊčĊĠĠĠ Ġoverride Ġfun Ġload (): ĠMap < Int , ĠObj Entry Type > Ġ= Ġstore čĊĠĠĠĠĠĠĠ Ġ. index ( CONFIG _ INDEX ) čĊĠĠĠĠĠĠĠ Ġ. group ( OBJ _ CONFIG ) čĊĠĠĠĠĠĠĠ Ġ. files () čĊĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠByte Read Packet ( it . data ). load Entry Type ( Obj Entry Type ( it . id )) Ġ} čĊĠĠĠĠĠĠĠ Ġ. associate By ( Obj Entry Type :: id ) čĊčĊĠĠĠ Ġoverride Ġtail rec Ġfun ĠByte Read Packet . load Entry Type ( type : ĠObj Entry Type ): ĠObj Entry Type Ġ{ čĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġopcode Ġ= Ġread U Byte (). toInt ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ Ġassert Empty And Release (); Ġreturn Ġtype Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġtype . model Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġtype . name Ġ= Ġread String Cp 1 2 5 2 Null Terminated () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġtype . zoom 2 d Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> Ġtype . x an 2 d Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> Ġtype . yan 2 d Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 7 Ġ-> Ġtype . offset X 2 d Ġ= Ġread U Short (). toInt (). let Ġ{ Ġif Ġ( it Ġ> ĠShort . MAX _ VALUE ) Ġit Ġ- Ġ 6 5 5 3 6 Ġelse Ġit Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠ 8 Ġ-> Ġtype . offset Y 2 d Ġ= Ġread U Short (). toInt (). let Ġ{ Ġif Ġ( it Ġ> ĠShort . MAX _ VALUE ) Ġit Ġ- Ġ 6 5 5 3 6 Ġelse Ġit Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 Ġ-> Ġread String Cp 1 2 5 2 Null Terminated () Ġ// ĠUn used . čĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 Ġ-> Ġtype . is Stack able Ġ= Ġ 1 čĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 2 Ġ-> Ġtype . price Ġ= Ġread Int () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 6 Ġ-> Ġtype . is Members Only Ġ= Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 3 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype . male Model Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype . male Offset Ġ= Ġread U Byte (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 4 Ġ-> Ġtype . male Model 1 Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype . female Model Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype . female Offset Ġ= Ġread U Byte (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 6 Ġ-> Ġtype . female Model 1 Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 3 0 .. 3 4 Ġ-> Ġtype . ground Actions Ġ= Ġtype . ground Actions . to Mutable List (). apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ opcode Ġ- Ġ 3 0 ] Ġ= Ġread String Cp 1 2 5 2 Null Terminated (). let Ġ{ Ġif Ġ( it . equals (" Hidden ", Ġtrue )) Ġ" null " Ġelse Ġit Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 3 5 .. 3 9 Ġ-> Ġtype . inventory Actions Ġ= Ġtype . inventory Actions . to Mutable List (). apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ opcode Ġ- Ġ 3 5 ] Ġ= Ġread String Cp 1 2 5 2 Null Terminated () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 0 Ġ-> Ġrepeat ( read U Byte (). toInt ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiscard ( 4 ) Ġ// ĠDis card Ġre color . čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 1 Ġ-> Ġrepeat ( read U Byte (). toInt ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiscard ( 4 ) Ġ// ĠDis card Ġre texture . čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 2 Ġ-> Ġtype . shift Click Index Ġ= Ġread Byte (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 6 5 Ġ-> Ġtype . is Tr ad able Ġ= Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠ 7 8 Ġ-> Ġtype . male Model 2 Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 7 9 Ġ-> Ġtype . female Model 2 Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 0 Ġ-> Ġtype . male Head Model Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 1 Ġ-> Ġtype . female Head Model Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 2 Ġ-> Ġtype . male Head Model 2 Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 3 Ġ-> Ġtype . female Head Model 2 Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 4 Ġ-> Ġdiscard ( 2 ) Ġ// ĠUn used . čĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 5 Ġ-> Ġtype . z an 2 d Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 7 Ġ-> Ġtype . note Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 8 Ġ-> Ġtype . note Template Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġin Ġ 1 0 0 .. 1 0 9 Ġ-> Ġdiscard ( 4 ) Ġ// ĠDis card Ġco unto bj / count co . čĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 0 Ġ-> Ġtype . resize X Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 1 Ġ-> Ġtype . resize Y Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 2 Ġ-> Ġtype . resize Z Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 3 Ġ-> Ġtype . ambient Ġ= Ġread Byte (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 4 Ġ-> Ġtype . contrast Ġ= Ġread Byte () Ġ* Ġ 5 čĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 5 Ġ-> Ġtype . team Ġ= Ġread U Byte (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 3 9 Ġ-> Ġtype . un not ed Id Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 4 0 Ġ-> Ġtype . not ed Id Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 4 8 Ġ-> Ġtype . placeholder Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 4 9 Ġ-> Ġtype . placeholder Template Ġ= Ġread U Short (). toInt () čĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 4 9 Ġ-> Ġtype . params Ġ= Ġread String Int Parameters () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Missing Ġopcode Ġ$ opcode .") čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġload Entry Type ( type ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġoverride Ġfun Ġpost Load Entry Type ( type : ĠObj Entry Type ) Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ( type . note Template Ġ!= Ġ- 1 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġentries [ type . note Template ]?. let Ġ{ Ġnote Template Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries [ type . note ]?. let Ġ{ Ġnote Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype . to Note ( note Template , Ġnote ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( type . not ed Id Ġ!= Ġ- 1 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġentries [ type . not ed Id ]?. let Ġ{ Ġnoted Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries [ type . un not ed Id ]?. let Ġ{ Ġun not ed Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype . to Un not ed ( not ed , Ġun not ed ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġif Ġ( type . placeholder Template Ġ!= Ġ- 1 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġentries [ type . placeholder Template ]?. let Ġ{ Ġplaceholder Template Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentries [ type . placeholder ]?. let Ġ{ Ġplaceholder Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype . to Placeholder ( placeholder Template , Ġplaceholder ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠObj Entry Type . to Note ( note Template : ĠObj Entry Type , Ġnote : ĠObj Entry Type ) Ġ{ čĊĠĠĠĠĠĠĠ Ġmodel Ġ= Ġnote Template . model čĊĠĠĠĠĠĠĠ Ġzoom 2 d Ġ= Ġnote Template . zoom 2 d čĊĠĠĠĠĠĠĠ Ġx an 2 d Ġ= Ġnote Template . x an 2 d čĊĠĠĠĠĠĠĠ Ġy an 2 d Ġ= Ġnote Template . yan 2 d čĊĠĠĠĠĠĠĠ Ġz an 2 d Ġ= Ġnote Template . z an 2 d čĊĠĠĠĠĠĠĠ Ġoffset X 2 d Ġ= Ġnote Template . offset X 2 d čĊĠĠĠĠĠĠĠ Ġoffset Y 2 d Ġ= Ġnote Template . offset Y 2 d čĊĠĠĠĠĠĠĠ Ġ// ĠSkip Ġre color . čĊĠĠĠĠĠĠĠ Ġ// ĠSkip Ġre texture . čĊĠĠĠĠĠĠĠ Ġname Ġ= Ġnote . name čĊĠĠĠĠĠĠĠ Ġis Members Only Ġ= Ġnote . is Members Only čĊĠĠĠĠĠĠĠ Ġprice Ġ= Ġnote . price čĊĠĠĠĠĠĠĠ Ġis Stack able Ġ= Ġ 1 čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠObj Entry Type . to Un not ed ( not ed : ĠObj Entry Type , Ġun not ed : ĠObj Entry Type ) Ġ{ čĊĠĠĠĠĠĠĠ Ġmodel Ġ= Ġnoted . model čĊĠĠĠĠĠĠĠ Ġzoom 2 d Ġ= Ġnoted . zoom 2 d čĊĠĠĠĠĠĠĠ Ġx an 2 d Ġ= Ġnoted . x an 2 d čĊĠĠĠĠĠĠĠ Ġy an 2 d Ġ= Ġnoted . yan 2 d čĊĠĠĠĠĠĠĠ Ġz an 2 d Ġ= Ġnoted . z an 2 d čĊĠĠĠĠĠĠĠ Ġoffset X 2 d Ġ= Ġnoted . offset X 2 d čĊĠĠĠĠĠĠĠ Ġoffset Y 2 d Ġ= Ġnoted . offset Y 2 d čĊĠĠĠĠĠĠĠ Ġ// ĠSkip Ġre color . čĊĠĠĠĠĠĠĠ Ġ// ĠSkip Ġre texture . čĊĠĠĠĠĠĠĠ Ġname Ġ= Ġun not ed . name čĊĠĠĠĠĠĠĠ Ġis Members Only Ġ= Ġun not ed . is Members Only čĊĠĠĠĠĠĠĠ Ġis Stack able Ġ= Ġun not ed . is Stack able čĊĠĠĠĠĠĠĠ Ġmale Model Ġ= Ġun not ed . male Model čĊĠĠĠĠĠĠĠ Ġmale Model 1 Ġ= Ġun not ed . male Model 1 čĊĠĠĠĠĠĠĠ Ġmale Model 2 Ġ= Ġun not ed . male Model 2 čĊĠĠĠĠĠĠĠ Ġfemale Model Ġ= Ġun not ed . female Model čĊĠĠĠĠĠĠĠ Ġfemale Model 1 Ġ= Ġun not ed . female Model 1 čĊĠĠĠĠĠĠĠ Ġfemale Model 2 Ġ= Ġun not ed . female Model 2 čĊĠĠĠĠĠĠĠ Ġmale Head Model Ġ= Ġun not ed . male Head Model čĊĠĠĠĠĠĠĠ Ġmale Head Model 2 Ġ= Ġun not ed . male Head Model 2 čĊĠĠĠĠĠĠĠ Ġfemale Head Model Ġ= Ġun not ed . female Head Model čĊĠĠĠĠĠĠĠ Ġfemale Head Model 2 Ġ= Ġun not ed . female Head Model 2 čĊĠĠĠĠĠĠĠ Ġteam Ġ= Ġun not ed . team čĊĠĠĠĠĠĠĠ Ġground Actions Ġ= Ġun not ed . ground Actions čĊĠĠĠĠĠĠĠ Ġinventory Actions Ġ= Ġbuild List Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( 3 ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( un not ed . inventory Actions [ it ]) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd (" Discard ") čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġprice Ġ= Ġ 0 čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġprivate Ġfun ĠObj Entry Type . to Placeholder ( placeholder Template : ĠObj Entry Type , Ġplaceholder : ĠObj Entry Type ) Ġ{ čĊĠĠĠĠĠĠĠ Ġmodel Ġ= Ġplaceholder Template . model čĊĠĠĠĠĠĠĠ Ġzoom 2 d Ġ= Ġplaceholder Template . zoom 2 d čĊĠĠĠĠĠĠĠ Ġx an 2 d Ġ= Ġplaceholder Template . x an 2 d čĊĠĠĠĠĠĠĠ Ġy an 2 d Ġ= Ġplaceholder Template . yan 2 d čĊĠĠĠĠĠĠĠ Ġz an 2 d Ġ= Ġplaceholder Template . z an 2 d čĊĠĠĠĠĠĠĠ Ġoffset X 2 d Ġ= Ġplaceholder Template . offset X 2 d čĊĠĠĠĠĠĠĠ Ġoffset Y 2 d Ġ= Ġplaceholder Template . offset Y 2 d čĊĠĠĠĠĠĠĠ Ġ// ĠSkip Ġre color . čĊĠĠĠĠĠĠĠ Ġ// ĠSkip Ġre texture . čĊĠĠĠĠĠĠĠ Ġis Stack able Ġ= Ġplaceholder Template . is Stack able čĊĠĠĠĠĠĠĠ Ġname Ġ= Ġplaceholder . name čĊĠĠĠĠĠĠĠ Ġprice Ġ= Ġ 0 čĊĠĠĠĠĠĠĠ Ġis Members Only Ġ= Ġfalse čĊĠĠĠĠĠĠĠ Ġis Tr ad able Ġ= Ġfalse čĊĠĠĠ Ġ} č Ċ } čĊ