package Ġrs . d us k . cache . config . decoder Ċ Ċ import Ġrs . d us k . cache . Cache Ċ import Ġrs . d us k . cache . Configs . QUEST S Ċ import Ġrs . d us k . cache . config . Config Decoder Ċ import Ġrs . d us k . cache . config . data . Quest Definition Ċ import Ġrs . d us k . core . network . buffer . read . Reader Ċ /** Ċ Ġ* Ġ@ author ĠG reg ĠH ib ber d Ġ< greg @ greg hib ber d . com > Ċ Ġ* Ġ@ since ĠApril Ġ 0 8 , Ġ 2 0 2 0 Ċ Ġ*/ Ċ class ĠQuest Decoder ( cache : ĠCache ) Ġ: ĠConfig Decoder < Quest Definition >( cache , ĠQ UEST S ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcreate () Ġ= ĠQuest Definition () ĊĊĠĠĠ Ġoverride Ġfun ĠQuest Definition . read ( opcode : ĠInt , Ġbuffer : ĠReader ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( opcode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġa String 2 2 1 1 Ġ= Ġbuffer . read Prefix edString () ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġa String 2 2 0 2 Ġ= Ġbuffer . read Prefix edString () ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray Array 2 2 0 8 Ġ= ĠArray ( length ) Ġ{ ĠInt Array ( 3 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( length ) Ġ{ Ġcount Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray Array 2 2 0 8 ! ![ count ][ 0 ] Ġ= Ġbuffer . read Short () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray Array 2 2 0 8 ! ![ count ][ 1 ] Ġ= Ġbuffer . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray Array 2 2 0 8 ! ![ count ][ 2 ] Ġ= Ġbuffer . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray Array 2 1 9 3 Ġ= ĠArray ( length ) Ġ{ ĠInt Array ( 3 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( length ) Ġ{ Ġcount Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray Array 2 1 9 3 ! ![ count ][ 0 ] Ġ= Ġbuffer . read Short () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray Array 2 1 9 3 ! ![ count ][ 1 ] Ġ= Ġbuffer . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray Array 2 1 9 3 ! ![ count ][ 2 ] Ġ= Ġbuffer . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 5 Ġ-> Ġbuffer . read Short () ĊĠĠĠĠĠĠĠĠĠĠĠĠ 6 Ġ-> Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠ 7 Ġ-> Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠ 9 Ġ-> Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 2 0 9 Ġ= ĠInt Array ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( length ) Ġ{ Ġcount Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 2 0 9 ! ![ count ] Ġ= Ġbuffer . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 2 Ġ-> Ġbuffer . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 3 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 2 0 7 Ġ= ĠInt Array ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( length ) Ġ{ Ġcount Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 2 0 7 ! ![ count ] Ġ= Ġbuffer . read Short () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray Array 2 2 1 0 Ġ= ĠArray ( length ) Ġ{ ĠInt Array ( 2 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( length ) Ġ{ Ġcount Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray Array 2 2 1 0 ! ![ count ][ 0 ] Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray Array 2 2 1 0 ! ![ count ][ 1 ] Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 5 Ġ-> Ġbuffer . read Short () ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 7 Ġ-> Ġan Int 2 1 8 8 Ġ= Ġbuffer . read Short () ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 8 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa String Array 2 2 0 1 Ġ= ĠarrayOf Null s ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 2 0 0 Ġ= ĠInt Array ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 1 9 9 Ġ= ĠInt Array ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 1 9 1 Ġ= ĠInt Array ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( length ) Ġ{ Ġcount Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 2 0 0 ! ![ count ] Ġ= Ġbuffer . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 1 9 1 ! ![ count ] Ġ= Ġbuffer . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 1 9 9 ! ![ count ] Ġ= Ġbuffer . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa String Array 2 2 0 1 ! ![ count ] Ġ= Ġbuffer . readString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 9 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġbuffer . read Unsigned Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 2 0 4 Ġ= ĠInt Array ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa String Array 2 1 9 8 Ġ= ĠarrayOf Null s ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 1 9 5 Ġ= ĠInt Array ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 1 9 0 Ġ= ĠInt Array ( length ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( length ) Ġ{ Ġcount Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 2 0 4 ! ![ count ] Ġ= Ġbuffer . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 1 9 5 ! ![ count ] Ġ= Ġbuffer . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġan IntArray 2 1 9 0 ! ![ count ] Ġ= Ġbuffer . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa String Array 2 1 9 8 ! ![ count ] Ġ= Ġbuffer . readString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 4 9 Ġ-> Ġread Parameters ( buffer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠQuest Definition . change Values () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( a String 2 2 0 2 Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa String 2 2 0 2 Ġ= Ġa String 2 2 1 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠReader . read Prefix edString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhead : ĠByte Ġ= Ġbuffer . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( head . toInt () Ġ== Ġ 0 ) Ġ{ Ġ" Bad Ġversion Ġnumber Ġin Ġg j str 2 " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi : ĠInt Ġ= Ġbuffer . position () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( buffer . get () Ġ!= Ġ 0 . to Byte ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġempty Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart : ĠInt Ġ= Ġbuffer . position () Ġ+ Ġ- i Ġ+ Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( start Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcs Ġ= ĠChar Array ( start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( start ) Ġ{ Ġcount Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcs [ index ++] Ġ= Ġbyte To Char ( buffer . get ( count Ġ+ Ġi )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠString ( cs , Ġ 0 , Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }