2021-02-19 15:06:00 +08:00
|
|
|
using System;
|
|
|
|
namespace Strawberry
|
|
|
|
{
|
|
|
|
static public class Engine
|
|
|
|
{
|
|
|
|
static public void Run(Module module)
|
|
|
|
{
|
|
|
|
Startup();
|
|
|
|
|
|
|
|
Module current = module;
|
2021-02-21 09:17:47 +08:00
|
|
|
current.[Friend]Started();
|
2021-02-19 15:06:00 +08:00
|
|
|
while (true)
|
|
|
|
{
|
|
|
|
let newModule = current.Run();
|
|
|
|
|
|
|
|
if (newModule != null)
|
|
|
|
{
|
|
|
|
delete current;
|
|
|
|
current = newModule;
|
2021-02-21 09:17:47 +08:00
|
|
|
current.[Friend]Started();
|
2021-02-19 15:06:00 +08:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
delete current;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Shutdown();
|
|
|
|
}
|
|
|
|
|
|
|
|
static private void Startup()
|
|
|
|
{
|
|
|
|
Input.[Friend]Startup();
|
|
|
|
Tracker.[Friend]BuildAssignmentLists();
|
|
|
|
}
|
|
|
|
|
|
|
|
static private void Shutdown()
|
|
|
|
{
|
|
|
|
Input.[Friend]Shutdown();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|