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) ;
16 // this.popup = new GWindow(game.rootScene,0,0,100,100);
17 this.popup = new GPopup(game.rootScene,0,0,100,100);
18 // this.popup = new GWindow(this, {
25 // this.popup.opacity = 0;
28 // var sec = ctl.time/BASE_FPS;
29 var sec = ctl.time/BASE_FPS;
30 this.min = Math.floor(sec % 60);
32 this.hour = Math.floor(_min % 24);
33 this.day = Math.floor(_min / 24 % 30);
35 init : function (game){
39 if(this.hour >= 5 && this.hour < 11)return EDate.MORNING;
40 if(this.hour >= 11 && this.hour < 13)return EDate.NOON;
41 if(this.hour >= 13 && this.hour < 17)return EDate.AFTERNOON;
42 if(this.hour >= 17 && this.hour < 20)return EDate.EVENING;
43 if(this.hour >= 20 && this.hour < 24)return EDate.NIGHT;
44 if(this.hour >= 0 && this.hour < 5)return EDate.MIDNIGHT;
46 setDefined:function(def){
49 addObj: function(obj){
50 this.objArray[obj.id] = obj;
55 removeObj:function(obj){
56 delete this.objArray[obj.id];
58 setMenuBg: function (menuBg){
61 setBackgroundMap: function(backgroundMap){
62 this.backgroundMap = backgroundMap;
64 setPlayer: function(player){
67 setTime: function(time){
70 setCurrentObjSprite: function(objSprite){
71 this.objSprite = objSprite;
73 getCurrentObjSprite: function(objSprite){
74 return this.objSprite;
76 isCollision : function (e, node){
77 var ex = e.x - ctl.backgroundMap.x;
78 var ey = e.y - ctl.backgroundMap.y;
79 if(node.getX() <= ex && node.getX() + node.getWidth() >= ex
80 && node.getY() <= ey && node.getY() + node.getHeight() >= ey){
86 * [setCurrentCommand description]
87 * @param {ECommand} cmd [description]
89 setCurrentCommand: function(cmd){
90 this.currentCommand = cmd;
92 getCurrentCommand: function(){
93 return this.currentCommand;
96 var CommandIcon = enchant.Class.create(enchant.Sprite,{
97 initialize: function (x, y, ecmd, index){
98 enchant.Sprite.call(this, x, y);
103 isCurrent: function(){
104 return (this.index * 2)%2 !== 0;
106 setCurrent: function(){
107 this.frame = (this.index * 2) + 1;
109 removeCurrent: function(){
110 this.frame = (this.index * 2);
114 "クリックアイコンです。\nフィールドのスクロールや\n各オブジェクトのステータスが見れます。",
115 "命令アイコンです。\nプレイヤーゆっくりに\n移動命令を出せます。",
116 "食物アイコンです。\nゆっくりが食べる\n食べ物を設置できます。",
117 "家アイコンです。\nゆっくりが住む事のできる\nプレイスを設置できます。",
118 "ゴミ箱アイコンです。\n配置したオブジェクトを削除できます。",
119 "しつけアイコンです。\nゆっくりに対してアクションが出来ます。",
121 var MangIcon = enchant.Class.create({
122 initialize: function (ctl, menuBg){
128 var HEIGHT_TOP_MARGIN = 2;
129 for (var key in ECommand) {
130 var value = ECommand[key];
131 this.cmdIcons[value] = new CommandIcon(ICON_WIDTH, ICON_HEIGHT, value, index);
132 this.cmdIcons[value].image = this.ctl.game.assets[EResPath.COMMAND];
133 this.cmdIcons[value].x = ICON_WIDTH * (index%POS_NUMBER) + 5;
134 var yindex = parseInt(index/POS_NUMBER) + 1;
135 this.cmdIcons[value].y = ICON_HEIGHT * yindex + HEIGHT_TOP_MARGIN;
136 this.cmdIcons[value].text = ICON_TEXT[value];
137 // odd equals current. even equals not current.
138 this.cmdIcons[value].frame = (this.ctl.getCurrentCommand() == value)? index * 2 + 1: index * 2;
139 menuBg.addChild(this.cmdIcons[value]);
140 this.cmdIcons[value].ontouchstart = function(obj){
141 // change command icons
142 var nowECmd = self.ctl.getCurrentCommand();
143 self.cmdIcons[nowECmd].removeCurrent();
144 if(!this.isCurrent()){
147 self.ctl.setCurrentCommand(this.index);
152 get: function(commandIndex){
153 return this.cmdIcons[commandIndex];
156 var ATouchEvent = enchant.Class.create({
157 // initialize: function (ctl){
160 touchstart: function(e){
162 touchmove: function(e){
164 touchend: function(e){
168 var WorldCursorTouchEvent = enchant.Class.create(ATouchEvent,{
169 initialize: function (ctl){
174 touchstart : function(e){
175 this.touchX = e.x - this.ctl.backgroundMap.x;
176 this.touchY = e.y - this.ctl.backgroundMap.y;
177 var tx = this.touchX;
178 var ty = this.touchY;
179 var nodes = this.ctl.getObjs();
181 // nodes.sort(ctl.def.nodeSort);
182 for (var id in nodes) {
183 var node = nodes[id];
184 if(node === null || node === undefined)continue;
185 var nx = node.getX();
186 var ny = node.getY();
187 if(node == null)continue;
188 if(node instanceof Box
189 || node instanceof this.ctl.def.Food
190 || node instanceof this.ctl.def.Unun
194 if(node instanceof this.ctl.def.Yukkuri){
195 nx -= node.getWidth() / 2;
196 ny -= node.getHeight() / 2;
199 && (nx + node.getWidth()) >= tx
201 && (ny + node.getHeight()) >= ty
203 // new BoxLabel(this.ctl,100, e.x, e.y);
204 var box = new Box(this.ctl, node, e.x - ctl.backgroundMap.x, e.y - ctl.backgroundMap.y, 200, 200);
206 // var menuWindow = new MenuWindow(this.ctl, node, e.x, e.y, 300, 300);
207 // menuWindow.draw();
208 // new GWindow(game.rootScene,0,0,100,100);
209 // ctl.popup.renew(game.rootScene,640,0,100,100);
210 // ctl.popup.setText("aaaaaa");
211 // ctl.popup.drawText();
217 touchmove : function(e){
218 var backgroundMap = this.ctl.backgroundMap;
219 var game = this.ctl.game;
222 backgroundMap.x = e.x - this.touchX;
223 if(backgroundMap.x < -EFieldPos.WIDTH)backgroundMap.x = -EFieldPos.WIDTH;
224 if(backgroundMap.x > 0)backgroundMap.x = 0;
226 backgroundMap.y = e.y - this.touchY;
227 if(backgroundMap.y < -EFieldPos.HEIGHT)backgroundMap.y = -EFieldPos.HEIGHT;
228 if(backgroundMap.y > 0)backgroundMap.y = 0;
230 if(e.x > EFieldPos.WIDTH)game.touched = false;
231 else if(e.x < 30)game.touched = false;
233 touchend : function(e){
239 var WorldTargetTouchEvent = enchant.Class.create(ATouchEvent,{
240 initialize: function (ctl){
245 touchstart :function(e){
246 if(e.x >= 0 && e.x <= EFieldPos.WIDTH){
247 var backgroundMap = this.ctl.backgroundMap;
248 addEffect(this.ctl.backgroundMap, -backgroundMap.x + e.x, -backgroundMap.y + e.y);
249 this.ctl.player.tweet("ゆっくりりかいしたよ!");
250 // var vx = (-backgroundMap.x + e.x) - this.ctl.player.getX() ;
251 // var vy = (-backgroundMap.y + e.y) - this.ctl.player.getY() ;
256 ctl.player.cmdQueue.push(new CommandQueueObject({
257 touchX:(-backgroundMap.x + e.x),
258 touchY:(-backgroundMap.y + e.y),
260 actionStatus:EAction.MOVE_TO_COMMAND
262 // this.ctl.player.action.setStatus(EAction.MOVE_TO_COMMAND);
263 // new MoveCommandEvent({
266 // "action": this.ctl.player.action,
267 // "myYukkuri": this.ctl.player
270 // this.ctl.player.tweet("ゆー...いきたくないのぜ");
274 var WorldAppleTouchEvent = enchant.Class.create(ATouchEvent,{
275 initialize: function (ctl){
280 touchstart :function(e){
281 if(e.x >= 0 && e.x <= EFieldPos.WIDTH){
282 var backgroundMap = this.ctl.backgroundMap;
283 var tx = -backgroundMap.x + e.x;
284 var ty = -backgroundMap.y + e.y;
285 // new ctl.def.Food("apple", tx, ty);
286 new ctl.def.Food("grass", tx, ty);
290 var WorldPlaceTouchEvent = enchant.Class.create(ATouchEvent,{
291 initialize: function (ctl){
296 touchstart :function(e){
297 if(e.x >= 0 && e.x <= EFieldPos.WIDTH){
298 var backgroundMap = this.ctl.backgroundMap;
299 var tx = -backgroundMap.x + e.x;
300 var ty = -backgroundMap.y + e.y;
301 new ctl.def.Place("tree", tx, ty);
306 var WorldRemoveTouchEvent = enchant.Class.create(ATouchEvent,{
307 initialize: function (ctl){
312 touchstart :function(e){
313 this.touchX = e.x - this.ctl.backgroundMap.x;
314 this.touchY = e.y - this.ctl.backgroundMap.y;
315 var tx = this.touchX;
316 var ty = this.touchY;
317 var nodes = this.ctl.getObjs();
318 // nodes.sort(ctl.def.nodeSort);
319 for (var id in nodes) {
320 var node = nodes[id];
321 var nx = node.getX();
322 var ny = node.getY();
323 if(node == null)continue;
324 // if(node instanceof Box
325 // || node instanceof this.ctl.def.Food
326 // || node instanceof this.ctl.def.Unun
330 if(node instanceof this.ctl.def.Yukkuri){
331 nx -= node.getWidth() / 2;
332 ny -= node.getHeight() / 2;
335 && (nx + node.getWidth()) >= tx
337 && (ny + node.getHeight()) >= ty
339 if(node instanceof this.ctl.def.Yukkuri){
340 mangMsg.output(node, EMsg.REMOVE_YUKKURI);
341 node.setFaceImage(EFace.CRY1);
343 else if(node instanceof this.ctl.def.Place){
356 var WorldPicoPicoHummerTouchEvent = enchant.Class.create(ATouchEvent,{
357 initialize: function (ctl){
362 touchstart :function(e){
363 this.touchX = e.x - this.ctl.backgroundMap.x;
364 this.touchY = e.y - this.ctl.backgroundMap.y;
365 var tx = this.touchX;
366 var ty = this.touchY;
367 var nodes = this.ctl.getObjs();
368 // nodes.sort(ctl.def.nodeSort);
369 for (var id in nodes) {
370 var node = nodes[id];
371 var nx = node.getX();
372 var ny = node.getY();
373 if(node == null)continue;
374 if(!(node instanceof this.ctl.def.Yukkuri)){
377 nx -= node.getWidth() / 2;
378 ny -= node.getHeight() / 2;
380 && (nx + node.getWidth()) >= tx
382 && (ny + node.getHeight()) >= ty
384 node.damage(EDamage.PICOHAN);
392 var MangTouch = enchant.Class.create({
393 initialize: function (ctl){
395 var cursor = ECommand.WORLD_CURSOR;
397 this.mang[ECommand.WORLD_CURSOR] = new WorldCursorTouchEvent(ctl);
398 this.mang[ECommand.WORLD_TARGET] = new WorldTargetTouchEvent(ctl);
399 this.mang[ECommand.WORLD_APPLE] = new WorldAppleTouchEvent(ctl);
400 this.mang[ECommand.WORLD_PLACE] = new WorldPlaceTouchEvent(ctl);
401 this.mang[ECommand.WORLD_REMOVE] = new WorldRemoveTouchEvent(ctl);
402 this.mang[ECommand.WORLD_PICOPICO_HUMMER] = new WorldPicoPicoHummerTouchEvent(ctl);
403 ctl.mangTouch = this;
406 return this.mang[ecmd];
409 var MangLabel = enchant.Class.create({
410 initialize: function (ctl, menuBg){
412 var labelGroup = new LabelGroup();
414 this.START_YPOS = GAME_HEIGHT / 2;
415 this.GAUGE_XPOS = 80;
416 this.menuBg = menuBg;
418 this.WIDTH_MARGIN = 4;
419 this.GAUGE_HEIGHT = 16;
420 var FONT = "18px 'Times New Roman'";
421 var COLOR = "#ffffff";
422 menuBg.image.context.font = FONT;
429 var TEXT = M.LABEL.YUKKURI;
430 var label = new Label(TEXT);
433 label.x = self.START_XPOS;
434 label.y = self.START_YPOS;
435 label.textWidth = menuBg.image.context.measureText(TEXT).width;
438 draw: function(yukkuriObj){
440 var gauge = 100 / yukkuriObj.param.maxYukkuri * yukkuriObj.param.yukkuri;
441 self.menuBg.image.context.fillStyle = "#ffffff";
442 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
443 self.menuBg.image.context.fillStyle = "#ff0000";
444 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
450 var TEXT = M.LABEL.HUNGRY;
451 var label = new Label(TEXT);
454 label.x = self.START_XPOS;
455 label.y = self.START_YPOS + 20;
456 label.textWidth = menuBg.image.context.measureText(TEXT).width;
459 draw: function(yukkuriObj){
460 var gauge =yukkuriObj.param.hungry;
461 self.menuBg.image.context.fillStyle = "#ffffff";
462 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
463 self.menuBg.image.context.fillStyle = "#bb7777";
464 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
470 var TEXT = M.LABEL.UNUN;
471 var label = new Label(TEXT);
474 label.x = self.START_XPOS;
475 label.y = self.START_YPOS + 40;
476 label.textWidth = menuBg.image.context.measureText(TEXT).width;
479 draw: function(yukkuriObj){
480 var gauge =yukkuriObj.param.unun;
481 self.menuBg.image.context.fillStyle = "#ffffff";
482 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
483 self.menuBg.image.context.fillStyle = "#bb7777";
484 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
490 var TEXT = M.LABEL.SLEEP;
491 var label = new Label(TEXT);
494 label.x = self.START_XPOS;
495 label.y = self.START_YPOS + 60;
496 label.textWidth = menuBg.image.context.measureText(TEXT).width;
499 draw: function(yukkuriObj){
500 var gauge =yukkuriObj.param.sleep;
501 self.menuBg.image.context.fillStyle = "#ffffff";
502 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
503 self.menuBg.image.context.fillStyle = "#bb7777";
504 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
510 var TEXT = M.LABEL.STRESS;
511 var label = new Label(TEXT);
514 label.x = self.START_XPOS;
515 label.y = self.START_YPOS + 80;
516 label.textWidth = menuBg.image.context.measureText(TEXT).width;
519 draw: function(yukkuriObj){
520 var gauge =yukkuriObj.param.stress;
521 self.menuBg.image.context.fillStyle = "#ffffff";
522 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, 100, self.GAUGE_HEIGHT);
523 self.menuBg.image.context.fillStyle = "#bb7777";
524 self.menuBg.image.context.fillRect(self.GAUGE_XPOS, this.label.y, gauge, self.GAUGE_HEIGHT);
529 this.menuBg.image.context.fillStyle = '#ff0000';
530 for(var key in this.labelParams){
531 var labelObj = this.labelParams[key];
533 labelGroup.addChild(labelObj.label);
535 menuBg.addChild(labelGroup);
538 var dateLabel = new Label("時間");
539 dateLabel.color = COLOR;
540 dateLabel.font = FONT;
541 dateLabel.x = self.START_XPOS;
543 // dateLabel.textWidth = menuBg.image.context.measureText(TEXT).width;
544 dateLabel.addEventListener("enterframe", function(){
545 // console.log("min:" + ctl.min + ":" + ctl.hour + ":" + ctl.day);
546 this.text = "時間:" + ctl.day + "日 " + ctl.hour + ":" + ctl.min;
548 menuBg.addChild(dateLabel);
551 draw: function(yukkuriObj){
552 for(var key in this.labelParams){
553 var labelObj = this.labelParams[key];
554 labelObj.draw(yukkuriObj);
558 var CommandQueueObject = enchant.Class.create({
559 initialize: function (_data){
560 this.touchX = _data.touchX;
561 this.touchY = _data.touchY;
562 this.date = _data.date;
563 this.actionStatus = _data.actionStatus;
567 var MangMsg = enchant.Class.create({
568 initialize: function (ctl){
571 output:function(yukkuri, emsg, targetYukkuri){
572 //var M = yukkuri.getMsg();
573 var myCode = yukkuri.myCode;
574 var mySize = yukkuri.mySize;
575 if(myCode === null || myCode === undefined){
580 if(emsg == EMsg.WALK){
582 yukkuri.tweet(M.get(myCode,mySize,"WALK1"));
584 else if(rand(4) === 1){
585 yukkuri.tweet(M.get(myCode,mySize,"WALK2"));
587 else if(rand(4) === 2){
588 yukkuri.tweet(M.get(myCode,mySize,"WALK3"));
590 else if(rand(4) === 3){
591 yukkuri.tweet(M.get(myCode,mySize,"WALK4"));
594 else if(emsg == EMsg.EAT){
596 yukkuri.tweet(M.get(myCode,mySize,"EAT1"));
598 else if(rand(3) === 1){
599 yukkuri.tweet(M.get(myCode,mySize,"EAT2"));
601 else if(rand(3) === 2){
602 yukkuri.tweet(M.get(myCode,mySize,"EAT3"));
605 else if(emsg == EMsg.GET_UP){
606 yukkuri.tweet(M.get(myCode,mySize,"GET_UP1"));
608 else if(emsg == EMsg.SLEEP){
609 yukkuri.tweet(M.get(myCode,mySize,"SLEEP1"));
611 else if(emsg == EMsg.DEAD){
612 yukkuri.tweet(M.get(myCode,mySize,"DEAD1"));
614 else if(emsg == EMsg.UNUN){
616 yukkuri.tweet(M.get(myCode,mySize,"UNUN1"));
618 yukkuri.tweet(M.get(myCode,mySize,"UNUN2"));
621 else if(emsg == EMsg.UNUN_END){
622 yukkuri.tweet(M.get(myCode,mySize,"UNUN_END1"));
624 else if(emsg == EMsg.UNUN_SMELL){
625 yukkuri.tweet(M.get(myCode,mySize,"UNUN_SPELL1"));
627 else if(emsg == EMsg.EAT_FAILED){
628 yukkuri.tweet(M.get(myCode,mySize,"EAT_FAILED1"));
630 else if(emsg == EMsg.SAY_HELLO){
632 if(yukkuri.getAddress(targetYukkuri) === null){
633 yukkuri.tweet(M.get(myCode,mySize,"SAY_HELLO1"));
635 yukkuri.tweet(M.get(myCode,mySize,"SAY_HELLO2"));
638 else if(emsg == EMsg.TARGETING_EAT){
639 yukkuri.tweet(M.get(myCode,mySize,"TARGETING_EAT1"));
641 else if(emsg == EMsg.DECLARE_PLACE){
642 yukkuri.tweet(M.get(myCode,mySize,"DECLARE_PLACE1"));
644 else if(emsg == EMsg.REHUNT){
645 yukkuri.tweet(M.get(myCode,mySize,"REHUNT1"));
647 else if(emsg == EMsg.HUNT_ESCAPE){
648 yukkuri.tweet(M.get(myCode,mySize,"HUNT_ESCAPE1"));
650 else if(emsg == EMsg.MOVE_GOTO_HOME){
651 yukkuri.tweet(M.get(myCode,mySize,"MOVE_GOTO_HOME1"));
653 else if(emsg == EMsg.YYUYYU){
655 yukkuri.tweet(M.get(myCode,mySize,"YYUYYU1"));
657 yukkuri.tweet(M.get(myCode,mySize,"YYUYYU2"));
660 else if(emsg == EMsg.HUNTING_MESSAGE){
661 var num = rand(6) + 1;
662 yukkuri.tweet(M.get(myCode,mySize,"HUNTING_MESSAGE" + num));
664 else if(emsg == EMsg.LEARN_NO_FOOD_IN_PLACE){
666 yukkuri.tweet(M.get(myCode,mySize,"LEARN_NO_FOOD_IN_PLACE" + num));
668 else if(emsg == EMsg.REMOVE_YUKKURI){
670 yukkuri.tweet(M.get(myCode,mySize,"REMOVE_YUKKURI" + num));
672 else if(emsg == EMsg.LOST_HOUSE){
674 yukkuri.tweet(M.get(myCode,mySize,"LOST_HOUSE" + num));
676 else if(emsg == EMsg.MOVE_TO_HUNTING){
678 yukkuri.tweet(M.get(myCode,mySize,"MOVE_TO_HUNTING" + num));
680 else if(emsg == EMsg.DAMAGE){
681 var num = rand(1) + 1;
682 yukkuri.tweet(M.get(myCode,mySize,"DAMAGE" + num));
688 // var MangLabel = enchant.Class.create({
689 // initialize: function (ctl, menuBg){
691 // var labelGroup = new LabelGroup();
692 // this.START_XPOS = 4;
693 // this.START_YPOS = GAME_HEIGHT / 2;
694 // this.menuBg = menuBg;
695 // this.widthArr = [];
696 // this.WIDTH_MARGIN = 4;
697 // var FONT = "14px 'Times New Roman'";
698 // var COLOR = "#ffffff";
699 // menuBg.image.context.font = FONT;
702 // "yukkuri" : function(){
703 // var TEXT = "ゆっくり";
704 // var label = new Label(TEXT);
705 // label.color = COLOR;
706 // label.font = FONT;
707 // label.x = self.START_XPOS;
708 // label.y = self.START_YPOS;
709 // label.textWidth = menuBg.image.context.measureText(TEXT).width;
711 // "hungry" : function(){
713 // var label = new Label(TEXT);
714 // label.color = COLOR;
715 // label.font = FONT;
716 // label.x = self.START_XPOS;
717 // label.y = self.START_YPOS + 20;
718 // label.textWidth = menuBg.image.context.measureText(TEXT).width;
723 // this.labels["yukkuri"]();
724 // console.log(this.labels["yukkuri"]().textWidth);
725 // // for(var key in this.labels){
726 // // console.log(key);
727 // // var label = this.labels[key]();
728 // // // labelGroup.addChild(label);
730 // // var width = this.widthArr['yukkuri'];
731 // // this.menuBg.image.context.fillStyle = '#ff0000';
732 // // this.menuBg.image.context.fillRect(this.START_XPOS + width, this.START_YPOS, 100, 30);
733 // // menuBg.addChild(labelGroup);
736 // label = this.labels[key]();
737 // this.menuBg.image.context.fillStyle = '#ff0000';
738 // this.menuBg.image.context.fillRect(label.x, label.y, 100, 14);