Package org.pokenet.client.backend

Source Code of org.pokenet.client.backend.SpriteFactory

package org.pokenet.client.backend;

import java.util.HashMap;

import org.newdawn.slick.Image;
import org.newdawn.slick.SpriteSheet;
import org.pokenet.client.backend.entity.Player.Direction;

/**
* Handles overworld sprites
*
* @author shinobi
*
*/
public class SpriteFactory {
  private HashMap<Integer, SpriteSheet> spriteSheets;

  /**
   * Returns the requested sprite
   *
   * @param dir
   * @param isMoving
   * @param isLeftFoot
   * @param sprite
   * @return
   */
  public Image getSprite(Direction dir, boolean isMoving, boolean isLeftFoot,
      int sprite) {
    SpriteSheet sheet = spriteSheets.get(sprite);
    if (isMoving) {
      if (isLeftFoot) {
        switch (dir) {
        case Up:
          return sheet.getSprite(0, 0);
        case Down:
          return sheet.getSprite(0, 2);
        case Left:
          return sheet.getSprite(0, 3);
        case Right:
          return sheet.getSprite(0, 1);
        }
      } else {
        switch (dir) {
        case Up:
          return sheet.getSprite(2, 0);
        case Down:
          return sheet.getSprite(2, 2);
        case Left:
          return sheet.getSprite(2, 3);
        case Right:
          return sheet.getSprite(2, 1);
        }
      }
    } else {
      switch (dir) {
      case Up:
        return sheet.getSprite(1, 0);
      case Down:
        return sheet.getSprite(1, 2);
      case Left:
        return sheet.getSprite(1, 3);
      case Right:
        return sheet.getSprite(1, 1);
      }
    }
    return null;
  }

  /**
   * Initialises the database of sprites
   */
  public SpriteFactory() {

    spriteSheets = new HashMap<Integer, SpriteSheet>();
    try {
      String location;
      String respath = System.getProperty("res.path");
      if (respath == null)
        respath = "";
      Image temp;
      Image[] imgArray = new Image[250];
      SpriteSheet ss = null;
      /*
       * WARNING: Change 224 to the amount of sprites we have in client
       * the load bar only works when we don't make a new SpriteSheet ie.
       * ss = new SpriteSheet(temp, 41, 51); needs to be commented out in
       * order for the load bar to work.
       */
      for (int i = -5; i < 224; i++) {
        try {
          location = respath + "res/characters/" + String.valueOf(i)
              + ".png";
          temp = new Image(location);
          imgArray[i + 5] = temp;
          ss = new SpriteSheet(temp, 41, 51);

          spriteSheets.put(i, ss);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public SpriteFactory(Image[] imgArray) {
    spriteSheets = new HashMap<Integer, SpriteSheet>();

    for (int i = -5; i < 224; i++) {
      spriteSheets.put(i, new SpriteSheet(imgArray[i + 5], 41, 51));
    }
  }
}
TOP

Related Classes of org.pokenet.client.backend.SpriteFactory

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.