package děla;

import rup.česky.tvary.AktivníPlátno;
import rup.česky.tvary.Multipřesouvač;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;


/*******************************************************************************
 * Třída Dělo_0 demonstruje možnosti reakce na událost klávesnice.
 * Tstovací metoda vytvoří dva palposty a po stisku zadané klávesy
 * se z daného palpostu vystřelí kolmovzhůru střela.
 *
 * @author    Rudolf Pecinovský
 * @version   0.00.000,  0.0.2003
 */
public class Dělo_11a extends KeyAdapter
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
    
    /* Aplikační okno, v němž se všechno odehrává. */
    protected static final AktivníPlátno AP = AktivníPlátno.getPlátno();
    
    /* Společný mulitpřesouvač všech pohyblivých předmětů ve hře. */
    protected static final Multipřesouvač MP = Multipřesouvač.getInstance();
    
    protected static final int   RYCHLOST_STŘELY    = 200;
    
   
    
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
    
    protected final int      xPos;
    protected final char     spoušť;
    
    
    
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ METODY TŘÍDY ======================================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Implicitní konstruktor třídy Třída
     */
    public Dělo_11a(int x, char spoušť)
    {
        this.xPos   = x;
        this.spoušť = spoušť;
        AP.přihlašKlávesnici( this );
    }

    

//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== PŘEKRYTÉ METODY IMPLEMENTOVANÝCH ROZHRANÍ =================================
//== PŘEKRYTÉ ABSTRAKTNÍ METODY RODIČOVSKÉ TŘÍDY ===============================
//== PŘEKRYTÉ KONKRÉTNÍ METODY RODIČOVSKÉ TŘÍDY ================================
    
    public void keyPressed( KeyEvent ke )
    {
        if( ke.getKeyChar() == spoušť )
        {
            Střela střela = new Střela( xPos, AP.getVýška()*AP.getKrok() );
            MP.přesuň( střela, xPos, 0, RYCHLOST_STŘELY );
        }
    }

//== NOVĚ ZAVEDENÉ METODY INSTANCÍ =============================================
//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== VNOŘENÉ A VNITŘNÍ TŘÍDY ===================================================
//== TESTY A METODA MAIN =======================================================

    public static void start_11a()
    {
        new Dělo_11a( 100, 'a' );
        new Dělo_11a( 200, 's' );
    }
    

}

