/
main.js
128 lines (107 loc) · 3.01 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
( function($){
$(document).ready(function()
{
var seq = [];
var player_area = $('#player_area');
$('#player_data').children().each(
function()
{
var wait = parseInt( this.getAttribute('wait') );
var delay = parseInt( this.getAttribute('delay') );
var rollback = parseInt( this.getAttribute('rollback') );
var inline = this.getAttribute('inline') == 'true';
var clear = this.getAttribute('clear') == 'true';
var text = this.innerHTML;
seq.push( function()
{
var dfd = $.Deferred();
var oldIndicator = $('#console_indicator');
var last_dom_line = $( '.dom_line', player_area ).last();
if( !clear )
{
setTimeout(
function()
{
var sub_seq = [];
var dom_line = null;
if( inline )
{
dom_line = last_dom_line;
player_area.append( dom_line, oldIndicator.remove().clone() );
}
else if( rollback )
{
dom_line = last_dom_line;
}
else
{
dom_line = $('<span/>').addClass('dom_line');
var child_num = player_area[0].childNodes.length;
player_area.append( child_num > 1 ? $('<br/>') : null, dom_line, oldIndicator.remove().clone() );
}
if( delay )
{
if( text && text.length )
{
for( var x = 0; x < text.length; x++ )
{
sub_seq.push( ( function( args )
{
var sub_dfd = $.Deferred();
setTimeout(
function( param )
{
dom_line[0].innerHTML += param.txt[param.pos];
document.body.scrollTop = document.body.scrollHeight;
sub_dfd.resolve();
}, args.delay, args
);
return sub_dfd.promise();
} ).bind( null, { txt : text, pos: x, delay : delay } ) );
}
}
if( rollback ) //delete command
{
for( var x = 0; x < rollback; x++ )
{
sub_seq.push( ( function( args )
{
var sub_dfd = $.Deferred();
setTimeout(
function( param )
{
dom_line[0].innerHTML = dom_line[0].innerHTML.slice( 0, -1 );
document.body.scrollTop = document.body.scrollHeight;
sub_dfd.resolve();
}, args.delay, args
);
return sub_dfd.promise();
} ).bind( null, { delay } ) );
}
}
}
else
{
dom_line[0].innerHTML = text;
}
$.sequence( sub_seq ).then( function(){ console.debug('SUBROUTINE DONE!'); dfd.resolve(); });
}, wait
);
}
else //clear command
{
setTimeout(
function( param )
{
player_area.empty().append( oldIndicator.clone() );
dfd.resolve();
}, wait
);
}
return dfd.promise();
} );
}
);
$.sequence( seq ).then( function(){ console.debug('DONE!'); });
});
} )( jQuery );