Created
August 5, 2017 07:55
-
-
Save TomiRh/25f24d6dcdae720352d301085c2ae824 to your computer and use it in GitHub Desktop.
Unable to get parent
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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