Independencia y seguridad parametrizada de los GameComponent

A la hora de crear un GameComponent, debemos de  asegurarnos de que éste proporcione la mayor independencia del juego externo que lo utilice, ofreciendo una interfaz (conjunto de métodos y propiedades) que faciliten al máximo su uso.  Así pues, veíamos un ejemplo en mi anterior post donde se debatía como acceder al ContentManager o al GraphicsDeviceManager desde un GameComponent.

                Del mismo modo, si alguna de las propiedades que debe ser pasadas al componente se realiza de forma incorrecta, este no deberá de “reventar”, sino simplemente no mostrarse y dejar de actualizarse. Para conseguir esto último, podemos usar el siguiente procedimiento. En el método Initialize(), el cual es invocado automáticamente por el entorno antes de ejecturar el GameComponent, deberemos de asegurarnos que todas las propiedades consideradas de inicialización obligatoria, poseen un valor correcto. Si ello no es así, forzaremos a que dicho componente no sea pintado ni actualizado usando las propiedades Visible y Enable respectivamente.

Ejemplo de  pseudo-código:

 

public override void Initialize()

{

if (todas las propiedades cargadas por el usuario poseen un valor correcto)

{

/*Inicializamos propiedades internas del componente     *transparentes al usuario*/

   

  

}

else

{

      this.Visible = false; //No se llamará a Draw

      this.Enabled = false; //No se llamará a Update

}

}

De este modo evitamos errores “feotes” cuando el usuario cargue nuestros GameComponents las primeras veces y se le olvide inicializar o lo haga de forma incorrecta, alguna propiedad o parámetro.

 

Un saludo. Ramón Tébar Bueno

Coordinador Albacete DotNetClub

Publicado 05 marzo 07 01:48 por rtebar

Comentarios

Aún no ha hecho nadie ningún comentario. Escribe alguno y sé el primero :P
No se permiten comentarios de usuarios anónimos

About rtebar

Un estudiante de Ingeniería Informática con muchas ganas de aprender, donde los días de 24 horas pasan como un soplo de viento. ¡Quieron un clon o una máquina del tiempo! Coordinador Albacete DotNetClub MSP - MCP IEEE Member