00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 package org.classroomgaming.cgp;
00021
00022 import java.awt.Graphics;
00023 import java.util.*;
00024
00030 public class AnimatedSprite extends Sprite implements GameModule.FrameListener, GameModule.Renderable {
00031
00032 private LinkedHashMap<String, SpriteAnimation> animations;
00033 private SpriteAnimation currentAnim;
00034 private SpriteAnimation.Style style;
00035
00041 public AnimatedSprite(SpriteAnimation a[]) {
00042 super();
00043 animations = new LinkedHashMap<String, SpriteAnimation>();
00044 for (int i = 0; i < a.length; ++i) {
00045 animations.put(a[i].getName(), a[i]);
00046 }
00047 style = SpriteAnimation.Style.FORWARD_LOOP;
00048 currentAnim = a[0];
00049 }
00054 public void setStyle(SpriteAnimation.Style s) {
00055 style = s;
00056 }
00057
00058 @Override
00059 public void render(Graphics g) {
00060 currentImageID = currentAnim.getImageID();
00061 super.render(g);
00062 }
00063
00064 public void ponder( float dt) {
00066 currentAnim.update(dt, style);
00067 }
00068
00069 public void play(String name) {
00070 if (animations.containsKey(name)) {
00071 currentAnim = (SpriteAnimation) animations.get(name);
00072 switch (style) {
00073 case FORWARD_STICKY:
00074 case FORWARD_LOOP:
00075 case PING_PONG:
00076 currentAnim.set(0, 0);
00077 break;
00078 case BACKWARD_STICKY:
00079 case BACKWARD_LOOP:
00080 currentAnim.set(currentAnim.getNumFrames(), 0);
00081 break;
00082 }
00083 }
00084 }
00085
00086
00087 }