diff --git a/cicaprojekt/ApplicationFrame.java b/cicaprojekt/ApplicationFrame.java index b3cc2d5..0741f68 100644 --- a/cicaprojekt/ApplicationFrame.java +++ b/cicaprojekt/ApplicationFrame.java @@ -10,20 +10,61 @@ import java.awt.event.MouseEvent; import java.io.File; import java.io.IOException; +/** + * Az alkalmazás megjelenítéséért felelős osztály. + * Inicializálja az ablak egyes részeit, illetve beállítja az eseménykezelőket. + */ public class ApplicationFrame implements Runnable { + /** + * A fő ablakot reprezentáló JFrame példány. + */ private JFrame jframe; + /** + * A térképválasztás alatt megjelenő tartalmat magában foglaló JPanel példány. + */ private JPanel mapselectorpanel = null; + + /** + * A játékmenet alatt megjelenő képernyőt reprezentáló + * Display példány. + */ private Display gamepanel; + /** + * A térképválasztás alatt megjelenő fájllistát + * reprezentáló JScrollPane példány. + */ private JScrollPane filescroll; + /** + * A térképválasztás alatt megjelenő menükép mérete. + */ private Dimension menuDimension = new Dimension(640, 395); + /** + * A Control osztályban lévő KeyHandler osztály + * egy példánya, amely a billentyűzet figyeléséért felel. + */ private KeyListener keyHandler = new Control.KeyHandler(); + /** + * A fájllistából való választás eseményét kezelő osztály. + * A kiválasztott elemre való kattintás után eltűnteti a térképlistát, + * betölti az elemnek megfelelő térképet, majd azt felhasználva + * elindítja és megjeleníti a játékot. + */ private class ListMouseHandler extends MouseAdapter{ + + /** + * A kiválaszott elemnek megfelelő térképet betölti, + * majd elindítja a játékot. + * + * @param e a MouseEvent esemény, ameny a kattintást + * reprezentálja + * @throws IOException Ha nem találja a bemeneti fájlokat. + */ @Override public void mouseClicked(MouseEvent e) { jframe.remove(mapselectorpanel); @@ -40,6 +81,13 @@ public class ApplicationFrame implements Runnable } } + /** + * Az ablak inicializálása, alapvető tulajdonságainak beállítása. + * Elindítja a térképválasztó inicializálását, illetve megjeleníti + * azt. + * + * @see #initMapselector() + */ public void init(){ jframe = new JFrame(); jframe.setFocusable(true); @@ -52,6 +100,13 @@ public class ApplicationFrame implements Runnable jframe.setLocationRelativeTo(null); } + /** + * Játék után visszatérés a térképválasztáshoz. + * Eltávolítja a játék nézetet, elindítja a térképválasztó + * inicializálását, illetve frissíti az ablak tartalmát. + * + * @see #initMapselector() + */ public void backToMapSelection() { jframe.remove(gamepanel); jframe.removeKeyListener(keyHandler); @@ -61,15 +116,36 @@ public class ApplicationFrame implements Runnable jframe.revalidate(); } + /** + * Megjeleníti az ablak aktuális tartalmát. + */ @Override public void run() { jframe.setVisible(true); } + /** + * A térképválasztó inicializálása. + * Amennyiben nem üres a panel, úgy kiveszi azt az ablakból. + * Létrehoz egy új panelt, amelybe betölti a menüképet, majd feltölti + * a térképválasztó listát is. Beállítja a térképválasztó lista + * megjelenését, majd hozzákapcsol egy egér eseménykezelőt a panelhez. + * Ebben lekezeli a Play gombra való kattintást, amely hatására hozzáadja + * és megjeleníti a térképválasztó listát a panelhez. + * + * @throws IOException Ha nem találja a bemeneti fájlokat. + */ private void initMapselector() { if(mapselectorpanel != null) jframe.remove(mapselectorpanel); mapselectorpanel = new JPanel() { + + /** + * Kirajzolja a fájlból betöltött menüképet. + * + * @param g egy Graphics objektum, amelyre + * a rajzolófüggvény meg van hívva + */ @Override protected void paintComponent(Graphics g) { super.paintComponent(g); @@ -106,6 +182,16 @@ public class ApplicationFrame implements Runnable mapselectorpanel.setLayout(new BorderLayout()); mapselectorpanel.addMouseListener(new MouseAdapter() { + + /** + * Az egérrel való kattintás eseményét lekezelő függévény. + * Amennyiben a megadott koordinátákon belül kattintanak + * (Play gomb), úgy hozzáadja a térképválasztó listát + * a panelhez, amjd frissíti a panel megjelenítését. + * + * @param e a MouseEvent esemény, ameny a kattintást + * reprezentálja + */ @Override public void mouseClicked(MouseEvent e) { if(e.getX() > 229 && e.getY() > 186 && e.getX() < 433 && e.getY() < 219) { @@ -116,8 +202,22 @@ public class ApplicationFrame implements Runnable } }); - } + } + /** + * Beállítja a játékmenet paramétereit. + * Létrehoz egy új Display példányt, egy új + * Dungeon példányt, amelyeket a kapott File + * példánnyal együtt átad a megfelelő függvényeknek, amelyek aztán + * elindítják a játékmenetet. + * + * @param dungeonFile az a File, amelyet a felhasználó + * a térképválasztóból választott ki + * @throws IOException Ha nem találja a bemeneti fájlokat. + * @see Game#setDisplay(Display) + * @see Game#setDungeon(Dungeon) + * @see Game#startGame(File) + */ private void setGameParams(File dungeonFile) throws IOException { gamepanel = new Display();