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(); } }
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(); } }
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; } }