-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.min.js
50 lines (50 loc) · 17.3 KB
/
app.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
var sprites={};var buttons={};var texts={};var groups={};var objects={};function preload_image(key,filename,dimens_required=true,base_dir='res/',extension='.png'){if(dimens_required&&!dimens[key])return;if(is_mobile)base_dir+='mobile/';filename=filename||key;game.load.image(key,base_dir+filename+extension);}
function preload_spritesheet(key,filename,width,height,dimens_required=true,base_dir='res/',extension='.png'){if(dimens_required&&!dimens[key])return;if(is_mobile)base_dir+='mobile/';filename=filename||key;if(dimens[`${key}_sheet`]){if(width==undefined)width=dimens[`${key}_sheet`][0];if(height==undefined)height=dimens[`${key}_sheet`][1];}
game.load.spritesheet(key,base_dir+filename+extension,width,height);}
function preload_audio(key,filename,base_dir='audio/',extension='.wav'){filename=filename||key;game.load.audio(key,base_dir+filename+extension);}
function preload_state(name,base_dir='states/',extension='.js'){if(eval(`typeof ${name}`)==='undefined')
game.load.script(name,base_dir+name+extension);}
function create_sprite(x,y,key,alpha,anchor_x,anchor_y){if(x<0)x+=game.width;if(y<0)y+=game.height;if(x>0&&x<=1)x=game.width*x;if(y>0&&y<=1)y=game.height*y;sprite=game.add.sprite(x,y,key);if(alpha!=undefined)sprite.alpha=alpha;if(anchor_x!=undefined)sprite.anchor.x=anchor_x;if(anchor_y!=undefined)sprite.anchor.y=anchor_y;sprites[key]=sprite;objects[key]=sprite;if(dimens[`tween_${key}`])
create_tween(key);return sprite;}
function create_sprite_d(key,alpha){if(!dimens[key])return null;dx=dimens[key][0];dy=dimens[key][1];ax=dimens[key][2];ay=dimens[key][3];if(ax==undefined)ax=.5;if(ay==undefined)ay=.5;x=dx-DX;y=dy-DY;if(dx<=1)x=dx;if(dy<=1)y=dy;return create_sprite(x,y,key,alpha,ax,ay);}
function create_button(x,y,key,callback,ctx,alpha,anchor_x,anchor_y,over,out,down,up){if(x<0)x+=game.width;if(y<0)y+=game.height;if(x>0&&x<=1)x=game.width*x;if(y>0&&y<=1)y=game.height*y;button=game.add.button(x,y,key,callback,ctx,over,out,down,up);if(alpha!=undefined)button.alpha=alpha;if(anchor_x!=undefined)button.anchor.x=anchor_x;if(anchor_y!=undefined)button.anchor.y=anchor_y;buttons[key]=button;objects[key]=button;if(dimens[`tween_${key}`])
create_tween(key);return button;}
function create_button_d(key,callback,ctx,alpha,over,out,down,up){if(!dimens[key])return null;dx=dimens[key][0];dy=dimens[key][1];ax=dimens[key][2];ay=dimens[key][3];if(ax==undefined)ax=.5;if(ay==undefined)ay=.5;x=dx-DX;y=dy-DY;if(dx<=1)x=dx;if(dy<=1)y=dy;if(dimens[`${key}_sheet`]){if(over==undefined)over=dimens[`${key}_sheet`][2]||0;if(out==undefined)out=dimens[`${key}_sheet`][3]||0;if(down==undefined)down=dimens[`${key}_sheet`][4]||0;if(up==undefined)up=dimens[`${key}_sheet`][5]||0;}
return create_button(x,y,key,callback,ctx,alpha,ax,ay,over,out,down,up);}
function create_text(x,y,w,ls,str,style,alpha,anchor_x,anchor_y){if(x<0)x+=game.width;if(y<0)y+=game.height;if(x>0&&x<=1)x=game.width*x;if(y>0&&y<=1)y=game.height*y;text=game.add.text(x,y,str,copy(style));if(w){text.wordWrap=true;text.wordWrapWidth=w;}
if(ls)
text.lineSpacing=ls;if(alpha!=undefined)text.alpha=alpha;if(anchor_x!=undefined)text.anchor.x=anchor_x;if(anchor_y!=undefined)text.anchor.y=anchor_y;return text;}
function create_text_d(key,alpha){if(!dimens[key])return null;dx=dimens[key][0];dy=dimens[key][1];ax=dimens[key][2];ay=dimens[key][3];w=dimens[key][4];ls=dimens[key][5];str=dimens[key][6];if(ax==undefined)ax=.5;if(ay==undefined)ay=.5;x=dx-DX;y=dy-DY;if(dx<=1)x=dx;if(dy<=1)y=dy;text=create_text(x,y,w,ls,str,dimens[`${key}_style`],alpha,ax,ay);texts[key]=text;objects[key]=text;if(dimens[`tween_${key}`])
create_tween(key);return text;}
function set_text(key,str,max_lines=0,rtl=false){text=texts[key];if(max_lines){if(!text.originalFontSize){text.originalFontSize=text.fontSize;}else{text.fontSize=text.originalFontSize;}
text.updateText();lines=text.advancedWordWrap(str).split("\n").length;text.fontSize=text.originalFontSize*(1+0.2*(max_lines-lines));}
text.setText(str);}
function create_group(name,parent){group=game.add.group(parent,name);groups[name]=group;objects[name]=group;return group;}
function foreach_group_item(name,fn){for(i in groups[name].children){sp=groups[name].children[i];params=copy(Array.prototype.slice.call(arguments)).slice(2);fn(sp);}}
function as_bool(arg){if(typeof arg=='object')return false;return arg===0||!!arg||(typeof arg==='boolean');}
function set_item(sp,enabled,visible){if(typeof sp==='string')sp=objects[sp];if(as_bool(enabled)&&sp instanceof Phaser.Button){sp.inputEnabled=!!enabled;if(enabled&&sp.input){sp.input.pixelPerfectOver=true;sp.input.pixelPerfectClick=true;sp.input.useHandCursor=true;}}
if(as_bool(visible))
sp.visible=!!visible;}
function set_group(name,enabled,visible){foreach_group_item(name,sp=>{set_item(sp,enabled,visible);});}
function tween_group(name){for(i in groups[name].children){sp=groups[name].children[i];tween_params=copy(Array.prototype.slice.call(arguments,1));if(typeof sp.key==='string')
create_tween(sp.key,tween_params);else
create_tween(sp,tween_params);}}
function copy(obj){if(typeof obj==="undefined")return;return JSON.parse(JSON.stringify(obj));}
function create_tween(key){tween_params=copy(Array.prototype.slice.call(arguments,1));obj=null;if(typeof key==='string'){if(!objects[key])return null;obj=objects[key];}
else if(typeof key==='object'){obj=key;key=null;}
if(!obj)return null;if(tween_params.length==0&&key&&dimens[`tween_${key}`])
tween_params=copy(dimens[`tween_${key}`]);if(tween_params.length==1&&typeof tween_params[0]==='object')
tween_params=copy(tween_params[0]);if(tween_params.length==1&&typeof tween_params[0]==='string'&&dimens[tween_params[0]])
tween_params=copy(dimens[tween_params[0]]);if(!tween_params||tween_params.length<2)
return null;tween=game.add.tween(obj);return tween[tween_params[0]].apply(tween,tween_params.slice(1));};var Home=function(game){};Home.prototype={init:function(){console.log("Home init");},create:function(){create_sprite_d('background');create_sprite_d('tree');create_sprite_d('title_board');create_sprite_d('frame_leaves_top');create_sprite_d('frame_leaves_bottom');create_button_d('btn_to_the_game',this.actionOnClick,this).input.pixelPerfectOver=true;create_button_d('btn_download',this.actionOnClick,this).input.pixelPerfectOver=true;create_button_d('btn_instructions',this.actionOnClick,this).input.pixelPerfectOver=true;},actionOnClick:function(btn,ptr){console.log(`${btn.key}click`);switch(btn.key){case'btn_to_the_game':game.state.start('Game');break;}},};;var Game=function(game){};Game.prototype={score_pine_tree:0,score_cypress:0,timeout:0,timer:null,curr_cat:null,curr_card:null,answer_showing:false,init:function(){console.log("Game init");},create:function(){create_sprite_d('background');create_sprite_d('bg_tree_doodles');create_sprite_d('title');create_sprite_d('cat1_column');create_sprite_d('cat2_column');create_sprite_d('cat3_column');create_sprite_d('cat4_column');create_group('cards');create_group('disabled_cards');for(i=1;i<=4;i++){create_sprite_d(`cat${i}_shadows`);create_tween(`cat${i}_shadows`,'tween_cat_shadows');for(j in scores){k=scores[j];sp=create_button_d(`cat${i}_sign${k}`,this.actionOnClick,this);groups.cards.add(sp);}}
set_group('cards',true);tween_group('cards','tween_cat_sign');create_sprite_d('board_shader',0);create_sprite_d('board1_bg',0);create_sprite_d('board2_bg',0);create_sprite_d('board3_bg',0);create_sprite_d('board4_bg',0);create_sprite_d('board_white_bg',0);create_group('quiz_group');groups.quiz_group.add(create_button_d('close_button',this.actionOnClick,this,0));groups.quiz_group.add(create_sprite_d('pine_tree',0));groups.quiz_group.add(create_button_d('select_btn_pine_tree',this.actionOnSelect,this,0));groups.quiz_group.add(create_sprite_d('cypress',0));groups.quiz_group.add(create_button_d('select_btn_cypress',this.actionOnSelect,this,0));groups.quiz_group.add(create_text_d('text_quiz_score',0));groups.quiz_group.add(create_text_d('text_quiz',0));set_group('quiz_group',false,false);create_group('answer_group');groups.answer_group.add(create_button_d('close_button_2',this.actionOnClick,this,0));groups.answer_group.add(create_text_d('text_answer_quiz',0));groups.answer_group.add(create_text_d('text_answer_title',0));groups.answer_group.add(create_text_d('text_answer',0));set_group('answer_group',false,false);create_group('timer_group');groups.timer_group.add(create_sprite_d('timer_bg',0));groups.timer_group.add(create_text_d('text_timer',0));groups.timer_group.add(create_button_d('timer_btn_pause',this.pauseCounter,this,0));groups.timer_group.add(create_text_d('text_timer_btn_pause',0));groups.timer_group.add(create_button_d('timer_btn_reset',this.resetCounter,this,0));groups.timer_group.add(create_text_d('text_timer_btn_reset',0));set_group('timer_group',false,false);create_sprite_d('leaves');create_button_d('game_btn_restart',this.actionOnClick,this).input.pixelPerfectOver=true;create_button_d('game_btn_winners',this.actionOnClick,this).input.pixelPerfectOver=true;create_sprite_d('score_bg');create_sprite_d('score_pine_tree');create_sprite_d('score_cypress');create_text_d('text_score_pine_tree');create_text_d('text_score_cypress');this.score_pine_tree=0;this.score_cypress=0;this.tick_audio=game.add.audio('ClockTicking',1,true);this.tick_audio.addMarker('tick',0,1,1,true);this.bells_audio=game.add.audio('Bells');},update:function(){for(i in texts){var text=texts[i];text.updateText();}
set_text("text_score_pine_tree",this.score_pine_tree);set_text("text_score_cypress",this.score_cypress);},startCounter:function(){set_text('text_timer',"01:00");set_text('text_timer_btn_pause',tr.timer_btn_pause);set_item('text_timer_btn_pause',true,true);set_item('timer_btn_pause',true,true);this.timeout=60;this.timer=game.time.create();this.timer.loop(1000,this.updateCounter,this);this.timer.start();this.tick_audio.play('tick');},stopCounter:function(){if(this.timer)this.timer.stop();this.tick_audio.stop();this.timer=null;this.timeout=0;set_item('text_timer_btn_pause',false,false);set_item('timer_btn_pause',false,false);},resetCounter:function(){this.stopCounter();this.startCounter();},pauseCounter:function(){if(!this.timer){console.log("ERROR: timer not started");return;}
if(!this.timer.paused){set_text('text_timer_btn_pause',tr.timer_btn_resume);this.timer.pause();this.tick_audio.stop();}else{set_text('text_timer_btn_pause',tr.timer_btn_pause);this.timer.resume();this.tick_audio.play('tick');}},updateCounter:function(){this.timeout--;var minutes=parseInt(this.timeout/60);var seconds=parseInt(this.timeout%60);set_text('text_timer',("0"+minutes).substr(-2)+":"+("0"+seconds).substr(-2));if(this.timeout<=0){this.stopCounter();this.bells_audio.play();}},open_qa_board:function(cat,key){if(this.curr_cat)return;this.curr_cat=cat;this.curr_card=key;create_tween(`board_shader`,'tween_show_qa_dlg_bg');create_tween(`board${this.curr_cat}_bg`,'tween_show_qa_dlg_bg').onComplete.add(this.startCounter,this);create_tween(`board_white_bg`,'tween_show_qa_dlg_bg');texts.text_quiz_score.setText(key.substring(9));set_text('text_quiz',tr[key][0],3,true);set_text('text_answer_quiz',tr[key][0],2,true);set_text('text_answer',tr[key][1],3,true);set_group('cards',false);set_group('quiz_group',true);set_group('timer_group',true);tween_group('quiz_group','tween_show_qa_dlg_item');tween_group('timer_group','tween_show_qa_dlg_item');buttons.select_btn_pine_tree.setFrames(0,0,0,0);buttons.select_btn_cypress.setFrames(0,0,0,0);},show_answer:function(){if(!this.curr_cat||!this.curr_card)return;if(this.answer_showing)return;set_group('quiz_group',false);set_group('timer_group',false);tween_group('quiz_group','tween_hide_qa_dlg_item');tween_group('timer_group','tween_hide_qa_dlg_item');set_group('answer_group',true);tween_group('answer_group','tween_show_qa_dlg_item');this.answer_showing=true;this.stopCounter();},close_qa_board:function(){if(!this.curr_cat||!this.curr_card)return;card_key=this.curr_card;if(this.answer_showing){set_group('answer_group',false);tween_group('answer_group','tween_hide_qa_dlg_item');this.answer_showing=false;}
else{set_group('quiz_group',false);set_group('timer_group',false);tween_group('quiz_group','tween_hide_qa_dlg_item');tween_group('timer_group','tween_hide_qa_dlg_item');}
this.stopCounter();create_tween(`board_white_bg`,'tween_hide_qa_dlg_bg');create_tween(`board_shader`,'tween_hide_qa_dlg_bg');create_tween(`board${this.curr_cat}_bg`,'tween_hide_qa_dlg_bg').onComplete.add(function(){var card=buttons[card_key];groups.cards.remove(card,false);var mask=game.make.bitmapData(card.width,card.height);var overlay=game.make.bitmapData(card.width,card.height);var bmd=game.make.bitmapData(card.width,card.height);mask.draw(card_key);mask.update();mask.tint=0;mask.update();overlay.fill(255,255,255,0.7);bmd.alphaMask(overlay,mask);var disabled_card=game.add.sprite(card.x,card.y,bmd);disabled_card.anchor=card.anchor;groups.disabled_cards.add(disabled_card);set_group('cards',true);});this.curr_cat=null;this.curr_card=null;},actionOnClick:function(btn,ptr){console.log(`${btn.key}click`);switch(btn.key){case'game_btn_restart':this.close_qa_board();game.state.start('Game');break;case'game_btn_winners':this.close_qa_board();var winner,score;if(this.score_pine_tree>this.score_cypress){winner="oranim";score=this.score_pine_tree;}
else if(this.score_pine_tree<this.score_cypress){winner="broshim";score=this.score_cypress;}
game.state.start('Winners',true,false,winner,score);break;case'close_button':this.show_answer();break;case'close_button_2':this.close_qa_board();break;default:switch(btn.key.substring(0,9)){case'cat1_sign':this.open_qa_board(1,btn.key);break;case'cat2_sign':this.open_qa_board(2,btn.key);break;case'cat3_sign':this.open_qa_board(3,btn.key);break;case'cat4_sign':this.open_qa_board(4,btn.key);break;}}},actionOnSelect:function(btn,ptr){console.log(`${btn.key}select`);switch(btn.key){case'select_btn_pine_tree':btn.setFrames(1,1,1,1);this.score_pine_tree+=parseInt(this.curr_card.substring(9));this.show_answer();break;case'select_btn_cypress':btn.setFrames(1,1,1,1);this.score_cypress+=parseInt(this.curr_card.substring(9));this.show_answer();break;}},};;var Winners=function(game){};Winners.prototype={winner:null,score:0,init:function(winner,score){console.log("Winners init");this.winner=winner;this.score=score;},create:function(){create_sprite_d('background');create_sprite_d('winners_leaves_frame');create_sprite_d('winners_logos');create_sprite_d('winners_column');create_sprite_d('title_oranim',0);create_sprite_d('title_broshim',0);text_score=create_text_d('text_winner_score',0);btn_restart=create_button_d('winners_btn_restart',this.actionOnClick,this,0);btn_restart.input.pixelPerfectOver=true;btn_restart.visible=false;var winner=this.winner;var score=this.score;if(winner){score_str=""+score;score_str=score_str.split("").reverse().join("");score_str+=" "+tr.winning_score;score_str=score_str.split("").reverse().join("");set_text('text_winner_score',score_str+"ו");text_score.addColor("rgba(0,0,0,0)",score_str.length);create_tween(`title_${winner}`,`tween_winner`).onComplete.add(function(){create_tween('winners_btn_restart','tween_show_btn_restart');});create_tween('text_winner_score',`tween_text_winner_score`);}
else{create_tween('winners_btn_restart','tween_show_btn_restart');}
game.add.audio('Drums').play();},actionOnClick:function(btn,ptr){console.log(`${btn.key}click`);switch(btn.key){case'winners_btn_restart':game.state.start('Home');break;}},};;var game=new Phaser.Game({width:W,height:H,renderer:Phaser.AUTO,parent:'game',transparent:true,antialias:true,state:this,scaleMode:Phaser.ScaleManager.EXACT_FIT});var App=function(){}
var scores=[5,20,50,100];App.prototype={init:function(){console.log("App init");game.stage.disableVisibilityChange=true;game.stage.backgroundColor='#88d39f';},preload:function(){preload_image('background');preload_state('Home');preload_image('frame_leaves_top');preload_image('frame_leaves_bottom');preload_image('tree');preload_image('title_board');preload_image('btn_to_the_game');preload_image('btn_download');preload_image('btn_instructions');preload_state('Game');preload_image('leaves');preload_image('bg_tree_doodles');preload_image('title');preload_spritesheet('game_btn_restart');preload_spritesheet('game_btn_winners');preload_image('score_bg');preload_image('score_pine_tree');preload_image('score_cypress');preload_image('board_shader');preload_image('board1_bg');preload_image('board2_bg');preload_image('board3_bg');preload_image('board4_bg');preload_image('board_white_bg');preload_spritesheet('close_button','select_btn');preload_spritesheet('close_button_2','select_btn');preload_image('pine_tree');preload_image('cypress');preload_spritesheet('select_btn_pine_tree','select_btn');preload_spritesheet('select_btn_cypress','select_btn');preload_image('timer_bg');preload_spritesheet('timer_btn_pause','timer_btn_bg');preload_spritesheet('timer_btn_reset','timer_btn_bg');for(i=1;i<=4;i++){preload_image(`cat${i}_column`);preload_image(`cat${i}_shadows`);for(j in scores){k=scores[j];preload_image(`cat${i}_sign${k}`);}}
preload_state('Winners');preload_image('winners_leaves_frame');preload_image('winners_logos');preload_image('winners_column');preload_image('title_oranim');preload_image('title_broshim');preload_spritesheet('winners_btn_restart','game_btn_restart');preload_audio('ClockTicking');preload_audio('Bells');preload_audio('Drums');},create:function(){game.state.add('Home',Home);game.state.add('Game',Game);game.state.add('Winners',Winners);game.state.start('Home');},restart:function(){game.scale.setGameSize(W,H);game.state.start('App',true,true);},};game.state.add('App',App);game.state.start('App');