I have a few questions on using events as I have not used them much and am now in need for such a system. I have a ship with multiple subsystems (computer core, engine, shields, etc) and want to hook up my UI elements to change as the subsystems are damaged, below is my current implementation of events for this system.
public class CombatUI
{
private GUIText computerCoreDamageIndicator;
private GUIText engineCoreDamageIndicator;
private GUIText weaponSystemDamageIndicator;
public void Observe(Ship ship)
{
ship.CCDH += new Ship.ComputerCoreDamageHandler(UpdateDamageIndicator);
ship.ECDH += new Ship.EngineCoreDamageHandler(UpdateDamageIndicator);
ship.WSDH += new Ship.WeaponSystemDamageHandler(UpdateDamageIndicator);
}
private void UpdateDamageIndicator(GUIText uiElement, float amount)
{
// TODO: Change value the indicator shows.
}
}
public class Ship
{
public event ComputerCoreDamageHandler CCDH;
public delegate void ComputerCoreDamageHandler(GUIText uiElement, float amount);
public event EngineCoreDamageHandler ECDH;
public delegate void EngineCoreDamageHandler(GUIText uiElement, float amount);
public event WeaponSystemDamageHandler WSDH;
public delegate void WeaponSystemDamageHandler(GUIText uiElement, float amount);
...
}
My issue is that using this method I need to create a new event, delegate, etc for every subsystem I have. Would there be a better method to implement this or am I on the right track?






