1 var Ctrl = enchant.Class.create({
2 initialize: function (){
5 this.currentCommand = ECommand.WORLD_CURSOR;
6 this.backgroundMap = null;
10 this.objSprite = null;
11 this.mangTouch = null;
12 this.time = (HOUR * 24 + HOUR * 6) ;
18 // var sec = ctl.time/BASE_FPS;
19 var sec = ctl.time/BASE_FPS;
20 this.min = Math.floor(sec % 60);
22 this.hour = Math.floor(_min % 24);
23 this.day = Math.floor(_min / 24 % 30);
25 init : function (game){
29 if(this.hour >= 5 && this.hour < 11)return EDate.MORNING;
30 if(this.hour >= 11 && this.hour < 13)return EDate.NOON;
31 if(this.hour >= 13 && this.hour < 17)return EDate.AFTERNOON;
32 if(this.hour >= 17 && this.hour < 20)return EDate.EVENING;
33 if(this.hour >= 20 && this.hour < 24)return EDate.NIGHT;
34 if(this.hour >= 0 && this.hour < 5)return EDate.MIDNIGHT;
36 setDefined:function(def){
39 addObj: function(obj){
40 this.objArray[obj.id] = obj;
45 removeObj:function(obj){
46 delete this.objArray[obj.id];
48 setMenuBg: function (menuBg){
49 console.log("setMenuBg");
52 setBackgroundMap: function(backgroundMap){
53 this.backgroundMap = backgroundMap;
55 setPlayer: function(player){
58 setTime: function(time){
61 setCurrentObjSprite: function(objSprite){
62 this.objSprite = objSprite;
64 getCurrentObjSprite: function(objSprite){
65 return this.objSprite;
67 isCollision : function (e, node){
68 var ex = e.x - ctl.backgroundMap.x;
69 var ey = e.y - ctl.backgroundMap.y;
70 if(node.getX() <= ex && node.getX() + node.getWidth() >= ex
71 && node.getY() <= ey && node.getY() + node.getHeight() >= ey){
77 * [setCurrentCommand description]
78 * @param {ECommand} cmd [description]
80 setCurrentCommand: function(cmd){
81 this.currentCommand = cmd;
83 getCurrentCommand: function(){
84 return this.currentCommand;
87 var CommandIcon = enchant.Class.create(enchant.Sprite,{
88 initialize: function (x, y, ecmd, index){
89 enchant.Sprite.call(this, x, y);
93 isCurrent: function(){
94 return (this.index * 2)%2 !== 0;
96 setCurrent: function(){
97 this.frame = (this.index * 2) + 1;
99 removeCurrent: function(){
100 this.frame = (this.index * 2);
103 var MangIcon = enchant.Class.create({
104 initialize: function (ctl, menuBg){
109 for (var key in ECommand) {
110 var value = ECommand[key];
111 this.cmdIcons[value] = new CommandIcon(ICON_WIDTH, ICON_HEIGHT, value, index);
112 this.cmdIcons[value].image = this.ctl.game.assets[EResPath.COMMAND];
113 this.cmdIcons[value].x = ICON_WIDTH * index + 5;
114 this.cmdIcons[value].y = ICON_HEIGHT + 2;
116 // odd equals current. even equals not current.
117 this.cmdIcons[value].frame = (this.ctl.getCurrentCommand() == value)? index * 2 + 1: index * 2;
118 menuBg.addChild(this.cmdIcons[value]);
119 this.cmdIcons[value].ontouchstart = function(obj){
120 // change command icons
121 var nowECmd = self.ctl.getCurrentCommand();
122 self.cmdIcons[nowECmd].removeCurrent();
123 if(!this.isCurrent()){
126 self.ctl.setCurrentCommand(this.index);
131 get: function(commandIndex){
132 return this.cmdIcons[commandIndex];
135 var ATouchEvent = enchant.Class.create({
136 // initialize: function (ctl){
139 touchstart: function(e){
141 touchmove: function(e){
143 touchend: function(e){
147 var WorldCursorTouchEvent = enchant.Class.create(ATouchEvent,{
148 initialize: function (ctl){
153 touchstart : function(e){
154 this.touchX = e.x - this.ctl.backgroundMap.x;
155 this.touchY = e.y - this.ctl.backgroundMap.y;
156 var tx = this.touchX;
157 var ty = this.touchY;
158 var nodes = this.ctl.getObjs();
159 nodes.sort(ctl.def.nodeSort);
160 for (var id in nodes) {
161 var node = nodes[id];
162 var nx = node.getX();
163 var ny = node.getY();
164 if(node == null)continue;
165 if(node instanceof Box
166 || node instanceof this.ctl.def.Food
167 || node instanceof this.ctl.def.Unun
171 if(node instanceof this.ctl.def.Yukkuri){
172 nx -= node.getWidth() / 2;
173 ny -= node.getHeight() / 2;
176 && (nx + node.getWidth()) >= tx
178 && (ny + node.getHeight()) >= ty
180 // new BoxLabel(this.ctl,100, e.x, e.y);
181 var box = new Box(this.ctl, node, e.x - ctl.backgroundMap.x, e.y - ctl.backgroundMap.y, 200, 200);
188 touchmove : function(e){
189 var backgroundMap = this.ctl.backgroundMap;
190 var game = this.ctl.game;
193 backgroundMap.x = e.x - this.touchX;
194 if(backgroundMap.x < -EFieldPos.WIDTH)backgroundMap.x = -EFieldPos.WIDTH;
195 if(backgroundMap.x > 0)backgroundMap.x = 0;
197 backgroundMap.y = e.y - this.touchY;
198 if(backgroundMap.y < -EFieldPos.HEIGHT)backgroundMap.y = -EFieldPos.HEIGHT;
199 if(backgroundMap.y > 0)backgroundMap.y = 0;
201 if(e.x > EFieldPos.WIDTH)game.touched = false;
202 else if(e.x < 30)game.touched = false;
204 touchend : function(e){
210 var WorldTargetTouchEvent = enchant.Class.create(ATouchEvent,{
211 initialize: function (ctl){
216 touchstart :function(e){
217 if(e.x >= 0 && e.x <= EFieldPos.WIDTH){
218 var backgroundMap = this.ctl.backgroundMap;
219 addEffect(this.ctl.backgroundMap, -backgroundMap.x + e.x, -backgroundMap.y + e.y);
220 this.ctl.player.tweet("ゆっくりりかいしたよ!");
221 // var vx = (-backgroundMap.x + e.x) - this.ctl.player.getX() ;
222 // var vy = (-backgroundMap.y + e.y) - this.ctl.player.getY() ;
227 ctl.player.cmdQueue.push(new CommandQueueObject({
228 touchX:(-backgroundMap.x + e.x),
229 touchY:(-backgroundMap.y + e.y),
231 actionStatus:EAction.MOVE_TO_COMMAND
233 // this.ctl.player.action.setStatus(EAction.MOVE_TO_COMMAND);
234 // new MoveCommandEvent({
237 // "action": this.ctl.player.action,
238 // "myYukkuri": this.ctl.player
241 // this.ctl.player.tweet("ゆー...いきたくないのぜ");
245 var WorldAppleTouchEvent = enchant.Class.create(ATouchEvent,{
246 initialize: function (ctl){
251 touchstart :function(e){
252 if(e.x >= 0 && e.x <= EFieldPos.WIDTH){
253 var backgroundMap = this.ctl.backgroundMap;
254 var tx = -backgroundMap.x + e.x;
255 var ty = -backgroundMap.y + e.y;
256 // new ctl.def.Food("apple", tx, ty);
257 new ctl.def.Food("grass", tx, ty);
261 var WorldPlaceTouchEvent = enchant.Class.create(ATouchEvent,{
262 initialize: function (ctl){
267 touchstart :function(e){
268 if(e.x >= 0 && e.x <= EFieldPos.WIDTH){
269 var backgroundMap = this.ctl.backgroundMap;
270 var tx = -backgroundMap.x + e.x;
271 var ty = -backgroundMap.y + e.y;
272 new ctl.def.Place("tree", tx, ty);
278 var MangTouch = enchant.Class.create({
279 initialize: function (ctl){
281 var cursor = ECommand.WORLD_CURSOR;
283 this.mang[ECommand.WORLD_CURSOR] = new WorldCursorTouchEvent(ctl);
284 this.mang[ECommand.WORLD_TARGET] = new WorldTargetTouchEvent(ctl);
285 this.mang[ECommand.WORLD_APPLE] = new WorldAppleTouchEvent(ctl);
286 this.mang[ECommand.WORLD_PLACE] = new WorldPlaceTouchEvent(ctl);
287 ctl.mangTouch = this;
290 return this.mang[ecmd];
293 var MangLabel = enchant.Class.create({
294 initialize: function (ctl, menuBg){
296 var labelGroup = new LabelGroup();
298 this.START_YPOS = GAME_HEIGHT / 2;
299 this.GAUGE_XPOS = 80;
300 this.menuBg = menuBg;
302 this.WIDTH_MARGIN = 4;
303 this.GAUGE_HEIGHT = 16;
304 var FONT = "18px 'Times New Roman'";
305 var COLOR = "#ffffff";
306 menuBg.image.context.font = FONT;
313 var TEXT = M.LABEL.YUKKURI;
314 var label = new Label(TEXT);
317 label.x = self.START_XPOS;
318 label.y = self.START_YPOS;
319 label.textWidth = menuBg.image.context.measureText(TEXT).width;
322 draw: function(yukkuriObj){
324 var gauge = 100 / yukkuriObj.param.maxYukkuri * yukkuriObj.param.yukkuri;
325 self.menuBg.image.context.fillStyle = "#ffffff";
326 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
327 self.menuBg.image.context.fillStyle = "#ff0000";
328 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
334 var TEXT = M.LABEL.HUNGRY;
335 var label = new Label(TEXT);
338 label.x = self.START_XPOS;
339 label.y = self.START_YPOS + 20;
340 label.textWidth = menuBg.image.context.measureText(TEXT).width;
343 draw: function(yukkuriObj){
344 var gauge =yukkuriObj.param.hungry;
345 self.menuBg.image.context.fillStyle = "#ffffff";
346 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
347 self.menuBg.image.context.fillStyle = "#bb7777";
348 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
354 var TEXT = M.LABEL.UNUN;
355 var label = new Label(TEXT);
358 label.x = self.START_XPOS;
359 label.y = self.START_YPOS + 40;
360 label.textWidth = menuBg.image.context.measureText(TEXT).width;
363 draw: function(yukkuriObj){
364 var gauge =yukkuriObj.param.unun;
365 self.menuBg.image.context.fillStyle = "#ffffff";
366 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
367 self.menuBg.image.context.fillStyle = "#bb7777";
368 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
374 var TEXT = M.LABEL.SLEEP;
375 var label = new Label(TEXT);
378 label.x = self.START_XPOS;
379 label.y = self.START_YPOS + 60;
380 label.textWidth = menuBg.image.context.measureText(TEXT).width;
383 draw: function(yukkuriObj){
384 var gauge =yukkuriObj.param.sleep;
385 self.menuBg.image.context.fillStyle = "#ffffff";
386 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
387 self.menuBg.image.context.fillStyle = "#bb7777";
388 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
394 var TEXT = M.LABEL.STRESS;
395 var label = new Label(TEXT);
398 label.x = self.START_XPOS;
399 label.y = self.START_YPOS + 80;
400 label.textWidth = menuBg.image.context.measureText(TEXT).width;
403 draw: function(yukkuriObj){
404 var gauge =yukkuriObj.param.stress;
405 self.menuBg.image.context.fillStyle = "#ffffff";
406 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
407 self.menuBg.image.context.fillStyle = "#bb7777";
408 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
413 this.menuBg.image.context.fillStyle = '#ff0000';
414 for(var key in this.labelParams){
415 var labelObj = this.labelParams[key];
417 labelGroup.addChild(labelObj.label);
419 menuBg.addChild(labelGroup);
422 var dateLabel = new Label("時間");
423 dateLabel.color = COLOR;
424 dateLabel.font = FONT;
425 dateLabel.x = self.START_XPOS;
427 // dateLabel.textWidth = menuBg.image.context.measureText(TEXT).width;
428 dateLabel.addEventListener("enterframe", function(){
429 // console.log("min:" + ctl.min + ":" + ctl.hour + ":" + ctl.day);
430 this.text = "時間:" + ctl.day + "日 " + ctl.hour + ":" + ctl.min;
432 menuBg.addChild(dateLabel);
435 draw: function(yukkuriObj){
436 for(var key in this.labelParams){
437 var labelObj = this.labelParams[key];
438 labelObj.draw(yukkuriObj);
442 var CommandQueueObject = enchant.Class.create({
443 initialize: function (_data){
444 this.touchX = _data.touchX;
445 this.touchY = _data.touchY;
446 this.date = _data.date;
447 this.actionStatus = _data.actionStatus;
451 var MangMsg = enchant.Class.create({
452 initialize: function (ctl){
455 output:function(yukkuri, emsg, targetYukkuri){
456 //var M = yukkuri.getMsg();
457 var myCode = yukkuri.myCode;
458 var mySize = yukkuri.mySize;
459 if(myCode === null || myCode === undefined){
464 if(emsg == EMsg.WALK){
466 yukkuri.tweet(M.get(myCode,mySize,"WALK1"));
468 else if(rand(4) === 1){
469 yukkuri.tweet(M.get(myCode,mySize,"WALK2"));
471 else if(rand(4) === 2){
472 yukkuri.tweet(M.get(myCode,mySize,"WALK3"));
474 else if(rand(4) === 3){
475 yukkuri.tweet(M.get(myCode,mySize,"WALK4"));
478 else if(emsg == EMsg.EAT){
480 yukkuri.tweet(M.get(myCode,mySize,"EAT1"));
482 else if(rand(3) === 1){
483 yukkuri.tweet(M.get(myCode,mySize,"EAT2"));
485 else if(rand(3) === 2){
486 yukkuri.tweet(M.get(myCode,mySize,"EAT3"));
489 else if(emsg == EMsg.GET_UP){
490 yukkuri.tweet(M.get(myCode,mySize,"GET_UP1"));
492 else if(emsg == EMsg.SLEEP){
493 yukkuri.tweet(M.get(myCode,mySize,"SLEEP1"));
495 else if(emsg == EMsg.DEAD){
496 yukkuri.tweet(M.get(myCode,mySize,"DEAD1"));
498 else if(emsg == EMsg.UNUN){
500 yukkuri.tweet(M.get(myCode,mySize,"UNUN1"));
502 yukkuri.tweet(M.get(myCode,mySize,"UNUN2"));
505 else if(emsg == EMsg.UNUN_END){
506 yukkuri.tweet(M.get(myCode,mySize,"UNUN_END1"));
508 else if(emsg == EMsg.UNUN_SMELL){
509 yukkuri.tweet(M.get(myCode,mySize,"UNUN_SPELL1"));
511 else if(emsg == EMsg.EAT_FAILED){
512 yukkuri.tweet(M.get(myCode,mySize,"EAT_FAILED1"));
514 else if(emsg == EMsg.SAY_HELLO){
516 if(yukkuri.getAddress(targetYukkuri) === null){
517 yukkuri.tweet(M.get(myCode,mySize,"SAY_HELLO1"));
519 yukkuri.tweet(M.get(myCode,mySize,"SAY_HELLO2"));
522 else if(emsg == EMsg.TARGETING_EAT){
523 yukkuri.tweet(M.get(myCode,mySize,"TARGETING_EAT1"));
525 else if(emsg == EMsg.DECLARE_PLACE){
526 yukkuri.tweet(M.get(myCode,mySize,"DECLARE_PLACE1"));
528 else if(emsg == EMsg.REHUNT){
529 yukkuri.tweet(M.get(myCode,mySize,"REHUNT1"));
531 else if(emsg == EMsg.HUNT_ESCAPE){
532 yukkuri.tweet(M.get(myCode,mySize,"HUNT_ESCAPE1"));
534 else if(emsg == EMsg.MOVE_GOTO_HOME){
535 yukkuri.tweet(M.get(myCode,mySize,"MOVE_GOTO_HOME1"));
537 else if(emsg == EMsg.YYUYYU){
539 yukkuri.tweet(M.get(myCode,mySize,"YYUYYU1"));
541 yukkuri.tweet(M.get(myCode,mySize,"YYUYYU2"));
544 else if(emsg == EMsg.HUNTING_MESSAGE){
545 var num = rand(6) + 1;
546 yukkuri.tweet(M.get(myCode,mySize,"HUNTING_MESSAGE" + num));
548 else if(emsg == EMsg.LEARN_NO_FOOD_IN_PLACE){
550 yukkuri.tweet(M.get(myCode,mySize,"LEARN_NO_FOOD_IN_PLACE" + num));
556 // var MangLabel = enchant.Class.create({
557 // initialize: function (ctl, menuBg){
559 // var labelGroup = new LabelGroup();
560 // this.START_XPOS = 4;
561 // this.START_YPOS = GAME_HEIGHT / 2;
562 // this.menuBg = menuBg;
563 // this.widthArr = [];
564 // this.WIDTH_MARGIN = 4;
565 // var FONT = "14px 'Times New Roman'";
566 // var COLOR = "#ffffff";
567 // menuBg.image.context.font = FONT;
570 // "yukkuri" : function(){
571 // var TEXT = "ゆっくり";
572 // var label = new Label(TEXT);
573 // label.color = COLOR;
574 // label.font = FONT;
575 // label.x = self.START_XPOS;
576 // label.y = self.START_YPOS;
577 // label.textWidth = menuBg.image.context.measureText(TEXT).width;
579 // "hungry" : function(){
581 // var label = new Label(TEXT);
582 // label.color = COLOR;
583 // label.font = FONT;
584 // label.x = self.START_XPOS;
585 // label.y = self.START_YPOS + 20;
586 // label.textWidth = menuBg.image.context.measureText(TEXT).width;
591 // this.labels["yukkuri"]();
592 // console.log(this.labels["yukkuri"]().textWidth);
593 // // for(var key in this.labels){
594 // // console.log(key);
595 // // var label = this.labels[key]();
596 // // // labelGroup.addChild(label);
598 // // var width = this.widthArr['yukkuri'];
599 // // this.menuBg.image.context.fillStyle = '#ff0000';
600 // // this.menuBg.image.context.fillRect(this.START_XPOS + width, this.START_YPOS, 100, 30);
601 // // menuBg.addChild(labelGroup);
604 // label = this.labels[key]();
605 // this.menuBg.image.context.fillStyle = '#ff0000';
606 // this.menuBg.image.context.fillRect(label.x, label.y, 100, 14);