{"version":3,"sources":["../../node_modules/browser-pack/_prelude.js","src/Boot.ts","src/Game.ts","src/Level01.ts","src/MainMenu.ts","src/Player.ts","src/Preloader.ts","src/Stage.ts"],"names":["e","t","n","r","s","o","u","a","require","i","f","Error","code","l","exports","call","length","1","module","BattleCity","Boot","_super","__extends","prototype","preload","this","load","image","create","input","maxPointers","stage","disableVisibilityChange","scale","pageAlignHorizontally","scaleMode","Phaser","ScaleManager","SHOW_ALL","game","state","start","State","BootModule","PreloaderModule","MainMenuModule","StageModule","Level01Module","Game","_this","AUTO","add","Preloader","MainMenu","Stage","Level01","window","onload","PlayerModule","apply","arguments","offsetX","offsetY","pieses","physics","startSystem","Physics","ARCADE","borders","group","enableBody","bricks","blocks","row","col","sprite","setAll","top","width","world","height","bottom","right","update","arcade","collide","player","4","extendStatics","Object","setPrototypeOf","__proto__","Array","d","b","p","hasOwnProperty","__","constructor","toStart","anchor","setTo","enterKey","keyboard","addKey","Keyboard","ENTER","onDown","addOnce","value","Direction","Player","x","y","Up","xOffset","yOffset","existing","enable","animations","velocity","isDown","W","UP","play","currDir","Down","snapToGrid","body","speed","A","LEFT","Left","Right","S","DOWN","D","RIGHT","remainder","stepValue","rangeNumber","Sprite","preloadBar","setPreloadSprite","atlasJSONHash","defineProperty"],"mappings":"CAAA,QAAAA,GAAAC,EAAAC,EAAAC,GAAA,QAAAC,GAAAC,EAAAC,GAAA,IAAAJ,EAAAG,GAAA,CAAA,IAAAJ,EAAAI,GAAA,CAAA,GAAAE,GAAA,kBAAAC,UAAAA,OAAA,KAAAF,GAAAC,EAAA,MAAAA,GAAAF,GAAA,EAAA,IAAAI,EAAA,MAAAA,GAAAJ,GAAA,EAAA,IAAAK,GAAA,GAAAC,OAAA,uBAAAN,EAAA,IAAA,MAAAK,GAAAE,KAAA,mBAAAF,EAAA,GAAAG,GAAAX,EAAAG,IAAAS,WAAAb,GAAAI,GAAA,GAAAU,KAAAF,EAAAC,QAAA,SAAAd,GAAA,GAAAE,GAAAD,EAAAI,GAAA,GAAAL,EAAA,OAAAI,GAAAF,GAAAF,IAAAa,EAAAA,EAAAC,QAAAd,EAAAC,EAAAC,EAAAC,GAAA,MAAAD,GAAAG,GAAAS,QAAA,IAAA,GAAAL,GAAA,kBAAAD,UAAAA,QAAAH,EAAA,EAAAA,EAAAF,EAAAa,OAAAX,IAAAD,EAAAD,EAAAE,GAAA,OAAAD,KAAAa,GAAA,SAAAT,EAAAU,EAAAJ,yYCEA,SAAiBK,GAEb,GAAAC,GAAA,SAAAC,GAAA,QAAAD,oDAiBA,MAjB0BE,GAAAF,EAAAC,GAEtBD,EAAAG,UAAAC,QAAA,WAEIC,KAAKC,KAAKC,MAAM,aAAe,4BAGnCP,EAAAG,UAAAK,OAAA,WAEIH,KAAKI,MAAMC,YAAc,EACzBL,KAAKM,MAAMC,yBAA0B,EAErCP,KAAKQ,MAAMC,uBAAwB,EACnCT,KAAKQ,MAAME,UAAYC,OAAOC,aAAaC,SAE3Cb,KAAKc,KAAKC,MAAMC,MAAM,aAAa,GAAM,IAEjDrB,GAjB0BgB,OAAOM,MAApBvB,GAAAC,KAAIA,GAFJN,EAAAK,aAAAL,EAAAK,4aCAjB,IAMUA,GANVwB,EAAAnC,EAAA,UACAoC,EAAApC,EAAA,eACAqC,EAAArC,EAAA,cACAsC,EAAAtC,EAAA,WACAuC,EAAAvC,EAAA,cAEA,SAAUW,GAEN,GAAA6B,GAAA,SAAA3B,GAEI,QAAA2B,KAAA,GAAAC,GAEI5B,EAAAN,KAAAU,KAAM,IAAK,IAAKW,OAAOc,KAAM,KAAGzB,WAChCwB,GAAKT,MAAMW,IAAI,OAAQR,EAAWxB,WAAWC,MAAM,GACnD6B,EAAKT,MAAMW,IAAI,YAAaP,EAAgBzB,WAAWiC,WAAW,GAClEH,EAAKT,MAAMW,IAAI,WAAYN,EAAe1B,WAAWkC,UAAU,GAC/DJ,EAAKT,MAAMW,IAAI,QAASL,EAAY3B,WAAWmC,OAAO,GACtDL,EAAKT,MAAMW,IAAI,UAAWJ,EAAc5B,WAAWoC,SAAS,GAC5DN,EAAKT,MAAMC,MAAM,UAOzB,MAjB0BnB,GAAA0B,EAAA3B,GAiB1B2B,GAjB0BZ,OAAOY,KAApB7B,GAAA6B,KAAIA,GAFX7B,IAAAA,OAsBVqC,OAAOC,OAAS,WAEZ,GAAItC,GAAW6B,qeC9BnB,IAAAU,GAAAlD,EAAA,aAEA,SAAiBW,GAEb,GAAAoC,GAAA,SAAAlC,GAAA,QAAAkC,KAAA,GAAAN,GAAA,OAAA5B,GAAAA,EAAAsC,MAAAlC,KAAAmC,YAAAnC,IAyEQ,OAvEGwB,GAAAY,QAAkB,GAClBZ,EAAAa,QAAkB,GAQjBb,EAAAc,OAChB,uqBA6DYd,QAzEqB3B,GAAAiC,EAAAlC,KA2EjBE,UAAUK,OAAK,WACnBH,KAAIuC,QAAQC,YAAW7B,OAAM8B,QAAAC,QAC7B1C,KAAI2C,QAAW3C,KAACc,KAAAY,IAAAkB,QAChB5C,KAAA2C,QAASE,YAAA,EACT7C,KAAI8C,OAAS9C,KAAKc,KAAIY,IAAMkB,QAC5B5C,KAAA8C,OAAYD,YAAa,EACzB7C,KAAA+C,OAAa/C,KAAMc,KAAAY,IAAAkB,QACnB5C,KAAA+C,OAAQF,YAAA,CAER,KAAK,GAACG,GAAQ,EAAGA,EAAA,KAAAA,EACjB,IAAM,GAAMC,GAAO,EAACA,EAAM,KAAOA,EAC1B,MAAAjD,KAAAsC,OAAA,GAAAU,EAAAC,KACIjD,KAAK0B,IAAIwB,OAAa,GAALD,EAAKjD,KAAAoC,QAAmB,GAAAY,EAAAhD,KAAgBqC,QAAO,kBAAS,aAAArC,KAAA8C,QAC1E9C,KAAM0B,IAAAwB,OAAA,GAAAD,EAAA,EAAAjD,KAAAoC,QAAA,GAAAY,EAAAhD,KAAAqC,QAAA,kBAAA,aAAArC,KAAA8C,QACL9C,KAAG0B,IAAKwB,OAAa,GAAPD,EAAOjD,KAAAoC,QAAA,GAAAY,EAAA,EAAAhD,KAAAqC,QAAA,kBAAA,aAAArC,KAAA8C,QAChC9C,KAAA0B,IAAAwB,OAAA,GAAAD,EAAsC,EAAAjD,KAAAoC,QAAA,GAAAY,EAAA,EAAAhD,KAAAqC,QAAA,kBAAA,aAAArC,KAAA8C,SAG/B,MAAA9C,KAAAsC,OAAA,GAAAU,EAAAC,IACIjD,KAAK0B,IAAIwB,OAAc,GAAPD,EAAUjD,KAAKoC,QAAgB,GAALY,EAAQhD,KAAKqC,QAAS,kBAAmB,YAAYrC,KAAA+C,OAK1G/C,MAAA8C,OAAAK,OAAA,kBAA8B,GAC9BnD,KAAA+C,OAAAI,OAAA,kBAA+B,EAK/B,IAAIC,GAAMpD,KAAA0B,IAAQwB,OAAO,EAAA,EAAO,kBAAmB,iBAASlD,KAAA2C,QAC5DS,GAAIC,MAAMrD,KAAOsD,MAACD,MAClBD,EAAIG,OAAM,EAElB,IAAAC,GAACxD,KAAA0B,IAAAwB,OAAA,EAAAlD,KAAAsD,MAAAC,OAAA,GAAA,kBAAA,iBAAAvD,KAAA2C,QA7GkCa,GAAMH,MA6GxCrD,KAAAsD,MAAAD,MA7GYG,EAAAD,OAAO,2GCNvBE,EAAAF,OAAAvD,KAAAsD,MAAAC,uWAIiCzB,EAAAhC,UAAA4D,OAAA,WAA9B1D,KAAAc,KAAAyB,QAAAoB,OAAAC,QAAA5D,KAAA6D,OAAA7D,KAAA2C,mEAyBC3C,KAAAc,KAAAyB,QAAAoB,OAAAC,QAAA5D,KAAA6D,OAAA7D,KAAA+C,SAfOjB,UACAb,SACAa,QAAKA,GACDzC,EAAQK,aAAYL,EAAWK,6BACnC,IAAKoE,GAAA,SAAQ/E,EAAaU,EAAKJ,sBAI1BW,MAAQA,KAACH,WAAe,cACjCkE,GAACC,OAAAC,iBAEDC,uBAAAC,QAAA,SAAAC,EAAAC,GAAAD,EAAAF,UAAAG,aAESD,EAAAC,GAAM,IAAM,GAAAC,KAASD,GAAAA,EAAAE,eAAAD,KAAAF,EAAAE,GAAAD,EAAAC,WAC7B,UAAAF,EAAAC,GAxByB,QAAOG,KAyBpCxE,KAAAyE,YAAAL,EAADL,EAAAK,EAACC,GAzBYD,EAAAtE,UAAQ,OAARuE,EAyBZL,OAAA7D,OAAAkE,IAAAG,EAAA1E,UAAAuE,EAAAvE,UAAA,GAAA0E,oJCzBI,wVAFQxE,KAmJhB0E,QAAAC,OAAAC,MAAA,IAjJQ5E,KAGJ6E,SAAA7E,KAAAI,MAAA0E,SAAAC,OAAApE,OAAAqE,SAAAC,OAHDjF,KAAK6E,SAASK,OAAAC,QAAAnF,KAAAgB,MAAAhB,OAEN4B,EAAA9B,UAAAkB,MAAA,WAAMhB,KAAAe,MAAAC,MAAA,UAFTY,GAKLjB,OAAAM,SAA4BW,SAAAA,GAQxBvC,EAAYK,aAAuCL,EAAAK,iCAAnDX,EAEIU,EAAAJ,sBALIW,MAAOA,KAAaH,WAAC,iBACrBmE,OAAqBC,wCAKFE,QAAA,SAAAC,EAAAC,GAAAD,EAAAF,UAAAG,aAClBD,EAAIC,GAAA,IAAS,GAAIC,KAAED,GAAAA,EAAAE,eAAAD,KAAAF,EAAAE,GAAAD,EAAAC,qBACnBF,EAAOC,WAGRG,KAACxE,KAAWyE,YAAcL,IAD9BA,EAAAC,eAEe,OAAVA,EAAeL,OAAA7D,OAAakE,IAAAG,EAAA1E,UAAAuE,EAAAvE,UAAoC,GAAE0E,8BAIvEnF,EAAkB,cAAA+F,OAAA,iCAIlBC,kBACJA,EAACA,EAAA,KAAA,GAAA,OAEDA,EAAAA,EAAA,KAAA,GAAA,SAESA,EAAkB,MAAE,GAAA,aAChBA,aAEL,SAAUzF,WAGV0F,GAAKxE,EAAAyE,EAAWC,MAEhBhE,GAAQ5B,EAACN,KAAWU,KAAAc,EAAYyE,EAAAC,EAAA,kBAAA,gCAAAxF,oBACvB,aAECqF,EAAQI,KACjBC,QAAA,KAEDC,QAAY,KACZhB,OAASC,MAAC,IACd9D,EAACY,IAAAkE,SAAApE,GACDV,EAAKyB,QAAQsD,OAAMrE,KAGfsE,WAAKpE,IAAW,UAAK,+BAAa,IAAA,GAAA,KAEhCoE,WAAOpE,IAAO,YAAc,iCAAI,IAAA,GAAA,gBACzBA,IAAO,YAAc,iCAC7B,IAAA,GAAA,gBACYA,IAAI,aAAY,kCAAqC,IAAC,GAAA,KAGnEoE,WAAYpE,IAAG,WAAc,8BAAC,+BAAA,IAAA,GAAA,KAC9BoE,WAAUpE,IAAA,aAAmB,gCAAM,iCAAA,IAAA,GAAA,GACvCF,EAACsE,WAAApE,IAAA,aAAA,gCAAA,iCAAA,IAAA,GAAA,GACDF,EAAKsE,WAASpE,IAAK,cAAe,iCAAyB,kCAAA,IAAA,GAAA,GACvDF,WA5BA8D,EAAU1F,eAgCD8D,OAAO,wBACZqC,SAAKR,EAAO,YAEZQ,SAASP,EAAK,EAClBxF,KAACc,KAAAV,MAAA0E,SAAAkB,OAAArF,OAAAqE,SAAAiB,IAEDjG,KAAKc,KAAAV,MAAU0E,SAAUkB,OAAKrF,OAAAqE,SAAAkB,IAC9BlG,KAAK8F,WAAKK,KAAU,WACvBnG,KAAAoG,SAAAf,EAAAI,IACOzF,KAAKoG,SAAWf,EAAUgB,OAC1BrG,KAAKuF,EAACvF,KAAMsG,WAAStG,KAAOuF,EAAMvF,KAAC0F,SAAe1F,KACzD0F,SAGG1F,KAAIoG,QAAKf,EAAWI,QAChBc,KAAKR,SAAOP,GAAIxF,KAASwG,UAG5B,IAAAxG,KAAAc,KAAAV,MAAA0E,SAAAkB,OAAArF,OAAAqE,SAAAyB,IAEDzG,KAAKc,KAAAV,MAAU0E,SAAUkB,OAAMrF,OAAAqE,SAAA0B,MAC/B1G,KAAK8F,WAAKK,KAAU,aACvBnG,KAAAoG,SAAAf,EAAAsB,MAEA3G,KAAAoG,SAAAf,EAAAuB,QACO5G,KAAKwF,EAACxF,KAAQsG,WAAOtG,KAAAwF,EAAAxF,KAAA2F,SAAA3F,KAAA2F,SAEzB3F,KAAAoG,QAAaf,EACZsB,UACGJ,KAAKR,SAAUR,GAAEvF,KAAAwG,mBAEb1F,KAAMV,MAAA0E,SAAAkB,OAAArF,OAAAqE,SAAA6B,SACV/F,KAAKV,MAAA0E,SAAckB,OAAArF,OAAAqE,SAAA8B,sBACVX,KAAA,kBACLC,SAAMf,EAAAI,IACVzF,KAAKoG,SAAUf,EAAIgB,YACfd,EAAKvF,KAAAsG,WAAgBtG,KAAAuF,EAAAvF,KAAY0F,SAAA1F,KAAA0F,cAErCU,QAAKf,EAAegB,eAChBN,SAAKP,EAAUxF,KAAKwG,UAE3B,IAAAxG,KAAAc,KAAAV,MAAA0E,SAAAkB,OAAArF,OAAAqE,SAAA+B,IACJ/G,KAAAc,KAAAV,MAAA0E,SAAAkB,OAAArF,OAAAqE,SAAAgC,OACJhH,KAAA8F,WAAAK,KAAA,cAEDnG,KAAAoG,SAAAf,EAAAsB,wFAIG3G,KAAAoG,QAAAf,EAAAuB,MACK5G,KAAAuG,KAAAR,SAAUR,EAAlBvF,KAAAwG,UAOI,QAFAxG,KAAAuG,KAAAR,SAAAR,EAAA,EACAvF,KAAAuG,KAAcR,SAAAP,EAAW,EACzBxF,KAAAoG,SAEA,IAAAf,GAAAI,GACIzF,KAAY8F,WAAUK,KAAG,SACzB,MACA,KAASd,GAAGsB,KAEZ3G,KAAA8F,WAAqBK,KAAA,WACxB,MAEA,KAAAd,GAAAgB,KACGrG,KAAA8F,WAAoBK,KAAA,WACvB,MAEM,KAAAd,GAAAuB,MACV5G,KAAA8F,WAAAK,KAAA,8EC7HJ,OACJc,GAAAC,MArB0BC,EAAA,MAEvBA,GAMQ7B,UACA8B,UAEA9B,OAAUA,GAENjG,EAAMK,aAAcL,EAAAK,wBAC3B,SAAAX,EAAAU,EAAAJ,sBAKAW,MAAAA,KAAAH,WAAA,cACLkE,GAACC,OAAAC,iBAlB8BC,uBAkB9BC,QAAA,SAAAC,EAAAC,GAAAD,EAAAF,UAAAG,IAlBY,SAAAD,EAAAC,GAAS,IAAA,GAAAC,KAkBrBD,GAAAA,EAAAE,eAAAD,KAAAF,EAAAE,GAAAD,EAAAC,IApBY,OAAA,UAAAF,EAAAC,0CCFhBD,EAAAtE,UAAA,OAAAuE,EAAAL,OAAA7D,OAA2CkE,IAAAG,EAAA1E,UAAAuE,EAAAvE,UAAA,GAAA0E,iMAE3BxE,KA+BhBqH,WAAArH,KAAAc,KAAAY,IAAAwB,OAAA,IAAA,IAAA,cA/BgBlD,KAAAC,KAAUqH,iBAAAtH,KAAAqH,YAEvBrH,KAAAC,KAAAC,MAAA,YAAA,wCAA2BF,KAAAC,KAAAsH,cAAY,kBAAA,sCAAA,uEA4BtCvH,KAAAc,KAAAC,MAAAC,MAAA,YAAA,GAAA,IApBOW,UACAV,SACAU,UAAKA,GACDtC,EAACK,aAAqBL,EAAQK,iCAElCX,EAAaU,EAAAJ,sBAIbW,MAAAA,KAAeH,WAAA,iBACVmE,OAAcC,wCACKE,QAAS,SAAKC,EAAAC,GAAAD,EAAAF,UAAAG,aAEjCD,EAAIC,GAAC,IAAO,GAAIC,KAAOD,GAAMA,EAAAE,eAAiBD,KAAAF,EAAAE,GAAYD,EAAAC,WAClE,UAAAF,EAAAC,WAIQG,KAAMxE,KAAMyE,YAAWL,EAFhCL,EAAAK,EAAAC,GAGAD,EAACtE,UAAA,OAAAuE,EAAAL,OAAA7D,OAAAkE,IAAAG,EAAA1E,UAAAuE,EAAAvE,UAAA,GAAA0E,eA3BQgD,eAAKnI,EA4BjB,cAAA+F,OAAA","file":"bundle.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o\r\n\r\nexport namespace BattleCity\r\n{\r\n export class Boot extends Phaser.State\r\n {\r\n preload()\r\n {\r\n this.load.image(\"preloadBar\" , \"./assets/preloadBar.png\");\r\n }\r\n\r\n create()\r\n {\r\n this.input.maxPointers = 1;\r\n this.stage.disableVisibilityChange = true;\r\n\r\n this.scale.pageAlignHorizontally = true;\r\n this.scale.scaleMode = Phaser.ScaleManager.SHOW_ALL;\r\n\r\n this.game.state.start('Preloader', true, false);\r\n }\r\n }\r\n}\r\n","/// \r\n\r\nimport * as BootModule from \"./Boot\";\r\nimport * as PreloaderModule from \"./Preloader\";\r\nimport * as MainMenuModule from \"./MainMenu\";\r\nimport * as StageModule from \"./Stage\";\r\nimport * as Level01Module from \"./Level01\";\r\n\r\nnamespace BattleCity\r\n{\r\n export class Game extends Phaser.Game\r\n {\r\n constructor()\r\n {\r\n super(512, 448, Phaser.AUTO, '');\r\n this.state.add(\"Boot\", BootModule.BattleCity.Boot, false);\r\n this.state.add(\"Preloader\", PreloaderModule.BattleCity.Preloader, false);\r\n this.state.add(\"MainMenu\", MainMenuModule.BattleCity.MainMenu, false);\r\n this.state.add(\"Stage\", StageModule.BattleCity.Stage, false);\r\n this.state.add(\"Level01\", Level01Module.BattleCity.Level01, false);\r\n this.state.start(\"Boot\");\r\n\r\n /*\r\n this.state.add('Level1', Level1, false);\r\n */\r\n\r\n }\r\n }\r\n}\r\n\r\nwindow.onload = () =>\r\n{\r\n new BattleCity.Game();\r\n};\r\n","// \r\n\r\nimport * as PlayerModule from \"./Player\";\r\n\r\nexport namespace BattleCity\r\n{\r\n export class Level01 extends Phaser.State\r\n {\r\n public offsetX: number = 32;\r\n public offsetY: number = 16;\r\n\r\n private player: Phaser.Sprite;\r\n\r\n private borders: Phaser.Group;\r\n private bricks: Phaser.Group;\r\n private blocks: Phaser.Group;\r\n\r\n private pieses: string =\r\n\"..........................\\\r\n..........................\\\r\n..##..##..##..##..##..##..\\\r\n..##..##..##..##..##..##..\\\r\n..##..##..##..##..##..##..\\\r\n..##..##..##..##..##..##..\\\r\n..##..##..##@@##..##..##..\\\r\n..##..##..##@@##..##..##..\\\r\n..##..##..##..##..##..##..\\\r\n..##..##..........##..##..\\\r\n..##..##..........##..##..\\\r\n..........##..##..........\\\r\n..........##..##..........\\\r\n##..####..........####..##\\\r\n@@..####..........####..@@\\\r\n..........##..##..........\\\r\n..........######..........\\\r\n..##..##..######..##..##..\\\r\n..##..##..##..##..##..##..\\\r\n..##..##..##..##..##..##..\\\r\n..##..##..##..##..##..##..\\\r\n..##..##..........##..##..\\\r\n..##..##..........##..##..\\\r\n..##..##...####...##..##..\\\r\n...........#..#...........\\\r\n...........#..#...........\\\r\n\";\r\n create()\r\n {\r\n this.physics.startSystem(Phaser.Physics.ARCADE);\r\n\r\n this.borders = this.game.add.group();\r\n this.borders.enableBody = true;\r\n\r\n this.bricks = this.game.add.group();\r\n this.bricks.enableBody = true;\r\n\r\n this.blocks = this.game.add.group();\r\n this.blocks.enableBody = true;\r\n\r\n let x = 0, y = 0;\r\n for (let row = 0; row < 26; ++row)\r\n {\r\n for (let col = 0; col < 26; ++col)\r\n {\r\n if (this.pieses[row * 26 + col] === \"#\")\r\n {\r\n this.add.sprite(col * 16 + this.offsetX, row * 16 + this.offsetY, \"battleCityScene\", \"brick2.png\", this.bricks);\r\n this.add.sprite(col * 16 + 8 + this.offsetX, row * 16 + this.offsetY, \"battleCityScene\", \"brick1.png\", this.bricks);\r\n this.add.sprite(col * 16 + this.offsetX, row * 16 + 8 + this.offsetY, \"battleCityScene\", \"brick1.png\", this.bricks);\r\n this.add.sprite(col * 16 + 8 + this.offsetX, row * 16 + 8 + this.offsetY, \"battleCityScene\", \"brick2.png\", this.bricks);\r\n }\r\n if (this.pieses[row * 26 + col] === \"@\")\r\n {\r\n this.add.sprite(col * 16 + this.offsetX, row * 16 + this.offsetY, \"battleCityScene\", \"block.png\", this.blocks);\r\n }\r\n }\r\n }\r\n this.bricks.setAll(\"body.immovable\", true);\r\n this.blocks.setAll(\"body.immovable\", true);\r\n\r\n // Gray borders\r\n // Top\r\n let top = this.add.sprite(0, 0, \"battleCityScene\", \"gray_block.png\", this.borders);\r\n top.width = this.world.width;\r\n top.height = 16;\r\n // Bottom\r\n let bottom = this.add.sprite(0, this.world.height - 16, \"battleCityScene\", \"gray_block.png\", this.borders);\r\n bottom.width = this.world.width;\r\n bottom.height = 16;\r\n // Right\r\n let right = this.add.sprite(this.world.width - 64, 0, \"battleCityScene\", \"gray_block.png\", this.borders);\r\n right.width = 64;\r\n right.height = this.world.height;\r\n // Left\r\n let left = this.add.sprite(0, 0, \"battleCityScene\", \"gray_block.png\", this.borders);\r\n left.width = 32;\r\n left.height = this.world.height;\r\n // Set all the borders to be immovable\r\n this.borders.setAll(\"body.immovable\", true);\r\n\r\n // Base\r\n let base = this.add.sprite(12 * 16 + this.offsetX, 24 * 16 + this.offsetY, \"battleCityScene\", \"base.png\");\r\n\r\n // Player\r\n this.player = new PlayerModule.BattleCity.Player(this.game, 9 * 16 + this.offsetX, 25 * 16 + this.offsetY);\r\n this.player.body.setSize(26, 26, 3, 3);\r\n //this.player.body.width = 28;\r\n //this.player.body.height = 28;\r\n }\r\n\r\n update()\r\n {\r\n this.game.physics.arcade.collide(this.player, this.borders);\r\n this.game.physics.arcade.collide(this.player, this.bricks);\r\n this.game.physics.arcade.collide(this.player, this.blocks);\r\n }\r\n }\r\n}\r\n","/// \r\n\r\nexport namespace BattleCity\r\n{\r\n export class MainMenu extends Phaser.State\r\n {\r\n background: Phaser.Sprite;\r\n pressEnter: Phaser.Sprite;\r\n toStart: Phaser.Sprite;\r\n\r\n enterKey: Phaser.Key;\r\n\r\n create()\r\n {\r\n this.background = this.add.sprite(0, 0, \"titlepage\");\r\n this.pressEnter = this.add.sprite(this.world.width / 2, this.world.height / 2 + 100, \"battleCityScene\", \"press_enter.png\");\r\n this.pressEnter.anchor.setTo(0.5);\r\n this.toStart = this.add.sprite(this.world.width / 2, this.world.height / 2 + 120, \"battleCityScene\", \"to_start.png\");\r\n this.toStart.anchor.setTo(0.5);\r\n\r\n // Start Game\r\n this.enterKey = this.input.keyboard.addKey(Phaser.Keyboard.ENTER);\r\n this.enterKey.onDown.addOnce(this.start, this);\r\n }\r\n\r\n start()\r\n {\r\n this.state.start(\"Stage\");\r\n }\r\n }\r\n}","/// \r\n\r\nexport namespace BattleCity\r\n{\r\n enum Direction\r\n {\r\n Up, Left, Down, Right\r\n }\r\n\r\n export class Player extends Phaser.Sprite\r\n {\r\n \r\n private speed: number = 90;\r\n private currDir = Direction.Up;\r\n private xOffset: number = 32;\r\n private yOffset: number = 16;\r\n\r\n constructor(game: Phaser.Game, x: number, y: number)\r\n {\r\n super(game, x, y, \"battleCityScene\", \"tank_yellow_small_up_01.png\");\r\n this.anchor.setTo(0.5);\r\n game.add.existing(this);\r\n game.physics.enable(this);\r\n\r\n // Idle animations\r\n this.animations.add(\"idleUp\", [\"tank_yellow_small_up_01.png\"], 10, true, false);\r\n this.animations.add(\"idleDown\", [\"tank_yellow_small_down_01.png\"], 10, true, false);\r\n this.animations.add(\"idleLeft\", [\"tank_yellow_small_left_01.png\"], 10, true, false);\r\n this.animations.add(\"idleRight\", [\"tank_yellow_small_right_01.png\"], 10, true, false);\r\n\r\n // Move animations\r\n this.animations.add(\"driveUp\", [\"tank_yellow_small_up_01.png\", \"tank_yellow_small_up_02.png\"], 10, true, false);\r\n this.animations.add(\"driveDown\", [\"tank_yellow_small_down_01.png\", \"tank_yellow_small_down_02.png\"], 10, true, false);\r\n this.animations.add(\"driveLeft\", [\"tank_yellow_small_left_01.png\", \"tank_yellow_small_left_02.png\"], 10, true, false);\r\n this.animations.add(\"driveRight\", [\"tank_yellow_small_right_01.png\", \"tank_yellow_small_right_02.png\"], 10, true, false);\r\n }\r\n\r\n update()\r\n {\r\n this.body.velocity.x = 0;\r\n this.body.velocity.y = 0;\r\n\r\n if (this.game.input.keyboard.isDown(Phaser.Keyboard.W) ||\r\n this.game.input.keyboard.isDown(Phaser.Keyboard.UP))\r\n {\r\n this.animations.play(\"driveUp\");\r\n\r\n if (this.currDir != Direction.Up &&\r\n this.currDir != Direction.Down)\r\n {\r\n this.x = this.snapToGrid(this.x - this.xOffset) + this.xOffset;\r\n }\r\n\r\n this.currDir = Direction.Up;\r\n this.body.velocity.y = -this.speed;\r\n }\r\n else if (this.game.input.keyboard.isDown(Phaser.Keyboard.A) ||\r\n this.game.input.keyboard.isDown(Phaser.Keyboard.LEFT))\r\n {\r\n this.animations.play(\"driveLeft\");\r\n\r\n if (this.currDir != Direction.Left &&\r\n this.currDir != Direction.Right)\r\n {\r\n this.y = this.snapToGrid(this.y - this.yOffset) + this.yOffset;\r\n }\r\n\r\n this.currDir = Direction.Left;\r\n this.body.velocity.x = -this.speed;\r\n }\r\n else if (this.game.input.keyboard.isDown(Phaser.Keyboard.S) ||\r\n this.game.input.keyboard.isDown(Phaser.Keyboard.DOWN))\r\n {\r\n this.animations.play(\"driveDown\");\r\n\r\n if (this.currDir != Direction.Up &&\r\n this.currDir != Direction.Down)\r\n {\r\n this.x = this.snapToGrid(this.x - this.xOffset) + this.xOffset;\r\n }\r\n\r\n this.currDir = Direction.Down;\r\n this.body.velocity.y = this.speed;\r\n }\r\n else if (this.game.input.keyboard.isDown(Phaser.Keyboard.D) ||\r\n this.game.input.keyboard.isDown(Phaser.Keyboard.RIGHT))\r\n {\r\n this.animations.play(\"driveRight\");\r\n\r\n if (this.currDir != Direction.Left &&\r\n this.currDir != Direction.Right)\r\n {\r\n this.y = this.snapToGrid(this.y - this.yOffset) + this.yOffset;\r\n }\r\n\r\n this.currDir = Direction.Right;\r\n this.body.velocity.x = this.speed;\r\n }\r\n else\r\n {\r\n this.body.velocity.x = 0;\r\n this.body.velocity.y = 0;\r\n switch (this.currDir)\r\n {\r\n case Direction.Up:\r\n this.animations.play(\"idleUp\");\r\n break;\r\n case Direction.Left:\r\n this.animations.play(\"idleLeft\");\r\n break;\r\n case Direction.Down:\r\n this.animations.play(\"idleDown\");\r\n break;\r\n case Direction.Right:\r\n this.animations.play(\"idleRight\");\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Snap coordinate to a grid\r\n * @param coordinate from (8, 407]\r\n * @return snapped coordinate, like: 16, 32, 48, ..., 384, 400\r\n */\r\n private snapToGrid(coordinate: number): number\r\n {\r\n let stepValue = 16;\r\n\r\n let rangeNumber = coordinate / stepValue;\r\n // Discard the fractional part\r\n rangeNumber = rangeNumber - (rangeNumber % 1);\r\n // We get a rangeNumber like: 0, 1, 2, ..., 25\r\n\r\n // Snap a coordinate to the nearest grid node\r\n let remainder = coordinate % stepValue;\r\n let snappedCoordinate: number;\r\n if (remainder > stepValue / 2)\r\n {\r\n snappedCoordinate = (rangeNumber + 1) * stepValue;\r\n }\r\n else\r\n {\r\n snappedCoordinate = rangeNumber * stepValue;\r\n }\r\n\r\n return snappedCoordinate;\r\n }\r\n }\r\n}","/// \r\n\r\nexport namespace BattleCity\r\n{\r\n export class Preloader extends Phaser.State\r\n {\r\n preloadBar: Phaser.Sprite;\r\n\r\n preload()\r\n {\r\n this.preloadBar = this.game.add.sprite(200, 250, \"preloadBar\");\r\n this.load.setPreloadSprite(this.preloadBar);\r\n\r\n this.load.image(\"titlepage\", \"./assets/BattleCityTitle_512x512.png\");\r\n\r\n this.load.atlasJSONHash(\"battleCityScene\", \"./assets/battle_city_tiles_32px.png\", \"./assets/battle_city_tiles_32px.json\");\r\n }\r\n\r\n create()\r\n {\r\n this.game.state.start('MainMenu', true, false);\r\n }\r\n }\r\n}\r\n","/// \r\n\r\nexport namespace BattleCity\r\n{\r\n export class Stage extends Phaser.State\r\n {\r\n stageText: Phaser.Sprite;\r\n stageNumber: Phaser.Sprite;\r\n grayBackground: Phaser.Sprite;\r\n\r\n create()\r\n {\r\n // Background\r\n this.grayBackground = this.add.sprite(0, 0, \"battleCityScene\", \"gray_block.png\");\r\n this.grayBackground.width = this.world.width;\r\n this.grayBackground.height = this.world.height;\r\n\r\n // Stage Text\r\n this.stageText = this.add.sprite(this.world.width / 2, this.world.height / 2, \"battleCityScene\", \"stage.png\");\r\n this.stageText.anchor.setTo(0.5);\r\n\r\n // Stage Number\r\n this.stageNumber = this.add.sprite(this.world.width / 2 + this.stageText.width / 2 + 10, this.world.height / 2, \"battleCityScene\", \"_1.png\");\r\n this.stageNumber.anchor.setTo(0, 0.5);\r\n\r\n this.time.events.add(Phaser.Timer.SECOND * 1, this.startLevel, this);\r\n }\r\n\r\n startLevel()\r\n {\r\n this.state.start(\"Level01\");\r\n }\r\n }\r\n}\r\n"]}