package Ġgames . wind rose . co li se um . datap ar ser Ċ Ċ import Ġgames . wind rose . co li se um . datap ar ser . models . Role Ċ import Ġgames . wind rose . co li se um . datap ar ser . models . Tag Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . File Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . InputStream Reader Ċ Ċ class ĠCharacter Data Parser Impl Ġ: ĠCharacter Data Parser Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġparse Data File ( file : ĠFile ): ĠList < Role > Ġ= ĊĠĠĠĠĠĠĠ Ġfile . read Lines (). map Indexed NotNull Ġ{ Ġindex , Ġline Ġ-> Ġparse Line ( line , Ġindex ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġparse Data InputStream ( stream : ĠInputStream ): ĠList < Role > Ġ= ĊĠĠĠĠĠĠĠ ĠBufferedReader ( InputStream Reader ( stream )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. line Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Indexed NotNull Ġ{ Ġindex , Ġline Ġ-> Ġparse Line ( line , Ġindex ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠ Ġ// Ġex Ġof Ġline Ġ: ĊĠĠĠ Ġ// ĠA ĠCom me ĠAssociation ; J asper ; A ĠCom me ĠAssociation ; L ' Hom me ; 0 ; F ant ast ique ; default ; ĊĠĠĠ Ġ// ĠTODO Ġ: ĠSet Ġto Ġprivate ĊĠĠĠ Ġfun Ġparse Line ( line : ĠString , Ġindex : ĠInt ): ĠRole ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfields Ġ= Ġline . split ( FIELD _ SEPARATOR ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( fields . size Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRole ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġindex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġfields [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorigin Ġ= Ġfields [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Ġ= Ġfields [ 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuniverse Ġ= Ġfields [ 2 ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpower Multiplier Ġ= Ġfields [ 4 ]. toInt OrNull (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtags Ġ= Ġfields . sub List ( 5 , Ġfields . size ). map Ġ{ ĠTag ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ SEPARATOR Ġ= Ġ";" ĊĠĠĠ Ġ} Ċ } Ċ