public bool PushAI(IGameAI ai) { if (AIs.Count == 0) { AIs.Push(ai); if (ai.Activate(this)) return true; else { AIs.Pop(); return false; } } var currentAI = AIs.Peek(); if (currentAI.AllowPause()) { if (ai.GetType() == currentAI.GetType()) return false; else { currentAI.Pause(); AIs.Push(ai); if (ai.Activate(this)) return true; else { AIs.Pop(); currentAI.Resume(); return false; } } } else return false; }