SpriteLoader now universally usable
This commit is contained in:
@@ -5,10 +5,10 @@ import ea.Taste;
|
|||||||
public class Player extends LivingEntity {
|
public class Player extends LivingEntity {
|
||||||
|
|
||||||
private Malin main; // Referenz auf die main Klasse. Wird später für den Keyboardinput verwendet
|
private Malin main; // Referenz auf die main Klasse. Wird später für den Keyboardinput verwendet
|
||||||
private static PlayerSheetLoader loader = new PlayerSheetLoader();
|
private static SheetLoader loader = new SheetLoader("/res/images/player_sprite_sheet.png", 64, 32, new int[] {5, 8, 7, 6, 2, 5, 4, 7});
|
||||||
|
|
||||||
public Player(Malin main) {
|
public Player(Malin main) {
|
||||||
super(loader.getPlayer(0), "idle_left");
|
super(loader.getFigur(0), "idle_left");
|
||||||
this.main = main;
|
this.main = main;
|
||||||
|
|
||||||
// Entity-Eigenschaften werden festgelegt
|
// Entity-Eigenschaften werden festgelegt
|
||||||
@@ -21,16 +21,16 @@ public class Player extends LivingEntity {
|
|||||||
|
|
||||||
// unterschiedliche Animationsgeschwindigkeiten
|
// unterschiedliche Animationsgeschwindigkeiten
|
||||||
// für idle
|
// für idle
|
||||||
loader.getPlayer(0).animationsGeschwindigkeitSetzen(200);
|
loader.getFigur(0).animationsGeschwindigkeitSetzen(200);
|
||||||
// fürs laufen
|
// fürs laufen
|
||||||
loader.getPlayer(1).animationsGeschwindigkeitSetzen(50);
|
loader.getFigur(1).animationsGeschwindigkeitSetzen(50);
|
||||||
|
|
||||||
// Zustände werden hinzugefügt
|
// Zustände werden hinzugefügt
|
||||||
actionFigur.neuerZustand(loader.getPlayer(0), "idle");
|
actionFigur.neuerZustand(loader.getFigur(0), "idle");
|
||||||
actionFigur.neuerZustand(loader.getPlayer(1), "walk");
|
actionFigur.neuerZustand(loader.getFigur(1), "walk");
|
||||||
actionFigur.neuerZustand(loader.getPlayer(2), "strike");
|
actionFigur.neuerZustand(loader.getFigur(2), "strike");
|
||||||
actionFigur.neuerZustand(loader.getPlayer(3), "swipe");
|
actionFigur.neuerZustand(loader.getFigur(3), "swipe");
|
||||||
actionFigur.neuerZustand(loader.getPlayer(4), "die");
|
actionFigur.neuerZustand(loader.getFigur(7), "die");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -70,6 +70,9 @@ public class Player extends LivingEntity {
|
|||||||
if (main.tasteGedrueckt(Taste.Q)) {
|
if (main.tasteGedrueckt(Taste.Q)) {
|
||||||
zustandSetzen("strike");
|
zustandSetzen("strike");
|
||||||
}
|
}
|
||||||
|
if (main.tasteGedrueckt(Taste.F)) {
|
||||||
|
zustandSetzen("die");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// auf Kollisionen prüfen
|
// auf Kollisionen prüfen
|
||||||
|
|||||||
@@ -1,61 +0,0 @@
|
|||||||
package main;
|
|
||||||
|
|
||||||
import java.awt.Color;
|
|
||||||
import java.awt.image.BufferedImage;
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import javax.imageio.ImageIO;
|
|
||||||
|
|
||||||
import ea.Figur;
|
|
||||||
import ea.internal.gra.PixelFeld;
|
|
||||||
|
|
||||||
public class PlayerSheetLoader {
|
|
||||||
|
|
||||||
private static Figur[] player;
|
|
||||||
|
|
||||||
public PlayerSheetLoader() {
|
|
||||||
try {
|
|
||||||
BufferedImage sheet = ImageIO.read(Tile.class.getResourceAsStream("/res/images/player_sprite_sheet.png"));
|
|
||||||
|
|
||||||
PixelFeld[][] sprites = new PixelFeld[5][];
|
|
||||||
sprites[0] = new PixelFeld[5];
|
|
||||||
sprites[1] = new PixelFeld[8];
|
|
||||||
sprites[2] = new PixelFeld[7];
|
|
||||||
sprites[3] = new PixelFeld[6];
|
|
||||||
sprites[4] = new PixelFeld[7];
|
|
||||||
|
|
||||||
loadSprites(sprites[0], 0, 64, 32, sheet);
|
|
||||||
loadSprites(sprites[1], 1, 64, 32, sheet);
|
|
||||||
loadSprites(sprites[2], 2, 64, 32, sheet);
|
|
||||||
loadSprites(sprites[3], 3, 64, 32, sheet);
|
|
||||||
loadSprites(sprites[4], 4, 64, 32, sheet);
|
|
||||||
|
|
||||||
Figur fig;
|
|
||||||
player = new Figur[5];
|
|
||||||
for (int i = 0; i < player.length; i++) {
|
|
||||||
fig = new Figur();
|
|
||||||
fig.animationSetzen(sprites[i]);
|
|
||||||
player[i] = fig;
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public Figur getPlayer(int y) {
|
|
||||||
return player[y];
|
|
||||||
}
|
|
||||||
|
|
||||||
private void loadSprites(PixelFeld[] sprites, int row, int w, int h, BufferedImage sheet) {
|
|
||||||
for (int s = 0; s < sprites.length; s++) {
|
|
||||||
sprites[s] = new PixelFeld(w, h, 1);
|
|
||||||
for (int x = 0; x < w; x++) {
|
|
||||||
for (int y = 0; y < h; y++) {
|
|
||||||
Color clr = new Color(sheet.getRGB((s * w + x), (row * h + y)), true);
|
|
||||||
sprites[s].farbeSetzen(x, y, clr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
68
Zoelda/src/main/SheetLoader.java
Normal file
68
Zoelda/src/main/SheetLoader.java
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
package main;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import javax.imageio.ImageIO;
|
||||||
|
|
||||||
|
import ea.Figur;
|
||||||
|
import ea.internal.gra.PixelFeld;
|
||||||
|
|
||||||
|
public class SheetLoader {
|
||||||
|
|
||||||
|
private static Figur[] figures;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Macht aus einem Spritesheet Figuren.
|
||||||
|
* @param path - Der pfad zum sheet
|
||||||
|
* @param width - die Breite von einem Bild
|
||||||
|
* @param height - die Höhe von einem Bild (nicht das ganze sheet)
|
||||||
|
* @param lengths - die Anzahl der Frames der verschiedenen Animationen
|
||||||
|
*/
|
||||||
|
public SheetLoader(String path, int width, int height, int[] frames) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Bild laden
|
||||||
|
BufferedImage sheet = ImageIO.read(Tile.class.getResourceAsStream(path));
|
||||||
|
|
||||||
|
// Anzahl der Animationen
|
||||||
|
int rows = frames.length;
|
||||||
|
|
||||||
|
// Sprites anordnen *magie*
|
||||||
|
PixelFeld[][] sprites = new PixelFeld[rows][];
|
||||||
|
for (int i = 0; i < frames.length; i++) {
|
||||||
|
sprites[i] = new PixelFeld[frames[i]];
|
||||||
|
}
|
||||||
|
for (int i = 0; i < sprites.length; i++) {
|
||||||
|
loadSprites(sprites[i], i, width, height, sheet);
|
||||||
|
}
|
||||||
|
Figur fig;
|
||||||
|
figures = new Figur[rows];
|
||||||
|
for (int i = 0; i < figures.length; i++) {
|
||||||
|
fig = new Figur();
|
||||||
|
fig.animationSetzen(sprites[i]);
|
||||||
|
figures[i] = fig;
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Figur getFigur(int y) {
|
||||||
|
return figures[y];
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadSprites(PixelFeld[] sprites, int row, int w, int h, BufferedImage sheet) {
|
||||||
|
for (int s = 0; s < sprites.length; s++) {
|
||||||
|
sprites[s] = new PixelFeld(w, h, 1);
|
||||||
|
for (int x = 0; x < w; x++) {
|
||||||
|
for (int y = 0; y < h; y++) {
|
||||||
|
Color clr = new Color(sheet.getRGB((s * w + x), (row * h + y)), true);
|
||||||
|
sprites[s].farbeSetzen(x, y, clr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user