Package graphics

Source Code of graphics.MainGraphics$GameKeyListener

package graphics;

import game_timer.GameTimer;
import game_timer.TimerNotify;

import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Panel;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.HashMap;

import javax.swing.Icon;
import javax.swing.ImageIcon;

import controller.Controller;
import java.io.*;
import java.lang.*;

//TODO: [peti] framebol kell szarmaztatni
public class MainGraphics extends Frame implements TimerNotify, KeyListener {

  private static MainGraphics instance = null;

  /**
   * MainGraphics elkerese
   *
   * @return MainGraphics visszadasa
   */
  public static MainGraphics get() {
    if (instance == null) {
      instance = new MainGraphics();
    }
    return instance;
  }

  protected Draw draw;
  protected Canvas canvas;
  protected Icon background;
  protected Icon gameover;
  protected Icon youwin;
  protected String endText;
  protected ArrayList<AbstractGraphicsObject> graphicsList = new ArrayList<AbstractGraphicsObject>();

  protected HashMap<Object, AbstractGraphicsObject> graphicsTree = new HashMap<Object, AbstractGraphicsObject>();
  protected Image offscreen;
  protected Panel menuPanel = MenuPanel.get();

  /*
   * MainGraphics konstruktor: meret, listenerek beallitasa
   */
  private MainGraphics() {
    this.pack();
    this.setFocusableWindowState(true);
    this.addKeyListener(new GameKeyListener());
    this.setVisible(true);
    this.setSize(735, 645);
    this.setLayout(new BorderLayout());
    this.setResizable(false);

    offscreen = createImage(735, 645);
    // hozzaadjuk a listenert, hogy be lehessen zarni a frame-t
    this.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });

    // majd letrehozzuk a ra rajzolando canvast
    canvas = new Canvas();
    canvas.setSize(735, 645);
    this.add("Center", canvas);
    canvas.addKeyListener(new GameKeyListener());

    // beolvassuk a jatek hatteret
    background = new ImageIcon("images/hatter.gif", "hatter"); // egy ilyen
    gameover = new ImageIcon("images/gameover.gif", "over"); // egy ilyen
    youwin = new ImageIcon("images/youwin.gif", "win"); // egy ilyen
    // imageIcont
    // kell
    // letrehozni

    // feliratkozunk a GameTimer-re
    GameTimer.getInstance().registObserver(this);

    // adjuk hozza a menut es rejtsuk el
    this.add("Center", menuPanel);
    menuPanel.setVisible(false);
  }

  public Frame getFrame() {
    return this;
  }

  public Canvas getCanvas() {
    return canvas;
  }

  /*
   * A graphicsTree-hez hozzaadjuk a Graphics objektumokat
   *
   * @param ago Graphics objektum
   *
   * @param o az adott peldany, amire a Graphics vonatkozik, lehet pl auto,
   * keresztezodes, ut stb...
   */
  public void addGraphicsObject(AbstractGraphicsObject ago, Object o) {
    graphicsList.add(ago);
    graphicsTree.put(o, ago);

  }

  /**
   * Beallitjuk az adott Draw-t
   *
   * @param d
   *            Draw
   */
  public void setDraw(Draw d) {
    draw = d;
  }

  /**
   * onTick-re kirajzoljuk az osszes elemet
   */
  public void onTick() {

    // vegigmegyunk a Graphics-okon, es meghivjuk mindegyiknek a
    // recalculateData metodusat
    int l = graphicsList.size();

    // toroljuk a kepernyot
    // kirajzoljuk a hatteret
    background.paintIcon(canvas, offscreen.getGraphics(), 0, 0);

    for (int i = 0; i < l; i++) {
      // 
      AbstractGraphicsObject absg = graphicsList.get(i);
      absg.calcGraphics();
    }

   

    canvas.getGraphics().drawImage(offscreen, 0, 0, canvas);
  }

  /**
   * A jatek vegen kiirando szoveg beallitasa
   *
   * @param s
   *            szoveg
   */
  public void setEndText(String s) {
    endText = s;
    canvas.getGraphics().setColor(new Color(255, 255, 255));
    // az offscreen-rol rajzoljuk ki a kepet, a duplabuffereles miatt
    // a jatek vegein kiirando szoveg
    if (s=="nyertel")
      youwin.paintIcon(canvas, canvas.getGraphics(), 0, 0);
    else
      gameover.paintIcon(canvas, canvas.getGraphics(), 0, 0);
    //canvas.getGraphics().drawImage(offscreen, 0, 0, canvas);
  }

  // az objektum ismeretben megkaphatjuk a Graphics osztalyat
  /**
   * Az objektum ismereteben megkaphatjuk a Graphics osztalat
   *
   * @param o
   *            az adott objektum: pl RobberyCar, Cross, Route stb...
   * @return az adott objektum Grahpics osztalya: pl GraphicsRobberyCar,
   *         GraphicsRoute stb..
   */
  public AbstractGraphicsObject getGraphicsFromObject(Object o) {
    AbstractGraphicsObject ro = graphicsTree.get(o);
    return ro;
  }

  /**
   * Listener billentyuuzenetek elkapasahoz
   *
   * @author Asus
   *
   */
  public void menuMode() {
    menuPanel.setVisible(true);
    canvas.setVisible(false);
    GameTimer.getInstance().stopTimer();
    instance.validate();
  }

  public void gameMode() {
    menuPanel.setVisible(false);
    canvas.setVisible(true);
    GameTimer.getInstance().resumeTimer();   
    instance.validate();
  }

  private class GameKeyListener extends KeyAdapter {

    @Override
    public void keyPressed(KeyEvent e) {
      // ha az ESC gomb lett megnyomva
      if (e.getKeyCode() == 27) {
        menuMode();
      } else {
        // m�sk�l�nben a rabl�t szeretn�k ir�ny�tani
        // kell elkapni, irom emailben miert
        Controller.get().leadRobbery(e);
      }
    }
  }

  /**
   * A duplabufferelesnel hasznalt offscreen Graphics-at adjuk vissza
   *
   * @return Graphics: offscreen Graphics-ja
   */
  public Graphics getGraphic() {
    return offscreen.getGraphics();
  }

  @Override
  public void keyReleased(KeyEvent e) {
    // nem hasznalt fuggveny.

  }

  @Override
  public void keyTyped(KeyEvent e) {
    // nem hasznalt fuggveny.
  }

  @Override
  public void keyPressed(KeyEvent e) {
    if(e.getKeyCode() == 27){
      menuMode();
    }
   
  }

}
TOP

Related Classes of graphics.MainGraphics$GameKeyListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.