OSDN Git Service

ab8e548cc16079e573c336951147be0d32b1326d
[h58pcdgame/GameScriptCoreLibrary.git] / www / corelib / classes / TimerWidgetClass.js
1 var TimerWidgetClass = function(manager, args)\r
2 {\r
3         TimerWidgetClass.base.apply(this, arguments);\r
4         this.manager = manager;\r
5         \r
6         this.size = new Point2D(128, 24);\r
7         this.origin = new Point2D(5, 5);\r
8 \r
9         \r
10         this.wBox = null;\r
11 \r
12         this.manager.warnType = 0;\r
13         \r
14 }.extend(WidgetClass, {\r
15         attach : function(){\r
16                 var element = document.createElement('div');\r
17                 with(element)\r
18                 {\r
19                         style.position = "absolute";\r
20                         style.bottom = this.origin.y + "px";\r
21                         style.left = this.origin.x + "px";\r
22                         style.textShadow = "0px 0px 5px black";\r
23                         style.fontSize = "18px";\r
24                         style.zIndex = 100;\r
25                 }\r
26                 this.manager.mainArea.appendChild(element);\r
27                 this.wBox = element;\r
28         },\r
29         detach : function()\r
30         {\r
31                 if(this.wBox)\r
32                 {\r
33                         this.manager.mainArea.removeChild(this.wBox);\r
34                 }\r
35         },\r
36         tick : function()\r
37         {\r
38                 if(this.manager.timerRunning)\r
39                 {\r
40                         var past = (+new Date()) - this.manager.startTimeStamp;\r
41                         if(past > this.manager.gameTime)\r
42                         {\r
43                                 this.manager.timerRunning = false;\r
44                                 var that = this;\r
45                                 this.manager.addWidget(new MessageWidgetClass(this.manager,["時間切れです!\nあなたの得点は" + that.manager.userManager.getSumPoint() + "点です!\nお近くにいるパソコン同好会の者に点数を知らせてください。\n遊んでいただき、ありがとうございました!", null, function(){\r
46                                         //that.manager.loadStageFromNetwork('ending');\r
47                                         return true;\r
48                                 }]));\r
49                         }else\r
50                         {\r
51                                 var rate = past / this.manager.gameTime;\r
52                                 \r
53                                 if(rate < 0.8)\r
54                                 {\r
55                                         this.warnType = 0;\r
56                                 }else if(rate < 0.95)\r
57                                 {\r
58                                         this.warnType = 1;\r
59                                 }else\r
60                                 {\r
61                                         this.warnType = 2;\r
62                                 }\r
63                         }\r
64                 }\r
65                 return true;\r
66         },\r
67         draw : function(){\r
68                 \r
69                 \r
70                 \r
71                 var time = this.manager.gameTime - ((+new Date()) - this.manager.startTimeStamp);\r
72                 var min = Math.floor(time / (60 * 1000));\r
73                 var sec = Math.floor((time - (min * 60 * 1000)) / 1000);\r
74                 var msec = (time - (min * 60 * 1000) - (sec * 1000));\r
75 \r
76                 this.wBox.style.color = this.warnType == 0 ? "lime" : (this.warnType == 1 ? "yellow" : "red");\r
77                 if(time >= 0)\r
78                 {\r
79                         this.wBox.innerText = "残り時間 " +  min + ":" + sec + ":" + msec;\r
80                 }else\r
81                 {\r
82                         this.wBox.innerText = "";\r
83                 }\r
84         }\r
85 });\r
86 \r
87 TimerWidgetClass.startTimer = function(manager)\r
88 {\r
89         manager.timerRunning = true;\r
90         manager.startTimeStamp = (+new Date());\r
91 };\r