Guest User

Untitled

a guest
Jan 18th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package classes
  2. {
  3.     import net.flashpunk.*;
  4.     import net.flashpunk.masks.*;
  5.     import net.flashpunk.graphics.Image;
  6.    
  7.     import net.flashpunk.graphics.Spritemap;
  8.     import net.flashpunk.utils.Input
  9.     import net.flashpunk.utils.Key
  10.    
  11.     import it.svelto.graphic.importers.SpriteBuddy;
  12.     import it.svelto.graphic.flashpunk.FlexiSpriteMap;
  13.    
  14.    
  15.     public class Blackbox extends Entity
  16.     {
  17.         public var lifes:int;
  18.         public var energy:int;
  19.         public var velocity:Number;
  20.         public var status:String;
  21.         private var hFriction:Number;
  22.         private var vFriction:Number;
  23.         private var xSpeed:Number=0;
  24.         private var ySpeed:Number = 0;
  25.         private var gravity:Number = 0.4;
  26.         private var jumpPower:Number = 12;
  27.         private var onTheGround:Boolean = false;
  28.         private var pressed:Boolean = false;
  29.         private var jumped:Boolean = false;
  30.        
  31.         //(0 = no, 1 = left, 2 = right)
  32.         public var walljumping:int = 0;
  33.        
  34.         //(false = no, true = yes)
  35.         public var doublejump:Boolean = false;
  36.        
  37.         private var activePixelMask:Boolean = false;
  38.        
  39.         [Embed(source = '../assets/charsets/blackbox.gif')] private const PLAYER_IMG:Class;
  40.         public var blackboxSpriteMap:Spritemap;
  41.         private var pixemask:Pixelmask;
  42.        
  43.         public function Blackbox(xpos:Number,ypos:Number)
  44.         {
  45.            
  46.             type = "Player";
  47.             lifes = 3;
  48.             energy = 100;
  49.             velocity = 0.05;
  50.             status = "normal";
  51.            
  52.            
  53.             blackboxSpriteMap = new Spritemap(PLAYER_IMG,64,64);
  54.            
  55.             pixemask = new Pixelmask(blackboxSpriteMap.getBuffer());
  56.             blackboxSpriteMap.add("fermo", [0], 0, false);
  57.             blackboxSpriteMap.add("jump", [3], 0, false);
  58.             blackboxSpriteMap.add("falling", [3], 0, false);
  59.             blackboxSpriteMap.add("slideWall", [5], 0, false);
  60.             blackboxSpriteMap.add("walk", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 20, true);
  61.             graphic = blackboxSpriteMap;
  62.             blackboxSpriteMap.play("fermo");           
  63.             hFriction=0.95;
  64.             vFriction = 0.99;
  65.             blackboxSpriteMap.originX = 20;
  66.             blackboxSpriteMap.originY = 17;
  67.             setHitbox(27, 47, 0, 0);
  68.            
  69.            
  70.             x = xpos;
  71.             y = ypos;
  72.         }
  73.        
  74.         override public function update():void //aggiorna
  75.         {
  76.            
  77.             if (Input.check(Key.LEFT)) { moveLeft(); pressed = true; }
  78.             if (Input.check(Key.RIGHT)) { moveRight();pressed = true;  }
  79.             if (Input.released(Key.LEFT) || Input.released(Key.RIGHT) ) { stopMove() }
  80.             if ((Input.check(Key.LEFT)) && (Input.check(Key.RIGHT))) { fixMove(); }
  81.  
  82.             xSpeed*=hFriction;
  83.             ySpeed*=vFriction;
  84.            
  85.             enemyCollision();
  86.            
  87.             updateMaskCollision();
  88.             updateAnimation();
  89.             checkGravity();
  90.            
  91.  
  92.         }
  93.        
  94.        
  95.        
  96.         //funzioni
  97.        
  98.         public function fixMove():void {
  99.             if(onTheGround){
  100.             xSpeed = 0;    
  101.             x = x;
  102.             }
  103.         }
  104.         public function togglePixelMask():void
  105.         {
  106.         /**
  107.          * Attiva la maschera di collisione per pixel o la hitbox.
  108.          */
  109.             if (activePixelMask) {
  110.                 activePixelMask = false;
  111.                 blackboxSpriteMap.originX = 20;
  112.                 blackboxSpriteMap.originY = 17;
  113.                 setHitbox(27, 47, 0, 0);
  114.             }
  115.             else {
  116.                 activePixelMask = true;
  117.                 updateMaskCollision();
  118.             }
  119.         }
  120.         public function updateMaskCollision():void {
  121.         /**
  122.          * Aggiorna la maschera di Hitbox.
  123.          */
  124.             if(activePixelMask){
  125.                 pixemask = new Pixelmask(blackboxSpriteMap.getBuffer());
  126.                 mask = pixemask;
  127.             }
  128.         }
  129.        
  130.         public function updateAnimation():void {
  131.         /**
  132.          * Aggiorna l'animazione.
  133.          */
  134.             if ((onTheGround) && (xSpeed == 0)) blackboxSpriteMap.play("fermo", false);
  135.             if ((onTheGround) && (xSpeed != 0)) blackboxSpriteMap.play("walk", false);
  136.             if ((onTheGround) && (xSpeed != 0) && (ySpeed != 0)) blackboxSpriteMap.play("falling", false);
  137.             if ((!onTheGround) && (ySpeed != 0)) blackboxSpriteMap.play("jump");
  138.             if (collide("wall", x - 1, y) && (!onTheGround))blackboxSpriteMap.play("slideWall",false);
  139.            
  140.         }
  141.        
  142.         public function checkGravity():void
  143.         {
  144.         /**
  145.          * Aggiorna la y e controlla l'intenzione del Jump.
  146.          */
  147.             if (collide("wall", x, y + 1)) {
  148.                 walljumping = 0;
  149.                 onTheGround = true;
  150.                 ySpeed=0;
  151.                 if (Input.check(Key.X)) { jump() }
  152.                
  153.             } else {
  154.                 ySpeed+=gravity;
  155.             }
  156.             if (Math.abs(xSpeed)<1&&! pressed) {
  157.                 xSpeed=0;
  158.             }
  159.             adjustXPosition();
  160.             adjustYPosition();
  161.            
  162.            
  163.         }
  164.        
  165.         public function enemyCollision():Boolean {
  166.         /**
  167.          * Controlla se sta hittando un nemico.
  168.          *
  169.          * @return  True se sta hittando.
  170.          */
  171.             if (collide("Enemy", x, y))
  172.             {
  173.                
  174.                 FP.console.log("Tocco")
  175.                 return true;
  176.             }
  177.             else  
  178.             {
  179.                 FP.console.log("Non tocco");
  180.                 return false;
  181.             }
  182.         }
  183.        
  184.        
  185.         public function wallJump():void
  186.         {
  187.             if (collide("wall", x - 1, y)&& jumped && !onTheGround)
  188.                 {
  189.                     ySpeed -= jumpPower;            //jump up
  190.                     xSpeed += xSpeed * 2;   //move right fast
  191.                     walljumping = 2;            //and set wall jump direction
  192.                    
  193.                    
  194.                 }
  195.                 //same as above
  196.             if (collide("wall", x + 1, y)&& jumped && !onTheGround)
  197.             {
  198.                     ySpeed -= jumpPower;
  199.                     xSpeed -= xSpeed * 4;
  200.                     walljumping = 1;
  201.                
  202.                    
  203.             }
  204.            
  205.            
  206.         }
  207.        
  208.         public function jump():void
  209.         {  
  210.         /**
  211.          * salta.
  212.          */
  213.             jumped = false;
  214.            
  215.            
  216.             if (onTheGround)
  217.             {
  218.                 ySpeed -= jumpPower;
  219.                 jumped = true;
  220.             }
  221.             onTheGround = false;       
  222.                
  223.            
  224.         }
  225.    
  226.         public function moveLeft():void
  227.         {
  228.         /**
  229.          * Muove a sinistra.
  230.          */
  231.        
  232.             if(onTheGround && !(Input.check(Key.RIGHT))){
  233.                 blackboxSpriteMap.flipped = true;
  234.                 xSpeed-=velocity;
  235.                 adjustXPosition();
  236.             }
  237.             if (!onTheGround) {
  238.                 blackboxSpriteMap.flipped = true;
  239.                 xSpeed-=velocity;
  240.                 adjustXPosition();
  241.             }
  242.            
  243.         }
  244.        
  245.         public function moveRight():void
  246.         {
  247.         /**
  248.          * Muove a destra.
  249.          */if(onTheGround && !(Input.check(Key.LEFT))){
  250.                 blackboxSpriteMap.flipped = false;
  251.                 xSpeed+=velocity;
  252.                 adjustXPosition();
  253.             }
  254.             if (!onTheGround) {
  255.                 blackboxSpriteMap.flipped = false;
  256.                 xSpeed+=velocity;
  257.                 adjustXPosition();
  258.             }
  259.            
  260.         }
  261.        
  262.         public function stopMove():void
  263.         {
  264.         /**
  265.          * Ferma il movimento.
  266.          */
  267.             xSpeed=0;
  268.             adjustXPosition();
  269.         }
  270.        
  271.         private function adjustXPosition():void {
  272.         /**
  273.          * Aggiorna la posizione X.
  274.          */
  275.             for (var i:int=0; i<Math.abs(xSpeed); i++) {
  276.                 if (! collide("wall",x+FP.sign(xSpeed),y)) {
  277.                 //x += FP.sign(xSpeed);
  278.                     moveBy(FP.sign(xSpeed), 0);
  279.                 } else {
  280.                     xSpeed=0;
  281.                     break;
  282.                 }
  283.             }
  284.            
  285.             if (Math.abs(xSpeed)<1&&! pressed) {
  286.                 xSpeed=0;
  287.             }
  288.         }
  289.         private function adjustYPosition():void {
  290.            
  291.         /**
  292.          * Aggiorna la posizione Y.
  293.          */
  294.             for (var i:int=0; i<Math.abs(ySpeed); i++) {
  295.                 if (! collide("wall",x,y+FP.sign(ySpeed))) {
  296.                     //y+=FP.sign(ySpeed);
  297.                     moveBy(0,FP.sign(ySpeed));
  298.                 } else {
  299.                     ySpeed=0;
  300.                     break;
  301.                 }
  302.             }
  303.         }
  304.        
  305.     }
  306.  
  307. }
Add Comment
Please, Sign In to add comment