Class: cNavePropia

 cObjeto ----+
                                  |
                         cObjetoPersistente ----+
                                                |
                                         cObjetoVolador ----+
                                                            |
                                                          cNave ----+
                                                                    |
                                                               cNavePropia

Description:
Es la nave que será controlada por el jugador. Características:
      Dimensión:            15        metros
      Potencia:             5         Cantidad de daño que hace por intervalo de tiempo
      Energía:              100       Cantidad de daño que soporta antes de ser destruída
      Velocidad máxima:     0,17      metros/milisegundos (612 km/h)
      Misiles:              10
      Misiles Dirigidos:    5
      

Unit:
NavePropia (NavePropia.pas)

Constructors:

constructor create( pos: cVector = nil; vel: cVector = nil ); overload;
Crea una nave controlada por un jugador

Methods:

procedure mAcelerar( modulo: tLongitud );
Aumenta el modulo de la velocidad (sin cambiar su dirección ni sentido y sin sobrepasar la velocidad maxima)
procedure mCambiarLockeado( lEnemigos: TList );
Cambia el objetivo lockeado
procedure mDesacelerar( modulo: tLongitud );
Disminuye el modulo de la velocidad (sin cambiar su dirección ni sentido)
procedure mDesSerializar( str: string ); override;
Recrea el objeto a partir de una cadena de texto con el objeto serializado.
function mDibujar: tObjetosVoladores; override;
Método heredado, se sobreescribe porque se dibuja de forma distinta
function mDisparar( dT: tTiempo; ov : cObjetoVolador = nil ): cArma; override;
Hace que se dispare un arma (todavía no está implementado)
function mGetArmaSelec: tArma;
Obtiene el arma seleccionada actualmente
function mGetLockeado: cObjetoVolador;
Obtiene el objetivo lockeado
function mGetUltimoArmaDisparado: cArma;
Obtiene un puntero a la último arma disparada
procedure mGirarAbajo( angulo: tAngulo );
Permite a la nave girar hacia abajo (sobre su eje Y)
procedure mGirarArriba( angulo: tAngulo );
Permite a la nave girar hacia arriba (sobre su eje Y)
procedure mGirarDerecha( angulo: tAngulo );
Permite a la nave girar hacia la derecha (sobre su eje Z)
procedure mGirarIzquierda( angulo: tAngulo );
Permite a la nave girar hacia la izquierda (sobre su eje Z)
function mIntentarDisparo: cArma;
Intenta disparar. Si las condiciones son las correctas, el proximo turno saldrá el disparo, si no, no hace nada
procedure mRotarDerecha( angulo: tAngulo );
Permite a la nave rotar a la derecha sobre su eje X
procedure mRotarIzquierda( angulo: tAngulo );
Permite a la nave rotar a la izquierda sobre su eje X
procedure mSeleccionarArma( a: tArma );
Selecciona un arma determinada. Si tiene municiones, la selecciona, si no, no hace nada.
procedure mSeleccionarArmaSig;
Selecciona el proximo arma con municiones
function mSerializar: string; override;
Devuelve una cadena de texto con el objeto serializado.
procedure mSetLockeado( ov: cObjetoVolador );
Setea el objetivo lockeado

constructor create( pos: cVector = nil; vel: cVector = nil ); overload;

Parameters
   pos : Posición Inicial
   vel : Velocidad Inicial


procedure mAcelerar( modulo: tLongitud );

Hace que aumente el modulo de la velocidad
Parameters
   modulo : Modulo de la velocidad a sumar


procedure mCambiarLockeado( lEnemigos: TList );

Cambia el objetivo lockeado


procedure mDesacelerar( modulo: tLongitud );

Hace que disminuya el modulo de la velocidad
Parameters
   modulo : Modulo de la velocidad a restar


procedure mDesSerializar( str: string ); override;

Recrea el objeto a partir de una cadena de texto con el objeto serializado.
Parameters
   str : Cadena de texto con el objeto serializado.


function mDibujar: tObjetosVoladores; override;

Método heredado, se sobreescribe porque se dibuja de forma distinta


function mDisparar( dT: tTiempo; ov : cObjetoVolador = nil ): cArma; override;

Hace que se dispare un arma
Parameters
   ov : Objetivo del disparo
   dT : Intervalo de tiempo
Returns
   Arma disparada (o nil si no se puede disparar ningún arma)


function mGetArmaSelec: tArma;

Returns
   Arma seleccionada


function mGetLockeado: cObjetoVolador;

Returns
   Objeto volador lockeado


function mGetUltimoArmaDisparado: cArma;

Returns
   Último arma disparado


procedure mGirarAbajo( angulo: tAngulo );

Permite a la nave girar hacia abajo (sobre su eje Y)
Parameters
   angulo : Ángulo a girar


procedure mGirarArriba( angulo: tAngulo );

Permite a la nave girar hacia arriba (sobre su eje Y)
Parameters
   angulo : Ángulo a girar


procedure mGirarDerecha( angulo: tAngulo );

Permite a la nave girar hacia la derecha (sobre su eje Z)
Parameters
   angulo : Ángulo a girar


procedure mGirarIzquierda( angulo: tAngulo );

Permite a la nave girar hacia la izquierda (sobre su eje Z)
Parameters
   angulo : Ángulo a girar


function mIntentarDisparo: cArma;

Returns
   Arma proximamente disparada


procedure mRotarDerecha( angulo: tAngulo );

Permite a la nave rotar hacia la derecha (sobre su eje I)
Parameters
   angulo : Ángulo a rotar


procedure mRotarIzquierda( angulo: tAngulo );

Permite a la nave rotar hacia la izquierda (sobre su eje I)
Parameters
   angulo : Ángulo a rotar


procedure mSeleccionarArma( a: tArma );

Selecciona un arma determinada. Si tiene municiones, la selecciona, si no, no hace nada.


procedure mSeleccionarArmaSig;

Selecciona el proximo arma con municiones


function mSerializar: string; override;

Returns
   Cadena de texto con el objeto serializado.


procedure mSetLockeado( ov: cObjetoVolador );

Setea el objetivo lockeado
Parameters
   ov : Objeto volador lockeado