GetSafeAbsolutePath() public static method

public static GetSafeAbsolutePath ( string relativeFileName ) : string
relativeFileName string
return string
示例#1
0
        private static void SaveCommandCSV(Dictionary <string, int> commandUsage, string group)
        {
            string FileName = Global.GetSafeAbsolutePath("CommandUsage" + group + ".csv");

            try
            {
                // Delete old file
                FileUtils.FileDelete(FileName);

                // Save new file
                if (commandUsage.Count > 0)
                {
                    StringBuilder SB = new StringBuilder();
                    SB.AppendLine("Command,Uses");
                    foreach (KeyValuePair <string, int> KVP in commandUsage)
                    {
                        SB.Append(KVP.Key);
                        SB.Append(",");
                        SB.AppendLine(KVP.Value.ToString());
                    }
                    FileUtils.FileWriteAllText(FileName, SB.ToString());
                }
            }
            catch
            {
                Crt.WriteLn("Error saving " + FileName);
                Crt.ReadKey();
            }
        }
示例#2
0
        static void Main(string[] args)
        {
            try
            {
                if (!Debugger.IsAttached)
                {
                    Crt.HideCursor();
                }

                // Initialize door driver
                Door.Startup();
                Door.ClrScr();
                Door.SethWrite = true;

                Game.Start();

                if (Debugger.IsAttached)
                {
                    Crt.FastWrite(StringUtils.PadRight("Terminating...hit a key to quit", '\0', 80), 1, 25, 31);
                    Crt.ReadKey();
                }
            }
            catch (Exception ex)
            {
                if (Debugger.IsAttached)
                {
                    throw;
                }
                FileUtils.FileAppendAllText(Global.GetSafeAbsolutePath("ex.log"), ex.ToString() + Environment.NewLine);
                Door.WriteLn();
                Door.WriteLn($"`4`b**`% ERROR : `2{ex.Message} `4`b**`2");
                Door.Write("Hit a key to quit");
                Door.ReadKey();
            }
            finally
            {
                Door.Shutdown();
            }
        }
示例#3
0
        private void RunScript(string[] script)
        {
            while (_CurrentLineNumber < script.Length)
            {
                string Line        = script[_CurrentLineNumber];
                string LineTrimmed = Line.Trim();

                if (_InCLOSESCRIPT)
                {
                    return;
                }
                else if (_InIFFalse < 999)
                {
                    if (LineTrimmed.StartsWith("@"))
                    {
                        string[] Tokens = LineTrimmed.Split(' ');
                        switch (Tokens[0].ToUpper())
                        {
                        case "@BEGIN":
                            _InBEGINCount += 1;
                            break;

                        case "@END":
                            _InBEGINCount -= 1;
                            if (_InBEGINCount == _InIFFalse)
                            {
                                _InIFFalse = 999;
                            }
                            break;
                        }
                    }
                }
                else
                {
                    if (LineTrimmed.StartsWith("@"))
                    {
                        if (_InBUYMANAGER)
                        {
                            EndBUYMANAGER();
                        }
                        if (_InCHOICE)
                        {
                            EndCHOICE();
                        }
                        if (_InREADFILE != "")
                        {
                            EndREADFILE();
                        }
                        if (_InSELLMANAGER)
                        {
                            EndSELLMANAGER();
                        }
                        if (_InSHOWSCROLL)
                        {
                            EndSHOWSCROLL();
                        }
                        _InBUYMANAGER  = false;
                        _InCHOICE      = false;
                        _InREADFILE    = "";
                        _InSAY         = false;
                        _InSAYBAR      = false;
                        _InSELLMANAGER = false;
                        _InSHOW        = false;
                        _InSHOWLOCAL   = false;
                        _InSHOWSCROLL  = false;
                        _InWRITEFILE   = "";

                        string[] Tokens = LineTrimmed.Split(' ');
                        if (_Commands.ContainsKey(Tokens[0]))
                        {
                            _Commands[Tokens[0]](Tokens);
                        }
                        else
                        {
                            LogMissing(Tokens);
                        }
                    }
                    else
                    {
                        if (_InBUYMANAGER)
                        {
                            _InBUYMANAGEROptions.Add(Line);
                        }
                        else if (_InCHOICE)
                        {
                            _InCHOICEOptions.Add(new RTChoiceOption(Line));
                        }
                        else if (_InDO_ADDLOG)
                        {
                            FileUtils.FileAppendAllText(Global.GetSafeAbsolutePath("LOGNOW.TXT"), RTVariables.TranslateVariables(Line));
                            _InDO_ADDLOG = false;
                        }
                        else if (_InDO_WRITE)
                        {
                            Door.Write(RTVariables.TranslateVariables(Line));
                            _InDO_WRITE = false;
                        }
                        else if (_InFIGHT)
                        {
//                            if ((LineTrimmed <> '') AND NOT(AnsiStartsText(';', LineTrimmed))) then
//begin
//            FInFIGHTLines.Add(Line);
//                            if (FInFIGHTLines.Count = 16) then
//                            begin
//              EndFIGHT;
//                            FInFIGHT:= false;
//                            end;
//                            end;
                        }
                        else if (_InREADFILE != "")
                        {
                            _InREADFILELines.Add(Line);
                        }
                        else if (_InSAY)
                        {
                            // TODO SHould be in TEXT window (but since LORD2 doesn't use @SAY, not a high priority)
                            Door.Write(RTVariables.TranslateVariables(Line));
                        }
                        else if (_InSAYBAR)
                        {
                            EndSAYBAR(Line);
                            _InSAYBAR = false;
                        }
                        else if (_InSELLMANAGER)
                        {
                            _InSELLMANAGEROptions.Add(Line);
                        }
                        else if (_InSHOW)
                        {
                            Door.WriteLn(RTVariables.TranslateVariables(Line));
                        }
                        else if (_InSHOWLOCAL)
                        {
                            Ansi.Write(RTVariables.TranslateVariables(Line) + "\r\n");
                        }
                        else if (_InSHOWSCROLL)
                        {
                            _InSHOWSCROLLLines.Add(RTVariables.TranslateVariables(Line));
                        }
                        else if (_InWRITEFILE != "")
                        {
                            FileUtils.FileAppendAllText(_InWRITEFILE, RTVariables.TranslateVariables(Line) + Environment.NewLine, RMEncoding.Ansi);
                        }
                    }
                }

                _CurrentLineNumber += 1;
            }
        }