private uint?IfVar() { uint offset = _reader.ReadUInt32(); short value1 = ReadVarOrValue(); ScriptConditional cond = ReadVarOrEnum <ScriptConditional>(); short value2 = ReadVarOrValue(); return(cond.Match(value1, value2) ? offset : null); }
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(); }
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>(); }
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)); } }