Class: cObjetoVolador

 cObjeto ----+
                                  |
                         cObjetoPersistente ----+
                                                |
                                         cObjetoVolador

Description:
Clase abstracta, implementa todas las funcionalidades básicas de los objetos voladores. De esta van a derivar la mayor parte del resto de las clases.

Unit:
ObjetoVolador (ObjetoVolador.pas)

Constructors:

constructor create( pos: cVector = nil; vel: cVector = nil; dim: tLongitud = 5; pot: tEnergia = 1; ene: tEnergia = 100 ); overload;
Constructor
constructor create( ov: cObjetoVolador ); overload;
Constructor que copia los atributos de un Objeto volador existente

Methods:

destructor destroy; override;
Destructor
function mColisiono( ov: cObjetoVolador ): boolean;
Devuelve true si colisionaron los objetos voladores
procedure mDesSerializar( str: string ); override;
Recrea el objeto a partir de una cadena de texto con el objeto serializado.
function mDibujar: tObjetosVoladores; virtual; abstract;
Método abstracto, se sobreescribira en las subclases porque van a ser dibujadas de forma diferente
function mGetCoordenadas: cCoordenadas;
Obtiene el sistema de coordenadas de la nave
function mGetDebugInfo( debugLevel: tDebugInfo = DI_MINI ): string; override;
Método heredado que devuelve un string con el estado del Objeto. Se utiliza para depurar y la información entregada depende del parámetro tDebugInfo.
function mGetDimension: tLongitud;
Obtiene la Dimension del objeto volador
function mGetDistancia( ov: cObjetoVolador ): tLongitud;
Calcula la distancia a otro objeto volador
function mGetEnergia: tEnergia;
Obtiene la Energia del objeto volador
function mGetI: cVector;
Obtiene el versor i del sistema de coordenadas de la nave
function mGetJ: cVector;
Obtiene el versor j del sistema de coordenadas de la nave
function mGetK: cVector;
Obtiene el versor k del sistema de coordenadas de la nave
function mGetPosicion: cVector;
Obtiene la Posicion del objeto volador
function mGetPotencia: tEnergia;
Obtiene la Potencia del objeto volador
function mGetVelModulo: tLongitud;
Obtiene el modulo de la velocidad del objeto volador
function mGetVelocidad: cVector;
Obtiene la velocidad del objeto volador
procedure mMover( dT: tTiempo ); virtual;
Mueve el objeto volador basandose en su posicion, su velocidad y un intervalo de tiempo
function mRestarEnergia( ene: tEnergia ): cObjetoVolador;
Resta energia al objeto volador
function mRotarEnI( dAngulo: tAngulo ): cObjetoVolador;
Rota el objeto volador sobre el eje i (el sentido positivo es de j a k)
function mRotarEnJ( dAngulo: tAngulo ): cObjetoVolador;
Rota el objeto volador sobre el eje j (el sentido positivo es de i a k)
function mRotarEnK( dAngulo: tAngulo ): cObjetoVolador;
Rota el objeto volador sobre el eje k (el sentido positivo es de i a j)
function mSerializar: string; override;
Devuelve una cadena de texto con el objeto serializado.
function mSetEnergia( ene: tEnergia ): cObjetoVolador;
Método para establecer la energía
function mSetPosicion( posicion: cVector ): cObjetoVolador;
Método para establecer la posición
function mSetVelDir( velocidad: cVector ): cObjetoVolador;
Método para establecer la direccion de la velocidad
function mSetVelModulo( velocidad: tLongitud ): cObjetoVolador; virtual;
Método para establecer el modulo de la velocidad
function mSetVelocidad( velocidad: cVector ): cObjetoVolador; virtual;
Método para establecer la velocidad

constructor create( pos: cVector = nil; vel: cVector = nil; dim: tLongitud = 5; pot: tEnergia = 1; ene: tEnergia = 100 ); overload;

