Class: cEspacio

 cObjeto ----+
                                  |
                         cObjetoPersistente ----+
                                                |
                                            cEspacio

Description:
Se encarga de controlar la interacción entre las naves y el responsable de manejar el tiempo.

Unit:
Espacio (Espacio.pas)

Constructors:

constructor create( np: cNavePropia = nil; objetos: TList = nil; dt: tTiempo = 25 );
Constructor. La lista que se pasa NO debe incluir la nave propia

Methods:

destructor destroy; override;
Destructor
procedure mActualizar;
Actualiza el Espacio. En esto se incluye mover las naves, detectar colisiones y tomar las desiciones necesarias según sea el caso.
procedure mActualizarObjetoVolador( ov: cObjetoVolador );
Actualiza el estado de un objeto según sea tu tipo
procedure mAgregarObjeto( ov: cObjetoVolador );
Agrega un Objeto Volador al Espacio
function mBuscarDuplicado( ov: cObjetoVolador ): cObjetoVolador;
Busca el duplicado de un objeto volador
procedure mComunicarPosicion( nEsp: cNaveEspia );
Método que se encarga de avisar al resto de las naves enemigas que estan cerca de una espia sobre la ultima posicion de la nave propia.
procedure mDesSerializar( str: string ); override;
Recrea el objeto a partir de una cadena de texto con el objeto serializado.
procedure mDestruir( ov: cObjetoVolador );
Destruye un Objeto Volador
procedure mDetectarColision;
Procedimiento que evalua las posiciones de los Objetos Voladores que se encuentran en el espacio, verificando 2 a 2 si hay una colisión.
procedure mEliminarDuplicados;
Elimina los objetos duplicados después de recuperarlos de una serialización
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 mGetNavePropia: cNavePropia;
Método que obtiene la nave propia del espacio (este método es probable que deje de exstir)
function mGetObjetos: TList;
Obtiene la lista de Objetos Voladores del Espacio
function mQuitarObjeto( ov: cObjetoVolador ): boolean;
Quita un Objeto Volador del Espacio. Devuelve true si lo saco y false si no existia
function mSerializar: string; override;
Devuelve una cadena de texto con el objeto serializado.
function mSetNavePropia( np: cNavePropia ): cNavePropia;
Método para cambiar la nave propia. Devuelve un puntero a la nave propia vieja.
function mSetObjetos( l: TList ): TList;
Cambia la lista de Objetos Voladores del Espacio, devolviendo un puntero a la lista vieja

constructor create( np: cNavePropia = nil; objetos: TList = nil; dt: tTiempo = 25 );

Constructor
Parameters
   np : Nave propia a utilizar
   objetos : Lista de objetos voladores (sin incluir la nave propia!)
   dt : Intervalo de tiempo


destructor destroy; override;

Destructor


procedure mActualizar;

Actualiza el Espacio. En esto se incluye mover las naves, detectar colisiones y tomar las desiciones necesarias según sea el caso.


procedure mActualizarObjetoVolador( ov: cObjetoVolador );

Actualiza el estado de un objeto volador, dependiendo de que tipo de objeto sea.
Parameters
   ov : Objeto Volador a actualizar


procedure mAgregarObjeto( ov: cObjetoVolador );

Agrega un Objeto Volador al Espacio
Parameters
   ov : Objeto volador a agregar


function mBuscarDuplicado( ov: cObjetoVolador ): cObjetoVolador;

Busca el duplicado de un objeto volador
Parameters
   ov : Objeto volador al cual se le quiere encontrar un duplicado
Returns
   Objeto Volador duplicado de ov


procedure mComunicarPosicion( nEsp: cNaveEspia );

Método que se encarga de avisar al resto de las naves enemigas que estan cerca de una espia sobre la ultima posicion de la nave propia.
Parameters
   nEsp : Nave espía que está avisando


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.


procedure mDestruir( ov: cObjetoVolador );

Destruye un objeto volador, liberando memoria y eliminandolo de la lista
Parameters
   ov : Objeto Volador a destruir


procedure mDetectarColision;

Procedimiento que evalua las posiciones de los Objetos Voladores que se encuentran en el espacio, verificando 2 a 2 si hay una colisión.


procedure mEliminarDuplicados;

Elimina los objetos duplicados después de recuperarlos de una serialización


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 mGetNavePropia: cNavePropia;

Returns
   Instancia de la nave propia que se encuentra en el espacio (como puntero)


function mGetObjetos: TList;

Returns
   Lista de objetos del espacio (como puntero)


function mQuitarObjeto( ov: cObjetoVolador ): boolean;

Quita un Objeto Volador del Espacio. Devuelve true si lo saco y false si no existia (esto lo quita del espacio, no lo destruye)
Parameters
   ov : Objeto a quitar del espacio
Returns
   true si se quitó, false si no estaba en el espacio


function mSerializar: string; override;

Returns
   Cadena de texto con el objeto serializado.


function mSetNavePropia( np: cNavePropia ): cNavePropia;

Returns
   Lista de objetos del espacio (como puntero)


function mSetObjetos( l: TList ): TList;

Cambia la lista de Objetos Voladores del Espacio, devolviendo un puntero a la lista vieja
Parameters
   l : Nueva lista de objetos a asignarle al espacio
Returns
   Vieja lista de objetos del espacio