www.gusucode.com > 玛雅传奇游戏微信朋友圈小游戏源码程序 > 玛雅传奇游戏微信朋友圈小游戏源码程序/maya/js/avk_body.js
function avk_start() { var sgLangs = SG.lang; setTimeout("window.scrollTo(0, 1)", 10); function gl_vars() { this.TUTOR=0; this.HEART=false; this.MAX_PROG=false; this.TUTOR_STEPS=[2000,1000000,5000]; this.CLEAR_DATA=false; this.FINISH=true; this.RUN=false; this.PATH_POINTS=1000; this.PAUSE=false; this.D=0; this.X=0; this.INSERTS=250; this.BACK_A=1/1000; this.HS=2; this.VS=2; this.BS=0.15; this.COLORS=[false,false,false,false,false,false,false]; this.BULLET=null; this.BALLS=null; this.LENGTH=0; this.BACK_SPRITE=null; this.SPRITE=null; this.OSKOLKI=new Array(); this.KILLED=new Array(); this.MUL=0; this.SCORE=0; this.CURRENT_SCORE=0; this.WIN_PROGRESS=3; this.TR_1=0; this.TR_2=0; this.TR_3=0; this.TR=0; this.LEVELS=[-1,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2]; this.PROGRESS=[]; this.CLOUDS=[]; this.TIME=0; this.STAT= [{start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}, {start_cnt:0,win_cnt:0,win_time:0,win_score:0,win_next:0,win_emprove_cnt:0,loose_cnt:0,loose_time:0,loose_score:0,loose_refresh:0,loose_emprove_cnt:0}] this.SHOW_HANDLER=null; this.WND_GAME=null; this.LOG=function(txt) { game.MAIN.txt_log.set_text(game.MAIN.txt_log.caption+"\n"+txt); game.MAIN.txt_log.sprite.position.y=game.MAIN.txt_log.y+(game.MAIN.log_place.uni_height-game.MAIN.txt_log.txt.textHeight); game.MAIN.txt_log.txt.position.y=0; } var tk=(new Date()).getTime(); this.FUNC=function(txt) { var tm = (new Date()).getTime(); game.MAIN.txt_log.set_text(game.MAIN.txt_log.caption+"\n"+txt+"["+(tm-tk)+"]"); tk=tm; game.MAIN.txt_log.sprite.position.y=game.MAIN.txt_log.y+(game.MAIN.log_place.uni_height-game.MAIN.txt_log.txt.textHeight); game.MAIN.txt_log.txt.position.y=0; } } var GLOBAL=new gl_vars(); var that = this; var order = []; var to_update = []; var game = new AVK_GAME(init,update,event); var actions={ pr:{pause:0,time:350,changes:{prop:{beg:0,end:1,trans:"sqrt"}}}, to_left:{pause:0,time:350,changes:{global_x:{beg:0,end:-1,trans:"sqrt"}}}, from_right:{pause:0,time:350,changes:{global_x:{beg:1,end:0,trans:"sqrt"}}}, to_right:{pause:0,time:350,changes:{global_x:{beg:0,end:1,trans:"sqrt"}}}, alpha:{pause:0,time:1000,changes:{alpha:{beg:0,end:1,trans:"lin"}}}, tutor_alpha:{pause:0,time:350,changes:{alpha:{beg:0,end:1,trans:"lin"}}}, tutor_alpha_hide:{pause:0,time:350,changes:{alpha:{beg:1,end:0,trans:"lin"}}}, light:{pause:0,time:500,changes:{prop:{beg:0,end:1,trans:"lin"}}}, hide:{pause:0,time:1000,changes:{prop:{beg:0,end:1,trans:"n2"}}}, show:{pause:0,time:700,changes:{prop:{beg:0,end:1,trans:"n2"}}}, from_up:{pause:0,time:350,changes:{global_y:{beg:-1,end:0,trans:"sqrt"}}}, show_zw:{pause:350,time:1000,changes:{prop:{beg:0,end:1,trans:"lin"}}}, ui_scale:{pause:0,time:1000,changes:{prop:{beg:0,end:Math.PI*2,trans:"sin"}}}, from_left:{pause:0,time:350,changes:{global_x:{beg:-1,end:0,trans:"sqrt"}}} }; function show_wnd_right(wnd) { game.GUI_BUSY=true; order.push(wnd); wnd.sprite.visible = true; game.ACT.start("from_left",wnd); game.ACT.start("to_right",order[order.length-2],hide_old); } function show_wnd_left(wnd) { game.GUI_BUSY=true; order.push(wnd); wnd.sprite.visible = true; game.ACT.start("from_right",wnd,on_show); game.ACT.start("to_left",order[order.length-2],hide_old); } function hide_wnd_right() { game.GUI_BUSY=true; order[order.length-2].sprite.visible = true; game.ACT.start("from_right",order[order.length-2]); game.ACT.start("to_left",order[order.length-1],hide_old); order.pop(); } function hide_wnd_left() { game.GUI_BUSY=true; order[order.length-2].sprite.visible = true; game.ACT.start("from_left",order[order.length-2]); game.ACT.start("to_right",order[order.length-1],hide_old); order.pop(); } function on_show() { if (GLOBAL.SHOW_HANDLER!=null) { GLOBAL.SHOW_HANDLER(); GLOBAL.SHOW_HANDLER=null; } } function hide_old(wnd) { game.GUI_BUSY=false; PAUSE=false; wnd.sprite.visible = false; } function convert(value) { var s = ""; var t = 0; value=""+value; for (var i = value.length - 1; i >= 0; i--) { if (t == 3) { t = 0; s = " " + s; } if ((value.charAt(i) != "0") && (value.charAt(i) != "1") && (value.charAt(i) != "2") && (value.charAt(i) != "3") && (value.charAt(i) != "4") && (value.charAt(i) != "5") && (value.charAt(i) != "6") && (value.charAt(i) != "7") && (value.charAt(i) != "8") && (value.charAt(i) != "9")) return value; s = value.charAt(i) + s; t++; } return s; } function AVK_CONTAINER() { var cnt=0; var maked_objects={}; var here=this; this.init=function(obj,place) { obj.active=1; obj.sprite.visible=true; if (place!=null) place.add(obj); return obj; } this.free=function(obj) { obj.active=0; obj.sprite.visible=false; if (obj.sprite.parent!=null) obj.sprite.parent.removeChild(obj.sprite); return obj; } this.get_object=function(owner,prototype,place,heap) { if (maked_objects[owner+"_"+prototype]==null) maked_objects[owner+"_"+prototype]=[]; var tmp_array=maked_objects[owner+"_"+prototype]; for (var i=0;i<tmp_array.length;i++) { var tmp_res=tmp_array[i]; if (tmp_res.active<=0) return here.init(tmp_res,place); } if (tmp_array.length==0) { tmp_res=game[owner][prototype]; tmp_res.ID=0; tmp_array.push(tmp_res); return here.init(tmp_res,place); }else { tmp_res=tmp_array[tmp_array.length-1].make_copy(); tmp_array.push(tmp_res); return here.init(tmp_res,place); } } } var CONTAINER=new AVK_CONTAINER(); function is_snd() { return game.GAME.btn_no_snd.sprite.visible; } function change_snd() { if (GLOB_M) { game.GAME.btn_snd.sprite.visible=!game.GAME.btn_snd.sprite.visible; game.MAIN.btn_snd.sprite.visible=!game.MAIN.btn_snd.sprite.visible; game.GAME.btn_no_snd.sprite.visible=!game.GAME.btn_no_snd.sprite.visible; game.MAIN.btn_no_snd.sprite.visible=!game.MAIN.btn_no_snd.sprite.visible; GLOB_in_menu.stop(); GLOB_in_game.stop(); if (is_snd()) if (order.length==1) GLOB_in_menu.play("none",0,0,-1); else GLOB_in_game.play("none",0,0,-1); }else { game.GAME.btn_snd.sprite.visible=false; game.MAIN.btn_snd.sprite.visible=false; game.GAME.btn_no_snd.sprite.visible=false; game.MAIN.btn_no_snd.sprite.visible=false; } } function save() { try { localStorage.avk_maya_data=GLOBAL.LEVELS; } catch(e) {}; } function load_stat() { } function save_stat() { } function init_select() { try { if ((typeof(localStorage.avk_maya_data)=='undefined')||(GLOBAL.CLEAR_DATA)) { localStorage.avk_maya_data=GLOBAL.LEVELS; } var n=0; var t=0; var s=localStorage.avk_maya_data+","; for (var i=0;i<s.length;i++) { if(s[i]==",") { GLOBAL.LEVELS[t]=(s.substring(n,i)/1); n=i+1; t++; } } } catch(e) {}; var last=null; for (var i=18;i>=0;i--) { var prg=GLOBAL.PROGRESS[i]; prg.prg_2.sprite.visible=(GLOBAL.LEVELS[i]>2); prg.prg_1.sprite.visible=(GLOBAL.LEVELS[i]>1); prg.prg_0.sprite.visible=(GLOBAL.LEVELS[i]>0); prg.prg_back.sprite.visible=(GLOBAL.LEVELS[i]>-1); prg.prg_close.sprite.visible=(GLOBAL.LEVELS[i]==-2); game.MAIN["btn_lev_"+i].enabled=(!prg.prg_close.sprite.visible); if ((last==null)&&(game.MAIN["btn_lev_"+i].enabled)) last=game.MAIN["btn_lev_"+i] } if (GLOBAL.WND_GAME.scle_btn.targ!=null) { GLOBAL.WND_GAME.scle_btn.targ.sprite.scale.x=1; GLOBAL.WND_GAME.scle_btn.targ.sprite.scale.y=1; } if (last.sprite.anchor.x!=0.5) { last.sprite.anchor.x=0.5; last.sprite.anchor.y=0.5; last.sprite.position.x+=0.5*last.uni_width; last.sprite.position.y+=0.5*last.uni_height; last.refresh(); } GLOBAL.WND_GAME.scle_btn.targ=last; } function init() { if (GLOB_M) { if (GLOB_ball==0) GLOB_M=false; } game.ACT.init(actions); order.push(game.MAIN); GLOBAL.D=game.BALLS.b_0.uni_width*0.95; GLOBAL.HS*=game.SCREEN_HEIGHT/1000; GLOBAL.VS*=game.SCREEN_HEIGHT/1000; GLOBAL.BS*=game.SCREEN_HEIGHT/1000; game.LANGUAGE="TXT"; game.init_captions(); GLOBAL.PATH_POINTS=game.SCREEN_HEIGHT*10; GLOBAL.WND_GAME = new AVK_WND_GAME(); game.GAME.back.sprite.interactive = true; if(isMobile.iOS()){ game.GAME.back.sprite.mousemove = game.GAME.back.sprite.touchmove = game.GAME.back.sprite.touch = function(data) { if (!GLOBAL.RUN) return; GLOBAL.X=data.global.x; event("move","GLOBAL","GLOBAL",data.global.x,data.global.y); } }else{ game.GAME.back.sprite.mousemove = function(data) { if (!GLOBAL.RUN) return; GLOBAL.X=data.global.x; event("move","GLOBAL","GLOBAL",data.global.x,data.global.y); } } if(isMobile.iOS()){ game.GAME.back.sprite.mouseout = game.GAME.back.sprite.mouseupoutside = game.GAME.back.sprite.mouseup = game.GAME.back.sprite.touchend = game.GAME.back.spritemouseupoutside = game.GAME.back.sprite.touchendoutside = function(data) { if (!GLOBAL.RUN) return; GLOBAL.X=data.global.x; event("finish","GLOBAL","GLOBAL",data.global.x,data.global.y); } }else{ game.GAME.back.sprite.mouseout = game.GAME.back.sprite.mouseupoutside = game.GAME.back.sprite.mouseup = game.GAME.back.spritemouseupoutside = function(data) { if (!GLOBAL.RUN) return; GLOBAL.X=data.global.x; event("finish","GLOBAL","GLOBAL",data.global.x,data.global.y); } } if(isMobile.iOS()){ game.GAME.back.sprite.mousedown = game.GAME.back.sprite.touchstart = function(data) { if (!GLOBAL.RUN) return; GLOBAL.X=data.global.x; event("start","GLOBAL","GLOBAL",data.global.x,data.global.y); } }else{ game.GAME.back.sprite.mousedown = function(data) { if (!GLOBAL.RUN) return; GLOBAL.X=data.global.x; event("start","GLOBAL","GLOBAL",data.global.x,data.global.y); } } for (var i=0;i<19;i++) { game.MAIN["btn_lev_"+i].sprite.anchor.x=0.5; game.MAIN["btn_lev_"+i].sprite.anchor.y=0.5; game.MAIN["btn_lev_"+i].sprite.position.x+=0.5*game.MAIN["btn_lev_"+i].uni_width; game.MAIN["btn_lev_"+i].sprite.position.y+=0.5*game.MAIN["btn_lev_"+i].uni_height; game.MAIN["btn_lev_"+i].refresh(); var prg=CONTAINER.get_object("MAIN","my_prg",game.MAIN["btn_lev_"+i]); if (i==0) { prg.sprite.position.x=game.MAIN.my_prg.sprite.position.x-0.5*game.MAIN["btn_lev_"+i].uni_width; prg.sprite.position.y=game.MAIN.my_prg.sprite.position.y-0.5*game.MAIN["btn_lev_"+i].uni_height; }else { prg.sprite.position.x=game.MAIN.my_prg.sprite.position.x; prg.sprite.position.y=game.MAIN.my_prg.sprite.position.y; } GLOBAL.PROGRESS.push(prg); } init_select(); if (GLOBAL.LEVELS[0]==-1) GLOBAL.TUTOR=0; else GLOBAL.TUTOR=1000000; for (i=0;i<10;i++) game.GAME["level_"+i].sprite.parent.removeChild(game.GAME["level_"+i].sprite); game.MAIN.levels.sprite.visible=false; game.GAME.uppper.sprite.anchor.x=0.5; game.GAME.up_b.sprite.position.x-=0.5*game.GAME.uppper.uni_width; game.GAME.ready_1.sprite.position.x-=0.5*game.GAME.uppper.uni_width; game.GAME.ready_0.sprite.position.x-=0.5*game.GAME.uppper.uni_width; game.GAME.ready_1.sprite.visible=false; game.GAME.ready_0.sprite.visible=false; game.GAME.wrays.sprite.visible=false; game.GAME.wrays.sprite.scale.x=8; game.GAME.wrays.sprite.scale.y=8; game.GAME.wrays.sprite.anchor.x=0.5; game.GAME.wrays.sprite.anchor.y=0.5; game.GAME.wrays.sprite.position.x+=game.GAME.wrays.uni_width/2; game.GAME.wrays.sprite.position.y+=game.GAME.wrays.uni_height/2; game.GAME.brays.sprite.visible=false; game.GAME.brays.sprite.scale.x=8; game.GAME.brays.sprite.scale.y=8; game.GAME.brays.sprite.anchor.x=0.5; game.GAME.brays.sprite.anchor.y=0.5; game.GAME.brays.sprite.position.x+=game.GAME.brays.uni_width/2; game.GAME.brays.sprite.position.y+=game.GAME.brays.uni_height/2; game.GAME.btn_snd.sprite.visible=false; game.MAIN.btn_snd.sprite.visible=false; game.GAME.btn_no_snd.sprite.visible=GLOB_M; game.MAIN.btn_no_snd.sprite.visible=GLOB_M; game.GAME.shadow.sprite.scale.x=25.2; game.GAME.shadow.sprite.scale.y=25.2; game.GAME.shadow.sprite.position.x=-10; game.GAME.shadow.sprite.position.y=-10; game.GAME.loose_wnd.sprite.visible=false; game.GAME.win_wnd.sprite.visible=false; game.GAME.shadow.sprite.visible=false; game.GAME.shadow.sprite.interactive = true; if(isMobile.iOS()){ game.GAME.shadow.sprite.mousemove = game.GAME.shadow.sprite.touchmove = game.GAME.shadow.sprite.touch = game.GAME.shadow.sprite.mouseout = game.GAME.shadow.sprite.mouseupoutside = game.GAME.shadow.sprite.mouseup = game.GAME.shadow.sprite.touchend = game.GAME.shadow.spritemouseupoutside = game.GAME.shadow.sprite.touchendoutside = game.GAME.shadow.sprite.mousedown = game.GAME.shadow.sprite.touchstart = function(data) { if (data.originalEvent!=null) { data.originalEvent.stopPropagation(); data.originalEvent.preventDefault(); } } }else{ game.GAME.shadow.sprite.mousemove = game.GAME.shadow.sprite.mouseout = game.GAME.shadow.sprite.mouseupoutside = game.GAME.shadow.sprite.mouseup = game.GAME.shadow.spritemouseupoutside = game.GAME.shadow.sprite.mousedown= function(data) { if (data.originalEvent!=null) { data.originalEvent.stopPropagation(); data.originalEvent.preventDefault(); } } } game.GAME.loose_wnd.y=game.GAME.loose_wnd.sprite.position.y; game.GAME.win_wnd.y=game.GAME.win_wnd.sprite.position.y; game.GAME.txt_score.set_style(0.5,"AVK_FNT_main","right"); game.GAME.txt_score_part.sprite.visible=false; game.GAME.zvezda_part.sprite.visible=false; game.GAME.star_0.sprite.anchor.x=0.5; game.GAME.star_0.sprite.anchor.y=0.5; game.GAME.star_0.sprite.position.x+=game.GAME.star_0.uni_width*0.5; game.GAME.star_0.sprite.position.y+=game.GAME.star_0.uni_height*0.5; game.GAME.star_1.sprite.anchor.x=0.5; game.GAME.star_1.sprite.anchor.y=0.5; game.GAME.star_1.sprite.position.x+=game.GAME.star_1.uni_width*0.5; game.GAME.star_1.sprite.position.y+=game.GAME.star_1.uni_height*0.5; game.GAME.star_2.sprite.anchor.x=0.5; game.GAME.star_2.sprite.anchor.y=0.5; game.GAME.star_2.sprite.position.x+=game.GAME.star_2.uni_width*0.5; game.GAME.star_2.sprite.position.y+=game.GAME.star_2.uni_height*0.5; game.GAME.riska_0.sprite.anchor.x=0.5; game.GAME.riska_0.sprite.anchor.y=0.5; game.GAME.riska_0.sprite.position.x+=game.GAME.riska_0.uni_width*0.5; game.GAME.riska_0.sprite.position.y+=game.GAME.riska_0.uni_height*0.5; game.GAME.riska_1.sprite.anchor.x=0.5; game.GAME.riska_1.sprite.anchor.y=0.5; game.GAME.riska_1.sprite.position.x+=game.GAME.riska_1.uni_width*0.5; game.GAME.riska_1.sprite.position.y+=game.GAME.riska_1.uni_height*0.5; for (i=0;i<10;i++) { game.GAME["head_"+i].sprite.parent.removeChild(game.GAME["head_"+i].sprite); game.GAME["up_"+i].sprite.parent.removeChild(game.GAME["up_"+i].sprite); game.GAME["res_"+i].sprite.parent.removeChild(game.GAME["res_"+i].sprite); } GLOBAL.UP_SPR = new PIXI.DisplayObjectContainer(); GLOBAL.HEAD_SPR = new PIXI.DisplayObjectContainer(); game.GAME.sprite.addChildAt(GLOBAL.UP_SPR,3); game.GAME.sprite.addChildAt(GLOBAL.HEAD_SPR,6); for (var level=0;level<10;level++) { game.GAME["up_"+level].sprite.position.x-=game.GAME["up_"+level].uni_width*0.25/2; game.GAME["up_"+level].sprite.position.y-=game.GAME["up_"+level].uni_height*0.25/2; game.GAME["up_"+level].sprite.scale.x=1.25; game.GAME["up_"+level].sprite.scale.y=1.25; game.GAME["res_"+level].sprite.position.x-=game.GAME["res_"+level].uni_width*0.25/2; game.GAME["res_"+level].sprite.position.y-=game.GAME["res_"+level].uni_height*0.25/2; game.GAME["res_"+level].sprite.scale.x=1.25; game.GAME["res_"+level].sprite.scale.y=1.25; } var tmp=game.GAME.btn_refresh_win.make_copy(); tmp.sprite.position.x=0; tmp.sprite.position.y=0; tmp.refresh(); game.GAME.pbtn_refresh.add(tmp); tmp=game.GAME.btn_menu_win.make_copy() tmp.sprite.position.x=0; tmp.sprite.position.y=0; tmp.refresh(); game.GAME.pbtn_menu.add(tmp); //tmp=game.GAME.btn_more.make_copy() //tmp.sprite.position.x=0; //tmp.sprite.position.y=0; //tmp.refresh(); //game.GAME.pbtn_more.add(tmp); CONTAINER.free(CONTAINER.get_object("MAIN","cloud",game.MAIN.zag)); function AVK_HIDE() { function AVK_BTNS() { var my_here=this; var first=true; this.set_property = function (newVal) { if (newVal<0.2) { newVal=newVal/0.2; game.MAIN.btn_start.sprite.scale.x=1.2-0.2*newVal; game.MAIN.btn_start.sprite.scale.y=1.2-0.2*newVal; game.MAIN.btn_start.sprite.alpha=newVal; game.MAIN.up_back.sprite.scale.x=1.2-0.2*newVal; game.MAIN.up_back.sprite.scale.y=1.2-0.2*newVal; game.MAIN.up_back.sprite.alpha=newVal; }else { if (first) { first=false; for (var i=0;i<4;i++) { var c=CONTAINER.get_object("MAIN","cloud",game.MAIN.zag); c.sprite.scale.x=0.5+Math.random()*4; c.sprite.scale.y=c.sprite.scale.x; c.sprite.alpha=c.sprite.scale.x/4.5; c.sprite.position.x=game.SCREEN_WIDTH*Math.random()-c.uni_width*c.sprite.scale.y/2; c.sprite.position.y=game.SCREEN_HEIGHT*Math.random()/2-c.uni_height*c.sprite.scale.y/2; GLOBAL.CLOUDS.push(c) } } newVal=1-(Math.sin(Math.PI*(newVal-0.2)/0.8*6)*0.03)*(1-(newVal-0.2)/0.8); game.MAIN.sprite.position.x=-game.SCREEN_WIDTH*(newVal-1)/2; game.MAIN.sprite.position.y=-game.SCREEN_HEIGHT*(newVal-1)/2; game.MAIN.sprite.scale.x=newVal; game.MAIN.sprite.scale.y=newVal; } } function finish() { game.GUI_BUSY=false; } this.start = function() { if (is_snd()) GLOB_light_on.play(); game.MAIN.btn_start.sprite.anchor.x=0.5; game.MAIN.btn_start.sprite.anchor.y=0.5; game.MAIN.btn_start.sprite.position.x+=game.MAIN.btn_start.uni_width/2; game.MAIN.btn_start.sprite.position.y+=game.MAIN.btn_start.uni_height/2; game.MAIN.btn_start.sprite.scale.x=1.2; game.MAIN.btn_start.sprite.scale.y=1.2; game.MAIN.btn_start.sprite.alpha=0; game.MAIN.btn_start.sprite.visible=true; game.MAIN.btn_start.refresh(); game.MAIN.up_back.sprite.anchor.x=0.5; game.MAIN.up_back.sprite.anchor.y=0.5; game.MAIN.up_back.sprite.position.x+=game.MAIN.up_back.uni_width/2; game.MAIN.up_back.sprite.position.y+=game.MAIN.up_back.uni_height/2; game.MAIN.up_back.sprite.scale.x=1.2; game.MAIN.up_back.sprite.scale.y=1.2; game.MAIN.up_back.sprite.alpha=0; game.MAIN.up_back.sprite.visible=true; game.ACT.start("show",my_here,finish); } } var here=this; var btns=new AVK_BTNS(); this.up=null; this.down=null; this.set_property = function (newVal) { if (newVal<0.2) newVal=-Math.sin(Math.PI*newVal*5)/10; else newVal=(newVal-0.2)/0.8; here.up.position.y=here.up.sy+(-here.up.height-here.up.sy)*newVal; here.down.position.y=here.down.sy+40*newVal; } function finish_up() { btns.start(); } function finish() { game.MAIN.sprite.visible = true; while(game.UP_SPR.children.length>0) { var ch=game.UP_SPR.children[0]; game.UP_SPR.removeChild(ch); } game.MAIN.sprite.position.y=game.SCREEN_HEIGHT; game.MAIN.btn_start.sprite.visible=false; game.MAIN.up_back.sprite.visible=false; game.ACT.start("from_up",game.MAIN,finish_up); } this.start = function() { here.up=game.UP_SPR.children[1]; here.down=game.UP_SPR.children[0]; here.up.sy=here.up.position.y; here.down.sy=here.down.position.y; game.ACT.start("hide",here,finish); } } game.GUI_BUSY=true; var hide=new AVK_HIDE(); hide.start(); } function get_l(dx,dy) { var l=Math.sqrt(dx*dx+dy*dy); if (l==0) l=0.001; return l; } function angle(dx,dy) { var l=get_l(dx,dy); var a = Math.acos(dx/l); if (dy<0) a = 2 * Math.PI - a; return a; } function update(tk) { if (tk>200) tk=200; game.GAME.win_wnd.sprite.rotation=0; game.GAME.loose_wnd.sprite.rotation=0; for (var i=0;i<to_update.length;i++) { to_update[i](tk); } for (i=0;i<GLOBAL.CLOUDS.length;i++) { var cl=GLOBAL.CLOUDS[i]; cl.sprite.position.x-=cl.sprite.scale.x*tk/200; if (cl.sprite.position.x<-cl.uni_width*cl.sprite.scale.x) cl.sprite.position.x=game.SCREEN_WIDTH; } } function add_to_update(f) { to_update.push(f); } function event(act,wnd,el,id,tag) { if ((game.GUI_BUSY)&&(el!="btn_m0")&&(el!="btn_m1")&&(el!="btn_m2")) return; if (act=="click") { if (el=="btn_more") //Play68.goHome(); if (is_snd()) GLOB_click.play(); //game.deb(act+";"+wnd+";"+el+";"+id+";"+tag); switch (wnd) { case "MAIN": if (el.substring(0,8)=="btn_lev_") { GLOBAL.WND_GAME.show(el.substring(8,el.length)/1); if (is_snd()) { GLOB_in_menu.stop(); GLOB_in_game.play("none",0,0,-1); } } switch (el) { case "btn_snd": case "btn_no_snd": change_snd(); break; case "btn_start": GLOBAL.WND_GAME.show_level(); break; case "btn_back": GLOBAL.WND_GAME.hide_level(); break; } break; case "GAME": switch (el) { case "btn_snd": case "btn_no_snd": change_snd(); break; case "btn_close": GLOBAL.WND_GAME.pause(); break; case "btn_menu": case "btn_menu_win": if (is_snd()) { GLOB_heart.stop(); GLOB_in_game.stop(); GLOB_in_menu.play("none",0,0,-1); } GLOBAL.WND_GAME.close(); GLOBAL.PAUSE=false; break; case "btn_refresh": GLOBAL.STAT[GLOBAL.WND_GAME.level_num].loose_refresh++; save_stat(); case "btn_refresh_win": GLOBAL.WND_GAME.pre_show(); GLOBAL.WND_GAME.on_show(); if (is_snd()) GLOB_in_game.play("none",0,0,-1); break; case "btn_next": GLOBAL.STAT[GLOBAL.WND_GAME.level_num].win_next++; save_stat(); if (!GLOBAL.PAUSE) { if (GLOBAL.WND_GAME.level_num<18) GLOBAL.WND_GAME.level_num++; else { GLOBAL.WND_GAME.close(); return; } GLOBAL.WND_GAME.pre_show(); GLOBAL.WND_GAME.on_show(); if (is_snd()) GLOB_in_game.play("none",0,0,-1); }else { GLOBAL.PAUSE=false; GLOBAL.RUN=true; game.GAME.win_wnd.sprite.visible=false; game.GAME.shadow.sprite.visible=false; } break; } break; } }else if (act=="start") GLOBAL.WND_GAME.start(); } function AVK_WND_BULLET(b) { var here=this; var all_balls=b; var ball=null; var up_ball=null; var x=0; var y=game.GAME.start_place.sprite.position.y+game.GAME.start_place.uni_height/2; var target_x=-1; var speed=0; var ready=0; this.color=0; this.up_color=0; game.GAME.bullet_place.add(game.LIGHT.react.reaction); game.LIGHT.react.reaction.sprite.position.y=y/3; game.LIGHT.react.reaction.sprite.scale.y=game.SCREEN_HEIGHT*1.2/game.LIGHT.react.reaction.uni_height; game.LIGHT.react.reaction.sprite.scale.x=game.LIGHT.react.reaction.sprite.scale.y/2; game.LIGHT.react.reaction.sprite.anchor.x=0.45; game.LIGHT.react.reaction.sprite.visible=false; game.GAME.bullet_place.add(game.BALLS.l); game.BALLS.l.sprite.anchor.x=0.5; game.BALLS.l.sprite.anchor.y=0.5; game.BALLS.l.sprite.visible=false; function AVK_LIGHT() { var t=this; this.set_property = function (newVal) { game.LIGHT.react.reaction.sprite.alpha=Math.sin(newVal*Math.PI); } this.finish_scale=function () { game.LIGHT.react.reaction.sprite.visible=false; here.clear_ready(); } this.start = function() { game.LIGHT.react.reaction.sprite.visible=true; game.LIGHT.react.reaction.sprite.alpha=0; game.ACT.start("light",t,t.finish_scale); GLOBAL.BALLS.try_light(game.LIGHT.react.reaction.sprite.position.x); } } var light=new AVK_LIGHT(); this.add_ready=function() { if (ready==2) { if ((is_snd())&&(!game.BALLS.l.sprite.visible)) GLOB_light_on.play(); game.BALLS.l.sprite.visible=true; if ((ball!=null)&&(speed==0)) { ball.sprite.visible=false; } return; } game.GAME["ready_"+ready].sprite.visible=true; ready++; } this.clear_ready=function() { ready=0; game.GAME.ready_0.sprite.visible=false; game.GAME.ready_1.sprite.visible=false; game.BALLS.l.sprite.visible=false; if (ball!=null) ball.sprite.visible=true; } this.born=function() { var f=false; for (var i=0;i<GLOBAL.COLORS.length;i++) if (GLOBAL.COLORS[i]) f=true; if (f) here.reset_color(); else here.set_color(); } this.reset_color=function() { here.color=here.up_color; here.up_color=Math.floor(Math.random()*7); while (!GLOBAL.COLORS[here.up_color]) here.up_color=Math.floor(Math.random()*7); while (!GLOBAL.COLORS[here.color]) here.color=Math.floor(Math.random()*7); here.set_color(); } this.clear=function() { if (ball!=null) CONTAINER.free(ball); ball=null; } this.set_color=function() { if (GLOBAL.TUTOR==0) { here.color=1; here.up_color=0; } if (ball!=null) CONTAINER.free(ball); if (up_ball!=null) CONTAINER.free(up_ball); ball=CONTAINER.get_object("BALLS","b_"+here.color,game.GAME.bullet_place); ball.time=Math.PI*ball.uni_width; ball.sprite.anchor.x=0.5; ball.sprite.anchor.y=0.5; ball.sprite.scale.x=1; ball.sprite.scale.y=1; ball.sprite.alpha=1; ball.sprite.position.x=x; ball.sprite.position.y=y; ball.sprite.rotation=Math.PI/2; ball.color=here.color; ball.sprite.visible=!game.BALLS.l.sprite.visible; up_ball=CONTAINER.get_object("BALLS","b_"+here.up_color,game.GAME.up_b); up_ball.time=Math.PI*up_ball.uni_width; up_ball.sprite.anchor.x=0.5; up_ball.sprite.anchor.y=0.5; up_ball.sprite.alpha=1; up_ball.sprite.position.x=game.GAME.up_b.uni_width/2; up_ball.sprite.position.y=game.GAME.up_b.uni_height/2; up_ball.sprite.scale.x=0.3; up_ball.sprite.scale.y=0.3; up_ball.sprite.rotation=Math.PI/2; up_ball.color=here.up_color; } this.start=function() { if (GLOBAL.TUTOR==1) { if ((GLOBAL.X>GLOBAL.D+game.GAME.hand_center.sprite.position.x)||(GLOBAL.X<game.GAME.hand_center.sprite.position.x-GLOBAL.D)) return; GLOBAL.WND_GAME.TUTOR.stop(); GLOBAL.X=game.GAME.hand_center.sprite.position.x-GLOBAL.D*2/3; GLOBAL.TUTOR++; } if (GLOBAL.TUTOR==3) { if ((GLOBAL.X>GLOBAL.D+game.GAME.hand_center.sprite.position.x)||(GLOBAL.X<game.GAME.hand_center.sprite.position.x-GLOBAL.D)) return; GLOBAL.WND_GAME.TUTOR.stop(); GLOBAL.X=game.GAME.hand_center.sprite.position.x-GLOBAL.D*2/3; GLOBAL.TUTOR=1000000; } if ((speed==0)&&(target_x<0)) { target_x=GLOBAL.X; } } this.update=function(tk) { game.GAME.uppper.sprite.position.x=GLOBAL.X; game.BALLS.l.sprite.position.y=y; game.BALLS.l.sprite.position.x=game.GAME.uppper.sprite.position.x; game.LIGHT.react.reaction.sprite.position.x=game.GAME.uppper.sprite.position.x; //game.BALLS.l.sprite.rotation+=tk/300; game.BALLS.l.update(tk*2); game.LIGHT.react.reaction.update(tk*7); game.LIGHT.react.reaction.sprite.rotation=0; //game.deb(GLOBAL.X); if (ball==null) return; ball.update(tk/15); //ball.sprite.rotation+=Math.PI*tk/1000; up_ball.update(-tk/5); //up_ball.sprite.rotation-=Math.PI*tk/1000; var f=false; for (var i=0;i<GLOBAL.COLORS.length;i++) if (GLOBAL.COLORS[i]) f=true; if (target_x>=0) { if (Math.abs(target_x-x)<GLOBAL.HS*tk) { x=target_x; target_x=-1; if (game.BALLS.l.sprite.visible) { if (!game.LIGHT.react.reaction.sprite.visible) { light.start(); if (is_snd()) GLOB_light.play(); } }else { speed=GLOBAL.VS; if (is_snd()) GLOB_ball.play(); } }else { x+=(target_x-x)/Math.abs(target_x-x)*GLOBAL.HS*tk; } game.GAME.uppper.sprite.position.x=x; game.BALLS.l.sprite.position.x=game.GAME.uppper.sprite.position.x; game.LIGHT.react.reaction.sprite.position.x=game.GAME.uppper.sprite.position.x; }else if (speed==0) { x=GLOBAL.X; ball.sprite.position.y=y; }else { if (all_balls.verify_bullet(ball,ball.sprite.position.x,ball.sprite.position.x,ball.sprite.position.y,ball.sprite.position.y+tk*speed)) { x=GLOBAL.X; speed=0; ball=null; return; }else { ball.sprite.position.y+=tk*speed; if (ball.sprite.position.y>game.SCREEN_HEIGHT+ball.uni_height) { x=GLOBAL.X; speed=0; if (f) here.reset_color(); else here.set_color(); } } } ball.sprite.position.x=x; if ((!GLOBAL.COLORS[this.color])&&(f)) here.reset_color(); } } function AVK_WND_CHAIN(bl) { var here=this; this.color=0; this.next=null; this.prev=null; this.shad=null; this.ball=null; this.active=false; this.progress=0; this.p_progress=0; this.beg_time=0; this.end_time=0; this.speed=GLOBAL.BS; this.prev_child=null; this.next_child=null; this.need_verify=false; this.a=0; this.delta=0; this.chained=true; this.none=false; var back_speed=0; var on_event=null; var max_prog=0; var all_balls=bl; this.set_max_prog=function(s,o) { max_prog=s; on_event=o; if (here.next!=null) here.next.set_max_prog(s,o); } this.get_max_prog=function() { return max_prog; } this.get_max_on=function() { return on_event; } this.set_speed=function(s) { back_speed=s; } this.get_back_speed=function(s) { return back_speed; } function add_to_killed() { for (var i=0;i<GLOBAL.KILLED.length;i++) if (GLOBAL.KILLED[i]==null) { GLOBAL.KILLED[i]=here.ball; GLOBAL.KILLED[i].time=250; GLOBAL.KILLED[i].start_time=250; here.ball=null; return; } GLOBAL.KILLED.push(here.ball); GLOBAL.KILLED[i].time=150; GLOBAL.KILLED[i].start_time=150; here.ball=null; } this.kill=function(init) { if (here.ball!=null) { if (!init) { all_balls.born_oskolki(here.ball.sprite.position.x,here.ball.sprite.position.y,here.color); add_to_killed(); }else { CONTAINER.free(here.ball); here.ball=null; } } if (here.shad!=null) { CONTAINER.free(here.shad); here.shad=null; } if (here.prev_child!=null) { CONTAINER.free(here.prev_child); GLOBAL.BULLET.born_after=true; } if (here.next_child!=null) { CONTAINER.free(here.next_child); GLOBAL.BULLET.born_after=true; } if (here.prev!=null) { here.prev.next=here.next; } if (here.next!=null) { here.next.prev=here.prev; } if ((here.prev==null)&&(!init)) all_balls.change_first(here,here.next); here.active=false; here.next=null; here.prev=null; } this.born=function(color,prev,x,y,p,max_p,on_max) { here.beg_time=0; here.end_time=0; if (!game.TOO_SLOW) { here.shad=CONTAINER.get_object("BALLS","shadow",game.GAME.place_shad); here.shad.sprite.scale.x=1; here.shad.sprite.scale.y=1; here.shad.sprite.anchor.x=0.5; here.shad.sprite.anchor.y=0.5; here.shad.sprite.position.x=x-GLOBAL.D*0.1; here.shad.sprite.position.y=y+GLOBAL.D*0.1; } here.ball=CONTAINER.get_object("BALLS","b_"+color,game.GAME.place); here.ball.time=Math.PI*here.ball.uni_width; here.ball.sprite.alpha=1; here.ball.sprite.scale.x=1; here.ball.sprite.scale.y=1; here.ball.sprite.anchor.x=0.5; here.ball.sprite.anchor.y=0.5; here.ball.sprite.position.x=x; here.ball.sprite.position.y=y; here.color=color; here.progress=p; here.prev=prev; here.next=null; here.need_verify=false; here.a=0; here.delta=0; back_speed=0; here.chained=true; here.none=false; here.prev_child=null; here.next_child=null; here.active=true; max_prog=max_p; on_event=on_max; return here; } this.step=function(tk) { var tmp=here; while ((tmp.next!=null)&&(tmp.chained)) tmp=tmp.next; var mul=tmp.progress/GLOBAL.LENGTH; while (tmp.next!=null) tmp=tmp.next; if (GLOBAL.MAX_PROG<tmp.progress) GLOBAL.MAX_PROG=tmp.progress; mul=(mul+tmp.progress/GLOBAL.LENGTH)/2; if (mul<=0) mul+=0.001; if (mul>=1) mul=1; if (mul<0.4) { mul=2+(1-2)*mul/0.4;//Math.sqrt(1/mul)+50*(1-mul)*(1-mul)*(1-mul)*(1-mul); mul*=mul*mul*mul*mul; }else if (mul>0.7) mul=1+(0.1-1)*(mul-0.7)/0.3; else mul=1; mul*=GLOBAL.MUL; here.press(here.progress+here.speed*tk*mul,tk); } this.on_max=function() { if (max_prog==1000000) return; max_prog=1000000; if (here.next!=null) here.next.on_max(); if (here.prev!=null) here.prev.on_max(); else if (on_event!=null) { if (here.active) on_event(); on_event=null; } } this.press=function(previos_progress,tk) { if (!here.active) return; var child=null; var just_chained=false; if (here.next_child!=null) child=here.next_child; if (here.prev_child!=null) child=here.prev_child; if (child!=null) { child.end_time-=tk; if (child.end_time<0) child.end_time=0; child.progress=(child.beg_time-child.end_time)/child.beg_time; var l=Math.abs(Math.cos(child.angle))*GLOBAL.D*2-GLOBAL.D; if (l<0) l=0; if (child.progress>=1) { child.end_time=0; child.beg_time=0; child.progress=1; var tmp=null; var inserted=null; if (here.next_child!=null) { here.next_child=null; tmp=here.next; here.next=all_balls.get_chain().born(child.color,here,child.sprite.position.x,child.sprite.position.y,here.progress+GLOBAL.D,max_prog,on_event); inserted=here.next; here.next.next=tmp; if (tmp!=null) tmp.prev=here.next; }else { here.prev_child=null; tmp=here.prev; here.prev=all_balls.get_chain().born(child.color,tmp,child.sprite.position.x,child.sprite.position.y,here.progress-GLOBAL.D,max_prog,on_event); inserted=here.prev; inserted.chained=here.chained; just_chained=true; here.prev.next=here; if (tmp!=null) { tmp.next=here.prev; previos_progress+=l; }else all_balls.change_first(here,here.prev); } GLOBAL.BULLET.born_after=true; CONTAINER.free(child); inserted.ball.sprite.rotation=child.sprite.rotation; inserted.none=true; if (all_balls.try_match(inserted)) return; if ((inserted.next!=null)&&(!inserted.next.chained)&&(inserted.next.color==inserted.color)) { inserted.next.a=GLOBAL.BACK_A; inserted.next.need_verify=true; inserted.need_verify=true; }else if ((!inserted.chained)&&(inserted.prev!=null)&&(inserted.prev.color==inserted.color)) { inserted.a=GLOBAL.BACK_A; inserted.prev.need_verify=true; inserted.need_verify=true; } }else { child.angle=child.start_angle+(child.finish_angle-child.start_angle)*child.progress; } } if ((here.prev_child!=null)&&(l>0)&&(here.prev!=null)) previos_progress+=l; if (here.a>0) { back_speed+=here.a*tk; here.progress-=back_speed*tk; here.delta=-back_speed*tk; }else if (here.a<0) { back_speed+=here.a*tk; here.progress-=back_speed*tk; if (here.chained) previos_progress=here.progress; here.delta=-back_speed*tk; } here.ball.update(here.progress-here.pprogress); here.pprogress=here.progress; if (here.a<0) { back_speed+=here.a*tk; if (back_speed<=0) { here.a=0; back_speed=0; } } if (here.progress<previos_progress) { if (here.a!=0) { tmp=here.prev; if (tmp!=null) { while ((tmp.prev!=null)&&(tmp.chained)) tmp=tmp.prev; tmp.set_speed(back_speed); tmp.a=-1.2*GLOBAL.BACK_A; if (is_snd()) GLOB_knock.play(); } } here.a=0; back_speed=0; here.chained=true; if ((here.prev!=null)&&(here.prev.need_verify)&&(here.need_verify)) { here.need_verify=false; here.prev.need_verify=false; if (all_balls.try_match(here)) { here.progress=previos_progress; return; } } } if (here.chained) { here.delta=previos_progress-here.progress; here.progress=previos_progress; }else if (just_chained) here.chained=true; if (here.next!=null) { if ((here.next_child!=null)&&(l>0)) here.next.press(here.progress+GLOBAL.D+l,tk); else here.next.press(here.progress+GLOBAL.D,tk); } if ((here.prev==null)&&(here.progress>=max_prog)&&(here.active)) { here.on_max(); } } } function AVK_WND_BALLS(w,p) { var here=this; var waves_cnt=0; var wave_len=0; var colors_cnt=0; var progress_trigger=0; var rnd_min=0; var rnd_mul=0; var stack=[]; var chains=[]; var scores=[]; var to_kill=[]; var random_cnt=0; var random_color=0; var start_x=0; var start_y=0; var path=p; var way=w; var chain_cnt=0 var tutor_colors=[3,3,0,0,3,2,2,0,0,1,1,0,2]; this.export_chains=chains; function AVK_COLLISION() { this.active=false; this.blt=null; this.trg=null; this.x=0; this.y=0; this.p=0; } var collision_result=new AVK_COLLISION(); /*game.GAME.b_0.sprite.visible=false; game.GAME.b_1.sprite.visible=false; game.GAME.b_2.sprite.visible=false; game.GAME.b_3.sprite.visible=false; game.GAME.b_4.sprite.visible=false; game.GAME.b_5.sprite.visible=false; game.GAME.b_6.sprite.visible=false;*/ function random_init() { random_cnt=Math.floor(rnd_min+Math.random()*rnd_mul); random_color=Math.floor(Math.random()*colors_cnt); } function get_color() { if (GLOBAL.TUTOR==0) { chain_cnt++; return tutor_colors[chain_cnt-1]; } random_cnt--; if (random_cnt<0) { random_init(); random_cnt--; } return random_color; } function get_chain() { for (var i=0;i<stack.length;i++) if (!stack[i].active) break; if (i==stack.length) stack.push(new AVK_WND_CHAIN(here)); return stack[i]; } this.get_chain=get_chain; function get_first() { chain_cnt=0; var f=get_chain().born(get_color(),null,start_x,start_y,-GLOBAL.D*(wave_len-1),progress_trigger,born); for (var i=0;i<chains.length;i++) if (chains[i]==null) { chains[i]=f; return f; } chains.push(f); return f; } function update_waves() { for (var i=0;i<24;i++) { game.GAME["waves_"+i].sprite.visible=i<waves_cnt; } } function born() { waves_cnt--; update_waves(); if (waves_cnt>=0) { var first=get_first(); for (var i=1;i<wave_len;i++) { first.next=get_chain().born(get_color(),first,start_x,start_y,-GLOBAL.D*(wave_len-i-1),progress_trigger,born); first=first.next; } } } this.try_match=function(b) { var first=b; while ((first.chained)&&(first.prev!=null)&&(first.prev.color==b.color)) first=first.prev; var cnt=1; var x=first.ball.sprite.position.x; var y=first.ball.sprite.position.y; while ((first.next!=null)&&(first.next.chained)&&(first.next.color==b.color)) { first=first.next; x+=first.ball.sprite.position.x; y+=first.ball.sprite.position.y; cnt++; } if (cnt>2) { if (is_snd()) GLOB_match.play(); GLOBAL.BALLS.add_score(cnt,x/cnt,y/cnt); if (GLOBAL.LEVEL_MUL>1) GLOBAL.BULLET.add_ready(); while ((b.next!=null)&&(b.next.chained)&&(b.next.color==b.color)) b.next.kill(false); while ((b.chained)&&(b.prev!=null)&&(b.prev.color==b.color)) b.prev.kill(false); if (b.next!=null) { b.next.chained=false; if ((b.prev!=null)&&(b.next.color==b.prev.color)) { GLOBAL.LEVEL_MUL++; b.next.a=GLOBAL.BACK_A; b.next.need_verify=true; b.prev.need_verify=true; }else GLOBAL.LEVEL_MUL=1; }else GLOBAL.LEVEL_MUL=1; b.kill(false); return true; } GLOBAL.LEVEL_MUL=1; return false; } this.try_light=function(x) { GLOBAL.LEVEL_MUL=1; for (var i=0;i<to_kill.length;i++) to_kill[i]=null; function ver_now(b) { if ((b.ball.sprite.position.x>x-2*b.ball.uni_width)&&(b.ball.sprite.position.x<x+2*b.ball.uni_width)) { GLOBAL.BALLS.add_score(1,b.ball.sprite.position.x,b.ball.sprite.position.y); for (var i=0;i<to_kill.length;i++) if(to_kill[i]==null) { to_kill[i]=b; break; } if (i==to_kill.length) to_kill.push(b); } } for (i=0;i<chains.length;i++) { var b=chains[i]; if (b!=null) { ver_now(b); while (b.next!=null) { b=b.next; ver_now(b); } } } for (i=0;i<to_kill.length;i++) { b=to_kill[i]; if (b!=null) { if (b.next!=null) { b.next.chained=false; if (b.prev!=null) { if (b.next.color==b.prev.color) { b.next.a=GLOBAL.BACK_A; b.next.need_verify=true; b.prev.need_verify=true; }else { b.next.a=0; b.next.need_verify=false; b.prev.need_verify=false; } } } b.kill(false); } } } this.change_first=function(first,new_first) { for (var i=0;i<chains.length;i++) if (chains[i]==first) { chains[i]=new_first; } if (new_first==null) first.on_max(); var f=true; while(f) { f=false; for (i=1;i<chains.length;i++) { if ((chains[i-1]==null)&&(chains[i]!=null)) { f=true; chains[i-1]=chains[i]; chains[i]=null; } } } } this.clear_scores=function() { for (var i=0;i<scores.length;i++) if (scores[i]!=null) { CONTAINER.free(scores[i]); scores[i]=null; } } this.init=function(waves,len,colors,progress,r_min,r_mul,x,y) { waves_cnt=waves; wave_len=len; colors_cnt=colors; progress_trigger=progress; rnd_min=r_min; rnd_mul=r_mul; start_x=x; start_y=y; for (var i=0;i<stack.length;i++) stack[i].kill(true); for (i=0;i<chains.length;i++) chains[i]=null; here.clear_scores(); random_init(); } this.start=born; function step(c) { var ball=c.ball; var progress=Math.floor(c.progress); if (way.length<=progress) progress=way.length; if (0>progress) progress=0; if ((way.length>progress)&&(progress>=0)) { var id_0=way[progress].path_id; var id_1=way[progress].index; var e=way[progress].enabled; var x=path[id_0].x[id_1]; var y=path[id_0].y[id_1]; var dx=x-ball.sprite.position.x; var dy=y-ball.sprite.position.y; var a=0; ball.enabled=e; if (ball.enabled) { if (c.shad!=null) game.GAME.place_shad.sprite.addChild(c.shad.sprite); game.GAME.place.sprite.addChild(ball.sprite); if (c.next_child!=null) { game.GAME.place.sprite.addChild(c.next_child.sprite); }else if (c.prev_child!=null) { game.GAME.place.sprite.addChild(c.prev_child.sprite); } }else { if (c.shad!=null) game.GAME.back_place_shad.sprite.addChild(c.shad.sprite); game.GAME.back_place.sprite.addChild(ball.sprite); if (c.next_child!=null) { game.GAME.back_place.sprite.addChild(c.next_child.sprite); }else if (c.prev_child!=null) { game.GAME.back_place.sprite.addChild(c.prev_child.sprite); } } if ((dx!=0)||(dy!=0)) { if (c.delta>0) a=angle(dx,dy); else a=angle(-dx,-dy); ball.sprite.position.x=x; ball.sprite.position.y=y; if (c.shad!=null) { c.shad.sprite.position.x=x-GLOBAL.D*0.1; c.shad.sprite.position.y=y+GLOBAL.D*0.1; } if (!c.none) ball.sprite.rotation=a; else c.none=false; } var child=null; var a=0; if (c.next_child!=null) { child=c.next_child; } if (c.prev_child!=null) { child=c.prev_child; } if (child!=null) { child.angle=child.start_angle+(child.finish_angle-child.start_angle)*child.progress; child.sprite.rotation=ball.sprite.rotation-child.angle; child.sprite.position.x=ball.sprite.position.x+Math.cos(child.sprite.rotation)*GLOBAL.D; child.sprite.position.y=ball.sprite.position.y+Math.sin(child.sprite.rotation)*GLOBAL.D; if (c.prev_child!=null) { child.sprite.rotation+=Math.PI; if ((c.prev!=null)&&(c.chained)) { a=c.prev.ball.sprite.rotation-ball.sprite.rotation; if (a>Math.PI) a=-2*Math.PI+a; if (a<-Math.PI) a=2*Math.PI+a; a/=2; child.sprite.rotation+=a*child.progress; } }else { if ((c.next!=null)&&(c.next.chained)) { a=c.next.ball.sprite.rotation-ball.sprite.rotation; if (a>Math.PI) a=-2*Math.PI+a; if (a<-Math.PI) a=2*Math.PI+a; a/=2; child.sprite.rotation+=a*child.progress; } } } } } this.born_oskolki=function(x,y,color) { var num=Math.floor(Math.random()*2)+2; for(var n=0;n<num;n++) { var a=null; for (var i=0;i<GLOBAL.OSKOLKI.length;i++) if (GLOBAL.OSKOLKI[i]==null) { a=CONTAINER.get_object("BALLS","star_"+color,game.GAME.bullet_place); GLOBAL.OSKOLKI[i]=a; break; } if (a==null) { a=CONTAINER.get_object("BALLS","star_"+color,game.GAME.bullet_place); GLOBAL.OSKOLKI.push(a); } a.sprite.alpha=1; a.sprite.anchor.x=0.5; a.sprite.anchor.y=0.5; a.sprite.scale.x=0.5+Math.random()*0.3; a.sprite.scale.y=a.sprite.scale.x; a.scale=a.sprite.scale.x; a.alpha=0.5+Math.random()*0.5; a.sprite.position.x=x; a.sprite.position.y=y; a.ang=Math.random()*Math.PI*2; a.r=GLOBAL.D/4+Math.random()*GLOBAL.D/2; a.rad=GLOBAL.D/2; a.speedx=Math.cos(a.ang); a.speedy=Math.sin(a.ang); a.tx=game.GAME.txt_score.sprite.position.x+game.GAME.txt_score.uni_width/2; a.ty=game.GAME.txt_score.sprite.position.y+game.GAME.txt_score.uni_height/2; a.sx=x+GLOBAL.D*8-Math.random()*GLOBAL.D*16; a.sy=y+GLOBAL.D*8-Math.random()*GLOBAL.D*4; a.time=1+5*(Math.sqrt((x-a.sx)*(x-a.sx)+(y-a.sy)*(y-a.sy))+Math.sqrt((a.sx-a.tx)*(a.sx-a.tx)+(a.sy-a.ty)*(a.sy-a.ty)))/2; a.start_time=a.time; a.ax=a.speedx/500; a.ay=a.speedy/500; a.sprite.position.x=x+a.rad*a.speedx; a.sprite.position.y=y+a.rad*a.speedy; a.x=a.sprite.position.x; a.y=a.sprite.position.y; a.rot=(Math.random()-0.5)/100; } } function update_oskolki(tk) { if (GLOBAL.PAUSE) return; var cnt=0; for (var i=0;i<GLOBAL.OSKOLKI.length;i++) if ((GLOBAL.OSKOLKI[i]!=null)&&(GLOBAL.OSKOLKI[i].sprite.visible)) { var a=GLOBAL.OSKOLKI[i]; a.time-=tk; if (a.time<=0) { CONTAINER.free(a); GLOBAL.OSKOLKI[i]=null; }else { var pr=(a.start_time-a.time)/a.start_time; a.sprite.scale.x=a.scale+(0.2-a.scale)*pr; a.sprite.scale.y=a.sprite.scale.x; a.ang+=tk/1000*Math.PI; a.speedx=Math.cos(a.ang); a.speedy=Math.sin(a.ang); a.rad=GLOBAL.D/4+a.r*(a.start_time-a.time)/a.start_time; a.sprite.position.x=a.x+(a.sx-a.x)*pr+(a.sx+(a.tx-a.sx)*pr-(a.x+(a.sx-a.x)*pr))*pr; a.sprite.position.y=a.y+(a.sy-a.y)*pr+(a.sy+(a.ty-a.sy)*pr-(a.y+(a.sy-a.y)*pr))*pr; } } for (i=0;i<GLOBAL.KILLED.length;i++) if ((GLOBAL.KILLED[i]!=null)&&(GLOBAL.KILLED[i].sprite.visible)) { cnt++; var a=GLOBAL.KILLED[i]; a.time-=tk; if (a.time<=0) { CONTAINER.free(a); GLOBAL.KILLED[i]=null; }else { var pr=(a.start_time-a.time)/a.start_time; a.sprite.scale.x=1-pr; a.sprite.scale.y=a.sprite.scale.x; a.sprite.alpha=0.9-0.9*pr; } } if (GLOBAL.FINISH) return; if (cnt==0) { for (i=0;i<chains.length;i++) if (chains[i]!=null) return; GLOBAL.WND_GAME.show_win(); } } this.born_stars=function(x,y) { for (var n=0;n<15;n++) { var a=null; for (var i=0;i<scores.length;i++) if (scores[i]==null) { a=CONTAINER.get_object("GAME","zvezda_part",game.GAME.part_place); scores[i]=a; break; } if (a==null) { a=CONTAINER.get_object("GAME","zvezda_part",game.GAME.part_place); scores.push(a); } a.speedx=(Math.random()-0.5)*0.33; a.speeddx=0; a.speedy=(Math.random()-0.9)*0.48; a.speeddy=0.0009; a.sprite.anchor.x=0.5; a.sprite.anchor.y=0.5; a.sprite.position.x=x; a.sprite.position.y=y; a.sprite.scale.x=Math.random(); a.sprite.scale.y=a.sprite.scale.x; } } function born_score(txt,x,y) { var a=null; for (var i=0;i<scores.length;i++) if (scores[i]==null) { a=CONTAINER.get_object("GAME","txt_score_part",game.GAME.bullet_place); scores[i]=a; break; } if (a==null) { a=CONTAINER.get_object("GAME","txt_score_part",game.GAME.bullet_place); scores.push(a); } a.set_style(0.43,"AVK_FNT_main","left"); a.set_text(convert(txt)); a.speedx=-0.03; a.speeddx=0; a.speedy=-0.1; a.speeddy=-0.0005; a.sprite.position.x=x; a.sprite.position.y=y; } function update_scores(tk) { if (GLOBAL.CURRENT_SCORE<GLOBAL.SCORE) { var delta=Math.floor((GLOBAL.SCORE-GLOBAL.CURRENT_SCORE)*tk/200); if (delta<1) delta=1; GLOBAL.CURRENT_SCORE+=delta; if (GLOBAL.CURRENT_SCORE>GLOBAL.SCORE) GLOBAL.CURRENT_SCORE=GLOBAL.SCORE; var s=convert(""+GLOBAL.CURRENT_SCORE); game.GAME.txt_score.set_text(s); var i=s.length; var n=Math.floor(i/4); i-=n; game.GAME.txt_score.txt.position.x=game.GAME.txt_score.uni_width-i*22-n*12; if (GLOBAL.CURRENT_SCORE>=GLOBAL.TR_1) { if (GLOBAL.WIN_PROGRESS==0) { game.GAME.prog_0.sprite.scale.x=GLOBAL.TR_1/GLOBAL.TR; GLOBAL.WIN_PROGRESS++; GLOBAL.BALLS.born_oskolki(game.GAME.prog_1.sprite.position.x,game.GAME.prog_1.sprite.position.y,1); GLOBAL.BALLS.born_oskolki(game.GAME.prog_1.sprite.position.x,game.GAME.prog_1.sprite.position.y,1); GLOBAL.BALLS.born_oskolki(game.GAME.prog_1.sprite.position.x,game.GAME.prog_1.sprite.position.y,1); if (is_snd()) GLOB_up.play(); }else if (GLOBAL.CURRENT_SCORE>=GLOBAL.TR_2+GLOBAL.TR_1) { if (GLOBAL.WIN_PROGRESS==1) { game.GAME.prog_1.sprite.scale.x=GLOBAL.TR_2/GLOBAL.TR; GLOBAL.WIN_PROGRESS++; GLOBAL.BALLS.born_oskolki(game.GAME.prog_2.sprite.position.x,game.GAME.prog_2.sprite.position.y,2); GLOBAL.BALLS.born_oskolki(game.GAME.prog_2.sprite.position.x,game.GAME.prog_2.sprite.position.y,2); GLOBAL.BALLS.born_oskolki(game.GAME.prog_2.sprite.position.x,game.GAME.prog_2.sprite.position.y,2); if (is_snd()) GLOB_up.play(); }else if (GLOBAL.CURRENT_SCORE>=GLOBAL.TR_3+GLOBAL.TR_2+GLOBAL.TR_1) { if (GLOBAL.WIN_PROGRESS==2) { game.GAME.prog_2.sprite.scale.x=GLOBAL.TR_3/GLOBAL.TR; GLOBAL.WIN_PROGRESS++; GLOBAL.BALLS.born_oskolki(game.GAME.prog_0.sprite.position.x+game.GAME.prog_0.uni_width,game.GAME.prog_0.sprite.position.y,0); GLOBAL.BALLS.born_oskolki(game.GAME.prog_0.sprite.position.x+game.GAME.prog_0.uni_width,game.GAME.prog_0.sprite.position.y,0); GLOBAL.BALLS.born_oskolki(game.GAME.prog_0.sprite.position.x+game.GAME.prog_0.uni_width,game.GAME.prog_0.sprite.position.y,0); if (is_snd()) GLOB_up.play(); } }else { game.GAME.prog_2.sprite.scale.x=GLOBAL.TR_3/GLOBAL.TR*(GLOBAL.CURRENT_SCORE-GLOBAL.TR_2-GLOBAL.TR_1)/GLOBAL.TR_3; } }else { game.GAME.prog_1.sprite.scale.x=GLOBAL.TR_2/GLOBAL.TR*(GLOBAL.CURRENT_SCORE-GLOBAL.TR_1)/GLOBAL.TR_2; } }else { game.GAME.prog_0.sprite.scale.x=GLOBAL.TR_1/GLOBAL.TR*GLOBAL.CURRENT_SCORE/GLOBAL.TR_1; } } for (var i=0;i<scores.length;i++) if ((scores[i]!=null)&&(scores[i].sprite.visible)) { a=scores[i]; a.sprite.position.x+=a.speedx*tk; a.sprite.position.y+=a.speedy*tk; a.speedx+=a.speeddx*tk; a.speedy+=a.speeddy*tk; if ((a.sprite.position.y<=-a.uni_height)||(a.sprite.position.y>=game.SCREEN_HEIGHT+a.uni_height)||(a.sprite.position.x<=-a.uni_width)||(a.sprite.position.x>=game.SCREEN_WIDTH+a.uni_width)) { CONTAINER.free(a); scores[i]=null; } } } this.update_scores=update_scores; function add_score(m,x,y) { born_score(convert(m*10*GLOBAL.LEVEL_MUL),x,y); GLOBAL.SCORE+=GLOBAL.LEVEL_MUL*m*10; } this.add_score=add_score; this.update=function(tk) { update_oskolki(tk); update_scores(tk); if (!GLOBAL.RUN) return; for (var i=0;i<GLOBAL.COLORS.length;i++) GLOBAL.COLORS[i]=false; GLOBAL.BULLET.born_after=false; GLOBAL.MAX_PROG=0; for (i=0;i<chains.length;i++) { var tmp=chains[i]; if (tmp!=null) { tmp.step(tk); tmp=chains[i]; } } if (GLOBAL.MAX_PROG>=GLOBAL.LENGTH) { GLOBAL.WND_GAME.show_loose(); if((is_snd())&&(GLOBAL.HEART)) { GLOBAL.HEART=false; GLOB_heart.stop(); } }else if (GLOBAL.MAX_PROG>=GLOBAL.LENGTH-GLOBAL.D*5) { if ((is_snd())&&(!GLOBAL.HEART)) { GLOBAL.HEART=true; GLOB_heart.play("none",0,0,-1); } }else if ((is_snd()) &&(GLOBAL.HEART)) { GLOBAL.HEART=false; GLOB_heart.stop(); } for (i=0;i<chains.length;i++) { var tmp=chains[i]; while (tmp!=null) { GLOBAL.COLORS[tmp.color]=true; tmp=tmp.next; } } if (GLOBAL.BULLET.born_after) GLOBAL.BULLET.born(); var last=null; var prev=null; var prev_index=null; var l=0; var tmp=0; for (i=0;i<chains.length;i++) { tmp=chains[i]; if (tmp!=null) { if (prev!=null) { last=tmp; while (last.next!=null) last=last.next; l=0; if (last.next_child!=null) l=Math.abs(Math.cos(last.next_child.angle))*GLOBAL.D*2-GLOBAL.D; if (prev.prev_child!=null) l+=Math.abs(Math.cos(prev.prev_child.angle))*GLOBAL.D*2-GLOBAL.D; if (last.progress+GLOBAL.D+l>=prev.progress) { if (is_snd()) GLOB_knock.play(); last.next=prev; prev.set_max_prog(last.get_max_prog(),last.get_max_on()); prev.prev=last; prev.chained=true; chains[prev_index]=null; if (prev.a!=0) { tmp=prev.prev; if (tmp!=null) { while ((tmp.prev!=null)&&(tmp.chained)) tmp=tmp.prev; tmp.set_speed(prev.get_back_speed()); tmp.a=-1.2*GLOBAL.BACK_A; } } prev.a=0; prev.set_speed(0); prev.press(last.progress+GLOBAL.D,0); } } prev=tmp; prev_index=i; } } last=true while(last) { last=false; for (i=1;i<chains.length;i++) { if ((chains[i-1]==null)&&(chains[i]!=null)) { last=true; chains[i-1]=chains[i]; chains[i]=null; } } } for (i=0;i<chains.length;i++) { var tmp=chains[i]; while(tmp!=null) { step(tmp); tmp=tmp.next; } } } function on_collision(blt,target,xr,yr,pr) { if (pr<collision_result.p) { collision_result.active=true; collision_result.blt=blt; collision_result.trg=target; collision_result.x=xr; collision_result.y=yr; collision_result.p=pr; } } this.verify_bullet=function(blt,lx0,lx1,ly0,ly1) { collision_result.active=false; collision_result.p=1000000; for (i=0;i<chains.length;i++) { target=chains[i]; while (target!=null) { if (target.ball.enabled) { var ox=target.ball.sprite.position.x; var oy=target.ball.sprite.position.y; var or=target.ball.uni_height/2; var l=get_l(lx1-lx0,ly1-ly0); var r=Math.abs(((ly0-ly1)*ox+(lx1-lx0)*oy+(lx0*ly1-lx1*ly0))/l);//Кратчайшее расстояние до прямой if (r<2*or) { var l1=Math.sqrt(4*or*or-r*r);//расстояние от точки проекции до центра шара с касанием var m=Math.sqrt((ox-lx0)*(ox-lx0)+(oy-ly0)*(oy-ly0)-r*r);//расстояние от точки проекции до начала отрезка var rp=m-l1;//расстояние, которое нужно пройти до пересечения if (l>=rp)//расстояние пройдено с лихвой { var pr=rp/l; var xr=lx0+(lx1-lx0)*pr; var yr=ly0+(ly1-ly0)*pr; on_collision(blt,target,xr,yr,pr); } } } target=target.next; } } if (collision_result.active) { if (is_snd()) GLOB_knock.play(); var a=collision_result.trg.ball.sprite.rotation-angle(collision_result.blt.sprite.position.x-collision_result.trg.ball.sprite.position.x,collision_result.blt.sprite.position.y-collision_result.trg.ball.sprite.position.y); if (Math.abs(a)>Math.PI) { if (a>0) a=2*Math.PI-a; else if (a<0) a=2*Math.PI+a; } collision_result.blt.start_angle=a; collision_result.blt.angle=a; collision_result.blt.progress=0; game.GAME.place.sprite.addChild(collision_result.blt.sprite); if (Math.abs(a)<Math.PI/2) {//спереди стыкуем collision_result.blt.finish_angle=0; collision_result.trg.next_child=collision_result.blt; collision_result.trg.next_child.beg_time=1+GLOBAL.INSERTS*Math.abs(a)/(Math.PI/2); collision_result.trg.next_child.end_time=collision_result.trg.next_child.beg_time; }else {//сзади collision_result.trg.prev_child=collision_result.blt; collision_result.trg.prev_child.beg_time=1+GLOBAL.INSERTS*(Math.PI-Math.abs(a))/(Math.PI/2); collision_result.trg.prev_child.end_time=collision_result.trg.prev_child.beg_time; if (a>0) collision_result.blt.finish_angle=Math.PI; else collision_result.blt.finish_angle=-Math.PI; } collision_result.blt.sprite.position.x=collision_result.x; collision_result.blt.sprite.position.y=collision_result.y; return true; } return false; } } function AVK_WND_GAME() { var here=this; var path=[]; var way=[]; var path_length=0; var balls=new AVK_WND_BALLS(way,path); GLOBAL.BALLS=balls; GLOBAL.BULLET=new AVK_WND_BULLET(balls); this.level_num=0; function AVK_WAY() { this.path_id=0; this.index=0; this.enabled=true; } function AVK_PATH() { this.x=new Array(GLOBAL.PATH_POINTS); this.y=new Array(GLOBAL.PATH_POINTS); this.l=new Array(GLOBAL.PATH_POINTS); this.l[GLOBAL.PATH_POINTS-1]=0; } function update(tk) { if (game.GAME.tutor.sprite.visible) return; game.GAME.wrays.sprite.rotation+=tk/1500; game.GAME.brays.sprite.rotation-=tk/1500; balls.update(tk); if (!GLOBAL.RUN) return; GLOBAL.TIME+=tk; if (GLOBAL.TUTOR<1000000) { if(GLOBAL.TUTOR_STEPS[GLOBAL.TUTOR]<GLOBAL.TIME) { GLOBAL.TUTOR++; switch(GLOBAL.TUTOR) { case 1: var tmp=balls.export_chains[0]; for (var i=0;i<10;i++) tmp=tmp.next; tutor.start(tmp.ball.sprite.position.x,game.SCREEN_HEIGHT-game.GAME.hand.uni_height*1.1); break; case 3: var tmp=balls.export_chains[0]; for (var i=0;i<3;i++) tmp=tmp.next; tutor.start(tmp.ball.sprite.position.x,game.SCREEN_HEIGHT-game.GAME.hand.uni_height*1.1); break; } } } GLOBAL.BULLET.update(tk); } add_to_update(update); function get_coord(start,middle,finish,progress) { return start+(middle-start)*progress+(middle+(finish-middle)*progress-(start+(middle-start)*progress))*progress; } function init_path(level,pnt_cnt) { var start_x=0; var start_y=0; var mid_x=0; var mid_y=0; var finish_x=0; var finish_y=0; for (var i=0;i<pnt_cnt;i++) { if (i+1>=path.length) { path.push(new AVK_PATH()); } var pnt_name="l_"+level+"_pnt_"+(i-1); var n1_pnt_name="l_"+level+"_pnt_"+(i+0); var n2_pnt_name="l_"+level+"_pnt_"+(i+1); if (i==0) { start_x=game.GAME[n1_pnt_name].sprite.position.x+game.GAME[n1_pnt_name].uni_width/2; start_y=game.GAME[n1_pnt_name].sprite.position.y+game.GAME[n1_pnt_name].uni_width/2; var l=get_l(start_x-(game.GAME[n2_pnt_name].sprite.position.x+game.GAME[n2_pnt_name].uni_width/2),start_y-(game.GAME[n2_pnt_name].sprite.position.y+game.GAME[n2_pnt_name].uni_width/2)); start_x+=(start_x-(game.GAME[n2_pnt_name].sprite.position.x+game.GAME[n2_pnt_name].uni_width/2))/l; start_y+=(start_y-(game.GAME[n2_pnt_name].sprite.position.y+game.GAME[n2_pnt_name].uni_width/2))/l; }else { start_x=game.GAME[pnt_name].sprite.position.x+game.GAME[pnt_name].uni_width/2; start_y=game.GAME[pnt_name].sprite.position.y+game.GAME[pnt_name].uni_width/2; } mid_x=game.GAME[n1_pnt_name].sprite.position.x+game.GAME[n1_pnt_name].uni_width/2; mid_y=game.GAME[n1_pnt_name].sprite.position.y+game.GAME[n1_pnt_name].uni_width/2; if (i==pnt_cnt-1) { l=get_l(mid_x-start_x,mid_y-start_y); finish_x=mid_x+(mid_x-start_x)/l; finish_y=mid_y+(mid_y-start_y)/l; }else { finish_x=game.GAME[n2_pnt_name].sprite.position.x+game.GAME[n2_pnt_name].uni_width/2; finish_y=game.GAME[n2_pnt_name].sprite.position.y+game.GAME[n2_pnt_name].uni_width/2; } start_x=(start_x+mid_x)/2; start_y=(start_y+mid_y)/2; finish_x=(finish_x+mid_x)/2; finish_y=(finish_y+mid_y)/2; for (var progress=0;progress<path[i].x.length;progress++) { path[i].x[progress]=get_coord(start_x,mid_x,finish_x,progress/(path[i].x.length-1));//последняя точка тоже в массиве path[i].y[progress]=get_coord(start_y,mid_y,finish_y,progress/(path[i].x.length-1)); if (progress>0) { path[i].l[progress-1]=Math.sqrt((path[i].x[progress]-path[i].x[progress-1])*(path[i].x[progress]-path[i].x[progress-1])+(path[i].y[progress]-path[i].y[progress-1])*(path[i].y[progress]-path[i].y[progress-1])); } } } } function add_way(pnt,e) { for (var progress=0;progress<path[pnt].x.length;progress++) { path_length+=path[pnt].l[progress]; if (path_length>=1) { var a=new AVK_WAY(); a.path_id=pnt; a.index=progress; a.enabled=e; way.push(a); path_length-=1; } } } function init(level) { GLOBAL.PAUSE=false; load_stat(); GLOBAL.HEART=false; game.GAME.wrays.sprite.visible=false; game.GAME.brays.sprite.visible=false; GLOBAL.BULLET.clear_ready(); GLOBAL.LEVEL_MUL=1; GLOBAL.SCORE=0; GLOBAL.CURRENT_SCORE=0; GLOBAL.WIN_PROGRESS=0; game.GAME.txt_score.set_text(""); for (i=0;i<10;i++) { if (game.GAME["head_"+i].sprite.parent!=null) game.GAME["head_"+i].sprite.parent.removeChild(game.GAME["head_"+i].sprite); if (game.GAME["up_"+i].sprite.parent!=null) game.GAME["up_"+i].sprite.parent.removeChild(game.GAME["up_"+i].sprite); if (game.GAME["res_"+i].sprite.parent!=null) game.GAME["res_"+i].sprite.parent.removeChild(game.GAME["res_"+i].sprite); } GLOBAL.UP_SPR.addChild(game.GAME["up_"+level].sprite); GLOBAL.HEAD_SPR.addChild(game.GAME["head_"+level].sprite); game.GAME.back.sprite.addChild(game.GAME["res_"+level].sprite); game.GAME["head_"+level].sprite.visible=true; game.GAME["up_"+level].sprite.visible=true; /*game.GAME["up_"+level].sprite.position.x=0; game.GAME["up_"+level].sprite.position.y=0; game.GAME["up_"+level].sprite.scale.y=2;*/ game.GAME["res_"+level].sprite.visible=true; //game.GAME["res_"+level].sprite.position.x=0; //game.GAME["res_"+level].sprite.position.y=0; //game.GAME["real_back_"+level].sprite.visible=true; path_length=0; while (way.length>0) way.pop(); var cnt=0; var elem=game.filtered("points","pnt",cnt,"level",level); while(elem!=null) { cnt++; elem=game.filtered("points","pnt",cnt,"level",level); } init_path(level,cnt); for (var i=0;i<cnt;i++) add_way(i,game.filtered("points","enabled",i,"level",level)==1); GLOBAL.LENGTH=way.length; } function on_show() { SG_Hooks.start(); GLOBAL.RUN=true; GLOBAL.TIME=0; GLOBAL.BULLET.set_color(); balls.start(); GLOBAL.FINISH=false; var tmp=balls.export_chains[0]; while (tmp.next!=null) tmp=tmp.next; } this.on_show=on_show; this.start=function() { if ((GLOBAL.TUTOR==0)||(GLOBAL.TUTOR==2)) return; GLOBAL.BULLET.start(); } this.show_level=function() { game.MAIN.levels.sprite.visible=true; game.MAIN.main.sprite.visible=true; game.ACT.start("from_right",game.MAIN.levels); game.ACT.start("to_left",game.MAIN.main,hide_btn_start); game.GUI_BUSY=true; function hide_btn_start() { game.GUI_BUSY=false; game.MAIN.levels.sprite.visible=true; game.MAIN.main.sprite.visible=false; } } this.hide_level=function() { game.MAIN.levels.sprite.visible=true; game.MAIN.main.sprite.visible=true; game.ACT.start("to_right",game.MAIN.levels); game.ACT.start("from_left",game.MAIN.main,hide_levels); game.GUI_BUSY=true; function hide_levels() { game.GUI_BUSY=false; game.MAIN.levels.sprite.visible=false; game.MAIN.main.sprite.visible=true; } for (var i=0;i<GLOBAL.OSKOLKI.length;i++) if (GLOBAL.OSKOLKI[i]!=null) { var a=GLOBAL.OSKOLKI[i]; CONTAINER.free(a); GLOBAL.OSKOLKI[i]=null; } for (i=0;i<GLOBAL.KILLED.length;i++) if (GLOBAL.KILLED[i]!=null) { var a=GLOBAL.KILLED[i]; CONTAINER.free(a); GLOBAL.KILLED[i]=null; } } this.show=function(id) { here.level_num=id; here.pre_show(); GLOBAL.SHOW_HANDLER=on_show; show_wnd_left(game.GAME); } this.pre_show=function() { var id=here.level_num; game.GAME.shadow.sprite.visible=false; game.GAME.win_wnd.sprite.visible=false; game.GAME.loose_wnd.sprite.visible=false; for (var i=0;i<10;i++) { game.GAME["head_"+i].sprite.visible=false; game.GAME["up_"+i].sprite.visible=false; game.GAME["res_"+i].sprite.visible=false; } init(game.get("levels","level",id));//waves,len,colors,progress,r_min,r_mul,x,y GLOBAL.MUL=game.get("levels","mul",id); balls.init(game.get("levels","waves",id),game.get("levels","len",id),game.get("levels","colors",id),game.get("levels","progress",id),game.get("levels","r_min",id),game.get("levels","r_max",id),path[0].x[0],path[0].y[0]); GLOBAL.TR_1=game.get("levels","t1",id); GLOBAL.TR_2=game.get("levels","t2",id)-GLOBAL.TR_1; GLOBAL.TR_3=game.get("levels","t3",id)-GLOBAL.TR_2-GLOBAL.TR_1;; GLOBAL.TR=GLOBAL.TR_1+GLOBAL.TR_2+GLOBAL.TR_3; game.GAME.prog_0.sprite.scale.x=GLOBAL.TR_1/GLOBAL.TR; game.GAME.prog_1.sprite.position.x=game.GAME.prog_0.sprite.position.x+game.GAME.prog_0.uni_width*GLOBAL.TR_1/GLOBAL.TR; game.GAME.riska_0.sprite.position.x=game.GAME.prog_1.sprite.position.x; game.GAME.prog_1.sprite.scale.x=GLOBAL.TR_2/GLOBAL.TR; game.GAME.prog_2.sprite.position.x=game.GAME.prog_1.sprite.position.x+game.GAME.prog_1.uni_width*GLOBAL.TR_2/GLOBAL.TR; game.GAME.riska_1.sprite.position.x=game.GAME.prog_2.sprite.position.x; game.GAME.prog_2.sprite.scale.x=GLOBAL.TR_3/GLOBAL.TR; game.GAME.prog_0.sprite.scale.x=0; game.GAME.prog_1.sprite.scale.x=0; game.GAME.prog_2.sprite.scale.x=0; GLOBAL.BULLET.clear(); game.GAME.txt_score.set_text(""); } this.close=function() { game.GAME.brays.sprite.visible=false; game.GAME.wrays.sprite.visible=false; GLOBAL.FINISH=true; game.GAME.shadow.sprite.visible=false; game.GAME.win_wnd.sprite.visible=false; game.GAME.loose_wnd.sprite.visible=false; GLOBAL.RUN=false; hide_wnd_left(); } this.pause=function() { GLOBAL.PAUSE=true; GLOBAL.RUN=false; game.GAME.star_0.sprite.visible=false; game.GAME.star_1.sprite.visible=false; game.GAME.star_2.sprite.visible=false; game.GAME.win_wnd.sprite.position.y=-game.GAME.win_wnd.uni_height; game.GAME.win_wnd.sprite.visible=true; here.wnd.wnd=game.GAME.win_wnd; game.ACT.start("pr",here.wnd); game.GAME.shadow.sprite.visible=true; game.GAME.shadow.sprite.alpha=0; game.GAME.win_wnd_back.sprite.visible=false; } function AVK_show_wnd() { var here=this; this.wnd=null; this.set_property=function (val) { here.wnd.sprite.position.y=-this.wnd.uni_height+(this.wnd.y+this.wnd.uni_height)*val; game.GAME.shadow.sprite.alpha=val/2; } this.finish=function () { var w=null; if (here.wnd==game.GAME.win_wnd) w=game.GAME.wrays; else w=game.GAME.brays; w.sprite.visible=true; w.sprite.alpha=0; game.ACT.start("alpha",w); if (here.wnd==game.GAME.loose_wnd) game.GUI_BUSY=false; } } this.wnd=new AVK_show_wnd(); function AVK_zvezda() { var here=this; var prog; var f=0; this.set_property=function(p) { if (p<1/3) { if (!game.GAME.star_0.sprite.visible) game.GUI_BUSY=false; game.GAME.star_0.sprite.alpha=p*3; game.GAME.star_0.sprite.scale.x=-3+12*p; game.GAME.star_0.sprite.scale.y=3-6*p; }else if (p<2/3) { if (!game.GAME.star_1.sprite.visible) game.GUI_BUSY=false; else if (f==0) { f++; if (is_snd()) GLOB_match.play(); } if ((prog==0)&&(game.GAME.star_0.sprite.visible)) { balls.born_stars(game.GAME.star_0.sprite.position.x+game.GAME.win_wnd.sprite.position.x,game.GAME.star_0.sprite.position.y+game.GAME.win_wnd.sprite.position.y); prog++; } game.GAME.star_0.sprite.alpha=1; game.GAME.star_1.sprite.alpha=(p-1/3)*3; game.GAME.star_1.sprite.scale.x=-3+12*(p-1/3); game.GAME.star_1.sprite.scale.y=3-6*(p-1/3); }else { if (!game.GAME.star_2.sprite.visible) game.GUI_BUSY=false; else if (f==1) { f++; if (is_snd()) GLOB_match.play(); } if ((prog==1)&&(game.GAME.star_1.sprite.visible)) { balls.born_stars(game.GAME.star_1.sprite.position.x+game.GAME.win_wnd.sprite.position.x,game.GAME.star_1.sprite.position.y+game.GAME.win_wnd.sprite.position.y); prog++; } game.GAME.star_0.sprite.alpha=1; game.GAME.star_1.sprite.alpha=1; game.GAME.star_0.sprite.scale.x=1; game.GAME.star_0.sprite.scale.y=1; game.GAME.star_1.sprite.scale.x=1; game.GAME.star_1.sprite.scale.y=1; game.GAME.star_2.sprite.alpha=(p-2/3)*3; game.GAME.star_2.sprite.scale.x=-3+12*(p-2/3); game.GAME.star_2.sprite.scale.y=3-6*(p-2/3); } } this.finish=function() { if (game.GAME.star_2.sprite.visible) { balls.born_stars(game.GAME.star_2.sprite.position.x+game.GAME.win_wnd.sprite.position.x,game.GAME.star_2.sprite.position.y+game.GAME.win_wnd.sprite.position.y); if (is_snd()) GLOB_match.play(); } game.GUI_BUSY=false; } this.start=function() { game.GUI_BUSY=true; prog=0; f=0; game.GAME.star_0.sprite.visible=GLOBAL.WIN_PROGRESS>0; game.GAME.star_1.sprite.visible=GLOBAL.WIN_PROGRESS>1; game.GAME.star_2.sprite.visible=GLOBAL.WIN_PROGRESS>2; game.GAME.star_0.sprite.alpha=0; game.GAME.star_1.sprite.alpha=0; game.GAME.star_2.sprite.alpha=0; game.ACT.start("show_zw",here,here.finish); } } var zvezda=new AVK_zvezda(); this.show_win=function() { //SG_Hooks.levelUp(here.level_num+1, GLOBAL.SCORE); if (is_snd()) { GLOB_heart.stop(); GLOB_win.play(); GLOB_in_game.stop(); } var stat=GLOBAL.STAT[here.level_num]; stat.win_cnt++; stat.win_time+=GLOBAL.TIME; stat.win_score+=GLOBAL.SCORE; if (GLOBAL.LEVELS[here.level_num]>=0) stat.win_emprove_cnt++; save_stat(); GLOBAL.LEVELS[here.level_num]=GLOBAL.WIN_PROGRESS; if (here.level_num+1<19) { if (GLOBAL.LEVELS[here.level_num+1]==-2) GLOBAL.LEVELS[here.level_num+1]=-1; } save(); init_select(); GLOBAL.BALLS.update_scores(1000000); game.GAME.win_wnd.sprite.position.y=-game.GAME.win_wnd.uni_height; GLOBAL.FINISH=true; GLOBAL.RUN=false; game.GAME.win_wnd.sprite.visible=true; here.wnd.wnd=game.GAME.win_wnd; zvezda.start(); game.ACT.start("pr",here.wnd,here.wnd.finish); game.GAME.shadow.sprite.visible=true; game.GAME.shadow.sprite.alpha=0; game.GAME.win_wnd_back.sprite.visible=true; //Play68.setRankingLevelScoreDesc(here.level_num+1,GLOBAL.SCORE); //play68_submitScore(here.level_num+1,GLOBAL.SCORE); } this.show_loose=function() { //SG_Hooks.gameOver(here.level_num+1, GLOBAL.SCORE); if (is_snd()) { GLOB_heart.stop(); GLOB_gameover.play(); GLOB_in_game.stop(); } var stat=GLOBAL.STAT[here.level_num]; stat.loose_cnt++; stat.loose_time+=GLOBAL.TIME; stat.loose_score+=GLOBAL.SCORE; if (GLOBAL.LEVELS[here.level_num]>=0) stat.loose_emprove_cnt++; save_stat(); game.GAME.loose_wnd.sprite.position.y=-game.GAME.loose_wnd.uni_height; GLOBAL.FINISH=true; GLOBAL.RUN=false; game.GAME.loose_wnd.sprite.visible=true; here.wnd.wnd=game.GAME.loose_wnd; game.GUI_BUSY=true; game.ACT.start("pr",here.wnd,here.wnd.finish); game.GAME.shadow.sprite.visible=true; game.GAME.shadow.sprite.alpha=0; } function AVK_WND_TITLE() { var here=this; var stop_ui=false; this.targ=null; function AVK_BTN_SCALE() { this.set_property = function (newVal) { if (stop_ui) return; game.MAIN.btn_start.sprite.scale.x=1+0.02*newVal; game.MAIN.btn_start.sprite.scale.y=1-0.02*newVal; if (here.targ!=null) { here.targ.sprite.scale.x=1+0.05*newVal; here.targ.sprite.scale.y=1-0.05*newVal; } } } var btn_scale=new AVK_BTN_SCALE(); function finish_scale() { if (stop_ui) return; game.ACT.start("ui_scale",btn_scale,finish_scale); } this.stop_scale_ui = function() { stop_ui=true; } finish_scale(); } this.scle_btn=new AVK_WND_TITLE(); function AVK_WND_TUTOR() { var here=this; this.stoped=true; this.x=0; this.y=0; var sh1=game.GAME.shadow.make_copy(); var sh2=game.GAME.shadow.make_copy(); game.GAME.tutor.sprite.addChildAt(sh1.sprite,0); sh1.sprite.alpha=0.5; sh1.sprite.scale.x=25.2; sh1.sprite.scale.y=25.2; sh1.sprite.position.x=-10; sh1.sprite.position.y=-10; game.GAME.tutor.sprite.addChildAt(sh2.sprite,0); sh2.sprite.alpha=0.5; sh2.sprite.scale.x=25.2; sh2.sprite.scale.y=25.2; sh2.sprite.position.x=-10; sh2.sprite.position.y=-10; game.GAME.tutor.sprite.visible=false; this.start = function (x,y) { if (!here.stoped) return; sh1.sprite.position.x=x-GLOBAL.D-sh1.sprite.scale.x*sh1.uni_width; sh2.sprite.position.x=x+GLOBAL.D; game.GAME.hand_center.sprite.position.x=x; game.GAME.hand_center.sprite.position.y=y; here.stoped=false; game.GAME.tutor.sprite.visible=true; game.GAME.tutor.sprite.alpha=0; here.x=x; here.y=y; finish_scale(); game.ACT.start("tutor_alpha",game.GAME.tutor); } this.stop = function () { if (here.stoped) return; here.stoped=true; function fin() { game.GAME.tutor.sprite.visible=false; } game.ACT.start("tutor_alpha_hide",game.GAME.tutor,fin); } this.set_property = function (newVal) { if (here.stoped) return; game.GAME.hand_center.sprite.scale.x=1+0.05*newVal; game.GAME.hand_center.sprite.scale.y=1+0.05*newVal; } function finish_scale() { if (here.stoped) return; game.ACT.start("ui_scale",here,finish_scale); } } var tutor=new AVK_WND_TUTOR(); this.TUTOR=tutor; } }