Tizen 2.0 Release
[samples/web/Tenframe.git] / js / rockets.js
1 /*
2  * Copyright (c) 2012, Intel Corporation.
3  *
4  * This program is licensed under the terms and conditions of the
5  * Apache License, version 2.0.  The full text of the Apache License is at
6  * http://www.apache.org/licenses/LICENSE-2.0
7  *
8  */
9
10 function Rockets() {
11     "use strict";
12
13     var rockets_msg1 = null;
14     var sounds = {};
15     var timerLaunch;
16     var timerNext;
17     var data;
18
19     function GameData() {
20         this.input = false;
21         this.fuel = 0;
22         this.currtarget = 0;
23         this.targets = new Array();
24         for(var i = 0; i < 5; i++)
25             this.targets[i] = Math.floor((Math.random()*30)+1);
26         this.target = function target() {
27             if(this.currtarget < 5)
28                 return this.targets[this.currtarget];
29             else
30                 return -1;
31         }
32     }
33
34     function close() {
35         reset();
36         $("#rockets_page").hide();
37         $("#rockets_win_page").hide();
38         $("#game_menu_border").hide();
39         $("#home_page").show();
40     }
41     this.close = close;
42
43     function reset() {
44         if(timerLaunch)
45             clearTimeout(timerLaunch);
46         if(timerNext)
47             clearTimeout(timerNext);
48         rockets_msg1.clear();
49         $("#rockets_status").removeClass("show");
50         $("#rockets_fuellight").removeClass("green");
51         $("#rockets_fuellight").removeClass("red");
52         $("#rockets_add4").removeClass("disable");
53         $("#rockets_add3").removeClass("disable");
54         $("#rockets_add2").removeClass("disable");
55         $("#rockets_add1").removeClass("disable");
56         $("#rockets_subtract4").addClass("disable");
57         $("#rockets_subtract3").addClass("disable");
58         $("#rockets_subtract2").addClass("disable");
59         $("#rockets_subtract1").addClass("disable");
60         $("#rocket_flame").removeClass("launch");
61         $("#rockets_rocket").removeClass("launch");
62         $("#rockets_smoke").removeClass("launch");
63         var i;
64         for(i = 1; i <= 30; i++)
65             $("#drop"+i).hide();
66     }
67
68     function addFuel(val) {
69         var target = data.target();
70         var prev = data.fuel;
71         var next = val + data.fuel;
72         var i;
73         if(next > prev)
74         {
75             for(i = prev+1; (i <= next)&&(i <= 30); i++)
76                 $("#drop"+i).show();
77         }
78         else
79         {
80             for(i = prev; (i > next)&&(i >= 1); i--)
81                 $("#drop"+i).hide();
82         }
83
84         if(next < 0)
85             data.fuel = 0;
86         else if(next > 30)
87             data.fuel = 30;
88         else
89             data.fuel = next;
90         $("#rockets_fuelguage").html(data.fuel.toLocaleString());
91
92         if(target == data.fuel)
93         {
94             $("#rockets_fuellight").addClass("green");
95             $("#rockets_fuellight").removeClass("red");
96         }
97         else if(data.fuel > target)
98         {
99             $("#rockets_fuellight").removeClass("green");
100             $("#rockets_fuellight").addClass("red");
101         }
102         else
103         {
104             $("#rockets_fuellight").removeClass("green");
105             $("#rockets_fuellight").removeClass("red");
106         }
107
108         if(next > prev)
109         {
110             sounds.add.play();
111         }
112         else
113         {
114             sounds.subtract.play();
115         }
116
117         if((data.fuel > target)&&(val > 0))
118             sounds.overflow.play();
119
120         for(i = 1; i <= 4; i++)
121         {
122             if((data.fuel < i)||(target == data.fuel))
123                 $("#rockets_subtract"+i).addClass("disable");
124             else
125                 $("#rockets_subtract"+i).removeClass("disable");
126         }
127
128         for(i = 1; i <= 4; i++)
129         {
130             if((data.fuel > (30-i))||(target == data.fuel))
131                 $("#rockets_add"+i).addClass("disable");
132             else
133                 $("#rockets_add"+i).removeClass("disable");
134         }
135
136         if(target == data.fuel)
137             launchRocket();
138     }
139
140     function start() {
141         var tgt = 0;
142         $("#rockets_msg2 b").html(tgt.toLocaleString());
143         reset();
144         data = new GameData();
145         for(var i = 1; i <= 5; i++)
146         {
147             var tgt = data.targets[i-1];
148             $("#rocketicon"+i).removeClass("highlight");
149             $("#rockets_mini"+i).html(tgt.toLocaleString());
150         }
151         $("#home_page").hide();
152         $("#rockets_win_page").hide();
153         $("#rockets_page").show();
154         $("#rockets_fueltarget").html(data.target().toLocaleString());
155         $("#rockets_fuelguage").html(data.fuel.toLocaleString());
156         rockets_msg1.begin();
157         sounds.start.play();
158     }
159     this.start = start;
160
161     function nextRocket() {
162         data.currtarget++;
163         if(data.currtarget < 5)
164         {
165             reset();
166             data.fuel = 0;
167             $("#rockets_fueltarget").html(data.target().toLocaleString());
168             $("#rockets_fuelguage").html(data.fuel.toLocaleString());
169         }
170         else
171         {
172             sounds.add.play();
173             $("#rockets_page").hide();
174             $("#rockets_win_page").show();
175         }
176     }
177
178     function launchRocket() {
179         sounds.ignite.play();
180         setTimeout(function(){sounds.launch.play();}, 3000);
181         var tgt = data.currtarget + 1;
182         $("#rocketicon"+tgt).addClass("highlight");
183         $("#rockets_smoke").addClass("launch");
184         $("#rockets_msg2 b").html(tgt.toLocaleString());
185         $("#rockets_status").addClass("show");
186         timerLaunch = setTimeout(function () {
187             $("#rocket_flame").addClass("launch");
188             $("#rockets_rocket").addClass("launch");
189         }, 3300);
190         timerNext = setTimeout(function () {nextRocket();}, 7000);
191     }
192
193     function loadHtml()
194     {
195         var h = "";
196
197         /* load up the drops in the fuel tank */
198         $("#rockets_fueltank").empty();
199         for(var i = 1; i <= 30; i++)
200         {
201             h += "<div id=\"drop"+i+"\" class=\"rockets_drop\"></div>";
202         }
203         $("#rockets_fueltank").html(h);
204     }
205
206     function init()
207     {
208         setTimeout(loadHtml, 0);
209         if (window.chrome&&window.chrome.i18n)
210         {
211             $("#rockets_msg1").html(chrome.i18n.getMessage("rockets_msg1"));
212             $("#rockets_msg2").html(chrome.i18n.getMessage("rockets_msg2"));
213             $("#rockets_msg3").html(chrome.i18n.getMessage("rockets_msg3"));
214             $("#rockets_msg4").html(chrome.i18n.getMessage("rockets_msg4"));
215         }
216
217         sounds.subtract = new GameSound("audio/fueldel.ogg", 1);
218         sounds.add = new GameSound("audio/fueladd.ogg", 1);
219         sounds.overflow = new GameSound("audio/fullalarm.ogg", 1);
220         sounds.launch = new GameSound("audio/rocketlaunch.ogg", 1);
221         sounds.ignite = new GameSound("audio/rocketignite.ogg", 1);
222         sounds.start = new GameSound("audio/rocketstart.ogg", 1);
223
224         rockets_msg1 = new Animation("rockets_msg1a", "show", 2600, "opacity");
225         var m = rockets_msg1;
226         m.next = new Animation("rockets_msg1b", "show", 2600, "opacity");
227         m = m.next;
228         m.next = new Animation("rockets_msg1c", "show", 2600, "opacity");
229         m = m.next;
230         m.next = new Animation("rockets_msg1d", "show", 2600, "opacity");
231         m = m.next;
232         m.next = new Animation("rockets_msg1e", "show", 2600, "opacity");
233
234         $("#rockets_add4").click(function() {addFuel(4);});
235         $("#rockets_add3").click(function() {addFuel(3);});
236         $("#rockets_add2").click(function() {addFuel(2);});
237         $("#rockets_add1").click(function() {addFuel(1);});
238         $("#rockets_subtract4").click(function() {addFuel(-4);});
239         $("#rockets_subtract3").click(function() {addFuel(-3);});
240         $("#rockets_subtract2").click(function() {addFuel(-2);});
241         $("#rockets_subtract1").click(function() {addFuel(-1);});
242         $("#rockets_win_page").click(function(){
243             close();
244         });
245     }
246
247     init();
248 };