Android Open Source - Castle-Invaders Projectile






From Project

Back to project page Castle-Invaders.

License

The source code is released under:

GNU General Public License

If you think the Android project Castle-Invaders listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.noobygames.castleinvaders;
//ww w. ja  v  a2  s.c om
import com.noobygames.castleinvaders.GameLiving.DamageType;
import com.noobygames.castleinvaders.World.Species;
import com.noobygames.castleinvaders.World.States;

/** @author Tobi **/
public class Projectile extends DynamicGameObject {

  private static final float PROJECTILE_WIDTH = 240;
  private static final float PROJECTILE_HEIGHT = 120;
  private static final float PROJECTILE_MOVE_VELOCITY = -20;
  private boolean hitTarget;
  private double attackDamage;
  private DamageType damageType;
  private float stateTime;
  private float hitTimer;
  private GameLiving owner;

  /**
   * @param x
   *            PosX
   * @param y
   *            PosY
   * @param width
   *            width
   * @param height
   *            height
   * @param caster
   *            The one to "cast" the projectile
   * @param target
   *            The Target - Must be a GameLiving/DynamicGameObject
   * @param arrow
   *            Species (Enum type)
   **/
  public Projectile(float x, float y, float width, float height,
      GameLiving caster, GameLiving target, Species arrow) {
    super(x, y, PROJECTILE_WIDTH, PROJECTILE_HEIGHT, arrow);
    velocity.set(PROJECTILE_MOVE_VELOCITY, 0);
    position.set(x, y-height/2);
    setCenterX(position.x + width / 2);
    attackDamage = caster.mobLevel * 5;
    damageType = caster.damageType;
    this.owner = caster;
    hitTarget = false;
    this.target = target;
    setHitTimer(0);
    setStateTime(0);
  }

  
  /**Checks whether the projectile did collide with its target
   * @return true on collision else false**/
  private boolean checkCollision() {
    if (velocity.x > 0){
      if (getCenterX() >= target.getCenterX())
        return true;
      else
        return false;
    } else if (getCenterX() <= target.getCenterX())
      return true;
    else
      return false;
  }

  
  /** Updates the projectiles position
   * @param deltaTime Time since last frame**/
  public void update(float deltaTime) {
    if (!isHitTarget()) {
      position.x += velocity.x;
      if (checkCollision()) {
        if (target.harm(attackDamage, damageType, owner)
           || target.state == States.die) {
          target = null;
        }
        setHitTarget(true);
      }
    } else
      hitTimer += deltaTime;

    setCenterX(position.x + width / 2);

    stateTime += deltaTime;
  }

  /**@return the stateTime**/
  public float getStateTime() {
    return stateTime;
  }

  /**sets the stateTime
   * the stateTime is the time (in ms) since the last state change
   * @param stateTime stateTime**/
  public void setStateTime(float stateTime) {
    this.stateTime = stateTime;
  }

  /**returns the time since the target is hit
   * @return hitTimer**/
  public float getHitTimer() {
    return hitTimer;
  }

  public void setHitTimer(float hitTimer) {
    this.hitTimer = hitTimer;
  }

  public boolean isHitTarget() {
    return hitTarget;
  }

  public void setHitTarget(boolean hitTarget) {
    this.hitTarget = hitTarget;
  }

}




Java Source Code List

com.noobgygames.castleinvaders.ui.DragonUltiButton.java
com.noobgygames.castleinvaders.ui.ElementSwitcherButton.java
com.noobgygames.castleinvaders.ui.StoreElement.java
com.noobgygames.castleinvaders.ui.TextureElement.java
com.noobygames.castleinvaders.Assets.java
com.noobygames.castleinvaders.CastleInvaders.java
com.noobygames.castleinvaders.DynamicGameObject.java
com.noobygames.castleinvaders.GameLiving.java
com.noobygames.castleinvaders.GameObject.java
com.noobygames.castleinvaders.MainActivity.java
com.noobygames.castleinvaders.Main.java
com.noobygames.castleinvaders.Player.java
com.noobygames.castleinvaders.Projectile.java
com.noobygames.castleinvaders.Settings.java
com.noobygames.castleinvaders.WorldRenderer.java
com.noobygames.castleinvaders.World.java
com.noobygames.castleinvaders.mobs.Croco.java
com.noobygames.castleinvaders.mobs.EarthDragon.java
com.noobygames.castleinvaders.mobs.FireDragon.java
com.noobygames.castleinvaders.mobs.FireTroll.java
com.noobygames.castleinvaders.mobs.GameScreen.java
com.noobygames.castleinvaders.mobs.GreyTroll.java
com.noobygames.castleinvaders.mobs.IceDragon.java
com.noobygames.castleinvaders.mobs.IceTroll.java
com.noobygames.castleinvaders.mobs.Murloc.java
com.noobygames.castleinvaders.mobs.Orc.java
com.noobygames.castleinvaders.mobs.Skeleton.java
com.noobygames.castleinvaders.screens.GameScreen.java
com.noobygames.castleinvaders.screens.MainMenuScreen.java
com.noobygames.castleinvaders.screens.ScoreScreen.java
com.noobygames.castleinvaders.screens.SplashScreen.java
com.noobygames.castleinvaders.screens.StoreScreen.java
com.noobygames.castleinvaders.store.StoreObject.java
com.noobygames.castleinvaders.store.Store.java
com.noobygames.nerzal.castleinvaders.spells.Burning.java
com.noobygames.nerzal.castleinvaders.spells.Freeze.java
com.noobygames.nerzal.castleinvaders.spells.SpellEffect.java
com.noobygames.nerzal.castleinvaders.spells.Spells.java
com.noobygames.utils.ArrayListUtils.java
com.noobygames.utils.ObjectSelectionContainer.java
com.noobygames.utils.OverlapTester.java
com.noobygames.utils.exceptions.OutOfBoundingException.java
com.noobygames.utils.exceptions.SliderOutOfBoundingsException.java
com.noobygames.utils.ui.Button.java
com.noobygames.utils.ui.ClickableElement.java
com.noobygames.utils.ui.DropDownMenu.java
com.noobygames.utils.ui.Element.java
com.noobygames.utils.ui.RadioButton.java
com.noobygames.utils.ui.RadioGroupButton.java
com.noobygames.utils.ui.ScrollableElement.java
com.noobygames.utils.ui.SimpleElement.java
com.noobygames.utils.ui.Slider.java
com.noobygames.utils.ui.Table.java
com.noobygames.utils.ui.TextBox.java
com.noobygames.utils.ui.Text.java
com.noobygames.utils.ui.Window.java