Browse Source

Moved pubsub from global scope, screen switching, dialog text

Load_Fix
Robert Chen 11 years ago
parent
commit
f8c685661f
  1. 178
      js/main.js

178
js/main.js

@ -1,9 +1,12 @@ @@ -1,9 +1,12 @@
function GameState(){
var that = this;
this.pubsub = {};
BindPubSub( this.pubsub );
this.oldTime = new Date().getTime();
this.mainUI = new GameUI( "demoCanvas" );
this.mainUI = new GameUI( "demoCanvas", this );
createjs.Ticker.addEventListener( "tick", gameLoop );
function gameLoop(){
@ -16,11 +19,11 @@ function GameState(){ @@ -16,11 +19,11 @@ function GameState(){
}
return {
"main": this
}
}
function GameUI( canvasElem ){
function GameUI( canvasElem, gameState ){
var that = this;
this.stage = new createjs.Stage( canvasElem );
@ -32,6 +35,7 @@ function GameUI( canvasElem ){ @@ -32,6 +35,7 @@ function GameUI( canvasElem ){
"LoadingTitleScreen" : LoadingTitleScreen,
"InfoHelpScreen" : InfoHelpScreen,
"MainScreen" : MainScreen,
"DifficultyScreen" : DifficultyScreen,
"KitchenScreen" : KitchenScreen,
"MarketScreen" : MarketScreen,
"TurkeyOutScreen" : TurkeyOutScreen,
@ -40,15 +44,15 @@ function GameUI( canvasElem ){ @@ -40,15 +44,15 @@ function GameUI( canvasElem ){
"CreditsScreen" : CreditsScreen
}
this.activeScreenObj = new MainScreen( this.stage );
this.activeScreenObj = new MainScreen( this.stage, gameState );
this.switchScreen = function( screenName ){
console.log("Switch screen called with" + screenName);
that.stage.removeAllChildren();
that.activeScreenObj = new that.screens[ screenName ]( that.stage );
that.activeScreenObj = new that.screens[ screenName ]( that.stage, gameState );
}
pubsub.subscribe( "SwitchScreen", this.switchScreen );
gameState.pubsub.subscribe( "SwitchScreen", this.switchScreen );
return {
draw : function(){
@ -59,7 +63,7 @@ function GameUI( canvasElem ){ @@ -59,7 +63,7 @@ function GameUI( canvasElem ){
}
/* Screens, inheritance would be nice */
function LoadingTitleScreen( stage ){
function LoadingTitleScreen( stage, gameState ){
var that = this;
this.picture = new createjs.Bitmap( "res/Loading-Title.png" );
this.ovenLight = new createjs.Shape();
@ -83,7 +87,7 @@ function LoadingTitleScreen( stage ){ @@ -83,7 +87,7 @@ function LoadingTitleScreen( stage ){
}
}
function InfoHelpScreen( stage ){
function InfoHelpScreen( stage, gameState ){
var that = this;
this.background = new createjs.Bitmap( "res/Main.png" );
@ -103,7 +107,7 @@ function InfoHelpScreen( stage ){ @@ -103,7 +107,7 @@ function InfoHelpScreen( stage ){
}
function MainScreen( stage ){
function MainScreen( stage, gameState ){
var that = this;
this.background = new createjs.Bitmap( "res/Main.png" );
@ -113,17 +117,17 @@ function MainScreen( stage ){ @@ -113,17 +117,17 @@ function MainScreen( stage ){
var infoButton = new createjs.Shape();
infoButton.graphics.beginFill("#ffffff").drawRect(13, 445, 222, 65);
infoButton.alpha = 0.1;
infoButton.addEventListener( "click", function(){ pubsub.publish( "SwitchScreen", "InfoHelpScreen" ) } );
infoButton.addEventListener( "click", function(){ gameState.pubsub.publish( "SwitchScreen", "InfoHelpScreen" ) } );
var creditsButton = new createjs.Shape();
creditsButton.graphics.beginFill("#ffffff").drawRect(13, 515, 222, 65);
creditsButton.alpha = 0.1;
creditsButton.addEventListener( "click", function(){ pubsub.publish( "SwitchScreen", "CreditsScreen" ) } );
creditsButton.addEventListener( "click", function(){ gameState.pubsub.publish( "SwitchScreen", "CreditsScreen" ) } );
var startButton = new createjs.Shape();
startButton.graphics.beginFill("#ffffff").drawRect(564, 520, 222, 65);
startButton.alpha = 0.1;
startButton.addEventListener( "click", function(){ pubsub.publish( "SwitchScreen", "KitchenScreen" ) } );
startButton.addEventListener( "click", function(){ gameState.pubsub.publish( "SwitchScreen", "DifficultyScreen" ) } );
stage.addChild( infoButton );
stage.addChild( creditsButton );
@ -141,10 +145,40 @@ function MainScreen( stage ){ @@ -141,10 +145,40 @@ function MainScreen( stage ){
}
//start button
//difficulty selection
}
function DifficultyScreen( stage, gameState ){
var that = this;
this.background = new createjs.Bitmap( "res/Difficulty-Selection.png" );
stage.addChild( this.background );
var easyButton = new createjs.Shape();
easyButton.graphics.beginFill("#ffffff").drawRect(170, 40, 450, 105);
easyButton.alpha = 0.1;
easyButton.addEventListener( "click", function(){ gameState.pubsub.publish( "SwitchScreen", "KitchenScreen" ) } );
var hardButton = new createjs.Shape();
hardButton.graphics.beginFill("#ffffff").drawRect(170, 150, 450, 105);
hardButton.alpha = 0.1;
hardButton.addEventListener( "click", function(){ gameState.pubsub.publish( "SwitchScreen", "KitchenScreen" ) } );
stage.addChild( easyButton );
stage.addChild( hardButton );
return {
blit : function(){
// Draw all the uiElements
for( var index in that.uiElems ){
that.uiElems[ index ].tick();
}
}
}
}
function KitchenScreen( stage ){
function KitchenScreen( stage, gameState ){
var that = this;
this.uiElems = [];
@ -162,7 +196,7 @@ function KitchenScreen( stage ){ @@ -162,7 +196,7 @@ function KitchenScreen( stage ){
}
}
function MarketScreen( stage ){
function MarketScreen( stage, gameState ){
var that = this;
this.background = new createjs.Bitmap( "res/Main.png" );
@ -182,7 +216,7 @@ function MarketScreen( stage ){ @@ -182,7 +216,7 @@ function MarketScreen( stage ){
}
function TurkeyOutScreen( stage ){
function TurkeyOutScreen( stage, gameState ){
var that = this;
this.background = new createjs.Bitmap( "res/Main.png" );
@ -202,7 +236,7 @@ function TurkeyOutScreen( stage ){ @@ -202,7 +236,7 @@ function TurkeyOutScreen( stage ){
}
function EndingScreen( stage ){
function EndingScreen( stage, gameState ){
var that = this;
this.background = new createjs.Bitmap( "res/Main.png" );
@ -222,7 +256,7 @@ function EndingScreen( stage ){ @@ -222,7 +256,7 @@ function EndingScreen( stage ){
}
function ScoreScreen( stage ){
function ScoreScreen( stage, gameState ){
var that = this;
this.background = new createjs.Bitmap( "res/Main.png" );
@ -242,7 +276,7 @@ function ScoreScreen( stage ){ @@ -242,7 +276,7 @@ function ScoreScreen( stage ){
// Retry Button
}
function CreditsScreen( stage ){
function CreditsScreen( stage, gameState ){
var that = this;
this.background = new createjs.Bitmap( "res/Main.png" );
@ -319,7 +353,7 @@ function DialogUI( stage ){ @@ -319,7 +353,7 @@ function DialogUI( stage ){
var DIALOG_SHOWING = 1;
var DIALOG_PAUSING = 2;
this.dialogSpeed = 25;
this.dialogSpeed = 15;
this.dialogState = DIALOG_PAUSING;
this.dialogMotionQueue = [DIALOG_RECEDING,DIALOG_SHOWING,DIALOG_RECEDING];
@ -330,29 +364,39 @@ function DialogUI( stage ){ @@ -330,29 +364,39 @@ function DialogUI( stage ){
this.dialogBox = new createjs.Shape();
this.dialogBox.graphics.beginFill( "#00ffff" ).drawRect( 0, 450, 800, 150 );
this.textContent = new createjs.Text( "Hello World This is some conversation text", "20px Arial", "#ff7700" );
this.textContent.x = 50;
this.textContent.y = 500;
this.textContent.textBaseline = "alphabetic";
stage.addChild( this.dialogBox );
stage.addChild( this.textContent );
return {
tick: function(){
if( that.dialogState == DIALOG_RECEDING ){
that.dialogBox.y+=that.dialogSpeed;
that.textContent.y +=that.dialogSpeed;
console.log( "Receding" + that.dialogBox.y );
}
if( that.dialogState == DIALOG_SHOWING ){
that.dialogBox.y-=that.dialogSpeed;
that.textContent.y -=that.dialogSpeed;
console.log( "Advancing" + that.dialogBox.y );
}
// toggle states
if( that.dialogBox.y > 150 && that.dialogState == DIALOG_RECEDING ){
that.dialogBox.y = 150;
that.textContent.y = 650;
that.dialogState = DIALOG_PAUSING;
console.log( "Pausing on recede" + that.dialogBox.y );
}
if( that.dialogBox.y < 0 && that.dialogState == DIALOG_SHOWING ){
that.dialogBox.y = 0;
that.textContent.y = 500;
that.dialogState = DIALOG_PAUSING;
console.log( "Pausing on showing" + that.dialogBox.y );
}
@ -395,49 +439,49 @@ function Dialogue( character, text ){ @@ -395,49 +439,49 @@ function Dialogue( character, text ){
// Render one character at a time
}
var pubsub = {};
(function(q) {
var topics = {}, subUid = -1;
q.subscribe = function(topic, func) {
if (!topics[topic]) {
topics[topic] = [];
}
var token = (++subUid).toString();
topics[topic].push({
token: token,
func: func
});
return token;
};
q.publish = function(topic, args) {
if (!topics[topic]) {
return false;
}
setTimeout(function() {
var subscribers = topics[topic],
len = subscribers ? subscribers.length : 0;
while (len--) {
subscribers[len].func(args);
}
}, 0);
return true;
};
q.unsubscribe = function(token) {
for (var m in topics) {
if (topics[m]) {
for (var i = 0, j = topics[m].length; i < j; i++) {
if (topics[m][i].token === token) {
topics[m].splice(i, 1);
return token;
}
}
}
}
return false;
};
}(pubsub));
function BindPubSub( obj ){
(function(q) {
var topics = {}, subUid = -1;
q.subscribe = function(topic, func) {
if (!topics[topic]) {
topics[topic] = [];
}
var token = (++subUid).toString();
topics[topic].push({
token: token,
func: func
});
return token;
};
q.publish = function(topic, args) {
if (!topics[topic]) {
return false;
}
setTimeout(function() {
var subscribers = topics[topic],
len = subscribers ? subscribers.length : 0;
while (len--) {
subscribers[len].func(args);
}
}, 0);
return true;
};
q.unsubscribe = function(token) {
for (var m in topics) {
if (topics[m]) {
for (var i = 0, j = topics[m].length; i < j; i++) {
if (topics[m][i].token === token) {
topics[m].splice(i, 1);
return token;
}
}
}
}
return false;
};
}(obj));
}

Loading…
Cancel
Save