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