📄 fw.js
字号:
if(u.mvstyle=="walk"){ //这里好像是给战斗兵设置的
u.children(1).scrollLeft=0
}
//有建造任务
if(u.task=="build"){
o=eval(u.aimu)
//某工程兵的建造进度+1
u.tmMove=parseInt(u.tmMove)+1
//延迟一点再做出调整
if(u.tmMove==10){
//chp好像没有起作用
o.chp=0
//调整一下位置和方向
dp.setv(o.px==sp.x ? 0 : (o.px>sp.x ? 1 : -1),o.py==sp.y ? 0 : (o.py>sp.y ? 1 : -1))
this.setDir(u,dp)
this.setSpark(u)
}
//建筑物完成度+1
o.bn=parseInt(o.bn)+10
//建造进度条
var per=parseInt(0.3*o.bn/udf[o.name].btime)
o.children(0).children(1).children(0).style.width=per+"%"
if(per==50)
o.children(1).children(0).style.posLeft=-o.children(1).style.posWidth
//建造完成
if(per>=100){
o.children(1).children(0).style.posLeft=0
o.bn=-1
u.task=""
u.aimu=""
//房子完成,则人数上限加8
if(o.name=="0_supply")
race[cRace].supply+=8
//兵工厂建成,则工程兵的第4个建筑物变成可以建造的
if(o.name=="0_barrack")
menu_work.children(0).children(3).style.filter=""
refVal()
u.children(2).innerHTML=""
//气场完成则加入冒气动画
if(o.name=="0_refinery")
o.children(2).innerHTML="<img src='block/ves_gas.gif' style=left:55;top:-20>"
}
}
//采矿、采气
if(u.aimPos!=""){
var a=u.aimPos.split(";"),ad,s
u.aimn=parseInt(u.aimn)
ad=a[u.aimn].split(",")
if(isNaN(ad[0])){
o=eval(ad[0])
if(u.task=="gasing"){
if(o.aimu=="")
o.aimu=u.id
if(o.aimu!=u.id){
dp.setv((parseInt(o.px)+1)==sp.x ? 0 : ((parseInt(o.px)+1)>sp.x ? 1 : -1),o.py==sp.y ? 0 : (o.py>sp.y ? 1 : -1))
this.setDir(u,dp)
return
}
}
u.tmMove=parseInt(u.tmMove)+1
if(u.tmMove==5){
//采矿时的调整
if(u.task=="mining"){
dp.setv(o.px==sp.x ? 0 : (o.px>sp.x ? 1 : -1),o.py==sp.y ? 0 : (o.py>sp.y ? 1 : -1))
this.setDir(u,dp)
this.setSpark(u)
}
//采气时看不见
if(u.task=="gasing")
u.style.display="none"
}
if(u.tmMove<ad[1])
return
//采满气时工程兵出现
if(u.task=="gasing"){
u.style.display=""
o.aimu=""
}
u.children(2).innerHTML=""
}
else{
//每次采矿(气)满时,或存放到基地时 重新设定目标地和路径
fw1.bList[2]=""
ep.setv(a[u.aimn])
u.path=this.getPath(sp,ep)
}
//根据不同状态改变工程兵的图形
if(u.task=="mining"&&u.aimn==1)
u.children(1).children(0).style.posLeft=-u.cw
if(u.task=="gasing"&&u.aimn==1)
u.children(1).children(0).style.posLeft=-2*u.cw
if((u.task=="mining")&&u.aimn==2){
u.children(1).children(0).style.posLeft=0
race[cRace].mine+=8
refVal()
}
if((u.task=="gasing")&&u.aimn==2){
u.children(1).children(0).style.posLeft=0
race[cRace].ves+=8
refVal()
}
//改变aimn的值,代表不同状态
// 0 正常 1 采满 2 放入基地
u.aimn=(u.aimn+1)%a.length
}
return
}
//走路时的晃动效果
u.tmDir=(parseInt(u.tmDir)+1)%4
//不知什么作用
u.tmMove=(parseInt(u.tmMove)+1)%5
//路线行走(速度)
ep.setv(u.path.slice(0,(u.path+";").indexOf(";")))
ep.setv(ep.x*40-(u.cw-40)/2,ep.y*30-(u.cw-30)/2)
if(Math.abs(ep.x-u.style.posLeft)<u.speed)
u.style.posLeft=ep.x
if(Math.abs(ep.y-u.style.posTop)<u.speed)
u.style.posTop=ep.y
sp.setv(u.style.posLeft,u.style.posTop)
dp.setv(ep.x==sp.x ? 0 : (ep.x>sp.x ? 1 : -1),ep.y==sp.y ? 0 : (ep.y>sp.y ? 1 : -1))
if(dp.v=="0,0"){
u.path=u.path.slice((u.path+";").indexOf(";")+1)
if(u.children(1).offsetWidth==u.offsetWidth*3)
u.children(1).scrollLeft=u.children(1).style.filter=="" ? 0 : 2*u.offsetWidth
return
}
this.setDir(u,dp)
if(dp.x*dp.y==0){
u.style.posLeft+=dp.x*u.speed
u.style.posTop+=dp.y*u.speed
}
else{
u.style.posLeft+=dp.x*(u.speed>2 ? u.speed-1 : u.speed)
if(u.tmDir!=0)
u.style.posTop+=dp.y*(u.speed>2 ? u.speed-1 : u.speed)
}
sp.setv(parseInt((u.style.posLeft+u.cw/2)/40),parseInt((u.style.posTop+u.cw/2)/30))
u.px=sp.x
u.py=sp.y
if(u.className=="unit_ground")
u.style.zIndex =sp.y
eval(u.id+"_mini").style.posLeft=sp.x*2
eval(u.id+"_mini").style.posTop=sp.y*2
}
//设置方向
this.setDir=function(u,dp){
var n=2,f=""
if(dp.v=="1,1"||dp.v=="-1,1")
n=3
if(dp.v=="0,1")
n=4
if(dp.v=="-1,1")
f="fliph"
if(dp.v=="-1,0")
f="fliph"
if(dp.v=="-1,-1")
f="fliph"
if(dp.v=="0,-1")
n=0
if(dp.v=="1,-1"||dp.v=="-1,-1")
n=1
u.children(1).children(0).style.posTop=-n*u.children(1).style.posWidth
u.children(1).style.filter=f
u.face=n+f.slice(0,1)
if(u.mvstyle=="walk"&&u.tmMove==4){
u.pose=(parseInt(u.pose)+1)%4
n=u.pose
if(dp.y=="")
n=u.pose<2 ? u.pose : (u.pose==2 ? 0 : 2)
else
n=u.pose<2 ? 2-u.pose : (u.pose==2 ? 2 : 0)
u.children(1).scrollLeft=n*u.children(1).style.posWidth
}
}
//返回某点是否与某方的点集重合
this.inBlock=function(p){
return (";"+this.bList[0]+";"+this.bList[1]+";"+this.bList[2]+";").indexOf(";"+p.v+";")>-1 ? true : false
}
//没有使用
this.paint=function(p,c){
if(p.x>=0&&p.y>=0)
tbMap.rows(p.y).cells(p.x).bgColor=c
}
this.isPass=function(sp,ep){
var cp=new pt(sp.v),b=true
for(var ti=0;ti<500;ti++){
cp.setv(ep.x==cp.x ? cp.x : (ep.x>cp.x ? cp.x+1 : cp.x-1),ep.y==cp.y ? cp.y : (ep.y>cp.y ? cp.y+1 : cp.y-1))
if(this.inBlock(cp)){
b=false
break
}
if(cp.v==ep.v)
break
}
return b
}
this.getEndPos=function(ep,ut){
var rv=new Array("","")
var cp=new pt(),i,j,ol,o
var ad,a=new Array("0,0","1,0","1,1","0,1","-1,1","-1,0","-1,-1","0,-1","1,-1","2,0","2,1","2,2","1,2","0,2","-1,2","-2,2","-2,1","-2,0","-2,-1","-2,-2","-1,-2","0,-2","1,-2","2,-2","2,-1")
for(i=this.cEndPos;i<a.length;i++){
a[i]=a[i].split(",")
cp.setv(ep.x+parseInt(a[i][0]),ep.y+parseInt(a[i][1]))
if(ut=="airUnit"){
rv[0]=cp.v
break
}
else if(!this.inBlock(cp)&&cp.x>-1&&cp.y>-1){
if(ut=="mining"){
ad=this.uList[1].split(",")
for(j in ad){
o=eval(ad[j])
if(Math.abs(cp.x-o.px)+Math.abs(cp.y-o.py)==1){
rv[0]=cp.v
rv[1]=o.id
break
}
}
if(rv[0]!="")
break
}
else{
rv[0]=cp.v
break
}
}
}
this.cEndPos=i+1
return rv
}
//返回移动路径
this.getPath=function(sp,ep){
var cp=new pt(sp.v),op=new pt(),np=new pt()
var l="",s,f=0
while(cp.v!=ep.v){
np.setv(ep.x==cp.x ? cp.x : (ep.x>cp.x ? cp.x+1 : cp.x-1),ep.y==cp.y ? cp.y : (ep.y>cp.y ? cp.y+1 : cp.y-1))
if(this.inBlock(np)&&!this.inBlock(cp)&&f==0){
l+=cp.v+";"
op.setv(cp.v)
}
if(!this.inBlock(np)&&this.inBlock(cp)){
s=this.getSeg(op,np)
f=s=="" ? 1 : 0
l+=s
}
if(!this.inBlock(cp)&&f==0)
l+=cp.v+";"
cp.setv(np.v)
}
l=sp.v+";"+l
l=f==0 ? l+ep.v : l.slice(0,-1)
a=l.split(";")
l=""
var tp1=new pt(),tp2=new pt()
for(i=0;i<a.length-1;i++){
tp1.setv(a[i])
n=i
for(j=i+1;j<a.length;j++){
tp2.setv(a[j])
if(this.isPass(tp1,tp2)){
n=j
}
}
if(i!=0)
l+=tp1.v+";"
tp2.setv(a[n])
l+=tp2.v+";"
i=n
}
l=l.slice(0,-1)
return l
}
this.getSeg=function(sp,ep){
var bpt=new pt(),cpt=new pt(),bp1=new pt(),bp2=new pt(),cp1=new pt(sp.v),cp2=new pt(sp.v)
var l="",l1="",l2="",f,open1=true,open2=true
bp1.setv(ep.x==sp.x ? sp.x : (ep.x>sp.x ? sp.x+1 : sp.x-1),ep.y==sp.y ? sp.y : (ep.y>sp.y ? sp.y+1 : sp.y-1))
bp2.setv(bp1.v)
for(var ti=0;ti<100;ti++){
f=0
for(i=0;i<14;i++){
cpt.setv(cp1.x+this.adp[i][0],cp1.y+this.adp[i][1])
if(bp1.v==cpt.v)
f=1
if(f==1&&!this.inBlock(cpt)&&this.adp[i][0]*this.adp[i][1]==0)
break
if(this.inBlock(cpt))
bpt.setv(cpt.v)
}
bp1.setv(bpt.v)
cp1.setv(cpt.v)
l1+=cp1.v+";"
f=0
for(i=13;i>=0;i--){
cpt.setv(cp2.x+this.adp[i][0],cp2.y+this.adp[i][1])
if(bp2.v==cpt.v)
f=1
if(f==1&&!this.inBlock(cpt)&&this.adp[i][0]*this.adp[i][1]==0)
break
bpt.setv(cpt.v)
}
bp2.setv(bpt.v)
cp2.setv(cpt.v)
if(cp1.v==sp.v&&cp2.v==sp.v)
break
l2+=cp2.v+";"
if(cp1.x<0||cp1.y<0)
open1=false
if(cp2.x<0||cp2.y<0)
open2=false
if(!open1&&!open2)
break
if(cp1.v==ep.v&&open1){
l=l1
break
}
if(cp2.v==ep.v&&open2){
l=l2
break
}
}
return l
}
}
//相当于点的类
function pt(x,y){
this.setv=function(x,y){
if(y!=null){
this.x=x
this.y=y
}
else{
var a=x.split(",")
this.x=parseInt(a[0])
this.y=parseInt(a[1])
}
this.v=this.x+","+this.y
}
if(x!=null)
this.setv(x,y)
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -