/** Ċ MIT ĠLicense Ċ Ċ Copyright Ġ( c ) Ġ 2 0 1 6 ĠSh a un ĠRe ich Ġ< s re ich 0 2 @ gmail . com > Ċ Ċ Permission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ of Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ in Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ to Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ copies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ furnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ċ The Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ copies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ċ THE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ IMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ FITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ AUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ LIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ OUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ SOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . ore . in fin ium . systems Ċ Ċ import Ġcom . art emis . annotations . Wire Ċ import Ġcom . art emis . systems . Iter ating System Ċ import Ġcom . ore . in fin ium . O re World Ċ import Ġcom . ore . in fin ium . components . Item Component Ċ import Ġcom . ore . in fin ium . components . Sprite Component Ċ import Ġcom . ore . in fin ium . components . Tool Component Ċ import Ġcom . ore . in fin ium . systems . server . Server Network System Ċ import Ġcom . ore . in fin ium . util . all Of Ċ import Ġcom . ore . in fin ium . util . mapper Ċ import Ġcom . ore . in fin ium . util . require Ċ import Ġcom . ore . in fin ium . util . system Ċ Ċ @ Wire ( fail On Null Ġ= Ġfalse ) Ċ class ĠExplo s ive System ( private Ġval Ġo re World : ĠO re World ) Ġ: ĠIter ating System ( all Of ()) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Item Ġby Ġrequire < Item Component >() ĊĠĠĠ Ġprivate Ġval Ġm Tool Ġby Ġrequire < Tool Component >() ĊĠĠĠ Ġprivate Ġval Ġm Sprite Ġby Ġmapper < Sprite Component >() ĊĊĠĠĠ Ġprivate Ġval Ġserver Network System Ġby Ġsystem < Server Network System >() ĊĊĠĠĠ Ġoverride Ġfun Ġprocess ( entityId : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc Item Ġ= Ġm Item . get ( entityId ) ĊĠĠĠĠĠĠĠ Ġif Ġ( c Item . state Ġ!= ĠItem Component . State . In World State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġc Tool Ġ= Ġm Tool . get ( entityId ) ĊĠĠĠĠĠĠĠ Ġif Ġ( c Tool . type Ġ== ĠTool Component . Tool Type . Explo s ive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Explo s ive ( entityId , Ġc Tool ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess Explo s ive ( entityId : ĠInt , Ġc Tool : ĠTool Component ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( c Tool . explo s ive Ar med Ġ== Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( c Tool . explo s ive Timer . sur passed ( c Tool . explo s ive Time )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Sprite Ġ= Ġm Sprite . get ( entityId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// explode ! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhalf Radius Ġ= Ġ( c Tool . explo s ive Radius Ġ* Ġ 0 . 5 f ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġ( c Sprite . sprite . x Ġ- Ġhalf Radius ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġ( c Sprite . sprite . x Ġ+ Ġhalf Radius ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġ( c Sprite . sprite . y Ġ- Ġhalf Radius ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġ( c Sprite . sprite . y Ġ+ Ġhalf Radius ). toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġleft .. right ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( y Ġin Ġtop .. bottom ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// todo Ġdrop Ġblocks ! Ġmay Ġw anna Ġpush Ġthat Ġfunct ino ality Ġinto Ġthe Ġworld ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// as Ġwell Ġas Ġdestroy Ġa Ġblock Ġrange Ġfunction ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġo re World . destroy Block ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġo re World . server Destroy Entity ( entityId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver Network System . send Block Region Inter ested Players ( left Ġ= Ġleft , Ġright Ġ= Ġright , Ġtop Ġ= Ġtop , Ġbottom Ġ= Ġbottom ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