package Ġrs . d us k . engine . entity . definition Ċ Ċ import Ġorg . k oin . dsl . module Ċ import Ġrs . d us k . cache . Definition Ċ import Ġrs . d us k . cache . Definition Decoder Ċ import Ġrs . d us k . cache . definition . Extra Ċ import Ġrs . d us k . engine . entity . definition . load .* Ċ Ċ /** Ċ Ġ* ĠStores Ġadditional Ġstatic Ġinformation Ġabout Ġan Ġentity Ġas Ġwell Ġas Ġa Ġunique Ġstring Ġidentifier Ċ Ġ*/ Ċ interface ĠDefinitions Decoder < T , ĠD Ġ: ĠDefinition Decoder < T >> Ġwhere ĠT Ġ: ĠDefinition , ĠT Ġ: ĠExtra Ġ{ ĊĠĠĠ Ġval Ġdecoder : ĠD ĊĠĠĠ Ġval Ġextras : ĠMap < String , ĠMap < String , ĠAny >> ĊĠĠĠ Ġval Ġnames : ĠMap < Int , ĠString > ĊĊĠĠĠ Ġval Ġsize : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdecoder . size ĊĊĠĠĠ Ġval Ġindices : ĠInt Range ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdecoder . indices ĊĊĠĠĠ Ġfun Ġget OrNull ( id : ĠInt ) Ġ= Ġdecoder . get OrNull ( id )?. apply Ġ{ ĊĠĠĠĠĠĠĠ Ġapply Extras ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget ( id : ĠInt ) Ġ= Ġdecoder . get ( id ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġapply Extras ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġapply Extras ( definition : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġnames [ definition . id ] Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġextras [ name ] Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġdefinition . extras Ġ= Ġmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget OrNull ( name : ĠString ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġextras [ name ] Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġmap [" id "] Ġas ? ĠInt Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġdefinition Ġ= Ġdecoder . get OrNull ( id ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġdefinition . extras Ġ= Ġmap ĊĠĠĠĠĠĠĠ Ġreturn Ġdefinition ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget ( name : ĠString ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġextras [ name ] ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġmap ?. get (" id ") Ġas ? ĠInt Ġ?: Ġ- 1 ĊĠĠĠĠĠĠĠ Ġval Ġdefinition Ġ= Ġdecoder . get ( id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( map Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefinition . extras Ġ= Ġmap ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdefinition ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetName OrNull ( id : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnames [ id ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetName ( id : ĠInt ): ĠString Ġ= ĠgetName OrNull ( id ) Ġ?: Ġ"" ĊĊĠĠĠ Ġfun ĠgetId OrNull ( name : ĠString ): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġextras [ name ]?. get (" id ") Ġas ? ĠInt ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetId ( name : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetId OrNull ( name ) Ġ?: Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtag Regex Ġ= Ġ"< .* ?> ". to Regex () ĊĊĠĠĠĠĠĠĠ Ġfun Ġremove Tags ( text : ĠString ) Ġ= Ġtext . replace ( tag Regex , Ġ"") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġchars Ġ= Ġ"[ \" ', ()] ". to Regex () ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġunderscore Chars Ġ= Ġ"[ Ġ/ ] ". to Regex () ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġremove Ġex clam ations ĊĠĠĠĠĠĠĠ Ġfun Ġto Identifier ( name : ĠString ) Ġ= Ġremove Tags ( name . toLowerCase (). replace ( underscore Chars , Ġ"_ ")). replace ( chars , Ġ""). replace (" &# 3 9 ;", Ġ"") ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġdetails Module Ġ= Ġmodule Ġ{ ĊĠĠĠ Ġsingle ( createdAt Start Ġ= Ġtrue ) Ġ{ ĠObject Definition Loader ( get (), Ġget ()). run ( getProperty (" object Definitions Path ")) Ġ} ĊĠĠĠ Ġsingle ( createdAt Start Ġ= Ġtrue ) Ġ{ ĠN PC Definition Loader ( get (), Ġget ()). run ( getProperty (" npc Definitions Path ")) Ġ} ĊĠĠĠ Ġsingle ( createdAt Start Ġ= Ġtrue ) Ġ{ ĠItem Definition Loader ( get (), Ġget ()). run ( getProperty (" item Definitions Path ")) Ġ} ĊĠĠĠ Ġsingle ( createdAt Start Ġ= Ġtrue ) Ġ{ ĠAnimation Definition Loader ( get (), Ġget ()). run ( getProperty (" animation Definitions Path ")) Ġ} ĊĠĠĠ Ġsingle ( createdAt Start Ġ= Ġtrue ) Ġ{ ĠGraph ic Definition Loader ( get (), Ġget ()). run ( getProperty (" graphic Definitions Path ")) Ġ} ĊĠĠĠ Ġsingle ( createdAt Start Ġ= Ġtrue ) Ġ{ ĠContainer Definition Loader ( get (), Ġget ()). run ( getProperty (" container Definitions Path ")) Ġ} Ċ }