aboutsummaryrefslogtreecommitdiffstats
path: root/src/sqmod/sqmod_test/js/sqmod_test.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/sqmod/sqmod_test/js/sqmod_test.js')
-rw-r--r--src/sqmod/sqmod_test/js/sqmod_test.js736
1 files changed, 421 insertions, 315 deletions
diff --git a/src/sqmod/sqmod_test/js/sqmod_test.js b/src/sqmod/sqmod_test/js/sqmod_test.js
index d5e7065..9cd1252 100644
--- a/src/sqmod/sqmod_test/js/sqmod_test.js
+++ b/src/sqmod/sqmod_test/js/sqmod_test.js
@@ -1,9 +1,20 @@
'use strict'
-var sqmod_test = function(sq_node){
+var sqmod_test = function(sqid,sq_node){
var that = this;
var index_node = new vus.node('index');
var j_index_page = $('#index_page');
+ var callpath = 'sq/' + sqid + '/';
+
+ function update_result(name,song,score,maxcombo){
+ com.call_backend(callpath,'update_result',function(result){
+ if(com.is_callerr(result)){
+ index.add_alert('','錯誤','資料存取發生錯誤');
+ }else{
+ index.add_alert('alert-success','成功','記錄已送出');
+ }
+ },name,song,score,maxcombo);
+ }
sq_node.url_chg = function(direct,url_upart,url_dpart,param){
if(direct == 'in'){
@@ -17,8 +28,45 @@ var sqmod_test = function(sq_node){
}
index_node.url_chg = function(direct,url_upart,url_dpart,param){
+ var j_jurank;
+
+ function _update(){
+ com.call_backend(callpath,'list_jurank',function(result){
+ var i;
+ var data = result.data;
+ var ranko;
+ var j_item;
+
+ if(com.is_callerr(result)){
+ index.add_alert('','錯誤','資料存取發生錯誤');
+ }else{
+ j_jurank.empty();
+ for(i=0;i<data.length;i++){
+ ranko = data[i];
+
+ j_item = $('<tr><td class="rank"></td><td class="name"></td><td class="song"></td><td class="score"></td><td class="maxcombo"></td></tr>')
+ j_item.find('td.rank').text(i + 1);
+ j_item.find('td.name').text(ranko.name);
+ j_item.find('td.song').text(ranko.song);
+ j_item.find('td.score').text(ranko.score);
+ j_item.find('td.maxcombo').text(ranko.maxcombo);
+
+ j_jurank.append(j_item);
+ }
+ }
+ });
+ }
+
if(direct == 'in'){
- com.loadpage('/toj/sqmod/sqmod_test/html/index.html').done(function(){
+ imc.Proxy.instance.register_call(callpath,'update_jurank',function(callback){
+ _update();
+ callback('Success');
+ });
+
+ com.loadpage('/toj/sqmod/sqmod_test/html/index.html','/toj/sqmod/sqmod_test/css/index.css').done(function(){
+ j_jurank = j_index_page.find('table.jurank > tbody');
+
+ _update();
run();
});
}
@@ -38,7 +86,6 @@ var sqmod_test = function(sq_node){
'R':[1,0],'T':[1,1],'Y':[1,2],'U':[1,3],
'F':[2,0],'G':[2,1],'H':[2,2],'J':[2,3],
'V':[3,0],'B':[3,1],'N':[3,2],'M':[3,3]};
- var expfunc = new Object();
var j_stage_bottom;
var j_stage;
@@ -62,6 +109,10 @@ var sqmod_test = function(sq_node){
var imgmap = new Object();
var audiomap = new Object();
+ var player_name;
+ var curr_mode = 'pro';
+ var back_running = false;
+
var param_auto = false;
function load_image(filename){
@@ -103,10 +154,9 @@ var sqmod_test = function(sq_node){
return defer.promise();
}
- function audio_play(buffer,ds){
+ function audio_play(buffer,onstart){
var src = audio_ctx.createBufferSource();
- var delay = audio_ctx.createDelay(10);
- var proc = audio_ctx.createScriptProcessor(16384,1,1);
+ var proc = audio_ctx.createScriptProcessor(256,1,1);
if(typeof(buffer) == 'string'){
buffer = audiomap[buffer];
@@ -120,26 +170,24 @@ var sqmod_test = function(sq_node){
src.connect(proc);
proc.onaudioprocess = function(e){
- console.log(e.inputBuffer.duration);
src.disconnect(0);
src.connect(g_out);
proc.disconnect(0);
console.log(new Date().getTime());
- expfunc.test();
+ if(onstart != undefined){
+ onstart();
+ }
}
proc.connect(g_out);
- if(ds != undefined){
- //delay.delayTime.value = ds;
- //delay.connect(g_out);
- //src.connect(delay);
- }else{
- //src.connect(g_out);
- }
- src.start(0);
-
curr_src = src;
+ src.start(0);
+ }
+ function audio_stop(){
+ if(curr_src != null){
+ curr_src.stop(0);
+ }
}
function run(){
@@ -233,7 +281,7 @@ var sqmod_test = function(sq_node){
if(mouse_pos != null){
update_butt(mouse_pos[0],mouse_pos[1],true);
}
- }else if(chr == 'A'){
+ }else if(chr == 'A' && curr_mode == 'play'){
param_auto ^= true;
}
});
@@ -284,7 +332,7 @@ var sqmod_test = function(sq_node){
row = j_this.data('row');
col = j_this.data('col');
- update_butt(row,col,true);
+ update_butt(row,col,true,false);
});
j_butts[i][j].on('mouseup',function(e){
var j_this = $(this);
@@ -324,11 +372,9 @@ var sqmod_test = function(sq_node){
_scale();
_audio();
- expfunc.audio_play = audio_play;
-
- eng_bottom = new engine(ctx_bottom,expfunc);
- eng = new engine(ctx,expfunc);
- eng_top = new engine(ctx_top,expfunc);
+ eng_bottom = new engine(ctx_bottom);
+ eng = new engine(ctx);
+ eng_top = new engine(ctx_top);
ctx.fillStyle = '#1C1C1C';
ctx.font = '100px Saucer-Regular';
@@ -339,32 +385,37 @@ var sqmod_test = function(sq_node){
window.requestAnimationFrame(_update);
- play();
- })
+ pro();
+ });
- /*setTimeout(function(){
- _audio();
- _audio_play(ab_select);
-
- st = new Date().getTime();
- window.requestAnimationFrame(_ani);
- },2000);*/
+ while(true){
+ player_name = prompt('Your player name','Foo');
+ if(player_name != ''){
+ break;
+ }
+ }
}
function preload(){
return $.when(
load_image('door_blue.png'),
+ load_image('startmark.png'),
load_image('wave1.png'),
load_image('wave2.png'),
load_image('top.png'),
load_image('light.png'),
load_audio('select.ogg'),
- load_audio('result.ogg')
+ load_audio('result.ogg'),
+ load_audio('select.ogg')
);
}
- function update_butt(row,col,touch){
+ function update_butt(row,col,touch,click){
if(butts[row][col].touch != touch){
+ if(click != false){
+ j_butts[row][col].click();
+ }
+
butts[row][col].touch = touch;
update_top();
}
@@ -402,6 +453,11 @@ var sqmod_test = function(sq_node){
var wave2_off = -1920;
function _wave(){
+ if(curr_mode == 'play'){
+ back_running = false;
+ return;
+ }
+
wave1_off -= 4;
if(wave1_off < -i_wave1.width){
wave1_off = -(wave1_off + i_wave1.width);
@@ -421,14 +477,21 @@ var sqmod_test = function(sq_node){
eng_bottom.add_work(_wave);
}
- eng_bottom.add_work(_wave);
+ if(back_running == false){
+ back_running = true;
+ eng_bottom.add_work(_wave);
+ }
}
- function play(){
+ function play(song){
var defer = $.Deferred();
var end = false;
var i_marks = new Array();
+ var i_perfects = new Array();
+ var i_greats = new Array();
+ var i_goods = new Array();
+ var i_bads = new Array();
var timemap = new Array();
var st = null;
@@ -437,16 +500,19 @@ var sqmod_test = function(sq_node){
var note_score;
var last_touch;
+ var curr_tpb;
var curr_combo = 0;
var score = {
'score':0,
+ 'door_note':0,
'perfect':0,
'great':0,
'good':0,
'bad':0,
'miss':0,
'max_combo':0,
- 'total_note':0
+ 'total_note':0,
+ 'auto':false
};
function _judge(time){
@@ -454,27 +520,34 @@ var sqmod_test = function(sq_node){
time = Math.abs(time);
- if(time > 500){
+ if(time > 425){
score.miss += 1;
+ score.door_note -= 8;
ret = 4;
- }else if(time > 200){
+ }else if(time > 170){
score.bad += 1;
score.score += note_score * 0.1;
+ score.door_note -= 8;
ret = 3;
- }else if(time > 100){
+ }else if(time > 85){
score.good += 1;
score.score += note_score * 0.4;
+ score.door_note += 1;
ret = 2;
- }else if(time > 50){
+ }else if(time > 42){
score.great += 1;
score.score += note_score * 0.7;
+ score.door_note += 2;
ret = 1;
}else{
score.perfect += 1;
score.score += note_score;
+ score.door_note += 2;
ret = 0;
}
+ score.door_note = Math.min(Math.max(0,score.door_note),score.total_note);
+
if(ret <= 2){
curr_combo += 1;
score.max_combo = Math.max(score.max_combo,curr_combo);
@@ -493,20 +566,35 @@ var sqmod_test = function(sq_node){
var col;
var time;
- function __drawmark(ctx,x,y,time){
- var image = i_marks[Math.floor(time / 36.36364)];
-
- ctx.drawImage(image,x + 8,y + 8,304,304);
+ function __drawmark(ctx,x,y,time,judge,judge_time){
+ var off;
+
+ if(time < 800){
+ ctx.drawImage(i_marks[Math.floor(time / 36.36364)],x,y,320,320);
+ }
+ if(judge != -1){
+ off = eng.ts - judge_time;
+
+ if(judge == 0 && off < 225){
+ ctx.drawImage(i_perfects[Math.floor(off / 15)],x,y,320,320);
+ }else if(judge == 1 && off < 225){
+ ctx.drawImage(i_greats[Math.floor(off / 15)],x,y,320,320);
+ }else if(judge == 2 && off < 210){
+ ctx.drawImage(i_goods[Math.floor(off / 15)],x,y,320,320);
+ }else if(judge == 3 && off < 195){
+ ctx.drawImage(i_bads[Math.floor(off / 15)],x,y,320,320);
+ }
+ }
}
for(i = 0;i < poslist.length;i++){
pos = poslist[i];
time = (eng.ts - st) - pos.time;
- if(time >= -509 && time < 291){
+ if(time >= -509 && time < 620){
row = pos.pos[0];
col = pos.pos[1];
- __drawmark(ctx,butts[row][col].x,butts[row][col].y,time + 509);
+ __drawmark(ctx,butts[row][col].x,butts[row][col].y,time + 509,pos.judge,pos.judge_time);
}
}
}
@@ -529,8 +617,9 @@ var sqmod_test = function(sq_node){
end = true;
j_stage_bottom.css('background-color','transparent');
- result(score);
-
+ eng.add_work(function(){
+ result(song,score);
+ });
return;
}
}else{
@@ -538,7 +627,11 @@ var sqmod_test = function(sq_node){
if((ct + 509) >= map.time){
poss = map.pos;
for(i = 0;i < poss.length;i++){
- poslist.push({'judge':-1,'time':map.time,'pos':poss[i]});
+ poslist.push({'judge':-1,'judge_time':-1,'time':map.time,'pos':poss[i]});
+ }
+
+ if(map.tpb != undefined){
+ curr_tpb = map.tpb;
}
curr +=1;
@@ -549,9 +642,10 @@ var sqmod_test = function(sq_node){
for(i = 0;i < poslist.length;i++){
pos = poslist[i];
time = ct - pos.time;
- if(time >= 500){
+ if(time > 500){
if(pos.judge == -1){
pos.judge = _judge(time);
+ pos.judge_time = eng.ts;
}
continue;
}
@@ -560,15 +654,18 @@ var sqmod_test = function(sq_node){
col = pos.pos[1];
if(param_auto == true){
- if(time > - 40 && time < 0){
+ score.auto = true;
+
+ if(butts[row][col].touch == false && time > -40 && time < 0){
update_butt(row,col,true);
}else if(time > 40 && time < 100){
update_butt(row,col,false);
}
}
- if(butts[row][col].touch == true && last_touch[row][col] == false){
+ if(pos.judge == -1 && butts[row][col].touch == true && last_touch[row][col] == false){
pos.judge = _judge(time);
+ pos.judge_time = eng.ts;
}
next_poslist.push(pos);
@@ -585,6 +682,37 @@ var sqmod_test = function(sq_node){
eng.add_work(_update);
}
+ function _prepare(){
+ var defer = $.Deferred();
+ var i_startmark = imgmap['startmark.png'];
+ var poss = timemap[0].pos;
+
+ function __draw(ctx){
+ var i;
+ var pos;
+ var row;
+ var col;
+
+ if((eng.ts - st) >= 5000){
+ defer.resolve();
+ return;
+ }
+
+ for(i = 0;i < poss.length;i++){
+ pos = poss[i];
+ row = pos[0];
+ col = pos[1];
+
+ ctx.drawImage(i_startmark,butts[row][col].x + 35,butts[row][col].y + 35,250,250);
+ }
+
+ eng.add_draw(0,__draw);
+ }
+
+ eng.add_draw(0,__draw);
+
+ return defer.promise();
+ }
function _combo(){
var last_combo = curr_combo;
var ani_st = -1;
@@ -609,8 +737,6 @@ var sqmod_test = function(sq_node){
ctx.font = '60px Saucer-Mono';
ctx.fillText('combo',272 + 352 * 3 - 64 - m_combo.width,32 + 352 * 2 + 64);
-
- last_combo = curr_combo;
}
function __update(){
if(end == true){
@@ -620,8 +746,9 @@ var sqmod_test = function(sq_node){
if(curr_combo != last_combo && ani_st == -1){
ani_st = eng.ts;
}
- eng.add_draw(0,__draw);
+ eng.add_draw(5,__draw);
}
+ last_combo = curr_combo;
eng.add_work(__update);
}
@@ -632,8 +759,8 @@ var sqmod_test = function(sq_node){
eng.add_work(__update);
}
function _score(){
+ var m_player;
var m_otua;
- var i_door = imgmap['door_blue.png'];
function __draw(){
var text;
@@ -643,15 +770,6 @@ var sqmod_test = function(sq_node){
return;
}
- var ratio = score.max_combo / score.total_note;
- var move = eng.beat_ease(307,40,(eng.ts - st) % 307);
- var dw = 3840 * ratio + move;
- var dh = 2880 * ratio + move;
-
- ctx.drawImage(i_door,-dw / 2,-dh / 2,1920 + dw,1440 + dh);
- ctx.fillStyle='rgba(0,0,0,' + (0.9 - (0.7 * ratio)) + ')';
- ctx.fillRect(0,0,1920,1440);
-
text = Math.ceil(score.score).toString();
ctx.fillStyle = '#D9D9D9';
@@ -659,60 +777,52 @@ var sqmod_test = function(sq_node){
m = ctx.measureText(text);
ctx.fillText(text,272 + 352 * 3 - 64 - m.width,32 + 352 - 64);
- if(param_auto == true){
- ctx.font = '60px Saucer-Mono';
- ctx.fillText('Player: OTUA',272 + 352 * 3 - 64 - m_otua.width,32 + 352 * 3 + 64);
+ ctx.font = '60px Saucer-Mono';
+ if(param_auto == false){
+ text = 'Player: ' + player_name;
+ m = m_player;
+ }else{
+ text = 'Player: OTUA';
+ m = m_otua;
}
+ ctx.fillText(text,272 + 352 * 3 - 64 - m.width,32 + 352 * 3 + 64);
- eng.add_draw(0,__draw);
+ eng.add_draw(5,__draw);
}
+ ctx.fillStyle = '#D9D9D9';
ctx.font = '60px Saucer-Mono';
+ m_player = ctx.measureText('Player: ' + player_name);
m_otua = ctx.measureText('Player: OTUA');
- eng.add_draw(0,__draw);
+ eng.add_draw(5,__draw);
}
+ function _door(){
+ var i_door = imgmap['door_blue.png'];
- /*
- expfunc.play_draw = function(ctx,x,y,time){
- var image = i_marks[Math.floor(time / 36.36364)];
-
- ctx.drawImage(image,x + 8,y + 8,304,304);
- };*/
- expfunc.play_draw = function(ctx,poslist,ct){
- var i;
- var pos;
- var row;
- var col;
- var time;
-
- function __drawmark(x,y,time){
- var image = i_marks[Math.floor(time / 36.36364)];
-
- ctx.drawImage(image,x + 8,y + 8,304,304);
- }
-
- for(i = 0;i < poslist.length;i++){
- pos = poslist[i];
-
- time = ct - pos.time;
- if(time >= -509 && time < 327){
- row = pos.pos[0];
- col = pos.pos[1];
- __drawmark(butts[row][col].x,butts[row][col].y,time + 509);
+ function __draw(ctx){
+ var ratio = score.door_note / score.total_note;
+ var move = eng.beat_ease(curr_tpb,40,(eng.ts - st) % curr_tpb);
+ var dw = 3840 * ratio + move;
+ var dh = 2880 * ratio + move;
+
+ if(end == true){
+ return;
}
- }
+
+ ctx.drawImage(i_door,-dw / 2,-dh / 2,1920 + dw,1440 + dh);
+ ctx.fillStyle='rgba(0,0,0,' + (0.9 - (0.5 * ratio)) + ')';
+ ctx.fillRect(0,0,1920,1440);
+
+ eng.add_draw(0,__draw);
+ }
+
+ eng.add_draw(0,__draw);
}
-
- expfunc.test = function(){
- st = eng.ts;
- console.log(new Date().getTime());
- eng.add_work(_update);
- _combo();
- _score();
- };
- $.get('/toj/sqmod/sqmod_test/html/JOMANDA.ju',function(data){
+ curr_mode = 'play';
+
+ $.get('/toj/sqmod/sqmod_test/html/song/' + song + '/' + song + '.ju',function(data){
var i;
var j;
var k;
@@ -720,6 +830,8 @@ var sqmod_test = function(sq_node){
var line;
var parts;
+ var delay;
+ var lpb;
var tpb;
var lbeat;
var beat;
@@ -734,19 +846,23 @@ var sqmod_test = function(sq_node){
lines = data.split('\n');
- //Find start
+ //Load param
+ delay = 0;
for(i = 0;i < lines.length;i++){
line = lines[i];
- if(line == '#start#'){
+ if(line.charAt(0) == 'd'){
+ delay = parseInt(line.split('=')[1]);
+ }else if(line == '#start#'){
i++;
break;
}
}
//Read beatmap
+ lpb = 0;
tpb = 0;
lbeat = 0;
- ltime = 200;
+ ltime = delay + 5000;
total_note = 0;
for(;i < lines.length;i++){
if((line = lines[i]) == ''){
@@ -773,6 +889,10 @@ var sqmod_test = function(sq_node){
}
timemap.push({'time':time,'pos':pos});
+ if(lpb != tpb){
+ timemap[timemap.length - 1].tpb = tpb;
+ lpb = tpb;
+ }
}
lbeat = beat;
@@ -796,64 +916,80 @@ var sqmod_test = function(sq_node){
j_stage_bottom.css('background-color','#1C1C1C');
- defers.push(load_audio('JOMANDA.ogg'));
+ defers.push(load_audio('song/' + song + '/' + song + '.ogg'));
for(i = 0;i < 22;i++){
defers.push(load_image('mark/mal_' + i + '.png'));
}
- //defers.push(load_image('mark/clearmark.png'));
+ for(i = 0;i < 15;i++){
+ defers.push(load_image('mark/fect_' + i + '.png'));
+ }
+ for(i = 0;i < 15;i++){
+ defers.push(load_image('mark/at_' + i + '.png'));
+ }
+ for(i = 0;i < 14;i++){
+ defers.push(load_image('mark/d_' + i + '.png'));
+ }
+ for(i = 0;i < 13;i++){
+ defers.push(load_image('mark/_' + i + '.png'));
+ }
$.when.apply($,defers).done(function(ab_song){
var i;
+ var j;
- for(i = 0;i < 22;i++){
- i_marks[i] = arguments[i + 1];
+ j = 1;
+ for(i = 0;i < 22;i++,j++){
+ i_marks[i] = arguments[j];
+ }
+ for(i = 0;i < 15;i++,j++){
+ i_perfects[i] = arguments[j];
+ }
+ for(i = 0;i < 15;i++,j++){
+ i_greats[i] = arguments[j];
+ }
+ for(i = 0;i < 14;i++,j++){
+ i_goods[i] = arguments[j];
+ }
+ for(i = 0;i < 13;i++,j++){
+ i_bads[i] = arguments[j];
}
defer.resolve();
//Start
- console.log(ab_song.sampleRate);
- console.log(ab_song.length);
- audio_play(ab_song);
+ param_auto = false;
+ curr_tpb = timemap[0].tpb;
+
+ st = eng.ts;
+ _door();
+ _combo();
+ _score();
+ _prepare().done(function(){
+ audio_play(ab_song,function(){
+ console.log(eng.ts);
+ eng.add_work(_update);
+ });
+ });
});
});
-
-
return defer.promise();
}
- expfunc.result_draw = function(ctx,offx,offy,score){
- ctx.font = '150px Saucer-Regular';
- ctx.fillText('Result',offx,offy);
-
- ctx.font = '120px Saucer-Regular';
- ctx.fillText(score.score,offx,offy + 200);
-
- ctx.font = '100px Saucer-Regular';
- ctx.fillText('Perfect',offx,offy + 350);
- ctx.fillText(score.perfect,offx + 600,offy + 350);
- ctx.fillText('Great',offx,offy + 450);
- ctx.fillText(score.great,offx + 600,offy + 450);
- ctx.fillText('Good',offx,offy + 550);
- ctx.fillText(score.good,offx + 600,offy + 550);
- ctx.fillText('Bad',offx,offy + 650);
- ctx.fillText(score.bad,offx + 600,offy + 650);
- ctx.fillText('Miss',offx,offy + 750);
- ctx.fillText(score.miss,offx + 600,offy + 750);
- ctx.fillText('Max Combo',offx,offy + 900);
- ctx.fillText(score.max_combo,offx + 600,offy + 900);
- };
-
- function result(score){
+ function result(song,score){
+ var st;
+ var ori_score;
+ var show_score;
var offx = 272 + 352 + 32;
var offy = 32 + 256;
function _draw(ctx){
+ var ct = eng.ts - st;
+
if(score.max_combo == score.total_note){
ctx.fillStyle = "#F9BF45";
ctx.font = '130px Saucer-Regular';
- ctx.fillText('FULL COMBO',offx + 32,offy + 72);
+ ctx.fillText('FULL COMBO',offx + 32,offy + 56);
ctx.fillStyle = '#1C1C1C';
}
@@ -861,220 +997,187 @@ var sqmod_test = function(sq_node){
ctx.font = '150px Saucer-Regular';
ctx.fillText('Result',offx,offy);
- ctx.font = '120px Saucer-Regular';
- ctx.fillText(score.score,offx,offy + 200);
+ ctx.font = '120px Saucer-Mono';
+ ctx.fillText(show_score,offx,offy + 200);
ctx.font = '100px Saucer-Regular';
ctx.fillText('Perfect',offx,offy + 350);
- ctx.fillText(score.perfect,offx + 600,offy + 350);
+ ctx.fillText(score.perfect,offx + 700,offy + 350);
ctx.fillText('Great',offx,offy + 450);
- ctx.fillText(score.great,offx + 600,offy + 450);
+ ctx.fillText(score.great,offx + 700,offy + 450);
ctx.fillText('Good',offx,offy + 550);
- ctx.fillText(score.good,offx + 600,offy + 550);
+ ctx.fillText(score.good,offx + 700,offy + 550);
ctx.fillText('Bad',offx,offy + 650);
- ctx.fillText(score.bad,offx + 600,offy + 650);
+ ctx.fillText(score.bad,offx + 700,offy + 650);
ctx.fillText('Miss',offx,offy + 750);
- ctx.fillText(score.miss,offx + 600,offy + 750);
+ ctx.fillText(score.miss,offx + 700,offy + 750);
ctx.fillText('Max Combo',offx,offy + 900);
- ctx.fillText(score.max_combo,offx + 600,offy + 900);
- }
- function _update(){
- eng.add_draw(0,_draw);
- eng.add_work(_update);
+ ctx.fillText(score.max_combo,offx + 700,offy + 900);
+
+ ctx.fillStyle = '#1C1C1C';
+ ctx.font = '60px Saucer-Regular';
+ ctx.fillText('BACK',1360,1344);
+
+ if(ct < 1000){
+ eng.add_draw(0,_draw);
+ }else if(show_score < score.score){
+ show_score = Math.min(score.score,ori_score + (ct - 1000) * 20);
+ eng.add_draw(0,_draw);
+ }
}
+ curr_mode = 'result';
+
+ st = eng.ts;
+ ori_score = Math.ceil(score.score);
+ show_score = ori_score;
+ score.score += 100000 * score.door_note / score.total_note;
score.score = Math.ceil(score.score);
audio_play('result.ogg');
- eng.add_work(_update);
- back();
- }
-
+ if(score.auto == false){
+ update_result(player_name,song,score.score,score.max_combo);
+ }
- /* function test(){
- var i;
- var j;
- var st;
- var j_div;
- var j_box;
- var j_fps;
- var j_stage_bottom;
- var j_stage;
- var j_stage_top;
- var ctx_bottom;
- var eng_bottom;
- var ctx;
- var eng;
- var ctx_top;
- var eng_top;
+ j_butts[3][3].on('click',function(e){
+ j_butts[3][3].off('click');
-
- var audio;
- var ab_select;
- var ab_song2;
- var ab_song3;
- var ab_song4;
-
- var i_top = new Image();
- var i_light = new Image();
- var i_wave1 = new Image();
- var i_cover2 = new Image();
- var i_cover3 = new Image();
- var i_cover4 = new Image();
+ eng.add_work(function(){
+ pro();
+ });
+ });
- var i_marks = new Array();
+ eng.add_draw(0,_draw);
+ back();
+ }
+
+ function pro(){
+ var defers = [];
+ var curr_song = null;
+ var start_cd = null;
+ var end = false;
- function _load(){
- var i;
- var image;
+ function _draw(ctx){
+ var title;
+ var timer;
-
+ function __draw_pro(i,j,title,cover){
+ var x,y;
- i_top.src = '/toj/sqmod/sqmod_test/html/top.png';
- i_light.src = '/toj/sqmod/sqmod_test/html/light.png';
- i_wave1.src = '/toj/sqmod/sqmod_test/html/wave1.png';
- i_cover2.src = '/toj/sqmod/sqmod_test/html/IMSOHAPPY.jpg';
- i_cover3.src = '/toj/sqmod/sqmod_test/html/JOMANDA.jpg';
- i_cover4.src = '/toj/sqmod/sqmod_test/html/MOTHERSHIP.png';
+ x = butts[i][j].x;
+ y = butts[i][j].y;
- for(i = 0;i < 15;i++){
- image = new Image();
- image.src = '/toj/sqmod/sqmod_test/html/mark/mal_' + i + '.png';
- i_marks.push(image);
+ if(cover != undefined){
+ ctx.drawImage(cover,x,y,320,320);
+ }else{
+ ctx.fillStyle = '#1C1C1C';
+ ctx.font = '40px Saucer-Bold';
+ ctx.fillText(title,x + 32,y + 290);
+ }
}
- for(i = 0;i < 7;i++){
- image = new Image();
- image.src = '/toj/sqmod/sqmod_test/html/mark/malpassed_' + i + '.png';
- i_marks.push(image);
+
+ if(end == true){
+ return;
}
-
- _load_audio('select.ogg',function(buffer){
- ab_select = buffer;
- });
- _load_audio('IMSOHAPPY.ogg',function(buffer){
- ab_song2 = buffer;
- });
- _load_audio('JOMANDA.ogg',function(buffer){
- ab_song3 = buffer;
- });
- _load_audio('MOTHERSHIP.ogg',function(buffer){
- ab_song4 = buffer;
- });
- }
-
-
-
-
+ __draw_pro(0,0,'A+B Problem');
+ __draw_pro(0,1,'JOMANDA',imgmap['song/JOMANDA/JOMANDA.jpg']);
+ __draw_pro(0,2,'JOMANDA',imgmap['song/SHION/SHION.jpg']);
+
+ ctx.fillStyle = '#1C1C1C';
+ ctx.font = '60px Saucer-Regular';
+ if(curr_song != null){
+ if(start_cd == null){
+ start_cd = eng.ts;
+ }
-
+ timer = 60 - ((eng.ts - start_cd) / 1000);
+ if(timer <= 0){
+ _start();
+ }
+
+ ctx.fillText('BACK',1002,1344);
+ ctx.fillText('START',1360,1344);
- function _pro(){
- var curr_song = null;
- var start_cd = null;
+ ctx.font = '48px Saucer-Regular';
+ ctx.fillText(new Number(timer).toFixed(2),1360,1244);
- function __draw(){
- eng.add_draw(function(ctx){
- var title;
+ title = curr_song;
+ }else{
+ ctx.fillText('PREV',1002,1344);
+ ctx.fillText('NEXT',1360,1344);
- function _draw_pro(i,j,title,cover){
- var x,y;
+ title = 'SELECT PROBLEM';
+ }
- x = butts[i][j].x;
- y = butts[i][j].y;
+ ctx.rotate(Math.PI / 2);
+ ctx.font = '100px Saucer-Regular';
+ ctx.fillText(title,32,-100);
- if(cover != undefined){
- ctx.drawImage(cover,x + 8,y + 8,304,304);
- }else{
- ctx.fillStyle = '#1C1C1C';
- ctx.font = '40px Saucer-Bold';
- ctx.fillText(title,x + 32,y + 290);
- }
- }
+ eng.add_draw(0,_draw);
+ }
+ function _start(){
+ var i;
+ var j;
- _draw_pro(0,0,'A+B Problem');
- _draw_pro(0,1,'I\'m so happy',i_cover2);
- _draw_pro(0,2,'JOMANDA',i_cover3);
- _draw_pro(0,3,'Mother Ship',i_cover4);
+ if(curr_song == null){
+ return;
+ }
- ctx.fillStyle = '#1C1C1C';
- ctx.font = '60px Saucer-Regular';
- if(curr_song != null){
- if(start_cd == null){
- start_cd = eng.ts;
- }
-
- ctx.fillText('BACK',1002,1344);
- ctx.fillText('START',1360,1344);
+ end = true;
+ audio_stop();
- ctx.font = '48px Saucer-Regular';
- ctx.fillText(new Number(60 - ((eng.ts - start_cd) / 1000)).toFixed(2),1360,1244);
+ for(i = 0;i < 4;i++){
+ for(j = 0;j < 4;j++){
+ j_butts[i][j].off('click');
+ }
+ }
- title = curr_song;
- }else{
- ctx.fillText('PREV',1002,1344);
- ctx.fillText('NEXT',1360,1344);
+ eng.add_work(function(){
+ play(curr_song);
+ });
+ }
+
+ curr_mode = 'pro';
- title = 'SELECT PROBLEM';
- }
+ defers.push(load_audio('song/JOMANDA/JOMANDA.ogg'));
+ defers.push(load_audio('song/SHION/SHION.ogg'));
+ defers.push(load_image('song/JOMANDA/JOMANDA.jpg'));
+ defers.push(load_image('song/SHION/SHION.jpg'));
- ctx.rotate(Math.PI / 2);
- ctx.font = '100px Saucer-Regular';
- ctx.fillText(title,32,-100);
+ $.when.apply($,defers).done(function(){
+ j_butts[0][1].on('click',function(e){
+ load_audio('song/JOMANDA/JOMANDA.ogg').done(function(ab_song){
+ audio_play(ab_song);
});
-
- eng.add_work(__draw);
- }
-
- butts[0][1].on('click',function(e){
- _audio_play(ab_song2);
- curr_song = 'I\'m so happy';
- });
- butts[0][2].on('click',function(e){
- _audio_play(ab_song3);
curr_song = 'JOMANDA';
});
- butts[0][3].on('click',function(e){
- _audio_play(ab_song4);
- curr_song = 'Mother Ship';
+ j_butts[0][2].on('click',function(e){
+ load_audio('song/SHION/SHION.ogg').done(function(ab_song){
+ audio_play(ab_song);
+ });
+ curr_song = 'SHION';
});
- butts[3][2].on('click',function(e){
+ j_butts[3][2].on('click',function(e){
if(curr_song != null){
- _audio_play(ab_select);
+ audio_play('select.ogg');
start_cd = null;
curr_song = null;
}
});
- butts[3][3].on('click',function(e){
- _test();
+ j_butts[3][3].on('click',function(e){
+ _start();
});
-
- __draw();
- }
-
- function _test(){
-
- function _ani(){
- var et = new Date().getTime();
- j_fps.text(Math.floor(1 / (et - st) * 1000));
- st = et;
-
- window.requestAnimationFrame(_ani);
-
- eng_bottom.update();
- eng.update();
- eng_top.update();
- }
-
-
-
-
- }*/
+ audio_play('select.ogg');
+ eng.add_draw(0,_draw);
+ back();
+ });
+ }
};
-var engine = function(ctx,expfunc){
+var engine = function(ctx){
var that = this;
var workq = new Array();
var drawq = new Array();
@@ -1120,6 +1223,8 @@ var engine = function(ctx,expfunc){
var worktq;
var drawtq;
+ var tmp = new Date().getTime();
+
that.ts = new Date().getTime() - st;
//worker.postMessage({'type':0,'ts':that.ts});
@@ -1142,14 +1247,15 @@ var engine = function(ctx,expfunc){
});
for(i = 0;i < drawtq.length;i++){
ctx.save();
- if(drawtq[i].func == undefined){
- drawtq[i].draw(ctx);
- }else{
- expfunc[drawtq[i].func].apply(null,drawtq[i].param);
- }
+ drawtq[i].draw(ctx);
ctx.restore();
}
}
+
+ tmp = new Date().getTime() - tmp;
+ if(tmp > 15){
+ console.log('time' + tmp);
+ }
};
that.beat_ease = function(dur,max,off){