public override GSCore ExecuteMessage(string token, GSCoreCollection args) { GSCore result = null; if (token.Equals("print")) { result = execPrint(args, false); } else if (token.Equals("println")) { result = execPrint(args, true); } else if (token.Equals("if")) { result = execIf(args); } else if (token.Equals("while")) { result = execWhile(args); } else if (token.Equals("foreach")) { result = execForeach(args); } else if (token.Equals("x")) { result = execMessage(args); } else if (token.Equals("do")) { result = execDo(args); } else if (token.Equals("return")) { result = new GSReturn(args.getSafe(0)); } else if (token.Equals("break")) { result = new GSReturn(GSReturn.TYPE_BREAK); } else if (token.Equals("continue")) { result = new GSReturn(GSReturn.TYPE_CONTINUE); } else if (token.Equals("set") && args.Count > 1) { result = execSet(args[0], args[1]); } else if (token.Equals("random")) { result = execRandom(args); } else { if (token.IndexOf('.') >= 0) { string[] tp = token.Split('.'); GSCore obj = this; for (int a = 0; a < tp.Length - 1; a++) { if (obj == null) { break; } obj = obj.GetPropertyValue(tp[a]); } if (obj != null) { return(obj.ExecuteMessage(tp[tp.Length - 1], args)); } } Debugger.Log(0, "", "UNKNOWN MESSAGE: " + token + " "); } return(result); }