package Ġcn . l ent me . projects . wh itet ile . core . base Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . view . Surface View Ċ import Ġcn . l ent me . projects . wh itet ile . core .* Ċ import Ġkotlin . math . round ToInt Ċ Ċ abstract Ġclass ĠBase Game View ( context : ĠContext ) Ġ: ĠSurface View ( context ), ĠRunnable Ġ Ġ{ ĊĊĠĠĠ Ġ// Ġ çĶ» å¸ĥ åıĺéĩı ĊĠĠĠ Ġprivate Ġvar Ġ_ flag Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġ_ canvas : ĠCanvas ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġ å¸ § çİĩ æİ§åĪ¶ åıĺéĩı ĊĠĠĠ Ġprivate Ġvar Ġ_ start Ġ= Ġ 0 L ĊĠĠĠ Ġprivate Ġvar Ġ_ end Ġ= Ġ 0 L ĊĠĠĠ Ġprivate Ġvar Ġ_ nano Start Ġ= Ġ 0 L ĊĠĠĠ Ġprivate Ġvar Ġ_ nano End Ġ= Ġ 0 L ĊĠĠĠ Ġprivate Ġvar Ġ_ fps Ġ= Ġ 0 f ĊĠĠĠ Ġprivate Ġvar Ġ_ ft Ġ= Ġ 0 L ĊĊĠĠĠ Ġ// Ġ ç»ĺ åĪ¶ çº¿ç¨ĭ ĊĠĠĠ Ġprivate Ġvar Ġ_ th : ĠThread ? Ġ= Ġnull ĊĊĠĠĠ Ġ// Ġ åŃĲ ç±» åı¯ è®¿éĹ® çļĦåıĤæķ° ĊĠĠĠ Ġprotected Ġval Ġm FPS Ġget () Ġ= Ġ_ fps ĊĠĠĠ Ġprotected Ġval Ġm FT Ġget () Ġ= Ġ_ ft ĊĊĠĠĠ Ġabstract Ġfun Ġdraw Scene ( canvas : ĠCanvas ?) ĊĠĠĠ Ġabstract Ġfun Ġupdate ( deltaTime : ĠFloat ) ĊĊĠĠĠ Ġfun Ġrelease () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ flag Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġview Created () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ flag Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ_ th Ġ= ĠThread ( this ) ĊĠĠĠĠĠĠĠ Ġ_ th ?. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSurface View åıĮ ç¼ĵ åĨ² æľºåĪ¶ ĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcounter Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile (_ flag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ canvas Ġ= Ġholder . lock Canvas () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Scene (_ canvas ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ( delta TimeUnit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . unlock Canvas And Post (_ canvas ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è®¡ç®Ĺ å¸ § çİĩ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( ++ counter Ġ== Ġ 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ nano End Ġ= ĠSystem . nano Time () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ fps Ġ= Ġ( 1 e 1 1 f Ġ/ Ġ(_ nano End Ġ- Ġ_ nano Start ) Ġ* Ġ 2 0 ). round ToInt () Ġ/ Ġ 1 0 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ nano Start Ġ= Ġ_ nano End ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcounter Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ end Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ ft Ġ= Ġ_ end Ġ- Ġ_ start ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ ft Ġ< ĠUi Sleep Ġ&& ĠGame FPS Ġ< Ġ 6 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread . sleep ( Ui Sleep Ġ- Ġ(_ ft )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ start Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . set Fixed Size ( Game Frame Width , ĠGame Frame Height ) ĊĠĠĠ Ġ} Ċ Ċ }