├── 000
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── boot-game.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── play-game.js
└── webpack.config.js
├── 001
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ └── emptytile.png
│ ├── boot-game.js
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── play-game.js
└── webpack.config.js
├── 002
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 003
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 004
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 005
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 006
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 007
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 008
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 009
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 010
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 011
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 012
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 013
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 014
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 015
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 016
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 017
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 018
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 019
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 020
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ ├── sounds
│ │ │ ├── grow.mp3
│ │ │ ├── grow.ogg
│ │ │ ├── move.mp3
│ │ │ └── move.ogg
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 021
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ ├── sounds
│ │ │ ├── grow.mp3
│ │ │ ├── grow.ogg
│ │ │ ├── move.mp3
│ │ │ └── move.ogg
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 022
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ ├── sounds
│ │ │ ├── grow.mp3
│ │ │ ├── grow.ogg
│ │ │ ├── move.mp3
│ │ │ └── move.ogg
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ ├── gametitle.png
│ │ │ ├── howtoplay.png
│ │ │ ├── logo.png
│ │ │ ├── restart.png
│ │ │ ├── scorelabels.png
│ │ │ ├── scorepanel.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 023
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ ├── sounds
│ │ │ ├── grow.mp3
│ │ │ ├── grow.ogg
│ │ │ ├── move.mp3
│ │ │ └── move.ogg
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ ├── gametitle.png
│ │ │ ├── howtoplay.png
│ │ │ ├── logo.png
│ │ │ ├── restart.png
│ │ │ ├── scorelabels.png
│ │ │ ├── scorepanel.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 024
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ ├── fonts
│ │ │ ├── font.fnt
│ │ │ └── font.png
│ │ ├── sounds
│ │ │ ├── grow.mp3
│ │ │ ├── grow.ogg
│ │ │ ├── move.mp3
│ │ │ └── move.ogg
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ ├── gametitle.png
│ │ │ ├── howtoplay.png
│ │ │ ├── logo.png
│ │ │ ├── restart.png
│ │ │ ├── scorelabels.png
│ │ │ ├── scorepanel.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 025
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ ├── fonts
│ │ │ ├── font.fnt
│ │ │ └── font.png
│ │ ├── sounds
│ │ │ ├── grow.mp3
│ │ │ ├── grow.ogg
│ │ │ ├── move.mp3
│ │ │ └── move.ogg
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ ├── gametitle.png
│ │ │ ├── howtoplay.png
│ │ │ ├── logo.png
│ │ │ ├── restart.png
│ │ │ ├── scorelabels.png
│ │ │ ├── scorepanel.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 026
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ ├── fonts
│ │ │ ├── font.fnt
│ │ │ └── font.png
│ │ ├── sounds
│ │ │ ├── grow.mp3
│ │ │ ├── grow.ogg
│ │ │ ├── move.mp3
│ │ │ └── move.ogg
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ ├── gametitle.png
│ │ │ ├── howtoplay.png
│ │ │ ├── logo.png
│ │ │ ├── restart.png
│ │ │ ├── scorelabels.png
│ │ │ ├── scorepanel.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 027
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ ├── fonts
│ │ │ ├── font.fnt
│ │ │ └── font.png
│ │ ├── sounds
│ │ │ ├── grow.mp3
│ │ │ ├── grow.ogg
│ │ │ ├── move.mp3
│ │ │ └── move.ogg
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ ├── gametitle.png
│ │ │ ├── howtoplay.png
│ │ │ ├── logo.png
│ │ │ ├── restart.png
│ │ │ ├── scorelabels.png
│ │ │ ├── scorepanel.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ ├── make-resize-game.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 028
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ ├── fonts
│ │ │ ├── font.fnt
│ │ │ └── font.png
│ │ ├── sounds
│ │ │ ├── grow.mp3
│ │ │ ├── grow.ogg
│ │ │ ├── move.mp3
│ │ │ └── move.ogg
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ ├── gametitle.png
│ │ │ ├── howtoplay.png
│ │ │ ├── logo.png
│ │ │ ├── restart.png
│ │ │ ├── scorelabels.png
│ │ │ ├── scorepanel.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── 029
├── .babelrc
├── .browserslistrc
├── .gitignore
├── package-lock.json
├── package.json
├── src
│ ├── assets
│ │ ├── fonts
│ │ │ ├── font.fnt
│ │ │ └── font.png
│ │ ├── sounds
│ │ │ ├── grow.mp3
│ │ │ ├── grow.ogg
│ │ │ ├── move.mp3
│ │ │ └── move.ogg
│ │ └── sprites
│ │ │ ├── emptytile.png
│ │ │ ├── fullscreen.png
│ │ │ ├── gametitle.png
│ │ │ ├── howtoplay.png
│ │ │ ├── logo.png
│ │ │ ├── restart.png
│ │ │ ├── scorelabels.png
│ │ │ ├── scorepanel.png
│ │ │ └── tiles.png
│ ├── game-options.js
│ ├── index.html
│ ├── index.js
│ └── scenes
│ │ ├── boot-game.js
│ │ ├── index.js
│ │ └── play-game.js
└── webpack.config.js
├── README.md
├── TODO
└── cordovafolder
├── .gitignore
├── config.xml
├── hooks
└── README.md
├── package-lock.json
├── package.json
├── platforms
└── android
│ ├── .gitignore
│ ├── CordovaLib
│ ├── AndroidManifest.xml
│ ├── CordovaLib.iml
│ ├── build.gradle
│ ├── cordova.gradle
│ ├── project.properties
│ └── src
│ │ └── org
│ │ └── apache
│ │ └── cordova
│ │ ├── AuthenticationToken.java
│ │ ├── BuildHelper.java
│ │ ├── CallbackContext.java
│ │ ├── CallbackMap.java
│ │ ├── Config.java
│ │ ├── ConfigXmlParser.java
│ │ ├── CordovaActivity.java
│ │ ├── CordovaArgs.java
│ │ ├── CordovaBridge.java
│ │ ├── CordovaClientCertRequest.java
│ │ ├── CordovaDialogsHelper.java
│ │ ├── CordovaHttpAuthHandler.java
│ │ ├── CordovaInterface.java
│ │ ├── CordovaInterfaceImpl.java
│ │ ├── CordovaPlugin.java
│ │ ├── CordovaPreferences.java
│ │ ├── CordovaResourceApi.java
│ │ ├── CordovaWebView.java
│ │ ├── CordovaWebViewEngine.java
│ │ ├── CordovaWebViewImpl.java
│ │ ├── CoreAndroid.java
│ │ ├── ExposedJsApi.java
│ │ ├── ICordovaClientCertRequest.java
│ │ ├── ICordovaCookieManager.java
│ │ ├── ICordovaHttpAuthHandler.java
│ │ ├── LOG.java
│ │ ├── NativeToJsMessageQueue.java
│ │ ├── PermissionHelper.java
│ │ ├── PluginEntry.java
│ │ ├── PluginManager.java
│ │ ├── PluginResult.java
│ │ ├── ResumeCallback.java
│ │ ├── Whitelist.java
│ │ └── engine
│ │ ├── SystemCookieManager.java
│ │ ├── SystemExposedJsApi.java
│ │ ├── SystemWebChromeClient.java
│ │ ├── SystemWebView.java
│ │ ├── SystemWebViewClient.java
│ │ └── SystemWebViewEngine.java
│ ├── android.iml
│ ├── android.json
│ ├── app
│ ├── app.iml
│ ├── build.gradle
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ └── www
│ │ │ ├── 05cf183c9f396342019b7b41a4cf2c5c.mp3
│ │ │ ├── 0bf06b0fd712e657f6bbda07936a3321.png
│ │ │ ├── 144d504eff90ac62d04caf0a36b668f9.png
│ │ │ ├── 180f716f5635a1e58f8578b0ffd28f00.png
│ │ │ ├── 21c1ad9d5230937941717a54f97aa467.png
│ │ │ ├── 2cdbf576ab8c8dc655a870bc5b9a6ab4.mp3
│ │ │ ├── 3a5a21c67311261b80eb3857987248be.fnt
│ │ │ ├── 3b6fe7d0433f73d031c160a45f5de3fc.png
│ │ │ ├── 4a1a1c0e5ef7f50a7f7d1fb06e04bbe0.png
│ │ │ ├── 81c42d5e25fa9841a62aeee9f94e4c1c.png
│ │ │ ├── b2893590601c5b128cff28d4d0a53f71.png
│ │ │ ├── ccded6b9b4ea23c94c390e89cb25dc44.png
│ │ │ ├── cordova-js-src
│ │ │ ├── android
│ │ │ │ ├── nativeapiprovider.js
│ │ │ │ └── promptbasednativeapi.js
│ │ │ ├── exec.js
│ │ │ ├── platform.js
│ │ │ └── plugin
│ │ │ │ └── android
│ │ │ │ └── app.js
│ │ │ ├── cordova.js
│ │ │ ├── cordova_plugins.js
│ │ │ ├── d45b431900f759a42b185127b9ea034a.png
│ │ │ ├── dd7ce68917a25e9883b1b2db6360e5e5.ogg
│ │ │ ├── f6cd2fcbcafcf78f2a0e7fe8be1d3ff1.ogg
│ │ │ ├── index.html
│ │ │ └── main.js
│ │ ├── java
│ │ ├── com
│ │ │ └── emanueleferonato
│ │ │ │ └── game4096
│ │ │ │ └── MainActivity.java
│ │ └── org
│ │ │ └── apache
│ │ │ └── cordova
│ │ │ └── whitelist
│ │ │ └── WhitelistPlugin.java
│ │ └── res
│ │ ├── drawable-land-hdpi
│ │ └── screen.png
│ │ ├── drawable-land-ldpi
│ │ └── screen.png
│ │ ├── drawable-land-mdpi
│ │ └── screen.png
│ │ ├── drawable-land-xhdpi
│ │ └── screen.png
│ │ ├── drawable-land-xxhdpi
│ │ └── screen.png
│ │ ├── drawable-land-xxxhdpi
│ │ └── screen.png
│ │ ├── drawable-port-hdpi
│ │ └── screen.png
│ │ ├── drawable-port-ldpi
│ │ └── screen.png
│ │ ├── drawable-port-mdpi
│ │ └── screen.png
│ │ ├── drawable-port-xhdpi
│ │ └── screen.png
│ │ ├── drawable-port-xxhdpi
│ │ └── screen.png
│ │ ├── drawable-port-xxxhdpi
│ │ └── screen.png
│ │ ├── mipmap-hdpi-v26
│ │ ├── ic_launcher.xml
│ │ ├── ic_launcher_background.png
│ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-hdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-ldpi-v26
│ │ ├── ic_launcher.xml
│ │ ├── ic_launcher_background.png
│ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-ldpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-mdpi-v26
│ │ ├── ic_launcher.xml
│ │ ├── ic_launcher_background.png
│ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-mdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xhdpi-v26
│ │ ├── ic_launcher.xml
│ │ ├── ic_launcher_background.png
│ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-xhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxhdpi-v26
│ │ ├── ic_launcher.xml
│ │ ├── ic_launcher_background.png
│ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-xxhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxxhdpi-v26
│ │ ├── ic_launcher.xml
│ │ ├── ic_launcher_background.png
│ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-xxxhdpi
│ │ └── ic_launcher.png
│ │ ├── values
│ │ └── strings.xml
│ │ └── xml
│ │ └── config.xml
│ ├── build.gradle
│ ├── cordova
│ ├── Api.js
│ ├── android_sdk_version
│ ├── android_sdk_version.bat
│ ├── build
│ ├── build.bat
│ ├── check_reqs
│ ├── check_reqs.bat
│ ├── clean
│ ├── clean.bat
│ ├── defaults.xml
│ ├── lib
│ │ ├── Adb.js
│ │ ├── AndroidManifest.js
│ │ ├── AndroidProject.js
│ │ ├── android_sdk.js
│ │ ├── build.js
│ │ ├── builders
│ │ │ ├── ProjectBuilder.js
│ │ │ └── builders.js
│ │ ├── check_reqs.js
│ │ ├── config
│ │ │ └── GradlePropertiesParser.js
│ │ ├── device.js
│ │ ├── emulator.js
│ │ ├── getASPath.bat
│ │ ├── install-device
│ │ ├── install-device.bat
│ │ ├── install-emulator
│ │ ├── install-emulator.bat
│ │ ├── list-devices
│ │ ├── list-devices.bat
│ │ ├── list-emulator-images
│ │ ├── list-emulator-images.bat
│ │ ├── list-started-emulators
│ │ ├── list-started-emulators.bat
│ │ ├── log.js
│ │ ├── plugin-build.gradle
│ │ ├── pluginHandlers.js
│ │ ├── prepare.js
│ │ ├── retry.js
│ │ ├── run.js
│ │ ├── start-emulator
│ │ └── start-emulator.bat
│ ├── log
│ ├── log.bat
│ ├── loggingHelper.js
│ ├── run
│ ├── run.bat
│ ├── version
│ └── version.bat
│ ├── gradle.properties
│ ├── platform_www
│ ├── cordova-js-src
│ │ ├── android
│ │ │ ├── nativeapiprovider.js
│ │ │ └── promptbasednativeapi.js
│ │ ├── exec.js
│ │ ├── platform.js
│ │ └── plugin
│ │ │ └── android
│ │ │ └── app.js
│ ├── cordova.js
│ └── cordova_plugins.js
│ ├── project.properties
│ ├── settings.gradle
│ └── wrapper.gradle
├── plugins
├── android.json
├── cordova-plugin-whitelist
│ ├── .github
│ │ └── PULL_REQUEST_TEMPLATE.md
│ ├── CONTRIBUTING.md
│ ├── LICENSE
│ ├── NOTICE
│ ├── README.md
│ ├── RELEASENOTES.md
│ ├── doc
│ │ ├── de
│ │ │ └── README.md
│ │ ├── es
│ │ │ └── README.md
│ │ ├── fr
│ │ │ └── README.md
│ │ ├── it
│ │ │ └── README.md
│ │ ├── ja
│ │ │ └── README.md
│ │ ├── ko
│ │ │ └── README.md
│ │ ├── pl
│ │ │ └── README.md
│ │ └── zh
│ │ │ └── README.md
│ ├── package.json
│ ├── plugin.xml
│ └── src
│ │ └── android
│ │ └── WhitelistPlugin.java
└── fetch.json
└── www
├── 05cf183c9f396342019b7b41a4cf2c5c.mp3
├── 0bf06b0fd712e657f6bbda07936a3321.png
├── 144d504eff90ac62d04caf0a36b668f9.png
├── 180f716f5635a1e58f8578b0ffd28f00.png
├── 21c1ad9d5230937941717a54f97aa467.png
├── 2cdbf576ab8c8dc655a870bc5b9a6ab4.mp3
├── 3a5a21c67311261b80eb3857987248be.fnt
├── 3b6fe7d0433f73d031c160a45f5de3fc.png
├── 4a1a1c0e5ef7f50a7f7d1fb06e04bbe0.png
├── 81c42d5e25fa9841a62aeee9f94e4c1c.png
├── b2893590601c5b128cff28d4d0a53f71.png
├── ccded6b9b4ea23c94c390e89cb25dc44.png
├── d45b431900f759a42b185127b9ea034a.png
├── dd7ce68917a25e9883b1b2db6360e5e5.ogg
├── f6cd2fcbcafcf78f2a0e7fe8be1d3ff1.ogg
├── index.html
└── main.js
/000/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/000/.browserslistrc:
--------------------------------------------------------------------------------
1 | > 0.25%
2 | not dead
3 |
--------------------------------------------------------------------------------
/000/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/000/src/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | class BootGame extends Phaser.Scene {
4 | constructor () {
5 | super('BootGame')
6 | }
7 |
8 | create () {
9 | console.log('game is booting...')
10 | this.scene.start('PlayGame')
11 | }
12 | }
13 |
14 | export default BootGame
15 |
--------------------------------------------------------------------------------
/000/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/000/src/index.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import BootGame from './boot-game'
4 | import makeResizeGame from './make-resize-game'
5 | import PlayGame from './play-game'
6 |
7 | window.onload = function () {
8 | const gameConfig = {
9 | backgroundColor: 0xff0000,
10 | height: 640,
11 | scene: [BootGame, PlayGame],
12 | width: 480
13 | }
14 |
15 | const game = new Phaser.Game(gameConfig)
16 | window.focus()
17 | const resizeGame = makeResizeGame(game)
18 | resizeGame()
19 | window.addEventListener('resize', resizeGame)
20 | }
21 |
--------------------------------------------------------------------------------
/000/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/000/src/play-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | class PlayGame extends Phaser.Scene {
4 | constructor () {
5 | super('PlayGame')
6 | }
7 |
8 | create () {
9 | console.log('this is my awesome game')
10 | }
11 | }
12 |
13 | export default PlayGame
14 |
--------------------------------------------------------------------------------
/000/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }]
17 | },
18 | plugins: [
19 | new HtmlWebpackPlugin({
20 | filename: './index.html',
21 | template: './src/index.html'
22 | })
23 | ]
24 | }
25 |
--------------------------------------------------------------------------------
/001/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/001/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/001/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/001/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/001/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/001/src/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import emptytile from './assets/sprites/emptytile.png'
4 |
5 | class BootGame extends Phaser.Scene {
6 | constructor () {
7 | super('BootGame')
8 | }
9 |
10 | preload () {
11 | this.load.image('emptytile', emptytile)
12 | }
13 |
14 | create () {
15 | console.log('game is booting...')
16 | this.scene.start('PlayGame')
17 | }
18 | }
19 |
20 | export default BootGame
21 |
--------------------------------------------------------------------------------
/001/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | tileSize: 200,
7 | tileSpacing: 20
8 | }
9 |
--------------------------------------------------------------------------------
/001/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/001/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/001/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/002/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/002/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/002/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/002/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/002/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/002/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/002/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/002/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | tileSize: 200,
7 | tileSpacing: 20
8 | }
9 |
--------------------------------------------------------------------------------
/002/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/002/src/index.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import { BootGame, PlayGame } from './scenes'
4 |
5 | import gameOptions from './game-options'
6 | import makeResizeGame from './make-resize-game'
7 |
8 | window.onload = function () {
9 | const gameConfig = {
10 | backgroundColor: 0xecf0f1,
11 | height: gameOptions.boardSize.rows * (gameOptions.tileSize +
12 | gameOptions.tileSpacing) + gameOptions.tileSpacing,
13 | scene: [BootGame, PlayGame],
14 | width: gameOptions.boardSize.cols * (gameOptions.tileSize +
15 | gameOptions.tileSpacing) + gameOptions.tileSpacing
16 | }
17 |
18 | const game = new Phaser.Game(gameConfig)
19 | window.focus()
20 | const resizeGame = makeResizeGame(game)
21 | resizeGame()
22 | window.addEventListener('resize', resizeGame)
23 | }
24 |
--------------------------------------------------------------------------------
/002/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/002/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/002/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/002/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/003/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/003/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/003/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/003/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/003/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/003/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/003/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/003/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | tileSize: 200,
7 | tileSpacing: 20
8 | }
9 |
--------------------------------------------------------------------------------
/003/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/003/src/index.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import { BootGame, PlayGame } from './scenes'
4 |
5 | import gameOptions from './game-options'
6 | import makeResizeGame from './make-resize-game'
7 |
8 | window.onload = function () {
9 | const gameConfig = {
10 | backgroundColor: 0xecf0f1,
11 | height: gameOptions.boardSize.rows * (gameOptions.tileSize +
12 | gameOptions.tileSpacing) + gameOptions.tileSpacing,
13 | scene: [BootGame, PlayGame],
14 | width: gameOptions.boardSize.cols * (gameOptions.tileSize +
15 | gameOptions.tileSpacing) + gameOptions.tileSpacing
16 | }
17 |
18 | const game = new Phaser.Game(gameConfig)
19 | window.focus()
20 | const resizeGame = makeResizeGame(game)
21 | resizeGame()
22 | window.addEventListener('resize', resizeGame)
23 | }
24 |
--------------------------------------------------------------------------------
/003/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/003/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/003/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/003/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/004/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/004/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/004/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/004/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/004/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/004/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/004/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/004/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | tileSize: 200,
7 | tileSpacing: 20,
8 | tweenSpeed: 2000
9 | }
10 |
--------------------------------------------------------------------------------
/004/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/004/src/index.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import { BootGame, PlayGame } from './scenes'
4 |
5 | import gameOptions from './game-options'
6 | import makeResizeGame from './make-resize-game'
7 |
8 | window.onload = function () {
9 | const gameConfig = {
10 | backgroundColor: 0xecf0f1,
11 | height: gameOptions.boardSize.rows * (gameOptions.tileSize +
12 | gameOptions.tileSpacing) + gameOptions.tileSpacing,
13 | scene: [BootGame, PlayGame],
14 | width: gameOptions.boardSize.cols * (gameOptions.tileSize +
15 | gameOptions.tileSpacing) + gameOptions.tileSpacing
16 | }
17 |
18 | const game = new Phaser.Game(gameConfig)
19 | window.focus()
20 | const resizeGame = makeResizeGame(game)
21 | resizeGame()
22 | window.addEventListener('resize', resizeGame)
23 | }
24 |
--------------------------------------------------------------------------------
/004/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/004/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/004/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/004/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/005/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/005/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/005/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/005/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/005/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/005/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/005/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/005/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | tileSize: 200,
7 | tileSpacing: 20,
8 | tweenSpeed: 2000
9 | }
10 |
--------------------------------------------------------------------------------
/005/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/005/src/index.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import { BootGame, PlayGame } from './scenes'
4 |
5 | import gameOptions from './game-options'
6 | import makeResizeGame from './make-resize-game'
7 |
8 | window.onload = function () {
9 | const gameConfig = {
10 | backgroundColor: 0xecf0f1,
11 | height: gameOptions.boardSize.rows * (gameOptions.tileSize +
12 | gameOptions.tileSpacing) + gameOptions.tileSpacing,
13 | scene: [BootGame, PlayGame],
14 | width: gameOptions.boardSize.cols * (gameOptions.tileSize +
15 | gameOptions.tileSpacing) + gameOptions.tileSpacing
16 | }
17 |
18 | const game = new Phaser.Game(gameConfig)
19 | window.focus()
20 | const resizeGame = makeResizeGame(game)
21 | resizeGame()
22 | window.addEventListener('resize', resizeGame)
23 | }
24 |
--------------------------------------------------------------------------------
/005/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/005/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/005/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/005/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/006/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/006/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/006/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/006/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/006/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/006/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/006/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/006/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | tileSize: 200,
7 | tileSpacing: 20,
8 | tweenSpeed: 2000
9 | }
10 |
--------------------------------------------------------------------------------
/006/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/006/src/index.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import { BootGame, PlayGame } from './scenes'
4 |
5 | import gameOptions from './game-options'
6 | import makeResizeGame from './make-resize-game'
7 |
8 | window.onload = function () {
9 | const gameConfig = {
10 | backgroundColor: 0xecf0f1,
11 | height: gameOptions.boardSize.rows * (gameOptions.tileSize +
12 | gameOptions.tileSpacing) + gameOptions.tileSpacing,
13 | scene: [BootGame, PlayGame],
14 | width: gameOptions.boardSize.cols * (gameOptions.tileSize +
15 | gameOptions.tileSpacing) + gameOptions.tileSpacing
16 | }
17 |
18 | const game = new Phaser.Game(gameConfig)
19 | window.focus()
20 | const resizeGame = makeResizeGame(game)
21 | resizeGame()
22 | window.addEventListener('resize', resizeGame)
23 | }
24 |
--------------------------------------------------------------------------------
/006/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/006/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/006/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/006/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/007/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/007/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/007/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/007/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/007/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/007/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/007/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/007/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | tileSize: 200,
7 | tileSpacing: 20,
8 | tweenSpeed: 2000
9 | }
10 |
11 | const LEFT = 0
12 | const RIGHT = 1
13 | const UP = 2
14 | const DOWN = 3
15 |
16 | export const constants = {
17 | LEFT,
18 | RIGHT,
19 | UP,
20 | DOWN
21 | }
22 |
--------------------------------------------------------------------------------
/007/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/007/src/index.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import { BootGame, PlayGame } from './scenes'
4 |
5 | import gameOptions from './game-options'
6 | import makeResizeGame from './make-resize-game'
7 |
8 | window.onload = function () {
9 | const gameConfig = {
10 | backgroundColor: 0xecf0f1,
11 | height: gameOptions.boardSize.rows * (gameOptions.tileSize +
12 | gameOptions.tileSpacing) + gameOptions.tileSpacing,
13 | scene: [BootGame, PlayGame],
14 | width: gameOptions.boardSize.cols * (gameOptions.tileSize +
15 | gameOptions.tileSpacing) + gameOptions.tileSpacing
16 | }
17 |
18 | const game = new Phaser.Game(gameConfig)
19 | window.focus()
20 | const resizeGame = makeResizeGame(game)
21 | resizeGame()
22 | window.addEventListener('resize', resizeGame)
23 | }
24 |
--------------------------------------------------------------------------------
/007/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/007/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/007/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/007/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/008/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/008/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/008/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/008/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/008/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/008/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/008/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/008/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | swipeMaxTime: 1000,
7 | swipeMinDistance: 20,
8 | swipeMinNormal: 0.85,
9 | tileSize: 200,
10 | tileSpacing: 20,
11 | tweenSpeed: 2000
12 | }
13 |
14 | const LEFT = 0
15 | const RIGHT = 1
16 | const UP = 2
17 | const DOWN = 3
18 |
19 | export const constants = {
20 | LEFT,
21 | RIGHT,
22 | UP,
23 | DOWN
24 | }
25 |
--------------------------------------------------------------------------------
/008/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/008/src/index.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import { BootGame, PlayGame } from './scenes'
4 |
5 | import gameOptions from './game-options'
6 | import makeResizeGame from './make-resize-game'
7 |
8 | window.onload = function () {
9 | const gameConfig = {
10 | backgroundColor: 0xecf0f1,
11 | height: gameOptions.boardSize.rows * (gameOptions.tileSize +
12 | gameOptions.tileSpacing) + gameOptions.tileSpacing,
13 | scene: [BootGame, PlayGame],
14 | width: gameOptions.boardSize.cols * (gameOptions.tileSize +
15 | gameOptions.tileSpacing) + gameOptions.tileSpacing
16 | }
17 |
18 | const game = new Phaser.Game(gameConfig)
19 | window.focus()
20 | const resizeGame = makeResizeGame(game)
21 | resizeGame()
22 | window.addEventListener('resize', resizeGame)
23 | }
24 |
--------------------------------------------------------------------------------
/008/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/008/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/008/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/008/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/009/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/009/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/009/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/009/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/009/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/009/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/009/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/009/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | swipeMaxTime: 1000,
7 | swipeMinDistance: 20,
8 | swipeMinNormal: 0.85,
9 | tileSize: 200,
10 | tileSpacing: 20,
11 | tweenSpeed: 200
12 | }
13 |
14 | const LEFT = 0
15 | const RIGHT = 1
16 | const UP = 2
17 | const DOWN = 3
18 |
19 | export const constants = {
20 | LEFT,
21 | RIGHT,
22 | UP,
23 | DOWN
24 | }
25 |
--------------------------------------------------------------------------------
/009/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/009/src/index.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import { BootGame, PlayGame } from './scenes'
4 |
5 | import gameOptions from './game-options'
6 | import makeResizeGame from './make-resize-game'
7 |
8 | window.onload = function () {
9 | const gameConfig = {
10 | backgroundColor: 0xecf0f1,
11 | height: gameOptions.boardSize.rows * (gameOptions.tileSize +
12 | gameOptions.tileSpacing) + gameOptions.tileSpacing,
13 | scene: [BootGame, PlayGame],
14 | width: gameOptions.boardSize.cols * (gameOptions.tileSize +
15 | gameOptions.tileSpacing) + gameOptions.tileSpacing
16 | }
17 |
18 | const game = new Phaser.Game(gameConfig)
19 | window.focus()
20 | const resizeGame = makeResizeGame(game)
21 | resizeGame()
22 | window.addEventListener('resize', resizeGame)
23 | }
24 |
--------------------------------------------------------------------------------
/009/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/009/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/009/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/009/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/010/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/010/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/010/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/010/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/010/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/010/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/010/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/010/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | swipeMaxTime: 1000,
7 | swipeMinDistance: 20,
8 | swipeMinNormal: 0.85,
9 | tileSize: 200,
10 | tileSpacing: 20,
11 | tweenSpeed: 200
12 | }
13 |
14 | const LEFT = 0
15 | const RIGHT = 1
16 | const UP = 2
17 | const DOWN = 3
18 |
19 | export const constants = {
20 | LEFT,
21 | RIGHT,
22 | UP,
23 | DOWN
24 | }
25 |
--------------------------------------------------------------------------------
/010/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/010/src/index.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import { BootGame, PlayGame } from './scenes'
4 |
5 | import gameOptions from './game-options'
6 | import makeResizeGame from './make-resize-game'
7 |
8 | window.onload = function () {
9 | const gameConfig = {
10 | backgroundColor: 0xecf0f1,
11 | height: gameOptions.boardSize.rows * (gameOptions.tileSize +
12 | gameOptions.tileSpacing) + gameOptions.tileSpacing,
13 | scene: [BootGame, PlayGame],
14 | width: gameOptions.boardSize.cols * (gameOptions.tileSize +
15 | gameOptions.tileSpacing) + gameOptions.tileSpacing
16 | }
17 |
18 | const game = new Phaser.Game(gameConfig)
19 | window.focus()
20 | const resizeGame = makeResizeGame(game)
21 | resizeGame()
22 | window.addEventListener('resize', resizeGame)
23 | }
24 |
--------------------------------------------------------------------------------
/010/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/010/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/010/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/010/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/011/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/011/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/011/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/011/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/011/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/011/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/011/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/011/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | swipeMaxTime: 1000,
7 | swipeMinDistance: 20,
8 | swipeMinNormal: 0.85,
9 | tileSize: 200,
10 | tileSpacing: 20,
11 | tweenSpeed: 200
12 | }
13 |
14 | const LEFT = 0
15 | const RIGHT = 1
16 | const UP = 2
17 | const DOWN = 3
18 |
19 | export const constants = {
20 | LEFT,
21 | RIGHT,
22 | UP,
23 | DOWN
24 | }
25 |
--------------------------------------------------------------------------------
/011/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/011/src/index.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import { BootGame, PlayGame } from './scenes'
4 |
5 | import gameOptions from './game-options'
6 | import makeResizeGame from './make-resize-game'
7 |
8 | window.onload = function () {
9 | const gameConfig = {
10 | backgroundColor: 0xecf0f1,
11 | height: gameOptions.boardSize.rows * (gameOptions.tileSize +
12 | gameOptions.tileSpacing) + gameOptions.tileSpacing,
13 | scene: [BootGame, PlayGame],
14 | width: gameOptions.boardSize.cols * (gameOptions.tileSize +
15 | gameOptions.tileSpacing) + gameOptions.tileSpacing
16 | }
17 |
18 | const game = new Phaser.Game(gameConfig)
19 | window.focus()
20 | const resizeGame = makeResizeGame(game)
21 | resizeGame()
22 | window.addEventListener('resize', resizeGame)
23 | }
24 |
--------------------------------------------------------------------------------
/011/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/011/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/011/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/011/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/012/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/012/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/012/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/012/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/012/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/012/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/012/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/012/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | swipeMaxTime: 1000,
7 | swipeMinDistance: 20,
8 | swipeMinNormal: 0.85,
9 | tileSize: 200,
10 | tileSpacing: 20,
11 | tweenSpeed: 200
12 | }
13 |
14 | const LEFT = 0
15 | const RIGHT = 1
16 | const UP = 2
17 | const DOWN = 3
18 |
19 | export const directions = {
20 | LEFT,
21 | RIGHT,
22 | UP,
23 | DOWN
24 | }
25 |
--------------------------------------------------------------------------------
/012/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/012/src/index.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import { BootGame, PlayGame } from './scenes'
4 |
5 | import gameOptions from './game-options'
6 | import makeResizeGame from './make-resize-game'
7 |
8 | window.onload = function () {
9 | const gameConfig = {
10 | backgroundColor: 0xecf0f1,
11 | height: gameOptions.boardSize.rows * (gameOptions.tileSize +
12 | gameOptions.tileSpacing) + gameOptions.tileSpacing,
13 | scene: [BootGame, PlayGame],
14 | width: gameOptions.boardSize.cols * (gameOptions.tileSize +
15 | gameOptions.tileSpacing) + gameOptions.tileSpacing
16 | }
17 |
18 | const game = new Phaser.Game(gameConfig)
19 | window.focus()
20 | const resizeGame = makeResizeGame(game)
21 | resizeGame()
22 | window.addEventListener('resize', resizeGame)
23 | }
24 |
--------------------------------------------------------------------------------
/012/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/012/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/012/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/012/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/013/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/013/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/013/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/013/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/013/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/013/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/013/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/013/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | swipeMaxTime: 1000,
7 | swipeMinDistance: 20,
8 | swipeMinNormal: 0.85,
9 | tileSize: 200,
10 | tileSpacing: 20,
11 | tweenSpeed: 200
12 | }
13 |
14 | const LEFT = 0
15 | const RIGHT = 1
16 | const UP = 2
17 | const DOWN = 3
18 |
19 | export const directions = {
20 | LEFT,
21 | RIGHT,
22 | UP,
23 | DOWN
24 | }
25 |
--------------------------------------------------------------------------------
/013/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/013/src/index.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import { BootGame, PlayGame } from './scenes'
4 |
5 | import gameOptions from './game-options'
6 | import makeResizeGame from './make-resize-game'
7 |
8 | window.onload = function () {
9 | const gameConfig = {
10 | backgroundColor: 0xecf0f1,
11 | height: gameOptions.boardSize.rows * (gameOptions.tileSize +
12 | gameOptions.tileSpacing) + gameOptions.tileSpacing,
13 | scene: [BootGame, PlayGame],
14 | width: gameOptions.boardSize.cols * (gameOptions.tileSize +
15 | gameOptions.tileSpacing) + gameOptions.tileSpacing
16 | }
17 |
18 | const game = new Phaser.Game(gameConfig)
19 | window.focus()
20 | const resizeGame = makeResizeGame(game)
21 | resizeGame()
22 | window.addEventListener('resize', resizeGame)
23 | }
24 |
--------------------------------------------------------------------------------
/013/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/013/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/013/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/013/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/014/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/014/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/014/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/014/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/014/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/014/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/014/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/014/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | swipeMaxTime: 1000,
7 | swipeMinDistance: 20,
8 | swipeMinNormal: 0.85,
9 | tileSize: 200,
10 | tileSpacing: 20,
11 | tweenSpeed: 200
12 | }
13 |
14 | const LEFT = 0
15 | const RIGHT = 1
16 | const UP = 2
17 | const DOWN = 3
18 |
19 | export const directions = {
20 | LEFT,
21 | RIGHT,
22 | UP,
23 | DOWN
24 | }
25 |
--------------------------------------------------------------------------------
/014/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/014/src/index.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import { BootGame, PlayGame } from './scenes'
4 |
5 | import gameOptions from './game-options'
6 | import makeResizeGame from './make-resize-game'
7 |
8 | window.onload = function () {
9 | const gameConfig = {
10 | backgroundColor: 0xecf0f1,
11 | height: gameOptions.boardSize.rows * (gameOptions.tileSize +
12 | gameOptions.tileSpacing) + gameOptions.tileSpacing,
13 | scene: [BootGame, PlayGame],
14 | width: gameOptions.boardSize.cols * (gameOptions.tileSize +
15 | gameOptions.tileSpacing) + gameOptions.tileSpacing
16 | }
17 |
18 | const game = new Phaser.Game(gameConfig)
19 | window.focus()
20 | const resizeGame = makeResizeGame(game)
21 | resizeGame()
22 | window.addEventListener('resize', resizeGame)
23 | }
24 |
--------------------------------------------------------------------------------
/014/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/014/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/014/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/014/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/015/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/015/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/015/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/015/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/015/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/015/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/015/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/015/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | swipeMaxTime: 1000,
7 | swipeMinDistance: 20,
8 | swipeMinNormal: 0.85,
9 | tileSize: 200,
10 | tileSpacing: 20,
11 | tweenSpeed: 200
12 | }
13 |
14 | const LEFT = 0
15 | const RIGHT = 1
16 | const UP = 2
17 | const DOWN = 3
18 |
19 | export const directions = {
20 | LEFT,
21 | RIGHT,
22 | UP,
23 | DOWN
24 | }
25 |
--------------------------------------------------------------------------------
/015/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/015/src/index.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import { BootGame, PlayGame } from './scenes'
4 |
5 | import gameOptions from './game-options'
6 | import makeResizeGame from './make-resize-game'
7 |
8 | window.onload = function () {
9 | const gameConfig = {
10 | backgroundColor: 0xecf0f1,
11 | height: gameOptions.boardSize.rows * (gameOptions.tileSize +
12 | gameOptions.tileSpacing) + gameOptions.tileSpacing,
13 | scene: [BootGame, PlayGame],
14 | width: gameOptions.boardSize.cols * (gameOptions.tileSize +
15 | gameOptions.tileSpacing) + gameOptions.tileSpacing
16 | }
17 |
18 | const game = new Phaser.Game(gameConfig)
19 | window.focus()
20 | const resizeGame = makeResizeGame(game)
21 | resizeGame()
22 | window.addEventListener('resize', resizeGame)
23 | }
24 |
--------------------------------------------------------------------------------
/015/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/015/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/015/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/015/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/016/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/016/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/016/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/016/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/016/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/016/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/016/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/016/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | swipeMaxTime: 1000,
7 | swipeMinDistance: 20,
8 | swipeMinNormal: 0.85,
9 | tileSize: 200,
10 | tileSpacing: 20,
11 | tweenSpeed: 200
12 | }
13 |
14 | const LEFT = 0
15 | const RIGHT = 1
16 | const UP = 2
17 | const DOWN = 3
18 |
19 | export const directions = {
20 | LEFT,
21 | RIGHT,
22 | UP,
23 | DOWN
24 | }
25 |
--------------------------------------------------------------------------------
/016/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/016/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/016/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/016/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/016/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/017/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/017/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/017/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/017/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/017/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/017/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/017/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/017/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | swipeMaxTime: 1000,
7 | swipeMinDistance: 20,
8 | swipeMinNormal: 0.85,
9 | tileSize: 200,
10 | tileSpacing: 20,
11 | tweenSpeed: 200
12 | }
13 |
14 | const LEFT = 0
15 | const RIGHT = 1
16 | const UP = 2
17 | const DOWN = 3
18 |
19 | export const directions = {
20 | LEFT,
21 | RIGHT,
22 | UP,
23 | DOWN
24 | }
25 |
--------------------------------------------------------------------------------
/017/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/017/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/017/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/017/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/017/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/018/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/018/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/018/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/018/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/018/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/018/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/018/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/018/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | swipeMaxTime: 1000,
7 | swipeMinDistance: 20,
8 | swipeMinNormal: 0.85,
9 | tileSize: 200,
10 | tileSpacing: 20,
11 | tweenSpeed: 200
12 | }
13 |
14 | const LEFT = 0
15 | const RIGHT = 1
16 | const UP = 2
17 | const DOWN = 3
18 |
19 | export const directions = {
20 | LEFT,
21 | RIGHT,
22 | UP,
23 | DOWN
24 | }
25 |
--------------------------------------------------------------------------------
/018/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/018/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/018/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/018/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/018/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/019/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/019/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/019/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/019/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/019/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/019/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/019/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/019/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | swipeMaxTime: 1000,
7 | swipeMinDistance: 20,
8 | swipeMinNormal: 0.85,
9 | tileSize: 200,
10 | tileSpacing: 20,
11 | tweenSpeed: 200
12 | }
13 |
14 | const LEFT = 0
15 | const RIGHT = 1
16 | const UP = 2
17 | const DOWN = 3
18 |
19 | export const directions = {
20 | LEFT,
21 | RIGHT,
22 | UP,
23 | DOWN
24 | }
25 |
--------------------------------------------------------------------------------
/019/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/019/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/019/src/scenes/boot-game.js:
--------------------------------------------------------------------------------
1 | import Phaser from 'phaser'
2 |
3 | import gameOptions from '../game-options'
4 |
5 | import emptytile from '../assets/sprites/emptytile.png'
6 | import tiles from '../assets/sprites/tiles.png'
7 |
8 | class BootGame extends Phaser.Scene {
9 | constructor () {
10 | super('BootGame')
11 | }
12 |
13 | preload () {
14 | this.load.image('emptytile', emptytile)
15 |
16 | this.load.spritesheet('tiles', tiles, {
17 | frameHeight: gameOptions.tileSize,
18 | frameWidth: gameOptions.tileSize
19 | })
20 | }
21 |
22 | create () {
23 | this.scene.start('PlayGame')
24 | }
25 | }
26 |
27 | export default BootGame
28 |
--------------------------------------------------------------------------------
/019/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/019/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(gif|jpg|png|svg)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/020/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/020/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/020/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/020/src/assets/sounds/grow.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/020/src/assets/sounds/grow.mp3
--------------------------------------------------------------------------------
/020/src/assets/sounds/grow.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/020/src/assets/sounds/grow.ogg
--------------------------------------------------------------------------------
/020/src/assets/sounds/move.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/020/src/assets/sounds/move.mp3
--------------------------------------------------------------------------------
/020/src/assets/sounds/move.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/020/src/assets/sounds/move.ogg
--------------------------------------------------------------------------------
/020/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/020/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/020/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/020/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/020/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | boardSize: {
3 | cols: 4,
4 | rows: 4
5 | },
6 | swipeMaxTime: 1000,
7 | swipeMinDistance: 20,
8 | swipeMinNormal: 0.85,
9 | tileSize: 200,
10 | tileSpacing: 20,
11 | tweenSpeed: 50
12 | }
13 |
14 | const LEFT = 0
15 | const RIGHT = 1
16 | const UP = 2
17 | const DOWN = 3
18 |
19 | export const directions = {
20 | LEFT,
21 | RIGHT,
22 | UP,
23 | DOWN
24 | }
25 |
--------------------------------------------------------------------------------
/020/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 | My Awesome Game
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/020/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/020/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/020/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(mp3|ogg|png)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/021/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/021/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/021/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/021/src/assets/sounds/grow.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/021/src/assets/sounds/grow.mp3
--------------------------------------------------------------------------------
/021/src/assets/sounds/grow.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/021/src/assets/sounds/grow.ogg
--------------------------------------------------------------------------------
/021/src/assets/sounds/move.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/021/src/assets/sounds/move.mp3
--------------------------------------------------------------------------------
/021/src/assets/sounds/move.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/021/src/assets/sounds/move.ogg
--------------------------------------------------------------------------------
/021/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/021/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/021/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/021/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/021/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | aspectRatio: 16 / 9,
3 | boardSize: {
4 | cols: 4,
5 | rows: 4
6 | },
7 | swipeMaxTime: 1000,
8 | swipeMinDistance: 20,
9 | swipeMinNormal: 0.85,
10 | tileSize: 200,
11 | tileSpacing: 20,
12 | tweenSpeed: 50
13 | }
14 |
15 | const LEFT = 0
16 | const RIGHT = 1
17 | const UP = 2
18 | const DOWN = 3
19 |
20 | export const directions = {
21 | LEFT,
22 | RIGHT,
23 | UP,
24 | DOWN
25 | }
26 |
--------------------------------------------------------------------------------
/021/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
21 | My Awesome Game
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/021/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/021/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/021/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(mp3|ogg|png)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/022/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/022/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/022/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/022/src/assets/sounds/grow.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/022/src/assets/sounds/grow.mp3
--------------------------------------------------------------------------------
/022/src/assets/sounds/grow.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/022/src/assets/sounds/grow.ogg
--------------------------------------------------------------------------------
/022/src/assets/sounds/move.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/022/src/assets/sounds/move.mp3
--------------------------------------------------------------------------------
/022/src/assets/sounds/move.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/022/src/assets/sounds/move.ogg
--------------------------------------------------------------------------------
/022/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/022/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/022/src/assets/sprites/gametitle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/022/src/assets/sprites/gametitle.png
--------------------------------------------------------------------------------
/022/src/assets/sprites/howtoplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/022/src/assets/sprites/howtoplay.png
--------------------------------------------------------------------------------
/022/src/assets/sprites/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/022/src/assets/sprites/logo.png
--------------------------------------------------------------------------------
/022/src/assets/sprites/restart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/022/src/assets/sprites/restart.png
--------------------------------------------------------------------------------
/022/src/assets/sprites/scorelabels.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/022/src/assets/sprites/scorelabels.png
--------------------------------------------------------------------------------
/022/src/assets/sprites/scorepanel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/022/src/assets/sprites/scorepanel.png
--------------------------------------------------------------------------------
/022/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/022/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/022/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | aspectRatio: 16 / 9,
3 | boardSize: {
4 | cols: 4,
5 | rows: 4
6 | },
7 | swipeMaxTime: 1000,
8 | swipeMinDistance: 20,
9 | swipeMinNormal: 0.85,
10 | tileSize: 200,
11 | tileSpacing: 20,
12 | tweenSpeed: 50
13 | }
14 |
15 | const LEFT = 0
16 | const RIGHT = 1
17 | const UP = 2
18 | const DOWN = 3
19 |
20 | export const directions = {
21 | LEFT,
22 | RIGHT,
23 | UP,
24 | DOWN
25 | }
26 |
--------------------------------------------------------------------------------
/022/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
21 | My Awesome Game
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/022/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/022/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/022/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(mp3|ogg|png)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/023/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/023/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/023/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/023/src/assets/sounds/grow.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/023/src/assets/sounds/grow.mp3
--------------------------------------------------------------------------------
/023/src/assets/sounds/grow.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/023/src/assets/sounds/grow.ogg
--------------------------------------------------------------------------------
/023/src/assets/sounds/move.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/023/src/assets/sounds/move.mp3
--------------------------------------------------------------------------------
/023/src/assets/sounds/move.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/023/src/assets/sounds/move.ogg
--------------------------------------------------------------------------------
/023/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/023/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/023/src/assets/sprites/gametitle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/023/src/assets/sprites/gametitle.png
--------------------------------------------------------------------------------
/023/src/assets/sprites/howtoplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/023/src/assets/sprites/howtoplay.png
--------------------------------------------------------------------------------
/023/src/assets/sprites/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/023/src/assets/sprites/logo.png
--------------------------------------------------------------------------------
/023/src/assets/sprites/restart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/023/src/assets/sprites/restart.png
--------------------------------------------------------------------------------
/023/src/assets/sprites/scorelabels.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/023/src/assets/sprites/scorelabels.png
--------------------------------------------------------------------------------
/023/src/assets/sprites/scorepanel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/023/src/assets/sprites/scorepanel.png
--------------------------------------------------------------------------------
/023/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/023/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/023/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | aspectRatio: 16 / 9,
3 | boardSize: {
4 | cols: 4,
5 | rows: 4
6 | },
7 | swipeMaxTime: 1000,
8 | swipeMinDistance: 20,
9 | swipeMinNormal: 0.85,
10 | tileSize: 200,
11 | tileSpacing: 20,
12 | tweenSpeed: 50
13 | }
14 |
15 | const LEFT = 0
16 | const RIGHT = 1
17 | const UP = 2
18 | const DOWN = 3
19 |
20 | export const directions = {
21 | LEFT,
22 | RIGHT,
23 | UP,
24 | DOWN
25 | }
26 |
--------------------------------------------------------------------------------
/023/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
21 | My Awesome Game
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/023/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/023/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/023/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(mp3|ogg|png)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/024/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/024/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/024/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/024/src/assets/fonts/font.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/024/src/assets/fonts/font.png
--------------------------------------------------------------------------------
/024/src/assets/sounds/grow.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/024/src/assets/sounds/grow.mp3
--------------------------------------------------------------------------------
/024/src/assets/sounds/grow.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/024/src/assets/sounds/grow.ogg
--------------------------------------------------------------------------------
/024/src/assets/sounds/move.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/024/src/assets/sounds/move.mp3
--------------------------------------------------------------------------------
/024/src/assets/sounds/move.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/024/src/assets/sounds/move.ogg
--------------------------------------------------------------------------------
/024/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/024/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/024/src/assets/sprites/gametitle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/024/src/assets/sprites/gametitle.png
--------------------------------------------------------------------------------
/024/src/assets/sprites/howtoplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/024/src/assets/sprites/howtoplay.png
--------------------------------------------------------------------------------
/024/src/assets/sprites/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/024/src/assets/sprites/logo.png
--------------------------------------------------------------------------------
/024/src/assets/sprites/restart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/024/src/assets/sprites/restart.png
--------------------------------------------------------------------------------
/024/src/assets/sprites/scorelabels.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/024/src/assets/sprites/scorelabels.png
--------------------------------------------------------------------------------
/024/src/assets/sprites/scorepanel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/024/src/assets/sprites/scorepanel.png
--------------------------------------------------------------------------------
/024/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/024/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/024/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | aspectRatio: 16 / 9,
3 | boardSize: {
4 | cols: 4,
5 | rows: 4
6 | },
7 | swipeMaxTime: 1000,
8 | swipeMinDistance: 20,
9 | swipeMinNormal: 0.85,
10 | tileSize: 200,
11 | tileSpacing: 20,
12 | tweenSpeed: 50
13 | }
14 |
15 | const LEFT = 0
16 | const RIGHT = 1
17 | const UP = 2
18 | const DOWN = 3
19 |
20 | export const directions = {
21 | LEFT,
22 | RIGHT,
23 | UP,
24 | DOWN
25 | }
26 |
--------------------------------------------------------------------------------
/024/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
21 | My Awesome Game
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/024/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/024/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/024/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(fnt|mp3|ogg|png)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/025/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/025/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/025/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/025/src/assets/fonts/font.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/025/src/assets/fonts/font.png
--------------------------------------------------------------------------------
/025/src/assets/sounds/grow.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/025/src/assets/sounds/grow.mp3
--------------------------------------------------------------------------------
/025/src/assets/sounds/grow.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/025/src/assets/sounds/grow.ogg
--------------------------------------------------------------------------------
/025/src/assets/sounds/move.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/025/src/assets/sounds/move.mp3
--------------------------------------------------------------------------------
/025/src/assets/sounds/move.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/025/src/assets/sounds/move.ogg
--------------------------------------------------------------------------------
/025/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/025/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/025/src/assets/sprites/gametitle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/025/src/assets/sprites/gametitle.png
--------------------------------------------------------------------------------
/025/src/assets/sprites/howtoplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/025/src/assets/sprites/howtoplay.png
--------------------------------------------------------------------------------
/025/src/assets/sprites/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/025/src/assets/sprites/logo.png
--------------------------------------------------------------------------------
/025/src/assets/sprites/restart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/025/src/assets/sprites/restart.png
--------------------------------------------------------------------------------
/025/src/assets/sprites/scorelabels.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/025/src/assets/sprites/scorelabels.png
--------------------------------------------------------------------------------
/025/src/assets/sprites/scorepanel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/025/src/assets/sprites/scorepanel.png
--------------------------------------------------------------------------------
/025/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/025/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/025/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | aspectRatio: 16 / 9,
3 | boardSize: {
4 | cols: 4,
5 | rows: 4
6 | },
7 | swipeMaxTime: 1000,
8 | swipeMinDistance: 20,
9 | swipeMinNormal: 0.85,
10 | tileSize: 200,
11 | tileSpacing: 20,
12 | tweenSpeed: 50
13 | }
14 |
15 | const LEFT = 0
16 | const RIGHT = 1
17 | const UP = 2
18 | const DOWN = 3
19 |
20 | export const directions = {
21 | LEFT,
22 | RIGHT,
23 | UP,
24 | DOWN
25 | }
26 |
--------------------------------------------------------------------------------
/025/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
21 | My Awesome Game
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/025/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/025/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/025/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(fnt|mp3|ogg|png)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/026/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/026/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/026/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/026/src/assets/fonts/font.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/026/src/assets/fonts/font.png
--------------------------------------------------------------------------------
/026/src/assets/sounds/grow.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/026/src/assets/sounds/grow.mp3
--------------------------------------------------------------------------------
/026/src/assets/sounds/grow.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/026/src/assets/sounds/grow.ogg
--------------------------------------------------------------------------------
/026/src/assets/sounds/move.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/026/src/assets/sounds/move.mp3
--------------------------------------------------------------------------------
/026/src/assets/sounds/move.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/026/src/assets/sounds/move.ogg
--------------------------------------------------------------------------------
/026/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/026/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/026/src/assets/sprites/gametitle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/026/src/assets/sprites/gametitle.png
--------------------------------------------------------------------------------
/026/src/assets/sprites/howtoplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/026/src/assets/sprites/howtoplay.png
--------------------------------------------------------------------------------
/026/src/assets/sprites/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/026/src/assets/sprites/logo.png
--------------------------------------------------------------------------------
/026/src/assets/sprites/restart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/026/src/assets/sprites/restart.png
--------------------------------------------------------------------------------
/026/src/assets/sprites/scorelabels.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/026/src/assets/sprites/scorelabels.png
--------------------------------------------------------------------------------
/026/src/assets/sprites/scorepanel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/026/src/assets/sprites/scorepanel.png
--------------------------------------------------------------------------------
/026/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/026/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/026/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | aspectRatio: 16 / 9,
3 | boardSize: {
4 | cols: 4,
5 | rows: 4
6 | },
7 | localStorageName: 'topscore4096',
8 | swipeMaxTime: 1000,
9 | swipeMinDistance: 20,
10 | swipeMinNormal: 0.85,
11 | tileSize: 200,
12 | tileSpacing: 20,
13 | tweenSpeed: 50
14 | }
15 |
16 | const LEFT = 0
17 | const RIGHT = 1
18 | const UP = 2
19 | const DOWN = 3
20 |
21 | export const directions = {
22 | LEFT,
23 | RIGHT,
24 | UP,
25 | DOWN
26 | }
27 |
--------------------------------------------------------------------------------
/026/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
21 | My Awesome Game
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/026/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/026/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/026/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(fnt|mp3|ogg|png)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/027/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/027/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/027/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/027/src/assets/fonts/font.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/027/src/assets/fonts/font.png
--------------------------------------------------------------------------------
/027/src/assets/sounds/grow.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/027/src/assets/sounds/grow.mp3
--------------------------------------------------------------------------------
/027/src/assets/sounds/grow.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/027/src/assets/sounds/grow.ogg
--------------------------------------------------------------------------------
/027/src/assets/sounds/move.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/027/src/assets/sounds/move.mp3
--------------------------------------------------------------------------------
/027/src/assets/sounds/move.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/027/src/assets/sounds/move.ogg
--------------------------------------------------------------------------------
/027/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/027/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/027/src/assets/sprites/gametitle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/027/src/assets/sprites/gametitle.png
--------------------------------------------------------------------------------
/027/src/assets/sprites/howtoplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/027/src/assets/sprites/howtoplay.png
--------------------------------------------------------------------------------
/027/src/assets/sprites/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/027/src/assets/sprites/logo.png
--------------------------------------------------------------------------------
/027/src/assets/sprites/restart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/027/src/assets/sprites/restart.png
--------------------------------------------------------------------------------
/027/src/assets/sprites/scorelabels.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/027/src/assets/sprites/scorelabels.png
--------------------------------------------------------------------------------
/027/src/assets/sprites/scorepanel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/027/src/assets/sprites/scorepanel.png
--------------------------------------------------------------------------------
/027/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/027/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/027/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | aspectRatio: 16 / 9,
3 | boardSize: {
4 | cols: 4,
5 | rows: 4
6 | },
7 | localStorageName: 'topscore4096',
8 | swipeMaxTime: 1000,
9 | swipeMinDistance: 20,
10 | swipeMinNormal: 0.85,
11 | tileSize: 200,
12 | tileSpacing: 20,
13 | tweenSpeed: 50
14 | }
15 |
16 | const LEFT = 0
17 | const RIGHT = 1
18 | const UP = 2
19 | const DOWN = 3
20 |
21 | export const directions = {
22 | LEFT,
23 | RIGHT,
24 | UP,
25 | DOWN
26 | }
27 |
--------------------------------------------------------------------------------
/027/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
21 | My Awesome Game
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/027/src/make-resize-game.js:
--------------------------------------------------------------------------------
1 | export default game => function () {
2 | const canvas = document.querySelector('canvas')
3 | const windowWidth = window.innerWidth
4 | const windowHeight = window.innerHeight
5 | const windowRatio = windowWidth / windowHeight
6 | const gameRatio = game.config.width / game.config.height
7 |
8 | if (windowRatio < gameRatio) {
9 | canvas.style.width = `${windowWidth}px`
10 | canvas.style.height = `${windowWidth / gameRatio}px`
11 | } else {
12 | canvas.style.width = `${windowHeight * gameRatio}px`
13 | canvas.style.height = `${windowHeight}px`
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/027/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/027/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(fnt|mp3|ogg|png)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/028/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/028/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/028/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/028/src/assets/fonts/font.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/028/src/assets/fonts/font.png
--------------------------------------------------------------------------------
/028/src/assets/sounds/grow.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/028/src/assets/sounds/grow.mp3
--------------------------------------------------------------------------------
/028/src/assets/sounds/grow.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/028/src/assets/sounds/grow.ogg
--------------------------------------------------------------------------------
/028/src/assets/sounds/move.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/028/src/assets/sounds/move.mp3
--------------------------------------------------------------------------------
/028/src/assets/sounds/move.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/028/src/assets/sounds/move.ogg
--------------------------------------------------------------------------------
/028/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/028/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/028/src/assets/sprites/gametitle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/028/src/assets/sprites/gametitle.png
--------------------------------------------------------------------------------
/028/src/assets/sprites/howtoplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/028/src/assets/sprites/howtoplay.png
--------------------------------------------------------------------------------
/028/src/assets/sprites/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/028/src/assets/sprites/logo.png
--------------------------------------------------------------------------------
/028/src/assets/sprites/restart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/028/src/assets/sprites/restart.png
--------------------------------------------------------------------------------
/028/src/assets/sprites/scorelabels.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/028/src/assets/sprites/scorelabels.png
--------------------------------------------------------------------------------
/028/src/assets/sprites/scorepanel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/028/src/assets/sprites/scorepanel.png
--------------------------------------------------------------------------------
/028/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/028/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/028/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | aspectRatio: 16 / 9,
3 | boardSize: {
4 | cols: 4,
5 | rows: 4
6 | },
7 | localStorageName: 'topscore4096',
8 | swipeMaxTime: 1000,
9 | swipeMinDistance: 20,
10 | swipeMinNormal: 0.85,
11 | tileSize: 200,
12 | tileSpacing: 20,
13 | tweenSpeed: 50
14 | }
15 |
16 | const LEFT = 0
17 | const RIGHT = 1
18 | const UP = 2
19 | const DOWN = 3
20 |
21 | export const directions = {
22 | LEFT,
23 | RIGHT,
24 | UP,
25 | DOWN
26 | }
27 |
--------------------------------------------------------------------------------
/028/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
15 | 4096
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/028/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/028/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(fnt|mp3|ogg|png)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/029/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [[
3 | "@babel/preset-env", {
4 | "corejs": 3,
5 | "useBuiltIns": "entry"
6 | }
7 | ]]
8 | }
9 |
--------------------------------------------------------------------------------
/029/.browserslistrc:
--------------------------------------------------------------------------------
1 | last 2 versions
2 | not dead
3 |
--------------------------------------------------------------------------------
/029/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | node_modules
3 |
--------------------------------------------------------------------------------
/029/src/assets/fonts/font.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/029/src/assets/fonts/font.png
--------------------------------------------------------------------------------
/029/src/assets/sounds/grow.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/029/src/assets/sounds/grow.mp3
--------------------------------------------------------------------------------
/029/src/assets/sounds/grow.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/029/src/assets/sounds/grow.ogg
--------------------------------------------------------------------------------
/029/src/assets/sounds/move.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/029/src/assets/sounds/move.mp3
--------------------------------------------------------------------------------
/029/src/assets/sounds/move.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/029/src/assets/sounds/move.ogg
--------------------------------------------------------------------------------
/029/src/assets/sprites/emptytile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/029/src/assets/sprites/emptytile.png
--------------------------------------------------------------------------------
/029/src/assets/sprites/fullscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/029/src/assets/sprites/fullscreen.png
--------------------------------------------------------------------------------
/029/src/assets/sprites/gametitle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/029/src/assets/sprites/gametitle.png
--------------------------------------------------------------------------------
/029/src/assets/sprites/howtoplay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/029/src/assets/sprites/howtoplay.png
--------------------------------------------------------------------------------
/029/src/assets/sprites/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/029/src/assets/sprites/logo.png
--------------------------------------------------------------------------------
/029/src/assets/sprites/restart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/029/src/assets/sprites/restart.png
--------------------------------------------------------------------------------
/029/src/assets/sprites/scorelabels.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/029/src/assets/sprites/scorelabels.png
--------------------------------------------------------------------------------
/029/src/assets/sprites/scorepanel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/029/src/assets/sprites/scorepanel.png
--------------------------------------------------------------------------------
/029/src/assets/sprites/tiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/029/src/assets/sprites/tiles.png
--------------------------------------------------------------------------------
/029/src/game-options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | aspectRatio: 16 / 9,
3 | boardSize: {
4 | cols: 4,
5 | rows: 4
6 | },
7 | localStorageName: 'topscore4096',
8 | swipeMaxTime: 1000,
9 | swipeMinDistance: 20,
10 | swipeMinNormal: 0.85,
11 | tileSize: 200,
12 | tileSpacing: 20,
13 | tweenSpeed: 50
14 | }
15 |
16 | const LEFT = 0
17 | const RIGHT = 1
18 | const UP = 2
19 | const DOWN = 3
20 |
21 | export const directions = {
22 | DOWN,
23 | LEFT,
24 | RIGHT,
25 | UP
26 | }
27 |
--------------------------------------------------------------------------------
/029/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
15 | 4096
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/029/src/scenes/index.js:
--------------------------------------------------------------------------------
1 | import BootGame from './boot-game'
2 | import PlayGame from './play-game'
3 |
4 | export {
5 | BootGame,
6 | PlayGame
7 | }
8 |
--------------------------------------------------------------------------------
/029/webpack.config.js:
--------------------------------------------------------------------------------
1 | const HtmlWebpackPlugin = require('html-webpack-plugin')
2 |
3 | module.exports = {
4 | module: {
5 | rules: [{
6 | exclude: /node_modules/,
7 | test: /\.js$/,
8 | use: {
9 | loader: 'babel-loader'
10 | }
11 | }, {
12 | test: /\.html$/,
13 | use: [{
14 | loader: 'html-loader'
15 | }]
16 | }, {
17 | test: /\.(fnt|mp3|ogg|png)$/,
18 | use: [
19 | 'file-loader'
20 | ]
21 | }]
22 | },
23 | plugins: [
24 | new HtmlWebpackPlugin({
25 | filename: './index.html',
26 | template: './src/index.html'
27 | })
28 | ]
29 | }
30 |
--------------------------------------------------------------------------------
/TODO:
--------------------------------------------------------------------------------
1 | Page 183
2 |
--------------------------------------------------------------------------------
/cordovafolder/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/cordovafolder/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "com.emanueleferonato.game4096",
3 | "displayName": "4096",
4 | "version": "1.0.0",
5 | "description": "A sample Apache Cordova application that responds to the deviceready event.",
6 | "main": "index.js",
7 | "scripts": {
8 | "test": "echo \"Error: no test specified\" && exit 1"
9 | },
10 | "keywords": [
11 | "ecosystem:cordova"
12 | ],
13 | "author": "Apache Cordova Team",
14 | "license": "Apache-2.0",
15 | "dependencies": {
16 | "cordova-android": "^8.0.0"
17 | },
18 | "devDependencies": {
19 | "cordova-plugin-whitelist": "^1.3.3"
20 | },
21 | "cordova": {
22 | "plugins": {
23 | "cordova-plugin-whitelist": {}
24 | },
25 | "platforms": [
26 | "android"
27 | ]
28 | }
29 | }
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/.gitignore:
--------------------------------------------------------------------------------
1 | # Non-project-specific build files:
2 | build.xml
3 | local.properties
4 | /gradlew
5 | /gradlew.bat
6 | /gradle
7 | # Ant builds
8 | ant-build
9 | ant-gen
10 | # Eclipse builds
11 | gen
12 | out
13 | # Gradle build artifacts
14 | .gradle
15 | .gradletasknamecache
16 | /build
17 | /CordovaLib/build
18 | /app/build
19 | gradle-app.setting
20 | # Android Studio
21 | .idea
22 |
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/CordovaLib/project.properties:
--------------------------------------------------------------------------------
1 | # This file was originally created by the Android Tools, but is now
2 | # used by cordova-android to manage the project configuration.
3 |
4 | # Indicates whether an apk should be generated for each density.
5 | split.density=false
6 |
7 | # Project target.
8 | target=android-28
9 | apk-configurations=
10 | renderscript.opt.level=O0
11 | android.library=true
12 |
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/assets/www/05cf183c9f396342019b7b41a4cf2c5c.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/assets/www/05cf183c9f396342019b7b41a4cf2c5c.mp3
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/assets/www/0bf06b0fd712e657f6bbda07936a3321.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/assets/www/0bf06b0fd712e657f6bbda07936a3321.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/assets/www/144d504eff90ac62d04caf0a36b668f9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/assets/www/144d504eff90ac62d04caf0a36b668f9.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/assets/www/180f716f5635a1e58f8578b0ffd28f00.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/assets/www/180f716f5635a1e58f8578b0ffd28f00.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/assets/www/21c1ad9d5230937941717a54f97aa467.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/assets/www/21c1ad9d5230937941717a54f97aa467.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/assets/www/2cdbf576ab8c8dc655a870bc5b9a6ab4.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/assets/www/2cdbf576ab8c8dc655a870bc5b9a6ab4.mp3
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/assets/www/3b6fe7d0433f73d031c160a45f5de3fc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/assets/www/3b6fe7d0433f73d031c160a45f5de3fc.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/assets/www/4a1a1c0e5ef7f50a7f7d1fb06e04bbe0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/assets/www/4a1a1c0e5ef7f50a7f7d1fb06e04bbe0.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/assets/www/81c42d5e25fa9841a62aeee9f94e4c1c.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/assets/www/81c42d5e25fa9841a62aeee9f94e4c1c.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/assets/www/b2893590601c5b128cff28d4d0a53f71.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/assets/www/b2893590601c5b128cff28d4d0a53f71.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/assets/www/ccded6b9b4ea23c94c390e89cb25dc44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/assets/www/ccded6b9b4ea23c94c390e89cb25dc44.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/assets/www/cordova_plugins.js:
--------------------------------------------------------------------------------
1 | cordova.define('cordova/plugin_list', function(require, exports, module) {
2 | module.exports = [];
3 | module.exports.metadata = {
4 | "cordova-plugin-whitelist": "1.3.3"
5 | };
6 | });
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/assets/www/d45b431900f759a42b185127b9ea034a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/assets/www/d45b431900f759a42b185127b9ea034a.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/assets/www/dd7ce68917a25e9883b1b2db6360e5e5.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/assets/www/dd7ce68917a25e9883b1b2db6360e5e5.ogg
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/assets/www/f6cd2fcbcafcf78f2a0e7fe8be1d3ff1.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/assets/www/f6cd2fcbcafcf78f2a0e7fe8be1d3ff1.ogg
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/drawable-land-hdpi/screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/drawable-land-hdpi/screen.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/drawable-land-ldpi/screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/drawable-land-ldpi/screen.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/drawable-land-mdpi/screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/drawable-land-mdpi/screen.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/drawable-land-xhdpi/screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/drawable-land-xhdpi/screen.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/drawable-land-xxhdpi/screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/drawable-land-xxhdpi/screen.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/drawable-land-xxxhdpi/screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/drawable-land-xxxhdpi/screen.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/drawable-port-hdpi/screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/drawable-port-hdpi/screen.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/drawable-port-ldpi/screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/drawable-port-ldpi/screen.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/drawable-port-mdpi/screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/drawable-port-mdpi/screen.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/drawable-port-xhdpi/screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/drawable-port-xhdpi/screen.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/drawable-port-xxhdpi/screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/drawable-port-xxhdpi/screen.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/drawable-port-xxxhdpi/screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/drawable-port-xxxhdpi/screen.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-hdpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-hdpi-v26/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-hdpi-v26/ic_launcher_background.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-hdpi-v26/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-hdpi-v26/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-ldpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-ldpi-v26/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-ldpi-v26/ic_launcher_background.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-ldpi-v26/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-ldpi-v26/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-ldpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-ldpi/ic_launcher.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-mdpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-mdpi-v26/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-mdpi-v26/ic_launcher_background.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-mdpi-v26/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-mdpi-v26/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-xhdpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-xhdpi-v26/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-xhdpi-v26/ic_launcher_background.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-xhdpi-v26/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-xhdpi-v26/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-xxhdpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-xxhdpi-v26/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-xxhdpi-v26/ic_launcher_background.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-xxhdpi-v26/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-xxhdpi-v26/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-xxxhdpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-xxxhdpi-v26/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-xxxhdpi-v26/ic_launcher_background.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-xxxhdpi-v26/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-xxxhdpi-v26/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/platforms/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 4096
4 | @string/app_name
5 | @string/launcher_name
6 |
7 |
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/cordova/lib/getASPath.bat:
--------------------------------------------------------------------------------
1 | @ECHO OFF
2 | for /f "tokens=2*" %%a in ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Android Studio" /v Path') do set "ASPath=%%~b"
3 | ECHO %ASPath%
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/cordova/loggingHelper.js:
--------------------------------------------------------------------------------
1 | var CordovaLogger = require('cordova-common').CordovaLogger;
2 |
3 | module.exports = {
4 | adjustLoggerLevel: function (opts) {
5 | if (opts instanceof Array) {
6 | opts.silent = opts.indexOf('--silent') !== -1;
7 | opts.verbose = opts.indexOf('--verbose') !== -1;
8 | }
9 |
10 | if (opts.silent) {
11 | CordovaLogger.get().setLevel('error');
12 | }
13 |
14 | if (opts.verbose) {
15 | CordovaLogger.get().setLevel('verbose');
16 | }
17 | }
18 | };
19 |
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.daemon=true
2 | org.gradle.jvmargs=-Xmx2048m
3 | android.useDeprecatedNdk=true
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/platform_www/cordova_plugins.js:
--------------------------------------------------------------------------------
1 | cordova.define('cordova/plugin_list', function(require, exports, module) {
2 | module.exports = [];
3 | module.exports.metadata = {
4 | "cordova-plugin-whitelist": "1.3.3"
5 | };
6 | });
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/project.properties:
--------------------------------------------------------------------------------
1 | # This file was originally created by the Android Tools, but is now
2 | # used by cordova-android to manage the state of the various third party
3 | # libraries used in your application
4 |
5 | # This is the Library Module that contains the Cordova Library, this is not
6 | # required when using an AAR
7 |
8 | # This is the application project. This is only required for Android Studio Gradle projects
9 |
10 | # Project target.
11 | target=android-28
12 | android.library.reference.1=CordovaLib
13 | android.library.reference.2=app
14 |
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/settings.gradle:
--------------------------------------------------------------------------------
1 | // GENERATED FILE - DO NOT EDIT
2 | include ":"
3 | include ":CordovaLib"
4 | include ":app"
5 |
--------------------------------------------------------------------------------
/cordovafolder/platforms/android/wrapper.gradle:
--------------------------------------------------------------------------------
1 | //This file is intentionally just a comment
2 |
--------------------------------------------------------------------------------
/cordovafolder/plugins/android.json:
--------------------------------------------------------------------------------
1 | {
2 | "prepare_queue": {
3 | "installed": [],
4 | "uninstalled": []
5 | },
6 | "config_munge": {
7 | "files": {}
8 | },
9 | "installed_plugins": {
10 | "cordova-plugin-whitelist": {
11 | "PACKAGE_NAME": "com.emanueleferonato.game4096"
12 | }
13 | },
14 | "dependent_plugins": {}
15 | }
16 |
--------------------------------------------------------------------------------
/cordovafolder/plugins/cordova-plugin-whitelist/NOTICE:
--------------------------------------------------------------------------------
1 | Apache Cordova
2 | Copyright 2012 The Apache Software Foundation
3 |
4 | This product includes software developed at
5 | The Apache Software Foundation (http://www.apache.org/).
6 |
--------------------------------------------------------------------------------
/cordovafolder/plugins/fetch.json:
--------------------------------------------------------------------------------
1 | {
2 | "cordova-plugin-whitelist": {
3 | "source": {
4 | "type": "registry",
5 | "id": "cordova-plugin-whitelist@1"
6 | },
7 | "is_top_level": true,
8 | "variables": {}
9 | }
10 | }
--------------------------------------------------------------------------------
/cordovafolder/www/05cf183c9f396342019b7b41a4cf2c5c.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/www/05cf183c9f396342019b7b41a4cf2c5c.mp3
--------------------------------------------------------------------------------
/cordovafolder/www/0bf06b0fd712e657f6bbda07936a3321.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/www/0bf06b0fd712e657f6bbda07936a3321.png
--------------------------------------------------------------------------------
/cordovafolder/www/144d504eff90ac62d04caf0a36b668f9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/www/144d504eff90ac62d04caf0a36b668f9.png
--------------------------------------------------------------------------------
/cordovafolder/www/180f716f5635a1e58f8578b0ffd28f00.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/www/180f716f5635a1e58f8578b0ffd28f00.png
--------------------------------------------------------------------------------
/cordovafolder/www/21c1ad9d5230937941717a54f97aa467.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/www/21c1ad9d5230937941717a54f97aa467.png
--------------------------------------------------------------------------------
/cordovafolder/www/2cdbf576ab8c8dc655a870bc5b9a6ab4.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/www/2cdbf576ab8c8dc655a870bc5b9a6ab4.mp3
--------------------------------------------------------------------------------
/cordovafolder/www/3b6fe7d0433f73d031c160a45f5de3fc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/www/3b6fe7d0433f73d031c160a45f5de3fc.png
--------------------------------------------------------------------------------
/cordovafolder/www/4a1a1c0e5ef7f50a7f7d1fb06e04bbe0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/www/4a1a1c0e5ef7f50a7f7d1fb06e04bbe0.png
--------------------------------------------------------------------------------
/cordovafolder/www/81c42d5e25fa9841a62aeee9f94e4c1c.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/www/81c42d5e25fa9841a62aeee9f94e4c1c.png
--------------------------------------------------------------------------------
/cordovafolder/www/b2893590601c5b128cff28d4d0a53f71.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/www/b2893590601c5b128cff28d4d0a53f71.png
--------------------------------------------------------------------------------
/cordovafolder/www/ccded6b9b4ea23c94c390e89cb25dc44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/www/ccded6b9b4ea23c94c390e89cb25dc44.png
--------------------------------------------------------------------------------
/cordovafolder/www/d45b431900f759a42b185127b9ea034a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/www/d45b431900f759a42b185127b9ea034a.png
--------------------------------------------------------------------------------
/cordovafolder/www/dd7ce68917a25e9883b1b2db6360e5e5.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/www/dd7ce68917a25e9883b1b2db6360e5e5.ogg
--------------------------------------------------------------------------------
/cordovafolder/www/f6cd2fcbcafcf78f2a0e7fe8be1d3ff1.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ajbkr/HTML5-Cross-Platform-Game-Development-Using-Phaser-3/d939321031bc5c0dfa7be1359cb9b69c2163e131/cordovafolder/www/f6cd2fcbcafcf78f2a0e7fe8be1d3ff1.ogg
--------------------------------------------------------------------------------
/cordovafolder/www/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
15 | 4096
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------