zulda/FigureMaker.java

63 lines
2.3 KiB
Java

import ea.*;
import ea.internal.gra.PixelFeld;
import ea.internal.io.ImageLoader;
import java.awt.*;
import java.awt.image.BufferedImage;
public class FigureMaker {
public static Figur makeFigureFromSprite( String pPath, int pWidth ) {
return makeFigureFromSprite(pPath, pWidth, pWidth, 0, 0);
}
public static Figur makeFigureFromSprite( String pPath, int pWidth, int pHeight, int pRow, int pSpriteCount ) {
BufferedImage image = ImageLoader.loadExternalImage(pPath);
int spriteCount = pSpriteCount;
if( pSpriteCount <= 1 ) {
spriteCount = image.getWidth() / pWidth;
}
PixelFeld[] pfelder = new PixelFeld[spriteCount];
for ( int s = 0; s < spriteCount; s++ ) {
pfelder[s] = new PixelFeld(pWidth, pHeight, 1);
for (int x = 0; x < pWidth; x++) {
for (int y = 0; y < pHeight; y++) {
Color clr = new Color(image.getRGB(
(s*pWidth+x),
(pRow*pHeight+y)
), true);
if( clr.getAlpha() > 0 ) {
pfelder[s].farbeSetzen(x, y, clr);
}
}
}
}
Figur fig = new Figur();
fig.animationSetzen(pfelder);
return fig;
}
public static void main(String[] args) {
String[] states = new String[]{
"idle_right", "run_right", "slashup_right", "slashdown_right", "slash_right", "jump_right", "hit_right", "die_right",
"idle_left", "run_left", "slashup_left", "slashdown_left", "slash_left", "jump_left", "hit_left", "die_left"
};
int[] sprite_counts = new int[]{
13, 8, 10, 10, 10, 6, 4, 7,
13, 8, 10, 10, 10, 6, 4, 7
};
for( int i = 0; i < states.length; i++ ) {
Figur fig = FigureMaker.makeFigureFromSprite("/Users/jneug/Projekte/Schule/schule-projekte/OOP/BlueJ/40-Zulda/images/adventurer.png", 32, 32, i, sprite_counts[i]);
DateiManager.schreiben(fig, "/Users/jneug/Projekte/Schule/schule-projekte/OOP/BlueJ/40-Zulda/images/adventurer_"+states[i]+".eaf");
System.out.println("Wrote figure for state "+states[i]);
}
System.out.println("Success!");
System.exit(0);
}
}