Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let GAP_IN = 999901; let GAP_OUT = 999902; let GAP_HOLD = 999903; let GAP_VOID = 999904;
- function CreateGapA1(x,y,opening,width,angle,dur, type, outgap) {
- let gap = ObjPrim_Create(OBJ_SPRITE_2D);
- Obj_SetValue(gap,"Type",type);
- //let x0 = rotate(x-width/2,angle); let x1 = rotate(x+width/2,angle);
- //let y0 = rotate(y-width/2,angle); let y1 = rotate(y+width/2,angle);
- //Obj_SetValue(gap,"Endpoints",[x0,y0,x1,y1]);
- let midx = x; let midy = y;
- let endpoints = rotate(x-width/2,y-opening/2,x,y,angle) ~ rotate(x+width/2,y+opening/2,x,y,angle);
- let x0=endpoints[0]; let y0=endpoints[1]; let x1=endpoints[2]; let y1=endpoints[3];
- Obj_SetValue(gap,"Endpoints",[x0,y0,x1,y1]);
- RenderGap(gap,x,y, width/44,opening/114, angle, dur);
- if(type==GAP_IN){ TInGap(gap,outgap); }
- return gap;
- task RenderGap(tobj,Xpos,Ypos,xscale,yscale,angle,duration){
- let Yangle = 90;
- //let obj = ObjPrim_Create(OBJ_SPRITE_2D);
- SE_Play(se_gap,120);
- ObjPrim_SetTexture(gap, CSD~"../img/gap.png");
- ObjSprite2D_SetSourceRect(gap,0, 0, 44, 114);
- ObjRender_SetScaleXYZ(gap,xscale,yscale,1);
- Obj_SetRenderPriorityI(gap,30);
- ObjSprite2D_SetDestCenter(gap);
- ObjRender_SetBlendType(gap,BLEND_ALPHA);
- ObjRender_SetPosition(gap,Xpos,Ypos,0);
- ObjRender_SetAngleXYZ(gap,0,Yangle,angle);
- loop(15){
- Yangle-=6;
- ObjRender_SetAngleXYZ(gap,0,Yangle,angle);
- yield;
- }
- wait(duration);
- loop(15){
- Yangle+=6;
- if(!Obj_IsDeleted(gap)){ObjRender_SetAngleXYZ(gap,0,Yangle,angle);}
- yield;
- }
- Obj_Delete(gap);
- }
- task TInGap(gap,outgap) {
- let intersectwidth = max(width/3,15);
- let shots;
- let x; let y; let t; let a;
- while(!Obj_IsDeleted(gap)){
- shots = GetShotIdInCircleA2(midx,midy,opening/2,TARGET_ALL);
- ascent(i in 0..length(shots)){
- if(IsIntersected_Line_Circle(x0,y0,x1,y1,intersectwidth, ObjMove_GetX(shots[i]),ObjMove_GetY(shots[i]),15) && !Obj_GetValueD(shots[i],"WasGapped",false)) {
- x=ObjMove_GetX(shots[i]); y=ObjMove_GetY(shots[i]);
- t = (((x0-x)^2 + (y0-y)^2)^0.5)/opening;
- a = ObjMove_GetAngle(shots[i]) - angle; //-90
- GapWarp(shots[i],t,a,outgap);
- //Obj_SetValue(outgap,"Inbox", Obj_GetValue(outgap,"Inbox") ~ [[shots[i],t/opening]])
- }
- }
- yield;
- }
- }
- function GapWarp(shot,t,a,outgap) {
- // let midx = ObjRender_GetX(outgap); let midy = ObjRender_GetY(outgap);
- let opening = ObjRender_GetScaleY(outgap)*114;
- // let width = ObjRender_GetScaleX(outgap)*44;
- let angle = ObjRender_GetAngleZ(outgap);
- let endpoints = Obj_GetValueD(outgap,"Endpoints",[0,0,0,0]);
- // let x0=endpoints[0]; let y0=endpoints[1]; let x1=endpoints[2]; let y1=endpoints[3];
- let outpos = rotate( 0,opening*t, 0,0, angle);
- if(Obj_IsDeleted(shot)){WriteLog("GAP: Tried to warp deleted shot! ~~~~~~~~~~~~~~~~~~~~~~~~~~~");return;}
- ObjMove_SetPosition(shot,endpoints[0]+outpos[0],endpoints[1]+outpos[1]);
- ObjMove_SetAngle(shot,angle+a);
- Obj_SetValue(shot,"WasGapped",true);
- // DebugWarnShot(midx+outpos[0],midy+outpos[1]);
- // WriteLog("GAP: Warped shot to " ~ IntToString(midx+outpos[0]) ~ ", " ~ IntToString(midy+outpos[1]) ~ ", gap " ~ IntToString(midx) ~ ", " ~ IntToString(midy) );
- //pseudocode for "holding" shots and moving them to the gap after a delay
- //if(hold){setx(-1000);wait;}set(pos,angle);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement