Android Open Source - nadia Animated Sprite






From Project

Back to project page nadia.

License

The source code is released under:

GNU Lesser General Public License

If you think the Android project nadia 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

/*
 * AnimatedSprite.java/*  w  w  w .j  ava  2  s . c  o  m*/
 * 
 * Copyright (c) 2013, Emmanuel Arana Corzo. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA 02110-1301  USA
 */

package com.redarctic.nadia.baseengine.sprite;

import java.util.concurrent.ConcurrentHashMap;

//import com.redarctic.dragonsfate.activities.MainSurface;
import com.redarctic.nadia.ext.MathHelper;
import com.redarctic.nadia.baseengine.tileengine.Camera;
import com.redarctic.nadia.baseengine.tileengine.TileMap;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.Rect;

/**
 * AnimatedSprite
 * <p>Contains all the set of needed methods to animate any kind of sprite, based on a texture and a set of tiles
 * that compounds the animation</p>
 * @author Emmanuel Arana Corzo <emmanuel.arana@gmail.com>
 */
public class AnimatedSprite {
  ConcurrentHashMap<AnimationKey, Animation> animations;
  AnimationKey currentAnimation = AnimationKey.DOWN;
  boolean animating = false;
  
  Bitmap texture;
  Point position = new Point(
      /*MainSurface.getGameRef().getScreenSize().x >> 1, 
      MainSurface.getGameRef().getScreenSize().y >> 1*/0, 0);
  Point velocity = new Point();
  float speed = 2.0f;
  
  
  public AnimationKey getCurrentAnimation() {
    return currentAnimation;
  }
  
  public void setCurrentAnimation(AnimationKey currentAnimation) {
    this.currentAnimation = currentAnimation;
  }
  
  public boolean isAnimating() {
    return animating;
  }
  
  public void setAnimating(boolean animating) {
    this.animating = animating;
  }
  
  public int getWidth() {
    return this.animations.get(this.currentAnimation).getFrameWidth();
  }
  
  public int getHeight() {
    return this.animations.get(this.currentAnimation).getFrameHeight();
  }

  public float getSpeed() {
    return speed;
  }

  public void setSpeed(float speed) {
    this.speed = MathHelper.clamp(speed, 1.0f, 16.0f);
  }

  public Point getPosition() {
    return position;
  }

  public void setPosition(Point position) {
    this.position = position;
  }

  public Point getVelocity() {
    return velocity;
  }

  public void setVelocity(Point velocity) {
    this.velocity = velocity;
    
    if (velocity.x != 0 && velocity.y != 0)
      velocity = MathHelper.normalize(velocity);
  }
  
  public AnimatedSprite(Bitmap sprite, ConcurrentHashMap<AnimationKey, Animation> animation) {
    texture = sprite;
    
    animations = new ConcurrentHashMap<AnimationKey, Animation>();
    for (AnimationKey key : animation.keySet()) {
      try {
        animations.put(key, (Animation)animation.get(key).clone());
      } catch (CloneNotSupportedException e) {
        e.printStackTrace();
      }
    }    
  }
  
  public void update(Canvas canvas) {
    if (isAnimating())
      animations.get(this.currentAnimation).update(canvas);
  }
  
  public void drawMe(Canvas canvas, Camera camera) {
    Rect dst = new Rect(
        this.position.x, 
        this.position.y, 
        this.position.x + 
        this.animations.get(currentAnimation).getFrameWidth(),
        this.position.y + 
        this.animations.get(currentAnimation).getFrameHeight());
    Rect src = new Rect(
        (int)animations.get(currentAnimation).getCurrentFrameRect().left,
        (int)animations.get(currentAnimation).getCurrentFrameRect().top,
        (int)animations.get(currentAnimation).getCurrentFrameRect().right,
        (int)animations.get(currentAnimation).getCurrentFrameRect().bottom
        );
    canvas.drawBitmap(
        this.texture, 
        src, 
        dst, 
        null);
  }
  
  public void lockToMap() {
    position.x = (int) MathHelper.clamp(
        position.x, 0, TileMap.getWidthInPixels() - getWidth());
    position.y = (int) MathHelper.clamp(
        position.y, 0, TileMap.getHeightInPixels() - getHeight());
  }
}




Java Source Code List

