Package Raid

Source Code of Raid.Parasquid

package Raid;

import org.lwjgl.opengl.GL11;
import org.newdawn.slick.geom.Rectangle;
import org.newdawn.slick.opengl.Texture;


public class Parasquid extends Baddy{

  static String[] texNames = {"res/grass_4.png"};
  static Texture[] textures;
  double damageToBlock = 10;
  double floatYSpeed = .02;
  boolean floating = true;
 
  public Parasquid(Environment env, double startx, double starty){
    x = startx;
    y = starty;
    width = 16;
    height = 16;
    maxLife = 100;
    life = 100;
    xSpeed = 0;
    maxXSpeed = 0.03;
    ySpeed = 0;
    maxYSpeed = 0.25;
    gravity = 0.0006;
    facing = -1;
    type = BaddyType.PARASQUID;
    maskWidth = 14;
    maskHeight = 16;
    mask = new Rectangle((float)(x-maskWidth/2), (float)y, (float)(maskWidth), (float)maskHeight);
    standing = false;
    jumping = false;
    jumpSpacing = 1000;
    timeSinceJump = jumpSpacing + 1;
    maxJumps = 1;
    jumps = 0;
    this.env = env;
    texID = 0;
    texture = Grass.textures[6];
  }
 
 
 
  public boolean takeDamage(double damage){
    life -= damage;
    if (life < 0){
      return true;
    }
    return false;
  }
 
 
  public void doLogic(int delta){
    jumping = false;
    if (floating == true){
      floatDown(delta);
    } else
      crawl(delta);
    updatePhysics(delta);
    mask.setLocation((float)(x - maskWidth/2), (float)y);
   
    //texture = textures[texID];
  }
 
  public void fallingPhysics(int delta){
    ySpeed += gravity*delta;
    standing = false;
    Rectangle newMask = getMask(0, (float)ySpeed);
    if (ySpeed > 0){
      Block[] beneathBlocks = env.getBeneathBlocks(x, y, width);
      for (int i = 0; i < 3; i++){
        if (beneathBlocks[i] != null && beneathBlocks[i].solid && beneathBlocks[i].mask.getMinY() - newMask.getMinY() > 8
            && Utils.intersects(beneathBlocks[i].mask, newMask)){
          floating = false;
          ySpeed = 0;
          y = beneathBlocks[i].y - width;
          standing = true;
          jumps = 0;
          break;
        }
      }
    } else if (ySpeed < 0){
      Block[] aboveBlocks = env.getAboveBlocks(x, y, width);
      for (int i = 0; i < 6; i++){
        if (aboveBlocks[i] != null && aboveBlocks[i].solid
            && Utils.intersects(aboveBlocks[i].mask, newMask)){
          ySpeed = 0;
          y = aboveBlocks[i].y + Block.width;
          break;
        }
      }
    }
  }
 
 
  public void horizontalPhysics(int delta){
    Block[] sideBlocks = env.getSideBlocks(x, y, width);
    Rectangle newMask = getMask((float)xSpeed, 0f);
    if (xSpeed > 0){
      for (int i = 1; i < 6; i+=2){
        if (sideBlocks[i] != null && sideBlocks[i].solid && Utils.intersects(sideBlocks[i].mask, newMask)){
          xSpeed = 0;
          facing = -1;
          x = sideBlocks[i].x - mask.getWidth()/2.0f;
          env.damageBlock(sideBlocks[i].x, sideBlocks[i].y, damageToBlock);
          break;
        }
      }
    } else if (xSpeed < 0) {
      for (int i = 0; i < 6; i+=2){
        if (sideBlocks[i] != null && sideBlocks[i].solid && Utils.intersects(sideBlocks[i].mask, newMask)){
          xSpeed = 0;
          facing = 1;
          x = sideBlocks[i].x + Block.width + mask.getWidth()/2.0f;
          env.damageBlock(sideBlocks[i].x, sideBlocks[i].y, damageToBlock);
          break;
        }
      }
    }
  }
 
  public void floatDown(int delta){
    ySpeed = this.floatYSpeed;
  }
 
 
  public void crawl(int delta){
    if (x >= Raid.windowWidth) {
      facing = -1;
    } else if (x <= 0){
      facing = 1;
    }
    xSpeed = facing*maxXSpeed;
  }
 
 
 
  public void render(){
    //texture = textures[texID];
    GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST);
    texture.bind();
    //GL11.glColor3d((life/2+50)/100.0, (life/2+50)/100.0, (life/2+50)/100.0); // Could make this faster!!
    GL11.glBegin(GL11.GL_QUADS);
      GL11.glNormal3d(0, 0, 1);
      GL11.glTexCoord2d(0.0, 0.0);
      GL11.glVertex3i((int)(x-width/2), (int)y, 0);
      GL11.glTexCoord2d(1.0, 0.0);
      GL11.glVertex3i((int)(x+width/2), (int)y, 0);
      GL11.glTexCoord2d(1.0, 1.0);
      GL11.glVertex3i((int)(x+width/2), (int)(y+width), 0);
      GL11.glTexCoord2d(0.0, 1.0);
      GL11.glVertex3d((int)(x-width/2), (int)(y+width), 0);
    GL11.glEnd();
  }
 
 
}
TOP

Related Classes of Raid.Parasquid

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.