client/src/automaton.js

103 lines
2.4 KiB
JavaScript

function Automaton(async, dom, messaging, screen, session, ui) {
var menus = {
start: {
entries: [
{label: 'New Game', action: newGame},
{label: 'Settings', action: settings}
],
cancel: intro,
name: 'start'
},
settings: {
entries: [
{label: 'Buttons', action: ui.setLayout},
{label: 'Text speed', action: function() {
ui.setTextSpeed(choices.textSpeed);
}}
],
cancel: startMenu,
name: 'settings'
}
};
var choices = {
name: {
entries: [
{label: 'Max', value: 'Max'},
{label: 'Lenore', value: 'Lenore'},
{label: 'Thomas', value: 'Thomas'},
{label: null, size: 15}
],
name: 'name'
},
skin: {
},
textSpeed: {
entries: [
{label: 'Slow', value: 'slow'},
{label: 'Medium', value: 'medium'},
{label: 'Fast', value: 'fast'}
],
cancel: function() {},
name: 'textSpeed'
}
};
var game = session.getGame();
if(game != undefined) {
menus.start.entries.unshift(
{label: 'Continue', action: function() { messaging.send({tag: 'Resume', game: game}); }}
);
}
return {
run: run
}
//messaging.addEventListener(['Init'], function(game) {
// console.log(game);
//});
function run() {
intro();
}
function intro() {
var title = dom.make('p', {textContent: "P O K E M O N", class: 'title'});
var subtitle = dom.make('p', {textContent: "< press start >", class: 'subtitle'});
ui.frame('Intro');
async.run(
ui.cinematic([
{action: function() {}, delay: 500},
{action: function() { screen.show(title); }, delay: 1000},
{action: function() { screen.show(subtitle); }, delay: null}
], {
B: function() { intro(); },
Start: startMenu
})
);
}
function startMenu() {
ui.frame('Start');
ui.menu(menus.start);
}
function settings() {
screen.clear();
ui.menu(menus.settings);
}
function newGame() {
ui.frame('GameInit');
async.run(
ui.text("Bonjour ! Bienvenue dans le monde merveilleux des pokémons !"),
ui.text("Pour certains, les pokemons sont des amis. Pour d'autres, ils sont une ressource. Pour ma part, hé bien l'étude des pokémons est mon métier mais aussi ma passion."),
ui.text("Mais, dis-moi, tu viens d'arriver dans la ville non ? Comment t'appelles-tu ?"),
async.bind(ui.ask(choices.name), function(name) {
screen.clear('text');
console.log('You picked : ' + name);
return async.wrap();
})
);
}
}