/** * @module states/LoadMenu */ 'use strict'; const dataStore = require('../util/data'); const moment = require('moment'); const ui = require('../ui/ui'); let LoadMenu = {}; /** * * * @param {any} key */ function loadGame() { console.log('Loading: ' + this.key); dataStore.loadState(this.key) .then((data) => { game.state.start('Load', true, false, data); }); } LoadMenu.preload = function() { }; LoadMenu.create = function() { // menu background stuff game.world.setBounds(0, 0, 2560, 800); this.map = game.add.tilemap('menu-map'); this.map.addTilesetImage('outdoors', 'tileset'); this.bgLayer = this.map.createLayer('bg1'); game.camera.x = game.menuCameraPos; // back button to go to menu screen this.back = new ui.MenuButton(0, 0, 'Back', null, ()=>{ // when pressed start loading the game game.state.start('Menu'); }, '4em'); this.back.setLocation(game.camera.width - this.back.button.width, game.camera.height - this.back.button.height); console.log(this.back.button.x); let saveStates = []; dataStore.getSaveStates() .then((keys) => { saveStates = keys.map((k) => { let t = 'Autosave'; if (k !== 'autosave') { let o = moment(k, moment.ISO_8601); t = o.format('MMM Do YY - hh:mm:ss. a'); } return { key: k, title: t, }; }); saveStates.sort((a, b) => { if (a.key == 'autosave') return 1; if (b.key == 'autosave') return -1; let am = moment(a.key); let bm = moment(b.key); if (am.isAfter(bm)) return -1; if (am.isBefore(bm)) return 1; return 0; }); let autosaveIndex = saveStates.findIndex( (s) =>s.key === 'autosave'); if (autosaveIndex > -1) { saveStates.splice(autosaveIndex, 1); this.autosave = new ui.MenuButton(game.camera.width / 2, 100, 'Autosave', 'autosave', loadGame ); } this.buttonList = new ui.ButtonList(saveStates, loadGame); }) .catch((reason) => { console.error(reason); }); }; LoadMenu.update = function() { // menu background stuff if (game.camera.x === 1280) { game.camera.x = 0; game.menuCameraPos = game.camera.x; } game.camera.x += 1; game.menuCameraPos = game.camera.x; }; module.exports = LoadMenu;