Constructor
Parameters
   pos : Posicion inicial
   vel : Velocidad inicial
   dim : Dimensión del objeto volador (radio, en metros)
   pot : Potencia del objeto volador (cantidad de daño que hace por intervalode tiempo)
   ene : Energía del objeto volador(cantidad de daño que soporta antes de ser destruido)


constructor create( ov: cObjetoVolador ); overload;

Constructor que copia los atributos de un Objeto volador existente


destructor destroy; override;

Destructor


function mColisiono( ov: cObjetoVolador ): boolean;

Devuelve true si colisionaron los objetos voladores @return true si colisionaron, false si no lo hicieron
Parameters
   ov : Objeto volador con el que se evalua si colisiono


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; virtual; abstract;

Método abstracto, se sobreescribira en las subclases porque van a ser dibujadas de forma diferente


function mGetCoordenadas: cCoordenadas;

Returns
   Sistema de coordenadas de la nave


function mGetDebugInfo( debugLevel: tDebugInfo = DI_MINI ): string; override;

Devuelve el estado del objeto basandose en la cantidad de datos requeridos. @return Cadena de texto con el estado del Objeto.
Parameters
   debugLevel : Cantidad de información requerida


function mGetDimension: tLongitud;

Returns
   Dimensión (radio, en metros)


function mGetDistancia( ov: cObjetoVolador ): tLongitud;

Calcula la distancia a otro objeto volador @return Distancia al otro objeto volador
Parameters
   ov : Objeto volador al que se calcula la distancia


function mGetEnergia: tEnergia;

Returns
   Energía (cantidad de daño que soporta antes de ser destruido)


function mGetI: cVector;

Returns
   Versor i, que representa la direccion en la que viaja el objeto


function mGetJ: cVector;

Returns
   Versor j, que representa la direccion en la que está la izquierda del objeto


function mGetK: cVector;

Returns
   Versor k, que representa la direccion en la que está el "techo" del objeto


function mGetPosicion: cVector;

Returns
   Vector posición


function mGetPotencia: tEnergia;

Returns
   Potencia (cantidad de daño que realiza por intervalo de tiempo)


function mGetVelModulo: tLongitud;

Returns
   Módulo de la velocidad


function mGetVelocidad: cVector;

Returns
   Vector velocidad


procedure mMover( dT: tTiempo ); virtual;

Mueve el objeto volador basandose en su posicion, su velocidad y un intervalo de tiempo
Parameters
   dT : Intervalo de tiempo


function mRestarEnergia( ene: tEnergia ): cObjetoVolador;

Resta energía al objeto volador
Parameters
   ene : Energía a restar


function mRotarEnI( dAngulo: tAngulo ): cObjetoVolador;

Rota el objeto volador sobre el eje i (el sentido positivo es de j a k)


function mRotarEnJ( dAngulo: tAngulo ): cObjetoVolador;

Rota el objeto volador sobre el eje j (el sentido positivo es de i a k)


function mRotarEnK( dAngulo: tAngulo ): cObjetoVolador;

Rota el objeto volador sobre el eje k (el sentido positivo es de i a j)


function mSerializar: string; override;

Returns
   Cadena de texto con el objeto serializado.


function mSetEnergia( ene: tEnergia ): cObjetoVolador;

Setea la energía del objeto volador a un valor arbitrario
Parameters
   ene : Nueva energía


function mSetPosicion( posicion: cVector ): cObjetoVolador;

Método para establecer la posición
Parameters
   velocidad : Nuevo vector posición


function mSetVelDir( velocidad: cVector ): cObjetoVolador;

Método para establecer la direccion de la velocidad
Parameters
   velocidad : Nueva dirección de la velocidad


function mSetVelModulo( velocidad: tLongitud ): cObjetoVolador; virtual;

Método para establecer el modulo de la velocidad
Parameters
   velocidad : Nuevo módulo de la velocidad


function mSetVelocidad( velocidad: cVector ): cObjetoVolador; virtual;

Establece la velocidad del objeto volador
Parameters
   velocidad : Nuevo vector velocidad