OSDN Git Service

sleepのgaugeが間違っていたので修正
[yukkurioverwint/YukkuriOverwinter.git] / ctrl.js
1 var Ctrl = enchant.Class.create({
2         initialize: function (){
3                 this.game = null;
4                 this.menuBg = null;
5                 this.currentCommand = ECommand.WORLD_CURSOR;
6                 this.backgroundMap = null;
7                 this.player = null;
8                 this.objArray = [];
9         },
10         init : function (game){
11                 this.game = game;
12         },
13         setMenuBg: function (menuBg){
14                 console.log("setMenuBg");
15                 this.menuBg = menuBg;
16         },
17         setBackgroundMap: function(backgroundMap){
18                 this.backgroundMap = backgroundMap;
19         },
20         setPlayer: function(player){
21                 this.player = player;
22         },
23         /**
24          * [setCurrentCommand description]
25          * @param {ECommand} cmd [description]
26          */
27         setCurrentCommand: function(cmd){
28                 this.currentCommand = cmd;
29         },
30         getCurrentCommand: function(){
31                 return this.currentCommand;
32         }
33 });
34 var CommandIcon = enchant.Class.create(enchant.Sprite,{
35         initialize: function (x, y, ecmd, index){
36                 enchant.Sprite.call(this, x, y);
37                 this.ecmd = ecmd;
38                 this.index = index;
39         },
40         isCurrent: function(){
41                 return (this.index * 2)%2 !== 0;
42         },
43         setCurrent: function(){
44                 this.frame = (this.index * 2) + 1;
45         },
46         removeCurrent: function(){
47                 this.frame = (this.index * 2);
48         }
49 });
50 var MangIcon = enchant.Class.create({
51         initialize: function (ctl, menuBg){
52                 var self = this;
53                 this.ctl = ctl;
54                 this.cmdIcons = [];
55                 var index = 0;
56                 for (var key in ECommand) {
57                         var value = ECommand[key];
58                         this.cmdIcons[value] = new CommandIcon(40, 40, value, index);
59                         this.cmdIcons[value].image = this.ctl.game.assets[EResPath.COMMAND];
60                         this.cmdIcons[value].x = 40 * index;
61                         this.cmdIcons[value].y = 4;
62
63                         // odd equals current. even equals not current.
64                         this.cmdIcons[value].frame = (this.ctl.getCurrentCommand() == value)? index * 2 + 1: index * 2;
65                         menuBg.addChild(this.cmdIcons[value]);
66                         this.cmdIcons[value].ontouchstart = function(obj){
67                                 // change command icons
68                                 var nowECmd = self.ctl.getCurrentCommand();
69                                 self.cmdIcons[nowECmd].removeCurrent();
70                                 if(!this.isCurrent()){
71                                         this.setCurrent();
72                                 }
73                                 self.ctl.setCurrentCommand(this.index);
74                         };
75                         index++;
76                 }
77         },
78         get: function(commandIndex){
79                 return this.cmdIcons[commandIndex];
80         }
81 });
82 var ATouchEvent = enchant.Class.create({
83         // initialize: function (ctl){
84         //      this.ctl = ctl;
85         // },
86         touchstart: function(e){
87         },
88         touchmove: function(e){
89         },
90         touchend: function(e){
91         }
92 });
93
94 var WorldCursorTouchEvent = enchant.Class.create(ATouchEvent,{
95         initialize: function (ctl){
96                 this.ctl = ctl;
97                 this.touchX = 0;
98                 this.touchY = 0;
99         },
100         touchstart : function(e){
101                 this.touchX = e.x - this.ctl.backgroundMap.x;
102                 this.touchY = e.y - this.ctl.backgroundMap.y;
103         },
104         touchmove : function(e){
105                 var backgroundMap = this.ctl.backgroundMap;
106                 var game = this.ctl.game;
107
108                 if(game.touched){
109                         backgroundMap.x = e.x - this.touchX;
110                         if(backgroundMap.x < -EFieldPos.WIDTH)backgroundMap.x = -EFieldPos.WIDTH;
111                         if(backgroundMap.x > 0)backgroundMap.x = 0;
112
113                         backgroundMap.y = e.y - this.touchY;
114                         if(backgroundMap.y < -EFieldPos.HEIGHT)backgroundMap.y = -EFieldPos.HEIGHT;
115                         if(backgroundMap.y > 0)backgroundMap.y = 0;
116                 }
117                 if(e.x > EFieldPos.WIDTH)game.touched = false;
118                 else if(e.x < 30)game.touched = false;
119         },
120         touchend : function(e){
121         }
122 });
123 var WorldTargetTouchEvent = enchant.Class.create(ATouchEvent,{
124         initialize: function (ctl){
125                 this.ctl = ctl;
126                 this.touchX = 0;
127                 this.touchY = 0;
128         },
129         touchstart :function(e){
130                 if(e.x >= 0 && e.x <= EFieldPos.WIDTH){
131                         var backgroundMap = this.ctl.backgroundMap;
132                         addEffect(this.ctl.backgroundMap, -backgroundMap.x + e.x, -backgroundMap.y + e.y);
133                         this.ctl.player.tweet("ゆっくりりかいしたよ!");
134                         // this.ctl.player.tweet("ゆー...いきたくないのぜ");
135                 }
136         }
137 });
138
139 var MangTouch = enchant.Class.create({
140         initialize: function (ctl){
141                 this.ctl = ctl;
142                 var cursor = ECommand.WORLD_CURSOR;
143                 this.mang = {};
144                 this.mang[ECommand.WORLD_CURSOR] = new WorldCursorTouchEvent(ctl);
145                 this.mang[ECommand.WORLD_TARGET] = new WorldTargetTouchEvent(ctl);
146         },
147         get: function(ecmd){
148                 return this.mang[ecmd];
149         }
150 });
151 var MangLabel = enchant.Class.create({
152         initialize: function (ctl, menuBg){
153                 this.ctl = ctl;
154                 var labelGroup = new LabelGroup();
155                 this.START_XPOS = 4;
156                 this.START_YPOS = GAME_HEIGHT / 2;
157                 this.GAUGE_XPOS = 80;
158                 this.menuBg = menuBg;
159                 this.widthArr = [];
160                 this.WIDTH_MARGIN = 4;
161                 this.GAUGE_HEIGHT = 16;
162                 var FONT = "18px 'Times New Roman'";
163                 var COLOR = "#ffffff";
164                 menuBg.image.context.font = FONT;
165                 var self = this;
166                 // this.labels = {};
167                 this.labelParams = {
168                         "yukkuri" : {
169                                 label: null,
170                                 init: function(){
171                                         var TEXT = "ゆっくり";
172                                         var label = new Label(TEXT);
173                                         label.color = COLOR;
174                                         label.font = FONT;
175                                         label.x = self.START_XPOS;
176                                         label.y = self.START_YPOS;
177                                         label.textWidth = menuBg.image.context.measureText(TEXT).width;
178                                         this.label = label;
179                                 },
180                                 draw: function(yukkuriObj){
181                                         //100/maxhp*hp
182                                         var gauge = 100 / yukkuriObj.param.maxYukkuri * yukkuriObj.param.yukkuri;
183                                         self.menuBg.image.context.fillStyle = "#ffffff";
184                                         self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
185                                         self.menuBg.image.context.fillStyle = "#ff0000";
186                                         self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
187                                 }
188                         },
189                         "hungry" : {
190                                 label: null,
191                                 init: function(){
192                                         var TEXT = "空腹";
193                                         var label = new Label(TEXT);
194                                         label.color = COLOR;
195                                         label.font = FONT;
196                                         label.x = self.START_XPOS;
197                                         label.y = self.START_YPOS + 20;
198                                         label.textWidth = menuBg.image.context.measureText(TEXT).width;
199                                         this.label = label;
200                                 },
201                                 draw: function(yukkuriObj){
202                                         var gauge =yukkuriObj.param.hungry;
203                                         self.menuBg.image.context.fillStyle = "#ffffff";
204                                         self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
205                                         self.menuBg.image.context.fillStyle = "#bb7777";
206                                         self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
207                                 }
208                         },
209                         "unun" : {
210                                 label: null,
211                                 init: function(){
212                                         var TEXT = "うんうん";
213                                         var label = new Label(TEXT);
214                                         label.color = COLOR;
215                                         label.font = FONT;
216                                         label.x = self.START_XPOS;
217                                         label.y = self.START_YPOS + 40;
218                                         label.textWidth = menuBg.image.context.measureText(TEXT).width;
219                                         this.label = label;
220                                 },
221                                 draw: function(yukkuriObj){
222                                         var gauge =yukkuriObj.param.unun;
223                                         self.menuBg.image.context.fillStyle = "#ffffff";
224                                         self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
225                                         self.menuBg.image.context.fillStyle = "#bb7777";
226                                         self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
227                                 }
228                         },
229                         "sleep" : {
230                                 label: null,
231                                 init: function(){
232                                         var TEXT = "眠気";
233                                         var label = new Label(TEXT);
234                                         label.color = COLOR;
235                                         label.font = FONT;
236                                         label.x = self.START_XPOS;
237                                         label.y = self.START_YPOS + 60;
238                                         label.textWidth = menuBg.image.context.measureText(TEXT).width;
239                                         this.label = label;
240                                 },
241                                 draw: function(yukkuriObj){
242                                         var gauge =yukkuriObj.param.sleep;
243                                         self.menuBg.image.context.fillStyle = "#ffffff";
244                                         self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
245                                         self.menuBg.image.context.fillStyle = "#bb7777";
246                                         self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
247                                 }
248                         },
249                         "stress" : {
250                                 label: null,
251                                 init: function(){
252                                         var TEXT = "ストレス";
253                                         var label = new Label(TEXT);
254                                         label.color = COLOR;
255                                         label.font = FONT;
256                                         label.x = self.START_XPOS;
257                                         label.y = self.START_YPOS + 80;
258                                         label.textWidth = menuBg.image.context.measureText(TEXT).width;
259                                         this.label = label;
260                                 },
261                                 draw: function(yukkuriObj){
262                                         var gauge =yukkuriObj.param.stress;
263                                         self.menuBg.image.context.fillStyle = "#ffffff";
264                                         self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
265                                         self.menuBg.image.context.fillStyle = "#bb7777";
266                                         self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
267                                 }
268                         },
269                 };
270
271                 this.menuBg.image.context.fillStyle = '#ff0000';
272                 for(var key in this.labelParams){
273                         var labelObj = this.labelParams[key];
274                         labelObj.init();
275                         labelGroup.addChild(labelObj.label);
276                 }
277                 menuBg.addChild(labelGroup);
278         },
279         draw: function(yukkuriObj){
280                 for(var key in this.labelParams){
281                         var labelObj = this.labelParams[key];
282                         labelObj.draw(yukkuriObj);
283                 }
284
285         }
286 });
287
288
289 // var MangLabel = enchant.Class.create({
290 //      initialize: function (ctl, menuBg){
291 //              this.ctl = ctl;
292 //              var labelGroup = new LabelGroup();
293 //              this.START_XPOS = 4;
294 //              this.START_YPOS = GAME_HEIGHT / 2;
295 //              this.menuBg = menuBg;
296 //              this.widthArr = [];
297 //              this.WIDTH_MARGIN = 4;
298 //              var FONT = "14px 'Times New Roman'";
299 //              var COLOR = "#ffffff";
300 //              menuBg.image.context.font = FONT;
301 //              var self = this;
302 //              this.labels = {
303 //                      "yukkuri" : function(){
304 //                              var TEXT = "ゆっくり";
305 //                              var label = new Label(TEXT);
306 //                              label.color = COLOR;
307 //                              label.font = FONT;
308 //                              label.x = self.START_XPOS;
309 //                              label.y = self.START_YPOS;
310 //                              label.textWidth = menuBg.image.context.measureText(TEXT).width;
311 //                      },
312 //                      "hungry" : function(){
313 //                              var TEXT = "空腹";
314 //                              var label = new Label(TEXT);
315 //                              label.color = COLOR;
316 //                              label.font = FONT;
317 //                              label.x = self.START_XPOS;
318 //                              label.y = self.START_YPOS + 20;
319 //                              label.textWidth = menuBg.image.context.measureText(TEXT).width;
320 //                              return label;
321 //                      },
322 //              };
323
324 //              this.labels["yukkuri"]();
325 //              console.log(this.labels["yukkuri"]().textWidth);
326 //              // for(var key in this.labels){
327 //              //      console.log(key);
328 //              //      var label = this.labels[key]();
329 //              //      // labelGroup.addChild(label);
330 //              // }
331 //              // var width = this.widthArr['yukkuri'];
332 //              // this.menuBg.image.context.fillStyle = '#ff0000';
333 //              // this.menuBg.image.context.fillRect(this.START_XPOS + width, this.START_YPOS, 100, 30);
334 //              // menuBg.addChild(labelGroup);
335 //      },
336 //      draw: function(){
337 //              label = this.labels[key]();
338 //              this.menuBg.image.context.fillStyle = '#ff0000';
339 //              this.menuBg.image.context.fillRect(label.x, label.y, 100, 14);
340 //      }
341 // });
342