私は現在、機能するいくつかのコードを扱っています。本当にこれらすべてを「ブラインド」にするべきかどうかに要約されます。キャスト。
私はクラスを持っています:
public abstract class Trigger
{
// no logic, just three automatic properties
}
これは次の人に継承されます:
// there are several classes like this that store different things like strings,
// int,floats, enums, etc,etc.
public class ActivateOnTimeDelay : Trigger
{
// More automatic properties and possibly fields.
}
次に、これらのクラスをList<Trigger>
別のクラスでは、逆forループでリストを反復処理します
if (currentMission.ActiveTriggers.Count > 0)
{
for (int i = currentMission.ActiveTriggers.Count - 1; i >= 0; i--)
{
ActivateOnDeathDelay activateOnDeathD = currentMission.ActiveTriggers[i] as ActivateOnDeathDelay;
ActivateOnDeathImmediate activateOnDeathI = currentMission.ActiveTriggers[i] as ActivateOnDeathImmediate;
ActivateOnFinishDelay activateOnFinishD = currentMission.ActiveTriggers[i] as ActivateOnFinishDelay;
ActivateOnFinishImmediate activateOnFinishI = currentMission.ActiveTriggers[i] as ActivateOnFinishImmediate;
ActivateOnFinishMass activateOnFinishM = currentMission.ActiveTriggers[i] as ActivateOnFinishMass;
ActivateOnTimeDelay activateOnTimeD = currentMission.ActiveTriggers[i] as ActivateOnTimeDelay;
ActivateOnTimeImmediate activateOnTimeI = currentMission.ActiveTriggers[i] as ActivateOnTimeImmediate;
DisplayDialog displayDialog = currentMission.ActiveTriggers[i] as DisplayDialog;
SpawnEnemy spawnEnemy = currentMission.ActiveTriggers[i] as SpawnEnemy;
if (activateOnDeathD != null)
{
// do logic
}
// more null checks for each possible item that may be created this loop pass.
トリガーが使用されると、リストから削除され、そのIDがHashSet<string>
UsedTriggersに配置され、一部のトリガーが監視します。