private uint?IfVar()
        {
            uint              offset = _reader.ReadUInt32();
            short             value1 = ReadVarOrValue();
            ScriptConditional cond   = ReadVarOrEnum <ScriptConditional>();
            short             value2 = ReadVarOrValue();

            return(cond.Match(value1, value2) ? offset : null);
        }
Exemple #2
0
                public ScriptEvent(EndianBinaryReader r)
                {
                    X         = r.ReadInt32();
                    Y         = r.ReadInt32();
                    Elevation = r.ReadByte();

                    Var            = r.ReadEnum <Var>();
                    VarValue       = r.ReadInt16();
                    VarConditional = r.ReadEnum <ScriptConditional>();
                    Script         = r.ReadStringNullTerminated();
                }
Exemple #3
0
                public ScriptEvent(JToken j)
                {
                    X         = j[nameof(X)].Value <int>();
                    Y         = j[nameof(Y)].Value <int>();
                    Elevation = j[nameof(Elevation)].Value <byte>();

                    Var            = j[nameof(Var)].ReadEnumValue <Var>();
                    VarValue       = j[nameof(VarValue)].Value <short>();
                    VarConditional = j[nameof(VarConditional)].ReadEnumValue <ScriptConditional>();
                    Script         = j[nameof(Script)].Value <string>();
                }
Exemple #4
0
        public static bool Match(this ScriptConditional cond, long value1, long value2)
        {
            switch (cond)
            {
            case ScriptConditional.Equal: return(value1 == value2);

            case ScriptConditional.GreaterEqual: return(value1 >= value2);

            case ScriptConditional.LessEqual: return(value1 <= value2);

            case ScriptConditional.NotEqual: return(value1 != value2);

            case ScriptConditional.Greater: return(value1 > value2);

            case ScriptConditional.Less: return(value1 < value2);

            default: throw new ArgumentOutOfRangeException(nameof(cond));
            }
        }