diff --git a/FroggerGame/.classpath b/FroggerGame/.classpath
new file mode 100644
index 0000000..151cbe3
--- /dev/null
+++ b/FroggerGame/.classpath
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/FroggerGame/.project b/FroggerGame/.project
new file mode 100644
index 0000000..aa9c389
--- /dev/null
+++ b/FroggerGame/.project
@@ -0,0 +1,17 @@
+
+
+ FroggerGame
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/FroggerGame/.settings/org.eclipse.jdt.core.prefs b/FroggerGame/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..838bd9d
--- /dev/null
+++ b/FroggerGame/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/FroggerGame/.settings/org.eclipse.ltk.core.refactoring.prefs b/FroggerGame/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..cfcd1d3
--- /dev/null
+++ b/FroggerGame/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/FroggerGame/bin/Testspiel.zip b/FroggerGame/bin/Testspiel.zip
new file mode 100644
index 0000000..9f0e866
Binary files /dev/null and b/FroggerGame/bin/Testspiel.zip differ
diff --git a/FroggerGame/bin/Testspiel/Auto.class b/FroggerGame/bin/Testspiel/Auto.class
new file mode 100644
index 0000000..26935b4
Binary files /dev/null and b/FroggerGame/bin/Testspiel/Auto.class differ
diff --git a/FroggerGame/bin/Testspiel/Frosch.class b/FroggerGame/bin/Testspiel/Frosch.class
new file mode 100644
index 0000000..b0c2671
Binary files /dev/null and b/FroggerGame/bin/Testspiel/Frosch.class differ
diff --git a/FroggerGame/bin/spiel/Boss.class b/FroggerGame/bin/spiel/Boss.class
new file mode 100644
index 0000000..9f7e098
Binary files /dev/null and b/FroggerGame/bin/spiel/Boss.class differ
diff --git a/FroggerGame/bin/spiel/NinjaFight.class b/FroggerGame/bin/spiel/NinjaFight.class
new file mode 100644
index 0000000..bdda22c
Binary files /dev/null and b/FroggerGame/bin/spiel/NinjaFight.class differ
diff --git a/FroggerGame/bin/spiel/TestSpiel.class b/FroggerGame/bin/spiel/TestSpiel.class
new file mode 100644
index 0000000..748ae01
Binary files /dev/null and b/FroggerGame/bin/spiel/TestSpiel.class differ
diff --git a/GDD.docx b/GDD.docx
new file mode 100644
index 0000000..87997e0
Binary files /dev/null and b/GDD.docx differ
diff --git a/JnP.jar b/JnP.jar
new file mode 100644
index 0000000..e1a603c
Binary files /dev/null and b/JnP.jar differ
diff --git a/JnP.java b/JnP.java
new file mode 100644
index 0000000..5ec9102
--- /dev/null
+++ b/JnP.java
@@ -0,0 +1,210 @@
+package Main;
+
+//Importe
+import org.newdawn.slick.AppGameContainer;
+import org.newdawn.slick.BasicGame;
+import org.newdawn.slick.GameContainer;
+import org.newdawn.slick.Graphics;
+import org.newdawn.slick.Input;
+import org.newdawn.slick.SlickException;
+
+public class JnP extends BasicGame
+{
+
+ // Main Klasse des Games
+ public JnP()
+ {
+ super("Jump 'n' Pong");
+ }
+
+ // Objekterstellungen
+ Panel panel;
+
+ Level level;
+
+ UserInterface hud;
+
+ Invader invader;
+
+ Player protector;
+
+ State gameState;
+
+ Menu menu;
+
+ float waiter;// Zeit-Laufvariable
+
+ @Override
+ public void init(final GameContainer gc) throws SlickException
+ {
+ // TODO Auto-generated method stub
+
+ // Objekterstellung (außer Ball -> Erstellung in der Invader-Klasse
+ this.hud = new UserInterface();
+ this.invader = new Invader();
+ this.protector = new Player();
+ this.level = new Level();
+ this.gameState = new State();
+ this.menu = new Menu();
+ this.panel = new Panel();
+
+ // Initialisierung
+ this.gameState.init(gc);
+ this.menu.init(gc, this.gameState);
+ this.level.init(gc, this.invader, this.protector, this.hud, this.gameState, this.panel, this.waiter);// Initialisierung
+ // mit
+ // Vererbung
+ // aller
+ // Objekte
+ this.panel.init(gc, this.gameState, 1);// Initialisierung + Angabe des
+ // Startlevels
+ this.hud.init(gc, this.gameState);
+
+ this.waiter = 0; // Setzung der Zeit zu Begin
+ }
+
+ @Override
+ public void update(final GameContainer gc, final int delta) throws SlickException
+ {
+ // TODO Auto-generated method stub
+ final float _delta = delta / 1000f;
+ this.waiter += _delta; // Zeit läuft
+
+ // Menu exit
+ if (gc.getInput().isKeyDown(Input.KEY_ENTER) && ((this.level.selectedString == 2) || (this.menu.selectedString == 2)))
+ {
+ gc.exit();
+ }
+
+ // Press Enter start screen
+ if (gc.getInput().isKeyDown(Input.KEY_ENTER) && (this.level.selectedString == 0) && (this.level.waiter > 3) && (this.gameState.stateId == 0))
+ {
+ this.gameState.stateId = 4;
+ this.level.waiter = 0;
+ }
+
+ // Menu startgame Option
+ if (gc.getInput().isKeyDown(Input.KEY_ENTER) && (this.level.waiter > 0.3) && (this.menu.selectedString == 0) && (this.gameState.stateId == 4))
+ {
+ this.gameState.stateId = 6;
+ this.level.waiter = 0;
+ }
+
+ // Pause Menu resume game Option
+ if (gc.getInput().isKeyDown(Input.KEY_ENTER) && (this.level.waiter > 3) && (this.menu.selectedString == 0) && (this.gameState.stateId == 2))
+ {
+ this.gameState.stateId = 1;
+ }
+
+ // Control Instructions Screen Timer
+ if ((this.gameState.stateId == 6) && (this.level.waiter > 10))
+ {
+ this.gameState.stateId = 5;
+ this.level.waiter = 0;
+ }
+
+ // Intro Screen Timer
+ if ((this.gameState.stateId == 5) && (this.level.waiter > 5))
+ {
+ this.panel.xPos = 350;
+ this.gameState.stateId = 1;
+ this.level.waiter = 0;
+
+ }
+
+ // Win State Bedingung
+ if ((this.gameState.stateId == 1) && (this.level.currentLevel == 5) && (this.hud.sbar_width >= 100))
+ {
+ this.level.waiter = 0;
+ this.gameState.stateId = 8;
+ }
+
+ // Win Screen Timer
+ if ((this.gameState.stateId == 8) && (this.level.waiter > 5))
+ {
+ this.gameState.stateId = 4;
+ this.level.currentLevel = 1;
+
+ // Initialisierung eines "Neuen Spiels"
+ this.panel.init(gc, this.gameState, 1);
+ this.hud.init(gc, this.gameState);
+ this.invader.init(gc, this.gameState);
+ this.protector.init(gc, this.gameState, 50);
+ this.level.init(gc, this.invader, this.protector, this.hud, this.gameState, this.panel, _delta);
+ this.menu.init(gc, this.gameState);
+
+ }
+
+ // Pause Menu Aktivierung
+ if (gc.getInput().isKeyPressed(Input.KEY_P) && (this.gameState.stateId == 1))
+ {
+ this.gameState.stateId = 2;
+ }
+
+ // Game Over Bedingung
+ if ((this.hud.dbar_width <= 0) && (this.gameState.stateId == 1))
+ {
+ this.level.waiter = 0;
+ this.gameState.stateId = 7;
+
+ }
+
+ // Neues Game nach Game Over
+ if ((this.gameState.stateId == 7) && (this.level.waiter > 10))
+ {
+
+ this.panel.init(gc, this.gameState, 1);
+ this.hud.init(gc, this.gameState);
+ this.invader.init(gc, this.gameState);
+ this.protector.init(gc, this.gameState, 50);
+ this.level.init(gc, this.invader, this.protector, this.hud, this.gameState, this.panel, _delta);
+ this.menu.init(gc, this.gameState);
+ this.level.currentLevel = 1;
+ this.gameState.stateId = 4;
+ }
+ // Update Aufrufe
+ this.gameState.update(gc, _delta);
+ this.level.update(gc, _delta);
+ this.menu.update(gc, _delta);
+ this.panel.update(gc, _delta);
+
+ }
+
+ @Override
+ public void render(final GameContainer gc, final Graphics g) throws SlickException
+ {
+ // TODO Auto-generated method stub
+
+ // Renderaufrufe
+ this.gameState.render(gc, g);
+ this.level.render(gc, g);
+
+ this.menu.render(gc, g);
+ this.hud.render(gc, g);
+
+ // Titel screen Einblendung
+ if ((this.gameState.stateId == 0) && (this.waiter > 3))
+ {
+ g.drawString("Press Enter", 350, 550);
+ }
+ }
+
+ // Hauptmethode
+ public static void main(final String[] args)
+ {
+ try
+ {// Apperstellung
+ final AppGameContainer app = new AppGameContainer(new JnP());
+ app.setDisplayMode(800, 600, false);// Fullscreen 800x600
+ app.setTargetFrameRate(60);// Flüssige FPS von 60
+ app.setVSync(true);// VSinc um Renderprobleme bei schneller
+ // Objektbewegung zu verhindern
+ app.setShowFPS(true);
+ app.start();
+ }
+ catch (final SlickException e)
+ {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/Level.java b/Level.java
new file mode 100644
index 0000000..bce2005
--- /dev/null
+++ b/Level.java
@@ -0,0 +1,538 @@
+package Main;
+
+import org.newdawn.slick.Animation;
+import org.newdawn.slick.Color;
+import org.newdawn.slick.GameContainer;
+import org.newdawn.slick.Graphics;
+import org.newdawn.slick.Image;
+import org.newdawn.slick.Input;
+import org.newdawn.slick.SlickException;
+import org.newdawn.slick.SpriteSheet;
+
+public class Level
+{
+
+ private Image cyberg, title, paused, instructionScreen, missionScreen,
+ alert, clearedLevel;
+
+ private Invader invader;
+
+ private Player protector;
+
+ private UserInterface ui;
+
+ private State state;
+
+ // Levelbezeichnungen
+ private String[] level =
+ { "-1- First Contact |", "-2- Two Paths to Core |", "-3- Cyberlabyrinth", "-4-", " -5- Final Fight |" };
+
+ // Game Over Screen Erstellung
+ private Image game_over_screen0, game_over_screen1, game_over_screen2,
+ game_over_screen3, game_over_screen4, game_over_screen5, game_over_screen6,
+ game_over_screen7, game_over_screen8;
+
+ Image[] game_over_screens =
+ { this.game_over_screen0, this.game_over_screen1, this.game_over_screen2, this.game_over_screen3, this.game_over_screen4, this.game_over_screen5, this.game_over_screen6, this.game_over_screen7, this.game_over_screen8 };
+
+ int selectedString, currentLevel;
+
+ SpriteSheet shock, arrows_sheet, walk_demo_sheet, virus_demo_sheet,
+ rider_demo_sheet, shock_demo_sheet;
+
+ Animation selected, arrows, walk_demo, game_over, virus_demo, rider_demo,
+ shock_demo;
+
+ Panel panel;
+
+ float waiter;// Ingame Zeit
+
+ boolean changedDirection = false;// Indikator für Richtungswechsel
+
+ public void init(final GameContainer gc, final Invader invader, final Player player, final UserInterface ui, final State gameState, final Panel panel, final float waiter) throws SlickException
+ {
+
+ this.game_over_screen0 = new Image("Main/cybergrid.png");
+ this.game_over_screen1 = new Image("Main/game_Over1.png");
+ this.game_over_screen2 = new Image("Main/game_Over2.png");
+ this.game_over_screen3 = new Image("Main/game_Over3.png");
+ this.game_over_screen4 = new Image("Main/game_Over4.png");
+ this.game_over_screen5 = new Image("Main/game_Over5.png");
+ this.game_over_screen6 = new Image("Main/game_Over6.png");
+ this.game_over_screen7 = new Image("Main/game_Over7.png");
+ this.game_over_screen8 = new Image("Main/game_Over8.png");
+
+ this.waiter = waiter;
+ this.panel = panel;
+ this.state = gameState;
+ this.invader = invader;
+ this.protector = player;
+ this.ui = ui;
+
+ this.alert = new Image("Main/Hack_Alert.png");
+ this.clearedLevel = new Image("Main/level_cleared_screen.png");
+ this.instructionScreen = new Image("Main/key_instructions.png");
+ this.missionScreen = new Image("Main/mission.png");
+ this.arrows_sheet = new SpriteSheet("Main/arrows_sheet.png", 101, 101);
+ this.walk_demo_sheet = new SpriteSheet("Main/robot_sheet_good.png", 50, 100);
+ this.virus_demo_sheet = new SpriteSheet("Main/Virus_sheet.png", 72, 72);
+ this.rider_demo_sheet = new SpriteSheet("Main/rider.png", 75, 75);
+ this.shock_demo_sheet = new SpriteSheet("Main/shock.png", 75, 45);
+
+ this.arrows = new Animation(this.arrows_sheet, 0, 0, 3, 2, true, 200, true);
+ this.walk_demo = new Animation(this.walk_demo_sheet, 0, 0, 5, 2, true, 200, true);
+ this.virus_demo = new Animation(this.virus_demo_sheet, 2, 1, 3, 4, true, 200, true);
+ this.rider_demo = new Animation(this.rider_demo_sheet, 0, 0, 2, 0, true, 200, true);
+ this.shock_demo = new Animation(this.shock_demo_sheet, 0, 0, 3, 0, true, 200, true);
+
+ this.selectedString = 0;// Default Auswahl im Menu
+ this.currentLevel = 1;// Initial Level zu Begin
+
+ this.cyberg = new Image("Main/cybergrid.png");
+ this.title = new Image("Main/titel.png");
+ this.paused = new Image("Main/paused_menu.png");
+ this.shock = new SpriteSheet("Main/shock.png", 75, 45);
+ this.selected = new Animation(this.shock, 0, 0, 3, 0, true, 250, true);
+
+ this.protector.init(gc, gameState, 100);// Roboter Initialisierung an
+ // YPosition 100
+ invader.init(gc, gameState);
+
+ }
+
+ public void render(final GameContainer gc, final Graphics g) throws SlickException
+ {
+
+ // Rendering abhängig von State
+ switch (this.state.currentState)
+ {
+
+ case "win":// Sieges Screen
+ g.drawImage(this.clearedLevel, 0, 0);
+ g.setColor(Color.cyan);
+ g.drawLine(0, 100, 800, 100);
+ break;
+ // game over Pseudo-Animation
+ case "gameOver":
+ if (this.waiter > 5)
+ {
+ g.drawImage(this.game_over_screen8, 0, 0);
+ }
+ else if (this.waiter > 4.2)
+ {
+ g.drawImage(this.game_over_screen7, 0, 0);
+ }
+ else if (this.waiter > 3.8)
+ {
+ g.drawImage(this.game_over_screen6, 0, 0);
+ }
+ else if (this.waiter > 3.2)
+ {
+ g.drawImage(this.game_over_screen5, 0, 0);
+ }
+ else if (this.waiter > 2.8)
+ {
+ g.drawImage(this.game_over_screen4, 0, 0);
+ }
+ else if (this.waiter > 2.2)
+ {
+ g.drawImage(this.game_over_screen3, 0, 0);
+ }
+ else if (this.waiter > 1.8)
+ {
+ g.drawImage(this.game_over_screen2, 0, 0);
+ }
+ else if (this.waiter > 1.2)
+ {
+ g.drawImage(this.game_over_screen1, 0, 0);
+ }
+ else
+ {
+ g.drawImage(this.game_over_screen0, 0, 0);
+ }
+ break;
+
+ // Steuerungs Screens
+ case "controlInstructions":
+ if (this.waiter < 5)
+ {
+ g.drawImage(this.instructionScreen, 0, 0);
+ this.arrows.draw(150, 200);
+ this.walk_demo.draw(550, 200);
+
+ }
+ else if (this.waiter > 6)
+ {// "Missions screen"
+ g.drawImage(this.missionScreen, 0, 0);
+ this.walk_demo.draw(550, 200);
+ this.virus_demo.draw(550, 300);
+ this.rider_demo.draw(550, 430);
+ this.shock_demo.draw(550, 460);
+ }
+ break;
+
+ case "level_intro":
+ // Level intro je nach currentLevel
+ switch (this.currentLevel)
+ {
+ case 1:
+ this.alert.draw(0, 0);
+ g.setColor(Color.red);
+ g.drawLine(0, 200, 800, 200);
+ g.drawLine(0, 400, 800, 400);
+ g.setColor(Color.white);
+ g.drawString("1", 300, 330);
+ g.drawString("-First Contact-", 330, 330);
+ break;
+ case 2:
+ this.alert.draw(0, 0);
+ g.setColor(Color.red);
+ g.drawLine(0, 200, 800, 200);
+ g.drawLine(0, 400, 800, 400);
+ g.setColor(Color.white);
+ g.drawString("2", 300, 330);
+ g.drawString("-Two Paths to the Core-", 330, 330);
+ break;
+ case 3:
+ this.alert.draw(0, 0);
+ g.setColor(Color.red);
+ g.drawLine(0, 200, 800, 200);
+ g.drawLine(0, 400, 800, 400);
+ g.setColor(Color.white);
+ g.drawString("3", 300, 330);
+ g.drawString("-The Cyberlabyrinth-", 330, 330);
+ break;
+ case 4:
+ this.alert.draw(0, 0);
+ g.setColor(Color.red);
+ g.drawLine(0, 200, 800, 200);
+ g.drawLine(0, 400, 800, 400);
+ g.setColor(Color.white);
+ g.drawString("4", 300, 330);
+ g.drawString("-The prelast level-", 330, 330);
+ break;
+ case 5:
+ this.alert.draw(0, 0);
+ g.setColor(Color.red);
+ g.drawLine(0, 200, 800, 200);
+ g.drawLine(0, 400, 800, 400);
+ g.setColor(Color.white);
+ g.drawString("5", 300, 330);
+ g.drawString("-Final Fight-", 330, 330);
+ break;
+ }
+ break;
+
+ case "titel":
+ g.drawImage(this.title, 0, 0);
+ break;
+ case "paused":
+ this.cyberg.draw(0, 0, 800, 600);
+ this.panel.render(gc, g);
+ this.protector.render(gc, g);
+ this.invader.render(gc, g);
+
+ g.setColor(Color.magenta);
+ // Pause Menü Tags
+ this.paused.draw(225, 250);
+ g.drawString("Resume Game", 425, 290);
+ g.drawString("Options(Not Implemented)", 425, 320);
+ g.drawString("Exit Game", 425, 350);
+ // Name des Levels in der UI
+ switch (this.currentLevel)
+ {
+ case 1:
+ g.drawString(this.level[0], 30, 555);
+ break;
+ case 2:
+ g.drawString(this.level[1], 30, 555);
+ break;
+ case 3:
+ g.drawString(this.level[2], 30, 555);
+ break;
+ case 4:
+ g.drawString(this.level[3], 30, 555);
+ break;
+ case 5:
+ g.drawString(this.level[4], 30, 555);
+ break;
+ }
+
+ switch (this.selectedString)
+ {
+ case 0:
+ this.selected.draw(325, 280);
+ break;
+ case 1:
+ this.selected.draw(325, 310);
+ break;
+ case 2:
+ this.selected.draw(325, 340);
+ break;
+ }
+ break;
+ case "start":
+ this.cyberg.draw(0, 0, 800, 600);
+ this.panel.render(gc, g);
+ this.protector.render(gc, g);
+ this.invader.render(gc, g);
+
+ g.setColor(Color.red);
+ g.drawLine(0, gc.getHeight() - 50, 800, gc.getHeight() - 50);// Systemlebenslinie
+ g.setColor(Color.magenta);
+
+ switch (this.currentLevel)
+ {
+ case 1:
+ g.drawString(this.level[0], 30, 555);
+ break;
+ case 2:
+ g.drawString(this.level[1], 30, 555);
+ break;
+ case 3:
+ g.drawString(this.level[2], 30, 555);
+ break;
+ case 4:
+ g.drawString(this.level[3], 30, 555);
+ break;
+ case 5:
+ g.drawString(this.level[4], 30, 555);
+ break;
+ }
+
+ break;
+ }
+ }
+
+ public void update(final GameContainer gc, final float _delta) throws SlickException
+ {
+ this.waiter += _delta;// Ingame Zeit
+
+ switch (this.state.currentState)
+ {
+
+ case "paused":
+ // Kontrolle im Menü
+ if (gc.getInput().isKeyPressed(Input.KEY_UP) && (this.selectedString > 0))
+ {
+ this.selectedString--;
+ }
+ if (gc.getInput().isKeyPressed(Input.KEY_DOWN) && (this.selectedString < 2))
+ {
+ this.selectedString++;
+ }
+ break;
+
+ case "start":
+ this.protector.update(gc, _delta);
+ this.invader.update(gc, _delta);
+
+ if (!this.invader.isParalized && (this.invader.para_timer >= 5) && (this.currentLevel == 5))
+ {
+ // invader movement in final level//
+ if (((this.invader.riderX + 75) > (this.panel.xPos + (this.panel.xSize * 15))) && (this.changedDirection == false))
+ {
+ this.invader.flightSpdX *= -1;
+ this.invader.fly_right = false;
+ this.changedDirection = true;
+ }
+
+ if (((this.invader.riderX - 75) < (this.panel.xPos + (this.panel.xSize * 1))) && (this.changedDirection == false))
+ {
+ this.invader.flightSpdX *= -1;
+ this.invader.fly_right = true;
+ this.changedDirection = true;
+ }
+
+ if ((this.invader.riderX < (this.panel.xPos + (this.panel.xSize * 9))) && (this.invader.riderX > (this.panel.xPos + (this.panel.xSize * 6))) && (this.changedDirection == true))
+ {
+ this.changedDirection = false;
+ }
+
+ // Ball Bewegung im letzten level
+ if ((this.invader.ball.xPos - 36) > (this.panel.xPos + (this.panel.xSize * 15)))
+ {
+ this.invader.ball.collisionManager("x_inverted");
+ }
+
+ if ((this.invader.ball.xPos + 36) < (this.panel.xPos + (this.panel.xSize * 1)))
+ {
+ this.invader.ball.collisionManager("x_inverted");
+ }
+
+ }
+
+ // Level ende und wechsel zum nächsten Level
+ if ((this.panel.xPos <= -4350) && this.protector.isLanded)
+ {
+ this.currentLevel++;
+ this.waiter = 0;
+ this.state.stateId = 5;
+ this.panel.init(gc, this.state, this.currentLevel);
+ this.protector.init(gc, this.state, -100);
+ this.invader.init(gc, this.state);
+ this.ui.sbar_width = 0;
+ this.invader.isParalized = false;
+ this.panel.xPos = 350;
+ }
+
+ // Roboter - Panel kollision
+ for (int i = 1; i < this.panel.collisionarea.length; i++)
+ {
+ if (this.panel.collisionarea[i].intersects(this.protector.getCollisionarea()) && !this.protector.hasFloorContact)
+ {
+ this.protector.ySpd = 0;
+ this.protector.setFloorContact(true);
+ this.protector.isLanded = true;
+
+ }
+ else
+ {
+ this.protector.hasFloorContact = false;
+ }
+
+ // einsetzen der "Gravitation"
+ if (this.panel.collisionarea[i].intersects(this.protector.getCollisionarea()) && !this.protector.hasFloorContact)
+ {
+
+ this.protector.ySpd *= 0;
+
+ }
+ }
+
+ // Roboter Sprung
+ if (gc.getInput().isKeyDown(Input.KEY_UP) && this.protector.isLanded)
+ {
+ if (this.protector.isRunningRight)
+ {
+
+ this.protector.move = 3;
+ }
+ else if (this.protector.isRunningLeft)
+ {
+
+ this.protector.move = 4;
+ }
+ else
+ {
+ this.protector.move = 0;
+ }
+ this.protector.hasFloorContact = false;
+ this.protector.ySpd = -400;
+ this.protector.isLanded = false;
+
+ }
+
+ // Ball fliegt oben aus dem Screen
+ if ((this.invader.ball.yPos < 0) && !this.invader.ball.ballIsKilled)
+ {
+ this.invader.ball.killBall(gc);
+ this.protector.ballhit = false;
+
+ }
+ // Kollision Ball - Hacker
+ if ((this.invader.ball.yPos < (this.invader.riderY + 75)) && (this.invader.ball.yPos > this.invader.riderY) && (this.invader.ball.xPos < (this.invader.riderX + 75)) && (this.invader.ball.xPos > this.invader.riderX))
+ {
+ this.invader.ball.killBall(gc);
+ this.ui.sbar_width += 20;
+ this.protector.ballhit = false;
+
+ }
+
+ // Disconnected Erzeugung
+ if ((this.ui.sbar_width >= 100) && !this.invader.isParalized)
+ {
+ this.invader.isParalized = true;
+ this.invader.paralized();
+
+ }
+
+ // ReConect des Hackers
+ if ((this.invader.para_timer >= 5) && (this.ui.sbar_width >= 100))
+ {
+ this.ui.sbar_width -= 100;
+ this.invader.isParalized = false;
+ }
+
+ // Ball Kollidiert mit Systemlebenslinie
+ if ((this.invader.ball.yPos >= (gc.getHeight() - 50)))
+ {
+
+ this.invader.ball.killBall(gc);
+ this.protector.ballhit = false;
+
+ if (this.ui.dbar_width > 0)
+ {
+ this.ui.dbar_width -= 20;
+ }
+ }
+
+ // Ball - Roboter Kollision
+ if ((this.invader.ball.yPos >= (this.protector.yPos - 50)) && (this.invader.ball.xPos >= (this.protector.xPos - 25)) && (this.invader.ball.xPos <= (this.protector.xPos + 25)) && (this.invader.ball.yPos <= (this.protector.yPos + 50)) && !this.protector.ballhit)
+ {
+
+ this.invader.ball.collisionManager("y_inverted");
+ this.protector.ballhit = true;
+ }
+
+ // roboter rechtsbewegung
+ if (gc.getInput().isKeyDown(Input.KEY_RIGHT))
+ {
+ if (this.protector.isLanded)
+ {
+ this.protector.move = 1;
+ }
+ else
+ {
+ this.protector.move = 3;
+ }
+ this.panel.xSpd = -200;
+ this.invader.ball.xPos -= 3;
+ if (!this.invader.isParalized)
+ {
+ this.invader.riderX -= 3;
+ }
+
+ }
+ else
+ // roboter Linksbewegung
+ if (gc.getInput().isKeyDown(Input.KEY_LEFT))
+ {
+ if (this.protector.isLanded)
+ {
+ this.protector.move = 2;
+ }
+ else
+ {
+ this.protector.move = 4;
+ }
+ this.panel.xSpd = 200;
+ this.invader.ball.xPos += 3;
+ if (!this.invader.isParalized)
+ {
+ this.invader.riderX += 3;
+ }
+
+ }
+
+ else
+ {// roboter stand bewegung
+ this.protector.move = 0;
+ this.panel.xSpd = 0;
+ }
+
+ // roboter fliegt unten durch den Screen
+ if (this.protector.yPos > 800)
+ {
+ this.protector.init(gc, this.state, -100);
+ this.panel.xPos = 350;
+ this.invader.init(gc, this.state);
+ this.invader.ball.killBall(gc);
+ this.ui.sbar_width = 0;
+ this.ui.dbar_width -= 20;
+ this.invader.isParalized = false;
+ }
+ break;
+ }
+ }
+}
diff --git a/Main/Hack_Alert.png b/Main/Hack_Alert.png
new file mode 100644
index 0000000..5d728ab
Binary files /dev/null and b/Main/Hack_Alert.png differ
diff --git a/Main/Panel.png b/Main/Panel.png
new file mode 100644
index 0000000..6aeb197
Binary files /dev/null and b/Main/Panel.png differ
diff --git a/Main/Robot_sheet.png b/Main/Robot_sheet.png
new file mode 100644
index 0000000..df23405
Binary files /dev/null and b/Main/Robot_sheet.png differ
diff --git a/Main/Robot_sheet1.png b/Main/Robot_sheet1.png
new file mode 100644
index 0000000..258c4be
Binary files /dev/null and b/Main/Robot_sheet1.png differ
diff --git a/Main/Virus_sheet.png b/Main/Virus_sheet.png
new file mode 100644
index 0000000..eba9e0f
Binary files /dev/null and b/Main/Virus_sheet.png differ
diff --git a/Main/arrows_sheet.png b/Main/arrows_sheet.png
new file mode 100644
index 0000000..bcb5f72
Binary files /dev/null and b/Main/arrows_sheet.png differ
diff --git a/Main/cybergrid.png b/Main/cybergrid.png
new file mode 100644
index 0000000..0af39f7
Binary files /dev/null and b/Main/cybergrid.png differ
diff --git a/Main/destruction_bar.png b/Main/destruction_bar.png
new file mode 100644
index 0000000..74dff5b
Binary files /dev/null and b/Main/destruction_bar.png differ
diff --git a/Main/empty_bar.png b/Main/empty_bar.png
new file mode 100644
index 0000000..67358e1
Binary files /dev/null and b/Main/empty_bar.png differ
diff --git a/Main/game_Over1.png b/Main/game_Over1.png
new file mode 100644
index 0000000..6187bfe
Binary files /dev/null and b/Main/game_Over1.png differ
diff --git a/Main/game_Over2.png b/Main/game_Over2.png
new file mode 100644
index 0000000..3a6d994
Binary files /dev/null and b/Main/game_Over2.png differ
diff --git a/Main/game_Over3.png b/Main/game_Over3.png
new file mode 100644
index 0000000..c7cadee
Binary files /dev/null and b/Main/game_Over3.png differ
diff --git a/Main/game_Over4.png b/Main/game_Over4.png
new file mode 100644
index 0000000..c9cd823
Binary files /dev/null and b/Main/game_Over4.png differ
diff --git a/Main/game_Over5.png b/Main/game_Over5.png
new file mode 100644
index 0000000..6e027e1
Binary files /dev/null and b/Main/game_Over5.png differ
diff --git a/Main/game_Over6.png b/Main/game_Over6.png
new file mode 100644
index 0000000..f649b89
Binary files /dev/null and b/Main/game_Over6.png differ
diff --git a/Main/game_Over7.png b/Main/game_Over7.png
new file mode 100644
index 0000000..9ae010e
Binary files /dev/null and b/Main/game_Over7.png differ
diff --git a/Main/game_Over8.png b/Main/game_Over8.png
new file mode 100644
index 0000000..9bad6ca
Binary files /dev/null and b/Main/game_Over8.png differ
diff --git a/Main/key_instructions.png b/Main/key_instructions.png
new file mode 100644
index 0000000..e34dc44
Binary files /dev/null and b/Main/key_instructions.png differ
diff --git a/Main/level_cleared_screen.png b/Main/level_cleared_screen.png
new file mode 100644
index 0000000..721d3d2
Binary files /dev/null and b/Main/level_cleared_screen.png differ
diff --git a/Main/mechrider.png b/Main/mechrider.png
new file mode 100644
index 0000000..06b7ee8
Binary files /dev/null and b/Main/mechrider.png differ
diff --git a/Main/menu.png b/Main/menu.png
new file mode 100644
index 0000000..4c13c33
Binary files /dev/null and b/Main/menu.png differ
diff --git a/Main/mission.png b/Main/mission.png
new file mode 100644
index 0000000..2e51d10
Binary files /dev/null and b/Main/mission.png differ
diff --git a/Main/paused_menu.png b/Main/paused_menu.png
new file mode 100644
index 0000000..1c5dc9e
Binary files /dev/null and b/Main/paused_menu.png differ
diff --git a/Main/rider.png b/Main/rider.png
new file mode 100644
index 0000000..b57c440
Binary files /dev/null and b/Main/rider.png differ
diff --git a/Main/robot_sheet_good.png b/Main/robot_sheet_good.png
new file mode 100644
index 0000000..ae06686
Binary files /dev/null and b/Main/robot_sheet_good.png differ
diff --git a/Main/shield_bar.png b/Main/shield_bar.png
new file mode 100644
index 0000000..c3c4904
Binary files /dev/null and b/Main/shield_bar.png differ
diff --git a/Main/shock.png b/Main/shock.png
new file mode 100644
index 0000000..6949fae
Binary files /dev/null and b/Main/shock.png differ
diff --git a/Main/titel.png b/Main/titel.png
new file mode 100644
index 0000000..808034f
Binary files /dev/null and b/Main/titel.png differ
diff --git a/OpenAL32.dll b/OpenAL32.dll
new file mode 100644
index 0000000..b6f6f65
Binary files /dev/null and b/OpenAL32.dll differ
diff --git a/OpenAL64.dll b/OpenAL64.dll
new file mode 100644
index 0000000..d835da5
Binary files /dev/null and b/OpenAL64.dll differ
diff --git a/Original Package/Main/Ball.java b/Original Package/Main/Ball.java
new file mode 100644
index 0000000..0c40a9c
--- /dev/null
+++ b/Original Package/Main/Ball.java
@@ -0,0 +1,72 @@
+package Main;
+
+import org.newdawn.slick.Animation;
+import org.newdawn.slick.GameContainer;
+import org.newdawn.slick.Graphics;
+import org.newdawn.slick.SlickException;
+import org.newdawn.slick.SpriteSheet;
+
+public class Ball {
+
+ SpriteSheet virus_sheet;
+ Animation virus;
+
+ int xPos,yPos;
+ float xSpd,ySpd;
+ boolean isColliding = false,ballIsKilled = true;
+ //initial methode mit Koordinatenbestimmung und startrichtung
+ void init (GameContainer gc,int xPos, int yPos, int invaderSpd) throws SlickException{
+
+ this.xPos = xPos;
+ this.yPos = yPos;
+
+ this.xSpd = 1.0f * invaderSpd;//initiierung mit Hacker flugrichtungsindikation
+ this.ySpd = 1.0f;
+
+ virus_sheet = new SpriteSheet ("Main/Virus_sheet.png", 72, 72);
+ virus = new Animation(virus_sheet,2,1,3,4,true,200,true);
+
+
+ }
+
+
+ void render(GameContainer gc, Graphics g) throws SlickException{
+
+ virus.draw(xPos-36, yPos-36);
+
+ }
+
+
+ void update(GameContainer gc, float _delta)throws SlickException{
+
+ this.xPos += xSpd;
+ this.yPos += ySpd;
+
+ }
+
+ public void collisionManager(String direction){//Verwaltet Apprallrichtung und intensität
+
+
+ switch(direction){
+
+
+ case "x_inverted" :this.xSpd *= -1; break;
+ case "y_inverted" :this.ySpd *= -1; break;
+ case "rebounce" :this.xSpd *= -1; this.ySpd *= -1;break;
+
+ case "left" :this.xSpd *= -1; this.ySpd *= -1;break;
+ case "midleft" :this.xSpd *= 2; this.ySpd *= -1;break;
+ case "middle" :this.ySpd *= -1; break;
+ case "midright" :this.xSpd *= 2; this.ySpd *= -1;break;
+ case "right" :this.xSpd *= -1; this.ySpd *= -1;break;
+ }
+
+ }
+ //ball "zerstörung"
+ public void killBall(GameContainer gc) throws SlickException{
+ init(gc, -50,350, 1);
+ ballIsKilled=true;
+ }
+
+
+}
diff --git a/Original Package/Main/Hack_Alert.png b/Original Package/Main/Hack_Alert.png
new file mode 100644
index 0000000..5d728ab
Binary files /dev/null and b/Original Package/Main/Hack_Alert.png differ
diff --git a/Original Package/Main/Invader.java b/Original Package/Main/Invader.java
new file mode 100644
index 0000000..f8574a3
--- /dev/null
+++ b/Original Package/Main/Invader.java
@@ -0,0 +1,140 @@
+package Main;
+
+import org.newdawn.slick.Animation;
+import org.newdawn.slick.GameContainer;
+import org.newdawn.slick.Graphics;
+import org.newdawn.slick.SlickException;
+import org.newdawn.slick.SpriteSheet;
+
+public class Invader {
+
+ int riderX, riderY,flightSpdX,flightSpdY;
+ SpriteSheet rider,shocking;
+ Animation flight_left, flight_right,shock;
+ String flight_direction;//Flugrichtung
+
+ float countDown,para_timer;
+ boolean readyToFire,//Check für die Abschuss automatik
+ ball_shoot,//Check ob Ball abgefeuert wurde
+ fly_right,//Check ob Flugrichtung rechts
+ isParalized;//Disconnected check
+
+ Ball ball;//Definierung eines Ball objektes
+ private State state;
+
+ void init(GameContainer gc, State gameState) throws SlickException{
+
+
+ this.state = gameState;
+ riderX = 450;
+ riderY = 30;
+ flightSpdX = 1;
+ flightSpdY = 1;
+ flight_direction = "right";
+ fly_right = true;
+ ball_shoot= false;
+ isParalized = false;
+
+ rider = new SpriteSheet("Main/rider.png", 75, 75);
+ shocking = new SpriteSheet("Main/shock.png", 75, 45);
+
+ flight_left = new Animation(rider,0,1,2,1,true,250,true);
+ flight_right = new Animation(rider,0,0,2,0,true,250,true);
+ shock = new Animation(shocking,0,0,3,0,true,250,true);
+
+ countDown = 3.1f;
+ para_timer = 5.1f;
+ readyToFire = false;
+
+ ball = new Ball();//erstellung des Ballobjektes
+
+
+ }
+
+
+ void render(GameContainer gc, Graphics g) throws SlickException{
+ switch(state.currentState){
+ case "titel":break;
+ case "start": case "paused":
+ if(fly_right)//rechtsflug animation
+ flight_right.draw(riderX, riderY);
+ else//linksflug animation
+ flight_left.draw(riderX, riderY);
+
+ //ball wird nur gerendert falls er abgeschossen wurde
+ if(ball_shoot){
+ ball.render(gc, g);
+ }
+
+ //shock animation des Disconnected Status
+ if(para_timer < 5){
+ shock.draw(riderX, riderY+20);
+ }
+
+
+ break;
+ }
+ }
+
+
+ void update(GameContainer gc, float _delta) throws SlickException{
+
+
+ switch(state.currentState){
+ case "paused":break;
+ case "start" :
+
+ countDown += _delta;
+ para_timer += _delta;
+
+
+ //flug nur bei Connected Status
+ if(!isParalized&& para_timer >=5 ){
+
+ riderX += flightSpdX;
+
+ //Abschuss automatik
+ if(readyToFire == true && countDown > 3 ){
+ ball.init(gc, riderX+37, riderY+80, flightSpdX);
+ ball_shoot = true;
+ readyToFire= false;
+ }
+
+
+ }
+
+
+ //ball bewegung
+ if(ball_shoot&&!ball.ballIsKilled)
+ ball.update(gc, _delta );
+ //ball wird bei zerstörung für den schuss vorbereitet
+ if(ball.ballIsKilled){
+ prepareToFire();
+ ball.ballIsKilled =false;
+ }
+
+ gc.getInput().clearKeyPressedRecord();//Tastendruck löschung zur Sicherheit
+
+
+
+
+
+ break;
+ }
+ }
+
+
+
+ //Abschussmethode
+ void prepareToFire(){
+ countDown = 0;
+ readyToFire = true;
+ ball_shoot = false;
+ }
+ //Disconnected Methode
+ void paralized(){
+ para_timer = 0;
+
+ }
+
+}
diff --git a/Original Package/Main/JnP.java b/Original Package/Main/JnP.java
new file mode 100644
index 0000000..7c35300
--- /dev/null
+++ b/Original Package/Main/JnP.java
@@ -0,0 +1,175 @@
+package Main;
+//Importe
+import org.newdawn.slick.AppGameContainer;
+import org.newdawn.slick.BasicGame;
+import org.newdawn.slick.GameContainer;
+import org.newdawn.slick.Graphics;
+import org.newdawn.slick.Input;//für Tastennutzung
+import org.newdawn.slick.SlickException;
+
+public class JnP extends BasicGame {
+
+ //Main Klasse des Games
+ public JnP() {
+ super("Jump 'n' Pong");
+ }
+ //Objekterstellungen
+ Panel panel;
+ Level level;
+ UserInterface hud;
+ Invader invader;
+ Player protector;
+ State gameState;
+ Menu menu;
+
+ float waiter;//Zeit-Laufvariable
+
+ public void init(GameContainer gc) throws SlickException {
+ // TODO Auto-generated method stub
+
+ //Objekterstellung (außer Ball -> Erstellung in der Invader-Klasse
+ hud = new UserInterface();
+ invader = new Invader();
+ protector = new Player();
+ level = new Level();
+ gameState = new State();
+ menu = new Menu();
+ panel = new Panel();
+
+ //Initialisierung
+ gameState.init(gc);
+ menu.init(gc, gameState);
+ level.init(gc,invader,protector,hud,gameState,panel,waiter);//Initialisierung mit Vererbung aller Objekte
+ panel.init(gc,gameState,1);// Initialisierung + Angabe des Startlevels
+ hud.init(gc,gameState);
+
+
+ waiter = 0; //Setzung der Zeit zu Begin
+ }
+@Override
+
+ public void update(GameContainer gc, int delta) throws SlickException {
+ // TODO Auto-generated method stub
+ float _delta = delta /1000f;
+ this.waiter += _delta; //Zeit läuft
+
+ //Menu exit
+ if(gc.getInput().isKeyDown(Input.KEY_ENTER) && (level.selectedString == 2||menu.selectedString == 2))
+ gc.exit();
+
+ // Press Enter start screen
+ if(gc.getInput().isKeyDown(Input.KEY_ENTER)&& (level.selectedString == 0)&& level.waiter >3 && gameState.stateId==0){
+ gameState.stateId = 4;level.waiter = 0;
+ }
+
+ //Menu startgame Option
+ if(gc.getInput().isKeyDown(Input.KEY_ENTER)&&level.waiter >0.3 && (menu.selectedString == 0) && gameState.stateId==4){
+ gameState.stateId = 6;level.waiter = 0;
+ }
+
+ //Pause Menu resume game Option
+ if(gc.getInput().isKeyDown(Input.KEY_ENTER)&&level.waiter >3 && (menu.selectedString == 0) && gameState.stateId==2){
+ gameState.stateId = 1;
+ }
+
+ //Control Instructions Screen Timer
+ if(gameState.stateId == 6 && level.waiter >10){
+ gameState.stateId = 5;
+ level.waiter = 0;
+ }
+
+ //Intro Screen Timer
+ if(gameState.stateId == 5 && level.waiter > 5){
+ panel.xPos = 350;
+ gameState.stateId = 1;
+ level.waiter = 0;
+
+ }
+
+ //Win State Bedingung
+ if(gameState.stateId == 1 && level.currentLevel == 5 && hud.sbar_width >=100){
+ level.waiter = 0 ;
+ gameState.stateId = 8;
+ }
+
+ //Win Screen Timer
+ if(gameState.stateId == 8 && level.waiter > 5){
+ gameState.stateId = 4;
+ level.currentLevel = 1;
+
+ //Initialisierung eines "Neuen Spiels"
+ panel.init(gc, gameState, 1);
+ hud.init(gc, gameState);
+ invader.init(gc, gameState);
+ protector.init(gc, gameState, 50);
+ level.init(gc, invader, protector, hud, gameState, panel, _delta);
+ menu.init(gc, gameState);
+
+ }
+
+ //Pause Menu Aktivierung
+ if(gc.getInput().isKeyPressed(Input.KEY_P )&& (gameState.stateId == 1))
+ gameState.stateId = 2;
+
+ //Game Over Bedingung
+ if(hud.dbar_width<=0 && gameState.stateId==1){
+ level.waiter = 0;
+ gameState.stateId = 7;
+
+ }
+
+ //Neues Game nach Game Over
+ if(gameState.stateId == 7 &&level.waiter > 10){
+
+ panel.init(gc, gameState, 1);
+ hud.init(gc, gameState);
+ invader.init(gc, gameState);
+ protector.init(gc, gameState, 50);
+ level.init(gc, invader, protector, hud, gameState, panel, _delta);
+ menu.init(gc, gameState);
+ level.currentLevel = 1;
+ gameState.stateId = 4;
+ }
+ //Update Aufrufe
+ gameState.update(gc, _delta);
+ level.update(gc, _delta);
+ menu.update(gc, _delta);
+ panel.update(gc, _delta);
+
+
+ }
+ @Override
+ public void render(GameContainer gc, Graphics g) throws SlickException {
+ // TODO Auto-generated method stub
+
+ //Renderaufrufe
+ gameState.render(gc, g);
+ level.render(gc, g);
+
+ menu.render(gc, g);
+ hud.render(gc, g);
+
+ //Titel screen Einblendung
+ if(gameState.stateId == 0 && waiter >3){
+ g.drawString("Press Enter", 350, 550);
+ }
+ }
+
+
+
+
+ //Hauptmethode
+ public static void main(String[] args) {
+ try {//Apperstellung
+ AppGameContainer app = new AppGameContainer(new JnP());
+ app.setDisplayMode(800, 600, true);//Fullscreen 800x600
+ app.setTargetFrameRate(60);//Flüssige FPS von 60
+ app.setVSync(true);//VSinc um Renderprobleme bei schneller Objektbewegung zu verhindern
+ app.setShowFPS(false);
+ app.start();
+ }
+ catch (SlickException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/Original Package/Main/Level.java b/Original Package/Main/Level.java
new file mode 100644
index 0000000..64ac6ae
--- /dev/null
+++ b/Original Package/Main/Level.java
@@ -0,0 +1,455 @@
+package Main;
+
+
+import org.newdawn.slick.Animation;
+import org.newdawn.slick.Color;
+import org.newdawn.slick.GameContainer;
+import org.newdawn.slick.Graphics;
+import org.newdawn.slick.Image;
+import org.newdawn.slick.Input;
+import org.newdawn.slick.SlickException;
+import org.newdawn.slick.SpriteSheet;
+
+
+
+
+public class Level{
+
+
+ private Image cyberg,title,paused,instructionScreen,missionScreen,alert,clearedLevel;
+ private Invader invader;
+ private Player protector;
+ private UserInterface ui;
+ private State state;
+
+ //Levelbezeichnungen
+ private String[] level = {"-1- First Contact |", "-2- Two Paths to Core |", "-3- Cyberlabyrinth", "-4-", " -5- Final Fight |"};
+
+ //Game Over Screen Erstellung
+ private Image game_over_screen0,game_over_screen1,game_over_screen2,game_over_screen3,game_over_screen4,game_over_screen5,game_over_screen6,game_over_screen7,game_over_screen8;
+ Image[] game_over_screens = { game_over_screen0,
+ game_over_screen1,
+ game_over_screen2,
+ game_over_screen3,
+ game_over_screen4,
+ game_over_screen5,
+ game_over_screen6,
+ game_over_screen7,
+ game_over_screen8};
+
+
+ int selectedString,currentLevel;
+ SpriteSheet shock,arrows_sheet,walk_demo_sheet,virus_demo_sheet,rider_demo_sheet,shock_demo_sheet;
+ Animation selected,arrows,walk_demo,game_over,virus_demo,rider_demo,shock_demo;
+ Panel panel;
+
+ float waiter;//Ingame Zeit
+
+ boolean changedDirection = false;//Indikator für Richtungswechsel
+
+ public void init(GameContainer gc, Invader invader, Player player, UserInterface ui, State gameState, Panel panel, float waiter) throws SlickException{
+
+ game_over_screen0 = new Image("Main/cybergrid.png");
+ game_over_screen1 = new Image("Main/game_Over1.png");
+ game_over_screen2 = new Image("Main/game_Over2.png");
+ game_over_screen3 = new Image("Main/game_Over3.png");
+ game_over_screen4 = new Image("Main/game_Over4.png");
+ game_over_screen5 = new Image("Main/game_Over5.png");
+ game_over_screen6 = new Image("Main/game_Over6.png");
+ game_over_screen7 = new Image("Main/game_Over7.png");
+ game_over_screen8 = new Image("Main/game_Over8.png");
+
+
+ this.waiter = waiter;
+ this.panel = panel;
+ this.state = gameState;
+ this.invader = invader;
+ this.protector = player;
+ this.ui = ui;
+
+
+ alert = new Image("Main/Hack_Alert.png");
+ clearedLevel = new Image("Main/level_cleared_screen.png");
+ instructionScreen = new Image("Main/key_instructions.png");
+ missionScreen = new Image("Main/mission.png");
+ arrows_sheet = new SpriteSheet("Main/arrows_sheet.png" ,101, 101);
+ walk_demo_sheet = new SpriteSheet("Main/robot_sheet_good.png",50,100);
+ virus_demo_sheet = new SpriteSheet("Main/Virus_sheet.png",72,72);
+ rider_demo_sheet = new SpriteSheet("Main/rider.png",75,75);
+ shock_demo_sheet = new SpriteSheet("Main/shock.png",75,45);
+
+ arrows = new Animation(arrows_sheet,0,0,3,2,true,200, true);
+ walk_demo = new Animation(walk_demo_sheet,0,0,5,2,true,200,true);
+ virus_demo = new Animation(virus_demo_sheet,2,1,3,4,true,200,true);
+ rider_demo = new Animation(rider_demo_sheet,0,0,2,0,true,200,true);
+ shock_demo = new Animation(shock_demo_sheet,0,0,3,0,true,200,true);
+
+ selectedString = 0;//Default Auswahl im Menu
+ currentLevel = 1;//Initial Level zu Begin
+
+ cyberg = new Image("Main/cybergrid.png");
+ title = new Image("Main/titel.png");
+ paused = new Image("Main/paused_menu.png");
+ shock = new SpriteSheet("Main/shock.png", 75, 45);
+ selected = new Animation(shock,0,0,3,0,true,250,true);
+
+ protector.init(gc,gameState,100);//Roboter Initialisierung an YPosition 100
+ invader.init(gc,gameState);
+
+ }
+
+ public void render (GameContainer gc, Graphics g)throws SlickException{
+
+
+ //Rendering abhängig von State
+ switch(state.currentState){
+
+ case "win" ://Sieges Screen
+ g.drawImage(clearedLevel, 0, 0);
+ g.setColor(Color.cyan);
+ g.drawLine(0, 100, 800, 100);
+ break;
+ //game over Pseudo-Animation
+ case "gameOver":
+ if(waiter > 5)
+ g.drawImage(game_over_screen8, 0, 0);
+ else if ( waiter > 4.2)
+ g.drawImage(game_over_screen7, 0, 0);
+ else if(waiter > 3.8)
+ g.drawImage(game_over_screen6, 0, 0);
+ else if(waiter > 3.2)
+ g.drawImage(game_over_screen5, 0, 0);
+ else if(waiter > 2.8)
+ g.drawImage(game_over_screen4, 0, 0);
+ else if(waiter > 2.2)
+ g.drawImage(game_over_screen3, 0, 0);
+ else if(waiter > 1.8)
+ g.drawImage(game_over_screen2, 0, 0);
+ else if(waiter > 1.2)
+ g.drawImage(game_over_screen1, 0, 0);
+ else
+ g.drawImage(game_over_screen0, 0, 0);
+ break;
+
+ //Steuerungs Screens
+ case "controlInstructions":
+ if(waiter < 5){
+ g.drawImage(instructionScreen, 0, 0);
+ arrows.draw(150, 200);
+ walk_demo.draw(550, 200);
+
+ }
+ else if(waiter >6){//"Missions screen"
+ g.drawImage(missionScreen, 0, 0);
+ walk_demo.draw(550, 200);
+ virus_demo.draw(550, 300);
+ rider_demo.draw(550, 430);
+ shock_demo.draw(550, 460);
+ }
+ break;
+
+ case "level_intro":
+ //Level intro je nach currentLevel
+ switch(currentLevel){
+ case 1:alert.draw(0, 0);
+ g.setColor(Color.red);
+ g.drawLine(0, 200, 800, 200);
+ g.drawLine(0, 400, 800, 400);
+ g.setColor(Color.white);
+ g.drawString("1", 300, 330);
+ g.drawString("-First Contact-", 330, 330);
+ break;
+ case 2:alert.draw(0, 0);
+ g.setColor(Color.red);
+ g.drawLine(0, 200, 800, 200);
+ g.drawLine(0, 400, 800, 400);
+ g.setColor(Color.white);
+ g.drawString("2", 300, 330);
+ g.drawString("-Two Paths to the Core-", 330, 330);
+ break;
+ case 3:alert.draw(0, 0);
+ g.setColor(Color.red);
+ g.drawLine(0, 200, 800, 200);
+ g.drawLine(0, 400, 800, 400);
+ g.setColor(Color.white);
+ g.drawString("3", 300, 330);
+ g.drawString("-The Cyberlabyrinth-", 330, 330);
+ break;
+ case 4:alert.draw(0, 0);
+ g.setColor(Color.red);
+ g.drawLine(0, 200, 800, 200);
+ g.drawLine(0, 400, 800, 400);
+ g.setColor(Color.white);
+ g.drawString("4", 300, 330);
+ g.drawString("-The prelast level-", 330, 330);
+ break;
+ case 5:alert.draw(0, 0);
+ g.setColor(Color.red);
+ g.drawLine(0, 200, 800, 200);
+ g.drawLine(0, 400, 800, 400);
+ g.setColor(Color.white);
+ g.drawString("5", 300, 330);
+ g.drawString("-Final Fight-", 330, 330);
+ break;
+ }
+ break;
+
+ case "titel":
+ g.drawImage(title, 0, 0);break;
+ case"paused":
+ cyberg.draw(0, 0, 800, 600);
+ panel.render(gc,g);
+ protector.render(gc, g);
+ invader.render(gc, g);
+
+ g.setColor(Color.magenta);
+ //Pause Menü Tags
+ paused.draw(225, 250);
+ g.drawString("Resume Game", 425, 290);
+ g.drawString("Options(Not Implemented)", 425, 320);
+ g.drawString("Exit Game", 425, 350);
+ //Name des Levels in der UI
+ switch(currentLevel){
+ case 1:g.drawString(level[0], 30, 555);break;
+ case 2:g.drawString(level[1], 30, 555);break;
+ case 3:g.drawString(level[2], 30, 555);break;
+ case 4:g.drawString(level[3], 30, 555);break;
+ case 5:g.drawString(level[4], 30, 555);break;
+ }
+
+ switch(selectedString){
+ case 0: selected.draw(325, 280);break;
+ case 1: selected.draw(325, 310);break;
+ case 2: selected.draw(325, 340);break;
+ }
+ break;
+ case"start":
+ cyberg.draw(0, 0, 800, 600);
+ panel.render(gc,g);
+ protector.render(gc, g);
+ invader.render(gc, g);
+
+ g.setColor(Color.red);
+ g.drawLine(0, gc.getHeight()-50, 800, gc.getHeight()-50);//Systemlebenslinie
+ g.setColor(Color.magenta);
+
+
+ switch(currentLevel){
+ case 1:g.drawString(level[0], 30, 555);break;
+ case 2:g.drawString(level[1], 30, 555);break;
+ case 3:g.drawString(level[2], 30, 555);break;
+ case 4:g.drawString(level[3], 30, 555);break;
+ case 5:g.drawString(level[4], 30, 555);break;
+ }
+
+
+ break;
+ }
+ }
+
+ public void update (GameContainer gc,float _delta)throws SlickException{
+ this.waiter += _delta;//Ingame Zeit
+
+ switch(state.currentState){
+
+ case "paused":
+ //Kontrolle im Menü
+ if(gc.getInput().isKeyPressed(Input.KEY_UP)&& selectedString >0)
+ selectedString--;
+ if(gc.getInput().isKeyPressed(Input.KEY_DOWN)&& selectedString <2)
+ selectedString++;
+ break;
+
+ case "start":
+ protector.update(gc, _delta);
+ invader.update(gc, _delta);
+
+
+
+ if(!invader.isParalized&& invader.para_timer >=5 && currentLevel == 5){
+ //invader movement in final level//
+ if(invader.riderX+75 > panel.xPos+panel.xSize*15 && changedDirection == false){
+ invader.flightSpdX *= -1;
+ invader.fly_right = false;
+ changedDirection = true;
+ }
+
+
+ if(invader.riderX -75 < panel.xPos+panel.xSize*1 && changedDirection == false){
+ invader.flightSpdX *= -1;
+ invader.fly_right = true;
+ changedDirection = true;
+ }
+
+
+ if(invader.riderX < panel.xPos+panel.xSize*9 &&
+ invader.riderX > panel.xPos+panel.xSize*6 && changedDirection == true)
+ changedDirection = false;
+
+ //Ball Bewegung im letzten level
+ if(invader.ball.xPos-36 > panel.xPos+panel.xSize*15)
+ invader.ball.collisionManager("x_inverted");
+
+ if(invader.ball.xPos+36 < panel.xPos+panel.xSize*1)
+ invader.ball.collisionManager("x_inverted");
+
+
+ }
+
+
+ //Level ende und wechsel zum nächsten Level
+ if(panel.xPos <= -4350 && protector.isLanded){
+ currentLevel++;
+ waiter = 0;
+ state.stateId = 5;
+ panel.init(gc, state, currentLevel);
+ protector.init(gc, state, -100);
+ invader.init(gc, state);
+ ui.sbar_width = 0;
+ invader.isParalized = false;
+ panel.xPos = 350;
+ }
+
+
+
+ //Roboter - Panel kollision
+ for(int i = 1; i< panel.collisionarea.length;i++){
+ if(panel.collisionarea[i].intersects(protector.getCollisionarea())&&!protector.hasFloorContact){
+ protector.ySpd = 0;
+ protector.setFloorContact(true);
+ protector.isLanded = true;
+
+ } else
+ protector.hasFloorContact = false;
+
+ //einsetzen der "Gravitation"
+ if(panel.collisionarea[i].intersects(protector.getCollisionarea())&& !protector.hasFloorContact){
+
+ protector.ySpd *=0;
+
+ }
+ }
+
+ //Roboter Sprung
+ if(gc.getInput().isKeyDown(Input.KEY_UP)&& protector.isLanded)
+ {
+ if(protector.isRunningRight){
+
+ protector.move = 3;
+ }
+ else
+ if(protector.isRunningLeft){
+
+ protector.move = 4;
+ }
+ else
+ protector.move = 0;
+ protector.hasFloorContact = false;
+ protector.ySpd = -400;
+ protector.isLanded = false;
+
+ }
+
+ //Ball fliegt oben aus dem Screen
+ if(invader.ball.yPos < 0&& !invader.ball.ballIsKilled){
+ invader.ball.killBall(gc);
+ protector.ballhit =false;
+
+ }
+ //Kollision Ball - Hacker
+ if(invader.ball.yPos < invader.riderY + 75 &&
+ invader.ball.yPos > invader.riderY &&
+ invader.ball.xPos < invader.riderX + 75 &&
+ invader.ball.xPos > invader.riderX ){
+ invader.ball.killBall(gc);
+ ui.sbar_width += 20;
+ protector.ballhit=false;
+
+ }
+
+ //Disconnected Erzeugung
+ if(ui.sbar_width >= 100 && !invader.isParalized){
+ invader.isParalized = true;
+ invader.paralized();
+
+ }
+
+ //ReConect des Hackers
+ if(invader.para_timer >= 5 && ui.sbar_width >= 100){
+ ui.sbar_width -=100;
+ invader.isParalized = false;
+ }
+
+
+ // Ball Kollidiert mit Systemlebenslinie
+ if( (invader.ball.yPos >= gc.getHeight()-50)){
+
+ invader.ball.killBall(gc);
+ protector.ballhit=false;
+
+
+ if(ui.dbar_width >0)
+ ui.dbar_width -= 20;
+ }
+
+
+
+ //Ball - Roboter Kollision
+ if(invader.ball.yPos >= protector.yPos -50 &&
+ invader.ball.xPos >= protector.xPos -25&&
+ invader.ball.xPos <= protector.xPos + 25&&
+ invader.ball.yPos <= protector.yPos +50&&
+ !protector.ballhit){
+
+ invader.ball.collisionManager("y_inverted");
+ protector.ballhit= true;
+ }
+
+ //roboter rechtsbewegung
+ if(gc.getInput().isKeyDown(Input.KEY_RIGHT)){
+ if(protector.isLanded)protector.move = 1;
+ else
+ protector.move = 3;
+ panel.xSpd=-200;
+ invader.ball.xPos-=3;
+ if(!invader.isParalized)
+ invader.riderX -=3;
+
+
+ }
+ else
+ //roboter Linksbewegung
+ if(gc.getInput().isKeyDown(Input.KEY_LEFT)){
+ if(protector.isLanded)protector.move = 2;
+ else
+ protector.move = 4;
+ panel.xSpd=200;
+ invader.ball.xPos+=3;
+ if(!invader.isParalized)
+ invader.riderX +=3;
+
+ }
+
+ else
+ {//roboter stand bewegung
+ protector.move = 0;
+ panel.xSpd=0;
+ }
+
+ //roboter fliegt unten durch den Screen
+ if(protector.yPos > 800){
+ protector.init(gc, state,-100 );
+ panel.xPos = 350;
+ invader.init(gc, state);
+ invader.ball.killBall(gc);
+ ui.sbar_width = 0;
+ ui.dbar_width -=20 ;
+ invader.isParalized = false;
+ }
+ break;
+ }
+ }
+}
+
+
+
diff --git a/Original Package/Main/Menu.java b/Original Package/Main/Menu.java
new file mode 100644
index 0000000..dbe1388
--- /dev/null
+++ b/Original Package/Main/Menu.java
@@ -0,0 +1,70 @@
+package Main;
+
+import org.newdawn.slick.Animation;
+import org.newdawn.slick.Color;
+import org.newdawn.slick.GameContainer;
+import org.newdawn.slick.Graphics;
+import org.newdawn.slick.Image;
+import org.newdawn.slick.Input;
+import org.newdawn.slick.SlickException;
+import org.newdawn.slick.SpriteSheet;
+
+public class Menu {
+
+ Image menu;
+ State state;
+ String selectedOption;
+ int selectedString;
+ SpriteSheet shocking;
+ Animation selected;
+
+
+ public void init(GameContainer gc, State state) throws SlickException{
+ this.state= state;
+
+ selectedString = 0;
+ menu = new Image ("Main/menu.png");
+ shocking = new SpriteSheet("Main/shock.png", 75, 45);
+ selected = new Animation(shocking,0,0,3,0,true,250,true);//Auswahl im Menu
+ }
+
+ public void render(GameContainer gc, Graphics g)throws SlickException{
+ g.setColor(Color.magenta);
+
+
+
+ if(state.currentState == "menu"){
+ menu.draw(0, 0);
+ g.scale(2, 2);
+
+ switch(selectedString){
+ case 0: selected.draw(100, 70);break;
+ case 1: selected.draw(100, 130);break;
+ case 2: selected.draw(100, 190);break;
+
+ }//Menu auswahl punkte
+ g.drawString("Start Game", 150, 80);
+ g.drawString("Options Game", 150, 140);
+ g.drawString("Exit Game", 150, 200);
+ g.scale(0.5f, 0.5f);
+ }
+ }
+
+ public void update(GameContainer gc, float _delta)throws SlickException{
+
+ switch(state.stateId){
+ case 0: case 1:break;
+ case 4: switch(selectedString){
+ case 0: selectedOption = "Start Game";selectedString = 0;break;
+ case 1: selectedOption = "Options";selectedString = 1;break;
+ case 2: selectedOption = "Exit Game";selectedString = 2;break;
+ }
+ if(gc.getInput().isKeyPressed(Input.KEY_UP)&& selectedString >0)
+ selectedString--;
+ if(gc.getInput().isKeyPressed(Input.KEY_DOWN)&& selectedString <2)
+ selectedString++;
+
+ break;
+ }
+ }
+}
diff --git a/Original Package/Main/Panel.java b/Original Package/Main/Panel.java
new file mode 100644
index 0000000..c086ff9
--- /dev/null
+++ b/Original Package/Main/Panel.java
@@ -0,0 +1,238 @@
+package Main;
+
+import org.newdawn.slick.Color;
+import org.newdawn.slick.GameContainer;
+import org.newdawn.slick.Graphics;
+import org.newdawn.slick.Image;
+import org.newdawn.slick.SlickException;
+import org.newdawn.slick.geom.Rectangle;
+
+public class Panel {
+
+ Image panel;
+ int i ;
+ int xPos,xSize,yPos,xSpd;
+
+ //Level Modelierungen
+ int[] yPos_level1= {0,12,12,11,11,10,10, 9, 9,-1,-1,
+ -1,-1, 9, 9, 9,10,10,11,11,12,
+ 12,-1,-1,11,11,-1,-1,10,10,-1,
+ -1, 9, 9,-1,-1,-1, 9, 9,-1,-1,
+ -1,-1, 9, 9, 9,-1,-1,-1,-1,-1,
+ 11,11,-1,-1,10,10,12,12, 7, 7,
+ 7,-1,-1,-1,-1,-1, 8, 8, 7, 7,
+ -1,-1,-1,-1,-1,-1,11,11,-1,-1,
+ -1,-1,-1,12,12,10,10,-1,-1,-1,
+ -1,-1,11,11,12,12,12,12,12};
+
+ int[] yPos_level2= {0, 9, 9, 9,-1,-1, 8,10, 5,12, 5,
+ 12, 9, 9, 9,-1, 5,12,-1,-1, 5,
+ -1,12,-1,-1,-1,-1,11,11,11,-1,
+ -1,-1,-1,10,10,10,-1,-1,-1,-1,
+ 9, 9, 9,-1,12,12,12,-1, 8, 8,
+ 8,-1,12,12,-1, 7, 7, 7,12,12,
+ 12,12, 6, 6, 6,-1,12,12,-1, 5,
+ 5, 5,-1,-1,-1,-1,-1,-1,-1,12,
+ 12,12,12,12,12,-1,-1,-1,10,10,
+ 10,-1,-1,-1, 9, 9,10,10,10};
+
+ int[] yPos_level3= {0, 7, 7, 7,11,11,11,-1,-1, 8, 8,
+ 8,-1,-1,-1, 5, 5, 5,-1,-1, 8,
+ -1,-1,-1,-1,12,-1, 6,-1,-1, 9,
+ -1, 5, 5, 6, 6, 8, 8, 8, 9, 9,
+ -1,-1,-1, 6,12,-1, 9,-1,-1, 5,
+ 5, 5, 9, 7, 6,12,-1,-1,-1,11,
+ 6,12,12, 9, 5, 5,-1,-1,-1,-1,
+ -1,-1,-1, 9, 9, 9, 9,-1,-1,-1,
+ -1,12,12,-1, 6,12, 5,10,-1,-1,
+ -1, 5, 7, 7, 8, 8, 8, 8, 8};
+
+ int[] yPos_level4= {0,12,12,11,11,10,10,11,11,12,12,
+ 11,12,12,11,11,12,12,10,10,19,
+ 19,19,10,11,11,12,12,12,12,12,
+ 12,11,11,11,10,10,10, 8,11, 8,
+ 11,10,10,10, 9, 9, 8, 4,11, 4,
+ 11, 4,11, 8, 8, 8, 4,11, 4,11,
+ 4,12, 8, 8, 9, 9, 9,10,10,10,
+ 11,11,11,12,12,12,12,12,12,12,
+ 12,12,12,12,12,12,12,12,12,12,
+ 12,12,12,12,12,12,12,12,12};
+
+ int[] yPos_finalLevel= {0,12, 5,-1, 9,-1,-1,12, 5,-1,-1, 9,-1, 5,12};
+
+ State state;
+ Rectangle[] collisionarea;// Kollisionsvierecke für die Roboter-Panel Kollisionen
+ int currentLevel;
+
+ public void init(GameContainer gc, State state,int currentLevel) throws SlickException {
+ // TODO Auto-generated method stub
+ this.state = state;
+ this.currentLevel = currentLevel;
+ panel = new Image ("Main/panel.png");
+ //initialwerte
+ xSize = 50;//breite eines Panels
+ yPos = 40;// höhe eines Panels
+ xPos = 350;//Initial Position des ersten Panels
+ xSpd = 0;
+
+ //initiierung der einzelnen Kollisionsvierecke der jeweiligen Levels
+ switch(currentLevel){
+ case 1:
+ collisionarea = new Rectangle[yPos_level1.length];
+
+ for(int i = 1; i=5 ){
+
+ riderX += flightSpdX;
+
+ //Abschuss automatik
+ if(readyToFire == true && countDown > 3 ){
+ ball.init(gc, riderX+37, riderY+80, flightSpdX);
+ ball_shoot = true;
+ readyToFire= false;
+ }
+
+
+ }
+
+
+ //ball bewegung
+ if(ball_shoot&&!ball.ballIsKilled)
+ ball.update(gc, _delta );
+ //ball wird bei zerstörung für den schuss vorbereitet
+ if(ball.ballIsKilled){
+ prepareToFire();
+ ball.ballIsKilled =false;
+ }
+
+ gc.getInput().clearKeyPressedRecord();//Tastendruck löschung zur Sicherheit
+
+
+
+
+
+ break;
+ }
+ }
+
+
+
+ //Abschussmethode
+ void prepareToFire(){
+ countDown = 0;
+ readyToFire = true;
+ ball_shoot = false;
+ }
+ //Disconnected Methode
+ void paralized(){
+ para_timer = 0;
+
+ }
+
+}
diff --git a/QuellCode in txt/JnP.txt b/QuellCode in txt/JnP.txt
new file mode 100644
index 0000000..7c35300
--- /dev/null
+++ b/QuellCode in txt/JnP.txt
@@ -0,0 +1,175 @@
+package Main;
+//Importe
+import org.newdawn.slick.AppGameContainer;
+import org.newdawn.slick.BasicGame;
+import org.newdawn.slick.GameContainer;
+import org.newdawn.slick.Graphics;
+import org.newdawn.slick.Input;//für Tastennutzung
+import org.newdawn.slick.SlickException;
+
+public class JnP extends BasicGame {
+
+ //Main Klasse des Games
+ public JnP() {
+ super("Jump 'n' Pong");
+ }
+ //Objekterstellungen
+ Panel panel;
+ Level level;
+ UserInterface hud;
+ Invader invader;
+ Player protector;
+ State gameState;
+ Menu menu;
+
+ float waiter;//Zeit-Laufvariable
+
+ public void init(GameContainer gc) throws SlickException {
+ // TODO Auto-generated method stub
+
+ //Objekterstellung (außer Ball -> Erstellung in der Invader-Klasse
+ hud = new UserInterface();
+ invader = new Invader();
+ protector = new Player();
+ level = new Level();
+ gameState = new State();
+ menu = new Menu();
+ panel = new Panel();
+
+ //Initialisierung
+ gameState.init(gc);
+ menu.init(gc, gameState);
+ level.init(gc,invader,protector,hud,gameState,panel,waiter);//Initialisierung mit Vererbung aller Objekte
+ panel.init(gc,gameState,1);// Initialisierung + Angabe des Startlevels
+ hud.init(gc,gameState);
+
+
+ waiter = 0; //Setzung der Zeit zu Begin
+ }
+@Override
+
+ public void update(GameContainer gc, int delta) throws SlickException {
+ // TODO Auto-generated method stub
+ float _delta = delta /1000f;
+ this.waiter += _delta; //Zeit läuft
+
+ //Menu exit
+ if(gc.getInput().isKeyDown(Input.KEY_ENTER) && (level.selectedString == 2||menu.selectedString == 2))
+ gc.exit();
+
+ // Press Enter start screen
+ if(gc.getInput().isKeyDown(Input.KEY_ENTER)&& (level.selectedString == 0)&& level.waiter >3 && gameState.stateId==0){
+ gameState.stateId = 4;level.waiter = 0;
+ }
+
+ //Menu startgame Option
+ if(gc.getInput().isKeyDown(Input.KEY_ENTER)&&level.waiter >0.3 && (menu.selectedString == 0) && gameState.stateId==4){
+ gameState.stateId = 6;level.waiter = 0;
+ }
+
+ //Pause Menu resume game Option
+ if(gc.getInput().isKeyDown(Input.KEY_ENTER)&&level.waiter >3 && (menu.selectedString == 0) && gameState.stateId==2){
+ gameState.stateId = 1;
+ }
+
+ //Control Instructions Screen Timer
+ if(gameState.stateId == 6 && level.waiter >10){
+ gameState.stateId = 5;
+ level.waiter = 0;
+ }
+
+ //Intro Screen Timer
+ if(gameState.stateId == 5 && level.waiter > 5){
+ panel.xPos = 350;
+ gameState.stateId = 1;
+ level.waiter = 0;
+
+ }
+
+ //Win State Bedingung
+ if(gameState.stateId == 1 && level.currentLevel == 5 && hud.sbar_width >=100){
+ level.waiter = 0 ;
+ gameState.stateId = 8;
+ }
+
+ //Win Screen Timer
+ if(gameState.stateId == 8 && level.waiter > 5){
+ gameState.stateId = 4;
+ level.currentLevel = 1;
+
+ //Initialisierung eines "Neuen Spiels"
+ panel.init(gc, gameState, 1);
+ hud.init(gc, gameState);
+ invader.init(gc, gameState);
+ protector.init(gc, gameState, 50);
+ level.init(gc, invader, protector, hud, gameState, panel, _delta);
+ menu.init(gc, gameState);
+
+ }
+
+ //Pause Menu Aktivierung
+ if(gc.getInput().isKeyPressed(Input.KEY_P )&& (gameState.stateId == 1))
+ gameState.stateId = 2;
+
+ //Game Over Bedingung
+ if(hud.dbar_width<=0 && gameState.stateId==1){
+ level.waiter = 0;
+ gameState.stateId = 7;
+
+ }
+
+ //Neues Game nach Game Over
+ if(gameState.stateId == 7 &&level.waiter > 10){
+
+ panel.init(gc, gameState, 1);
+ hud.init(gc, gameState);
+ invader.init(gc, gameState);
+ protector.init(gc, gameState, 50);
+ level.init(gc, invader, protector, hud, gameState, panel, _delta);
+ menu.init(gc, gameState);
+ level.currentLevel = 1;
+ gameState.stateId = 4;
+ }
+ //Update Aufrufe
+ gameState.update(gc, _delta);
+ level.update(gc, _delta);
+ menu.update(gc, _delta);
+ panel.update(gc, _delta);
+
+
+ }
+ @Override
+ public void render(GameContainer gc, Graphics g) throws SlickException {
+ // TODO Auto-generated method stub
+
+ //Renderaufrufe
+ gameState.render(gc, g);
+ level.render(gc, g);
+
+ menu.render(gc, g);
+ hud.render(gc, g);
+
+ //Titel screen Einblendung
+ if(gameState.stateId == 0 && waiter >3){
+ g.drawString("Press Enter", 350, 550);
+ }
+ }
+
+
+
+
+ //Hauptmethode
+ public static void main(String[] args) {
+ try {//Apperstellung
+ AppGameContainer app = new AppGameContainer(new JnP());
+ app.setDisplayMode(800, 600, true);//Fullscreen 800x600
+ app.setTargetFrameRate(60);//Flüssige FPS von 60
+ app.setVSync(true);//VSinc um Renderprobleme bei schneller Objektbewegung zu verhindern
+ app.setShowFPS(false);
+ app.start();
+ }
+ catch (SlickException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/QuellCode in txt/Level.txt b/QuellCode in txt/Level.txt
new file mode 100644
index 0000000..64ac6ae
--- /dev/null
+++ b/QuellCode in txt/Level.txt
@@ -0,0 +1,455 @@
+package Main;
+
+
+import org.newdawn.slick.Animation;
+import org.newdawn.slick.Color;
+import org.newdawn.slick.GameContainer;
+import org.newdawn.slick.Graphics;
+import org.newdawn.slick.Image;
+import org.newdawn.slick.Input;
+import org.newdawn.slick.SlickException;
+import org.newdawn.slick.SpriteSheet;
+
+
+
+
+public class Level{
+
+
+ private Image cyberg,title,paused,instructionScreen,missionScreen,alert,clearedLevel;
+ private Invader invader;
+ private Player protector;
+ private UserInterface ui;
+ private State state;
+
+ //Levelbezeichnungen
+ private String[] level = {"-1- First Contact |", "-2- Two Paths to Core |", "-3- Cyberlabyrinth", "-4-", " -5- Final Fight |"};
+
+ //Game Over Screen Erstellung
+ private Image game_over_screen0,game_over_screen1,game_over_screen2,game_over_screen3,game_over_screen4,game_over_screen5,game_over_screen6,game_over_screen7,game_over_screen8;
+ Image[] game_over_screens = { game_over_screen0,
+ game_over_screen1,
+ game_over_screen2,
+ game_over_screen3,
+ game_over_screen4,
+ game_over_screen5,
+ game_over_screen6,
+ game_over_screen7,
+ game_over_screen8};
+
+
+ int selectedString,currentLevel;
+ SpriteSheet shock,arrows_sheet,walk_demo_sheet,virus_demo_sheet,rider_demo_sheet,shock_demo_sheet;
+ Animation selected,arrows,walk_demo,game_over,virus_demo,rider_demo,shock_demo;
+ Panel panel;
+
+ float waiter;//Ingame Zeit
+
+ boolean changedDirection = false;//Indikator für Richtungswechsel
+
+ public void init(GameContainer gc, Invader invader, Player player, UserInterface ui, State gameState, Panel panel, float waiter) throws SlickException{
+
+ game_over_screen0 = new Image("Main/cybergrid.png");
+ game_over_screen1 = new Image("Main/game_Over1.png");
+ game_over_screen2 = new Image("Main/game_Over2.png");
+ game_over_screen3 = new Image("Main/game_Over3.png");
+ game_over_screen4 = new Image("Main/game_Over4.png");
+ game_over_screen5 = new Image("Main/game_Over5.png");
+ game_over_screen6 = new Image("Main/game_Over6.png");
+ game_over_screen7 = new Image("Main/game_Over7.png");
+ game_over_screen8 = new Image("Main/game_Over8.png");
+
+
+ this.waiter = waiter;
+ this.panel = panel;
+ this.state = gameState;
+ this.invader = invader;
+ this.protector = player;
+ this.ui = ui;
+
+
+ alert = new Image("Main/Hack_Alert.png");
+ clearedLevel = new Image("Main/level_cleared_screen.png");
+ instructionScreen = new Image("Main/key_instructions.png");
+ missionScreen = new Image("Main/mission.png");
+ arrows_sheet = new SpriteSheet("Main/arrows_sheet.png" ,101, 101);
+ walk_demo_sheet = new SpriteSheet("Main/robot_sheet_good.png",50,100);
+ virus_demo_sheet = new SpriteSheet("Main/Virus_sheet.png",72,72);
+ rider_demo_sheet = new SpriteSheet("Main/rider.png",75,75);
+ shock_demo_sheet = new SpriteSheet("Main/shock.png",75,45);
+
+ arrows = new Animation(arrows_sheet,0,0,3,2,true,200, true);
+ walk_demo = new Animation(walk_demo_sheet,0,0,5,2,true,200,true);
+ virus_demo = new Animation(virus_demo_sheet,2,1,3,4,true,200,true);
+ rider_demo = new Animation(rider_demo_sheet,0,0,2,0,true,200,true);
+ shock_demo = new Animation(shock_demo_sheet,0,0,3,0,true,200,true);
+
+ selectedString = 0;//Default Auswahl im Menu
+ currentLevel = 1;//Initial Level zu Begin
+
+ cyberg = new Image("Main/cybergrid.png");
+ title = new Image("Main/titel.png");
+ paused = new Image("Main/paused_menu.png");
+ shock = new SpriteSheet("Main/shock.png", 75, 45);
+ selected = new Animation(shock,0,0,3,0,true,250,true);
+
+ protector.init(gc,gameState,100);//Roboter Initialisierung an YPosition 100
+ invader.init(gc,gameState);
+
+ }
+
+ public void render (GameContainer gc, Graphics g)throws SlickException{
+
+
+ //Rendering abhängig von State
+ switch(state.currentState){
+
+ case "win" ://Sieges Screen
+ g.drawImage(clearedLevel, 0, 0);
+ g.setColor(Color.cyan);
+ g.drawLine(0, 100, 800, 100);
+ break;
+ //game over Pseudo-Animation
+ case "gameOver":
+ if(waiter > 5)
+ g.drawImage(game_over_screen8, 0, 0);
+ else if ( waiter > 4.2)
+ g.drawImage(game_over_screen7, 0, 0);
+ else if(waiter > 3.8)
+ g.drawImage(game_over_screen6, 0, 0);
+ else if(waiter > 3.2)
+ g.drawImage(game_over_screen5, 0, 0);
+ else if(waiter > 2.8)
+ g.drawImage(game_over_screen4, 0, 0);
+ else if(waiter > 2.2)
+ g.drawImage(game_over_screen3, 0, 0);
+ else if(waiter > 1.8)
+ g.drawImage(game_over_screen2, 0, 0);
+ else if(waiter > 1.2)
+ g.drawImage(game_over_screen1, 0, 0);
+ else
+ g.drawImage(game_over_screen0, 0, 0);
+ break;
+
+ //Steuerungs Screens
+ case "controlInstructions":
+ if(waiter < 5){
+ g.drawImage(instructionScreen, 0, 0);
+ arrows.draw(150, 200);
+ walk_demo.draw(550, 200);
+
+ }
+ else if(waiter >6){//"Missions screen"
+ g.drawImage(missionScreen, 0, 0);
+ walk_demo.draw(550, 200);
+ virus_demo.draw(550, 300);
+ rider_demo.draw(550, 430);
+ shock_demo.draw(550, 460);
+ }
+ break;
+
+ case "level_intro":
+ //Level intro je nach currentLevel
+ switch(currentLevel){
+ case 1:alert.draw(0, 0);
+ g.setColor(Color.red);
+ g.drawLine(0, 200, 800, 200);
+ g.drawLine(0, 400, 800, 400);
+ g.setColor(Color.white);
+ g.drawString("1", 300, 330);
+ g.drawString("-First Contact-", 330, 330);
+ break;
+ case 2:alert.draw(0, 0);
+ g.setColor(Color.red);
+ g.drawLine(0, 200, 800, 200);
+ g.drawLine(0, 400, 800, 400);
+ g.setColor(Color.white);
+ g.drawString("2", 300, 330);
+ g.drawString("-Two Paths to the Core-", 330, 330);
+ break;
+ case 3:alert.draw(0, 0);
+ g.setColor(Color.red);
+ g.drawLine(0, 200, 800, 200);
+ g.drawLine(0, 400, 800, 400);
+ g.setColor(Color.white);
+ g.drawString("3", 300, 330);
+ g.drawString("-The Cyberlabyrinth-", 330, 330);
+ break;
+ case 4:alert.draw(0, 0);
+ g.setColor(Color.red);
+ g.drawLine(0, 200, 800, 200);
+ g.drawLine(0, 400, 800, 400);
+ g.setColor(Color.white);
+ g.drawString("4", 300, 330);
+ g.drawString("-The prelast level-", 330, 330);
+ break;
+ case 5:alert.draw(0, 0);
+ g.setColor(Color.red);
+ g.drawLine(0, 200, 800, 200);
+ g.drawLine(0, 400, 800, 400);
+ g.setColor(Color.white);
+ g.drawString("5", 300, 330);
+ g.drawString("-Final Fight-", 330, 330);
+ break;
+ }
+ break;
+
+ case "titel":
+ g.drawImage(title, 0, 0);break;
+ case"paused":
+ cyberg.draw(0, 0, 800, 600);
+ panel.render(gc,g);
+ protector.render(gc, g);
+ invader.render(gc, g);
+
+ g.setColor(Color.magenta);
+ //Pause Menü Tags
+ paused.draw(225, 250);
+ g.drawString("Resume Game", 425, 290);
+ g.drawString("Options(Not Implemented)", 425, 320);
+ g.drawString("Exit Game", 425, 350);
+ //Name des Levels in der UI
+ switch(currentLevel){
+ case 1:g.drawString(level[0], 30, 555);break;
+ case 2:g.drawString(level[1], 30, 555);break;
+ case 3:g.drawString(level[2], 30, 555);break;
+ case 4:g.drawString(level[3], 30, 555);break;
+ case 5:g.drawString(level[4], 30, 555);break;
+ }
+
+ switch(selectedString){
+ case 0: selected.draw(325, 280);break;
+ case 1: selected.draw(325, 310);break;
+ case 2: selected.draw(325, 340);break;
+ }
+ break;
+ case"start":
+ cyberg.draw(0, 0, 800, 600);
+ panel.render(gc,g);
+ protector.render(gc, g);
+ invader.render(gc, g);
+
+ g.setColor(Color.red);
+ g.drawLine(0, gc.getHeight()-50, 800, gc.getHeight()-50);//Systemlebenslinie
+ g.setColor(Color.magenta);
+
+
+ switch(currentLevel){
+ case 1:g.drawString(level[0], 30, 555);break;
+ case 2:g.drawString(level[1], 30, 555);break;
+ case 3:g.drawString(level[2], 30, 555);break;
+ case 4:g.drawString(level[3], 30, 555);break;
+ case 5:g.drawString(level[4], 30, 555);break;
+ }
+
+
+ break;
+ }
+ }
+
+ public void update (GameContainer gc,float _delta)throws SlickException{
+ this.waiter += _delta;//Ingame Zeit
+
+ switch(state.currentState){
+
+ case "paused":
+ //Kontrolle im Menü
+ if(gc.getInput().isKeyPressed(Input.KEY_UP)&& selectedString >0)
+ selectedString--;
+ if(gc.getInput().isKeyPressed(Input.KEY_DOWN)&& selectedString <2)
+ selectedString++;
+ break;
+
+ case "start":
+ protector.update(gc, _delta);
+ invader.update(gc, _delta);
+
+
+
+ if(!invader.isParalized&& invader.para_timer >=5 && currentLevel == 5){
+ //invader movement in final level//
+ if(invader.riderX+75 > panel.xPos+panel.xSize*15 && changedDirection == false){
+ invader.flightSpdX *= -1;
+ invader.fly_right = false;
+ changedDirection = true;
+ }
+
+
+ if(invader.riderX -75 < panel.xPos+panel.xSize*1 && changedDirection == false){
+ invader.flightSpdX *= -1;
+ invader.fly_right = true;
+ changedDirection = true;
+ }
+
+
+ if(invader.riderX < panel.xPos+panel.xSize*9 &&
+ invader.riderX > panel.xPos+panel.xSize*6 && changedDirection == true)
+ changedDirection = false;
+
+ //Ball Bewegung im letzten level
+ if(invader.ball.xPos-36 > panel.xPos+panel.xSize*15)
+ invader.ball.collisionManager("x_inverted");
+
+ if(invader.ball.xPos+36 < panel.xPos+panel.xSize*1)
+ invader.ball.collisionManager("x_inverted");
+
+
+ }
+
+
+ //Level ende und wechsel zum nächsten Level
+ if(panel.xPos <= -4350 && protector.isLanded){
+ currentLevel++;
+ waiter = 0;
+ state.stateId = 5;
+ panel.init(gc, state, currentLevel);
+ protector.init(gc, state, -100);
+ invader.init(gc, state);
+ ui.sbar_width = 0;
+ invader.isParalized = false;
+ panel.xPos = 350;
+ }
+
+
+
+ //Roboter - Panel kollision
+ for(int i = 1; i< panel.collisionarea.length;i++){
+ if(panel.collisionarea[i].intersects(protector.getCollisionarea())&&!protector.hasFloorContact){
+ protector.ySpd = 0;
+ protector.setFloorContact(true);
+ protector.isLanded = true;
+
+ } else
+ protector.hasFloorContact = false;
+
+ //einsetzen der "Gravitation"
+ if(panel.collisionarea[i].intersects(protector.getCollisionarea())&& !protector.hasFloorContact){
+
+ protector.ySpd *=0;
+
+ }
+ }
+
+ //Roboter Sprung
+ if(gc.getInput().isKeyDown(Input.KEY_UP)&& protector.isLanded)
+ {
+ if(protector.isRunningRight){
+
+ protector.move = 3;
+ }
+ else
+ if(protector.isRunningLeft){
+
+ protector.move = 4;
+ }
+ else
+ protector.move = 0;
+ protector.hasFloorContact = false;
+ protector.ySpd = -400;
+ protector.isLanded = false;
+
+ }
+
+ //Ball fliegt oben aus dem Screen
+ if(invader.ball.yPos < 0&& !invader.ball.ballIsKilled){
+ invader.ball.killBall(gc);
+ protector.ballhit =false;
+
+ }
+ //Kollision Ball - Hacker
+ if(invader.ball.yPos < invader.riderY + 75 &&
+ invader.ball.yPos > invader.riderY &&
+ invader.ball.xPos < invader.riderX + 75 &&
+ invader.ball.xPos > invader.riderX ){
+ invader.ball.killBall(gc);
+ ui.sbar_width += 20;
+ protector.ballhit=false;
+
+ }
+
+ //Disconnected Erzeugung
+ if(ui.sbar_width >= 100 && !invader.isParalized){
+ invader.isParalized = true;
+ invader.paralized();
+
+ }
+
+ //ReConect des Hackers
+ if(invader.para_timer >= 5 && ui.sbar_width >= 100){
+ ui.sbar_width -=100;
+ invader.isParalized = false;
+ }
+
+
+ // Ball Kollidiert mit Systemlebenslinie
+ if( (invader.ball.yPos >= gc.getHeight()-50)){
+
+ invader.ball.killBall(gc);
+ protector.ballhit=false;
+
+
+ if(ui.dbar_width >0)
+ ui.dbar_width -= 20;
+ }
+
+
+
+ //Ball - Roboter Kollision
+ if(invader.ball.yPos >= protector.yPos -50 &&
+ invader.ball.xPos >= protector.xPos -25&&
+ invader.ball.xPos <= protector.xPos + 25&&
+ invader.ball.yPos <= protector.yPos +50&&
+ !protector.ballhit){
+
+ invader.ball.collisionManager("y_inverted");
+ protector.ballhit= true;
+ }
+
+ //roboter rechtsbewegung
+ if(gc.getInput().isKeyDown(Input.KEY_RIGHT)){
+ if(protector.isLanded)protector.move = 1;
+ else
+ protector.move = 3;
+ panel.xSpd=-200;
+ invader.ball.xPos-=3;
+ if(!invader.isParalized)
+ invader.riderX -=3;
+
+
+ }
+ else
+ //roboter Linksbewegung
+ if(gc.getInput().isKeyDown(Input.KEY_LEFT)){
+ if(protector.isLanded)protector.move = 2;
+ else
+ protector.move = 4;
+ panel.xSpd=200;
+ invader.ball.xPos+=3;
+ if(!invader.isParalized)
+ invader.riderX +=3;
+
+ }
+
+ else
+ {//roboter stand bewegung
+ protector.move = 0;
+ panel.xSpd=0;
+ }
+
+ //roboter fliegt unten durch den Screen
+ if(protector.yPos > 800){
+ protector.init(gc, state,-100 );
+ panel.xPos = 350;
+ invader.init(gc, state);
+ invader.ball.killBall(gc);
+ ui.sbar_width = 0;
+ ui.dbar_width -=20 ;
+ invader.isParalized = false;
+ }
+ break;
+ }
+ }
+}
+
+
+
diff --git a/QuellCode in txt/Menu.txt b/QuellCode in txt/Menu.txt
new file mode 100644
index 0000000..dbe1388
--- /dev/null
+++ b/QuellCode in txt/Menu.txt
@@ -0,0 +1,70 @@
+package Main;
+
+import org.newdawn.slick.Animation;
+import org.newdawn.slick.Color;
+import org.newdawn.slick.GameContainer;
+import org.newdawn.slick.Graphics;
+import org.newdawn.slick.Image;
+import org.newdawn.slick.Input;
+import org.newdawn.slick.SlickException;
+import org.newdawn.slick.SpriteSheet;
+
+public class Menu {
+
+ Image menu;
+ State state;
+ String selectedOption;
+ int selectedString;
+ SpriteSheet shocking;
+ Animation selected;
+
+
+ public void init(GameContainer gc, State state) throws SlickException{
+ this.state= state;
+
+ selectedString = 0;
+ menu = new Image ("Main/menu.png");
+ shocking = new SpriteSheet("Main/shock.png", 75, 45);
+ selected = new Animation(shocking,0,0,3,0,true,250,true);//Auswahl im Menu
+ }
+
+ public void render(GameContainer gc, Graphics g)throws SlickException{
+ g.setColor(Color.magenta);
+
+
+
+ if(state.currentState == "menu"){
+ menu.draw(0, 0);
+ g.scale(2, 2);
+
+ switch(selectedString){
+ case 0: selected.draw(100, 70);break;
+ case 1: selected.draw(100, 130);break;
+ case 2: selected.draw(100, 190);break;
+
+ }//Menu auswahl punkte
+ g.drawString("Start Game", 150, 80);
+ g.drawString("Options Game", 150, 140);
+ g.drawString("Exit Game", 150, 200);
+ g.scale(0.5f, 0.5f);
+ }
+ }
+
+ public void update(GameContainer gc, float _delta)throws SlickException{
+
+ switch(state.stateId){
+ case 0: case 1:break;
+ case 4: switch(selectedString){
+ case 0: selectedOption = "Start Game";selectedString = 0;break;
+ case 1: selectedOption = "Options";selectedString = 1;break;
+ case 2: selectedOption = "Exit Game";selectedString = 2;break;
+ }
+ if(gc.getInput().isKeyPressed(Input.KEY_UP)&& selectedString >0)
+ selectedString--;
+ if(gc.getInput().isKeyPressed(Input.KEY_DOWN)&& selectedString <2)
+ selectedString++;
+
+ break;
+ }
+ }
+}
diff --git a/QuellCode in txt/Panel.txt b/QuellCode in txt/Panel.txt
new file mode 100644
index 0000000..c086ff9
--- /dev/null
+++ b/QuellCode in txt/Panel.txt
@@ -0,0 +1,238 @@
+package Main;
+
+import org.newdawn.slick.Color;
+import org.newdawn.slick.GameContainer;
+import org.newdawn.slick.Graphics;
+import org.newdawn.slick.Image;
+import org.newdawn.slick.SlickException;
+import org.newdawn.slick.geom.Rectangle;
+
+public class Panel {
+
+ Image panel;
+ int i ;
+ int xPos,xSize,yPos,xSpd;
+
+ //Level Modelierungen
+ int[] yPos_level1= {0,12,12,11,11,10,10, 9, 9,-1,-1,
+ -1,-1, 9, 9, 9,10,10,11,11,12,
+ 12,-1,-1,11,11,-1,-1,10,10,-1,
+ -1, 9, 9,-1,-1,-1, 9, 9,-1,-1,
+ -1,-1, 9, 9, 9,-1,-1,-1,-1,-1,
+ 11,11,-1,-1,10,10,12,12, 7, 7,
+ 7,-1,-1,-1,-1,-1, 8, 8, 7, 7,
+ -1,-1,-1,-1,-1,-1,11,11,-1,-1,
+ -1,-1,-1,12,12,10,10,-1,-1,-1,
+ -1,-1,11,11,12,12,12,12,12};
+
+ int[] yPos_level2= {0, 9, 9, 9,-1,-1, 8,10, 5,12, 5,
+ 12, 9, 9, 9,-1, 5,12,-1,-1, 5,
+ -1,12,-1,-1,-1,-1,11,11,11,-1,
+ -1,-1,-1,10,10,10,-1,-1,-1,-1,
+ 9, 9, 9,-1,12,12,12,-1, 8, 8,
+ 8,-1,12,12,-1, 7, 7, 7,12,12,
+ 12,12, 6, 6, 6,-1,12,12,-1, 5,
+ 5, 5,-1,-1,-1,-1,-1,-1,-1,12,
+ 12,12,12,12,12,-1,-1,-1,10,10,
+ 10,-1,-1,-1, 9, 9,10,10,10};
+
+ int[] yPos_level3= {0, 7, 7, 7,11,11,11,-1,-1, 8, 8,
+ 8,-1,-1,-1, 5, 5, 5,-1,-1, 8,
+ -1,-1,-1,-1,12,-1, 6,-1,-1, 9,
+ -1, 5, 5, 6, 6, 8, 8, 8, 9, 9,
+ -1,-1,-1, 6,12,-1, 9,-1,-1, 5,
+ 5, 5, 9, 7, 6,12,-1,-1,-1,11,
+ 6,12,12, 9, 5, 5,-1,-1,-1,-1,
+ -1,-1,-1, 9, 9, 9, 9,-1,-1,-1,
+ -1,12,12,-1, 6,12, 5,10,-1,-1,
+ -1, 5, 7, 7, 8, 8, 8, 8, 8};
+
+ int[] yPos_level4= {0,12,12,11,11,10,10,11,11,12,12,
+ 11,12,12,11,11,12,12,10,10,19,
+ 19,19,10,11,11,12,12,12,12,12,
+ 12,11,11,11,10,10,10, 8,11, 8,
+ 11,10,10,10, 9, 9, 8, 4,11, 4,
+ 11, 4,11, 8, 8, 8, 4,11, 4,11,
+ 4,12, 8, 8, 9, 9, 9,10,10,10,
+ 11,11,11,12,12,12,12,12,12,12,
+ 12,12,12,12,12,12,12,12,12,12,
+ 12,12,12,12,12,12,12,12,12};
+
+ int[] yPos_finalLevel= {0,12, 5,-1, 9,-1,-1,12, 5,-1,-1, 9,-1, 5,12};
+
+ State state;
+ Rectangle[] collisionarea;// Kollisionsvierecke für die Roboter-Panel Kollisionen
+ int currentLevel;
+
+ public void init(GameContainer gc, State state,int currentLevel) throws SlickException {
+ // TODO Auto-generated method stub
+ this.state = state;
+ this.currentLevel = currentLevel;
+ panel = new Image ("Main/panel.png");
+ //initialwerte
+ xSize = 50;//breite eines Panels
+ yPos = 40;// höhe eines Panels
+ xPos = 350;//Initial Position des ersten Panels
+ xSpd = 0;
+
+ //initiierung der einzelnen Kollisionsvierecke der jeweiligen Levels
+ switch(currentLevel){
+ case 1:
+ collisionarea = new Rectangle[yPos_level1.length];
+
+ for(int i = 1; i
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Snake/.project b/Snake/.project
new file mode 100644
index 0000000..919eb8f
--- /dev/null
+++ b/Snake/.project
@@ -0,0 +1,17 @@
+
+
+ Snake
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/Snake/bin/de/fhtrier/gde/snake/Snake$Direction.class b/Snake/bin/de/fhtrier/gde/snake/Snake$Direction.class
new file mode 100644
index 0000000..ace9d50
Binary files /dev/null and b/Snake/bin/de/fhtrier/gde/snake/Snake$Direction.class differ
diff --git a/Snake/bin/de/fhtrier/gde/snake/Snake.class b/Snake/bin/de/fhtrier/gde/snake/Snake.class
new file mode 100644
index 0000000..02cf57c
Binary files /dev/null and b/Snake/bin/de/fhtrier/gde/snake/Snake.class differ
diff --git a/Snake/bin/de/fhtrier/gde/snake/SnakeGame.class b/Snake/bin/de/fhtrier/gde/snake/SnakeGame.class
new file mode 100644
index 0000000..55bfb4f
Binary files /dev/null and b/Snake/bin/de/fhtrier/gde/snake/SnakeGame.class differ
diff --git a/Snake/bin/de/fhtrier/gde/snake/SnakeSegment.class b/Snake/bin/de/fhtrier/gde/snake/SnakeSegment.class
new file mode 100644
index 0000000..294fcb0
Binary files /dev/null and b/Snake/bin/de/fhtrier/gde/snake/SnakeSegment.class differ
diff --git a/Snake/bin/de/fhtrier/gde/snake/World.class b/Snake/bin/de/fhtrier/gde/snake/World.class
new file mode 100644
index 0000000..653c353
Binary files /dev/null and b/Snake/bin/de/fhtrier/gde/snake/World.class differ
diff --git a/Snake/build.xml b/Snake/build.xml
new file mode 100644
index 0000000..c8c2610
--- /dev/null
+++ b/Snake/build.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+ Builds, tests, and runs the project Snake.
+
+
+
diff --git a/Snake/ext/lwjgl/AppleJavaExtensions.jar b/Snake/ext/lwjgl/AppleJavaExtensions.jar
new file mode 100644
index 0000000..160d62b
Binary files /dev/null and b/Snake/ext/lwjgl/AppleJavaExtensions.jar differ
diff --git a/Snake/ext/lwjgl/asm-debug-all.jar b/Snake/ext/lwjgl/asm-debug-all.jar
new file mode 100644
index 0000000..d5aa15e
Binary files /dev/null and b/Snake/ext/lwjgl/asm-debug-all.jar differ
diff --git a/Snake/ext/lwjgl/jinput.jar b/Snake/ext/lwjgl/jinput.jar
new file mode 100644
index 0000000..7c2b6b0
Binary files /dev/null and b/Snake/ext/lwjgl/jinput.jar differ
diff --git a/Snake/ext/lwjgl/lwjgl-debug.jar b/Snake/ext/lwjgl/lwjgl-debug.jar
new file mode 100644
index 0000000..8ea8c64
Binary files /dev/null and b/Snake/ext/lwjgl/lwjgl-debug.jar differ
diff --git a/Snake/ext/lwjgl/lwjgl.jar b/Snake/ext/lwjgl/lwjgl.jar
new file mode 100644
index 0000000..a0fb56d
Binary files /dev/null and b/Snake/ext/lwjgl/lwjgl.jar differ
diff --git a/Snake/ext/lwjgl/lwjgl_test.jar b/Snake/ext/lwjgl/lwjgl_test.jar
new file mode 100644
index 0000000..d6b0f09
Binary files /dev/null and b/Snake/ext/lwjgl/lwjgl_test.jar differ
diff --git a/Snake/ext/lwjgl/lwjgl_util.jar b/Snake/ext/lwjgl/lwjgl_util.jar
new file mode 100644
index 0000000..9973b24
Binary files /dev/null and b/Snake/ext/lwjgl/lwjgl_util.jar differ
diff --git a/Snake/ext/lwjgl/lwjgl_util_applet.jar b/Snake/ext/lwjgl/lwjgl_util_applet.jar
new file mode 100644
index 0000000..a8872e2
Binary files /dev/null and b/Snake/ext/lwjgl/lwjgl_util_applet.jar differ
diff --git a/Snake/ext/lwjgl/lzma.jar b/Snake/ext/lwjgl/lzma.jar
new file mode 100644
index 0000000..a2572d3
Binary files /dev/null and b/Snake/ext/lwjgl/lzma.jar differ
diff --git a/Snake/ext/slick/hiero.jar b/Snake/ext/slick/hiero.jar
new file mode 100644
index 0000000..fa05723
Binary files /dev/null and b/Snake/ext/slick/hiero.jar differ
diff --git a/Snake/ext/slick/ibxm.jar b/Snake/ext/slick/ibxm.jar
new file mode 100644
index 0000000..619d26e
Binary files /dev/null and b/Snake/ext/slick/ibxm.jar differ
diff --git a/Snake/ext/slick/jinput.jar b/Snake/ext/slick/jinput.jar
new file mode 100644
index 0000000..e12e523
Binary files /dev/null and b/Snake/ext/slick/jinput.jar differ
diff --git a/Snake/ext/slick/jnlp.jar b/Snake/ext/slick/jnlp.jar
new file mode 100644
index 0000000..8fd98f2
Binary files /dev/null and b/Snake/ext/slick/jnlp.jar differ
diff --git a/Snake/ext/slick/jogg-0.0.7.jar b/Snake/ext/slick/jogg-0.0.7.jar
new file mode 100644
index 0000000..ecb0260
Binary files /dev/null and b/Snake/ext/slick/jogg-0.0.7.jar differ
diff --git a/Snake/ext/slick/jorbis-0.0.15.jar b/Snake/ext/slick/jorbis-0.0.15.jar
new file mode 100644
index 0000000..4cf51f9
Binary files /dev/null and b/Snake/ext/slick/jorbis-0.0.15.jar differ
diff --git a/Snake/ext/slick/lwjgl.jar b/Snake/ext/slick/lwjgl.jar
new file mode 100644
index 0000000..10602a4
Binary files /dev/null and b/Snake/ext/slick/lwjgl.jar differ
diff --git a/Snake/ext/slick/natives-linux.jar b/Snake/ext/slick/natives-linux.jar
new file mode 100644
index 0000000..15d28f0
Binary files /dev/null and b/Snake/ext/slick/natives-linux.jar differ
diff --git a/Snake/ext/slick/natives-mac.jar b/Snake/ext/slick/natives-mac.jar
new file mode 100644
index 0000000..de5e473
Binary files /dev/null and b/Snake/ext/slick/natives-mac.jar differ
diff --git a/Snake/ext/slick/natives-win32.jar b/Snake/ext/slick/natives-win32.jar
new file mode 100644
index 0000000..dc0c9eb
Binary files /dev/null and b/Snake/ext/slick/natives-win32.jar differ
diff --git a/Snake/ext/slick/packulike.jar b/Snake/ext/slick/packulike.jar
new file mode 100644
index 0000000..15a56ea
Binary files /dev/null and b/Snake/ext/slick/packulike.jar differ
diff --git a/Snake/ext/slick/pedigree.jar b/Snake/ext/slick/pedigree.jar
new file mode 100644
index 0000000..c75da2c
Binary files /dev/null and b/Snake/ext/slick/pedigree.jar differ
diff --git a/Snake/ext/slick/scalar.jar b/Snake/ext/slick/scalar.jar
new file mode 100644
index 0000000..82268fc
Binary files /dev/null and b/Snake/ext/slick/scalar.jar differ
diff --git a/Snake/ext/slick/slick-examples.jar b/Snake/ext/slick/slick-examples.jar
new file mode 100644
index 0000000..27fe577
Binary files /dev/null and b/Snake/ext/slick/slick-examples.jar differ
diff --git a/Snake/ext/slick/slick-sources.jar b/Snake/ext/slick/slick-sources.jar
new file mode 100644
index 0000000..0214ed0
Binary files /dev/null and b/Snake/ext/slick/slick-sources.jar differ
diff --git a/Snake/ext/slick/slick-util-src.zip b/Snake/ext/slick/slick-util-src.zip
new file mode 100644
index 0000000..58e6d02
Binary files /dev/null and b/Snake/ext/slick/slick-util-src.zip differ
diff --git a/Snake/ext/slick/slick-util.jar b/Snake/ext/slick/slick-util.jar
new file mode 100644
index 0000000..768941d
Binary files /dev/null and b/Snake/ext/slick/slick-util.jar differ
diff --git a/Snake/ext/slick/slick.jar b/Snake/ext/slick/slick.jar
new file mode 100644
index 0000000..214033d
Binary files /dev/null and b/Snake/ext/slick/slick.jar differ
diff --git a/Snake/ext/slick/tinylinepp.jar b/Snake/ext/slick/tinylinepp.jar
new file mode 100644
index 0000000..7e0075d
Binary files /dev/null and b/Snake/ext/slick/tinylinepp.jar differ
diff --git a/Snake/manifest.mf b/Snake/manifest.mf
new file mode 100644
index 0000000..1574df4
--- /dev/null
+++ b/Snake/manifest.mf
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+X-COMMENT: Main-Class will be added automatically by build
+
diff --git a/Snake/native/linux/libjinput-linux.so b/Snake/native/linux/libjinput-linux.so
new file mode 100644
index 0000000..3cdc439
Binary files /dev/null and b/Snake/native/linux/libjinput-linux.so differ
diff --git a/Snake/native/linux/libjinput-linux64.so b/Snake/native/linux/libjinput-linux64.so
new file mode 100644
index 0000000..de1ee5f
Binary files /dev/null and b/Snake/native/linux/libjinput-linux64.so differ
diff --git a/Snake/native/linux/liblwjgl.so b/Snake/native/linux/liblwjgl.so
new file mode 100644
index 0000000..5a02874
Binary files /dev/null and b/Snake/native/linux/liblwjgl.so differ
diff --git a/Snake/native/linux/liblwjgl64.so b/Snake/native/linux/liblwjgl64.so
new file mode 100644
index 0000000..4572589
Binary files /dev/null and b/Snake/native/linux/liblwjgl64.so differ
diff --git a/Snake/native/linux/libopenal.so b/Snake/native/linux/libopenal.so
new file mode 100644
index 0000000..7742faf
Binary files /dev/null and b/Snake/native/linux/libopenal.so differ
diff --git a/Snake/native/linux/libopenal64.so b/Snake/native/linux/libopenal64.so
new file mode 100644
index 0000000..d1e45e5
Binary files /dev/null and b/Snake/native/linux/libopenal64.so differ
diff --git a/Snake/native/macosx/libjinput-osx.jnilib b/Snake/native/macosx/libjinput-osx.jnilib
new file mode 100644
index 0000000..59a3eab
Binary files /dev/null and b/Snake/native/macosx/libjinput-osx.jnilib differ
diff --git a/Snake/native/macosx/liblwjgl.jnilib b/Snake/native/macosx/liblwjgl.jnilib
new file mode 100644
index 0000000..cbb5b4c
Binary files /dev/null and b/Snake/native/macosx/liblwjgl.jnilib differ
diff --git a/Snake/native/macosx/openal.dylib b/Snake/native/macosx/openal.dylib
new file mode 100644
index 0000000..c9ca66e
Binary files /dev/null and b/Snake/native/macosx/openal.dylib differ
diff --git a/Snake/native/solaris/liblwjgl.so b/Snake/native/solaris/liblwjgl.so
new file mode 100644
index 0000000..57568ab
Binary files /dev/null and b/Snake/native/solaris/liblwjgl.so differ
diff --git a/Snake/native/solaris/liblwjgl64.so b/Snake/native/solaris/liblwjgl64.so
new file mode 100644
index 0000000..96bc8a2
Binary files /dev/null and b/Snake/native/solaris/liblwjgl64.so differ
diff --git a/Snake/native/solaris/libopenal.so b/Snake/native/solaris/libopenal.so
new file mode 100644
index 0000000..17369bd
Binary files /dev/null and b/Snake/native/solaris/libopenal.so differ
diff --git a/Snake/native/solaris/libopenal64.so b/Snake/native/solaris/libopenal64.so
new file mode 100644
index 0000000..1a51964
Binary files /dev/null and b/Snake/native/solaris/libopenal64.so differ
diff --git a/Snake/native/windows/OpenAL32.dll b/Snake/native/windows/OpenAL32.dll
new file mode 100644
index 0000000..6dd2600
Binary files /dev/null and b/Snake/native/windows/OpenAL32.dll differ
diff --git a/Snake/native/windows/OpenAL64.dll b/Snake/native/windows/OpenAL64.dll
new file mode 100644
index 0000000..00c98c0
Binary files /dev/null and b/Snake/native/windows/OpenAL64.dll differ
diff --git a/Snake/native/windows/jinput-dx8.dll b/Snake/native/windows/jinput-dx8.dll
new file mode 100644
index 0000000..6d27ad5
Binary files /dev/null and b/Snake/native/windows/jinput-dx8.dll differ
diff --git a/Snake/native/windows/jinput-dx8_64.dll b/Snake/native/windows/jinput-dx8_64.dll
new file mode 100644
index 0000000..6730589
Binary files /dev/null and b/Snake/native/windows/jinput-dx8_64.dll differ
diff --git a/Snake/native/windows/jinput-raw.dll b/Snake/native/windows/jinput-raw.dll
new file mode 100644
index 0000000..ce1d162
Binary files /dev/null and b/Snake/native/windows/jinput-raw.dll differ
diff --git a/Snake/native/windows/jinput-raw_64.dll b/Snake/native/windows/jinput-raw_64.dll
new file mode 100644
index 0000000..3d2b3ad
Binary files /dev/null and b/Snake/native/windows/jinput-raw_64.dll differ
diff --git a/Snake/native/windows/lwjgl.dll b/Snake/native/windows/lwjgl.dll
new file mode 100644
index 0000000..6819404
Binary files /dev/null and b/Snake/native/windows/lwjgl.dll differ
diff --git a/Snake/native/windows/lwjgl64.dll b/Snake/native/windows/lwjgl64.dll
new file mode 100644
index 0000000..e66ab2a
Binary files /dev/null and b/Snake/native/windows/lwjgl64.dll differ
diff --git a/Snake/nbproject/build-impl.xml b/Snake/nbproject/build-impl.xml
new file mode 100644
index 0000000..afc2595
--- /dev/null
+++ b/Snake/nbproject/build-impl.xml
@@ -0,0 +1,1347 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set src.dir
+ Must set src.res.dir
+ Must set test.src.dir
+ Must set build.dir
+ Must set dist.dir
+ Must set build.classes.dir
+ Must set dist.javadoc.dir
+ Must set build.test.classes.dir
+ Must set build.test.results.dir
+ Must set build.classes.excludes
+ Must set dist.jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No tests executed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set JVM to use for profiling in profiler.info.jvm
+ Must set profiler agent JVM arguments in profiler.info.jvmargs.agent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ To run this application from the command line without Ant, try:
+
+
+
+
+
+
+ java -cp "${run.classpath.with.dist.jar}" ${main.class}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ To run this application from the command line without Ant, try:
+
+ java -jar "${dist.jar.resolved}"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set debug.class
+
+
+
+
+ Must select one file in the IDE or set debug.class
+
+
+
+
+ Must set fix.includes
+
+
+
+
+
+
+
+
+
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set profile.class
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+
+
+
+
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+
+ Must select some files in the IDE or set test.includes
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Some tests failed; see details above.
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set test.includes
+
+
+
+ Some tests failed; see details above.
+
+
+
+ Must select some files in the IDE or set test.class
+ Must select some method in the IDE or set test.method
+
+
+
+ Some tests failed; see details above.
+
+
+
+
+ Must select one file in the IDE or set test.class
+
+
+
+ Must select one file in the IDE or set test.class
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Snake/nbproject/genfiles.properties b/Snake/nbproject/genfiles.properties
new file mode 100644
index 0000000..973f7e5
--- /dev/null
+++ b/Snake/nbproject/genfiles.properties
@@ -0,0 +1,8 @@
+build.xml.data.CRC32=38dbc30b
+build.xml.script.CRC32=b8c51ff4
+build.xml.stylesheet.CRC32=28e38971@1.51.1.46
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=599cf24b
+nbproject/build-impl.xml.script.CRC32=688ffdf9
+nbproject/build-impl.xml.stylesheet.CRC32=5183f3c0@1.51.1.46
diff --git a/Snake/nbproject/private/config.properties b/Snake/nbproject/private/config.properties
new file mode 100644
index 0000000..e69de29
diff --git a/Snake/nbproject/private/private.properties b/Snake/nbproject/private/private.properties
new file mode 100644
index 0000000..28c4ec1
--- /dev/null
+++ b/Snake/nbproject/private/private.properties
@@ -0,0 +1,6 @@
+compile.on.save=false
+do.depend=false
+do.jar=true
+javac.debug=true
+javadoc.preview=true
+user.properties.file=C:\\Users\\Lusito\\AppData\\Roaming\\NetBeans\\7.2\\build.properties
diff --git a/Snake/nbproject/private/private.xml b/Snake/nbproject/private/private.xml
new file mode 100644
index 0000000..db03bb0
--- /dev/null
+++ b/Snake/nbproject/private/private.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/Snake/nbproject/project.properties b/Snake/nbproject/project.properties
new file mode 100644
index 0000000..43e3bb2
--- /dev/null
+++ b/Snake/nbproject/project.properties
@@ -0,0 +1,91 @@
+annotation.processing.enabled=true
+annotation.processing.enabled.in.editor=false
+annotation.processing.processors.list=
+annotation.processing.run.all.processors=true
+annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
+application.title=Snake
+application.vendor=Roughael
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+# Uncomment to specify the preferred debugger connection transport:
+#debug.transport=dt_socket
+debug.classpath=\
+ ${run.classpath}
+debug.test.classpath=\
+ ${run.test.classpath}
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/Snake.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+endorsed.classpath=
+excludes=
+file.reference.lwjgl.jar=ext/lwjgl/lwjgl.jar
+file.reference.slick-sources.jar=ext/slick/slick-sources.jar
+file.reference.slick.jar=ext/slick/slick.jar
+includes=**
+jar.archive.disabled=${jnlp.enabled}
+jar.compress=false
+jar.index=${jnlp.enabled}
+javac.classpath=\
+ ${file.reference.slick-sources.jar}:\
+ ${file.reference.slick.jar}:\
+ ${file.reference.lwjgl.jar}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.processorpath=\
+ ${javac.classpath}
+javac.source=1.7
+javac.target=1.7
+javac.test.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+javac.test.processorpath=\
+ ${javac.test.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+jnlp.codebase.type=no.codebase
+jnlp.descriptor=application
+jnlp.enabled=false
+jnlp.mixed.code=default
+jnlp.offline-allowed=false
+jnlp.signed=false
+jnlp.signing=
+jnlp.signing.alias=
+jnlp.signing.keystore=
+main.class=de.fhtrier.gde.snake.SnakeGame
+manifest.file=manifest.mf
+meta.inf.dir=${src.dir}/META-INF
+mkdist.disabled=false
+platform.active=default_platform
+run.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project
+# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
+# or test-sys-prop.name=value to set system properties for unit tests):
+run.jvmargs=-Djava.library.path="./ext/lwjgl/native/windows" -Djava.security.policy=applet.policy
+run.test.classpath=\
+ ${javac.test.classpath}:\
+ ${build.test.classes.dir}
+source.encoding=UTF-8
+src.dir=src
+src.res.dir=res
+test.src.dir=test
diff --git a/Snake/nbproject/project.xml b/Snake/nbproject/project.xml
new file mode 100644
index 0000000..86b2d15
--- /dev/null
+++ b/Snake/nbproject/project.xml
@@ -0,0 +1,16 @@
+
+
+ org.netbeans.modules.java.j2seproject
+
+
+ Snake
+
+
+
+
+
+
+
+
+
+
diff --git a/Snake/res/fonts/verdana_24.fnt b/Snake/res/fonts/verdana_24.fnt
new file mode 100644
index 0000000..0888392
--- /dev/null
+++ b/Snake/res/fonts/verdana_24.fnt
@@ -0,0 +1,337 @@
+info face="Verdana" size=24 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=0,0,0,0 spacing=1,1 outline=1
+common lineHeight=23 base=19 scaleW=256 scaleH=256 pages=1 packed=0 alphaChnl=2 redChnl=0 greenChnl=0 blueChnl=0
+page id=0 file="verdana_24_0.tga"
+chars count=191
+char id=32 x=249 y=140 width=3 height=3 xoffset=-1 yoffset=18 xadvance=7 page=0 chnl=15
+char id=33 x=218 y=112 width=4 height=16 xoffset=2 yoffset=4 xadvance=7 page=0 chnl=15
+char id=34 x=176 y=145 width=8 height=7 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15
+char id=35 x=0 y=98 width=14 height=16 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15
+char id=36 x=100 y=22 width=11 height=20 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15
+char id=37 x=0 y=81 width=20 height=16 xoffset=0 yoffset=4 xadvance=20 page=0 chnl=15
+char id=38 x=134 y=80 width=15 height=16 xoffset=0 yoffset=4 xadvance=14 page=0 chnl=15
+char id=39 x=185 y=145 width=4 height=7 xoffset=1 yoffset=3 xadvance=5 page=0 chnl=15
+char id=40 x=130 y=0 width=8 height=21 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15
+char id=41 x=139 y=0 width=8 height=21 xoffset=0 yoffset=3 xadvance=9 page=0 chnl=15
+char id=42 x=37 y=146 width=11 height=11 xoffset=0 yoffset=3 xadvance=12 page=0 chnl=15
+char id=43 x=15 y=132 width=14 height=14 xoffset=1 yoffset=6 xadvance=16 page=0 chnl=15
+char id=44 x=154 y=145 width=6 height=8 xoffset=0 yoffset=15 xadvance=7 page=0 chnl=15
+char id=45 x=240 y=141 width=8 height=4 xoffset=0 yoffset=11 xadvance=9 page=0 chnl=15
+char id=46 x=217 y=143 width=4 height=5 xoffset=1 yoffset=15 xadvance=7 page=0 chnl=15
+char id=47 x=160 y=22 width=10 height=20 xoffset=-1 yoffset=3 xadvance=9 page=0 chnl=15
+char id=48 x=163 y=97 width=12 height=16 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15
+char id=49 x=141 y=114 width=10 height=16 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15
+char id=50 x=60 y=115 width=11 height=16 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15
+char id=51 x=72 y=114 width=11 height=16 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15
+char id=52 x=228 y=94 width=12 height=16 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15
+char id=53 x=84 y=114 width=11 height=16 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15
+char id=54 x=137 y=97 width=12 height=16 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15
+char id=55 x=48 y=115 width=11 height=16 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15
+char id=56 x=124 y=97 width=12 height=16 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15
+char id=57 x=111 y=97 width=12 height=16 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15
+char id=58 x=249 y=126 width=4 height=13 xoffset=2 yoffset=7 xadvance=9 page=0 chnl=15
+char id=59 x=211 y=112 width=6 height=16 xoffset=1 yoffset=7 xadvance=9 page=0 chnl=15
+char id=60 x=97 y=131 width=13 height=13 xoffset=1 yoffset=6 xadvance=16 page=0 chnl=15
+char id=61 x=140 y=145 width=13 height=8 xoffset=1 yoffset=9 xadvance=16 page=0 chnl=15
+char id=62 x=83 y=131 width=13 height=13 xoffset=1 yoffset=6 xadvance=16 page=0 chnl=15
+char id=63 x=163 y=114 width=10 height=16 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15
+char id=64 x=77 y=43 width=18 height=18 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15
+char id=65 x=118 y=80 width=15 height=16 xoffset=-1 yoffset=4 xadvance=13 page=0 chnl=15
+char id=66 x=85 y=97 width=12 height=16 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15
+char id=67 x=242 y=76 width=13 height=16 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15
+char id=68 x=197 y=78 width=14 height=16 xoffset=1 yoffset=4 xadvance=15 page=0 chnl=15
+char id=69 x=0 y=115 width=11 height=16 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15
+char id=70 x=24 y=115 width=11 height=16 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15
+char id=71 x=150 y=80 width=15 height=16 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15
+char id=72 x=202 y=95 width=12 height=16 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15
+char id=73 x=184 y=114 width=8 height=16 xoffset=0 yoffset=4 xadvance=8 page=0 chnl=15
+char id=74 x=174 y=114 width=9 height=16 xoffset=-1 yoffset=4 xadvance=9 page=0 chnl=15
+char id=75 x=43 y=98 width=13 height=16 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15
+char id=76 x=36 y=115 width=11 height=16 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15
+char id=77 x=182 y=80 width=14 height=16 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15
+char id=78 x=98 y=97 width=12 height=16 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15
+char id=79 x=166 y=80 width=15 height=16 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15
+char id=80 x=152 y=114 width=10 height=16 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15
+char id=81 x=16 y=22 width=15 height=20 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=15
+char id=82 x=15 y=98 width=13 height=16 xoffset=1 yoffset=4 xadvance=13 page=0 chnl=15
+char id=83 x=71 y=97 width=13 height=16 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15
+char id=84 x=227 y=77 width=14 height=16 xoffset=-1 yoffset=4 xadvance=12 page=0 chnl=15
+char id=85 x=176 y=97 width=12 height=16 xoffset=1 yoffset=4 xadvance=14 page=0 chnl=15
+char id=86 x=240 y=59 width=15 height=16 xoffset=-1 yoffset=4 xadvance=13 page=0 chnl=15
+char id=87 x=62 y=80 width=19 height=16 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15
+char id=88 x=29 y=98 width=13 height=16 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15
+char id=89 x=212 y=78 width=14 height=16 xoffset=-1 yoffset=4 xadvance=12 page=0 chnl=15
+char id=90 x=57 y=98 width=13 height=16 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15
+char id=91 x=148 y=0 width=7 height=21 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15
+char id=92 x=182 y=21 width=10 height=20 xoffset=0 yoffset=3 xadvance=9 page=0 chnl=15
+char id=93 x=156 y=0 width=7 height=21 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=15
+char id=94 x=115 y=145 width=14 height=9 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15
+char id=95 x=15 y=159 width=14 height=3 xoffset=-1 yoffset=20 xadvance=12 page=0 chnl=15
+char id=96 x=198 y=145 width=6 height=5 xoffset=2 yoffset=3 xadvance=12 page=0 chnl=15
+char id=97 x=185 y=131 width=10 height=13 xoffset=0 yoffset=7 xadvance=11 page=0 chnl=15
+char id=98 x=24 y=63 width=11 height=17 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15
+char id=99 x=174 y=131 width=10 height=13 xoffset=0 yoffset=7 xadvance=10 page=0 chnl=15
+char id=100 x=0 y=63 width=11 height=17 xoffset=0 yoffset=3 xadvance=12 page=0 chnl=15
+char id=101 x=138 y=131 width=11 height=13 xoffset=0 yoffset=7 xadvance=11 page=0 chnl=15
+char id=102 x=196 y=60 width=8 height=17 xoffset=0 yoffset=3 xadvance=7 page=0 chnl=15
+char id=103 x=12 y=63 width=11 height=17 xoffset=0 yoffset=7 xadvance=12 page=0 chnl=15
+char id=104 x=185 y=62 width=10 height=17 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15
+char id=105 x=250 y=41 width=4 height=16 xoffset=1 yoffset=4 xadvance=6 page=0 chnl=15
+char id=106 x=211 y=21 width=7 height=20 xoffset=-1 yoffset=4 xadvance=7 page=0 chnl=15
+char id=107 x=238 y=41 width=11 height=17 xoffset=1 yoffset=3 xadvance=11 page=0 chnl=15
+char id=108 x=251 y=21 width=4 height=17 xoffset=1 yoffset=3 xadvance=6 page=0 chnl=15
+char id=109 x=49 y=132 width=16 height=13 xoffset=1 yoffset=7 xadvance=18 page=0 chnl=15
+char id=110 x=196 y=131 width=10 height=13 xoffset=1 yoffset=7 xadvance=12 page=0 chnl=15
+char id=111 x=125 y=131 width=12 height=13 xoffset=0 yoffset=7 xadvance=12 page=0 chnl=15
+char id=112 x=48 y=63 width=11 height=17 xoffset=1 yoffset=7 xadvance=12 page=0 chnl=15
+char id=113 x=36 y=63 width=11 height=17 xoffset=0 yoffset=7 xadvance=12 page=0 chnl=15
+char id=114 x=240 y=127 width=8 height=13 xoffset=1 yoffset=7 xadvance=8 page=0 chnl=15
+char id=115 x=207 y=129 width=10 height=13 xoffset=0 yoffset=7 xadvance=10 page=0 chnl=15
+char id=116 x=202 y=112 width=8 height=16 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=117 x=218 y=129 width=10 height=13 xoffset=1 yoffset=7 xadvance=12 page=0 chnl=15
+char id=118 x=162 y=131 width=11 height=13 xoffset=0 yoffset=7 xadvance=11 page=0 chnl=15
+char id=119 x=66 y=132 width=16 height=13 xoffset=0 yoffset=7 xadvance=16 page=0 chnl=15
+char id=120 x=150 y=131 width=11 height=13 xoffset=0 yoffset=7 xadvance=11 page=0 chnl=15
+char id=121 x=72 y=62 width=11 height=17 xoffset=0 yoffset=7 xadvance=11 page=0 chnl=15
+char id=122 x=229 y=127 width=10 height=13 xoffset=0 yoffset=7 xadvance=10 page=0 chnl=15
+char id=123 x=85 y=0 width=11 height=21 xoffset=0 yoffset=3 xadvance=12 page=0 chnl=15
+char id=124 x=164 y=0 width=4 height=21 xoffset=3 yoffset=3 xadvance=9 page=0 chnl=15
+char id=125 x=97 y=0 width=11 height=21 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15
+char id=126 x=161 y=145 width=14 height=7 xoffset=1 yoffset=9 xadvance=16 page=0 chnl=15
+char id=160 x=30 y=159 width=3 height=3 xoffset=-1 yoffset=18 xadvance=7 page=0 chnl=15
+char id=161 x=223 y=112 width=4 height=16 xoffset=2 yoffset=4 xadvance=7 page=0 chnl=15
+char id=162 x=13 y=43 width=11 height=19 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15
+char id=163 x=215 y=95 width=12 height=16 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15
+char id=164 x=0 y=147 width=12 height=12 xoffset=0 yoffset=7 xadvance=12 page=0 chnl=15
+char id=165 x=241 y=94 width=12 height=16 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15
+char id=166 x=169 y=0 width=4 height=21 xoffset=3 yoffset=3 xadvance=9 page=0 chnl=15
+char id=167 x=112 y=22 width=11 height=20 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15
+char id=168 x=231 y=141 width=8 height=4 xoffset=2 yoffset=4 xadvance=12 page=0 chnl=15
+char id=169 x=96 y=43 width=18 height=18 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15
+char id=170 x=71 y=146 width=9 height=11 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15
+char id=171 x=13 y=147 width=11 height=11 xoffset=1 yoffset=7 xadvance=12 page=0 chnl=15
+char id=172 x=100 y=145 width=14 height=9 xoffset=1 yoffset=11 xadvance=16 page=0 chnl=15
+char id=173 x=222 y=143 width=8 height=4 xoffset=0 yoffset=11 xadvance=9 page=0 chnl=15
+char id=174 x=58 y=43 width=18 height=18 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15
+char id=175 x=0 y=160 width=14 height=3 xoffset=-1 yoffset=1 xadvance=12 page=0 chnl=15
+char id=176 x=130 y=145 width=9 height=9 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15
+char id=177 x=0 y=132 width=14 height=14 xoffset=1 yoffset=4 xadvance=16 page=0 chnl=15
+char id=178 x=49 y=146 width=10 height=11 xoffset=1 yoffset=4 xadvance=10 page=0 chnl=15
+char id=179 x=81 y=146 width=9 height=11 xoffset=1 yoffset=4 xadvance=10 page=0 chnl=15
+char id=180 x=205 y=145 width=6 height=5 xoffset=4 yoffset=3 xadvance=12 page=0 chnl=15
+char id=181 x=119 y=62 width=10 height=17 xoffset=1 yoffset=7 xadvance=12 page=0 chnl=15
+char id=182 x=37 y=43 width=11 height=19 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15
+char id=183 x=212 y=143 width=4 height=5 xoffset=1 yoffset=10 xadvance=7 page=0 chnl=15
+char id=184 x=190 y=145 width=7 height=6 xoffset=2 yoffset=18 xadvance=12 page=0 chnl=15
+char id=185 x=91 y=145 width=8 height=11 xoffset=2 yoffset=4 xadvance=10 page=0 chnl=15
+char id=186 x=60 y=146 width=10 height=11 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15
+char id=187 x=25 y=147 width=11 height=11 xoffset=1 yoffset=7 xadvance=12 page=0 chnl=15
+char id=188 x=82 y=80 width=18 height=16 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15
+char id=189 x=42 y=81 width=19 height=16 xoffset=1 yoffset=4 xadvance=19 page=0 chnl=15
+char id=190 x=219 y=60 width=20 height=16 xoffset=0 yoffset=4 xadvance=19 page=0 chnl=15
+char id=191 x=108 y=114 width=10 height=16 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15
+char id=192 x=238 y=0 width=15 height=20 xoffset=-1 yoffset=0 xadvance=13 page=0 chnl=15
+char id=193 x=0 y=22 width=15 height=20 xoffset=-1 yoffset=0 xadvance=13 page=0 chnl=15
+char id=194 x=16 y=0 width=15 height=21 xoffset=-1 yoffset=-1 xadvance=13 page=0 chnl=15
+char id=195 x=174 y=0 width=15 height=20 xoffset=-1 yoffset=0 xadvance=13 page=0 chnl=15
+char id=196 x=235 y=21 width=15 height=19 xoffset=-1 yoffset=1 xadvance=13 page=0 chnl=15
+char id=197 x=0 y=0 width=15 height=21 xoffset=-1 yoffset=-1 xadvance=13 page=0 chnl=15
+char id=198 x=21 y=81 width=20 height=16 xoffset=-1 yoffset=4 xadvance=19 page=0 chnl=15
+char id=199 x=47 y=22 width=13 height=20 xoffset=0 yoffset=4 xadvance=13 page=0 chnl=15
+char id=200 x=148 y=22 width=11 height=20 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15
+char id=201 x=124 y=22 width=11 height=20 xoffset=1 yoffset=0 xadvance=12 page=0 chnl=15
+char id=202 x=73 y=0 width=11 height=21 xoffset=1 yoffset=-1 xadvance=12 page=0 chnl=15
+char id=203 x=25 y=43 width=11 height=19 xoffset=1 yoffset=1 xadvance=12 page=0 chnl=15
+char id=204 x=202 y=21 width=8 height=20 xoffset=0 yoffset=0 xadvance=8 page=0 chnl=15
+char id=205 x=193 y=21 width=8 height=20 xoffset=0 yoffset=0 xadvance=8 page=0 chnl=15
+char id=206 x=121 y=0 width=8 height=21 xoffset=0 yoffset=-1 xadvance=8 page=0 chnl=15
+char id=207 x=49 y=43 width=8 height=19 xoffset=0 yoffset=1 xadvance=8 page=0 chnl=15
+char id=208 x=101 y=80 width=16 height=16 xoffset=-1 yoffset=4 xadvance=15 page=0 chnl=15
+char id=209 x=87 y=22 width=12 height=20 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15
+char id=210 x=222 y=0 width=15 height=20 xoffset=0 yoffset=0 xadvance=15 page=0 chnl=15
+char id=211 x=206 y=0 width=15 height=20 xoffset=0 yoffset=0 xadvance=15 page=0 chnl=15
+char id=212 x=32 y=0 width=15 height=21 xoffset=0 yoffset=-1 xadvance=15 page=0 chnl=15
+char id=213 x=190 y=0 width=15 height=20 xoffset=0 yoffset=0 xadvance=15 page=0 chnl=15
+char id=214 x=219 y=21 width=15 height=19 xoffset=0 yoffset=1 xadvance=15 page=0 chnl=15
+char id=215 x=111 y=131 width=13 height=13 xoffset=1 yoffset=6 xadvance=16 page=0 chnl=15
+char id=216 x=115 y=43 width=15 height=18 xoffset=0 yoffset=3 xadvance=15 page=0 chnl=15
+char id=217 x=74 y=22 width=12 height=20 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15
+char id=218 x=61 y=22 width=12 height=20 xoffset=1 yoffset=0 xadvance=14 page=0 chnl=15
+char id=219 x=48 y=0 width=12 height=21 xoffset=1 yoffset=-1 xadvance=14 page=0 chnl=15
+char id=220 x=0 y=43 width=12 height=19 xoffset=1 yoffset=1 xadvance=14 page=0 chnl=15
+char id=221 x=32 y=22 width=14 height=20 xoffset=-1 yoffset=0 xadvance=12 page=0 chnl=15
+char id=222 x=96 y=114 width=11 height=16 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15
+char id=223 x=96 y=62 width=11 height=17 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15
+char id=224 x=130 y=62 width=10 height=17 xoffset=0 yoffset=3 xadvance=11 page=0 chnl=15
+char id=225 x=163 y=62 width=10 height=17 xoffset=0 yoffset=3 xadvance=11 page=0 chnl=15
+char id=226 x=156 y=43 width=10 height=18 xoffset=0 yoffset=2 xadvance=11 page=0 chnl=15
+char id=227 x=226 y=41 width=11 height=17 xoffset=0 yoffset=3 xadvance=11 page=0 chnl=15
+char id=228 x=119 y=114 width=10 height=16 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15
+char id=229 x=171 y=22 width=10 height=20 xoffset=0 yoffset=0 xadvance=11 page=0 chnl=15
+char id=230 x=30 y=132 width=18 height=13 xoffset=0 yoffset=7 xadvance=18 page=0 chnl=15
+char id=231 x=108 y=62 width=10 height=17 xoffset=0 yoffset=7 xadvance=10 page=0 chnl=15
+char id=232 x=60 y=62 width=11 height=17 xoffset=0 yoffset=3 xadvance=11 page=0 chnl=15
+char id=233 x=84 y=62 width=11 height=17 xoffset=0 yoffset=3 xadvance=11 page=0 chnl=15
+char id=234 x=144 y=43 width=11 height=18 xoffset=0 yoffset=2 xadvance=11 page=0 chnl=15
+char id=235 x=12 y=115 width=11 height=16 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15
+char id=236 x=212 y=60 width=6 height=17 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=237 x=205 y=60 width=6 height=17 xoffset=1 yoffset=3 xadvance=6 page=0 chnl=15
+char id=238 x=178 y=43 width=8 height=18 xoffset=-1 yoffset=2 xadvance=6 page=0 chnl=15
+char id=239 x=193 y=114 width=8 height=16 xoffset=-1 yoffset=4 xadvance=6 page=0 chnl=15
+char id=240 x=150 y=97 width=12 height=16 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15
+char id=241 x=174 y=62 width=10 height=17 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15
+char id=242 x=187 y=42 width=12 height=17 xoffset=0 yoffset=3 xadvance=12 page=0 chnl=15
+char id=243 x=213 y=42 width=12 height=17 xoffset=0 yoffset=3 xadvance=12 page=0 chnl=15
+char id=244 x=131 y=43 width=12 height=18 xoffset=0 yoffset=2 xadvance=12 page=0 chnl=15
+char id=245 x=200 y=42 width=12 height=17 xoffset=0 yoffset=3 xadvance=12 page=0 chnl=15
+char id=246 x=189 y=97 width=12 height=16 xoffset=0 yoffset=4 xadvance=12 page=0 chnl=15
+char id=247 x=241 y=111 width=14 height=14 xoffset=1 yoffset=6 xadvance=16 page=0 chnl=15
+char id=248 x=228 y=111 width=12 height=15 xoffset=0 yoffset=6 xadvance=12 page=0 chnl=15
+char id=249 x=141 y=62 width=10 height=17 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15
+char id=250 x=152 y=62 width=10 height=17 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15
+char id=251 x=167 y=43 width=10 height=18 xoffset=1 yoffset=2 xadvance=12 page=0 chnl=15
+char id=252 x=130 y=114 width=10 height=16 xoffset=1 yoffset=4 xadvance=12 page=0 chnl=15
+char id=253 x=109 y=0 width=11 height=21 xoffset=0 yoffset=3 xadvance=11 page=0 chnl=15
+char id=254 x=61 y=0 width=11 height=21 xoffset=1 yoffset=3 xadvance=12 page=0 chnl=15
+char id=255 x=136 y=22 width=11 height=20 xoffset=0 yoffset=4 xadvance=11 page=0 chnl=15
+kernings count=141
+kerning first=39 second=65 amount=-1
+kerning first=39 second=198 amount=-1
+kerning first=45 second=74 amount=-1
+kerning first=45 second=84 amount=-1
+kerning first=45 second=88 amount=-1
+kerning first=45 second=89 amount=-1
+kerning first=46 second=44 amount=-1
+kerning first=46 second=45 amount=-2
+kerning first=65 second=84 amount=-1
+kerning first=65 second=86 amount=-1
+kerning first=65 second=89 amount=-1
+kerning first=66 second=84 amount=-1
+kerning first=70 second=44 amount=-3
+kerning first=70 second=46 amount=-3
+kerning first=70 second=58 amount=-1
+kerning first=70 second=63 amount=1
+kerning first=70 second=65 amount=-1
+kerning first=70 second=97 amount=-1
+kerning first=70 second=198 amount=-1
+kerning first=70 second=230 amount=-1
+kerning first=75 second=45 amount=-1
+kerning first=75 second=97 amount=-1
+kerning first=75 second=101 amount=-1
+kerning first=75 second=111 amount=-1
+kerning first=75 second=118 amount=-1
+kerning first=75 second=119 amount=-1
+kerning first=75 second=121 amount=-1
+kerning first=75 second=230 amount=-1
+kerning first=75 second=248 amount=-1
+kerning first=76 second=39 amount=-1
+kerning first=76 second=45 amount=-2
+kerning first=76 second=74 amount=1
+kerning first=76 second=84 amount=-2
+kerning first=76 second=86 amount=-1
+kerning first=76 second=87 amount=-1
+kerning first=76 second=89 amount=-2
+kerning first=76 second=118 amount=-1
+kerning first=76 second=121 amount=-1
+kerning first=80 second=44 amount=-3
+kerning first=80 second=46 amount=-3
+kerning first=80 second=198 amount=-1
+kerning first=82 second=45 amount=-1
+kerning first=82 second=84 amount=-1
+kerning first=82 second=121 amount=-1
+kerning first=84 second=44 amount=-3
+kerning first=84 second=45 amount=-1
+kerning first=84 second=46 amount=-3
+kerning first=84 second=58 amount=-2
+kerning first=84 second=63 amount=1
+kerning first=84 second=65 amount=-1
+kerning first=84 second=84 amount=-1
+kerning first=84 second=97 amount=-2
+kerning first=84 second=99 amount=-2
+kerning first=84 second=101 amount=-2
+kerning first=84 second=103 amount=-2
+kerning first=84 second=111 amount=-2
+kerning first=84 second=114 amount=-2
+kerning first=84 second=115 amount=-2
+kerning first=84 second=117 amount=-2
+kerning first=84 second=118 amount=-2
+kerning first=84 second=119 amount=-2
+kerning first=84 second=121 amount=-2
+kerning first=84 second=122 amount=-2
+kerning first=84 second=198 amount=-1
+kerning first=84 second=230 amount=-2
+kerning first=84 second=248 amount=-2
+kerning first=86 second=44 amount=-3
+kerning first=86 second=46 amount=-3
+kerning first=86 second=58 amount=-1
+kerning first=86 second=65 amount=-1
+kerning first=86 second=97 amount=-1
+kerning first=86 second=101 amount=-1
+kerning first=86 second=111 amount=-1
+kerning first=86 second=117 amount=-1
+kerning first=86 second=121 amount=-1
+kerning first=86 second=198 amount=-1
+kerning first=86 second=230 amount=-1
+kerning first=86 second=248 amount=-1
+kerning first=87 second=44 amount=-3
+kerning first=87 second=46 amount=-2
+kerning first=87 second=58 amount=-1
+kerning first=87 second=97 amount=-1
+kerning first=87 second=101 amount=-1
+kerning first=87 second=111 amount=-1
+kerning first=87 second=114 amount=-1
+kerning first=87 second=117 amount=-1
+kerning first=87 second=121 amount=-1
+kerning first=87 second=198 amount=-1
+kerning first=87 second=230 amount=-1
+kerning first=87 second=248 amount=-1
+kerning first=88 second=45 amount=-1
+kerning first=88 second=101 amount=-1
+kerning first=88 second=111 amount=-1
+kerning first=88 second=121 amount=-1
+kerning first=88 second=248 amount=-1
+kerning first=89 second=44 amount=-3
+kerning first=89 second=45 amount=-1
+kerning first=89 second=46 amount=-3
+kerning first=89 second=58 amount=-2
+kerning first=89 second=65 amount=-1
+kerning first=89 second=97 amount=-1
+kerning first=89 second=100 amount=-1
+kerning first=89 second=101 amount=-1
+kerning first=89 second=103 amount=-1
+kerning first=89 second=109 amount=-1
+kerning first=89 second=110 amount=-1
+kerning first=89 second=111 amount=-1
+kerning first=89 second=112 amount=-1
+kerning first=89 second=113 amount=-1
+kerning first=89 second=114 amount=-1
+kerning first=89 second=115 amount=-1
+kerning first=89 second=117 amount=-1
+kerning first=89 second=118 amount=-1
+kerning first=89 second=198 amount=-1
+kerning first=89 second=230 amount=-1
+kerning first=89 second=248 amount=-1
+kerning first=90 second=45 amount=-1
+kerning first=90 second=101 amount=-1
+kerning first=90 second=111 amount=-1
+kerning first=90 second=121 amount=-1
+kerning first=90 second=248 amount=-1
+kerning first=99 second=84 amount=-1
+kerning first=101 second=84 amount=-1
+kerning first=102 second=34 amount=1
+kerning first=102 second=39 amount=1
+kerning first=102 second=41 amount=1
+kerning first=102 second=44 amount=-1
+kerning first=102 second=46 amount=-1
+kerning first=102 second=63 amount=1
+kerning first=102 second=92 amount=1
+kerning first=102 second=93 amount=1
+kerning first=102 second=125 amount=1
+kerning first=107 second=45 amount=-1
+kerning first=114 second=44 amount=-3
+kerning first=114 second=46 amount=-3
+kerning first=118 second=44 amount=-2
+kerning first=118 second=46 amount=-2
+kerning first=119 second=44 amount=-1
+kerning first=119 second=46 amount=-1
+kerning first=121 second=44 amount=-2
+kerning first=121 second=46 amount=-2
diff --git a/Snake/res/fonts/verdana_24_0.tga b/Snake/res/fonts/verdana_24_0.tga
new file mode 100644
index 0000000..d636db2
Binary files /dev/null and b/Snake/res/fonts/verdana_24_0.tga differ
diff --git a/Snake/res/maps/iron_tileset.png b/Snake/res/maps/iron_tileset.png
new file mode 100644
index 0000000..3d42f7e
Binary files /dev/null and b/Snake/res/maps/iron_tileset.png differ
diff --git a/Snake/res/maps/iron_tileset.tsx b/Snake/res/maps/iron_tileset.tsx
new file mode 100644
index 0000000..2636f6a
--- /dev/null
+++ b/Snake/res/maps/iron_tileset.tsx
@@ -0,0 +1,469 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Snake/res/maps/level1.tmx b/Snake/res/maps/level1.tmx
new file mode 100644
index 0000000..f264511
--- /dev/null
+++ b/Snake/res/maps/level1.tmx
@@ -0,0 +1,9 @@
+
+
diff --git a/Snake/src/de/fhtrier/gde/snake/Snake.java b/Snake/src/de/fhtrier/gde/snake/Snake.java
new file mode 100644
index 0000000..e0df91c
--- /dev/null
+++ b/Snake/src/de/fhtrier/gde/snake/Snake.java
@@ -0,0 +1,48 @@
+package de.fhtrier.gde.snake;
+
+import java.util.LinkedList;
+
+import org.newdawn.slick.GameContainer;
+import org.newdawn.slick.Graphics;
+import org.newdawn.slick.SlickException;
+
+public class Snake
+{
+ private LinkedList segments = new LinkedList<>();
+
+ private static float SNAKE_WIDTH = 5.0f;
+ private static float GROW_SPEED = 20.0f;
+ private static float START_LENGTH = 50.0f;
+ private static float MOVES_SPEED = 50.0f;
+ private float remainingGrowth = START_LENGTH;
+
+ public enum Direction{UP,DOWN,LEFT,RIGHT};
+
+
+ public void init(final GameContainer container) throws SlickException
+ {
+
+ }
+
+ public void update(final GameContainer container, final int delta) throws SlickException
+ {
+
+ }
+
+ public void render(final GameContainer container, final Graphics g) throws SlickException
+ {
+
+ }
+
+ public void keyPressed(final int key, final char c)
+ {
+
+ }
+
+ public void eatApple()
+ {
+
+ }
+
+
+}
diff --git a/Snake/src/de/fhtrier/gde/snake/SnakeGame.java b/Snake/src/de/fhtrier/gde/snake/SnakeGame.java
new file mode 100644
index 0000000..07f9370
--- /dev/null
+++ b/Snake/src/de/fhtrier/gde/snake/SnakeGame.java
@@ -0,0 +1,96 @@
+package de.fhtrier.gde.snake;
+
+import java.io.File;
+
+import org.lwjgl.LWJGLUtil;
+import org.newdawn.slick.AngelCodeFont;
+import org.newdawn.slick.AppGameContainer;
+import org.newdawn.slick.BasicGame;
+import org.newdawn.slick.Color;
+import org.newdawn.slick.Font;
+import org.newdawn.slick.GameContainer;
+import org.newdawn.slick.Graphics;
+import org.newdawn.slick.SlickException;
+
+public class SnakeGame extends BasicGame
+{
+
+ private Font font;
+
+ private World world;
+
+ private Snake snake;
+
+ private SnakeSegment segment;
+
+ public SnakeGame(final String[] args)
+ {
+ super("Snake");
+ }
+
+ @Override
+ public void init(final GameContainer container) throws SlickException
+ {
+ this.world = new World();
+ this.segment = new SnakeSegment();
+ this.snake = new Snake();
+
+ this.font = SnakeGame.createFont("verdana_24");
+ this.world.init(container);
+ this.snake.init(container);
+ }
+
+ @Override
+ public void update(final GameContainer container, final int delta) throws SlickException
+ {
+ this.world.update(container, delta);
+ this.snake.update(container, delta);
+ }
+
+ @Override
+ public void render(final GameContainer container, final Graphics g) throws SlickException
+ {
+ this.world.render(container, g);
+ this.snake.render(container, g);
+
+ g.setColor(Color.white);
+ this.font.drawString(30, -2, "Snake");
+ }
+
+ @Override
+ public void keyPressed(final int key, final char c)
+ {
+ this.world.keyPressed(key, c);
+ this.snake.keyPressed(key, c);
+ }
+
+ public static Font createFont(final String name) throws SlickException
+ {
+ return new AngelCodeFont("res/fonts/" + name + ".fnt", "res/fonts/" + name + "_0.tga");
+ }
+
+ public static void main(final String[] args)
+ {
+ try
+ {
+ // Platform specific dll loading
+ System.setProperty("org.lwjgl.librarypath", new File(new File(System.getProperty("user.dir"), "native"), LWJGLUtil.getPlatformName()).getAbsolutePath());
+ System.setProperty("net.java.games.input.librarypath", System.getProperty("org.lwjgl.librarypath"));
+
+ // Create a new game
+ final SnakeGame instance = new SnakeGame(args);
+ final AppGameContainer app = new AppGameContainer(instance);
+ app.setDisplayMode(640, 480, false);
+ app.setAlwaysRender(true);
+ app.setVSync(true);
+ app.setShowFPS(false);
+
+ app.start();
+ }
+ catch (final SlickException e)
+ {
+ e.printStackTrace();
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/Snake/src/de/fhtrier/gde/snake/SnakeSegment.java b/Snake/src/de/fhtrier/gde/snake/SnakeSegment.java
new file mode 100644
index 0000000..727ba64
--- /dev/null
+++ b/Snake/src/de/fhtrier/gde/snake/SnakeSegment.java
@@ -0,0 +1,29 @@
+package de.fhtrier.gde.snake;
+
+import org.newdawn.slick.geom.Rectangle;
+
+import de.fhtrier.gde.snake.Snake.Direction;
+
+public class SnakeSegment
+{
+ Rectangle rect;
+
+ Snake.Direction dir;
+
+ SnakeSegment()
+ {
+
+ this.dir = Direction.DOWN;
+
+ }
+
+ public void grow()
+ {
+
+ }
+
+ public void shrink()
+ {
+
+ }
+}
diff --git a/Snake/src/de/fhtrier/gde/snake/World.java b/Snake/src/de/fhtrier/gde/snake/World.java
new file mode 100644
index 0000000..23f714e
--- /dev/null
+++ b/Snake/src/de/fhtrier/gde/snake/World.java
@@ -0,0 +1,34 @@
+package de.fhtrier.gde.snake;
+
+import org.newdawn.slick.AppGameContainer;
+import org.newdawn.slick.GameContainer;
+import org.newdawn.slick.Graphics;
+import org.newdawn.slick.SlickException;
+import org.newdawn.slick.tiled.TiledMap;
+
+public class World
+{
+ private TiledMap map;
+
+ public void init(final GameContainer container) throws SlickException
+ {
+ this.map = new TiledMap("res/maps/level1.tmx");
+ ((AppGameContainer) container).setDisplayMode(this.map.getWidth() * this.map.getTileWidth(), this.map.getHeight() * this.map.getTileHeight(), false);
+ }
+
+ public void update(final GameContainer container, final int delta) throws SlickException
+ {
+
+ }
+
+ public void render(final GameContainer container, final Graphics g) throws SlickException
+ {
+ this.map.render(0, 0);
+ }
+
+ public void keyPressed(final int key, final char c)
+ {
+
+ }
+
+}
diff --git a/bin/LoA/AwesomeGuy.class b/bin/LoA/AwesomeGuy.class
new file mode 100644
index 0000000..99d52a1
Binary files /dev/null and b/bin/LoA/AwesomeGuy.class differ
diff --git a/bin/LoA/Block.class b/bin/LoA/Block.class
new file mode 100644
index 0000000..3b4a27a
Binary files /dev/null and b/bin/LoA/Block.class differ
diff --git a/bin/LoA/BlockMap.class b/bin/LoA/BlockMap.class
new file mode 100644
index 0000000..3745a47
Binary files /dev/null and b/bin/LoA/BlockMap.class differ
diff --git a/bin/LoA/Legend_of_Awesome.class b/bin/LoA/Legend_of_Awesome.class
new file mode 100644
index 0000000..3faf5d6
Binary files /dev/null and b/bin/LoA/Legend_of_Awesome.class differ
diff --git a/bin/LoA/Overworld_BigTiles.png b/bin/LoA/Overworld_BigTiles.png
new file mode 100644
index 0000000..33526f3
Binary files /dev/null and b/bin/LoA/Overworld_BigTiles.png differ
diff --git a/bin/LoA/Overworld_Map.tmx b/bin/LoA/Overworld_Map.tmx
new file mode 100644
index 0000000..b5d6e63
--- /dev/null
+++ b/bin/LoA/Overworld_Map.tmx
@@ -0,0 +1,39 @@
+
+
diff --git a/bin/LoA/Overworld_tiles.png b/bin/LoA/Overworld_tiles.png
new file mode 100644
index 0000000..0f37970
Binary files /dev/null and b/bin/LoA/Overworld_tiles.png differ
diff --git a/bin/LoA/Rotes Viereck.jpg b/bin/LoA/Rotes Viereck.jpg
new file mode 100644
index 0000000..9b895ee
Binary files /dev/null and b/bin/LoA/Rotes Viereck.jpg differ
diff --git a/bin/LoA/Scroller.class b/bin/LoA/Scroller.class
new file mode 100644
index 0000000..394279e
Binary files /dev/null and b/bin/LoA/Scroller.class differ
diff --git a/bin/LoA/guy.png b/bin/LoA/guy.png
new file mode 100644
index 0000000..dbee344
Binary files /dev/null and b/bin/LoA/guy.png differ
diff --git a/bin/LoA/testing.png b/bin/LoA/testing.png
new file mode 100644
index 0000000..47fa479
Binary files /dev/null and b/bin/LoA/testing.png differ
diff --git a/bin/LoA/testmap.tmx b/bin/LoA/testmap.tmx
new file mode 100644
index 0000000..984b8ef
--- /dev/null
+++ b/bin/LoA/testmap.tmx
@@ -0,0 +1,25 @@
+
+
diff --git a/bin/Main/AwesomeGuy.class b/bin/Main/AwesomeGuy.class
new file mode 100644
index 0000000..ba90b31
Binary files /dev/null and b/bin/Main/AwesomeGuy.class differ
diff --git a/bin/Main/Ball.class b/bin/Main/Ball.class
new file mode 100644
index 0000000..de2cd70
Binary files /dev/null and b/bin/Main/Ball.class differ
diff --git a/bin/Main/Hack_Alert.png b/bin/Main/Hack_Alert.png
new file mode 100644
index 0000000..5d728ab
Binary files /dev/null and b/bin/Main/Hack_Alert.png differ
diff --git a/bin/Main/Invader.class b/bin/Main/Invader.class
new file mode 100644
index 0000000..a6ac0f0
Binary files /dev/null and b/bin/Main/Invader.class differ
diff --git a/bin/Main/JnP.class b/bin/Main/JnP.class
new file mode 100644
index 0000000..47b3581
Binary files /dev/null and b/bin/Main/JnP.class differ
diff --git a/bin/Main/Level.class b/bin/Main/Level.class
new file mode 100644
index 0000000..a125397
Binary files /dev/null and b/bin/Main/Level.class differ
diff --git a/bin/Main/LoA_MainGame.class b/bin/Main/LoA_MainGame.class
new file mode 100644
index 0000000..7325435
Binary files /dev/null and b/bin/Main/LoA_MainGame.class differ
diff --git a/bin/Main/Map.class b/bin/Main/Map.class
new file mode 100644
index 0000000..3d31e24
Binary files /dev/null and b/bin/Main/Map.class differ
diff --git a/bin/Main/Menu.class b/bin/Main/Menu.class
new file mode 100644
index 0000000..0116e10
Binary files /dev/null and b/bin/Main/Menu.class differ
diff --git a/bin/Main/Panel.class b/bin/Main/Panel.class
new file mode 100644
index 0000000..0a16676
Binary files /dev/null and b/bin/Main/Panel.class differ
diff --git a/bin/Main/Panel.png b/bin/Main/Panel.png
new file mode 100644
index 0000000..6aeb197
Binary files /dev/null and b/bin/Main/Panel.png differ
diff --git a/bin/Main/Player.class b/bin/Main/Player.class
new file mode 100644
index 0000000..9ced49b
Binary files /dev/null and b/bin/Main/Player.class differ
diff --git a/bin/Main/Robot_sheet.png b/bin/Main/Robot_sheet.png
new file mode 100644
index 0000000..df23405
Binary files /dev/null and b/bin/Main/Robot_sheet.png differ
diff --git a/bin/Main/Robot_sheet1.png b/bin/Main/Robot_sheet1.png
new file mode 100644
index 0000000..258c4be
Binary files /dev/null and b/bin/Main/Robot_sheet1.png differ
diff --git a/bin/Main/State.class b/bin/Main/State.class
new file mode 100644
index 0000000..26aef3d
Binary files /dev/null and b/bin/Main/State.class differ
diff --git a/bin/Main/UserInterface.class b/bin/Main/UserInterface.class
new file mode 100644
index 0000000..33dc58e
Binary files /dev/null and b/bin/Main/UserInterface.class differ
diff --git a/bin/Main/Virus_sheet.png b/bin/Main/Virus_sheet.png
new file mode 100644
index 0000000..eba9e0f
Binary files /dev/null and b/bin/Main/Virus_sheet.png differ
diff --git a/bin/Main/arrows_sheet.png b/bin/Main/arrows_sheet.png
new file mode 100644
index 0000000..bcb5f72
Binary files /dev/null and b/bin/Main/arrows_sheet.png differ
diff --git a/bin/Main/cybergrid.png b/bin/Main/cybergrid.png
new file mode 100644
index 0000000..0af39f7
Binary files /dev/null and b/bin/Main/cybergrid.png differ
diff --git a/bin/Main/destruction_bar.png b/bin/Main/destruction_bar.png
new file mode 100644
index 0000000..74dff5b
Binary files /dev/null and b/bin/Main/destruction_bar.png differ
diff --git a/bin/Main/empty_bar.png b/bin/Main/empty_bar.png
new file mode 100644
index 0000000..67358e1
Binary files /dev/null and b/bin/Main/empty_bar.png differ
diff --git a/bin/Main/game_Over1.png b/bin/Main/game_Over1.png
new file mode 100644
index 0000000..6187bfe
Binary files /dev/null and b/bin/Main/game_Over1.png differ
diff --git a/bin/Main/game_Over2.png b/bin/Main/game_Over2.png
new file mode 100644
index 0000000..3a6d994
Binary files /dev/null and b/bin/Main/game_Over2.png differ
diff --git a/bin/Main/game_Over3.png b/bin/Main/game_Over3.png
new file mode 100644
index 0000000..c7cadee
Binary files /dev/null and b/bin/Main/game_Over3.png differ
diff --git a/bin/Main/game_Over4.png b/bin/Main/game_Over4.png
new file mode 100644
index 0000000..c9cd823
Binary files /dev/null and b/bin/Main/game_Over4.png differ
diff --git a/bin/Main/game_Over5.png b/bin/Main/game_Over5.png
new file mode 100644
index 0000000..6e027e1
Binary files /dev/null and b/bin/Main/game_Over5.png differ
diff --git a/bin/Main/game_Over6.png b/bin/Main/game_Over6.png
new file mode 100644
index 0000000..f649b89
Binary files /dev/null and b/bin/Main/game_Over6.png differ
diff --git a/bin/Main/game_Over7.png b/bin/Main/game_Over7.png
new file mode 100644
index 0000000..9ae010e
Binary files /dev/null and b/bin/Main/game_Over7.png differ
diff --git a/bin/Main/game_Over8.png b/bin/Main/game_Over8.png
new file mode 100644
index 0000000..9bad6ca
Binary files /dev/null and b/bin/Main/game_Over8.png differ
diff --git a/bin/Main/key_instructions.png b/bin/Main/key_instructions.png
new file mode 100644
index 0000000..e34dc44
Binary files /dev/null and b/bin/Main/key_instructions.png differ
diff --git a/bin/Main/level_cleared_screen.png b/bin/Main/level_cleared_screen.png
new file mode 100644
index 0000000..721d3d2
Binary files /dev/null and b/bin/Main/level_cleared_screen.png differ
diff --git a/bin/Main/mechrider.png b/bin/Main/mechrider.png
new file mode 100644
index 0000000..06b7ee8
Binary files /dev/null and b/bin/Main/mechrider.png differ
diff --git a/bin/Main/menu.png b/bin/Main/menu.png
new file mode 100644
index 0000000..4c13c33
Binary files /dev/null and b/bin/Main/menu.png differ
diff --git a/bin/Main/mission.png b/bin/Main/mission.png
new file mode 100644
index 0000000..2e51d10
Binary files /dev/null and b/bin/Main/mission.png differ
diff --git a/bin/Main/paused_menu.png b/bin/Main/paused_menu.png
new file mode 100644
index 0000000..1c5dc9e
Binary files /dev/null and b/bin/Main/paused_menu.png differ
diff --git a/bin/Main/resources/BasicLink.png b/bin/Main/resources/BasicLink.png
new file mode 100644
index 0000000..9c148bf
Binary files /dev/null and b/bin/Main/resources/BasicLink.png differ
diff --git a/bin/Main/resources/OverworldMapBig.tmx b/bin/Main/resources/OverworldMapBig.tmx
new file mode 100644
index 0000000..878ef67
--- /dev/null
+++ b/bin/Main/resources/OverworldMapBig.tmx
@@ -0,0 +1,34 @@
+
+
diff --git a/bin/Main/resources/Overworld_BigTiles.png b/bin/Main/resources/Overworld_BigTiles.png
new file mode 100644
index 0000000..f463c5b
Binary files /dev/null and b/bin/Main/resources/Overworld_BigTiles.png differ
diff --git a/bin/Main/resources/Rotes Viereck.jpg b/bin/Main/resources/Rotes Viereck.jpg
new file mode 100644
index 0000000..98eedc5
Binary files /dev/null and b/bin/Main/resources/Rotes Viereck.jpg differ
diff --git a/bin/Main/resources/ZeldaPersons.png b/bin/Main/resources/ZeldaPersons.png
new file mode 100644
index 0000000..e4a8232
Binary files /dev/null and b/bin/Main/resources/ZeldaPersons.png differ
diff --git a/bin/Main/resources/testRoom.tmx b/bin/Main/resources/testRoom.tmx
new file mode 100644
index 0000000..9963134
--- /dev/null
+++ b/bin/Main/resources/testRoom.tmx
@@ -0,0 +1,24 @@
+
+
diff --git a/bin/Main/resources/worldMap.tmx b/bin/Main/resources/worldMap.tmx
new file mode 100644
index 0000000..5798ab7
--- /dev/null
+++ b/bin/Main/resources/worldMap.tmx
@@ -0,0 +1,39 @@
+
+
diff --git a/bin/Main/rider.png b/bin/Main/rider.png
new file mode 100644
index 0000000..b57c440
Binary files /dev/null and b/bin/Main/rider.png differ
diff --git a/bin/Main/robot_sheet_good.png b/bin/Main/robot_sheet_good.png
new file mode 100644
index 0000000..ae06686
Binary files /dev/null and b/bin/Main/robot_sheet_good.png differ
diff --git a/bin/Main/shield_bar.png b/bin/Main/shield_bar.png
new file mode 100644
index 0000000..c3c4904
Binary files /dev/null and b/bin/Main/shield_bar.png differ
diff --git a/bin/Main/shock.png b/bin/Main/shock.png
new file mode 100644
index 0000000..6949fae
Binary files /dev/null and b/bin/Main/shock.png differ
diff --git a/bin/Main/titel.png b/bin/Main/titel.png
new file mode 100644
index 0000000..808034f
Binary files /dev/null and b/bin/Main/titel.png differ
diff --git a/bin/Testspiel.zip b/bin/Testspiel.zip
new file mode 100644
index 0000000..9f0e866
Binary files /dev/null and b/bin/Testspiel.zip differ
diff --git a/bin/Testspiel/Auto.class b/bin/Testspiel/Auto.class
new file mode 100644
index 0000000..26935b4
Binary files /dev/null and b/bin/Testspiel/Auto.class differ
diff --git a/bin/Testspiel/Frosch.class b/bin/Testspiel/Frosch.class
new file mode 100644
index 0000000..b0c2671
Binary files /dev/null and b/bin/Testspiel/Frosch.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/NetConnection.class b/bin/de/fhtrier/gdw/commons/netcode/NetConnection.class
new file mode 100644
index 0000000..3078da7
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/NetConnection.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/NetReception.class b/bin/de/fhtrier/gdw/commons/netcode/NetReception.class
new file mode 100644
index 0000000..44d6b87
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/NetReception.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/datagram/INetDatagram$MessageType.class b/bin/de/fhtrier/gdw/commons/netcode/datagram/INetDatagram$MessageType.class
new file mode 100644
index 0000000..e25879c
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/datagram/INetDatagram$MessageType.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/datagram/INetDatagram$Type.class b/bin/de/fhtrier/gdw/commons/netcode/datagram/INetDatagram$Type.class
new file mode 100644
index 0000000..740243a
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/datagram/INetDatagram$Type.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/datagram/INetDatagram.class b/bin/de/fhtrier/gdw/commons/netcode/datagram/INetDatagram.class
new file mode 100644
index 0000000..bc6ae98
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/datagram/INetDatagram.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/datagram/INetDatagramFactory.class b/bin/de/fhtrier/gdw/commons/netcode/datagram/INetDatagramFactory.class
new file mode 100644
index 0000000..ae993b6
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/datagram/INetDatagramFactory.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/datagram/NetDatagram.class b/bin/de/fhtrier/gdw/commons/netcode/datagram/NetDatagram.class
new file mode 100644
index 0000000..739d0db
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/datagram/NetDatagram.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/datagram/NetEventDatagram.class b/bin/de/fhtrier/gdw/commons/netcode/datagram/NetEventDatagram.class
new file mode 100644
index 0000000..dd52324
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/datagram/NetEventDatagram.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/examples/game/BaseGame$1.class b/bin/de/fhtrier/gdw/commons/netcode/examples/game/BaseGame$1.class
new file mode 100644
index 0000000..b0cc708
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/examples/game/BaseGame$1.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/examples/game/BaseGame.class b/bin/de/fhtrier/gdw/commons/netcode/examples/game/BaseGame.class
new file mode 100644
index 0000000..034da1d
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/examples/game/BaseGame.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/examples/game/Client.class b/bin/de/fhtrier/gdw/commons/netcode/examples/game/Client.class
new file mode 100644
index 0000000..f78b37f
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/examples/game/Client.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/examples/game/ClientGame$Entity.class b/bin/de/fhtrier/gdw/commons/netcode/examples/game/ClientGame$Entity.class
new file mode 100644
index 0000000..d0eac29
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/examples/game/ClientGame$Entity.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/examples/game/ClientGame.class b/bin/de/fhtrier/gdw/commons/netcode/examples/game/ClientGame.class
new file mode 100644
index 0000000..4595cce
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/examples/game/ClientGame.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/examples/game/DatagramFactory.class b/bin/de/fhtrier/gdw/commons/netcode/examples/game/DatagramFactory.class
new file mode 100644
index 0000000..90a186d
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/examples/game/DatagramFactory.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/examples/game/PlayerDatagram.class b/bin/de/fhtrier/gdw/commons/netcode/examples/game/PlayerDatagram.class
new file mode 100644
index 0000000..0e7d27d
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/examples/game/PlayerDatagram.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/examples/game/Server.class b/bin/de/fhtrier/gdw/commons/netcode/examples/game/Server.class
new file mode 100644
index 0000000..08a7b76
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/examples/game/Server.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/examples/game/ServerGame$Entity.class b/bin/de/fhtrier/gdw/commons/netcode/examples/game/ServerGame$Entity.class
new file mode 100644
index 0000000..397aa78
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/examples/game/ServerGame$Entity.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/examples/game/ServerGame.class b/bin/de/fhtrier/gdw/commons/netcode/examples/game/ServerGame.class
new file mode 100644
index 0000000..e5b13fd
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/examples/game/ServerGame.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/examples/pingpong/ChatDatagram.class b/bin/de/fhtrier/gdw/commons/netcode/examples/pingpong/ChatDatagram.class
new file mode 100644
index 0000000..f428763
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/examples/pingpong/ChatDatagram.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/examples/pingpong/ClientTest.class b/bin/de/fhtrier/gdw/commons/netcode/examples/pingpong/ClientTest.class
new file mode 100644
index 0000000..7d51f80
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/examples/pingpong/ClientTest.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/examples/pingpong/DatagramFactory.class b/bin/de/fhtrier/gdw/commons/netcode/examples/pingpong/DatagramFactory.class
new file mode 100644
index 0000000..4076c47
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/examples/pingpong/DatagramFactory.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/examples/pingpong/ServerTest.class b/bin/de/fhtrier/gdw/commons/netcode/examples/pingpong/ServerTest.class
new file mode 100644
index 0000000..3d613f0
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/examples/pingpong/ServerTest.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/examples/readme.txt b/bin/de/fhtrier/gdw/commons/netcode/examples/readme.txt
new file mode 100644
index 0000000..3c1aeb5
--- /dev/null
+++ b/bin/de/fhtrier/gdw/commons/netcode/examples/readme.txt
@@ -0,0 +1,6 @@
+== PingPong ==
+This is a small example to show how a ping pong server can be achieved.
+
+== Game ==
+This is a small demo how delta compressed datagrams will only be send when they change.
+The clients circle will be drawn red when a datagram arrived recently
diff --git a/bin/de/fhtrier/gdw/commons/netcode/message/INetMessageIn.class b/bin/de/fhtrier/gdw/commons/netcode/message/INetMessageIn.class
new file mode 100644
index 0000000..fbc84f6
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/message/INetMessageIn.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/message/INetMessageInternal.class b/bin/de/fhtrier/gdw/commons/netcode/message/INetMessageInternal.class
new file mode 100644
index 0000000..3c64de1
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/message/INetMessageInternal.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/message/INetMessageOut.class b/bin/de/fhtrier/gdw/commons/netcode/message/INetMessageOut.class
new file mode 100644
index 0000000..eaaa39c
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/message/INetMessageOut.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/message/NetMessage.class b/bin/de/fhtrier/gdw/commons/netcode/message/NetMessage.class
new file mode 100644
index 0000000..9e371d7
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/message/NetMessage.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/message/NetMessageAllocator.class b/bin/de/fhtrier/gdw/commons/netcode/message/NetMessageAllocator.class
new file mode 100644
index 0000000..f815fa8
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/message/NetMessageAllocator.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/message/NetMessageCache.class b/bin/de/fhtrier/gdw/commons/netcode/message/NetMessageCache.class
new file mode 100644
index 0000000..a16a05a
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/message/NetMessageCache.class differ
diff --git a/bin/de/fhtrier/gdw/commons/netcode/message/NetMessageDelta.class b/bin/de/fhtrier/gdw/commons/netcode/message/NetMessageDelta.class
new file mode 100644
index 0000000..32a1103
Binary files /dev/null and b/bin/de/fhtrier/gdw/commons/netcode/message/NetMessageDelta.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/SotfGame.class b/bin/de/fhtrier/gdw2/sotf/SotfGame.class
new file mode 100644
index 0000000..24ab743
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/SotfGame.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Animations$Animation.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Animations$Animation.class
new file mode 100644
index 0000000..41c8f23
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Animations$Animation.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Animations.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Animations.class
new file mode 100644
index 0000000..002ac2e
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Animations.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Energy.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Energy.class
new file mode 100644
index 0000000..e2d2943
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Energy.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Image.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Image.class
new file mode 100644
index 0000000..d233915
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Image.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Powerups$Powerup.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Powerups$Powerup.class
new file mode 100644
index 0000000..e97dd96
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Powerups$Powerup.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Powerups.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Powerups.class
new file mode 100644
index 0000000..77c4fe6
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Powerups.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Sound.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Sound.class
new file mode 100644
index 0000000..c45f48a
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Sound.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Usable.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Usable.class
new file mode 100644
index 0000000..e6296a9
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable$Usable.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable.class
new file mode 100644
index 0000000..36975d9
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables$Eatable.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables.class
new file mode 100644
index 0000000..3d8897a
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Eatables.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Effects$Effect.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Effects$Effect.class
new file mode 100644
index 0000000..888089e
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Effects$Effect.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Effects.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Effects.class
new file mode 100644
index 0000000..cf21cbc
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Effects.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$FloatValues$Value.class b/bin/de/fhtrier/gdw2/sotf/config/Config$FloatValues$Value.class
new file mode 100644
index 0000000..cd8ed5d
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$FloatValues$Value.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$FloatValues.class b/bin/de/fhtrier/gdw2/sotf/config/Config$FloatValues.class
new file mode 100644
index 0000000..d346fa0
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$FloatValues.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Fonts$Font.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Fonts$Font.class
new file mode 100644
index 0000000..348e692
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Fonts$Font.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Fonts.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Fonts.class
new file mode 100644
index 0000000..050b089
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Fonts.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Images$Image.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Images$Image.class
new file mode 100644
index 0000000..155e04a
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Images$Image.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Images.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Images.class
new file mode 100644
index 0000000..fc40898
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Images.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Maps$Map.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Maps$Map.class
new file mode 100644
index 0000000..880f2a3
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Maps$Map.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Maps.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Maps.class
new file mode 100644
index 0000000..5d61e10
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Maps.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Musics$Music.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Musics$Music.class
new file mode 100644
index 0000000..67c7a9a
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Musics$Music.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Musics.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Musics.class
new file mode 100644
index 0000000..0fdc84d
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Musics.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Sounds$Sound$Src.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Sounds$Sound$Src.class
new file mode 100644
index 0000000..70b922a
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Sounds$Sound$Src.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Sounds$Sound.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Sounds$Sound.class
new file mode 100644
index 0000000..49d2cc5
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Sounds$Sound.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Sounds.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Sounds.class
new file mode 100644
index 0000000..5747b8e
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Sounds.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$StringValues$Value.class b/bin/de/fhtrier/gdw2/sotf/config/Config$StringValues$Value.class
new file mode 100644
index 0000000..2edae3c
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$StringValues$Value.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$StringValues.class b/bin/de/fhtrier/gdw2/sotf/config/Config$StringValues.class
new file mode 100644
index 0000000..6004ec9
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$StringValues.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Usables$Usable$Action.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Usables$Usable$Action.class
new file mode 100644
index 0000000..6f3b9bf
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Usables$Usable$Action.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Usables$Usable$Image.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Usables$Usable$Image.class
new file mode 100644
index 0000000..fd0103f
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Usables$Usable$Image.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Usables$Usable$Sound.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Usables$Usable$Sound.class
new file mode 100644
index 0000000..718e4b6
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Usables$Usable$Sound.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Usables$Usable.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Usables$Usable.class
new file mode 100644
index 0000000..18cdbf6
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Usables$Usable.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config$Usables.class b/bin/de/fhtrier/gdw2/sotf/config/Config$Usables.class
new file mode 100644
index 0000000..534703c
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config$Usables.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/Config.class b/bin/de/fhtrier/gdw2/sotf/config/Config.class
new file mode 100644
index 0000000..340397d
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/Config.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/config/ObjectFactory.class b/bin/de/fhtrier/gdw2/sotf/config/ObjectFactory.class
new file mode 100644
index 0000000..16f6152
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/config/ObjectFactory.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/events/Anchor$AnchorPos.class b/bin/de/fhtrier/gdw2/sotf/events/Anchor$AnchorPos.class
new file mode 100644
index 0000000..197e730
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/events/Anchor$AnchorPos.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/events/Anchor.class b/bin/de/fhtrier/gdw2/sotf/events/Anchor.class
new file mode 100644
index 0000000..5accebb
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/events/Anchor.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/events/GameEvent.class b/bin/de/fhtrier/gdw2/sotf/events/GameEvent.class
new file mode 100644
index 0000000..01f8cd4
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/events/GameEvent.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/events/GameEventManager$1.class b/bin/de/fhtrier/gdw2/sotf/events/GameEventManager$1.class
new file mode 100644
index 0000000..121683f
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/events/GameEventManager$1.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/events/GameEventManager.class b/bin/de/fhtrier/gdw2/sotf/events/GameEventManager.class
new file mode 100644
index 0000000..7272b27
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/events/GameEventManager.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/events/GameEventSchedule.class b/bin/de/fhtrier/gdw2/sotf/events/GameEventSchedule.class
new file mode 100644
index 0000000..a69be39
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/events/GameEventSchedule.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/Bot$IgnoreEatable.class b/bin/de/fhtrier/gdw2/sotf/game/Bot$IgnoreEatable.class
new file mode 100644
index 0000000..4d912c6
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/Bot$IgnoreEatable.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/Bot.class b/bin/de/fhtrier/gdw2/sotf/game/Bot.class
new file mode 100644
index 0000000..4d15038
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/Bot.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/Candle.class b/bin/de/fhtrier/gdw2/sotf/game/Candle.class
new file mode 100644
index 0000000..5d21c2c
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/Candle.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/Constants$ObjectType.class b/bin/de/fhtrier/gdw2/sotf/game/Constants$ObjectType.class
new file mode 100644
index 0000000..3a965b3
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/Constants$ObjectType.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/Constants.class b/bin/de/fhtrier/gdw2/sotf/game/Constants.class
new file mode 100644
index 0000000..6debd6f
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/Constants.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/Eatable.class b/bin/de/fhtrier/gdw2/sotf/game/Eatable.class
new file mode 100644
index 0000000..8f68b42
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/Eatable.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/Entity.class b/bin/de/fhtrier/gdw2/sotf/game/Entity.class
new file mode 100644
index 0000000..e6c7b49
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/Entity.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/EntityFactory.class b/bin/de/fhtrier/gdw2/sotf/game/EntityFactory.class
new file mode 100644
index 0000000..f6385c8
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/EntityFactory.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/IdGenerator.class b/bin/de/fhtrier/gdw2/sotf/game/IdGenerator.class
new file mode 100644
index 0000000..29c567f
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/IdGenerator.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/Key.class b/bin/de/fhtrier/gdw2/sotf/game/Key.class
new file mode 100644
index 0000000..346c82b
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/Key.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/KeyControl.class b/bin/de/fhtrier/gdw2/sotf/game/KeyControl.class
new file mode 100644
index 0000000..1e9ab3e
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/KeyControl.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/Minimap.class b/bin/de/fhtrier/gdw2/sotf/game/Minimap.class
new file mode 100644
index 0000000..0245ef6
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/Minimap.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/Player.class b/bin/de/fhtrier/gdw2/sotf/game/Player.class
new file mode 100644
index 0000000..41628e0
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/Player.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/PlayerState.class b/bin/de/fhtrier/gdw2/sotf/game/PlayerState.class
new file mode 100644
index 0000000..facdd60
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/PlayerState.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/PlayerStatistic.class b/bin/de/fhtrier/gdw2/sotf/game/PlayerStatistic.class
new file mode 100644
index 0000000..306ce75
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/PlayerStatistic.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/Powerup.class b/bin/de/fhtrier/gdw2/sotf/game/Powerup.class
new file mode 100644
index 0000000..820c848
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/Powerup.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/Team.class b/bin/de/fhtrier/gdw2/sotf/game/Team.class
new file mode 100644
index 0000000..3f26a83
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/Team.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/Useable.class b/bin/de/fhtrier/gdw2/sotf/game/Useable.class
new file mode 100644
index 0000000..3af73f8
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/Useable.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/World$1.class b/bin/de/fhtrier/gdw2/sotf/game/World$1.class
new file mode 100644
index 0000000..1748eb2
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/World$1.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/game/World.class b/bin/de/fhtrier/gdw2/sotf/game/World.class
new file mode 100644
index 0000000..9fc0e7e
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/game/World.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/gfx/AnimationRenderEffect.class b/bin/de/fhtrier/gdw2/sotf/gfx/AnimationRenderEffect.class
new file mode 100644
index 0000000..00d1461
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/gfx/AnimationRenderEffect.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/gfx/ParticleRenderEffect.class b/bin/de/fhtrier/gdw2/sotf/gfx/ParticleRenderEffect.class
new file mode 100644
index 0000000..c86ec64
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/gfx/ParticleRenderEffect.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/gfx/PlayerRenderEffect.class b/bin/de/fhtrier/gdw2/sotf/gfx/PlayerRenderEffect.class
new file mode 100644
index 0000000..51b8067
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/gfx/PlayerRenderEffect.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/handler/CollisionHandler$CollisionResult.class b/bin/de/fhtrier/gdw2/sotf/handler/CollisionHandler$CollisionResult.class
new file mode 100644
index 0000000..6e3be3b
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/handler/CollisionHandler$CollisionResult.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/handler/CollisionHandler$CollisionType.class b/bin/de/fhtrier/gdw2/sotf/handler/CollisionHandler$CollisionType.class
new file mode 100644
index 0000000..2a1adbc
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/handler/CollisionHandler$CollisionType.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/handler/CollisionHandler$State.class b/bin/de/fhtrier/gdw2/sotf/handler/CollisionHandler$State.class
new file mode 100644
index 0000000..2faf6da
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/handler/CollisionHandler$State.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/handler/CollisionHandler.class b/bin/de/fhtrier/gdw2/sotf/handler/CollisionHandler.class
new file mode 100644
index 0000000..f2c15b3
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/handler/CollisionHandler.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/handler/ControlHandler.class b/bin/de/fhtrier/gdw2/sotf/handler/ControlHandler.class
new file mode 100644
index 0000000..00fc4c3
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/handler/ControlHandler.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/handler/TeleportTile.class b/bin/de/fhtrier/gdw2/sotf/handler/TeleportTile.class
new file mode 100644
index 0000000..23bbcbe
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/handler/TeleportTile.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/handler/controllers/AnalogueController.class b/bin/de/fhtrier/gdw2/sotf/handler/controllers/AnalogueController.class
new file mode 100644
index 0000000..de8ebde
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/handler/controllers/AnalogueController.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/handler/controllers/BasicController.class b/bin/de/fhtrier/gdw2/sotf/handler/controllers/BasicController.class
new file mode 100644
index 0000000..6bb542d
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/handler/controllers/BasicController.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/handler/controllers/ClassicKeyboardController.class b/bin/de/fhtrier/gdw2/sotf/handler/controllers/ClassicKeyboardController.class
new file mode 100644
index 0000000..c58c0c2
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/handler/controllers/ClassicKeyboardController.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/handler/controllers/ControlMethod.class b/bin/de/fhtrier/gdw2/sotf/handler/controllers/ControlMethod.class
new file mode 100644
index 0000000..f594e70
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/handler/controllers/ControlMethod.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/handler/controllers/DigitalController.class b/bin/de/fhtrier/gdw2/sotf/handler/controllers/DigitalController.class
new file mode 100644
index 0000000..c444d87
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/handler/controllers/DigitalController.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/handler/controllers/GamePadController.class b/bin/de/fhtrier/gdw2/sotf/handler/controllers/GamePadController.class
new file mode 100644
index 0000000..a37e653
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/handler/controllers/GamePadController.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/handler/controllers/KeyboardController.class b/bin/de/fhtrier/gdw2/sotf/handler/controllers/KeyboardController.class
new file mode 100644
index 0000000..a502171
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/handler/controllers/KeyboardController.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/handler/controllers/MouseController.class b/bin/de/fhtrier/gdw2/sotf/handler/controllers/MouseController.class
new file mode 100644
index 0000000..0942629
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/handler/controllers/MouseController.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/handler/controllers/TurningKeyboardController.class b/bin/de/fhtrier/gdw2/sotf/handler/controllers/TurningKeyboardController.class
new file mode 100644
index 0000000..b3f38cb
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/handler/controllers/TurningKeyboardController.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/hud/HUD.class b/bin/de/fhtrier/gdw2/sotf/hud/HUD.class
new file mode 100644
index 0000000..ffb51c3
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/hud/HUD.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/hud/HudInventory.class b/bin/de/fhtrier/gdw2/sotf/hud/HudInventory.class
new file mode 100644
index 0000000..1b7c089
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/hud/HudInventory.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/hud/HudPizza.class b/bin/de/fhtrier/gdw2/sotf/hud/HudPizza.class
new file mode 100644
index 0000000..827a132
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/hud/HudPizza.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/hud/HudPowerups.class b/bin/de/fhtrier/gdw2/sotf/hud/HudPowerups.class
new file mode 100644
index 0000000..0a6cb7f
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/hud/HudPowerups.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/hud/HudScore.class b/bin/de/fhtrier/gdw2/sotf/hud/HudScore.class
new file mode 100644
index 0000000..69855ab
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/hud/HudScore.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/interfaces/ICandle.class b/bin/de/fhtrier/gdw2/sotf/interfaces/ICandle.class
new file mode 100644
index 0000000..66d9b3f
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/interfaces/ICandle.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/interfaces/ICollision.class b/bin/de/fhtrier/gdw2/sotf/interfaces/ICollision.class
new file mode 100644
index 0000000..438bd6b
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/interfaces/ICollision.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/interfaces/IEatable.class b/bin/de/fhtrier/gdw2/sotf/interfaces/IEatable.class
new file mode 100644
index 0000000..d2d2850
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/interfaces/IEatable.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/interfaces/IEntity.class b/bin/de/fhtrier/gdw2/sotf/interfaces/IEntity.class
new file mode 100644
index 0000000..76e89f3
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/interfaces/IEntity.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/interfaces/IPlayer.class b/bin/de/fhtrier/gdw2/sotf/interfaces/IPlayer.class
new file mode 100644
index 0000000..312ecdd
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/interfaces/IPlayer.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/interfaces/IPowerup$PowerupType.class b/bin/de/fhtrier/gdw2/sotf/interfaces/IPowerup$PowerupType.class
new file mode 100644
index 0000000..0332bde
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/interfaces/IPowerup$PowerupType.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/interfaces/IPowerup.class b/bin/de/fhtrier/gdw2/sotf/interfaces/IPowerup.class
new file mode 100644
index 0000000..4a2aa8f
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/interfaces/IPowerup.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/interfaces/ITeam.class b/bin/de/fhtrier/gdw2/sotf/interfaces/ITeam.class
new file mode 100644
index 0000000..110e08e
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/interfaces/ITeam.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/interfaces/IUseable.class b/bin/de/fhtrier/gdw2/sotf/interfaces/IUseable.class
new file mode 100644
index 0000000..f6a5653
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/interfaces/IUseable.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/interfaces/IWorld.class b/bin/de/fhtrier/gdw2/sotf/interfaces/IWorld.class
new file mode 100644
index 0000000..c495aa7
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/interfaces/IWorld.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/interfaces/base/IRenderable.class b/bin/de/fhtrier/gdw2/sotf/interfaces/base/IRenderable.class
new file mode 100644
index 0000000..c61235f
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/interfaces/base/IRenderable.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/interfaces/base/IUpdateable.class b/bin/de/fhtrier/gdw2/sotf/interfaces/base/IUpdateable.class
new file mode 100644
index 0000000..3e7de34
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/interfaces/base/IUpdateable.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/interfaces/gfx/IPlayerRenderEffect.class b/bin/de/fhtrier/gdw2/sotf/interfaces/gfx/IPlayerRenderEffect.class
new file mode 100644
index 0000000..9e7168a
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/interfaces/gfx/IPlayerRenderEffect.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/interfaces/menu/IActionListener.class b/bin/de/fhtrier/gdw2/sotf/interfaces/menu/IActionListener.class
new file mode 100644
index 0000000..b92c15c
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/interfaces/menu/IActionListener.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/interfaces/menu/IUpdateListener.class b/bin/de/fhtrier/gdw2/sotf/interfaces/menu/IUpdateListener.class
new file mode 100644
index 0000000..30d43be
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/interfaces/menu/IUpdateListener.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/Animated.class b/bin/de/fhtrier/gdw2/sotf/menu/Animated.class
new file mode 100644
index 0000000..f21c874
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/Animated.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/Button$1.class b/bin/de/fhtrier/gdw2/sotf/menu/Button$1.class
new file mode 100644
index 0000000..5b58c52
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/Button$1.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/Button$2.class b/bin/de/fhtrier/gdw2/sotf/menu/Button$2.class
new file mode 100644
index 0000000..8cb77fb
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/Button$2.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/Button$State.class b/bin/de/fhtrier/gdw2/sotf/menu/Button$State.class
new file mode 100644
index 0000000..34b49d5
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/Button$State.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/Button.class b/bin/de/fhtrier/gdw2/sotf/menu/Button.class
new file mode 100644
index 0000000..1df62db
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/Button.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/CreditsAnimation$Style.class b/bin/de/fhtrier/gdw2/sotf/menu/CreditsAnimation$Style.class
new file mode 100644
index 0000000..000d942
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/CreditsAnimation$Style.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/CreditsAnimation.class b/bin/de/fhtrier/gdw2/sotf/menu/CreditsAnimation.class
new file mode 100644
index 0000000..49b0fc9
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/CreditsAnimation.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/Label.class b/bin/de/fhtrier/gdw2/sotf/menu/Label.class
new file mode 100644
index 0000000..d6b7b13
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/Label.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/MenuManager$Type.class b/bin/de/fhtrier/gdw2/sotf/menu/MenuManager$Type.class
new file mode 100644
index 0000000..2e07798
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/MenuManager$Type.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/MenuManager.class b/bin/de/fhtrier/gdw2/sotf/menu/MenuManager.class
new file mode 100644
index 0000000..590de2f
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/MenuManager.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/MenuPage.class b/bin/de/fhtrier/gdw2/sotf/menu/MenuPage.class
new file mode 100644
index 0000000..3561c00
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/MenuPage.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/MenuPageAction.class b/bin/de/fhtrier/gdw2/sotf/menu/MenuPageAction.class
new file mode 100644
index 0000000..06fc0e0
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/MenuPageAction.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/PathMover$Destination.class b/bin/de/fhtrier/gdw2/sotf/menu/PathMover$Destination.class
new file mode 100644
index 0000000..7dda77b
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/PathMover$Destination.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/PathMover.class b/bin/de/fhtrier/gdw2/sotf/menu/PathMover.class
new file mode 100644
index 0000000..84d93a1
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/PathMover.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/Slider.class b/bin/de/fhtrier/gdw2/sotf/menu/Slider.class
new file mode 100644
index 0000000..fd784a6
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/Slider.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/TextField.class b/bin/de/fhtrier/gdw2/sotf/menu/TextField.class
new file mode 100644
index 0000000..f216841
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/TextField.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/ToggleButton.class b/bin/de/fhtrier/gdw2/sotf/menu/ToggleButton.class
new file mode 100644
index 0000000..60112dd
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/ToggleButton.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/Widget$Align.class b/bin/de/fhtrier/gdw2/sotf/menu/Widget$Align.class
new file mode 100644
index 0000000..6118e03
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/Widget$Align.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/Widget.class b/bin/de/fhtrier/gdw2/sotf/menu/Widget.class
new file mode 100644
index 0000000..afa6344
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/Widget.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Animations$Animation.class b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Animations$Animation.class
new file mode 100644
index 0000000..c7adf45
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Animations$Animation.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Animations.class b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Animations.class
new file mode 100644
index 0000000..06da6a7
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Animations.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Paths$Path$Destination.class b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Paths$Path$Destination.class
new file mode 100644
index 0000000..54d681b
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Paths$Path$Destination.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Paths$Path.class b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Paths$Path.class
new file mode 100644
index 0000000..890d9cb
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Paths$Path.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Paths.class b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Paths.class
new file mode 100644
index 0000000..2eedcf4
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Paths.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Styles$Style.class b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Styles$Style.class
new file mode 100644
index 0000000..96482d9
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Styles$Style.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Styles.class b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Styles.class
new file mode 100644
index 0000000..91856fd
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Styles.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Texts$Text.class b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Texts$Text.class
new file mode 100644
index 0000000..0124466
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Texts$Text.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Texts.class b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Texts.class
new file mode 100644
index 0000000..5c80772
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits$Texts.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits.class b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits.class
new file mode 100644
index 0000000..2ec0af6
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/credits/Credits.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/credits/ObjectFactory.class b/bin/de/fhtrier/gdw2/sotf/menu/credits/ObjectFactory.class
new file mode 100644
index 0000000..656f553
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/credits/ObjectFactory.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$1.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$1.class
new file mode 100644
index 0000000..3e8aa8d
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$1.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$2.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$2.class
new file mode 100644
index 0000000..21321bb
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$2.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$3.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$3.class
new file mode 100644
index 0000000..8a84c74
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$3.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$4.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$4.class
new file mode 100644
index 0000000..1535d00
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$4.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$5.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$5.class
new file mode 100644
index 0000000..e64d351
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$5.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$KeyListener.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$KeyListener.class
new file mode 100644
index 0000000..2340d16
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls$KeyListener.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls.class
new file mode 100644
index 0000000..df0d7d4
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageControls.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageCreateServer.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageCreateServer.class
new file mode 100644
index 0000000..53fd0ad
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageCreateServer.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageCredits$1.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageCredits$1.class
new file mode 100644
index 0000000..8156939
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageCredits$1.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageCredits.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageCredits.class
new file mode 100644
index 0000000..17683fd
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageCredits.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageHelp$1.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageHelp$1.class
new file mode 100644
index 0000000..2c73e15
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageHelp$1.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageHelp.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageHelp.class
new file mode 100644
index 0000000..24b8071
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageHelp.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageHelpImageScroller$1.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageHelpImageScroller$1.class
new file mode 100644
index 0000000..e4b1e1b
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageHelpImageScroller$1.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageHelpImageScroller$2.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageHelpImageScroller$2.class
new file mode 100644
index 0000000..aa8a40a
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageHelpImageScroller$2.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageHelpImageScroller.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageHelpImageScroller.class
new file mode 100644
index 0000000..ba24f4c
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageHelpImageScroller.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageJoin.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageJoin.class
new file mode 100644
index 0000000..4d5d9a5
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageJoin.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageLobby$1.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageLobby$1.class
new file mode 100644
index 0000000..ab9de30
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageLobby$1.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageLobby.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageLobby.class
new file mode 100644
index 0000000..1dbd4d1
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageLobby.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageOptions$1.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageOptions$1.class
new file mode 100644
index 0000000..096b91d
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageOptions$1.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageOptions$2.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageOptions$2.class
new file mode 100644
index 0000000..904a877
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageOptions$2.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageOptions$3.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageOptions$3.class
new file mode 100644
index 0000000..839ede5
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageOptions$3.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageOptions$4.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageOptions$4.class
new file mode 100644
index 0000000..ba7815d
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageOptions$4.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageOptions.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageOptions.class
new file mode 100644
index 0000000..2f0a63a
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageOptions.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageRoot$1.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageRoot$1.class
new file mode 100644
index 0000000..2897f88
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageRoot$1.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageRoot$2.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageRoot$2.class
new file mode 100644
index 0000000..30c4269
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageRoot$2.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageRoot$3.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageRoot$3.class
new file mode 100644
index 0000000..fefdb57
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageRoot$3.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageRoot.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageRoot.class
new file mode 100644
index 0000000..f408811
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageRoot.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageStatistic.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageStatistic.class
new file mode 100644
index 0000000..09a4901
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/MenuPageStatistic.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/abstrct/MenuPageConnection$1.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/abstrct/MenuPageConnection$1.class
new file mode 100644
index 0000000..9f9d3bc
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/abstrct/MenuPageConnection$1.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/abstrct/MenuPageConnection$2.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/abstrct/MenuPageConnection$2.class
new file mode 100644
index 0000000..1dab0d2
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/abstrct/MenuPageConnection$2.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/menu/pages/abstrct/MenuPageConnection.class b/bin/de/fhtrier/gdw2/sotf/menu/pages/abstrct/MenuPageConnection.class
new file mode 100644
index 0000000..34b33e2
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/menu/pages/abstrct/MenuPageConnection.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/network/NetGame.class b/bin/de/fhtrier/gdw2/sotf/network/NetGame.class
new file mode 100644
index 0000000..21eb7f9
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/network/NetGame.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/network/NetGameClient.class b/bin/de/fhtrier/gdw2/sotf/network/NetGameClient.class
new file mode 100644
index 0000000..7550e55
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/network/NetGameClient.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/network/NetGameServer.class b/bin/de/fhtrier/gdw2/sotf/network/NetGameServer.class
new file mode 100644
index 0000000..b0f0683
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/network/NetGameServer.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/network/datagrams/ConnectDatagram.class b/bin/de/fhtrier/gdw2/sotf/network/datagrams/ConnectDatagram.class
new file mode 100644
index 0000000..50ecbb6
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/network/datagrams/ConnectDatagram.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/network/datagrams/CreateEntityDatagram.class b/bin/de/fhtrier/gdw2/sotf/network/datagrams/CreateEntityDatagram.class
new file mode 100644
index 0000000..8fae520
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/network/datagrams/CreateEntityDatagram.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/network/datagrams/DatagramFactory.class b/bin/de/fhtrier/gdw2/sotf/network/datagrams/DatagramFactory.class
new file mode 100644
index 0000000..d1d08c8
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/network/datagrams/DatagramFactory.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/network/datagrams/DatagramType.class b/bin/de/fhtrier/gdw2/sotf/network/datagrams/DatagramType.class
new file mode 100644
index 0000000..daa9834
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/network/datagrams/DatagramType.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/network/datagrams/PlayerControlDatagram.class b/bin/de/fhtrier/gdw2/sotf/network/datagrams/PlayerControlDatagram.class
new file mode 100644
index 0000000..21fc664
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/network/datagrams/PlayerControlDatagram.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/network/datagrams/PlayerStateDatagram.class b/bin/de/fhtrier/gdw2/sotf/network/datagrams/PlayerStateDatagram.class
new file mode 100644
index 0000000..012c5ce
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/network/datagrams/PlayerStateDatagram.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/network/datagrams/TeleportDatagram.class b/bin/de/fhtrier/gdw2/sotf/network/datagrams/TeleportDatagram.class
new file mode 100644
index 0000000..bdb3be4
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/network/datagrams/TeleportDatagram.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/network/datagrams/WorldSetupDatagram.class b/bin/de/fhtrier/gdw2/sotf/network/datagrams/WorldSetupDatagram.class
new file mode 100644
index 0000000..4926fea
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/network/datagrams/WorldSetupDatagram.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/network/datagrams/WorldSoundDatagram.class b/bin/de/fhtrier/gdw2/sotf/network/datagrams/WorldSoundDatagram.class
new file mode 100644
index 0000000..cecf88c
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/network/datagrams/WorldSoundDatagram.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/network/datagrams/WorldStateDatagram.class b/bin/de/fhtrier/gdw2/sotf/network/datagrams/WorldStateDatagram.class
new file mode 100644
index 0000000..1982507
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/network/datagrams/WorldStateDatagram.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/settings/GlobalSettings.class b/bin/de/fhtrier/gdw2/sotf/settings/GlobalSettings.class
new file mode 100644
index 0000000..71bcb0c
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/settings/GlobalSettings.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/settings/ObjectFactory.class b/bin/de/fhtrier/gdw2/sotf/settings/ObjectFactory.class
new file mode 100644
index 0000000..bee9cd7
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/settings/ObjectFactory.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/settings/Settings$ControlKeys$Key.class b/bin/de/fhtrier/gdw2/sotf/settings/Settings$ControlKeys$Key.class
new file mode 100644
index 0000000..69c94c2
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/settings/Settings$ControlKeys$Key.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/settings/Settings$ControlKeys.class b/bin/de/fhtrier/gdw2/sotf/settings/Settings$ControlKeys.class
new file mode 100644
index 0000000..f90cabf
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/settings/Settings$ControlKeys.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/settings/Settings$FloatValues$Value.class b/bin/de/fhtrier/gdw2/sotf/settings/Settings$FloatValues$Value.class
new file mode 100644
index 0000000..14891f6
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/settings/Settings$FloatValues$Value.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/settings/Settings$FloatValues.class b/bin/de/fhtrier/gdw2/sotf/settings/Settings$FloatValues.class
new file mode 100644
index 0000000..1b1173e
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/settings/Settings$FloatValues.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/settings/Settings$StringValues$Value.class b/bin/de/fhtrier/gdw2/sotf/settings/Settings$StringValues$Value.class
new file mode 100644
index 0000000..a081962
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/settings/Settings$StringValues$Value.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/settings/Settings$StringValues.class b/bin/de/fhtrier/gdw2/sotf/settings/Settings$StringValues.class
new file mode 100644
index 0000000..a1c6000
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/settings/Settings$StringValues.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/settings/Settings.class b/bin/de/fhtrier/gdw2/sotf/settings/Settings.class
new file mode 100644
index 0000000..986c4ea
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/settings/Settings.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/settings/SettingsLoader.class b/bin/de/fhtrier/gdw2/sotf/settings/SettingsLoader.class
new file mode 100644
index 0000000..145e1ca
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/settings/SettingsLoader.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/states/ClanArena.class b/bin/de/fhtrier/gdw2/sotf/states/ClanArena.class
new file mode 100644
index 0000000..8fc23a8
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/states/ClanArena.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/states/GameplayState.class b/bin/de/fhtrier/gdw2/sotf/states/GameplayState.class
new file mode 100644
index 0000000..58c0202
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/states/GameplayState.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/states/LoadGameState.class b/bin/de/fhtrier/gdw2/sotf/states/LoadGameState.class
new file mode 100644
index 0000000..9934dee
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/states/LoadGameState.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/states/MainMenuState.class b/bin/de/fhtrier/gdw2/sotf/states/MainMenuState.class
new file mode 100644
index 0000000..f05ac36
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/states/MainMenuState.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/states/TeamDeathmatch.class b/bin/de/fhtrier/gdw2/sotf/states/TeamDeathmatch.class
new file mode 100644
index 0000000..bbf4509
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/states/TeamDeathmatch.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/utils/AssetLoader.class b/bin/de/fhtrier/gdw2/sotf/utils/AssetLoader.class
new file mode 100644
index 0000000..5ab67ee
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/utils/AssetLoader.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/utils/MapCalculator$Tile.class b/bin/de/fhtrier/gdw2/sotf/utils/MapCalculator$Tile.class
new file mode 100644
index 0000000..ff39629
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/utils/MapCalculator$Tile.class differ
diff --git a/bin/de/fhtrier/gdw2/sotf/utils/MapCalculator.class b/bin/de/fhtrier/gdw2/sotf/utils/MapCalculator.class
new file mode 100644
index 0000000..58dd238
Binary files /dev/null and b/bin/de/fhtrier/gdw2/sotf/utils/MapCalculator.class differ
diff --git a/bin/first/Ball.class b/bin/first/Ball.class
new file mode 100644
index 0000000..4276fdb
Binary files /dev/null and b/bin/first/Ball.class differ
diff --git a/bin/first/Enemy.class b/bin/first/Enemy.class
new file mode 100644
index 0000000..2138b05
Binary files /dev/null and b/bin/first/Enemy.class differ
diff --git a/bin/first/Player.class b/bin/first/Player.class
new file mode 100644
index 0000000..95351aa
Binary files /dev/null and b/bin/first/Player.class differ
diff --git a/bin/first/Pong.class b/bin/first/Pong.class
new file mode 100644
index 0000000..7a8d8d1
Binary files /dev/null and b/bin/first/Pong.class differ
diff --git a/bin/loa/LoA.class b/bin/loa/LoA.class
new file mode 100644
index 0000000..0078899
Binary files /dev/null and b/bin/loa/LoA.class differ
diff --git a/bin/loa/Map.class b/bin/loa/Map.class
new file mode 100644
index 0000000..1a8f71a
Binary files /dev/null and b/bin/loa/Map.class differ
diff --git a/bin/loa/Overworld_tiles.png b/bin/loa/Overworld_tiles.png
new file mode 100644
index 0000000..0f37970
Binary files /dev/null and b/bin/loa/Overworld_tiles.png differ
diff --git a/bin/loa/Player.class b/bin/loa/Player.class
new file mode 100644
index 0000000..9f6238d
Binary files /dev/null and b/bin/loa/Player.class differ
diff --git a/bin/loa/testmap.tmx b/bin/loa/testmap.tmx
new file mode 100644
index 0000000..91ccbb6
--- /dev/null
+++ b/bin/loa/testmap.tmx
@@ -0,0 +1,21 @@
+
+
diff --git a/bin/spiel/Boss.class b/bin/spiel/Boss.class
new file mode 100644
index 0000000..9f7e098
Binary files /dev/null and b/bin/spiel/Boss.class differ
diff --git a/bin/spiel/NinjaFight.class b/bin/spiel/NinjaFight.class
new file mode 100644
index 0000000..bdda22c
Binary files /dev/null and b/bin/spiel/NinjaFight.class differ
diff --git a/bin/spiel/TestSpiel.class b/bin/spiel/TestSpiel.class
new file mode 100644
index 0000000..748ae01
Binary files /dev/null and b/bin/spiel/TestSpiel.class differ
diff --git a/bin/src/spiel/Auto.class b/bin/src/spiel/Auto.class
new file mode 100644
index 0000000..7d2e40f
Binary files /dev/null and b/bin/src/spiel/Auto.class differ
diff --git a/bin/src/spiel/Boss.class b/bin/src/spiel/Boss.class
new file mode 100644
index 0000000..4105fca
Binary files /dev/null and b/bin/src/spiel/Boss.class differ
diff --git a/bin/src/spiel/Frosch.class b/bin/src/spiel/Frosch.class
new file mode 100644
index 0000000..2fa436d
Binary files /dev/null and b/bin/src/spiel/Frosch.class differ
diff --git a/bin/src/spiel/NinjaFight.class b/bin/src/spiel/NinjaFight.class
new file mode 100644
index 0000000..ffb800c
Binary files /dev/null and b/bin/src/spiel/NinjaFight.class differ
diff --git a/bin/src/spiel/TestSpiel.class b/bin/src/spiel/TestSpiel.class
new file mode 100644
index 0000000..77484dd
Binary files /dev/null and b/bin/src/spiel/TestSpiel.class differ
diff --git a/desktop.ini b/desktop.ini
new file mode 100644
index 0000000..2421d1f
--- /dev/null
+++ b/desktop.ini
@@ -0,0 +1,6 @@
+[.ShellClassInfo]
+IconResource=C:\Users\AlexD\Downloads\themes\Neon_Green_Lamellen_ICONS\Icons\ACDSee_ .ico,0
+[ViewState]
+Mode=
+Vid=
+FolderType=Generic
diff --git a/ext/jogg.jar b/ext/jogg.jar
new file mode 100644
index 0000000..93b84db
Binary files /dev/null and b/ext/jogg.jar differ
diff --git a/ext/jorbis.jar b/ext/jorbis.jar
new file mode 100644
index 0000000..cb4c377
Binary files /dev/null and b/ext/jorbis.jar differ
diff --git a/ext/lwjgl/doc/3rdparty/jinput_license.txt b/ext/lwjgl/doc/3rdparty/jinput_license.txt
new file mode 100644
index 0000000..cee4669
--- /dev/null
+++ b/ext/lwjgl/doc/3rdparty/jinput_license.txt
@@ -0,0 +1,32 @@
+/*****************************************************************************
+ * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * - Redistribution of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * - Redistribution in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materails provided with the distribution.
+ *
+ * Neither the name Sun Microsystems, Inc. or the names of the contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * This software is provided "AS IS," without a warranty of any kind.
+ * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
+ * ANY IMPLIED WARRANT OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
+ * NON-INFRINGEMEN, ARE HEREBY EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND
+ * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS
+ * A RESULT OF USING, MODIFYING OR DESTRIBUTING THIS SOFTWARE OR ITS
+ * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
+ * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
+ * INCIDENTAL OR PUNITIVE DAMAGES. HOWEVER CAUSED AND REGARDLESS OF THE THEORY
+ * OF LIABILITY, ARISING OUT OF THE USE OF OUR INABILITY TO USE THIS SOFTWARE,
+ * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ *
+ * You acknowledge that this software is not designed or intended for us in
+ * the design, construction, operation or maintenance of any nuclear facility
+ *
+ *****************************************************************************/
\ No newline at end of file
diff --git a/ext/lwjgl/doc/3rdparty/jogl_license.txt b/ext/lwjgl/doc/3rdparty/jogl_license.txt
new file mode 100644
index 0000000..db9b933
--- /dev/null
+++ b/ext/lwjgl/doc/3rdparty/jogl_license.txt
@@ -0,0 +1,152 @@
+JOGL is released under the BSD license. The full license terms follow:
+
+ Copyright (c) 2003-2009 Sun Microsystems, Inc. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ - Redistribution of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistribution in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ Neither the name of Sun Microsystems, Inc. or the names of
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+ This software is provided "AS IS," without a warranty of any kind. ALL
+ EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
+ INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
+ PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
+ MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
+ ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
+ DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
+ ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
+ DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
+ DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
+ ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
+ SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+ You acknowledge that this software is not designed or intended for use
+ in the design, construction, operation or maintenance of any nuclear
+ facility.
+
+The JOGL source tree contains code ported from the OpenGL sample
+implementation by Silicon Graphics, Inc. This code is licensed under
+the SGI Free Software License B (Sun is redistributing the modified code
+under a slightly modified, alternative license, which is described two
+paragraphs below after "NOTE:"):
+
+ License Applicability. Except to the extent portions of this file are
+ made subject to an alternative license as permitted in the SGI Free
+ Software License B, Version 1.1 (the "License"), the contents of this
+ file are subject only to the provisions of the License. You may not use
+ this file except in compliance with the License. You may obtain a copy
+ of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
+ Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
+
+ http://oss.sgi.com/projects/FreeB
+
+ Note that, as provided in the License, the Software is distributed on an
+ "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
+ DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
+ CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
+ PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+
+ NOTE: The Original Code (as defined below) has been licensed to Sun
+ Microsystems, Inc. ("Sun") under the SGI Free Software License B
+ (Version 1.1), shown above ("SGI License"). Pursuant to Section
+ 3.2(3) of the SGI License, Sun is distributing the Covered Code to
+ you under an alternative license ("Alternative License"). This
+ Alternative License includes all of the provisions of the SGI License
+ except that Section 2.2 and 11 are omitted. Any differences between
+ the Alternative License and the SGI License are offered solely by Sun
+ and not by SGI.
+
+ Original Code. The Original Code is: OpenGL Sample Implementation,
+ Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
+ Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
+ Copyright in any portions created by third parties is as indicated
+ elsewhere herein. All Rights Reserved.
+
+ Additional Notice Provisions: The application programming interfaces
+ established by SGI in conjunction with the Original Code are The
+ OpenGL(R) Graphics System: A Specification (Version 1.2.1), released
+ April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version
+ 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X
+ Window System(R) (Version 1.3), released October 19, 1998. This software
+ was created using the OpenGL(R) version 1.2.1 Sample Implementation
+ published by SGI, but has not been independently verified as being
+ compliant with the OpenGL(R) version 1.2.1 Specification.
+
+
+The JOGL source tree contains code from the LWJGL project which is
+similarly covered by the BSD license:
+
+ Copyright (c) 2002-2004 LWJGL Project
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the name of 'LWJGL' nor the names of
+ its contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The JOGL source tree also contains a Java port of Brian Paul's Tile
+Rendering library, used with permission of the author under the BSD
+license instead of the original LGPL:
+
+ Copyright (c) 1997-2005 Brian Paul. All Rights Reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+
+ - Redistribution of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistribution in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ Neither the name of Brian Paul or the names of contributors may be
+ used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+ This software is provided "AS IS," without a warranty of any
+ kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
+ WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
+ EXCLUDED. THE COPYRIGHT HOLDERS AND CONTRIBUTORS SHALL NOT BE
+ LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING,
+ MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO
+ EVENT WILL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY
+ LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL,
+ CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND
+ REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR
+ INABILITY TO USE THIS SOFTWARE, EVEN IF THE COPYRIGHT HOLDERS OR
+ CONTRIBUTORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
diff --git a/ext/lwjgl/doc/3rdparty/lzma_license.txt b/ext/lwjgl/doc/3rdparty/lzma_license.txt
new file mode 100644
index 0000000..d825219
--- /dev/null
+++ b/ext/lwjgl/doc/3rdparty/lzma_license.txt
@@ -0,0 +1,15 @@
+LZMA# SDK is licensed under two licenses:
+
+1) GNU Lesser General Public License (GNU LGPL)
+2) Common Public License (CPL)
+
+It means that you can select one of these two licenses and
+follow rules of that license.
+
+SPECIAL EXCEPTION
+Igor Pavlov, as the author of this code, expressly permits you
+to statically or dynamically link your code (or bind by name)
+to the files from LZMA# SDK without subjecting your linked
+code to the terms of the CPL or GNU LGPL.
+Any modifications or additions to files from LZMA# SDK, however,
+are subject to the GNU LGPL or CPL terms.
\ No newline at end of file
diff --git a/ext/lwjgl/doc/3rdparty/openal_license.txt b/ext/lwjgl/doc/3rdparty/openal_license.txt
new file mode 100644
index 0000000..339560d
--- /dev/null
+++ b/ext/lwjgl/doc/3rdparty/openal_license.txt
@@ -0,0 +1,437 @@
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+ Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+ The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+ Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+ However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+ Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License"). Each licensee is
+addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ c) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ d) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
diff --git a/ext/lwjgl/doc/CREDITS b/ext/lwjgl/doc/CREDITS
new file mode 100644
index 0000000..fa24eb0
--- /dev/null
+++ b/ext/lwjgl/doc/CREDITS
@@ -0,0 +1,38 @@
+The following people have helped to make this project what it is today:
+ - Caspian Rychlik-Prince
+ - Brian Matzon
+ - Elias Naur
+ - Ioannis Tsakpinis
+ - Niels Jürgensen
+ - Tristan Campbell
+ - Gregory Pierce
+ - Luke Holden
+ - Mark Bernard
+ - Erik Duijs
+ - Jos Hirth
+ - Kevin Glass
+ - Atsuya Takagi
+ - kappaOne
+ - Simon Felix
+ - Ryan McNally
+ - Ciardhubh
+ - Jens von Pilgrim
+ - Ruben Garat
+ - Pelle Johnsen
+ - Jae Kwon
+
+additional credits goes to:
+ - Joseph I. Valenzuela [OpenAL stuff]
+ - Lev Povalahev [OpenGL Extensions]
+ - Endolf [Nightly builds and JInput]
+
+The LWJGL project includes files from or depends on the following projects:
+ - OpenGL, SGI - http://opengl.org/
+ - OpenAL, Creative Labs - http://openal.org/
+ - jinput, Sun - https://jinput.dev.java.net/
+ - lzma, p7zip - http://p7zip.sourceforge.net/
+ - JOGL, Sun - http://kenai.com/projects/jogl/pages/Home
+
+Please see the /doc/3rdparty/ directory for licenses.
+
+All trademarks and registered trademarks are the property of their respective owners.
diff --git a/ext/lwjgl/doc/LICENSE b/ext/lwjgl/doc/LICENSE
new file mode 100644
index 0000000..d277220
--- /dev/null
+++ b/ext/lwjgl/doc/LICENSE
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2002-2008 Lightweight Java Game Library Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * * Neither the name of 'Light Weight Java Game Library' nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
\ No newline at end of file
diff --git a/ext/lwjgl/doc/README b/ext/lwjgl/doc/README
new file mode 100644
index 0000000..977ae02
--- /dev/null
+++ b/ext/lwjgl/doc/README
@@ -0,0 +1,50 @@
+This is the official readme file for lwjgl.
+
+Unless otherwise stated, all files distributed or in SVN are covered by
+the license as stated in the LICENSE file. If you have not received this
+file, please download it from the cvs server.
+
+To run some of the included tests:
+ Extract the archive, and cd into directory
+ (please substitute ; and \ according to platform)
+
+ java -cp .;res;jar\lwjgl.jar;jar\lwjgl_test.jar;jar\lwjgl_util.jar;jar\jinput.jar; -Djava.library.path=native\ TEST
+ (this specifies that the jvm should locate the lwjgl native libs in 'native' directory)
+
+ where TEST is some of the following:
+
+ org.lwjgl.test.WindowCreationTest
+ org.lwjgl.test.SysTest
+ org.lwjgl.test.DisplayTest
+
+ org.lwjgl.test.input.MouseCreationTest
+ org.lwjgl.test.input.MouseTest
+ org.lwjgl.test.input.HWCursorTest
+ org.lwjgl.test.input.KeyboardTest
+ org.lwjgl.test.input.TestControllers
+
+ org.lwjgl.test.openal.ALCTest
+ org.lwjgl.test.openal.OpenALCreationTest
+ org.lwjgl.test.openal.MovingSoundTest
+ org.lwjgl.test.openal.PlayTest
+ org.lwjgl.test.openal.PlayTestMemory
+ org.lwjgl.test.openal.SourceLimitTest
+ org.lwjgl.test.openal.PositionTest
+ org.lwjgl.test.openal.StressTest
+ org.lwjgl.test.openal.SourceLimitTest
+
+ org.lwjgl.test.opengl.FullScreenWindowedTest
+ org.lwjgl.test.opengl.PbufferTest
+ org.lwjgl.test.opengl.VBOIndexTest
+ org.lwjgl.test.opengl.VBOTest
+
+ org.lwjgl.test.opengl.pbuffers.PbufferTest
+
+ org.lwjgl.test.opengl.shaders.ShadersTest
+
+You may also run the Space invaders demo by executing:
+ java -cp .;res;jar\lwjgl.jar;jar\lwjgl_test.jar;jar\lwjgl_util.jar; -Djava.library.path=native\ org.lwjgl.examples.spaceinvaders.Game
+
+Project Webpage: www.lwjgl.org
+Project Forum: forum.lwjgl.org
+Project SVN: https://java-game-lib.svn.sourceforge.net/svnroot/java-game-lib
diff --git a/ext/lwjgl/doc/lwjgl_hidden_switches.text b/ext/lwjgl/doc/lwjgl_hidden_switches.text
new file mode 100644
index 0000000..6efed5e
--- /dev/null
+++ b/ext/lwjgl/doc/lwjgl_hidden_switches.text
@@ -0,0 +1,25 @@
+LWJGL "Hidden" switches:
+
+org.lwjgl.opengl.Display.noinput
+Do not initialize any controls when creating the display
+
+org.lwjgl.opengl.Display.nomouse
+Do not create the mouse when creating the display
+
+org.lwjgl.opengl.Display.nokeyboard
+Do not create the keyboard when creating the display
+
+org.lwjgl.util.Debug
+Whether to output debug info
+
+org.lwjgl.util.NoChecks
+Whether to disable runtime function/buffer checks and state tracking.
+
+org.lwjgl.opengl.Display.allowSoftwareOpenGL
+Whether to allow creation of a software only opengl context
+
+org.lwjgl.opengl.Window.undecorated
+Whether to create an undecorated window (no title bar)
+
+org.lwjgl.input.Mouse.allowNegativeMouseCoords
+Usually mouse is clamped to 0,0 - setting this to true will cause you to get negative values if dragging outside and below or left of window
\ No newline at end of file
diff --git a/ext/lwjgl/jar/AppleJavaExtensions.jar b/ext/lwjgl/jar/AppleJavaExtensions.jar
new file mode 100644
index 0000000..160d62b
Binary files /dev/null and b/ext/lwjgl/jar/AppleJavaExtensions.jar differ
diff --git a/ext/lwjgl/jar/asm-debug-all.jar b/ext/lwjgl/jar/asm-debug-all.jar
new file mode 100644
index 0000000..d5aa15e
Binary files /dev/null and b/ext/lwjgl/jar/asm-debug-all.jar differ
diff --git a/ext/lwjgl/jar/jinput.jar b/ext/lwjgl/jar/jinput.jar
new file mode 100644
index 0000000..7c2b6b0
Binary files /dev/null and b/ext/lwjgl/jar/jinput.jar differ
diff --git a/ext/lwjgl/jar/lwjgl-debug.jar b/ext/lwjgl/jar/lwjgl-debug.jar
new file mode 100644
index 0000000..8ea8c64
Binary files /dev/null and b/ext/lwjgl/jar/lwjgl-debug.jar differ
diff --git a/ext/lwjgl/jar/lwjgl.jar b/ext/lwjgl/jar/lwjgl.jar
new file mode 100644
index 0000000..a0fb56d
Binary files /dev/null and b/ext/lwjgl/jar/lwjgl.jar differ
diff --git a/ext/lwjgl/jar/lwjgl_test.jar b/ext/lwjgl/jar/lwjgl_test.jar
new file mode 100644
index 0000000..d6b0f09
Binary files /dev/null and b/ext/lwjgl/jar/lwjgl_test.jar differ
diff --git a/ext/lwjgl/jar/lwjgl_util.jar b/ext/lwjgl/jar/lwjgl_util.jar
new file mode 100644
index 0000000..9973b24
Binary files /dev/null and b/ext/lwjgl/jar/lwjgl_util.jar differ
diff --git a/ext/lwjgl/jar/lwjgl_util_applet.jar b/ext/lwjgl/jar/lwjgl_util_applet.jar
new file mode 100644
index 0000000..a8872e2
Binary files /dev/null and b/ext/lwjgl/jar/lwjgl_util_applet.jar differ
diff --git a/ext/lwjgl/jar/lzma.jar b/ext/lwjgl/jar/lzma.jar
new file mode 100644
index 0000000..a2572d3
Binary files /dev/null and b/ext/lwjgl/jar/lzma.jar differ
diff --git a/ext/lwjgl/native/linux/libjinput-linux.so b/ext/lwjgl/native/linux/libjinput-linux.so
new file mode 100644
index 0000000..3cdc439
Binary files /dev/null and b/ext/lwjgl/native/linux/libjinput-linux.so differ
diff --git a/ext/lwjgl/native/linux/libjinput-linux64.so b/ext/lwjgl/native/linux/libjinput-linux64.so
new file mode 100644
index 0000000..de1ee5f
Binary files /dev/null and b/ext/lwjgl/native/linux/libjinput-linux64.so differ
diff --git a/ext/lwjgl/native/linux/liblwjgl.so b/ext/lwjgl/native/linux/liblwjgl.so
new file mode 100644
index 0000000..5a02874
Binary files /dev/null and b/ext/lwjgl/native/linux/liblwjgl.so differ
diff --git a/ext/lwjgl/native/linux/liblwjgl64.so b/ext/lwjgl/native/linux/liblwjgl64.so
new file mode 100644
index 0000000..4572589
Binary files /dev/null and b/ext/lwjgl/native/linux/liblwjgl64.so differ
diff --git a/ext/lwjgl/native/linux/libopenal.so b/ext/lwjgl/native/linux/libopenal.so
new file mode 100644
index 0000000..7742faf
Binary files /dev/null and b/ext/lwjgl/native/linux/libopenal.so differ
diff --git a/ext/lwjgl/native/linux/libopenal64.so b/ext/lwjgl/native/linux/libopenal64.so
new file mode 100644
index 0000000..d1e45e5
Binary files /dev/null and b/ext/lwjgl/native/linux/libopenal64.so differ
diff --git a/ext/lwjgl/native/macosx/libjinput-osx.jnilib b/ext/lwjgl/native/macosx/libjinput-osx.jnilib
new file mode 100644
index 0000000..59a3eab
Binary files /dev/null and b/ext/lwjgl/native/macosx/libjinput-osx.jnilib differ
diff --git a/ext/lwjgl/native/macosx/liblwjgl.jnilib b/ext/lwjgl/native/macosx/liblwjgl.jnilib
new file mode 100644
index 0000000..cbb5b4c
Binary files /dev/null and b/ext/lwjgl/native/macosx/liblwjgl.jnilib differ
diff --git a/ext/lwjgl/native/macosx/openal.dylib b/ext/lwjgl/native/macosx/openal.dylib
new file mode 100644
index 0000000..c9ca66e
Binary files /dev/null and b/ext/lwjgl/native/macosx/openal.dylib differ
diff --git a/ext/lwjgl/native/solaris/liblwjgl.so b/ext/lwjgl/native/solaris/liblwjgl.so
new file mode 100644
index 0000000..57568ab
Binary files /dev/null and b/ext/lwjgl/native/solaris/liblwjgl.so differ
diff --git a/ext/lwjgl/native/solaris/liblwjgl64.so b/ext/lwjgl/native/solaris/liblwjgl64.so
new file mode 100644
index 0000000..96bc8a2
Binary files /dev/null and b/ext/lwjgl/native/solaris/liblwjgl64.so differ
diff --git a/ext/lwjgl/native/solaris/libopenal.so b/ext/lwjgl/native/solaris/libopenal.so
new file mode 100644
index 0000000..17369bd
Binary files /dev/null and b/ext/lwjgl/native/solaris/libopenal.so differ
diff --git a/ext/lwjgl/native/solaris/libopenal64.so b/ext/lwjgl/native/solaris/libopenal64.so
new file mode 100644
index 0000000..1a51964
Binary files /dev/null and b/ext/lwjgl/native/solaris/libopenal64.so differ
diff --git a/ext/lwjgl/native/windows/OpenAL32.dll b/ext/lwjgl/native/windows/OpenAL32.dll
new file mode 100644
index 0000000..6dd2600
Binary files /dev/null and b/ext/lwjgl/native/windows/OpenAL32.dll differ
diff --git a/ext/lwjgl/native/windows/OpenAL64.dll b/ext/lwjgl/native/windows/OpenAL64.dll
new file mode 100644
index 0000000..00c98c0
Binary files /dev/null and b/ext/lwjgl/native/windows/OpenAL64.dll differ
diff --git a/ext/lwjgl/native/windows/jinput-dx8.dll b/ext/lwjgl/native/windows/jinput-dx8.dll
new file mode 100644
index 0000000..6d27ad5
Binary files /dev/null and b/ext/lwjgl/native/windows/jinput-dx8.dll differ
diff --git a/ext/lwjgl/native/windows/jinput-dx8_64.dll b/ext/lwjgl/native/windows/jinput-dx8_64.dll
new file mode 100644
index 0000000..6730589
Binary files /dev/null and b/ext/lwjgl/native/windows/jinput-dx8_64.dll differ
diff --git a/ext/lwjgl/native/windows/jinput-raw.dll b/ext/lwjgl/native/windows/jinput-raw.dll
new file mode 100644
index 0000000..ce1d162
Binary files /dev/null and b/ext/lwjgl/native/windows/jinput-raw.dll differ
diff --git a/ext/lwjgl/native/windows/jinput-raw_64.dll b/ext/lwjgl/native/windows/jinput-raw_64.dll
new file mode 100644
index 0000000..3d2b3ad
Binary files /dev/null and b/ext/lwjgl/native/windows/jinput-raw_64.dll differ
diff --git a/ext/lwjgl/native/windows/lwjgl.dll b/ext/lwjgl/native/windows/lwjgl.dll
new file mode 100644
index 0000000..6819404
Binary files /dev/null and b/ext/lwjgl/native/windows/lwjgl.dll differ
diff --git a/ext/lwjgl/native/windows/lwjgl64.dll b/ext/lwjgl/native/windows/lwjgl64.dll
new file mode 100644
index 0000000..e66ab2a
Binary files /dev/null and b/ext/lwjgl/native/windows/lwjgl64.dll differ
diff --git a/ext/lwjgl/res/Footsteps.wav b/ext/lwjgl/res/Footsteps.wav
new file mode 100644
index 0000000..074c936
Binary files /dev/null and b/ext/lwjgl/res/Footsteps.wav differ
diff --git a/ext/lwjgl/res/appletlogo.gif b/ext/lwjgl/res/appletlogo.gif
new file mode 100644
index 0000000..283e15e
Binary files /dev/null and b/ext/lwjgl/res/appletlogo.gif differ
diff --git a/ext/lwjgl/res/appletprogress.gif b/ext/lwjgl/res/appletprogress.gif
new file mode 100644
index 0000000..3ed42c6
Binary files /dev/null and b/ext/lwjgl/res/appletprogress.gif differ
diff --git a/ext/lwjgl/res/ball.png b/ext/lwjgl/res/ball.png
new file mode 100644
index 0000000..53aa857
Binary files /dev/null and b/ext/lwjgl/res/ball.png differ
diff --git a/ext/lwjgl/res/ball_sm.png b/ext/lwjgl/res/ball_sm.png
new file mode 100644
index 0000000..0c9db45
Binary files /dev/null and b/ext/lwjgl/res/ball_sm.png differ
diff --git a/ext/lwjgl/res/center.wav b/ext/lwjgl/res/center.wav
new file mode 100644
index 0000000..29e6dde
Binary files /dev/null and b/ext/lwjgl/res/center.wav differ
diff --git a/ext/lwjgl/res/ding.wav b/ext/lwjgl/res/ding.wav
new file mode 100644
index 0000000..fdb625a
Binary files /dev/null and b/ext/lwjgl/res/ding.wav differ
diff --git a/ext/lwjgl/res/left.wav b/ext/lwjgl/res/left.wav
new file mode 100644
index 0000000..87635a5
Binary files /dev/null and b/ext/lwjgl/res/left.wav differ
diff --git a/ext/lwjgl/res/logo/lwjgl_logo-with_jacket.ai b/ext/lwjgl/res/logo/lwjgl_logo-with_jacket.ai
new file mode 100644
index 0000000..a220dec
--- /dev/null
+++ b/ext/lwjgl/res/logo/lwjgl_logo-with_jacket.ai
@@ -0,0 +1,1086 @@
+%PDF-1.4
%âãÏÓ
+1 0 obj<>
endobj
2 0 obj<>
endobj
5 0 obj<>/ArtBox[40.3667 286.146 522.334 477.897]/MediaBox[0.0 0.0 612.0 792.0]/Thumb 231 0 R/TrimBox[0.0 0.0 612.0 792.0]/Resources<>/ProcSet[/PDF/Text]/Properties<>/MC1<>/MC2<>/MC3<>>>/ExtGState<>>>/Type/Page/LastModified(D:20050904082821-06'00')>>
endobj
214 0 obj<>
endobj
215 0 obj<>
endobj
216 0 obj<>stream
+%!PS-Adobe-3.0
+%%Creator: Adobe Illustrator(R) 12.0
+%%AI8_CreatorVersion: 12.0.0
+%%For: (Glen Moyes) (Glen Moyes Studios)
+%%Title: (lwjgl_logo.ai)
+%%CreationDate: 9/4/2005 8:28 AM
+%%BoundingBox: 31 281 575 478
+%%HiResBoundingBox: 31.6665 281.667 574.9473 477.897
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%AI5_FileFormat 8.0
+%AI12_BuildNumber: 198
+%AI3_ColorUsage: Color
+%AI7_ImageSettings: 0
+%%CMYKCustomColor: 1 1 1 1 ([Registration])
+%AI3_TemplateBox: 306.5 395.5 306.5 395.5
+%AI3_TileBox: 1.00781 0.000061 611.9998 792
+%AI3_DocumentPreview: None
+%AI5_ArtSize: 612 792
+%AI5_RulerUnits: 2
+%AI9_ColorModel: 2
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 4
+%AI9_OpenToView: -176 819 1 988 914 18 1 1 8 81 0 0 1 1 1 0 1
+%AI5_OpenViewLayers: 7777
+%%PageOrigin:1 0
+%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI9_Flatten: 1
+%AI12_CMSettings: 00.MS
+%%EndComments
+
+endstream
endobj
217 0 obj<>stream
+%%BoundingBox: 31 281 575 478
+%%HiResBoundingBox: 31.6665 281.667 574.9473 477.897
+%AI7_Thumbnail: 128 48 8
+%%BeginData: 7644 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FD97FFA97E85365A5A8584FD76FF846114140E3614140E3636A9FD
+%73FF7E360E140E140E140E140E140E84FD71FFA8AFA9FFA9AFA8AF858514
+%3614361485FD6EFFA8272727522752527D52A8FF840E3614140E85FD6DFF
+%5227F8272727F8FD0427FFFF5A0E36143614FD6CFFA852F827F827F827F8
+%27F852A8FFA8140E360E145AFD10FFAF7DA87DA8FFFF7DA87DA8FD0CFF7D
+%A87DA8A8FD06FFA87DA87DA8A8FD05FFA87D527D7DA8FD06FF7DA87DA8FD
+%1DFF7EFF2727202727272027272752FFFFFF843614361436A9FD0FFF5227
+%20277DFFFF52272727FD0BFF7DFD0427FD07FF5227212752FD04FFA85227
+%F8272127F87DFD04FF5227F82752FD1CFF5A847D27F827F827F827F827F8
+%7DFD04FF143614360E85FD0EFFA827F82727FFFFFF2727F852FD0BFF52F8
+%27F87DFD06FFA827F827F87DFFFFFF7DF827F8272727F827F87DFFFFA827
+%F827F8A8FD1BFFA814A97DF8272727F8272727F827A8FD04FF5A14361414
+%36FD0EFFA8F827277DFFFFFF27F82752FD0AFFA82727F827A9FD06FFA820
+%27F827A8FFFFA82027F8277DFF52FD0427FFFFA8F8272027A8FD1BFF5A0E
+%FF2727F827F827F827F82727FD05FF36140E360E14A8FD0DFF5227F8277D
+%FFFFFF2727F852FD0AFF5227F82752FD07FF5227F82727FFFFA8F827F827
+%7DFFFF7DF827F828A8FF5227F82752FD1BFFA90E61A92720272727202727
+%27207DFD04FFA9361436143614A9FD0DFF27202727FFFFFFA827202753FD
+%09FFA827272720FD08FF522127F87DFFFF5227272752FFFFFF5227272752
+%FFFF52F827217DFD1BFF36145AA8F827F827F827F827F8277DFD04FF850E
+%360E3614145AFD0CFFA8F827F852FFFFFFA8F827F87DFD09FF7DF827F852
+%FD07FFA8F827F827A8FFA827F827F8A8FFFFFF27F827F87DFFA8F827F827
+%A8FD1AFF841414A952272727F8272727F82727A9FD04FF5A361436143614
+%85FD0CFF522727277DFFFFFFA82727277DFD09FF2727F8277EFD07FF7D27
+%F82752FFFF7D2027F852FFFFFFA82027F827A8FF59FD0427FD16FF7D7DA8
+%FFFFA95A5AA97DF827F827F827F827F852FD04FFA9360E360E140E145AFD
+%0BFFA827F82727FD04FFA8F827F87DFD08FF7D27F82727FD08FF52F827F8
+%7DFFFFF827F8277DFFFFFF5927272752FFFF52F827F87DFD15FF7E272027
+%527D7EFFFFFFA87D522720272727202752FD04FFAF1436143614361461FD
+%0BFFA820272752FD04FF7D2727277DFD08FF52272720A8FD08FF2127F827
+%A8FF7DFD0427FD0AFFA8F8272727A8FD15FF7DF827F827F827277DFD04FF
+%A8A852522727F8A8FD04FF7E140E3614360E145AFD0BFF5227F8277DFD04
+%FF7DF827F87DFD07FFA8F827F827A8FD07FF5927F82727FFFF52F827F852
+%FD0AFF7D27F82727FD16FFFD0427F8272727F8FFFFFF7DA8FD04FFA8A8FD
+%05FF611436143614361461FD0BFF522727F8FD05FF7D27F827A8FFFD04A8
+%FFFF5227F82753FD08FF52F827207DFFFF2727F8277DFD0AFF522027F87D
+%FD15FFA827F827F827F827F827A8FF2727F827527DA8FD06FFAF0D140E14
+%0E360E145AFD0AFFA8F827F852FD05FF7DF827F8A8FF28F827F8A8A827F8
+%27F8A8FD08FFF827F8277DFF7D27F827F8FFFFFFFD05A8FFFFA8F827F827
+%7DFD15FFA8202727272027272752FFA827202727272027277D7DFFFFFFA9
+%A98585363614140E85FD0AFF7D2727277DFD05FF7D272027AF7D20272727
+%A8A827272053FD08FF7D27202727FFFF7D2127F852FFFF52272127F827A8
+%FF7DFD0427FD16FF5227F827F827F827F87DFFA8F827F827F827F827F827
+%52FD07FFA8A95A367EFD0AFF52F827F8A8FD05FF7DF82727A82727F827F8
+%A82727F8277DFF7D7D7D7EA8FFFF52F827F87DFFFF2727F82752FFA827F8
+%27F82727FFFF52F827F852FD16FF522727F8272727F827A8FF52272727F8
+%272727F8272752FFFFFF7D527DA8FD0FFF2727F852FD06FF52FD0727F827
+%5227F82727FFA8272027F8FFFFFF272721277DFFFF27F82720A8FFFFA853
+%F827207DFFFF2727F8277DFD15FFA9F827F827F827F827F8FFFF52F827F8
+%27F827F827F82752FFFF7DF827F82727527DA8FD0AFF5327F82752FD06FF
+%52F827F827F827F827F827F827F87DFF7DF827F852FFFF7D27F82727FFFF
+%A8F827F827A8FFFFFF2727F8277DFF7D27F827F8A8FD15FFA82727272027
+%27272052FFFFFD0427202727272027277DFFFF5227202727272027275252
+%A8FD07FF52272720A8FD06FF5227272720272727202727272027FFFF5227
+%27277DFFFF7DF827217DFFFFA827F82727FFFFFFA827F82727FFFF7D2127
+%F852FD17FF5227F827F827F82752FF7D27F827F827F827F827F827A8FFA8
+%27F827F827F827F827F827F8A8FD05FFA8F827F827FD07FF52F827F827F8
+%7D5227F827F82752FFA827F827F8A8FFFF2727F8277DFFFFA8F827F827FF
+%FFFF7DF827F87DFFFF2727F82752FD18FFA87D2727F82727A8FF7D2727F8
+%272727F8FD0427FFFFA8F8272727F8272727F827272752FD05FF7D27F827
+%7DFD07FF2727F8272752FF7D2727F82727A8FFA82027F827FFFF7DFD0427
+%FFFFFF7E27202727FFFFA8202721277DFF7D27F82720A8FD1BFF5227F827
+%A8FF2727F827F827F827F827F852FFFF5327F827F827F827F827F827F87D
+%FD05FF52F827F8FD047DA87DA8A827F827F827A8FF5227F827F852FFFFA8
+%27F827F87D7D27F827F87DFFFFFFA8F827F827527D2727F82727FFFF59F8
+%27F8277D7E7D7E7D7D7DA8FD15FFA87D7DFFA82727272027272720272727
+%7DFFFF52202727272027272720272727A8FD05FF27272027272720272727
+%7DFF2727202753FFFF7D27272027A8FFFFFF5227F8272127F8272152FD05
+%FF7D21272127212721272153FFFF272720272727F8272127F8277DFD1AFF
+%2727F827F827F827F827F8A8FFFF2727F827F827F827F827F82727FD05FF
+%7D27F827F827F827F827F8FFA827F82727FFFFFF5227F82727FD05FF5227
+%F827F827277DFD06FFA852F827F827F827F8277DFF7D27F827F827F827F8
+%27F827F8FD1BFFA8FD0427F8272727F827FFFF7E272727F8272727F82727
+%27F87DFD06FFFD09A8A9FFFFA8A8A8FD05FFA8A8A8FD07FFA8A87DA8A8FD
+%0AFFA87DA8A8A9A8A8A8FFFFFF84FD0BA8FD1DFF7D52F827F827F82727FF
+%FF7DF827F827F827F827F827F8277DFD61FF6184FD06FFA852272727207D
+%FFFF52272727202727272027272720A8FD06FFA8FD0FFFA8FFFFFFA8FD21
+%FFAFFD24FF5A145AAFFD06FFA87D2127A8FFA827F827F827F827F827F827
+%F827A8FFFFFFA87DFFA87DFFFFFF52FFA9FD08FF7DFFFFA852FFFFA8FFFF
+%7DA9FD09FF7D7D7DFD0BFF7DFF7E7D52FD23FFAF14141485FD08FFA8FFFF
+%FF2727F8272727F8272727F82752FD04FFA852FF7DFF7D847D527D5252A8
+%7DA87D7D7EFF7D847DA827A87D4BFFFF52A87DA87DA87DA87DFFA8527DA8
+%A8FD057DA8AF7DFF8452FFA87D527D7D7DA97DA87D7D7DA884FD19FF5A0E
+%140D367EFD09FFA827F827F827F827F827F827F87DFD04FF527DA8525252
+%277D522727A8FD0427F87D5227FD0752FF7DFD055227525252FF527D7D52
+%7D27272752287D2727A87D7DFF52525227277DFD04527D5227A8FD19FF85
+%141436141436A9FD08FFA85220272727202727272027A8FD04FF52527D7D
+%7D277D7D7E527DA852527D7D52A87D5252597D7D7D53A8A8537D5252FF27
+%A87D527DFF7E5252845252527E7D7D84527DFF527D527D7D7D527EA85252
+%7D7DFF2784FD1BFF5A140E3614140E5AA8FD08FFA82827F827F827F82727
+%FD05FFA8A8A8FF5252A8FFFFFFA8FD05FFA8FFA87D27A8AFFFFFFFA8FFA8
+%FFA8FD05FFA8FFFFFFA8FFFFFFA8FFA8FFA8FFA8FFFFFFA8FFFFFFA8FFFF
+%FFA8FFA8FF7D7DFD1DFF3614143614360E365AFD09FF84592727F8272752
+%FD18FFA8FD2EFFA8FD1FFF36140E360E360E141484A8FD08FFA85227F827
+%7DFD68FF5A361436143614360E3784FD09FFA87D7DFD6AFF845A14140E14
+%14365AA9FD79FFA9AFA8AFFDFCFFFDFCFFFDF0FFFF
+%%EndData
+
+endstream
endobj
218 0 obj<>stream
+%AI12_CompressedDataxœì½ks%·‘ ú½#ú?ð~˜;vÅ.<ð˜òœÕm9lywbCAuSR¯ùв»åÕþú›o ªpH¶š{l²ìO$‰|ãïþŸßþþ³£7·__~§ƒ—/þîïvw—ïoï~u@àƒÏ¯®>¼{‡ _üî—ÎNØêèóò•´ü—Ë»wooo~Eã¿žá÷ñW—7¿¾ýñòÝ/û¿ÿáÍÛÛw¿Ä–_¾}u m¯þô¿¾½úêêöÛÛË·¿´q@¿'ï¡A}_ùiJåW¾ý[ß~¸yóöæÛãÛÿó«ƒà|qiNq.øçÿñöw—ïVmsÎ Â/34Ž‡5ξ1–:ã·Nn_¸¾¼yÿÛ»Û×—ïÞín¯nïÞýê`÷ãÿâ[øËÅÁ¿_^]ÝþéàøêâõûïœÝÞ¼‡¶Gwo/®>ûüýÅÕÛ׿þü·ƒ_ÿÀ7Ÿß^½á?ôßûÍåå›Ë7ùí£ÏÓWgo¯.××ï
+aþèsç¿:þðöêÍo>\} «àj!xøŠ¦ò‡w0˜þNðù«Ï¯ôûË÷ïMð~ZÀݯÿýŸw°î·×Ôº‘çÿñ»ËoßAÀÚüÏ_Jß_^^Åhžòa:5á¿íwm
+c¦fîpšfX2 øÉî ;wXk-sõÒ¸Æåo/ÿô«ƒßÜÞ\ÊäîÞÿþíÿ…Édçí+é«ß}¸º¼ûÃÍ[Ä%Ã*Oý×·o.¯F_?»º ÓãÚ¿ÒâË‹»o/ßÝ^}xO^&ý ÷üâÇK$(/ùâûË›/oÿ…†ù™›óAqú«¥T\!–ƒ¢orô6'=â×ñËÚí?¸¿…Õùâîí·oo~ådhóWÿx÷öM[²ÙC·ôu}XºÿWý¿Œæüþý%îV%—ݯ»ÅŸý{|ëéÍ›Ýí5¢þm5XôØ°Aå¯íý
ºøðýËÿñòE¨¯þ÷‡Û÷—ï ǫ˃š_}{wñÃ%p‡òêôÃÝíS×âë‹w—¯¾åy{ÃÐ7_3öØÛïß½…׿zsñí·—wòøû«×oï€.¾¹ºü?¯¾¿¼{ÿÝí‡w7o^ýþõÅÝíÍ«oþ©ï«ËoÞ¿úâôÀÅÄ}# ú£ß¥ß½·WRSýÀúú@ß¿º¼ysñî»W—×ôŸ÷°µ._ù¿¹¼¾¸ƒÝÿêÝê¥üåÛËWonµ½{÷öÀ¥úêßß¼½¼ƒ¿;xõîû‹×€Ž_½þpwwyóúGø_}}wûÇË›¯/`[º\^iûW¯o¿ÿQú¼{óÍåõÛ›·7ðõÙ¿ü¿}}qusûþÕw?~ÿÝåÍ«;Ú›ðÅ7¯®/^ã° °H¯¾&ßüðîÕû?ݾû H{{{÷êýww——öéâõ‡÷—¯®? ¥†W{óÖŸz{}ùæíÕÕôûϾº¾x÷úèüãÿþpqßÁ_¿»¸ú†ß!ÀwÀü«#¢èêˆßxÔæã÷Èf„xutúj'CxuJ_uJ_†^N»¯ŸÚ÷>çVŸó+>ïÚ|nmNß÷ê7ôBèæþÂü…/º/|Ácú¾wýáêýÛï¯~|õÅ»+¤‰?è„þÀ_þC÷å?Ø·þÿøåw·w@-—À´o€ÔÞ½ºà_è|.ºo_ð«/¬“BÇÅå«×ŠŽKþú%÷~Ù¾]]Ú÷Þr«·Üêm÷Š·ÖæÐqÃ/¼åæ·:¦Ûî·Òľ÷æíoÀÈøÀ_ýÀoú°ÏûÎüç÷„ŒüòÅ—§Ì
Ó?}õå;àüÃ_£9½y}‹ú¯¾Zž”›ƒó?^Z¼Z}ùþ—ÿßKêxšö}ðå݇Ë/üþò#³9¢G‡6i}µý&£‘LÖFÆ£ø
+†õ[ Œ÷´×ó=ý|õÛ«ðǼ»ýðýç7ßܾ|ñ–è~{ñþ;]€¯¡\Æ0þxÀ_èùÛòØ÷¿| Ë/ï€jax_|ý¿._¿‡ï ýöûoß_>¦«ßâñtwóÅ
óîûᄐ½½²¡Jù“ŽsþÎ_ÌK¬ñèðÇ¿ÜÎwpöÂ>þþ; ÆAÿƒ¿Û‹ö|÷1¯…ã±>zãòOö²í7þ2ÞƒˆþæíÍø
+~ÃÜíõ÷¨‘üþ»‹ïŒ-Ϻ–ÿÉå7 ówkKÐÓ›.¯n¿¿lpƒÀIsð¯wß?
+9?^}{õöÝuÃI±ßÓˆšwÝpè#ü÷üï£véÕÅÍÅÝýÁFCœé·ÀíVÜŠ`Û„|³çŒŸ}v?Ïtáàø¦oòwxîÞ¼í”4½ÿ~ð¯ßÁ
+üÀWð–!·?8~C¢ðß¿|qvvvzvr¶;;>;:«gål>Ëgé,ž…3æΦӳÓÓÓ“ÓÝéñéÑi=-§ói>M§ñ4œúSw:œœžœœìNŽOŽNê èr'óI>I'ñ$œøw2íÎv§»“Ýnw¼;ÚÕ]ÙÍ»¼K»¸;¿s»éøìøôøäxw|||t\Ëñ|œÓq<Çþ؃Fqtvtztr´;:>::ªGåh>ÊGé(…#䎦zVOëIÝÕãz„úYk®©Æª¯®N嬜–“²+Ç娀ºóòE™K.©Ä
+èÚešÏæÓùdÞÍÇóÑ\çªMžAûžÃìg7Où,Ÿæ“¼ËÇù(×\òŒzzŽ9dŸ]†1¦³tšNÒ.§£TS=?§”b
+É'—¦xOãIÜÅãxk,qŽ9¦cˆ>º8…³pNÂ.‡£PŒ1Ì!‡bÁÐIü™?õ'~çý‘¯¾øÙgŸ|ôÁ{ïüäÎÜ©;q;wìŽ\uÅÍ.»ä¢Î;ç`Œ,ç2O€´ ¦=å †6Aç“CÕñ ÑÁß}u|Gä1™æ™ð? GÕë«øø¶t‚žVm»?`ë㓶”ˆ÷öîö{å‘–å7èmîÈŽhgÄ#êùˆ~\ \\\\\
+ZZ\\\\\˜£—/`qpypp‰x‘p™p¡p©`±h¹pÁpÉpÑpÙxá`éà™iñpù,d¤EÄeÄ…„¥¤ÅäåÄÅ%ÅEÅeÅ…Å¥ÅÅÅåÅæ%ÆE†eö°L°Ô¸Ø¸Ü¸à¸ä¸è¸ì¸ð¼ô¸ø¸üH HHŽ–ð&e¹U–›Å¶m–~»,7m™—/lÓ,·Írã,·ŽlÙ:ËÍ3ÃÚöh¹…–›h¹úD[I7D¿™–Ûi¹¡–[j§xC†ô”ìX‘bø‰ØÑËNŸ„¡É¤añãØ‘âè¯=ëŸiù £Z>§«úFÖ?»Ís¼zŽVO]>ÐcY=óêÉ«'ž¸| GdËǯžÍÔù‡ðæ„þæðQß<®{`*Ð#OéÌžSyNäÙÑsLÏ=Uv0ÒÛL4‡T‡tÐïhÜÓŽÐs†Th;g÷ˆgýsdO•§ÈüY?²…cbÄÈN‘%Ò²ŸÑ~Å‹{–w-î[Þ¹ºwa÷‚ á»l{Xg âÍø)›gîEh’‡Ž<6 G‘<‰IŽˆøŒžS˜XdB¡ Å&œXtRáIÅ' 'G#!Jg@\®=2ÙµÚ¹e'ý<:½Öû¸PmClŒCD‡Høƒô‰”Z‰r‘Hšq!ÆψúñU8IØ1ݹxÈ>ÕiØ„Š@‰¶À4SzŽaQžN΀Æà8õ%xÑد°
+øÓŸÜfÙbëvz|ìÊÁjX×Ãœaµ`åw@§»3 4€jL`úª_Eü ža
'…G4âñzLxFŒ#îahE®®®%¢pöeg`EÈ•ðKȽ¯!§CÄ#
+ñN䦸Õë"#‡®MÍØ¡óõ8y”ûÆé†ãœ‰~QdÝIÒnÜJxªƒlEÌ_‹_$¡ ˆ,
+—e4”ÕPB8&ù
7$Ês ?€ˆÅãkñË‘¤$0”
+Q:D)Ù.ûŽ¶4J“ UÒQ€Ä‹ÃŗƳ†³IÅ#”MQFEYÙnè”cuM çŠïD˜.†åá÷Œ0ë³¼ò
›Ç„GÂ"¯4`(öfÂÛ‘aì”påK°” ?ŒcÂ`E0â€!ÅD%ìtþ4wO³Ž4ç™f«3ÅyžÑžÕ›h¯ÝÑÙrDû÷èíQG»3ÚpCÏ U`ÙÇÀ‘µžÎgpL; …€KˆÍ I¨ŽH²:ëd3 RÜ&õ$2”}kãí†ó%Æ—ø^b»Çµ`ZðX&^«x^b¹ÇñÆ_Âî·@•n—˜]âµÃê£+|Î$³7|.±Ùãr‰Ç%kÏ1á]rÌ%¿nÙá\ÖRòœõ³–¦ÂFÞŠÆ£ÖÏZzS¶| É„uð¬åɣĩ<±{ Gå’Ëg-á
+]?[4Gý,åíÍù¹Ö)å|^ê“M›œ‡Ú¤Jê0V’ÇUê>óB1©9‰™!˜Ì;)¨ÁCtæû4Œ‡M0VôNöfÑclöø{äúk#ÌÇé<ëÑ,sÿXöŒd¸ÆÏ£~{í‘ßXÉ[jUa»
+[VضÂÖ¶¯
kìfia[[[ÈÞØf=ž¬.¤ƒªÝ…-/l{aíž-0lƒ "p:µÄˆÎ¼‡Îo¶È°MF2Gb™aÛL%)«…†VXm4AÄXX2èщÒv&öšS±Ù°Õ†í6l¹aÛM]HÖ½ÄLƒÖõ]i"MQ+i!fI`=äxa³Q‹Ù@nU»‚ZØv³´Þ,í7jc`+ƒÚĆgC=Ò‰žx*Zá±YŠé€Íš£¶¶>¨ýhhHíqqeÕQ[ÄN¨¡šõÙv¼ÙÝÔævlzÙÊý©hÒ,&èOµø€,²2AªÅ䥕 úS->Æ{ö[]Äö2|¶ö9
Çѹ¸==6yÊžSy{zí4ckMg³é$}¶’ÆØ~3¶â¸ÿDSúá‹u0º‰"Êœ…ËÂÀhþ˜Ædv?¹`ðTž"¶Ï5zlÇ7,©ëôá¶Üg þ*þ§ Žp)¡‡Õ…|0÷?òq1´mÎñG„8öS œßïB¡Õñ?‰ãû|Ìv_¸©Ì¶o®Ø Ì)`»Td±|?¡‡š~¤{äwoo¾¾ýúGôW˜pîý{OàÓë*°Û'ðéõŽÃ'ðéõØíøôz†JÐ'ûôzq’…‹Oõéõ%âJ¤dÞ!`Ç3k³ÀŸüHcvû“èñ {[õ¸ï¸øÈz|¢žöô¸vCü„gëÌ`ZXÈô§eñÔ{ž£{žc} ÇãÕ³»ç9¹ç‘èqûs¶ÿ(̦8óÑ
Ïö>$ºBqø¤{ž¼÷®=Î{žrÏSûÇìôW=ÖZlë‘öªÇZ«@’}¤½ê±Ö*`ÿ´W=ÆZ…v{8“k¹/ÛîáP…1Âñz¤~"µƒc7Àñ›àži'ÑÞÁ}pF´ë‰ÚÑ®4íÌ|{¤æÇ=bOÏŽþ,LøÏuô|Ò»eÛ÷1ÕûŸ5{ÞǶ?ñÙôxßññ¨züØïÜwœÁ=>Ðâcé±üÔÇXvxÚç/¼G²ãÑAõ¤Ï_^º¾Ÿ¢}t¯—/>Eûé^/_|Šö5Ò½^¾øík¤{½|ñ)Ú×H÷zùâS´¯©Xõ§z×RH_ŸèE\Ke Ø~¢q-•ôõ‰^ĵTöòÅ>¹ì§Je }í‘Ë–ÊLêzœ‡±–h–¥’ç:k*ô8²±Ž¬±÷x,ÞË‘ÿòaoæг¹°7?àé\={~:¨àl¢{è?øò)"ÖÇhÞÃç^Áò>]}ï=Þ«ÝüÏÇÚúgÄž÷ù÷=k'Á(àóÓž±…íimv?Ÿ…í‰,mPî~‚ª›û©,á*‹üõD–p•ÅàÀ{"K¸Êb =‘%\e1
+i{K¸Êb =‘%\íà¸{Ôî¼Øþì“›f*AP
+9–@.SwÑÊwo;öÕ9§®«YÛ”¾«{›IOS%wß\"½
DâðZôt_3éɧDM"½°®M⢧ûšqOrl®EUŸésЪ{øVîù„Ç=Ð#j!÷¤ûèqÿ_óOy Ç|þé™$æ±B<~~¢)÷ÑÒÌÇú4?Nj»Wjș㠒ýÏ&¸ä§vªë„87ãÜOâÜŒ0ÿÉ!ÎÍ8AЄ87ãIi÷8ö'VJ¦Úg{4+Ù#Ñ“§áxê표ԩ¡GŽÏ:“§i\ú³³çXž#{ÖÉL€.Êå¥0iS< öø.•ÉiBS—Ôt&²ò©¥7qŠ“þhØ‘=Užb2˜Æ¤;lìS™¯²êÆà5*íìx¤Ún¹ˆOÏÉæY'ÐyËrZ?Gƒ§nž²| GÇ^?yð¤Á32jÌò#{Éèg>´ç<6’pC8Œ |lôà2 âï)Ϥt’PË`ëüEÍ`”ìä¥\dyæ׺––ÒRFZæœo%$Ê®ÉýÚÇ=›4´È??Ä:/âœ_¾XE9k&zŸ‹~ºÊG_f¤/sÒ“dþ-óý–™~÷dùu4k4)N¥Fg]vÐJËêÕÕnƒòÏù<ÿùù<c‰výȉû,ñæý´˜# ¤§µÀÌ °>†Ò
+ŸÔãaŒû-0‹¥)¡-!tž–é -t”
+š,
”µ>
ô¤K_ܦ€J¢ª¦vÉŸ–úI±•ÛÔϹKl\¦}žu ŽË„OI÷¤² ƒtORœlã–ô˜iž‹$OI[vT¦¡O[nIËFÞ+sÅ cœuZ©Æ– éÃ9É?ð§á ͇ÀÅÓ÷¶{È”ÒavåQæ i*!Ù4îèZ´vĺ·¡ïjî£ôÁÞ®"½u_þù#
I¸¹¹¸¾|sð€Ð’´=‡_?‡_?‡_züD§ÐG8‡>ÇŸ%Þñ'dv>êù/Õã“ý||>ë_BëœÚçøûçøûçøûçøûGDË?ùyôg9…ÿ\²Ç'ÉXÿÀ¡>á?áÿe„Ì?}¡!óOßãsþß@þO í|àytvêCð—ÕãŸE»ÜÔ'|ΰxΰhÏÃ2ëÃÒòs†…>ÏÏ›añ÷OlIûy-’Ÿöü%ŸæŸ"ÿûÏ©3Ï©3Ï©3Ï©3ÿ9©3dr{dþ̲íþ$š®Ýƒ™4˶ûÓi8Såq95˶ÿåkÖ±nP迉x>;žÏŽç³ãoóìx6Ù<›lžM6Ï&›g“ͳÉæÙdóŸj²yYxÔó²ðs<}¡Ï!Ï!Ï!¡=þY$ç°ïç°ïç°ïç°ïç°ïGš±ŸÊ0þIæúqØ÷s:çs:çs:'=ŸÈI>‰£|L?}N眞Ó9·Wü=‰þ)c~Žˆ…Ÿ%²âgˆ yº•OŠ‰ðã ¿(:ú÷ÃÐ*ísŽÕŠ¡bqOÅ¢±£tŸza
+ÆËc¬dìs˜vj†1Ï'pþö
+;?J]Aå“]¿¨.ÙMµ¬gŸµgál¥å|÷„î‰ÝhEæî™»glf»×–¯}®©±Ò¿QêWu¸Z%®V‹«Qx£ƒF tNUúU‹r@•ª•·B@DM™nô¾¢xª(ë:iju£”F+Z½Å¬Í<QxŸ0<6SÅaç>‘x,?x‹:ಌǢñ¾HN8Öµþ3© a¼ÅP‘§P,¦‰MU=õ÷%›‰¬ÿéwÖÊÉf¦¼}©¶ŸçAÁÐAÑPèqY:tY>Ôw<§/ÌØq(¨Î¸Ýç-ëÒV¦M[¦Æµ5ZÐ-¬È±U,œå>v5µ+õ¶õj+ÖÖlEÁ° ¥Ö`±ƒ¼zŽ%[ÔRSôÈP¼©Öñ|>?ŸÏÏçóóùü|>?ŸÏÏçó_ØùLæx€
TÔç#þR®#¥ÿᶚT‘f´
+$jQ`j˜ËáTj]vjË}ÞÿîkðùÑcÕö×ÄxýGŒ÷ñXýtcÊØ–B¦¿¼¿eZ×~¨ô²
ðâû囇‚Ï7.[8/–RνnÛåt^¾¸GÖy¨"ô Ý*¦²|µ|#œDŸú¾uU}RèûÖ]²à#Cßr£yvö ¼Õh³Qg£Ï&{+…
+ÊJ§M
+/]qä-Œ¼¡ÕFJ¯p’h¶4ÙüA‰‹h·Ié~%5ZjÔ¤ôÔ(ªÑQÕ†ó#ËA+50 ³ÿY
+##‡*3ýæ/ŸÌ»æ1óš1=.v†àd‰´ruâ› d¹ú
+ÖãÖnYÚ®hŠâBd^-¡2e?5•±éÙÁ’!¬Y˜)[ –°/#æŒA7×3æž1÷Œ¹ÿ˜ëñâÀ>úPÇ» tužû^õ½¼1ãþž¡]ë”â‹*ÅadÆaTÇz·x¢m4‘Ľ|AESDQEÝå†'tÓ1ÅÙ5‡…"fŠ6Êrå!_{HÐF éãÏún$}î
å <Ì'}ߣ®í3ÞŸñþŒ÷g¼ÿ¬x_Æ0®¥ýô™zÇÂr³· ›€2†ï,þÙÆúìoc7´tÿw.ÀßÓò’–aþ>Y–ìÿ›ÞžŸ¬¸Õ±âVQqfv:t›ºÃv©µ?Êk¶MèìJ¢¥Oô‹¨MíKí‚"½ž´°4±®>¸œˆÈ&BŠíÉ4wGw“öþò]÷›H¬d=^…ËJæ‘èôÇr¯£Ü6Ù™ÎWy¸ ,Åâ£Ï}ÆèßF‡ÚóÚÿ7®ˆáŸåº±ÕŸðš³üA¼çëÍÞÃȧC_¦zÿ¤>õPJix(xeMÜ8Bžò"̽
+s˜µöòŃ.QÐÊÚÑÙ3€—ä¥ECmÍ1Á® u‡Ôr´¨‹¡‘ï~Q¥aY8l™Á‚زúÕ‘yùÂjɬ«Â,ë»,«µ,rÞÅ!ÀN+†iÕøQá´Š£àÈnU<F´“ûõŽE
+Ú¸™ ¬°ƒÑŸ O´'É“í™í)ƒû1üàI]>Çî‘NŸ5„?ºÂ&èW¹OòHUô^É^l-yMOe2Ð¥Q±ÆE0Ë…¼³©Už#yŽÇ˜ënÉî®ðîbä~m+5¤KÌ׺ùÆnØJ/_›+“«‹¾ó›o ?"Ç×19¿vä ;!'˜„F-‚¡$ êå ~jáN-À©5µÜd
[j¡Jš$9¾”ß«9»-·’[
kÇÄA€?K¿Ø¨‹¨ù¹”¼6*‡ÓœëA‡¸+ú³ñ–MgôAoÙÁ÷fwˆ¬q¥8îm†=á1ŽY#£Ñß>òxþ—··W—ïN¼ÄS¹û„=ö·êÏ:ƒ~Ðs¶[=Ç«çHèQ¯›g”¬>Jn_$ÂCüÛ8~œrïIÖ÷…5zFE†±Zý=Žb¸ö?WBëã‹z}lá°G•Wz‚rKO_é)zü)Å‘ž¾ÜÒsŸÜã?(OcÆœJyQ1Þ’ŒCxÝÕ²'uï]P9+‹™L’F,RcO)¥þD”cJ?"á¥P‚ýLÂ
…Ÿœ€(AÉöAÄ!Œ&Jº?£ÄûS§v”€LIøG”ˆ©ø…ÒñgJÉǤ|| G”
X¾`Qdk’ì…Mó&IŠ;>æŸ#y*=d†ã¦‹Z|Ljöq’'Ê£r·G%{©QyÔ@ç˲áNìÙÙcC8êj÷”î¥zœÉ@ß?iñÄÅV_?УÛ<ƒêœÛÞY¾|Aÿ=¹÷Ù=ø·z<¾ç9úøzäßžìzÜ÷S~Ú=þÄoþ×îQÔþûŠ üôÒ‰"˜ŸäùYË…ý¹Š{ýu•GhÏ“—xîñ¹ÇÇ÷hrÊh(Í$“4FrÊ_(y¡¼…’JX(Y¡<Å¥ŠPrâ"E(!q¢D2PòDZœHKia¢V.²•$Z$êÊ?ï=¦LäÞ<&ÎdzùÂr™úl¦–ÏÔ2š´d¤f{-³g(³ ógÈÄùMœCÃ9NœEÓòh™—²jRƒ5lG"ÜQ—Q3SV¤æÕh^˜d×3>³›5Yøã\›*ÆËYrn0ësØHË6IÎÀÁ‡™,+ק’sB¹T;ʧ:–ÌÎΩ”¡CÏËb`Îò$yÔ vPµ·ŸÆ;¥3´4•©{ZQõeñõ…(¸¯šéyLù±ñ9}ÿ½"OPF³;Ÿú´yB~ñt}ý|=®Jj6`[ y^=yó¤õcYyýVß