Java/Tutorials/Entwicklung eines einfachen Karteneditors IV/Kapitel 1

Aus Scientia
Wechseln zu: Navigation, Suche

Zu aller erst brauchen wir eine Event-Klasse für den Maker, diese soll das Script Speichern. Daher legen wir erstmal eine Klasse Event in unseren Karteneditor Projekt an!

class Event{
 
}

Was für dinge braucht unser Event alles? Erstmal soll unser Event ein Script speichern. Daher legen wir einen String mit Namen quelltext an. Dort wird unser Script dann gespeichert.

class Event{
     public String quelltext;
}

Als nächstes müssen wir bestimmen ob das Event durch Tastendruck oder beim übergehen Aktiviert wird. Daher legen wir die Variable auslöseTyp an. Dabei ist 0 == wird von Held durch übergehen ausgelöst, 1 == durch Tastendruck. Wir verwenden hier einen Integer um es später noch erweiterbar zu machen.

class Event{
     public String quelltext;
     public int auslöseTyp = 0; // 0 == wird von Held durch übergehen ausgelöst, 1 == durch Tastendruck
}

Als nächstes brauchen wir die Position des Events.

class Event{
     public String quelltext;
     public int auslöseTyp = 0; // 0 == wird von Held durch übergehen ausgelöst, 1 == durch Tastendruck
     public Point position;
}
class Event{
     public String quelltext;
     public int auslöseTyp = 0; // 0 == wird von Held durch übergehen ausgelöst, 1 == durch Tastendruck, 2 == garnicht
     public Point position;
 
     public Event(String quelltext, int auslöseTyp, Point position)
     {
    	 this.quelltext=quelltext;
    	 this.auslöseTyp=auslöseTyp;
    	 this.position=position;
     }
}

Nun haben wir unsere Event Klasse für den Maker. Da Events immer zu einer Kartegehören, werden wir die Events in unserer Karten-Klasse speicher, dafür legen wir ein ArrayList in dieser an und nennen die Variable events.

public class Karte
{
	int[][] karte;
	int[] passmap;
 
	String kartenName;
	String tilesetDateiname;
 
	ArrayList<BufferedImage> tileset=new ArrayList<BufferedImage>();
	ArrayList<Event> events =new ArrayList<Event>();
 
	public Karte(int[][] karte, String dateiname, String name)
	{
		this.kartenName=name;
		this.karte=karte;
		this.tilesetDateiname=dateiname;
		try {
			BufferedImage bildTileset=ImageIO.read(new File(dateiname));
			int breite=bildTileset.getWidth()/32;
			int höhe=bildTileset.getHeight()/32;
			for(int x=0;x<breite;x++)
			{
				for(int y=0;y<höhe;y++)
				{
					BufferedImage tile=bildTileset.getSubimage(x*32, y*32, 32, 32);
					this.tileset.add(tile);
				}				
			}
		} catch (IOException fehler) {
			fehler.printStackTrace();
		}
		this.passmap=new int[tileset.size()];
	}
 
 
	public BufferedImage getTileImage(int x, int y)
	{
		int tile=karte[x][y];
		return tileset.get(tile);
	}
 
	public void setTile(int x, int y, int tileID)
	{
		karte[x][y]=tileID;
	}
}