com.ashokgelal.samaya.DateTimeFormatter.java
com.ashokgelal.samaya.DateTimeInterval.java
com.ashokgelal.samaya.DateTimeParser.java
com.ashokgelal.samaya.DateTime.java
com.ashokgelal.samaya.ModelUtil.java
com.ashokgelal.samaya.Samaya.java
com.ashokgelal.samaya.TimeSpan.java
com.ashokgelal.samaya.ToStringUtil.java
com.ashokgelal.samaya.Util.java
com.redarctic.nadia.baseengine.BaseGameState.java
com.redarctic.nadia.baseengine.ColorPallete.java
com.redarctic.nadia.baseengine.DrawableGameComponent.java
com.redarctic.nadia.baseengine.DrawableObject.java
com.redarctic.nadia.baseengine.GameComponent.java
com.redarctic.nadia.baseengine.GameStateManager.java
com.redarctic.nadia.baseengine.GameState.java
com.redarctic.nadia.baseengine.GameSurfaceView.java
com.redarctic.nadia.baseengine.GameSurface.java
com.redarctic.nadia.baseengine.SpriteFont.java
com.redarctic.nadia.baseengine.Sprite.java
com.redarctic.nadia.baseengine.character.BaseModifier.java
com.redarctic.nadia.baseengine.character.Classes.java
com.redarctic.nadia.baseengine.character.FormulaModifierException.java
com.redarctic.nadia.baseengine.character.Player.java
com.redarctic.nadia.baseengine.item.ArmorLocation.java
com.redarctic.nadia.baseengine.item.Armor.java
com.redarctic.nadia.baseengine.item.BaseItem.java
com.redarctic.nadia.baseengine.item.ItemManager.java
com.redarctic.nadia.baseengine.item.ItemType.java
com.redarctic.nadia.baseengine.item.Shield.java
com.redarctic.nadia.baseengine.item.Weapon.java
com.redarctic.nadia.baseengine.item.WeaponsType.java
com.redarctic.nadia.baseengine.sprite.AnimatedSprite.java
com.redarctic.nadia.baseengine.sprite.AnimationException.java
com.redarctic.nadia.baseengine.sprite.AnimationKey.java
com.redarctic.nadia.baseengine.sprite.Animation.java
com.redarctic.nadia.baseengine.tileengine.Camera.java
com.redarctic.nadia.baseengine.tileengine.Engine.java
com.redarctic.nadia.baseengine.tileengine.MapLayer.java
com.redarctic.nadia.baseengine.tileengine.TileException.java
com.redarctic.nadia.baseengine.tileengine.TileMap.java
com.redarctic.nadia.baseengine.tileengine.Tile.java
com.redarctic.nadia.baseengine.tileengine.Tileset.java
com.redarctic.nadia.baseengine.world.Level.java
com.redarctic.nadia.baseengine.world.World.java
com.redarctic.nadia.collision.Circle.java
com.redarctic.nadia.collision.CollisionPolygon.java
com.redarctic.nadia.collision.ConvexPolygonException.java
com.redarctic.nadia.collision.Rectangle.java
com.redarctic.nadia.controls.ButtonPad.java
com.redarctic.nadia.controls.DirectionalPad.java
com.redarctic.nadia.controls.menu.CharacterDialog.java
com.redarctic.nadia.controls.menu.ControlBorder.java
com.redarctic.nadia.controls.menu.ControlManager.java
com.redarctic.nadia.controls.menu.Control.java
com.redarctic.nadia.controls.menu.Label.java
com.redarctic.nadia.controls.menu.LeftRightSelector.java
com.redarctic.nadia.controls.menu.LinkLabel.java
com.redarctic.nadia.controls.menu.Menu.java
com.redarctic.nadia.controls.menu.PictureBox.java
com.redarctic.nadia.controls.menu.SimpleConversation.java
com.redarctic.nadia.ext.MathHelper.java
com.redarctic.nadia.ext.StringHelper.java
com.redarctic.nadia.ext.simplesignalslot.ISignalProvider.java
com.redarctic.nadia.ext.simplesignalslot.ISlotProvider.java
com.redarctic.nadia.ext.simplesignalslot.PrimitiveWrapper.java
com.redarctic.nadia.ext.simplesignalslot.SignalSlotMap.java
com.redarctic.nadia.ext.simplesignalslot.SignalSlotPair.java
com.redarctic.nadia.ext.simplesignalslot.SlotProviderMethodPair.java