diff --git a/src/game/mouse/grilled_meat/bonus_meat.js b/src/game/mouse/grilled_meat/bonus_meat.js
new file mode 100644
index 0000000..10ae27b
--- /dev/null
+++ b/src/game/mouse/grilled_meat/bonus_meat.js
@@ -0,0 +1,37 @@
+BonusMeat.prototype = MeatBase.prototype;
+BonusMeat.constructor = BonusMeat;
+
+function BonusMeat() {
+ MeatBase.call(this);
+ this.loadTexture("bonus_meat");
+
+ this.setMeatTypeVariables()
+}
+
+
+BonusMeat.prototype.setMeatTypeVariables = function() {
+ this.cookingSpeed = BonusMeat.COOKING_SPEED_BURN_LEVEL_WEAK;
+
+ this.loadTexture('meat_burn1');
+ } else if(this.getMeatGradeBySide(Meat.MEAT_FRONT) == Meat.DONENESS_WELLDONE) {
+ this.loadTexture('meat_welldone1');
+ } else {
+ this.loadTexture('meat1');
+
+
+ this.spriteMeatBurnBlack =
+}
+
+
+
+BonusMeat.COOKING_SPEED_BURN_LEVEL_WEAK = 0.1;
+BonusMeat.COOKING_SPEED_BURN_LEVEL_NORMAL = 0.2;
+BonusMeat.COOKING_SPEED_BURN_LEVEL_STRONG = 0.3;
+
+BonusMeat.SCORE_NAME_RARE = 10;
+BonusMeat.SCORE_NAME_WELLDONE = 100;
+BonusMeat.SCORE_NAME_BURN_BLACK = 0;
+
+BonusMeat.SPRITE_NAME_RARE = "bonus_meat";
+BonusMeat.SPRITE_NAME_WELLDONE = "bonus_meat_welldone";
+BonusMeat.SPRITE_NAME_BURN_BLACK = "bonus_meat_burn";
\ No newline at end of file
diff --git a/src/game/mouse/grilled_meat/game.js b/src/game/mouse/grilled_meat/game.js
index 30ed194..6d2376a 100644
--- a/src/game/mouse/grilled_meat/game.js
+++ b/src/game/mouse/grilled_meat/game.js
@@ -86,6 +86,10 @@ var Game = {
this.meatGroup.add(meat);
}
+ this.normalMeat = new NormalMeat();
+ // this.meatBase = new MeatBase();
+
+
// speech bubble
this.speechBubble = new SpeechBubble(game.world.centerX + 100, game.world.centerY - 160);
this.speechBubble.hideSpeechBubble();
diff --git a/src/game/mouse/grilled_meat/loading.js b/src/game/mouse/grilled_meat/loading.js
index b9a43c1..bbb5c96 100644
--- a/src/game/mouse/grilled_meat/loading.js
+++ b/src/game/mouse/grilled_meat/loading.js
@@ -44,15 +44,15 @@ var Loading = {
game.load.image('meat1', '../../../resources/image/object/grilled_meat/meat1.png');
game.load.image('meat2', '../../../resources/image/object/grilled_meat/meat2.png');
game.load.image('meat3', '../../../resources/image/object/grilled_meat/meat3.png');
- game.load.image('meatBonus', '../../../resources/image/object/grilled_meat/meat_bonus.png');
- game.load.image('meatWellDone1', '../../../resources/image/object/grilled_meat/meat1_welldone.png');
- game.load.image('meatWellDone2', '../../../resources/image/object/grilled_meat/meat2_welldone.png');
- game.load.image('meatWellDone3', '../../../resources/image/object/grilled_meat/meat3_welldone.png');
- game.load.image('meatBonusWellDone', '../../../resources/image/object/grilled_meat/meat_bonus_welldone.png');
- game.load.image('meatBurn1', '../../../resources/image/object/grilled_meat/meat1_burn.png');
- game.load.image('meatBurn2', '../../../resources/image/object/grilled_meat/meat2_burn.png');
- game.load.image('meatBurn3', '../../../resources/image/object/grilled_meat/meat3_burn.png');
- game.load.image('meatBonusBurn', '../../../resources/image/object/grilled_meat/meat_bonus_burn.png');
+ game.load.image('bonus_meat', '../../../resources/image/object/grilled_meat/meat_bonus.png');
+ game.load.image('meat_welldone1', '../../../resources/image/object/grilled_meat/meat1_welldone.png');
+ game.load.image('meat_welldone2', '../../../resources/image/object/grilled_meat/meat2_welldone.png');
+ game.load.image('meat_welldone3', '../../../resources/image/object/grilled_meat/meat3_welldone.png');
+ game.load.image('bonus_meat_welldone', '../../../resources/image/object/grilled_meat/meat_bonus_welldone.png');
+ game.load.image('meat_burn1', '../../../resources/image/object/grilled_meat/meat1_burn.png');
+ game.load.image('meat_burn2', '../../../resources/image/object/grilled_meat/meat2_burn.png');
+ game.load.image('meat_burn3', '../../../resources/image/object/grilled_meat/meat3_burn.png');
+ game.load.image('bonus_meat_burn', '../../../resources/image/object/grilled_meat/meat_bonus_burn.png');
game.load.image('smoke', '../../../resources/image/ui/smoke.png');
diff --git a/src/game/mouse/grilled_meat/meat.js b/src/game/mouse/grilled_meat/meat.js
index 09e800c..12f1396 100644
--- a/src/game/mouse/grilled_meat/meat.js
+++ b/src/game/mouse/grilled_meat/meat.js
@@ -170,9 +170,9 @@ Meat.prototype.flipToFront = function() {
// console.log("flipToFront");
// console.log("back : " + this.getMeatGradeBySide(Meat.MEAT_BACK) + ", front : " + this.getMeatGradeBySide(Meat.MEAT_FRONT));
if(this.getMeatGradeBySide(Meat.MEAT_FRONT) == Meat.DONENESS_BURN_BLACK) {
- this.loadTexture('meatBurn1');
+ this.loadTexture('meat_burn1');
} else if(this.getMeatGradeBySide(Meat.MEAT_FRONT) == Meat.DONENESS_WELLDONE) {
- this.loadTexture('meatWellDone1');
+ this.loadTexture('meat_welldone1');
} else {
this.loadTexture('meat1');
}
@@ -186,9 +186,9 @@ Meat.prototype.flipToBack = function() {
// console.log("flipToBack");
// console.log("back : " + this.getMeatGradeBySide(Meat.MEAT_BACK) + ", front : " + this.getMeatGradeBySide(Meat.MEAT_FRONT));
if(this.getMeatGradeBySide(Meat.MEAT_BACK) == Meat.DONENESS_BURN_BLACK) {
- this.loadTexture('meatBurn1');
+ this.loadTexture('meat_burn1');
} else if(this.getMeatGradeBySide(Meat.MEAT_BACK) == Meat.DONENESS_WELLDONE) {
- this.loadTexture('meatWellDone1');
+ this.loadTexture('meat_welldone1');
} else {
this.loadTexture('meat1');
}
diff --git a/src/game/mouse/grilled_meat/meat_base.js b/src/game/mouse/grilled_meat/meat_base.js
new file mode 100644
index 0000000..b80ce6a
--- /dev/null
+++ b/src/game/mouse/grilled_meat/meat_base.js
@@ -0,0 +1,331 @@
+MeatBase.prototype = Object.create(Phaser.Sprite.prototype);
+MeatBase.constructor = MeatBase;
+
+function MeatBase() {
+ Phaser.Sprite.call(this, game, 500, Game.MEAT_PLATE_POSITION_Y, '');
+ this.anchor.set(0.5);
+ this.smoothed = false;
+ game.add.existing(this);
+
+ this.initMeatTypeVariables();
+ this.initMouseEventHandler();
+}
+
+MeatBase.prototype.update = function() {
+ var posY = this.y;
+
+ if(posY <= God.POSITION_Y) {
+ this.scale.set(0.4);
+ } else if(posY > God.POSITION_Y && posY < HeatPlate.POSITION_Y) {
+ var scaleRate = (posY - God.POSITION_Y) / (HeatPlate.POSITION_Y - God.POSITION_Y);
+ this.scale.set(0.4 + 0.3 * scaleRate);
+ } else {
+ this.scale.set(0.4 + 0.3);
+ }
+
+ // if(this.isOnHeatPlate == true && game.input.mousePointer.isUp == true) {
+ // this.cooking();
+ // }
+}
+
+
+MeatBase.prototype.initMeatTypeVariables = function() {
+ this.cookingSpeed = 0.0;
+
+ this.rareScore = 0;
+ this.welldoneScore = 0;
+ this.burnBlackScore = 0;
+}
+
+
+MeatBase.prototype.initMeatTypeVariables = function() {
+ this.cookingSide = MeatBase.MEAT_NONE;
+ this.cookingTime = [];
+ this.cookingGrade = [];
+
+ this.cookingTime[MeatBase.MEAT_BACK] = 0;
+ this.cookingTime[MeatBase.MEAT_FRONT] = 0;
+
+ this.cookingGrade[MeatBase.MEAT_BACK] = MeatBase.DONENESS_RARE;
+ this.cookingGrade[MeatBase.MEAT_FRONT] = MeatBase.DONENESS_RARE;
+
+ this.isActivated = true;
+ this.isStartCook = false;
+ this.isOnHeatPlate = false;
+
+ this.spriteNameRare = "";
+ this.spriteNameWelldone = "";
+ this.spriteNameBurnBlack = "";
+}
+
+MeatBase.prototype.initMouseEventHandler = function() {
+ this.downPositionX;
+ this.downPositionY;
+
+ this.inputEnabled = true;
+ this.input.enableDrag();
+ this.events.onInputDown.add(this.onInputDown, this);
+ this.events.onInputUp.add(this.onInputUp, this);
+}
+
+
+
+MeatBase.prototype.onInputDown = function(sprite, pointer) {
+ // console.log("-------------------------");
+ // console.log("onInputDown : " + pointer.x + ", " + pointer.y);
+
+ this.downPositionX = Math.floor(sprite.x);
+ this.downPositionY = Math.floor(sprite.y);
+
+ // this.stopCook();
+}
+
+MeatBase.prototype.onInputUp = function(sprite, pointer) {
+ // console.log("-------------------------");
+ // console.log("onInputUp : " + pointer.x + ", " + pointer.y);
+
+ var upPositionX = Math.floor(sprite.x);
+ var upPositionY = Math.floor(sprite.y);
+
+ // console.log("downPositionX : + " + this.downPositionX + ", downPositY : " + this.downPositionY);
+ // console.log("upPositionX : + " + upPositionX + ", upPositionY : " + upPositionY);
+ if(this.isInClickArea(this.downPositionX, this.downPositionY, upPositionX, upPositionY) == true)
+ this.onClickListener();
+ else {
+ this.onDragStopListener();
+ }
+}
+
+
+
+
+MeatBase.prototype.isInClickArea = function(downX, downY, upX, upY) {
+ if(downX - 5 < upX && upX < downX + 5 && downY - 5 < upY && upY < downY + 5)
+ return true;
+
+ return false;
+}
+
+MeatBase.prototype.onClickListener = function(pointer) {
+ console.log("onClickListener");
+
+ if(this.isFront() == true)
+ this.flipToBack()
+ else
+ this.flipToFront();
+ // console.log("flip cooking side : " + this.cookingSide);
+
+ /*
+ if(this.mainGame.isOverHeatPlate(this.x, this.y, this.width, this.height) == true) {
+ if(this.isFront() == true)
+ this.flipToBack()
+ else
+ this.flipToFront();
+ // console.log("flip cooking side : " + this.cookingSide);
+
+ this.startCook();
+ }
+ */
+}
+
+MeatBase.prototype.onDragStopListener = function(pointer) {
+ console.log("onDragStop");
+
+ /*
+ if(this.mainGame.isOverHeatPlate(this.x, this.y, this.width, this.height) == true) {
+ // console.log("isOverHeatPlate : " + isOverHeatPlate(this.x, this.y, this.width, this.height));
+ this.startCook();
+ } else {
+ this.stopCook();
+ }
+
+ if(this.mainGame.isOverGod(this.x, this.y) == true) {
+ // console.log("isOverGod : " + isOverGod(this.x, this.y));
+ this.mainGame.godEatMeat(this);
+ }
+ */
+}
+
+
+
+MeatBase.prototype.isFront = function() {
+ if(this.cookingSide == MeatBase.MEAT_BACK)
+ return true;
+
+ return false;
+}
+
+MeatBase.prototype.flipToFront = function() {
+ this.cookingSide = MeatBase.MEAT_BACK;
+ // console.log("flipToFront : " + this.cookingSide);
+
+ this.angle = MeatBase.ANGLE_FRONT;
+ // console.log("flipToFront");
+ // console.log("back : " + this.getMeatGradeBySide(MeatBase.MEAT_BACK) + ", front : " + this.getMeatGradeBySide(MeatBase.MEAT_FRONT));
+ this.updateSprite();
+}
+
+MeatBase.prototype.flipToBack = function() {
+ this.cookingSide = MeatBase.MEAT_FRONT;
+ // console.log("flipToBack : " + this.cookingSide);
+
+ this.angle = MeatBase.ANGLE_BACK;
+ // console.log("flipToBack");
+ // console.log("back : " + this.getMeatGradeBySide(MeatBase.MEAT_BACK) + ", front : " + this.getMeatGradeBySide(MeatBase.MEAT_FRONT));
+ this.updateSprite();
+}
+
+MeatBase.prototype.updateSprite = function() {
+ if(this.getMeatGradeBySide(MeatBase.MEAT_FRONT) == MeatBase.DONENESS_BURN_BLACK) {
+ this.loadTexture(this.spriteNameBurnBlack);
+ } else if(this.getMeatGradeBySide(MeatBase.MEAT_FRONT) == MeatBase.DONENESS_WELLDONE) {
+ this.loadTexture(this.spriteNameWelldone);
+ } else {
+ this.loadTexture(this.spriteNameRare);
+ }
+}
+
+MeatBase.prototype.show = function() {
+ this.isActivated = true;
+ this.alpha = 1;
+}
+
+MeatBase.prototype.hide = function() {
+ this.isActivated = false;
+ this.alpha = 0;
+ this.stopCook();
+}
+
+
+
+MeatBase.prototype.startCook = function() {
+ this.isStartCook = true;
+ this.isOnHeatPlate = true;
+ // console.log("this.isOnHeatPlate : " + this.isOnHeatPlate);
+
+ // console.log("startCook : " + this.cookingSide);
+ if(this.cookingSide == MeatBase.MEAT_NONE)
+ this.flipToFront();
+
+ this.startAnimateSmoke();
+}
+
+MeatBase.prototype.stopCook = function() {
+ this.isOnHeatPlate = false;
+ // console.log("this.isOnHeatPlate : " + this.isOnHeatPlate);
+ this.stopAnimateSmoke();
+}
+
+MeatBase.prototype.getMeatGrade = function() {
+ if(this.cookingGrade[MeatBase.MEAT_FRONT] == MeatBase.DONENESS_WELLDONE && this.cookingGrade[MeatBase.MEAT_BACK] == MeatBase.DONENESS_WELLDONE)
+ return MeatBase.DONENESS_WELLDONE;
+ else if(this.cookingGrade[MeatBase.MEAT_FRONT] == MeatBase.DONENESS_BURN_BLACK || this.cookingGrade[MeatBase.MEAT_BACK] == MeatBase.DONENESS_BURN_BLACK)
+ return MeatBase.DONENESS_BURN_BLACK;
+ else
+ return MeatBase.DONENESS_RARE;
+}
+
+MeatBase.prototype.getMeatGradeBySide = function(cookingSide) {
+ return this.cookingGrade[cookingSide];
+}
+
+MeatBase.prototype.setActive = function(isActivated, x, y, meat_type) {
+ this.isActivated = isActivated;
+
+ if(isActivated == false) {
+ this.alpha = 0;
+ this.x = -100;
+ this.y = -100;
+
+ return;
+ }
+
+ this.cookingSide = MeatBase.MEAT_NONE;
+ this.cookingTime[MeatBase.MEAT_BACK] = 0;
+ this.cookingTime[MeatBase.MEAT_FRONT] = 0;
+ this.cookingGrade[MeatBase.MEAT_BACK] = MeatBase.DONENESS_RARE;
+ this.cookingGrade[MeatBase.MEAT_FRONT] = MeatBase.DONENESS_RARE;
+
+ this.x = x;
+ this.y = y;
+ this.loadTexture('meat1');
+ this.angle = MeatBase.ANGLE_NONE;
+ this.alpha = 1;
+}
+
+MeatBase.prototype.cooking = function() {
+ this.cookingTime[this.cookingSide] += 1;
+ // console.log("back : " + this.cookingTime[MeatBase.MEAT_BACK] + ", front : " + this.cookingTime[MeatBase.MEAT_FRONT]);
+
+ if(this.cookingTime[MeatBase.MEAT_BACK] > MeatBase.COOK_TIME_BURN) {
+ if(this.getMeatGradeBySide(MeatBase.MEAT_BACK) != MeatBase.DONENESS_BURN_BLACK) {
+ this.cookingGrade[MeatBase.MEAT_BACK] = MeatBase.DONENESS_BURN_BLACK;
+ this.changeAnimateSmokeColor(MeatBase.DONENESS_BURN_BLACK);
+ }
+ } else if(this.cookingTime[MeatBase.MEAT_BACK] > MeatBase.COOK_TIME_WELLDONE) {
+ if(this.getMeatGradeBySide(MeatBase.MEAT_BACK) != MeatBase.DONENESS_WELLDONE) {
+ this.cookingGrade[MeatBase.MEAT_BACK] = MeatBase.DONENESS_WELLDONE;
+ this.changeAnimateSmokeColor(MeatBase.DONENESS_WELLDONE);
+ }
+ }
+
+ if(this.cookingTime[MeatBase.MEAT_FRONT] > MeatBase.COOK_TIME_BURN) {
+ if(this.getMeatGradeBySide(MeatBase.MEAT_FRONT) != MeatBase.DONENESS_BURN_BLACK) {
+ this.cookingGrade[MeatBase.MEAT_FRONT] = MeatBase.DONENESS_BURN_BLACK;
+ this.changeAnimateSmokeColor(MeatBase.DONENESS_BURN_BLACK);
+ }
+ } else if(this.cookingTime[MeatBase.MEAT_FRONT] > MeatBase.COOK_TIME_WELLDONE) {
+ if(this.getMeatGradeBySide(MeatBase.MEAT_FRONT) != MeatBase.DONENESS_WELLDONE) {
+ this.cookingGrade[MeatBase.MEAT_FRONT] = MeatBase.DONENESS_WELLDONE;
+ this.changeAnimateSmokeColor(MeatBase.DONENESS_WELLDONE);
+ }
+ }
+}
+
+MeatBase.prototype.stopAnimateSmoke = function() {
+ this.whiteSmokeParticle.stop();
+ this.redSmokeParticle.stop();
+ this.blackSmokeParticle.stop();
+}
+
+MeatBase.prototype.startAnimateSmoke = function() {
+ var cookingSideGrade = this.cookingGrade[this.cookingSide];
+ this.changeAnimateSmokeColor(cookingSideGrade);
+
+}
+
+MeatBase.prototype.changeAnimateSmokeColor = function(type) {
+ // console.log("changeAnimateSmokeColor : " + type);
+ this.stopAnimateSmoke();
+
+ switch(type) {
+ case MeatBase.DONENESS_RARE:
+ this.whiteSmokeParticle.start(this.x, this.y);
+ break;
+
+ case MeatBase.DONENESS_WELLDONE:
+ this.redSmokeParticle.start(this.x, this.y);
+ break;
+
+ case MeatBase.DONENESS_BURN_BLACK:
+ this.blackSmokeParticle.start(this.x, this.y);
+ break;
+ }
+}
+
+
+MeatBase.MEAT_NONE = 0;
+MeatBase.MEAT_FRONT = 1;
+MeatBase.MEAT_BACK = 2;
+
+MeatBase.DONENESS_RARE = 0;
+MeatBase.DONENESS_WELLDONE = 1;
+MeatBase.DONENESS_BURN_BLACK = 2;
+MeatBase.DONENESS_NONE = 3;
+
+MeatBase.ANGLE_NONE = 0;
+MeatBase.ANGLE_FRONT = 30;
+MeatBase.ANGLE_BACK = -30;
+
+MeatBase.COOK_TIME_WELLDONE = 200;
+MeatBase.COOK_TIME_BURN = 400;
\ No newline at end of file
diff --git a/src/game/mouse/grilled_meat/normal_meat.js b/src/game/mouse/grilled_meat/normal_meat.js
new file mode 100644
index 0000000..9806a95
--- /dev/null
+++ b/src/game/mouse/grilled_meat/normal_meat.js
@@ -0,0 +1,52 @@
+NormalMeat.prototype = MeatBase.prototype;
+NormalMeat.constructor = NormalMeat;
+
+function NormalMeat() {
+ MeatBase.call(this);
+
+ this.setMeatTypeVariables();
+ this.randomizeMeatType();
+}
+
+
+NormalMeat.prototype.setMeatTypeVariables = function() {
+ this.cookingSpeed = NormalMeat.COOKING_SPEED_BURN_LEVEL_WEAK;
+}
+
+NormalMeat.prototype.randomizeMeatType = function() {
+ this.meatType = Math.floor(Math.random() * 3) + 1;
+
+ switch(this.meatType) {
+ case 1:
+ this.scale.set(0.5);
+ break;
+
+ case 2:
+ this.scale.set(0.5);
+ break;
+
+ case 3:
+ this.scale.set(0.5);
+ break;
+ }
+
+ this.spriteNameRare = NormalMeat.SPRITE_NAME_RARE + this.meatType;
+ this.spriteNameWelldone = NormalMeat.SPRITE_NAME_WELLDONE + this.meatType;
+ this.spriteNameBurnBlack = NormalMeat.SPRITE_NAME_BURN_BLACK + this.meatType;
+
+ this.loadTexture(this.spriteNameRare);
+}
+
+
+
+NormalMeat.COOKING_SPEED_BURN_LEVEL_WEAK = 0.1;
+NormalMeat.COOKING_SPEED_BURN_LEVEL_NORMAL = 0.2;
+NormalMeat.COOKING_SPEED_BURN_LEVEL_STRONG = 0.3;
+
+NormalMeat.SCORE_NAME_RARE = 10;
+NormalMeat.SCORE_NAME_WELLDONE = 100;
+NormalMeat.SCORE_NAME_BURN_BLACK = 0;
+
+NormalMeat.SPRITE_NAME_RARE = "meat";
+NormalMeat.SPRITE_NAME_WELLDONE = "meat_welldone";
+NormalMeat.SPRITE_NAME_BURN_BLACK = "meat_burn";
\ No newline at end of file
diff --git a/src/web/client/grilled_meat.html b/src/web/client/grilled_meat.html
index cba9bbd..3763244 100644
--- a/src/web/client/grilled_meat.html
+++ b/src/web/client/grilled_meat.html
@@ -67,6 +67,8 @@
+
+