Advertisement
Guest User

Danmakufu player laser 2

a guest
Oct 16th, 2016
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.25 KB | None | 0 0
  1. task CreateNoodleLaser(op_obj,dir,dmg) { //(parent player object, direction of laser, damage output)
  2. let texture = CSD ~ "img/PlayerShotsSheet.png";
  3. let getX;
  4. let getY;
  5. let animPhase = "STATE_OFF"; //animation state
  6. let f = 0; //frame count (60fps)
  7. let ar = GetAllEnemyID;
  8. let fRate = 4; //framerate for animation (format: fRate*x, x = frame #)
  9.  
  10. let obj = ObjShot_Create(OBJ_STRAIGHT_LASER); //Create laser shot object
  11. ObjShot_Regist(obj);
  12. ObjShot_SetDamage(obj,dmg);
  13. ObjShot_SetGraphic(obj,texture);
  14. ObjLaser_SetLength(obj,600);
  15. ObjLaser_SetIntersectionWidth(obj,16);
  16. ObjStLaser_SetAngle(obj,dir);
  17.  
  18. let playerShot = ObjPrim_Create(OBJ_SPRITE_2D); //Create prim object for texture
  19. ObjPrim_SetTexture(playerShot,texture);
  20. ObjSprite2D_SetSourceRect(playerShot,1,1,32,512);
  21. ObjSprite2D_SetDestRect(playerShot,-32,-32,32,600);
  22. ObjRender_SetBlendType(playerShot,BLEND_ALPHA);
  23. ObjRender_SetAlpha(playerShot,0);
  24. ObjRender_SetAngleZ(playerShot,dir);
  25. Obj_SetRenderPriorityI(playerShot,47);
  26. ObjRender_SetScaleXYZ(playerShot,1,1,1);
  27.  
  28. task log(){ //changing the collision test from a while loop to a task makes no difference it seems
  29. if(ObjCol_IsIntersected(obj)) {
  30. WriteLog("collision");
  31. yield;
  32. }
  33. }
  34.  
  35. while(!Obj_IsDeleted(op_obj)) {
  36. if(animPhase == "STATE_OFF") {
  37. if(GetVirtualKeyState(VK_SHOT) % 2 == 1 && GetPlayerState() != STATE_DOWN){
  38. animPhase = "STATE_ON";
  39. }
  40. //yield;
  41. }
  42.  
  43. if(animPhase == "STATE_ON") { //while animPhase is not 1 (exit phase) and key pressed
  44. log();
  45. ObjMove_SetPosition(obj,ObjRender_GetX(op_obj),ObjRender_GetY(op_obj)-16);
  46. ObjRender_SetPosition(playerShot,ObjRender_GetX(op_obj),ObjRender_GetY(op_obj)-16,1);
  47. f++; //frame increment
  48. if(f >= fRate*6) {f = fRate*3;} // Loop animation to frame 12 (start of loop animation)
  49. if(f >= fRate*0 && f < fRate*1) {ObjSprite2D_SetSourceRect(playerShot,256,1,288,512);} //start at noodle appearance
  50. if(f >= fRate*1 && f < fRate*2) {ObjSprite2D_SetSourceRect(playerShot,224,1,256,512);}
  51. if(f >= fRate*2 && f < fRate*3) {ObjSprite2D_SetSourceRect(playerShot,192,1,224,512);}
  52. if(f >= fRate*3 && f < fRate*4) {ObjSprite2D_SetSourceRect(playerShot,1,1,32,512);} //looping portion
  53. if(f >= fRate*4 && f < fRate*5) {ObjSprite2D_SetSourceRect(playerShot,32,1,64,512);}
  54. if(f >= fRate*5 && f < fRate*6) {ObjSprite2D_SetSourceRect(playerShot,64,1,96,512);}
  55.  
  56. if(GetVirtualKeyState(VK_SHOT) % 2 == 0) { //if shot key is pulled, initiate exit animation
  57. animPhase = "STATE_COOL";
  58. ObjShot_SetIntersectionEnable(obj,false);
  59. f = 0;
  60. }
  61. //yield;
  62. }
  63.  
  64. if(animPhase == "STATE_COOL") { //exit animation phase
  65. ObjMove_SetPosition(obj,ObjRender_GetX(op_obj),ObjRender_GetY(op_obj)-16);
  66. ObjRender_SetPosition(playerShot,ObjRender_GetX(op_obj),ObjRender_GetY(op_obj)-16,1);
  67. if(f < fRate*3) {
  68. f++;
  69. if(f >= fRate*0 && f < fRate*1) {ObjSprite2D_SetSourceRect(playerShot,160,1,192,512);} //exit animation
  70. if(f >= fRate*1 && f < fRate*2) {ObjSprite2D_SetSourceRect(playerShot,128,1,160,512);}
  71. if(f >= fRate*2 && f < fRate*3) {ObjSprite2D_SetSourceRect(playerShot,96,1,128,512);}
  72. }
  73. ObjLaser_SetRenderWidth(obj,0);
  74. //yield;
  75.  
  76. if(GetVirtualKeyState(VK_SHOT) % 2 == 1) { //if shot key is pulled, initiate exit animation
  77. animPhase = "STATE_ON";
  78. f = 0;
  79. }
  80. }
  81. ObjShot_SetIntersectionEnable(obj,true); //seems like I need this block of code or else it won't render
  82. ObjLaser_SetRenderWidth(obj,16);
  83. ObjRender_SetAngleZ(playerShot,dir);
  84. ObjRender_SetScaleXYZ(obj,1,1,1);
  85. ObjRender_SetAlpha(playerShot,255);
  86. ObjRender_SetScaleXYZ(playerShot,1,1,1);
  87. ObjShot_SetDamage(obj,dmg);
  88. yield;
  89. }
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement