Example #1
0
        public virtual void Clear()
        {
            ListedNameList.Clear();

            NameList.Clear();

            Index = -1;

            Buf.Clear();

            Buf01.Clear();

            EditRec = false;

            EditField = false;

            ShowDesc = false;

            FieldDesc = FieldDesc.None;

            BufSize = 0;

            FillChar = '\0';

            Offset = 0;

            ErrorFieldName = null;

            ErrorMessage = "";

            RecordType = null;

            EditRecord = null;

            NewRecordUid = 0;

            FullDetail = false;

            ResolveEffects = false;

            LookupMsg = false;

            NumberFields = false;

            ExcludeROFields = false;

            ListNum = 1;
        }
Example #2
0
        /// <summary></summary>
        /// <param name="fieldName"></param>
        /// <returns></returns>
        public virtual string BuildValue(string fieldName)
        {
            Debug.Assert(!string.IsNullOrWhiteSpace(fieldName));

            var result = "";

            var methodName = string.Format("BuildValue{0}", fieldName);

            var methodInfo = GetType().GetMethod(methodName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);

            if (methodInfo != null)
            {
                Buf01.Clear();

                result = (string)methodInfo.Invoke(this, null);
            }

            return(result);
        }
Example #3
0
        /// <summary></summary>
        protected virtual void ListUid()
        {
            if (FullDetail)
            {
                if (!ExcludeROFields)
                {
                    var listNum = NumberFields ? ListNum++ : 0;

                    gOut.Write("{0}{1}{2}", Environment.NewLine, gEngine.BuildPrompt(27, '.', listNum, GetPrintedName("Uid"), null), Record.Uid);
                }
            }
            else
            {
                Buf.SetFormat("{0,3}. {1}", Record.Uid, Record.Question);

                gEngine.WordWrap(Buf.ToString(), Buf01);

                var k = Buf01.IndexOf(Environment.NewLine);

                if (k >= 0)
                {
                    Buf01.Length = k--;

                    if (k >= 0)
                    {
                        Buf01[k--] = '.';
                    }

                    if (k >= 0)
                    {
                        Buf01[k--] = '.';
                    }

                    if (k >= 0)
                    {
                        Buf01[k--] = '.';
                    }
                }

                gOut.Write("{0}{1}", Environment.NewLine, Buf01);
            }
        }
Example #4
0
        public virtual void PrintFieldDesc(string fieldName)
        {
            Debug.Assert(!string.IsNullOrWhiteSpace(fieldName));

            var methodName = string.Format("PrintDesc{0}", fieldName);

            var methodInfo = GetType().GetMethod(methodName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);

            if (methodInfo != null)
            {
                Buf01.Clear();

                methodInfo.Invoke(this, null);

                if (Buf01.Length > 0)
                {
                    gOut.Write("{0}", Buf01);
                }
            }
        }
Example #5
0
        /// <summary></summary>
        protected virtual void PrintDescDirsElement()
        {
            var i = Index;

            var fullDesc = "Enter a connection value for the direction.";

            var fullDesc01 = "Enter a connection value for each direction the player can move in.";

            var briefDesc = "-999=Return to Main Hall; (LT 0)=Special (user programmed) event; 0=No connection; 1-1000=Room uid; (1000 + N)=Door with artifact uid N";

            if ((EditRec && EditField) || i == 1)
            {
                if (FieldDesc == FieldDesc.Full)
                {
                    Buf01.AppendFormat("{0}{1}{0}{0}{2}{0}", Environment.NewLine, (EditRec && EditField) ? fullDesc : fullDesc01, briefDesc);
                }
                else if (FieldDesc == FieldDesc.Brief)
                {
                    Buf01.AppendPrint("{0}", briefDesc);
                }
            }
        }
Example #6
0
        public virtual void Write(string format, params object[] arg)
        {
            Debug.Assert(format != null);

            Buf.SetFormat(format, arg);

            if (ResolveUidMacros && Globals?.Engine != null)
            {
                Buf01.Clear();

                var rc = Globals.Engine.ResolveUidMacros(Buf.ToString(), Buf01, true, true);

                Debug.Assert(Globals.Engine.IsSuccess(rc));

                Buf.SetFormat("{0}", Buf01);
            }

            if (PunctSpaceCode != PunctSpaceCode.None)
            {
                Buf.SetFormat("{0}", PunctSpaceCode == PunctSpaceCode.Single ? SingleSpaceRegex.Replace(Buf.ToString(), @"$1 $3") : DoubleSpaceRegex.Replace(Buf.ToString(), @"$1  $3"));
            }

            if (WordWrap && Globals?.Engine != null)
            {
                Globals.Engine.WordWrap(Buf.ToString(), Buf);
            }

            if (SuppressNewLines)
            {
                while (Buf.IndexOf(ThreeNewLines) >= 0)
                {
                    Buf.Replace(ThreeNewLines, TwoNewLines);
                }

                NumNewLines += (Buf.StartsWith(TwoNewLines) ? 2 : Buf.StartsWith(Environment.NewLine) ? 1 : 0);

                while (NumNewLines > 2 && Buf.StartsWith(Environment.NewLine))
                {
                    Buf.Remove(0, Environment.NewLine.Length);

                    NumNewLines--;
                }

                var s = Buf.ToString();

                if (Buf.Length > 0 && !string.Equals(s, Environment.NewLine) && !string.Equals(s, TwoNewLines))
                {
                    NumNewLines = Buf.EndsWith(TwoNewLines) ? 2 : Buf.EndsWith(Environment.NewLine) ? 1 : 0;
                }
            }

            if (EnableOutput)
            {
                try
                {
                    App.OutputBufMutex.WaitOne();

                    EnforceOutputBufMaxSize();

                    if (Stdout)
                    {
                        App.OutputBuf.Append(Buf);
                    }
                    else
                    {
                        App.OutputBuf.Append(Buf);
                    }

                    RefreshOutputText();
                }
                catch (Exception ex)
                {
                    // do something
                }
                finally
                {
                    App.OutputBufMutex.ReleaseMutex();
                }
            }
        }
Example #7
0
        public virtual void Write(string format, params object[] arg)
        {
            Debug.Assert(format != null);

            Buf.SetFormat(format, arg);

            if (ResolveUidMacros && Globals?.Engine != null)
            {
                Buf01.Clear();

                var rc = Globals.Engine.ResolveUidMacros(Buf.ToString(), Buf01, true, true);

                Debug.Assert(Globals.Engine.IsSuccess(rc));

                Buf.SetFormat("{0}", Buf01);
            }

            if (PunctSpaceCode != PunctSpaceCode.None)
            {
                Buf.SetFormat("{0}", PunctSpaceCode == PunctSpaceCode.Single ? SingleSpaceRegex.Replace(Buf.ToString(), @"$1 $3") : DoubleSpaceRegex.Replace(Buf.ToString(), @"$1  $3"));
            }

            if (WordWrap && Globals?.Engine != null)
            {
                Globals.Engine.WordWrap(Buf.ToString(), Buf);
            }

            if (SuppressNewLines)
            {
                while (Buf.IndexOf(ThreeNewLines) >= 0)
                {
                    Buf.Replace(ThreeNewLines, TwoNewLines);
                }

                NumNewLines += (Buf.StartsWith(TwoNewLines) ? 2 : Buf.StartsWith(Environment.NewLine) ? 1 : 0);

                while (NumNewLines > 2 && Buf.StartsWith(Environment.NewLine))
                {
                    Buf.Remove(0, Environment.NewLine.Length);

                    NumNewLines--;
                }

                var s = Buf.ToString();

                if (Buf.Length > 0 && !s.Equals(Environment.NewLine) && !s.Equals(TwoNewLines))
                {
                    NumNewLines = Buf.EndsWith(TwoNewLines) ? 2 : Buf.EndsWith(Environment.NewLine) ? 1 : 0;
                }
            }

            if (EnableOutput)
            {
                if (Stdout)
                {
                    Console.Out.Write("{0}", Buf);
                }
                else
                {
                    Console.Error.Write("{0}", Buf);
                }
            }
        }