В настоящее время я пишу RPG-движок в XNA. Движок выполняет серию команд сценариев, но должен блокироваться до следующей команды сценариев. Как я могу это сделать?
Например:
// interact with an NPC named in String 'Name'
String interactfunc = String.Format("{0}_Interact", Name);
System.Reflection.MethodInfo info = Factory.Script.GetType().GetMethod(interactfunc);
if (info != null) info.Invoke(Factory.Script, new object[]{this});
//this may run the following script command for NPC 'Bob'
public void Bob_Interact(NPC Bob)
{
Bob.Say("Well this worked.");
Bob.Say("Didnt it?");
}
//the say command looks like this
public void Say(String Text)
{
TalkGui gui = new TalkGui(this, Text);
Factory.Game.Guis.Add(gui);
Factory.FocusedGui = gui;
}
Теперь мне нужен сценарий, ожидающий, пока первый TalkGui будет отклонен, перед выполнением следующей команды сценария.
Какой лучший способ сделать это? Может быть, запустить функции скрипта в своем собственном потоке или что-то?