package org.open2jam.render.entities; import org.open2jam.render.SpriteList; /** an animated entity. *** it loop over the frames with framespeed *** determined by the SpriteList */ public class AnimatedEntity extends Entity { double sub_frame; double last_frame; boolean loop = true; public AnimatedEntity(SpriteList sl) { this(sl, 0, 0); } public AnimatedEntity(SpriteList frames, double x, double y) { this(frames, x, y, true); } public AnimatedEntity(SpriteList frames, double x, double y, boolean repeat) { super(frames, x, y); sub_frame = 0; this.loop = repeat; } AnimatedEntity(AnimatedEntity org) { super(org); this.frames = org.frames; this.sub_frame = org.sub_frame; this.loop = org.loop; } /** move the entity and change frame if necessary **/ @Override public void move(double delta) { super.move(delta); sub_frame += delta * frames.getFrameSpeed(); sub_frame %= frames.size(); // loops over if(!loop && sub_frame < last_frame) dead = true; else last_frame = sub_frame; sprite = frames.get((int)sub_frame); } @Override public AnimatedEntity copy(){ return new AnimatedEntity(this); } }