0x7d330020…da62sent to0x99a9b7c1…b069·#16,775,828·view on Etherscan
class Walker{constructor(x,y,angle,sides,rot){this.ox=x,this.oy=y,this.x=x,this.y=y,this.angle=angle,this.sides=sides,this.rot=rot,this.v=1.5,this.life=0,this.alive=!0,this.mod=10*prand(2,10),this.offs=prng(1e7),this.style=1,this.nextSlider=prand(60,200)}step(g){this.life++,this.nextSlider--,this.x+=this.v*cos(this.angle),this.y+=this.v*sin(this.angle),this.alive=this.x>0&&this.x<DW&&this.y>0&&this.y<DH,g.strokeWeight(1.5),g.stroke(0,0,BLACK?80:WHITE?10:30),g.point(this.x,this.y),this.nextSlider<=0&&(this.nextSlider=prand(150,300),SLIDERS.sliders.push(new Slider(this.ox,this.oy,this.x,this.y,this.angle,14)))}}class WalkerList{constructor(g){this.walkers=[],this.g=g}step(){for(let w of this.walkers)w.step(this.g);for(let i=this.walkers.length-1;i>=0;i--)this.walkers[i].alive||this.walkers.splice(i,1)}}class Slider{constructor(ox,oy,x,y,angle,s){this.ox=ox,this.oy=oy,this.x=x,this.y=y,this.angle=angle,this.v=prand(5,15)/15,this.s=s,this.w=s*prand(1,4),this.hue=(HUE+prng(30))%360}step(){stop&&(this.x+=this.v*cos(this.angle),this.y+=this.v*sin(this.angle),(this.x<0||this.x>DW||this.y<0||this.y>DH)&&(this.x=this.ox,this.y=this.oy,this.w=this.s*prand(1,4),this.v=prand(5,15)/15)),graphics2.push(),graphics2.translate(this.x,this.y),graphics2.rotate(this.angle),graphics2.stroke(HUE,BLACK?10:0,BLACK?80:WHITE?10:50),graphics2.strokeWeight(2.5),graphics2.fill(this.hue,WHITE?0:25,BLACK?5:95),graphics2.rect(.5*-this.w,.5*-this.s,this.w,this.s),graphics2.pop()}}class SliderList{constructor(){this.sliders=[]}step(){for(let s of this.sliders){for(let s2 of this.sliders)if(s!=s2&&s.ox==s2.ox&&s.oy==s2.oy){let d=(s.w+s2.w)/2;if(dist(s.x,s.y,s2.x,s2.y)<d){let v=s.v;s.v=s2.v,s2.v=v;let ang=atan2(s2.y-s.y,s2.x-s.x);s2.x=s.x+d*cos(ang),s2.y=s.y+d*sin(ang)}}s.step()}}}
class NWList{constructor(g,wscale=1){this.g=g,this.scale=wscale,this.walkers=[];let bx=DW*(SI?.3:.1),by=.1*DW,bxf=.1*DW;this.w=DW-2*bx,this.h=DH-2*by,this.hue=prng(300),this.squares=0,decals.noFill(),decals.rectMode(CENTER),decals.stroke(0,0,100),decals.strokeWeight(2*bxf),decals.rect(DW/2,DH/2,DW,DH),this.makeFrame(bx,by,DW-2*bx,DH-2*by)}makeFrame(x,y,w,h){let bx=80*R,by=bx;bx=by=0;let frame={x:x+bx,y:y+0,w:w-2*bx,h:h-0,sideslist:SIDESLIST,blood:!1},cx1,cx2,cy;this.frame=frame,frame.vg=new Array(frame.w);for(let i=0;i<frame.w;i++){frame.vg[i]=new Array(frame.h);for(let j=0;j<frame.h;j++)cx1=map(i,0,frame.w-1,VGS[0],VGS[1]),cx2=map(i,0,frame.w-1,VGS[3],VGS[2]),cy=sq(map(j,0,frame.h-1,0,1)),frame.vg[i][j]=cx2*cy+cx1*(1-cy)}}move(){for(let i=0;i<this.walkers.length;i++)this.walkers[i].move();for(let i=this.walkers.length-1;i>=0;i--)this.walkers[i].alive||this.walkers.splice(i,1)}display(){for(let i=0;i<this.walkers.length;i++)this.walkers[i].display()}}