Пример #1
0
    public static void ExecuteNewProject(params string[] args)
    {
        string path = "";

        if (args.Length > 0)
        {
            path = args[0].Trim();
        }

        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        else
        {
            GSConsole.WriteLine("[NO] Project: " + path + " is exists!");
            return;
        }

        string name  = path;
        var    chPos = path.LastIndexOfAny(new char[] { '/', '\\' });

        if (chPos != -1)
        {
            name = path.Substring(chPos + 1).Trim();
        }

        string[] copyFiles = new string[] {
            "sources.conf",
            "GameScript.dll",
            "UsingStandard.dll",
        };

        File.Copy("GameScriptApplication.exe", path + "/" + name + ".exe");
        foreach (var item in copyFiles)
        {
            File.Copy(item, path + "/" + item);
        }

        string templateSrc = "main() {\n\tWelcome() {\n\t\tprint(\"Welcome to GameScript!\");\n\t}\n\tWelcome();\n}\nmain();";

        File.WriteAllText(path + "/main.gs", templateSrc);

        GSConsole.WriteLine("[YES] Project: " + path + " is created!");
    }
Пример #2
0
    public string Execute(string path)
    {
        if (!File.Exists(path))
        {
            GSConsole.WriteLine("\"" + path + "\"" + "is not a \"GameScript\" file!");
            return("");
        }
        var src = File.ReadAllText(path);

        if (string.IsNullOrEmpty(src))
        {
            return("");
        }

        var vmFun  = VM.Load(src);
        var result = vmFun.Execute();

        if (result != null)
        {
            return(result.ToString());
        }
        return("");
    }
Пример #3
0
    public static bool ExecuteCommand(Command command, params string[] args)
    {
        switch (command)
        {
        case Command.Clear:
            GSConsole.Clear();
            _GetCurExecuter().Clear();
            WriteTitleLine();
            break;

        case Command.Quit:
            _bStop = true;
            break;

        case Command.ShowSrc:
            var src = _GetCurExecuter().GetSrc();
            if (!string.IsNullOrEmpty(src))
            {
                GSConsole.Write(src);
                if (src[src.Length - 1] != '\n')
                {
                    GSConsole.WriteLine();
                }
            }
            break;

        case Command.Space:
            foreach (var item in _lineExecuterDict)
            {
                bool bSelected = item.Key == _lineExecuterCurName;
                GSConsole.WriteLine(item.Key + (bSelected ? " (cur)" : ""));
            }
            break;

        case Command.Execute:
            ExecuteSrc();
            break;

        case Command.Reset:
            GSConsole.Clear();
            _RemoveAllExecuter();
            WriteTitleLine();
            break;

        case Command.OpenFile:
            if (args.Length == 0)
            {
                return(false);
            }
            ExecuteFile(args[0]);
            break;

        case Command.Change:
            if (args.Length == 0)
            {
                return(false);
            }
            ExecuteChange(args[0]);
            break;

        case Command.Remove:
            ExecuteRemoveSpace(args);
            break;

        case Command.New:
            ExecuteNewProject(args);
            break;

        default:
            return(false);
        }
        return(true);
    }