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/10;
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(40, 40, value, index);
112 this.cmdIcons[value].image = this.ctl.game.assets[EResPath.COMMAND];
113 this.cmdIcons[value].x = 40 * index;
114 this.cmdIcons[value].y = 4;
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
170 if(node instanceof this.ctl.def.Yukkuri){
171 nx -= node.getWidth() / 2;
172 ny -= node.getHeight() / 2;
175 && (nx + node.getWidth()) >= tx
177 && (ny + node.getHeight()) >= ty
179 // new BoxLabel(this.ctl,100, e.x, e.y);
180 var box = new Box(this.ctl, node, e.x - ctl.backgroundMap.x, e.y - ctl.backgroundMap.y, 200, 200);
187 touchmove : function(e){
188 var backgroundMap = this.ctl.backgroundMap;
189 var game = this.ctl.game;
192 backgroundMap.x = e.x - this.touchX;
193 if(backgroundMap.x < -EFieldPos.WIDTH)backgroundMap.x = -EFieldPos.WIDTH;
194 if(backgroundMap.x > 0)backgroundMap.x = 0;
196 backgroundMap.y = e.y - this.touchY;
197 if(backgroundMap.y < -EFieldPos.HEIGHT)backgroundMap.y = -EFieldPos.HEIGHT;
198 if(backgroundMap.y > 0)backgroundMap.y = 0;
200 if(e.x > EFieldPos.WIDTH)game.touched = false;
201 else if(e.x < 30)game.touched = false;
203 touchend : function(e){
209 var WorldTargetTouchEvent = enchant.Class.create(ATouchEvent,{
210 initialize: function (ctl){
215 touchstart :function(e){
216 if(e.x >= 0 && e.x <= EFieldPos.WIDTH){
217 var backgroundMap = this.ctl.backgroundMap;
218 addEffect(this.ctl.backgroundMap, -backgroundMap.x + e.x, -backgroundMap.y + e.y);
219 this.ctl.player.tweet("ゆっくりりかいしたよ!");
220 var vx = (-backgroundMap.x + e.x) - this.ctl.player.getX() ;
221 var vy = (-backgroundMap.y + e.y) - this.ctl.player.getY() ;
226 ctl.player.cmdQue.push(new CommandQueueObject({
230 actionStatus:EAction.MOVE_TO_COMMAND
232 // this.ctl.player.action.setStatus(EAction.MOVE_TO_COMMAND);
233 // new MoveCommandEvent({
236 // "action": this.ctl.player.action,
237 // "myYukkuri": this.ctl.player
240 // this.ctl.player.tweet("ゆー...いきたくないのぜ");
244 var WorldAppleTouchEvent = enchant.Class.create(ATouchEvent,{
245 initialize: function (ctl){
250 touchstart :function(e){
251 if(e.x >= 0 && e.x <= EFieldPos.WIDTH){
252 var backgroundMap = this.ctl.backgroundMap;
253 var tx = -backgroundMap.x + e.x;
254 var ty = -backgroundMap.y + e.y;
255 // new ctl.def.Food("apple", tx, ty);
256 new ctl.def.Food("grass", tx, ty);
260 var WorldPlaceTouchEvent = enchant.Class.create(ATouchEvent,{
261 initialize: function (ctl){
266 touchstart :function(e){
267 if(e.x >= 0 && e.x <= EFieldPos.WIDTH){
268 var backgroundMap = this.ctl.backgroundMap;
269 var tx = -backgroundMap.x + e.x;
270 var ty = -backgroundMap.y + e.y;
271 new ctl.def.Place("tree", tx, ty);
277 var MangTouch = enchant.Class.create({
278 initialize: function (ctl){
280 var cursor = ECommand.WORLD_CURSOR;
282 this.mang[ECommand.WORLD_CURSOR] = new WorldCursorTouchEvent(ctl);
283 this.mang[ECommand.WORLD_TARGET] = new WorldTargetTouchEvent(ctl);
284 this.mang[ECommand.WORLD_APPLE] = new WorldAppleTouchEvent(ctl);
285 this.mang[ECommand.WORLD_PLACE] = new WorldPlaceTouchEvent(ctl);
286 ctl.mangTouch = this;
289 return this.mang[ecmd];
292 var MangLabel = enchant.Class.create({
293 initialize: function (ctl, menuBg){
295 var labelGroup = new LabelGroup();
297 this.START_YPOS = GAME_HEIGHT / 2;
298 this.GAUGE_XPOS = 80;
299 this.menuBg = menuBg;
301 this.WIDTH_MARGIN = 4;
302 this.GAUGE_HEIGHT = 16;
303 var FONT = "18px 'Times New Roman'";
304 var COLOR = "#ffffff";
305 menuBg.image.context.font = FONT;
312 var TEXT = M.LABEL.YUKKURI;
313 var label = new Label(TEXT);
316 label.x = self.START_XPOS;
317 label.y = self.START_YPOS;
318 label.textWidth = menuBg.image.context.measureText(TEXT).width;
321 draw: function(yukkuriObj){
323 var gauge = 100 / yukkuriObj.param.maxYukkuri * yukkuriObj.param.yukkuri;
324 self.menuBg.image.context.fillStyle = "#ffffff";
325 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
326 self.menuBg.image.context.fillStyle = "#ff0000";
327 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
333 var TEXT = M.LABEL.HUNGRY;
334 var label = new Label(TEXT);
337 label.x = self.START_XPOS;
338 label.y = self.START_YPOS + 20;
339 label.textWidth = menuBg.image.context.measureText(TEXT).width;
342 draw: function(yukkuriObj){
343 var gauge =yukkuriObj.param.hungry;
344 self.menuBg.image.context.fillStyle = "#ffffff";
345 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
346 self.menuBg.image.context.fillStyle = "#bb7777";
347 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
353 var TEXT = M.LABEL.UNUN;
354 var label = new Label(TEXT);
357 label.x = self.START_XPOS;
358 label.y = self.START_YPOS + 40;
359 label.textWidth = menuBg.image.context.measureText(TEXT).width;
362 draw: function(yukkuriObj){
363 var gauge =yukkuriObj.param.unun;
364 self.menuBg.image.context.fillStyle = "#ffffff";
365 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
366 self.menuBg.image.context.fillStyle = "#bb7777";
367 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
373 var TEXT = M.LABEL.SLEEP;
374 var label = new Label(TEXT);
377 label.x = self.START_XPOS;
378 label.y = self.START_YPOS + 60;
379 label.textWidth = menuBg.image.context.measureText(TEXT).width;
382 draw: function(yukkuriObj){
383 var gauge =yukkuriObj.param.sleep;
384 self.menuBg.image.context.fillStyle = "#ffffff";
385 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
386 self.menuBg.image.context.fillStyle = "#bb7777";
387 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
393 var TEXT = M.LABEL.STRESS;
394 var label = new Label(TEXT);
397 label.x = self.START_XPOS;
398 label.y = self.START_YPOS + 80;
399 label.textWidth = menuBg.image.context.measureText(TEXT).width;
402 draw: function(yukkuriObj){
403 var gauge =yukkuriObj.param.stress;
404 self.menuBg.image.context.fillStyle = "#ffffff";
405 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
406 self.menuBg.image.context.fillStyle = "#bb7777";
407 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
412 this.menuBg.image.context.fillStyle = '#ff0000';
413 for(var key in this.labelParams){
414 var labelObj = this.labelParams[key];
416 labelGroup.addChild(labelObj.label);
418 menuBg.addChild(labelGroup);
421 var dateLabel = new Label("時間");
422 dateLabel.color = COLOR;
423 dateLabel.font = FONT;
424 dateLabel.x = self.START_XPOS;
425 dateLabel.y = GAME_HEIGHT - 30;
426 // dateLabel.textWidth = menuBg.image.context.measureText(TEXT).width;
427 dateLabel.addEventListener("enterframe", function(){
428 // console.log("min:" + ctl.min + ":" + ctl.hour + ":" + ctl.day);
429 this.text = "時間:" + ctl.day + "日 " + ctl.hour + ":" + ctl.min;
431 menuBg.addChild(dateLabel);
434 draw: function(yukkuriObj){
435 for(var key in this.labelParams){
436 var labelObj = this.labelParams[key];
437 labelObj.draw(yukkuriObj);
441 var CommandQueueObject = enchant.Class.create({
442 initialize: function (_data){
447 var MangMsg = enchant.Class.create({
448 initialize: function (ctl){
451 output:function(yukkuri, emsg, targetYukkuri){
452 //var M = yukkuri.getMsg();
453 var myCode = yukkuri.myCode;
454 var mySize = yukkuri.mySize;
455 if(myCode === null || myCode === undefined){
460 if(emsg == EMsg.WALK){
462 yukkuri.tweet(M.get(myCode,mySize,"WALK1"));
464 else if(rand(4) === 1){
465 yukkuri.tweet(M.get(myCode,mySize,"WALK2"));
467 else if(rand(4) === 2){
468 yukkuri.tweet(M.get(myCode,mySize,"WALK3"));
470 else if(rand(4) === 3){
471 yukkuri.tweet(M.get(myCode,mySize,"WALK4"));
474 else if(emsg == EMsg.EAT){
476 yukkuri.tweet(M.get(myCode,mySize,"EAT1"));
478 else if(rand(3) === 1){
479 yukkuri.tweet(M.get(myCode,mySize,"EAT2"));
481 else if(rand(3) === 2){
482 yukkuri.tweet(M.get(myCode,mySize,"EAT3"));
485 else if(emsg == EMsg.GET_UP){
486 yukkuri.tweet(M.get(myCode,mySize,"GET_UP1"));
488 else if(emsg == EMsg.SLEEP){
489 yukkuri.tweet(M.get(myCode,mySize,"SLEEP1"));
491 else if(emsg == EMsg.DEAD){
492 yukkuri.tweet(M.get(myCode,mySize,"DEAD1"));
494 else if(emsg == EMsg.UNUN){
496 yukkuri.tweet(M.get(myCode,mySize,"UNUN1"));
498 yukkuri.tweet(M.get(myCode,mySize,"UNUN2"));
501 else if(emsg == EMsg.UNUN_END){
502 yukkuri.tweet(M.get(myCode,mySize,"UNUN_END1"));
504 else if(emsg == EMsg.UNUN_SMELL){
505 yukkuri.tweet(M.get(myCode,mySize,"UNUN_SPELL1"));
507 else if(emsg == EMsg.EAT_FAILED){
508 yukkuri.tweet(M.get(myCode,mySize,"EAT_FAILED1"));
510 else if(emsg == EMsg.SAY_HELLO){
512 if(yukkuri.getAddress(targetYukkuri) === null){
513 yukkuri.tweet(M.get(myCode,mySize,"SAY_HELLO1"));
515 yukkuri.tweet(M.get(myCode,mySize,"SAY_HELLO2"));
518 else if(emsg == EMsg.TARGETING_EAT){
519 yukkuri.tweet(M.get(myCode,mySize,"TARGETING_EAT1"));
521 else if(emsg == EMsg.DECLARE_PLACE){
522 yukkuri.tweet(M.get(myCode,mySize,"DECLARE_PLACE1"));
524 else if(emsg == EMsg.HUNT){
525 yukkuri.tweet(M.get(myCode,mySize,"HUNT1"));
527 else if(emsg == EMsg.REHUNT){
528 yukkuri.tweet(M.get(myCode,mySize,"REHUNT1"));
530 else if(emsg == EMsg.HUNT_ESCAPE){
531 yukkuri.tweet(M.get(myCode,mySize,"HUNT_ESCAPE1"));
533 else if(emsg == EMsg.MOVE_GOTO_HOME){
534 yukkuri.tweet(M.get(myCode,mySize,"MOVE_GOTO_HOME1"));
536 else if(emsg == EMsg.YYUYYU){
538 yukkuri.tweet(M.get(myCode,mySize,"YYUYYU1"));
540 yukkuri.tweet(M.get(myCode,mySize,"YYUYYU2"));
547 // var MangLabel = enchant.Class.create({
548 // initialize: function (ctl, menuBg){
550 // var labelGroup = new LabelGroup();
551 // this.START_XPOS = 4;
552 // this.START_YPOS = GAME_HEIGHT / 2;
553 // this.menuBg = menuBg;
554 // this.widthArr = [];
555 // this.WIDTH_MARGIN = 4;
556 // var FONT = "14px 'Times New Roman'";
557 // var COLOR = "#ffffff";
558 // menuBg.image.context.font = FONT;
561 // "yukkuri" : function(){
562 // var TEXT = "ゆっくり";
563 // var label = new Label(TEXT);
564 // label.color = COLOR;
565 // label.font = FONT;
566 // label.x = self.START_XPOS;
567 // label.y = self.START_YPOS;
568 // label.textWidth = menuBg.image.context.measureText(TEXT).width;
570 // "hungry" : function(){
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 + 20;
577 // label.textWidth = menuBg.image.context.measureText(TEXT).width;
582 // this.labels["yukkuri"]();
583 // console.log(this.labels["yukkuri"]().textWidth);
584 // // for(var key in this.labels){
585 // // console.log(key);
586 // // var label = this.labels[key]();
587 // // // labelGroup.addChild(label);
589 // // var width = this.widthArr['yukkuri'];
590 // // this.menuBg.image.context.fillStyle = '#ff0000';
591 // // this.menuBg.image.context.fillRect(this.START_XPOS + width, this.START_YPOS, 100, 30);
592 // // menuBg.addChild(labelGroup);
595 // label = this.labels[key]();
596 // this.menuBg.image.context.fillStyle = '#ff0000';
597 // this.menuBg.image.context.fillRect(label.x, label.y, 100, 14);