mota-js/libs/ui.min.js
2017-12-04 01:35:38 +08:00

1 line
17 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function ui(){}ui.prototype.init=function(){};main.instance.ui=new ui();ui.prototype.closePanel=function(a){core.status.boxAnimateObjs=[];core.setBoxAnimate(core.firstData.animateSpeed);core.clearMap("ui",0,0,416,416);core.setAlpha("ui",1);if(core.isset(a)&&a){core.clearMap("data",0,0,416,416)}core.unLockControl();core.status.event.data=null;core.status.event.id=null};ui.prototype.drawTextBox=function(l,e){core.lockControl();if(core.status.event.id==null){core.status.event.id="text"}var c=core.canvas.ui.createPattern(core.material.ground,"repeat");var g=l.split("\n");core.clearMap("ui",0,0,416,416);var q=416-10-Math.min(416-24*(g.length+1)-65,250);var f=10,n=(416-q)/2,p=416-2*f,a=q;core.setAlpha("ui",0.85);core.fillRect("ui",f,n,p,a,"#000000");core.setAlpha("ui",1);core.strokeRect("ui",f-1,n-1,p+1,a+1,"#FFFFFF",2);core.canvas.ui.textAlign="left";var d=f+25,o=n+35;if(core.isset(e)){d=f+63;o=n+57;var b,h,r;core.strokeRect("ui",f+15-1,n+40-1,34,34,"#FFD700",2);if(e=="hero"){core.fillText("ui",core.status.hero.name,f+63,n+30,"#FFD700","bold 22px Verdana");core.status.boxAnimateObjs=[];core.setBoxAnimate(core.firstData.animateSpeed);core.clearMap("ui",f+15,n+40,32,32);core.fillRect("ui",f+15,n+40,32,32,c);var k=core.material.icons.heros[core.status.hero.id]["down"];core.canvas.ui.drawImage(core.material.images.heros,k.loc.stop*k.size,k.loc.iconLoc*k.size,k.size,k.size,f+15,n+40,32,32)}else{var b=null,h=null,m=null;if(core.material.npcs.hasOwnProperty(e)){b=core.material.npcs[e].name;h=core.material.images.npcs;m=core.material.icons.npcs[core.material.npcs[e].icon]}else{if(core.material.enemys.hasOwnProperty(e)){b=core.material.enemys[e].name;h=core.material.images.enemys;m=core.material.icons.enemys[e]}}if(b!=null){core.fillText("ui",b,f+63,n+30,"#FFD700","bold 22px Verdana");core.status.boxAnimateObjs=[];core.status.boxAnimateObjs.push({bgx:f+15,bgy:n+40,bgsize:32,image:h,x:f+15,y:n+40,icon:m});core.setBoxAnimate(core.firstData.animateSpeed)}}}for(var j=0;j<g.length;j++){core.fillText("ui",g[j],d,o,"#FFFFFF","16px Verdana");o+=24}core.fillText("ui","<点击任意位置继续>",270,n+q-13,"#CCCCCC","13px Verdana")};ui.prototype.showConfirmBox=function(k,e,l){core.status.event.id="confirmBox";core.status.event.data={yes:e,no:l};var b=core.canvas.ui.createPattern(core.material.ground,"repeat");core.clearMap("ui",0,0,416,416);core.setAlpha("ui",1);core.setFillStyle("ui",b);core.setFont("ui","bold 19px Verdana");var d=k.split("\n");var m=d.length;var j=0;for(var f in d){j=Math.max(j,core.canvas.ui.measureText(d[f]).width)}var c=Math.min(208-40-j/2,100);var g=140-(m-1)*30;var h=416-2*c,a=416-140-g;core.fillRect("ui",c,g,h,a,b);core.strokeRect("ui",c-1,g-1,h+1,a+1,"#FFFFFF",2);core.canvas.ui.textAlign="center";for(var f in d){core.fillText("ui",d[f],208,g+50+f*30,"#FFFFFF")}core.fillText("ui","确定",208-38,g+a-35,"#FFFFFF","bold 17px Verdana");core.fillText("ui","取消",208+38,g+a-35)};ui.prototype.drawSettings=function(d){if(!core.checkStatus("settings",d)){return}var c=core.canvas.ui.createPattern(core.material.ground,"repeat");core.clearMap("ui",0,0,416,416);core.setAlpha("ui",1);core.setFillStyle("ui",c);var f=97,e=64,b=416-2*f,a=416-2*e;core.fillRect("ui",f,e,b,a,c);core.strokeRect("ui",f-1,e-1,b+1,a+1,"#FFFFFF",2);core.canvas.ui.textAlign="center";core.fillText("ui","音乐: "+(core.musicStatus.soundStatus?"[ON]":"[OFF]"),208,e+56,"#FFFFFF","bold 17px Verdana");core.fillText("ui","快捷商店",208,e+88,"#FFFFFF","bold 17px Verdana");core.fillText("ui","降低难度",208,e+120,"#FFFFFF","bold 17px Verdana");core.fillText("ui","同步存档",208,e+152,"#FFFFFF","bold 17px Verdana");core.fillText("ui","重新开始",208,e+184,"#FFFFFF","bold 17px Verdana");core.fillText("ui","关于本塔",208,e+216,"#FFFFFF","bold 17px Verdana");core.fillText("ui","返回游戏",208,e+248,"#FFFFFF","bold 17px Verdana")};ui.prototype.drawSelectShop=function(g){if(core.isset(g)&&!core.checkStatus("selectShop",g)){return}core.status.event.id="selectShop";var b=core.canvas.ui.createPattern(core.material.ground,"repeat");core.clearMap("ui",0,0,416,416);core.setAlpha("ui",1);core.setFillStyle("ui",b);var k=core.status.shops,j=Object.keys(k);var e=j.length+1;if(e%2==0){e++}var c=97,f=208-32-16*e,h=416-2*c,a=416-2*f;core.fillRect("ui",c,f,h,a,b);core.strokeRect("ui",c-1,f-1,h+1,a+1,"#FFFFFF",2);core.canvas.ui.textAlign="center";for(var d=0;d<j.length;d++){core.fillText("ui",k[j[d]].name,208,f+56+32*d,"#FFFFFF","bold 17px Verdana")}core.fillText("ui","返回游戏",208,f+a-40)};ui.prototype.drawShop=function(id){var shop=core.status.shops[id];if(!core.status.heroStop){setTimeout(function(){core.ui.drawShop(id)},30);return}core.status.event.data=shop;core.status.event.id="shop";core.lockControl();shop.visited=true;var background=core.canvas.ui.createPattern(core.material.ground,"repeat");var times=shop.times,need=eval(shop.need);clearInterval(core.interval.tipAnimate);core.clearMap("data",0,0,416,416);core.setOpacity("data",1);core.clearMap("ui",0,0,416,416);core.setAlpha("ui",1);core.setFillStyle("ui",background);var left=97,top=64,right=416-2*left,bottom=416-2*top;core.fillRect("ui",left,top,right,bottom,background);core.strokeRect("ui",left-1,top-1,right+1,bottom+1,"#FFFFFF",2);core.canvas.ui.textAlign="center";core.fillText("ui",shop.title,left+135,top+34,"#FFFFFF","bold 19px Verdana");core.strokeRect("ui",left+15-1,top+30-1,34,34,"#DDDDDD",2);core.status.boxAnimateObjs=[];core.status.boxAnimateObjs.push({bgx:left+15,bgy:top+30,bgsize:32,image:core.material.images.npcs,x:left+15,y:top+30,icon:core.material.icons.npcs[shop.icon]});core.setBoxAnimate(core.firstData.animateSpeed);core.canvas.ui.textAlign="left";if(need<0){need="若干"}var use=shop.use=="experience"?"经验":"金币";core.fillText("ui","勇敢的武士啊,给我"+need,left+60,top+65,"#FFFFFF","bold 14px Verdana");core.fillText("ui",use+"你就可以:",left+60,top+83);core.canvas.ui.textAlign="center";for(var i=0;i<shop.choices.length;i++){var choice=shop.choices[i];var text=choice.text;if(core.isset(choice.need)){text+=""+eval(choice.need)+use+""}core.fillText("ui",text,208,top+120+32*i,"#FFFFFF","bold 17px Verdana")}core.fillText("ui","退出商店",208,top+248)};ui.prototype.waiting=function(f){core.lockControl();core.status.event.id="waiting";var c=core.canvas.ui.createPattern(core.material.ground,"repeat");core.clearMap("ui",0,0,416,416);core.setAlpha("ui",1);core.setFillStyle("ui",c);var e=97,d=208-32-16,b=416-2*e,a=416-2*d;core.fillRect("ui",e,d,b,a,c);core.strokeRect("ui",e-1,d-1,b+1,a+1,"#FFFFFF",2);core.canvas.ui.textAlign="center";core.fillText("ui",f,208,d+56,"#FFFFFF","bold 17px Verdana")};ui.prototype.syncSave=function(){core.status.event.id="syncSave";var c=core.canvas.ui.createPattern(core.material.ground,"repeat");core.clearMap("ui",0,0,416,416);core.setAlpha("ui",1);core.setFillStyle("ui",c);var e=97,d=208-32-16*3,b=416-2*e,a=416-2*d;core.fillRect("ui",e,d,b,a,c);core.strokeRect("ui",e-1,d-1,b+1,a+1,"#FFFFFF",2);core.canvas.ui.textAlign="center";core.fillText("ui","同步存档到服务器",208,d+56,"#FFFFFF","bold 17px Verdana");core.fillText("ui","从服务器加载存档",208,d+56+32,"#FFFFFF","bold 17px Verdana");core.fillText("ui","返回游戏",208,d+a-40)};ui.prototype.drawPagination=function(c,a){core.setFont("ui","bold 15px Verdana");core.setFillStyle("ui","#DDDDDD");var b=core.canvas.ui.measureText(c+" / "+c).width;core.canvas.ui.textAlign="left";core.fillText("ui",c+" / "+a,(416-b)/2,403);core.canvas.ui.textAlign="center";if(c>1){core.fillText("ui","上一页",208-80,403)}if(c<a){core.fillText("ui","下一页",208+80,403)}core.fillText("ui","返回游戏",370,403)};ui.prototype.drawEnemyBook=function(k){var m=core.enemys.getCurrentEnemys();var a=core.canvas.ui.createPattern(core.material.ground,"repeat");clearInterval(core.interval.tipAnimate);core.clearMap("data",0,0,416,416);core.setOpacity("data",1);core.clearMap("ui",0,0,416,416);core.setAlpha("ui",1);core.setFillStyle("ui",a);core.fillRect("ui",0,0,416,416);core.setAlpha("ui",0.6);core.setFillStyle("ui","#000000");core.fillRect("ui",0,0,416,416);core.setAlpha("ui",1);core.canvas.ui.textAlign="left";core.setFont("ui","bold 15px Verdana");if(m.length==0){core.fillText("ui","本层无怪物",83,222,"#999999","bold 50px Verdana");core.canvas.ui.textAlign="center";core.fillText("ui","返回游戏",370,403,"#DDDDDD","bold 15px Verdana");return}var g=6;var j=parseInt((m.length-1)/g)+1;if(k<1){k=1}if(k>j){k=j}core.status.event.data=k;var b=(k-1)*g,f=Math.min(k*g,m.length);m=m.slice(b,f);core.status.boxAnimateObjs=[];for(var h=0;h<m.length;h++){var d=m[h];core.strokeRect("ui",22,62*h+22,42,42,"#DDDDDD",2);core.status.boxAnimateObjs.push({bgx:22,bgy:62*h+22,bgsize:42,image:core.material.images.enemys,x:27,y:62*h+27,icon:core.material.icons.enemys[d.id]});core.canvas.ui.textAlign="center";core.fillText("ui",d.name,115,62*h+47,"#DDDDDD","bold 17px Verdana");core.canvas.ui.textAlign="left";core.fillText("ui","生命",165,62*h+32,"#DDDDDD","13px Verdana");core.fillText("ui",d.hp,195,62*h+32,"#DDDDDD","bold 13px Verdana");core.fillText("ui","攻击",255,62*h+32,"#DDDDDD","13px Verdana");core.fillText("ui",d.atk,285,62*h+32,"#DDDDDD","bold 13px Verdana");core.fillText("ui","防御",335,62*h+32,"#DDDDDD","13px Verdana");core.fillText("ui",d.def,365,62*h+32,"#DDDDDD","bold 13px Verdana");core.fillText("ui","金币",165,62*h+50,"#DDDDDD","13px Verdana");core.fillText("ui",d.money,195,62*h+50,"#DDDDDD","bold 13px Verdana");var n=326;if(core.flags.enableExperience){core.canvas.ui.textAlign="left";core.fillText("ui","经验",255,62*h+50,"#DDDDDD","13px Verdana");core.fillText("ui",d.experience,285,62*h+50,"#DDDDDD","bold 13px Verdana");n=361}core.canvas.ui.textAlign="center";var l=d.damage;var e="#FFFF00";if(l>=core.status.hero.hp){e="#FF0000"}if(l==0){e="#00FF00"}if(l>=999999999){l="无法战斗"}var c=core.canvas.ui.measureText(l).width;core.fillText("ui",l,n,62*h+50,e,"bold 13px Verdana");core.canvas.ui.textAlign="left";if(d.special!=""){core.setFont("data","bold 12px Verdana");var c=core.canvas.data.measureText(d.special).width;core.setAlpha("data","0.4");core.fillRect("data",64-4-c,62*h+46,c+4,17,"#000000");core.setAlpha("data","1");core.fillText("data",d.special,64-2-c,62*h+59,"#FF6A6A","bold 12px Verdana")}core.fillText("ui","临界",165,62*h+68,"#DDDDDD","13px Verdana");core.fillText("ui",d.critical,195,62*h+68,"#DDDDDD","bold 13px Verdana");core.fillText("ui","减伤",255,62*h+68,"#DDDDDD","13px Verdana");core.fillText("ui",d.criticalDamage,285,62*h+68,"#DDDDDD","bold 13px Verdana");core.fillText("ui","1防",335,62*h+68,"#DDDDDD","13px Verdana");core.fillText("ui",d.defDamage,365,62*h+68,"#DDDDDD","bold 13px Verdana")}core.setBoxAnimate(core.firstData.animateSpeed);this.drawPagination(k,j)};ui.prototype.drawFly=function(b){if(b<0){b=0}if(b>=core.status.hero.flyRange.length){b=core.status.hero.flyRange.length-1}core.status.event.data=b;var a=core.status.hero.flyRange[b];var c=core.status.maps[a].title;core.clearMap("ui",0,0,416,416);core.setAlpha("ui",0.85);core.fillRect("ui",0,0,416,416,"#000000");core.setAlpha("ui",1);core.canvas.ui.textAlign="center";core.fillText("ui","楼层跳跃",208,60,"#FFFFFF","bold 28px Verdana");core.fillText("ui","返回游戏",208,403,"#FFFFFF","bold 15px Verdana");core.fillText("ui",c,356,247,"#FFFFFF","bold 19px Verdana");if(b<core.status.hero.flyRange.length-1){core.fillText("ui","▲",356,247-64,"#FFFFFF","17px Verdana")}if(b>0){core.fillText("ui","▼",356,247+64,"#FFFFFF","17px Verdana")}core.strokeRect("ui",20,100,273,273,"#FFFFFF",2);this.drawThumbnail("ui",core.status.maps[a].blocks,20,100,273)};ui.prototype.drawToolbox=function(a){if(!core.hasItem(a)){a=null}core.status.event.data=a;core.clearMap("ui",0,0,416,416);core.setAlpha("ui",0.85);core.fillRect("ui",0,0,416,416,"#000000");core.setAlpha("ui",1);core.setFillStyle("ui","#DDDDDD");core.setStrokeStyle("ui","#DDDDDD");core.canvas.ui.lineWidth=2;core.canvas.ui.strokeWidth=2;core.canvas.ui.beginPath();core.canvas.ui.moveTo(0,130);core.canvas.ui.lineTo(416,130);core.canvas.ui.stroke();core.canvas.ui.beginPath();core.canvas.ui.moveTo(0,129);core.canvas.ui.lineTo(0,105);core.canvas.ui.lineTo(72,105);core.canvas.ui.lineTo(102,129);core.canvas.ui.fill();core.canvas.ui.beginPath();core.canvas.ui.moveTo(0,290);core.canvas.ui.lineTo(416,290);core.canvas.ui.stroke();core.canvas.ui.beginPath();core.canvas.ui.moveTo(0,289);core.canvas.ui.lineTo(0,265);core.canvas.ui.lineTo(72,265);core.canvas.ui.lineTo(102,289);core.canvas.ui.fill();core.canvas.ui.textAlign="left";core.fillText("ui","消耗道具",5,124,"#333333","bold 16px Verdana");core.fillText("ui","永久道具",5,284);if(core.isset(a)){var h=core.material.items[a];core.fillText("ui",h.name,10,32,"#FFD700","bold 20px Verdana");core.fillText("ui",h.text,10,62,"#FFFFFF","17px Verdana");core.fillText("ui","<继续点击该道具即可进行使用>",10,89,"#CCCCCC","14px Verdana")}core.canvas.ui.textAlign="right";var f=core.material.images.items;var c=Object.keys(core.status.hero.items.tools).sort();for(var b=0;b<c.length;b++){var d=c[b];var g=core.material.icons.items[d];if(b<6){core.canvas.ui.drawImage(f,0,g.loc*g.size,g.size,g.size,16*(4*b+1)+5,144+5,g.size,g.size);core.fillText("ui",core.itemCount(d),16*(4*b+1)+40,144+38,"#FFFFFF","bold 14px Verdana");if(a==d){core.strokeRect("ui",16*(4*b+1)+1,144+1,g.size+8,g.size+8,"#FFD700")}}else{core.canvas.ui.drawImage(f,0,g.loc*g.size,g.size,g.size,16*(4*(b-6)+1)+5,144+64+5,g.size,g.size);if(a==d){core.strokeRect("ui",16*(4*(b-6)+1)+1,144+64+1,g.size+8,g.size+8,"#FFD700")}}}var j=Object.keys(core.status.hero.items.constants).sort();for(var b=0;b<j.length;b++){var e=j[b];var g=core.material.icons.items[e];if(b<6){core.canvas.ui.drawImage(f,0,g.loc*g.size,g.size,g.size,16*(4*b+1)+5,304+5,g.size,g.size);if(a==e){core.strokeRect("ui",16*(4*b+1)+1,304+1,g.size+8,g.size+8,"#FFD700")}}else{core.canvas.ui.drawImage(f,0,g.loc*g.size,g.size,g.size,16*(4*(b-6)+1)+5,304+64+5,g.size,g.size);if(a==e){core.strokeRect("ui",16*(4*(b-6)+1)+1,304+64+1,g.size+8,g.size+8,"#FFD700")}}}core.canvas.ui.textAlign="center";core.fillText("ui","返回游戏",370,403,"#DDDDDD","bold 15px Verdana")};ui.prototype.drawSLPanel=function(f){if(f<0){f=0}if(f>=30){f=29}core.status.event.data=f;core.status.savePage=f;core.clearMap("ui",0,0,416,416);core.setAlpha("ui",0.85);core.fillRect("ui",0,0,416,416,"#000000");core.setAlpha("ui",1);core.canvas.ui.textAlign="center";var b=416/6,d=117;var a=core.status.event.id=="save"?"存档":"读档";for(var c=0;c<6;c++){var g=6*f+c+1;var e=core.getLocalStorage("save"+g,null);if(c<3){core.fillText("ui",a+g,(2*c+1)*b,35,"#FFFFFF","bold 17px Verdana");core.strokeRect("ui",(2*c+1)*b-d/2,50,d,d,"#FFFFFF",2);if(core.isset(e)&&core.isset(e.floorId)){this.drawThumbnail("ui",core.maps.load(e.maps,e.floorId).blocks,(2*c+1)*b-d/2,50,d,e.hero.loc,e.hero.id);core.fillText("ui",core.formatDate(new Date(e.time)),(2*c+1)*b,65+d,"#FFFFFF","10px Verdana")}else{core.fillRect("ui",(2*c+1)*b-d/2,50,d,d,"#333333",2);core.fillText("ui","空",(2*c+1)*b,117,"#FFFFFF","bold 30px Verdana")}}else{core.fillText("ui",a+g,(2*c-5)*b,230,"#FFFFFF","bold 17px Verdana");core.strokeRect("ui",(2*c-5)*b-d/2,245,d,d,"#FFFFFF",2);if(core.isset(e)&&core.isset(e.floorId)){this.drawThumbnail("ui",core.maps.load(e.maps,e.floorId).blocks,(2*c-5)*b-d/2,245,d,e.hero.loc,e.hero.id);core.fillText("ui",core.formatDate(new Date(e.time)),(2*c-5)*b,260+d,"#FFFFFF","10px Verdana")}else{core.fillRect("ui",(2*c-5)*b-d/2,245,d,d,"#333333",2);core.fillText("ui","空",(2*c-5)*b,245+70,"#FFFFFF","bold 30px Verdana")}}}this.drawPagination(f+1,30)};ui.prototype.drawThumbnail=function(d,a,r,o,s,e,p){core.clearMap(d,r,o,s,s);var q=s/13;for(var k=0;k<13;k++){for(var h=0;h<13;h++){var g=core.material.icons.terrains.ground;var m=core.material.images.terrains;core.canvas[d].drawImage(m,0,g.loc*g.size,g.size,g.size,r+k*q,o+h*q,q,q)}}for(var n in a){var f=a[n];if(core.isset(f.event)){var k=f.x,h=f.y;var g=core.material.icons[f.event.cls][f.event.id];var m=core.material.images[f.event.cls];core.canvas[d].drawImage(m,0,g.loc*g.size,g.size,g.size,r+k*q,o+h*q,q,q)}}if(core.isset(e)){var c=core.isset(p)?p:core.status.hero.id;var l=core.material.icons.heros[c][e.direction];core.canvas[d].drawImage(core.material.images.heros,l.loc.stop*l.size,l.loc.iconLoc*l.size,l.size,l.size,r+q*e.x,o+q*e.y,q,q)}};ui.prototype.drawAbout=function(){if(!core.isPlaying()){core.status.event={id:null,data:null};core.dom.startPanel.style.display="none"}core.lockControl();core.status.event.id="about";core.clearMap("ui",0,0,416,416);var f=48,e=36,c=416-2*f,b=416-2*e;core.setAlpha("ui",0.85);core.fillRect("ui",f,e,c,b,"#000000");core.setAlpha("ui",1);core.strokeRect("ui",f-1,e-1,c+1,b+1,"#FFFFFF",2);var d=f+24;core.canvas.ui.textAlign="left";core.fillText("ui","异空间",d,e+35,"#FFD700","bold 22px Verdana");core.fillText("ui","HTML5复刻版",d+75,e+37,"#DDDDDD","bold 15px Verdana");core.fillText("ui","作者: 艾之葵",d,e+80,"#FFFFFF","bold 17px Verdana");core.fillText("ui","原作: ss433_2",d,e+112,"#FFFFFF","bold 17px Verdana");core.fillText("ui","制作工具: WebStorm",d,e+144,"#FFFFFF","bold 17px Verdana");core.fillText("ui","测试平台: Chrome/微信/iOS",d,e+176,"#FFFFFF","bold 17px Verdana");core.fillText("ui","特别鸣谢: ss433_2",d,e+208);var a=core.canvas.ui.measureText("特别鸣谢: ").width;core.fillText("ui","iEcho",d+a,e+240);core.fillText("ui","打Dota的喵",d+a,e+272);core.fillText("ui","HTML5魔塔交流群539113091",d,e+304)};