package Ġio . alice platform . api Ċ Ċ import Ġio . alice platform . api . config . Configuration Provider Ċ import Ġio . alice platform . api . datastore . DataStore Factory Ċ import Ġio . alice platform . api . engine . Engine Ċ import Ġio . alice platform . api . engine . Engine Provider Ċ import Ġio . alice platform . api . event . Event Manager Ċ import Ġio . alice platform . api . extensions . Extensions Provider Ċ import Ġio . alice platform . api . modules . Module Ċ import Ġio . alice platform . api . modules . Module Provider Ċ import Ġio . alice platform . api . objects . ObjectFactory Ċ import Ġorg . slf 4 j . Logger Ċ import Ġkotlin . properties . ReadWrite Property Ċ import Ġkotlin . reflect . K Property Ċ Ċ /** Ċ Ġ* ĠPresent s Ġa Ġroot Ġcomponent Ġof Ġplatform . Ċ Ġ* Ċ Ġ* ĠInter pretation Ġof Ġcode Ġis Ġto Ġbe Ġa ĠGradle - like Ġconfigurable Ġplatform . Ċ Ġ*/ Ċ interface ĠAlice Ġ: ĠAlice Object Operator Ġ{ ĊĠ Ġ/** ĊĠĠ Ġ* ĠMain Ġlogger ĊĠĠ Ġ*/ ĊĠ Ġval Ġlogger : ĠLogger ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠPlatform Ġversion ĊĠĠ Ġ*/ ĊĠ Ġval Ġversion : ĠVersion ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠConfiguration ĠProvider ĊĠĠ Ġ* ĊĠĠ Ġ* ĠProvides Ġconfiguration Ġfrom Ġdefined Ġin Ġ[` apply (< path >) `][ Configuration Provider . apply ] Ġa Ġpath Ġof Ġconfiguration , Ġwhen Ġexisted . ĊĠĠ Ġ* ĠAlso Ġwill Ġload Ġdefault Ġconfiguration Ġsolutions Ġprovided Ġof Ġthis Ġplatform . ĊĠĠ Ġ*/ ĊĠ Ġval Ġconfiguration : ĠConfiguration Provider ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThis Ġis Ġa Ġsource Ġof Ġthis Ġcomponent . ĠWithout Ġproviding ĠChat ĠEngine Ġyour Ġplatform Ġwill Ġnot Ġwork . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠIt Ġis Ġnot Ġonly Ġapply Ġrequired Ġengine , Ġit Ġwill Ġapply Ġ[ modules ][ Module Provider ] Ġand Ġ[ extensions ][ Extensions Provider ] Ġfor Ġbetter Ġconfigurable Ġsolution . ĊĠĠ Ġ*/ ĊĠ Ġval Ġengines : ĠEngine Provider ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThis Ġis Ġa Ġmostly Ġsupport ive Ġcomponent . ĠIt Ġhelps Ġprovides Ġsome Ġsolutions Ġto Ġyour Ġenvironment . ĊĠĠ Ġ*/ ĊĠ Ġval Ġmodules : ĠModule Provider ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠWill Ġhelps Ġbetter Ġconfigurable Ġstore Ġin Ġdatabase Ġusing Ġ[ SQL ĠConnection ][ java . sql . Connection ] ĊĠĠ Ġ*/ ĊĠ Ġval Ġdatastore : ĠData Store Factory ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠHel ps Ġsafety Ġyour Ġcode Ġworkflow . ĊĠĠ Ġ*/ ĊĠ Ġval Ġobjects : ĠObject Factory ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠManage Ġ[ events ][ io . alice platform . api . event . Event ] Ġindication Ġto Ġhandle Ġactions ĊĠĠ Ġ*/ ĊĠ Ġval Ġevents : ĠEvent Manager ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠExtensions Ġhelps Ġto Ġbetter Ġconfigure Ġyour Ġenvironment ĊĠĠ Ġ*/ ĊĠ Ġval Ġextensions : ĠExtensions Provider ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠInstalling Ġ[ module ][ Module ] ĊĠĠ Ġ*/ ĊĠ Ġfun Ġ< T Conf > Ġinstall ( module : ĠModule < T Conf >, Ġconfigure : ĠT Conf . () Ġ-> ĠUnit ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠInstalling Ġ[ engine ][ Engine ] ĊĠĠ Ġ*/ ĊĠ Ġfun Ġ< T Conf Ġ: ĠEngine . Config , ĠT Factory Ġ: ĠEngine . Factory < T Conf >> Ġinstall ( ĊĠĠĠ Ġfactory : ĠT Factory , ĊĠĠĠ Ġconfigure : ĠT Conf . () Ġ-> ĠUnit Ġ= Ġ{} ĊĠ Ġ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠConfiguration ĠProvider ĊĠĠ Ġ* ĊĠĠ Ġ* ĠProvides Ġconfiguration Ġfrom Ġdefined Ġin Ġ[` apply (< path >) `][ Configuration Provider . apply ] Ġa Ġpath Ġof Ġconfiguration , Ġwhen Ġexisted . ĊĠĠ Ġ* ĠAlso Ġwill Ġload Ġdefault Ġconfiguration Ġsolutions Ġprovided Ġof Ġthis Ġplatform . ĊĠĠ Ġ*/ ĊĠ Ġ@ Alice Dsl ĊĠ Ġfun Ġconfiguration ( configuration : ĠConsumer < Configuration Provider >) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThis Ġis Ġa Ġsource Ġof Ġthis Ġcomponent . ĠWithout Ġproviding ĠChat ĠEngine Ġyour Ġplatform Ġwill Ġnot Ġwork . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠIt Ġis Ġnot Ġonly Ġapply Ġrequired Ġengine , Ġit Ġwill Ġapply Ġ[ modules ][ Module Provider ] Ġand Ġ[ extensions ][ Extensions Provider ] Ġfor Ġbetter Ġconfigurable Ġsolution . ĊĠĠ Ġ*/ ĊĠ Ġ@ Alice Dsl ĊĠ Ġfun Ġengines ( engines : ĠConsumer < Engine Provider >) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠThis Ġis Ġa Ġmostly Ġsupport ive Ġcomponent . ĠIt Ġhelps Ġprovides Ġsome Ġsolutions Ġto Ġyour Ġenvironment . ĊĠĠ Ġ*/ ĊĠ Ġ@ Alice Dsl ĊĠ Ġfun Ġmodules ( modules : ĠConsumer < Module Provider >) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠWill Ġhelps Ġbetter Ġconfigurable Ġstore Ġin Ġdatabase Ġusing Ġ[ SQL ĠConnection ][ java . sql . Connection ] ĊĠĠ Ġ*/ ĊĠ Ġ@ Alice Dsl ĊĠ Ġfun Ġdatastore ( datastore : ĠConsumer < DataStore Factory >) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠHel ps Ġsafety Ġyour Ġcode Ġworkflow . ĊĠĠ Ġ*/ ĊĠ Ġ@ Alice Dsl ĊĠ Ġfun Ġobjects ( objects : ĠConsumer < ObjectFactory >) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠManage Ġ[ events ][ io . alice platform . api . event . Event ] Ġindication Ġto Ġhandle Ġactions ĊĠĠ Ġ*/ ĊĠ Ġ@ Alice Dsl ĊĠ Ġfun Ġevents ( events : ĠConsumer < Event Manager >) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠExtensions Ġhelps Ġto Ġbetter Ġconfigure Ġyour Ġenvironment ĊĠĠ Ġ*/ ĊĠ Ġ@ Alice Dsl ĊĠ Ġfun Ġextensions ( extensions : ĠConsumer < Extensions Provider >) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠS afety Ġhandle Ġyour Ġinteraction Ġbefore Ġsome Ġ[ state ][ Alice State ] Ġhas Ġbeen Ġstarted ĊĠĠ Ġ* Ġ@ param Ġstate Ġthe Ġaction Ġstate ĊĠĠ Ġ* Ġ@ param Ġalice Ġroot Ġcomponent ĊĠĠ Ġ*/ ĊĠ Ġfun Ġbefore ( state : ĠAlice State , Ġalice : ĠConsumer < Alice >) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠS afety Ġhandle Ġyour Ġinteraction Ġafter Ġsome Ġ[ state ][ Alice State ] Ġhas Ġbeen Ġended ĊĠĠ Ġ* Ġ@ param Ġstate Ġthe Ġaction Ġstate ĊĠĠ Ġ* Ġ@ param Ġalice Ġroot Ġcomponent ĊĠĠ Ġ*/ ĊĠ Ġfun Ġafter ( state : ĠAlice State , Ġalice : ĠConsumer < Alice >) Ċ } Ċ Ċ /** Ċ Ġ* ĠRuntime ĠState Ċ Ġ*/ Ċ enum Ġclass ĠAlice State Ġ{ ĊĠ Ġ/** ĊĠĠ Ġ* ĠState Ġof ĠInitialization ĊĠĠ Ġ*/ ĊĠ ĠINIT , ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠState Ġof Ġrunning Ġenvironment ĊĠĠ Ġ*/ ĊĠ ĠSTART , ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠState Ġof Ġshut ting Ġdown Ġenvironment ĊĠĠ Ġ*/ ĊĠ ĠSTOP Ċ } Ċ Ċ /** Ċ Ġ* ĠLazy ĠL ate ĠInitial izer Ġfor Ġavoid Ġnull s Ċ Ġ*/ Ċ class ĠL ate Init < T >( ĊĠ Ġprivate Ġval Ġthrowable : Ġ() Ġ-> ĠThrowable Ċ ) Ġ: ĠRead Write Property < Any ?, ĠT > Ġ{ ĊĠ Ġprivate Ġvar Ġvalue : ĠT ? Ġ= Ġnull ĊĊĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property < *> ): ĠT Ġ= ĊĠĠĠ Ġvalue Ġ?: Ġthrow Ġthrowable () ĊĊĠ Ġoverride Ġfun ĠsetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property <* >, Ġvalue : ĠT ) Ġ{ ĊĠĠĠ Ġthis . value Ġ= Ġvalue ĊĠ Ġ} Ċ } Ċ