Explorar el Código

Wait on PRINTW etc

StuffedAnon hace 6 años
padre
commit
a2aa86fb27
Se han modificado 1 ficheros con 11 adiciones y 1 borrados
  1. 11 1
      NTERA.Engine/Runtime/Base/Keywords.cs

+ 11 - 1
NTERA.Engine/Runtime/Base/Keywords.cs

@@ -256,6 +256,9 @@ namespace NTERA.Engine.Runtime.Base
 			var flags = ParsePrintFlags(node["name"].Substring(9));
 			var value = runtime.ComputeExpression(context, node.Single());
 			runtime.Console.Write(value.ToString(), flags);
+			if (flags.Wait) {
+				runtime.InputResetEvent.WaitOne();
+			}
 		}
 
 		[Keyword("PRINT", true, false)]
@@ -272,6 +275,9 @@ namespace NTERA.Engine.Runtime.Base
 			var flags = ParsePrintFlags(node["name"].Substring(5));
 			var value = runtime.ComputeExpression(context, node.Single());
 			runtime.Console.Write(value.ToString(), flags);
+			if (flags.Wait) {
+				runtime.InputResetEvent.WaitOne();
+			}
 		}
 
 		private class PrintDataOptions
@@ -316,7 +322,11 @@ namespace NTERA.Engine.Runtime.Base
 				throw new ArgumentException("No DATAFORM found before ENDDATA");
 			}
 			var value = runtime.ComputeExpression(context, CurrentPrintDataOptions.ChosenNode);
-			runtime.Console.Write(value.ToString(), CurrentPrintDataOptions.Flags);
+			var flags = CurrentPrintDataOptions.Flags;
+			runtime.Console.Write(value.ToString(), flags);
+			if (flags.Wait) {
+				runtime.InputResetEvent.WaitOne();
+			}
 		}
 	}
 }