OSDN Git Service

fda2a888c52c9cf6f005221de470c7802229c927
[h58pcdgame/GameScriptCoreLibrary.git] / www / corelib / classes / BakingOvenObjectClass.js
1 var BakingOvenObjectClass = function(ownerStage, args){\r
2         BakingOvenObjectClass.base.apply(this, arguments);\r
3         \r
4         this.imgs = new Array();\r
5         for(var i = 0; i < 3; i++){\r
6                 this.imgs[i] = document.createElement('img');\r
7         }\r
8         this.imgs[0].src = "images/furnace.png";\r
9         this.imgs[1].src = "images/furnaceof1.png";\r
10         this.imgs[2].src = "images/furnaceof2.png";\r
11         \r
12         this.img_puff = [];\r
13         this.img_puff[0] = document.createElement('img');\r
14         this.img_puff[0].src = "images/puff.png";\r
15         this.img_puff[1] = document.createElement('img');\r
16         this.img_puff[1].src = "images/puff2.png";\r
17         \r
18         this.cookSound = createAudio("baking.mp3");\r
19         this.image = this.imgs[0];\r
20         this.size.x = 64;\r
21         this.size.y = 96;\r
22         this.isPhantom = true;\r
23         this.isSelecting = false;\r
24         this.basePoint = 0;\r
25         this.bakingTickCount = 0;\r
26         this.bakingCount = 0;\r
27         this.bakingStartTime = -1;              //調理開始時に時刻を代入\r
28         this.isBaking = false;\r
29         \r
30         this.selectKeyPushed = false;\r
31         \r
32 }.extend(BlockClass, {\r
33         tick : function()\r
34         {\r
35                 this.checkTouchingDirection();\r
36                 if((this.touchingDirection & CollideBody) == CollideBody){\r
37                         if(this.ownerStage.manager.UIManager.keyState.select && !this.isSelecting && !this.selectKeyPushed){\r
38                                 this.selectKeyPushed = true;\r
39                                 var that = this;\r
40                                 var thatManager = that.ownerStage.manager;\r
41                                 if(!this.isBaking){\r
42                                         //焼き始め\r
43                                         if(thatManager.userManager.ingredientList.length <= 0){\r
44                                                 thatManager.addWidget(new MessageWidgetClass(thatManager, ["手持ちの材料がありません!\n"]));\r
45                                                 that.isSelecting = false;\r
46                                         } else if(!this.isSelecting){\r
47                                                 this.isSelecting = true;\r
48                                                 thatManager.addWidget(\r
49                                                         new SelectWidgetClass(thatManager, [thatManager.userManager.ingredientList, function(retv){\r
50                                                                 if(retv != null){\r
51                                                                         if(retv.length > 0){\r
52                                                                                 that.basePoint = that.calculateBreadBasePoint(retv);\r
53                                                                                 if(that.basePoint < 0){\r
54                                                                                         thatManager.addWidget(new MessageWidgetClass(thatManager, ["見るからにまずそう…焼くのはやめておこう。\n"]));\r
55                                                                                 } else{\r
56                                                                                         var text = new TextWidgetClass(thatManager, ["焼き始めました!\nもう一度窯を選択すると取り出します。       ", true, true]);\r
57                                                                                         thatManager.addWidget(text);\r
58                                                                                         that.bakingTickCount = 0;\r
59                                                                                         that.bakingCount = 0;\r
60                                                                                         that.bakingStartTime = +new Date();     //時間のミリ秒を代入\r
61                                                                                         that.isBaking = true;\r
62                                                                                         for(var i = 0, m = retv.length; i < m; i++){\r
63                                                                                                 removeAnObjectFromArray(thatManager.userManager.ingredientList, retv[i]);\r
64                                                                                         }\r
65                                                                                         that.cookSound.load();\r
66                                                                                         that.cookSound.play();\r
67                                                                                 }\r
68                                                                         } else{\r
69                                                                                 thatManager.addWidget(new MessageWidgetClass(thatManager, ["一つも材料が選択されていないので、パンを焼くことができません!\n"]));\r
70                                                                         }\r
71                                                                 }\r
72                                                                 that.isSelecting = false;\r
73                                                         },true, 0, true])\r
74                                                 );\r
75                                         }\r
76                                 } else if(this.bakingCount > 10){\r
77                                         //焼き終わり\r
78                                         this.isSelecting = true;\r
79                                         var s = null;\r
80                                         var p = 1;\r
81                                         var t = parseInt(((+new Date()) - this.bakingStartTime) / 100);\r
82                                         if(t < 30){\r
83                                                 s = "まだ生だった…。";\r
84                                                 p = 0.25;\r
85                                         } else if(t < 60){\r
86                                                 s = "生焼けだった…。";\r
87                                                 p = 0.50;\r
88                                         } else if(t < 80){\r
89                                                 s = "火通りが甘い…。";\r
90                                                 p = 0.75;\r
91                                         } else if(t < 95){\r
92                                                 s = "いい焼け具合だ!";\r
93                                                 p = 1.00;\r
94                                         } else if(t < 100){\r
95                                                 s = "最高の焼き具合だ!";\r
96                                                 p = 1.25;\r
97                                         } else if(t < 101){\r
98                                                 s = "完璧な焼き具合だ!";\r
99                                                 p = 1.50;\r
100                                         } else if(t < 110){\r
101                                                 s = "ちょっとやりすぎた感ただようがいい焦げ方だ!";\r
102                                                 p = 1.00;\r
103                                         } else if(t < 116){\r
104                                                 s = "焦げ過ぎだった…。";\r
105                                                 p = 0.50;\r
106                                         } else if(t < 121){\r
107                                                 s = "炭になってる…。";\r
108                                                 p = 0.25;\r
109                                         } else{\r
110                                                 s = "もはや灰しか残らなかった…。";\r
111                                                 p = 0.00;\r
112                                         }\r
113                                         that.basePoint = Math.floor(p * that.basePoint);\r
114                                         thatManager.userManager.breadList.push(that.basePoint);\r
115                                         thatManager.addWidget(new MessageWidgetClass(thatManager, [s + "\n" + that.basePoint + "ポイントのパンをゲットした。\n"]));\r
116                                         that.isSelecting = false;\r
117                                         that.isBaking = false;\r
118                                         this.bakingCount = 0;\r
119                                         this.image = this.imgs[0];\r
120                                         that.cookSound.pause();\r
121                                 }\r
122                         }\r
123                         if(!this.ownerStage.manager.UIManager.keyState.select) this.selectKeyPushed = false;\r
124                 }\r
125                 if(this.isBaking){\r
126                         //焼き途中\r
127                         this.bakingTickCount++;\r
128                         if(this.bakingTickCount >= 6){\r
129                                 this.bakingTickCount = 0;\r
130                                 this.bakingCount++;\r
131                                 this.image = this.imgs[(this.bakingCount & 1) + 1];\r
132                         }\r
133                 }\r
134         },\r
135         calculateBreadBasePoint: function(ingr){\r
136                 var p = 0;\r
137                 for(var i = 0, m = ingr.length; i < m; i++){\r
138                         p += IngredientAttributeList[ingr[i].index][1];\r
139                 }\r
140                 return p;\r
141         },\r
142         draw : function(x, y)\r
143         {\r
144                 BakingOvenObjectClass.base.prototype.draw.apply(this, [x, y]);\r
145                 this.touchingDirection = 0;\r
146                 if(this.bakingCount > 80)\r
147                 {\r
148                         var puff = (((+new Date()) - this.bakingStartTime) / 100) - 80;\r
149                         if(puff > 40)puff = 40;\r
150                         if(puff < 0) puff = 0;\r
151                         var opacity = (puff / 40);\r
152                         this.ownerStage.mainContext.save();\r
153                         this.ownerStage.mainContext.globalAlpha = opacity;\r
154                         this.ownerStage.mainContext.drawImage(this.img_puff[this.ownerStage.manager.tickCount % 20 < 10 ? 0 : 1], x - 32 , y - 400, 320, 480);\r
155                         this.ownerStage.mainContext.restore();\r
156                 }\r
157         }\r
158 });