package děla;

import rup.česky.tvary.Text;

import java.awt.event.KeyEvent;


/*******************************************************************************
 * Třída Sbl_Třída slouží k ...
 *
 * @author    Rudolf Pecinovský
 * @version   0.00.000,  0.0.2003
 */
public class Dělo_11e extends Dělo_11b
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
    
    /** Počet výstřlů za vteřinu. */
    protected static final int KADENCE = 2;
    
    /** Prodleva mezi jednotlivými výstřely v milisekundách. */
    protected static final int PRODLEVA = 1000 / KADENCE;
    
    
    
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ METODY TŘÍDY ======================================================

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

    /***************************************************************************
     * 
     */
    public Dělo_11e(int x, char spoušť)
    {
        super( x, spoušť );
    }


//== 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 ================================
    
    private long naposledy  = 0;
    private int  nabíjecích = 0;
    private boolean nabito = true;
    private static final String A = "+++";
    private static final String N = "---";
    
    public void keyPressed( KeyEvent ke )
    {
        if( ke.getKeyChar() == spoušť )
        {
            long nyní = ke.getWhen();
            System.out.printf(
                "Prodleva=%,6d, nábojů=%3d, nabíjecích=%1d, nabito=%s ",
                (nyní-naposledy), nábojů, nabíjecích, (nabito?A:N) );
            if( (nyní - naposledy) > PRODLEVA )
            {
                System.out.print( "--- střelba  ---  " );
                if( nabito  &&  (nábojů > 0) )
                {
                    System.out.print( "### PAL ###" );
                    Střela střela = new Střela( xPos, VÝŠKA_PLÁTNA );
                    AP.přidejPod( this,  střela );
                    MP.přesuň( střela, xPos, 0, RYCHLOST_STŘELY );
                    --nábojů;
                    popisek = new Text( odpal + nábojů, 
                                        popisek.getX(), popisek.getY() );
                }
            }
            else
            {
                System.out.print( "+++ nabíjení +++  " );
                nabito = false;
                if( ++nabíjecích >= 5 )
                {
                    System.out.print( "### NABITO ###" );
                    nábojů += 5;
                    popisek = new Text( odpal + nábojů, 
                                        popisek.getX(), popisek.getY() );
                    nabíjecích = 0;
                    nabito = true;
                }
            }
            naposledy = nyní;
            System.out.println();
        }
    }

//== 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 =======================================================

    /***************************************************************************
     * Testovací metoda.
     * -
     * @param args Parametry příkazového řádku se nepoužívají.
     */
    public static void start_11e()
    {
        System.out.println('\f');
        new Dělo_11e( 100, ' ' );
//         new Dělo_11e( 200, ' ' );
    }

}

