import Amida; class AmidaMain { var cnt:Number = 0; var frames:Array; var blocks:Array; var xs:Array; var ami:Amida; var cols:Array = new Array(); function AmidaMain(){ ami = new Amida(); init(); } function init(){ ami.create(); init_cols(); create_objs(); } function create_objs(){ // frames frames = new Array(); for(var i:Number = 0; i < _root.N; i++) frames[i] = new Block(_root.TYPE_FRAME, i); // nblocks blocks = new Array(); for(var i = 0; i < _root.M + 1; i++){ blocks[i] = new Array(); for(var j:Number = 0; j < _root.N; j++) blocks[i][j] = new Block(_root.TYPE_BLOCK, j, i); } // X block | \ / xs = new Array(); for(var i = 0; i < _root.M; i++){ xs[i] = new Array(_root.N); for(var j:Number = 0; j < _root.N; j++) xs[i][j] = new Block(ami.get_x(i,j), j, i); } drawAll(); } function init_cols(){ var h_base = Math.random() * 2 * Math.PI; for(var i = 0; i < _root.N; i++){ var h = i * Math.PI * 2.0 / _root.N + h_base; var r = int(0x99 * Math.sin(h) + 0x99); var g = int(0x99 * Math.sin(h + Math.PI * 0.67) + 0x99); var b = int(0x99 * Math.sin(h + Math.PI * 1.33) + 0x99); if(r > 0xff) r = 0xff; if(g > 0xff) g = 0xff; if(b > 0xff) b = 0xff; cols[i] = 0x10000 * r + 0x100 * g + b; } } function drawAll(){ var def_col = 0xaaaaaa; _root.clear(); for(var i = 0; i < _root.N; i++) frames[i].draw(100); /* init counts */ var cur_cid = int( cnt / (2 * (_root.M + _root.sstep))); if(cur_cid > _root.N) cur_cid = _root.N; var rest = cnt - cur_cid * (2 * (_root.M + _root.sstep)); var m_cnt:Number = int( rest / 2 ); if(m_cnt > _root.M + _root.sstep) m_cnt = _root.M + _root.sstep; var mx_cnt:Number = int( (rest - 1) / 2 ); if(mx_cnt > _root.M + _root.sstep) mx_cnt = _root.M + _root.sstep; for(var i = 0; i < m_cnt; i++){ for(var j = 0; j < _root.N; j++){ var cid = ami.get_s(i, j); var col = def_col; if(cid == cur_cid){ col = cols[cid]; var alpha0 = (m_cnt - i) / _root.sstep * 100; if(alpha0 <= 0) alpha0 = 0; if(alpha0 > 100) alpha0 = 100; blocks[i][j].draw(100 - alpha0, def_col); blocks[i][j].draw(alpha0, col); } } } for(var i = 0; i < mx_cnt; i++) for(var j = 0; j < _root.N; j++){ var cid = ami.get_s(i, j); var col = def_col; if(cid == cur_cid){ col = cols[cid]; var alpha0 = (mx_cnt - i) / _root.sstep * 100; if(alpha0 <= 0) alpha0 = 0; if(alpha0 > 100) alpha0 = 100; xs[i][j].draw(100 - alpha0, def_col); xs[i][j].draw(alpha0, col); } } for(var i = 0; i < _root.M; i++) for(var j = 0; j < _root.N; j++){ var cid = ami.get_s(i, j); if(cid == cur_cid && i < m_cnt) continue; var col = (cid < cur_cid) ? cols[cid] : def_col; blocks[i][j].draw(100, col); } for(var i = 0; i < _root.M; i++) for(var j = 0; j < _root.N; j++){ var cid = ami.get_s(i, j); if(cid == cur_cid && i < mx_cnt) continue; var col = (cid < cur_cid) ? cols[cid] : def_col; xs[i][j].draw(100, col); } } function addTime(){ cnt++; if(cnt > (_root.M + _root.sstep)* _root.N * 2){ cnt = 0; init(); } drawAll(); } }