package Ġj dr . ex ia . model . act Ċ Ċ import Ġj dr . ex ia . localization . STR _ NEW _ ELEMENT Ċ import Ġj dr . ex ia . localization . String Locale Ċ import Ġj dr . ex ia . model . command . Command Ċ import Ġj dr . ex ia . model . command . Command Manager Ċ import Ġj dr . ex ia . model . dao . Instance Table Ċ import Ġj dr . ex ia . model . dao . Scene Table Ċ import Ġj dr . ex ia . model . element . Blueprint Ċ import Ġj dr . ex ia . model . element . Element Ċ import Ġj dr . ex ia . model . type . checked Img Path Ċ import Ġj dr . ex ia . model . type . to Img Path Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġorg . jetbrains . ex posed . dao . Entity Ċ import Ġorg . jetbrains . ex posed . dao . Entity Class Ċ import Ġorg . jetbrains . ex posed . dao . id . Entity ID Ċ import Ġorg . jetbrains . ex posed . sql . transactions . experimental . new Sus pended Transaction Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction Ċ import Ġorg . jetbrains . ex posed . sql . update Ċ import Ġkotlin . io . path . delete IfExists Ċ Ċ class ĠScene ( id : ĠEntity ID < Int >) Ġ: ĠEntity < Int >( id ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ: ĠEntity Class < Int , ĠScene >( Scene Table ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠMove Ġan Ġelement Ġto Ġa Ġnew Ġscene ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġelement ĠThe Ġelement Ġto Ġmove ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġscene ĠThe Ġdestination Ġscene ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġmove Element To Scene ( scene : ĠScene , Ġelement : ĠList < Element >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . scene Ġ= Ġscene ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġelement Iterable Ġby ĠElement Ġref err ers On ĠInstance Table . id Scene ĊĊĠĠĠ Ġval Ġcommand Manager ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠCommand Manager ( id ) ĊĊĠĠĠ Ġval Ġelements ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtransaction Ġ{ Ġelement Iterable . filter Ġ{ Ġ! it . is Deleted Ġ} Ġ} ĊĊĠĠĠ Ġvar Ġname Ġby ĠScene Table . name ĊĠĠĠ Ġvar Ġbackground Ġby ĠScene Table . background ĊĠĠĠ Ġvar Ġid Act Ġby ĠScene Table . id Act ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġan Ġelement Ġto Ġthe Ġscene Ġas ĠInstance ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġblueprint ĠThe ĠBlueprint Ġto Ġinstantiate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġadd Element ( blueprint : ĠBlueprint , Ġon Added : Ġ( Element ) Ġ-> ĠUnit , Ġon Canceled : Ġ( Element ) Ġ-> ĠUnit ) Ġ= ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= ĠElement . createElement ( blueprint ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Manager Ġ+= Ġobject Ġ: ĠCommand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġlabel Ġ= ĠString Locale [ STR _ NEW _ ELEMENT ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexec (): ĠUnit Ġ= Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstance Table . update ({ ĠInstance Table . id Ġeq Ġelement . id Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ id Scene ] Ġ= Ġthis @ Scene . id . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ deleted ] Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Added ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcancel Exec (): ĠUnit Ġ= Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstance Table . update ({ ĠInstance Table . id Ġeq Ġelement . id Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ deleted ] Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Canceled ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete () Ġ{ ĊĠĠĠĠĠĠĠ Ġbackground . to Img Path (). checked Img Path ()?. delete IfExists () ĊĊĠĠĠĠĠĠĠ Ġ// ĠRemove Ġall Ġinstances Ġlinked Ġto Ġthis Ġscene . ĠWe Ġcan 't Ġdo Ġthat Ġwith Ġthe ĠSQL Ġconstraints ĠCASCADE Ġfor Ġlegacy Ġreasons ĊĠĠĠĠĠĠĠ Ġelement Iterable . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . Main ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Sus pended Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . delete () ĊĠĠĠ Ġ} Ċ }