package Ġinterpreter . parser Ċ Ċ import Ġinterpreter . Options Ċ Ċ fun ĠParser . parse Option (){ ĊĠĠĠ Ġcurrent Block . properties . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent TP Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparse Option Property () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : Exception ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbw . error ( it . file , Ġit . line , Ġ" Could Ġnot Ġparse ĠOption ĠParameter ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠParser . parse Option Property (){ ĊĠĠĠ Ġwhen ( current TP . k . toLowerCase (). trim ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" character istic " Ġ-> Ġbw . options . Characteristic Ġ= Ġcurrent TP . v ĊĠĠĠĠĠĠĠ Ġ" half jump duration " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh jd Ġ= Ġcurrent TP . v . toLowerCase (). toDouble OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( h jd Ġ!= Ġnull ) Ġbw . options . half Jump Duration Ġ= Ġh jd ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġerror TP (" Half Jump Duration Ġmust Ġbe Ġa Ġnumber , Ġnot Ġ${ current TP . v }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" mod type " Ġ-> Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbw . options . mod Type Ġ= ĠOptions . Mod Type . valueOf ( current TP . v ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbw . error ( current TP . file , Ġcurrent TP . line , Ġ"${ current TP . v } Ġis Ġnot Ġa Ġsupported ĠValue . Ġ( only ĠME / NE )") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ" difficulty " Ġ-> Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbw . options . difficulty Ġ= ĠOptions . Difficulty Type . valueOf ( current TP . v ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbw . error ( current TP . file , Ġcurrent TP . line , Ġ"${ current TP . v } Ġis Ġnot Ġa Ġsupported ĠValue . Ġ( only ĠEasy , ĠNormal , Ġ.... )") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror TP (" Invalid ĠOption ĠProperty . ĠHave Ġyou Ġsome Ġold Ġbeat Ġvalues Ġleft Ġin ?") ĊĠĠĠ Ġ} Ċ } Ċ