Guest User

Shot copy function

a guest
Jan 23rd, 2018
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.89 KB | None | 0 0
  1. //Andi - Copy a shot as best as I could manage
  2. //Things without getters need to be noted in the shot's dictionary to be used
  3. function CopyShot(shot){
  4.        
  5.     let x = ObjMove_GetX(shot);
  6.     let y = ObjMove_GetY(shot);
  7.     let spd = ObjMove_GetSpeed(shot);
  8.     let ang = ObjMove_GetAngle(shot);
  9.     let type = ObjShot_GetImageID(shot);
  10.  
  11.     let acc  = Obj_GetValueD(shot,"Acceleration",0);
  12.     let angv = Obj_GetValueD(shot,"AngularVelocity",0);
  13.     let mspd = Obj_GetValueD(shot,"MaxSpeed",9999);
  14.    
  15.     let spellresist = ObjShot_IsSpellResist(shot);
  16.     let intersect = Obj_GetValueD(shot,"IsIntersectionEnable",true);
  17.     let scalexyz = [ObjRender_GetScaleX(shot),ObjRender_GetScaleY(shot),ObjRender_GetScaleZ(shot)];
  18.     let blendtype = ObjRender_GetBlendType(shot);
  19.     let color = Obj_GetValueD(shot,"Color",[255,255,255]);
  20.     let alpha = Obj_GetValueD(shot,"Alpha",255);
  21.    
  22.     let length=NULL; let width=NULL; let dur=NULL; let del=0;
  23.    
  24.     let cpy=NULL;
  25.  
  26.     if(Obj_GetType(shot)==OBJ_SHOT){
  27.         cpy = CreateShotA1(x,y,spd,ang,type,0);
  28.     }
  29.     else{
  30.         length = ObjLaser_GetLength(shot);
  31.         width = Obj_GetValueD(shot,"Width",15);
  32.         dur = Obj_GetValueD(shot,"Duration",30);
  33.         del = Obj_GetValueD(shot,"Delay",tern(Obj_GetType(shot)==OBJ_STRAIGHT_LASER, 15, 0));
  34.         if(Obj_GetType(shot)==OBJ_LOOSE_LASER){
  35.             cpy = CreateLooseLaserA1(x,y,spd,ang, length, width, type, del);
  36.         }
  37.         if(Obj_GetType(shot)==OBJ_STRAIGHT_LASER){
  38.             cpy = CreateStraightLaserA1(x,y,ang,length,width, dur, type, del);
  39.         }
  40.         if(Obj_GetType(shot)==OBJ_CURVE_LASER){
  41.             cpy = CreateCurveLaserA1(x,y,spd,ang, length, width, type, del);
  42.         }
  43.     }
  44.     ObjMove_SetAcceleration(cpy,acc);
  45.     ObjMove_SetAngularVelocity(cpy,angv);
  46.     ObjMove_SetMaxSpeed(cpy,mspd);
  47.     ObjRender_SetColor(cpy,color[0],color[1],color[2]);
  48.     ObjRender_SetAlpha(cpy,alpha);
  49.     ObjRender_SetBlendType(cpy, blendtype);
  50.     ObjRender_SetScaleXYZ(cpy, scalexyz[0],scalexyz[1],scalexyz[2]);
  51.     ObjShot_SetSpellResist(cpy,spellresist);
  52.     ObjShot_SetIntersectionEnable(cpy,intersect);  
  53.     Obj_SetRenderPriority(cpy,Obj_GetRenderPriority(shot));
  54.     setvals(cpy, ["Acceleration","AngularVelocity","MaxSpeed","Alpha"]  //"IsIntersectionEnable","Color","Alpha"]
  55.                 ,[acc           ,angv             ,mspd      ,alpha  ]);    //,intersect             ,color  ,alpha  ]);
  56.     setval(cpy,"Color",color); setval(cpy,"IsIntersectionEnable",intersect);
  57.     return cpy;
  58. }
  59.  
  60.  
  61.  
  62. //Functions to do stuff with object dictionaries with less typing
  63. function getval(obj,k){return Obj_GetValue(obj,k);}
  64. function getvald(obj,k,d){return Obj_GetValueD(obj,k,d);}
  65. function isval(obj,k){return Obj_IsValueExists(obj,k);}
  66. function setval(obj,k,v){Obj_SetValue(obj,k,v);}
  67. function setvalsf(obj,k,v){if(!Obj_IsDeleted(obj)){setval(obj,k,v);}}
  68. function remval(obj,k){Obj_DeleteValue(obj,k);}
  69.  
  70. function setvals(obj,keys,vals){
  71.     while(length(keys)>length(vals)){vals=vals~[NULL];}
  72.     ascent(i in 0..length(keys)){
  73.         if(vals[i]!=NO_CHANGE || !isval(obj,keys[i])){
  74.             setval(obj,keys[i],vals[i]);
  75.         }
  76.     }
  77. }
  78.  
  79. //Fuck it have some more laziness functions
  80.  
  81. function getx(obj){return ObjMove_GetX(obj);}
  82. function gety(obj){return ObjMove_GetY(obj);}
  83. function geta(obj){return ObjMove_GetAngle(obj);}
  84. function getsp(obj){return ObjMove_GetSpeed(obj);}
  85.  
  86. function getrx(obj){return ObjRender_GetX(obj);}
  87. function getry(obj){return ObjRender_GetY(obj);}
  88. function getra(obj){return ObjRender_GetAngleZ(obj);}
  89.  
  90. function setx(obj,x){ObjMove_SetX(obj,x);}
  91. function sety(obj,y){ObjMove_SetY(obj,y);}
  92. function seta(obj,a){ObjMove_SetAngle(obj,a);}
  93. function setsp(obj,s){ObjMove_SetSpeed(obj,s);}
  94. function setpos(obj,x,y){ObjMove_SetPosition(obj,x,y);}
  95. function setrpos(obj,x,y,z){ObjRender_SetPosition(obj,x,y,z);}
  96.  
  97. //check whether an object is safe to dereference
  98. function isnull(obj){
  99.     //can't check if it hasn't been set, initialize to NULL if there's a chance it'll come up
  100.     if(!obj){return true;} //if it's null
  101.     if(Obj_IsDeleted(obj)){return true;} //if it's been deleted
  102.     return false;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment