From 83af349d09ec271b43945f5083e031c30f03b538 Mon Sep 17 00:00:00 2001 From: SaniHaque Date: Tue, 23 Oct 2018 23:31:26 +0530 Subject: [PATCH 1/4] init2 --- README.md | 5 + config.json | 4 - fbapp-config.json | 16 -- mock/fbinstant.6.0.mock.js | 432 ------------------------------------- src/global.js | 3 + src/main.js | 2 - src/scenes/Preloader.js | 8 - webpack.common.js | 1 - webpack.dev.js | 1 - webpack.prod.js | 4 - 10 files changed, 8 insertions(+), 468 deletions(-) delete mode 100644 config.json delete mode 100644 fbapp-config.json delete mode 100644 mock/fbinstant.6.0.mock.js diff --git a/README.md b/README.md index 5e2b690..33e4610 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,11 @@ basic template project for game development with Phaser 3. ## File Structure guide +### Ckeckout branch +- Master (Main) +- FB (facebok instant) + +### Directory - 'assets/' => for external assets and spritesheet source (see `config.dev.js` for more information) - 'src/' => here is your working folder for actual game creation - 'assets/' => put all the assets in this folder to load in `assets.json` diff --git a/config.json b/config.json deleted file mode 100644 index 32c3066..0000000 --- a/config.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "FB_appId": "348704785876435", - "FB_uploadAccessToken": "" -} diff --git a/fbapp-config.json b/fbapp-config.json deleted file mode 100644 index e6bf4eb..0000000 --- a/fbapp-config.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "instant_games": { - "platform_version": "RICH_GAMEPLAY", - "custom_update_templates": { - "play_turn": { - "example": "Edgar played their move" - }, - "match_won": { - "example": "Edgar just won the match" - }, - "match_tie": { - "example": "It's a tie!" - } - } - } -} \ No newline at end of file diff --git a/mock/fbinstant.6.0.mock.js b/mock/fbinstant.6.0.mock.js deleted file mode 100644 index cb562a2..0000000 --- a/mock/fbinstant.6.0.mock.js +++ /dev/null @@ -1,432 +0,0 @@ - -/* - * Config values for the mock SDK - */ -const MockConfig = { - verbose: true, -} - -/* - * Mocks for the FBInstant SDK methods - */ -var FBInstant = { - __mockState: { - initialized: false - }, - player : { - getName: function() { - return Utils.returnUserData('Player 1'); - }, - getPhoto: function() { - return Utils.returnUserData('/img/mock/profile.jpg'); - }, - getID: function() { - return Utils.returnUserData(123456789); - // return Utils.returnUserData(1234567); - }, - getDataAsync: function(keys) { - Utils.log('player.getDataAsync'); - return Utils.getFromLocalStorage('playerData', keys); - }, - setDataAsync: function(obj) { - Utils.log('player.setDataAsync'); - return Utils.writeToLocalStorage('playerData', obj); - }, - getStatsAsync: function(keys) { - Utils.log('player.getStatsAsync'); - return Utils.getFromLocalStorage('playerStats', keys); - }, - setStatsAsync: function(obj) { - Utils.log('player.setStatsAsync'); - return Utils.writeToLocalStorage('playerStats', obj); - }, - incrementStatsAsync: function(obj) { - return new Promise(function(resolve, reject){ - Utils.getFromLocalStorage('playerStats', Object.keys(obj)) - .then(function(storedObject) { - for (var key in storedObject) { - storedObject[key] += obj[key]; - } - Utils.writeToLocalStorage('playerStats', storedObject) - .then(function() { - resolve(); - }); - }); - }); - - }, - flushDataAsync: function(obj) { - return new Promise(function(resolve, reject){ - Utils.log('player.flushDataAsync'); - resolve(); - }); - }, - getConnectedPlayersAsync: function() { - return new Promise(function(resolve, reject){ - var players = []; - var initialized = FBInstant.__mockState.initialized; - if (initialized) { - players = [ - { - getID: function() { return 42 }, - getName: function() { return 'Friend 1' }, - getPhoto: function() { '/img/mock/friend1.png'} - }, - { - getID: function() { return 43 }, - getName: function() { return 'Friend 2' }, - getPhoto: function() { '/img/mock/friend2.png'} - }, - { - getID: function() { return 44 }, - getName: function() { return 'Friend 3' }, - getPhoto: function() { '/img/mock/friend3.png'} - }, - ]; - } else { - Utils.log('getConnectedPlayersAsync', 'Connected players data is not available before startGameAsync resolves'); - } - Utils.log('getConnectedPlayersAsync', 'players: ', players); - resolve(players); - }); - }, - getSignedPlayerInfoAsync: function(payload) { - return new Promise(function(resolve, reject){ - var signedPlayerInfo = { - getSignature: function() { return payload; }, - getPlayerID: function() { return 123456789; } - } - resolve(signedPlayerInfo); - }); - } - }, - context : { - getID: function() { - return 1234; - // return null; - }, - chooseAsync: function() { - return new Promise(function(resolve, reject){ - Utils.log('context.chooseAsync'); - Utils.createAlert( - { - message:'Choosing a new context', - cta:'Play!' - }, - resolve - ); - }); - - }, - switchAsync: function(contextId) { - return new Promise(function(resolve, reject){ - Utils.log('context.switchAsync'); - Utils.createAlert( - { - message:'Switching to a new context ('+contextId+')', - cta:'Play!' - }, - resolve - ); - }); - }, - createAsync: function(userId) { - return new Promise(function(resolve, reject){ - Utils.log('context.createAsync'); - Utils.createAlert( - { - message:'Switching to a conversation with player '+ playerId, - cta:'Play!' - }, - resolve - ); - }); - }, - getType: function() { - // return Utils.returnAndLog('SOLO'); - return Utils.returnAndLog('THREAD'); - }, - isSizeBetween: function(minSize, maxSize) { - // return Utils.returnAndLog(true); - return Utils.returnAndLog(false); - }, - getPlayersAsync: function() { - return new Promise(function(resolve, reject){ - var players = []; - var initialized = FBInstant.__mockState.initialized; - if (initialized) { - players = [ - { - getID: function() { return 42 }, - getName: function() { return 'Friend 1' }, - getPhoto: function() { '/img/mock/friend1.png'} - }, - { - getID: function() { return 43 }, - getName: function() { return 'Friend 2' }, - getPhoto: function() { '/img/mock/friend2.png'} - }, - { - getID: function() { return 44 }, - getName: function() { return 'Friend 3' }, - getPhoto: function() { '/img/mock/friend3.png'} - }, - ]; - } else { - Utils.log('context.getPlayersAsync', 'Connected players data is not available before startGameAsync resolves'); - } - Utils.log('context.getPlayersAsync', 'players: ', players); - resolve(players); - }); - } - }, - - getLocale: function() { - return 'pt_BR'; - }, - - initializeAsync: function() { - return new Promise(function(resolve, reject){ - // Inject mock css - var stylesheet = document.createElement('link'); - stylesheet.href = 'css/mock/mock.css'; - stylesheet.rel = 'stylesheet'; - stylesheet.type = 'text/css'; - document.head.appendChild(stylesheet); - - Utils.log('initializeAsync'); - resolve(); - }); - }, - - setLoadingProgress: function(progress) { - return new Promise(function(resolve, reject) { - Utils.log('progress', progress, '%'); - resolve(); - }); - }, - - startGameAsync: function() { - return new Promise(function(resolve, reject){ - Utils.log('startGameAsync', 'Showing game start dialog'); - Utils.createAlert( - { - message:'Game has finished loading.
Play now?', - cta: 'Play!' - }, - function() { - FBInstant.__mockState.initialized = true; - resolve(); - }); - }); - }, - - quit: function() { - Utils.log('QUIT was called. At this point the game will exit'); - }, - - updateAsync: function(config) { - return new Promise(function(resolve, reject){ - Utils.log('updateAsync'); - if (config.image) { - resolve(); - } else { - reject(); - } - }); - - }, - - getEntryPointData: function() { - var queryString = Utils.getQueryString(); - Utils.log('getEntryPointData', - 'query string: ', queryString, - 'entry point data: ', queryString.entryPointData); - - if (queryString.entryPointData) { - return JSON.parse(queryString.entryPointData[0]); - } else { - Utils.log( - 'While using the mock SDK, set your entryPointData in the URL querystring', - 'example: http://localhost:8080/?entryPointData={a:1,b:2,c:3}'); - } - }, - - getEntryPointAsync: function() { - return new Promise(function(resolve, reject){ - resolve('admin_message'); - }); - }, - - setSessionData: function(object) { - Utils.log('setSessionData', 'Object to be persisted', object, '(Please note, while using the mock SDK, setSessionData will have no effect.)') - }, - - getPlatform: function() { - return 'WEB'; - }, - - getSDKVersion: function() { - return '5.0'; - }, - - getSupportedAPIs: function() { - var supportedAPIs = []; - for (var prop in FBInstant) { - supportedAPIs.push(prop); - } - for (var prop in FBInstant.player) { - supportedAPIs.push('player.' + prop); - } - for (var prop in FBInstant.context) { - supportedAPIs.push('context.' + prop); - } - return supportedAPIs; - }, - - shareAsync: function(options) { - var message = 'Share Intent: ' + options.intent; - message += '
'; - message += 'Share text: ' + options.text; - message += '
'; - message += 'Share payload: ' + JSON.stringify(options.data); - - return new Promise(function(resolve, reject) { - Utils.createAlert( - { - title: 'Shared content', - message: message, - image: options.image, - cta: 'Close' - }, - resolve - ); - }); - - }, - - switchGameAsync: function(appId) { - return Promise.reject(new Error('FBInstant.switchAsync is not available in the Mocked SDK.')) - }, - - logEvent: function(eventName, value, parameters) { - Utils.log('logEvent', eventName, value, parameters); - return null; - }, - - onPause: function(callback) { - window.onblur = function() { - Utils.log('onPause', 'Interruption event triggered') - callback(); - }; - } -}; - - -/* - * Helper Functions - */ -var Utils = { - - createAlert: function(options, callback) { - var alertDiv = document.createElement('div'); - alertDiv.className = 'mockDialog'; - - var title = document.createElement('h3'); - title.innerHTML = '(FBInstant Mock)' - title.innerHTML += ' ' + (options.title || ''); - alertDiv.appendChild(title); - - if (options.message) { - var paragraph = document.createElement('p'); - paragraph.innerHTML = options.message; - alertDiv.appendChild(paragraph); - } - - if (options.image) { - var image = document.createElement('img'); - image.src = options.image; - alertDiv.appendChild(image); - } - - var button = document.createElement('input'); - button.type = 'button'; - button.value = options.cta || 'Close'; - alertDiv.appendChild(button); - - - button.onclick = function() { - document.body.removeChild(alertDiv); - callback(); - } - - document.body.appendChild(alertDiv); - }, - - log: function() { - if (MockConfig.verbose) { - args = []; - args.push( '[FBInstant Mock]:' ); - for( var i = 0; i < arguments.length; i++ ) { - args.push( arguments[i] ); - } - console.log.apply(console, args); - } - }, - - getQueryString: function() { - var qd = {}; - if (location.search) location.search.substr(1).split("&").forEach(function(item) { - var s = item.split("="), - k = s[0], - v = s[1] && decodeURIComponent(s[1]); - (qd[k] = qd[k] || []).push(v) - }); - return qd; - }, - - returnAndLog: function(value) { - caller = Utils.returnAndLog.caller; - if (caller) { - Utils.log(caller.name, value); - } else { - Utils.log(value); - } - return value; - }, - - returnUserData: function(value) { - var initialized = FBInstant.__mockState.initialized; - if (initialized) { - return Utils.returnAndLog(value); - } else { - Utils.log('User Data is not available until startGameAsync has resolved'); - return null; - } - }, - - getFromLocalStorage: function(store, keys) { - return new Promise(function(resolve, reject){ - var data = localStorage.getItem(store); - var response = {}; - if (data) { - data = JSON.parse(data); - keys.forEach(function(key){ - if (data[key] !== 'undefined') { - response[key] = data[key]; - } - }); - } - Utils.log(response); - resolve(response); - }); - }, - - writeToLocalStorage: function(store, obj) { - return new Promise(function(resolve, reject){ - Utils.log(JSON.stringify(obj)); - localStorage.setItem(store, JSON.stringify(obj)); - resolve(); - }); - } -} diff --git a/src/global.js b/src/global.js index e69de29..2bb3f81 100644 --- a/src/global.js +++ b/src/global.js @@ -0,0 +1,3 @@ +export default = { + +} diff --git a/src/main.js b/src/main.js index 55293f8..a14d6f2 100644 --- a/src/main.js +++ b/src/main.js @@ -30,7 +30,6 @@ if (process.env.NODE_ENV === 'development') { function initGame (Phaser) { extendConfig(Phaser); window.onload = function () { - // FBInstant.initializeAsync().then(function () { config.canvas.width = config.width; config.canvas.height = config.height; var game = new Phaser.Game(config); @@ -38,6 +37,5 @@ function initGame (Phaser) { window.addEventListener('resize', () => { resize(game, config.width, config.height); }, false); - // }) } } diff --git a/src/scenes/Preloader.js b/src/scenes/Preloader.js index 4a3b7d3..a32d077 100644 --- a/src/scenes/Preloader.js +++ b/src/scenes/Preloader.js @@ -11,9 +11,6 @@ export default class Preloader extends Phaser.Scene { } preload() { - // this.facebook.showLoadProgress(this); - // this.facebook.once('startgame', this.startGame, this); - loadAssets(this, assets); // Display loading progress @@ -57,9 +54,4 @@ export default class Preloader extends Phaser.Scene { centerY() { return this.sys.game.config.height / 2; } - - // startGame() { - // this.scene.switch('Game'); - // } - }; diff --git a/webpack.common.js b/webpack.common.js index 7772ce7..e424322 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -19,7 +19,6 @@ module.exports = { alias: { phaserMin$: path.resolve(__dirname, './node_modules/phaser/dist/phaser.min.js'), phaserArcade$: path.resolve(__dirname, './node_modules/phaser/dist/phaser-arcade-physics.min.js'), - phaserFacebook$: path.resolve(__dirname, './node_modules/phaser/dist/phaser-facebook-instant-games.min.js') } }, output: { diff --git a/webpack.dev.js b/webpack.dev.js index 3a2a441..9f634b3 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -36,6 +36,5 @@ portfinder.getPort(function (err, finalPort) { }); server.listen(finalPort, null, function () { console.log(`Project is running at: ${colors.bold(colors.green('https://localhost:' + finalPort))}`); - console.log(`${colors.bold(colors.magenta('FB'))} Project is running at: ${colors.bold(colors.magenta(`https://www.facebook.com/embed/instantgames/${config.FB_appId}/player?game_url=https://localhost:${finalPort}`))}`); }); }); diff --git a/webpack.prod.js b/webpack.prod.js index 7b3a13a..072313a 100644 --- a/webpack.prod.js +++ b/webpack.prod.js @@ -17,10 +17,6 @@ let setup = { }, plugins: [ new CleanWebpackPlugin(['build']), - new CopyWebpackPlugin([ - './config.json', - './fbapp-config.json', - ]), new ZipPlugin({ filename: name+'.zip' }) From f5d749d1b74dc93b01579b9ca41c2073b1e4afe5 Mon Sep 17 00:00:00 2001 From: SaniHaque Date: Tue, 23 Oct 2018 23:44:34 +0530 Subject: [PATCH 2/4] init end --- webpack.dev.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/webpack.dev.js b/webpack.dev.js index 9f634b3..78e6eee 100644 --- a/webpack.dev.js +++ b/webpack.dev.js @@ -5,7 +5,6 @@ const WebpackDevServer = require('webpack-dev-server'); const common = require('./webpack.common.js'); const colors = require('colors/safe'); const portfinder = require('portfinder'); -const config = require('./config.json') portfinder.basePort = 4000; @@ -35,6 +34,6 @@ portfinder.getPort(function (err, finalPort) { }, }); server.listen(finalPort, null, function () { - console.log(`Project is running at: ${colors.bold(colors.green('https://localhost:' + finalPort))}`); + console.log(`Project is running at: ${colors.bold(colors.green('http://localhost:' + finalPort))}`); }); }); From 8bedb12217d91a494ceb1eded194a0836d0d1f29 Mon Sep 17 00:00:00 2001 From: SaniHaque Date: Wed, 24 Oct 2018 00:02:17 +0530 Subject: [PATCH 3/4] init end --- config.dev.js | 4 +++- webpack.prod.js | 11 ++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/config.dev.js b/config.dev.js index 6d02f94..56c9c01 100644 --- a/config.dev.js +++ b/config.dev.js @@ -23,5 +23,7 @@ module.exports = { customPhaserBuild: { name: 'D:\\absolute_path\\to\\custom\\phaser\\build.js', anothername: 'D:\\anotehr_absolute\\path\\to\\custom\\phaser\\build.js', - } + }, + zip: true, + zipExtName: 'zip' } diff --git a/webpack.prod.js b/webpack.prod.js index 072313a..eaced5c 100644 --- a/webpack.prod.js +++ b/webpack.prod.js @@ -16,11 +16,16 @@ let setup = { chunkFilename: "phaser.js" }, plugins: [ - new CleanWebpackPlugin(['build']), + new CleanWebpackPlugin(['build']) + ] +} + +if (config.zip) { + setup.plugins.push( new ZipPlugin({ - filename: name+'.zip' + filename: `name.${config.zipExtName}` }) - ] + ) } if (config.imageMin) { From f3930dd5037c424c76e7425cea4e7c5d991a7cb8 Mon Sep 17 00:00:00 2001 From: Oto Rexia Date: Wed, 24 Oct 2018 00:31:19 +0530 Subject: [PATCH 4/4] create license --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7e873e1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Oto Rexia + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.