package com.shade.entities; import java.util.LinkedList; import org.newdawn.slick.Color; import org.newdawn.slick.Graphics; import org.newdawn.slick.Image; import org.newdawn.slick.SlickException; import org.newdawn.slick.TrueTypeFont; import org.newdawn.slick.geom.Shape; import org.newdawn.slick.geom.Rectangle; import org.newdawn.slick.state.StateBasedGame; import com.shade.base.Animatable; import com.shade.base.Entity; import com.shade.base.Level; import com.shade.controls.MushroomCounter; import com.shade.entities.mushroom.Mushroom; import com.shade.lighting.LuminousEntity; import com.shade.states.MasterState; public class Basket extends Linkable { private static final int BASKET_WIDTH = 65; private static final int BASKET_HEIGHT = 40; private static final int BASKET_DEPTH = 0; private Image sprite; private float luminosity; private LinkedList<MushroomCounter> counters; public Basket(int x, int y) throws SlickException { initShape(x, y, BASKET_WIDTH, BASKET_HEIGHT); initSprite(); counters = new LinkedList<MushroomCounter>(); } private void initSprite() throws SlickException { sprite = new Image("entities/basket/basket.png"); } private void initShape(float x, float y, float w, float h) { shape = new Rectangle(x, y, w, h); } public void add(MushroomCounter c) { counters.add(c); } @SuppressWarnings("unchecked") public void addToLevel(Level < ? > l) { } public void onCollision(Entity obstacle) { if (obstacle.getRole() == Roles.PICKED_MUSHROOM.ordinal()) { Mushroom m = (Mushroom) obstacle; notifyCounters(m); m.detach(); } if(obstacle.getRole() == Roles.TREASURE.ordinal()){ Mushroom m = (Mushroom) obstacle; //HACK TODO: KILL HACK! ACCESSS TREASURE STATE TO CHECK COLLECTION! if(m.prev!=null){ m.detach(); notifyCounters(m); } } } private void notifyCounters(Mushroom m) { for (MushroomCounter c : counters) { c.onCollect(m); } } public Shape castShadow(float direction, float depth) { return null; } public float getLuminosity() { return luminosity; } public void setLuminosity(float l) { luminosity = l; } public int getRole() { return Roles.BASKET.ordinal(); } @SuppressWarnings("unchecked") public void removeFromLevel(Level l) { // basket doesn't need this } public void render(StateBasedGame game, Graphics g) { sprite.draw(getX(), getY(), getWidth(), getHeight()); // g.draw(shape); } public void update(StateBasedGame game, int delta) { // basket doesn't need this } public int getZIndex() { return BASKET_DEPTH; } public int compareTo(LuminousEntity l) { return getZIndex() - l.getZIndex(); } }