Advertisement
Guest User

Gap functions

a guest
Jan 9th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.39 KB | None | 0 0
  1.  
  2. let GAP_IN = 999901; let GAP_OUT = 999902; let GAP_HOLD = 999903; let GAP_VOID = 999904;
  3.  
  4. function CreateGapA1(x,y,opening,width,angle,dur,  type, outgap)    {
  5.    
  6.     let gap = ObjPrim_Create(OBJ_SPRITE_2D);
  7.     Obj_SetValue(gap,"Type",type);
  8.    
  9.     //let x0 = rotate(x-width/2,angle); let x1 = rotate(x+width/2,angle);
  10.     //let y0 = rotate(y-width/2,angle); let y1 = rotate(y+width/2,angle);
  11.     //Obj_SetValue(gap,"Endpoints",[x0,y0,x1,y1]);
  12.    
  13.     let midx = x; let midy = y;
  14.     let endpoints = rotate(x-width/2,y-opening/2,x,y,angle) ~ rotate(x+width/2,y+opening/2,x,y,angle);
  15.     let x0=endpoints[0]; let y0=endpoints[1]; let x1=endpoints[2]; let y1=endpoints[3];
  16.     Obj_SetValue(gap,"Endpoints",[x0,y0,x1,y1]);
  17.    
  18.    
  19.     RenderGap(gap,x,y, width/44,opening/114, angle, dur);
  20.    
  21.     if(type==GAP_IN){ TInGap(gap,outgap); }
  22.    
  23.     return gap;
  24.    
  25.     task RenderGap(tobj,Xpos,Ypos,xscale,yscale,angle,duration){
  26.         let Yangle = 90;
  27.         //let obj = ObjPrim_Create(OBJ_SPRITE_2D);
  28.        
  29.         SE_Play(se_gap,120);
  30.         ObjPrim_SetTexture(gap, CSD~"../img/gap.png");
  31.         ObjSprite2D_SetSourceRect(gap,0, 0, 44, 114);
  32.         ObjRender_SetScaleXYZ(gap,xscale,yscale,1);
  33.         Obj_SetRenderPriorityI(gap,30);
  34.         ObjSprite2D_SetDestCenter(gap);
  35.         ObjRender_SetBlendType(gap,BLEND_ALPHA);
  36.         ObjRender_SetPosition(gap,Xpos,Ypos,0);
  37.         ObjRender_SetAngleXYZ(gap,0,Yangle,angle);
  38.         loop(15){
  39.             Yangle-=6;
  40.             ObjRender_SetAngleXYZ(gap,0,Yangle,angle);
  41.             yield;
  42.         }
  43.         wait(duration);
  44.         loop(15){
  45.             Yangle+=6;
  46.             if(!Obj_IsDeleted(gap)){ObjRender_SetAngleXYZ(gap,0,Yangle,angle);}
  47.             yield;
  48.         }
  49.         Obj_Delete(gap);
  50.     }
  51.    
  52.    
  53.    
  54.     task TInGap(gap,outgap) {
  55.  
  56.         let intersectwidth = max(width/3,15);
  57.         let shots;
  58.         let x; let y; let t; let a;
  59.        
  60.         while(!Obj_IsDeleted(gap)){
  61.        
  62.        
  63.             shots = GetShotIdInCircleA2(midx,midy,opening/2,TARGET_ALL);
  64.             ascent(i in 0..length(shots)){
  65.                 if(IsIntersected_Line_Circle(x0,y0,x1,y1,intersectwidth, ObjMove_GetX(shots[i]),ObjMove_GetY(shots[i]),15) && !Obj_GetValueD(shots[i],"WasGapped",false)) {
  66.                     x=ObjMove_GetX(shots[i]); y=ObjMove_GetY(shots[i]);
  67.                    
  68.                     t = (((x0-x)^2 + (y0-y)^2)^0.5)/opening;
  69.                     a = ObjMove_GetAngle(shots[i]) - angle; //-90
  70.                    
  71.                     GapWarp(shots[i],t,a,outgap);
  72.                    
  73.                     //Obj_SetValue(outgap,"Inbox", Obj_GetValue(outgap,"Inbox") ~ [[shots[i],t/opening]])
  74.                 }
  75.             }
  76.            
  77.             yield;
  78.         }
  79.        
  80.     }
  81.    
  82.    
  83.    
  84.    
  85.     function GapWarp(shot,t,a,outgap) {
  86.        
  87.     //  let midx = ObjRender_GetX(outgap); let midy = ObjRender_GetY(outgap);
  88.         let opening = ObjRender_GetScaleY(outgap)*114;
  89.     //  let width   = ObjRender_GetScaleX(outgap)*44;
  90.         let angle = ObjRender_GetAngleZ(outgap);
  91.         let endpoints = Obj_GetValueD(outgap,"Endpoints",[0,0,0,0]);
  92.     //  let x0=endpoints[0]; let y0=endpoints[1]; let x1=endpoints[2]; let y1=endpoints[3];
  93.         let outpos = rotate( 0,opening*t, 0,0, angle);
  94.         if(Obj_IsDeleted(shot)){WriteLog("GAP: Tried to warp deleted shot! ~~~~~~~~~~~~~~~~~~~~~~~~~~~");return;}
  95.         ObjMove_SetPosition(shot,endpoints[0]+outpos[0],endpoints[1]+outpos[1]);
  96.         ObjMove_SetAngle(shot,angle+a);
  97.         Obj_SetValue(shot,"WasGapped",true);
  98.        
  99.     //  DebugWarnShot(midx+outpos[0],midy+outpos[1]);
  100.        
  101.     //  WriteLog("GAP:  Warped shot to " ~ IntToString(midx+outpos[0]) ~ ", " ~ IntToString(midy+outpos[1]) ~ ", gap " ~ IntToString(midx) ~ ", " ~ IntToString(midy)  );
  102.        
  103.         //pseudocode for "holding" shots and moving them to the gap after a delay
  104.         //if(hold){setx(-1000);wait;}set(pos,angle);
  105.        
  106.     }
  107.    
  108.    
  109.  
  110.    
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement