Skip to content

Instantly share code, notes, and snippets.

@TomiRh
Created August 5, 2017 07:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TomiRh/25f24d6dcdae720352d301085c2ae824 to your computer and use it in GitHub Desktop.
Save TomiRh/25f24d6dcdae720352d301085c2ae824 to your computer and use it in GitHub Desktop.
Unable to get parent
var insert = 0;
var order = 0;
var takeSum = 0;
var storeSum = 0;
var played = false;
var img_btnPlay;
var img_btnStop;
var img_btnLegend;
var img_lvlCompletePopup;
var img_legendPopup;
//tween
var tweenItem;
var tweenPoplvl;
var tweenOutlvl;
var tweenPoplegend;
var tweenOutLegend;
//group
var group_pseudocode;
var getItem;
var answerItem;
var group_item;
var max_item = 4;
var oriX, oriY = 0;
var playState = {
create : function(){
var img_level1;
var img_btnHints;
//textlevel
var text_order;
var textHint;
//style
var style1 = { font: "bold 64px Arial", fill: "#fff"};
var style2 = { font: "bold 10px Arial", fill: "#fff"};
//object
var items = [];
var random_item;
var key_item = ['clothes1', 'clothes2', 'clothes3', 'clothes4'];
group_item = this.game.add.group();
getItem = this.game.add.group();
answerItem = this.game.add.group();
//pseudocodes code
var pseudocode = [];
var num_pseudocode = 3; //JSON number of command depend on level
var key_pseudocode = ['take_id', 'store_id', 'jump_id']; // JSON
var pool_of_pseudocode = 10; //Static number of maximum object pooling
group_pseudocode = this.game.add.group();
//load level Background & UI
img_level1 = this.game.add.sprite(this.world.centerX, this.world.centerY, 'level_1');
img_btnHints = this.game.add.button(1152, this.world.centerY + 350, 'btnHints', showHint, this);
img_btnPlay = this.game.add.button(20, this.world.centerY + 100, 'btnPlay', startCmd, this);
img_btnStop = this.game.add.button(150, this.world.centerY + 100, 'btnStop', stopCmd, this);
img_btnLegend = this.game.add.button(40, 20, 'btnLegend', legendPopFunc, this);
img_legendPopup = this.game.add.sprite(this.world.centerX, this.world.centerY, 'legendPopup');
img_lvlCompletePopup = this.game.add.sprite(this.world.centerX, this.world.centerY, 'levelCompletePopup',
'img_lvlCompletePopup/spin/0001');
player = this.game.add.sprite(this.world.centerX, this.world.centerY, 'mainChar');
//add sprite for clothes
for (var l = 0; l < max_item; l++) {
items[l] = this.game.add.sprite(this.world.centerX - 250,
this.world.centerY - 20 - (l * 12), this.game.rnd.pick(key_item));
group_item.addChild(items[l]);
this.world.bringToTop(group_item);
items[l].anchor.setTo(.5, .5);
items[l].scale.setTo(1, 1);
}
//add sprite for pseudocodes
for (var j = 0; j < pool_of_pseudocode; j++) {
for (var i = 0; i < num_pseudocode; i++) {
if(i < 2){
pseudocode[i] = this.game.add.sprite(55 + (i * 110),
this.world.centerY + 235, key_pseudocode[i]);
}else{
pseudocode[i] = this.game.add.sprite(55 + ((i - 2) * 110),
this.world.centerY + 310, key_pseudocode[i]);
}
pseudocode[i].anchor.setTo(.5, .5);
pseudocode[i].scale.setTo(.6, .6);
pseudocode[i].inputEnabled = true;
pseudocode[i].input.enableDrag();
pseudocode[i].events.onDragStop.add(onDragStop, this);
pseudocode[i].events.onDragStart.add(onDragStart, this);
}
}
//tween a popup after completing level & legend
tweenPoplvl = this.game.add.tween(img_lvlCompletePopup.scale).to({x: .5, y: .5},
5000, Phaser.Easing.Elastic.Out);
tweenOutlvl = this.game.add.tween(img_lvlCompletePopup.scale).to({x: .1, y: .1},
3000, Phaser.Easing.Elastic.In);
tweenPoplegend = this.game.add.tween(img_legendPopup.scale).to({x: 1, y: 1},
3000, "Quart.easeOut");
tweenOutLegend = this.game.add.tween(img_legendPopup.scale).to({x: .1, y: .1},
3000, Phaser.Easing.Elastic.In);
player.anchor.setTo(.5,.5);
img_level1.anchor.setTo(.5, .5);
img_btnHints.anchor.setTo(.5, 1);
img_lvlCompletePopup.anchor.setTo(.5, .5);
img_legendPopup.anchor.setTo(.5, .5);
player.scale.setTo(.5, .5);
img_level1.scale.setTo(1, 1);
img_btnPlay.scale.setTo(.6, .45);
img_btnStop.scale.setTo(.6, .45);
img_lvlCompletePopup.scale.setTo(.1, .1);
img_legendPopup.scale.setTo(.1, .1);
player.animations.add('walk');
player.animations.play('walk', 3, true);
//popup (clean it later)
img_lvlCompletePopup.alpha = 0;
var closelvlComplete;
var cw = 40;
var ch = 8;
closelvlComplete = this.game.make.sprite(cw, -ch, 'closePopup');
closelvlComplete.inputEnabled = true;
closelvlComplete.input.priorityID = 1;
closelvlComplete.input.useHandCursor = true;
closelvlComplete.events.onInputDown.add(closePop, this);
img_lvlCompletePopup.addChild(closelvlComplete);
img_legendPopup.alpha = 0;
var closeLegend;
var lw = 250;
var lh = 260;
closeLegend = this.game.make.sprite(lw, -lh, 'closePopup');
closeLegend.scale.setTo(.2, .2);
closeLegend.inputEnabled = true;
closeLegend.input.priorityID = 1;
closeLegend.input.useHandCursor = true;
closeLegend.events.onInputDown.add(closePop, this);
img_legendPopup.addChild(closeLegend);
img_btnPlay.FixedToCamera = true;
img_btnPlay.input.enabled = false;
img_btnStop.input.enabled = false;
},
update : function(){
}
};
function startCmd(){
played = true;
img_btnStop.input.enabled = true;
img_btnPlay.input.enabled = false;
this.game.time.events.repeat(Phaser.Timer.SECOND * 2, insert, _pseudoFunc, this);
var textTest2;
}
function stopCmd(){
order = 0;
insert = 0;
this.game.state.restart();
}
function showHint(img_btnHints){
textHint = this.game.add.text(1050, this.world.centerY + 190, "Try use jump!", this.style2);
textHint.scale.setTo(1, 1);
img_btnHints.destroy();
}
function onDragStart(sprite){
oriX = sprite.x;
oriY = sprite.y;
}
function onDragStop(sprite, pointer){
//check whether or not the pseudocode dragged within list territory
if(sprite.x < 240 && sprite.y < 430){
img_btnPlay.input.enabled = true; //allow to play the pseudocode
insert += 1;
sprite.x = 100;
sprite.y = 190 + (80 * (insert - 1));
text_order = this.game.add.text(12, sprite.y - 30, insert, this.style1);
group_pseudocode.add(sprite);
this.world.bringToTop(group_pseudocode);
sprite.input.disableDrag();
}else{
//return to original position
sprite.x = oriX;
sprite.y = oriY;
}
sprite.checkWorldBounds = true;
sprite.outOfBoundsKill = true;
}
function _pseudoFunc(){
var texTest;
switch (group_pseudocode.children[order].key){
case 'take_id':
if(getItem.length != 0){ //check if player hold an item
insert = 0;
break;
}
getItem.addChild(group_item.children[max_item - (takeSum + 1)]);
group_item.remove(group_item.children[max_item - (takeSum + 1)]);
getItem.children[0].x = this.world.centerX;
getItem.children[0].y = 200;
this.world.bringToTop(getItem);
takeSum++;
break;
case 'store_id':
if(getItem.length == 0){ //check if player do not hold an item
insert = 0;
// this.game.state.restart();
}else{
answerItem.addChild(getItem[0]);
answerItem.children[storeSum].x = this.world.centerX + 300;
answerItem.children[storeSum].y = (285 - ((storeSum + 1) * 20));
getItem.remove(getItem.children[0]);
storeSum++;
}
break;
case 'jump_id':
if(group_item.length == 0){
insert = 0;
order = 0;
break;
}
var rollback = -1;
order = rollback;
break;
default:
}
order++;
textTest = this.game.add.text(this.world.centerX, this.world.centerY + (100 * order), order + "Order", this.style2);
}
function closePop(){
img_legendPopup.alpha = 0;
img_btnLegend.input.enabled = true;
tweenOutLegend.start();
}
function legendPopFunc(){
this.world.bringToTop(img_legendPopup);
img_legendPopup.alpha = 1;
img_btnLegend.input.enabled = false;
tweenPoplegend.start();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment