Elin Decompiled Documentation EA 23.315 Nightly
Loading...
Searching...
No Matches
DramaValueExpression.cs File Reference

Go to the source code of this file.

Classes

class  DramaValueExpression
 

Functions

 publicramaValueExpression (stringexpression)
 
 publicstaticboolTryParse (stringexpression, outramaValueExpressionvalueExpr)
 
 publicstaticimplicitoperatorramaValueExpression (stringexpr)
 
 publicstaticimplicitoperatorstring (ramaValueExpressionexpr)
 
 publicintCalc (intlhs)
 
float Calc (float lhs)
 
float Diff (float lhs)
 
int Diff (int lhs)
 
float ModOrSet (float lhs)
 
int ModOrSet (int lhs)
 
bool Compare (float lhs)
 
bool Compare (int lhs)
 

Variables

 $
 
RegexOptions. Compiled
 
 publicstringExpression { get
 
 publicstringOp { get
 
 publicstringRhs { get
 

Function Documentation

◆ Calc()

float Calc ( float  lhs)

Definition at line 13 of file DramaValueExpression.cs.

15 {
16 Expression = expression.Trim();
17 Match match = _listSyntaxRegex.Match(Expression);
18 Op = match.Groups["op"].Value;
19 Rhs = match.Groups["number"].Value;
20 }
21
22 public static bool TryParse(string expression, out DramaValueExpression valueExpr)
23 {
24 valueExpr = new DramaValueExpression(expression);

Referenced by Element._WriteNote().

◆ Compare() [1/2]

bool Compare ( float  lhs)

Definition at line 116 of file DramaValueExpression.cs.

117 {
118 return lhs;
119 }
120 string op = Op;
121 if (!(op == "++"))
122 {
123 if (op == "--")
124 {
125 return lhs - 1;
126 }
127 if (!int.TryParse(Rhs, out var result))
128 {
129 return lhs;
130 }
131 switch (Op)
132 {
133 case "+":
134 return lhs + result;
135 case "-":
136 return lhs - result;
137 case "*":
138 case "x":
139 return lhs * result;
140 case "/":
141 return lhs / result;
142 case "=":
143 case "==":
144 return result;
145 case "":
146 return result;
147 default:
148 return lhs;
149 }
150 }
151 return lhs + 1;
152 }

Referenced by ThingContainer.FindStealable(), BuildMenu.RefreshCategory(), and ActEffect.Wish().

◆ Compare() [2/2]

bool Compare ( int  lhs)

Definition at line 154 of file DramaValueExpression.cs.

155 {
156 if (Expression.IsEmpty())
157 {
158 return false;
159 }
160 if (Op == "")
161 {
162 if (float.TryParse(Rhs, out var result))
163 {
164 return Mathf.Approximately(lhs, result);
165 }
166 return false;
167 }
168 if (!float.TryParse(Rhs, out var result2))
169 {
170 return false;
171 }
172 switch (Op)
173 {
174 case ">":
175 return lhs > result2;
176 case "<":
177 return lhs < result2;
178 case "=":
179 case "==":
180 return Mathf.Approximately(lhs, result2);
181 case ">=":
182 return lhs >= result2;
183 case "<=":
184 return lhs <= result2;
185 case "!=":
186 return !Mathf.Approximately(lhs, result2);
187 default:
188 return false;
189 }
190 }

◆ Diff() [1/2]

float Diff ( float  lhs)

Definition at line 26 of file DramaValueExpression.cs.

29 {

◆ Diff() [2/2]

int Diff ( int  lhs)

Definition at line 31 of file DramaValueExpression.cs.

34 {

◆ ModOrSet() [1/2]

float ModOrSet ( float  lhs)

Definition at line 36 of file DramaValueExpression.cs.

39 {
40 if (Expression.IsEmpty())
41 {
42 return lhs;
43 }
44 if (!$"{lhs} {Expression}".TryEvaluateAsCalc(out int result, (object)null))
45 {
46 return lhs;
47 }
48 return result;
49 }
50
51 public float Calc(float lhs)
52 {
53 if (Expression.IsEmpty())
54 {
55 return lhs;
56 }
57 if (!$"{lhs} {Expression}".TryEvaluateAsCalc(out float result, (object)null))
58 {
59 return lhs;
60 }
61 return result;
62 }
63
64 public float Diff(float lhs)
65 {
66 return ModOrSet(lhs) - lhs;
67 }
68
69 public int Diff(int lhs)
70 {
71 return ModOrSet(lhs) - lhs;
72 }
73
74 public float ModOrSet(float lhs)
float Calc(float lhs)
float Diff(float lhs)
float ModOrSet(float lhs)

◆ ModOrSet() [2/2]

int ModOrSet ( int  lhs)

Definition at line 76 of file DramaValueExpression.cs.

77 {
78 return lhs;
79 }
80 string op = Op;
81 if (!(op == "++"))
82 {
83 if (op == "--")
84 {
85 return lhs - 1f;
86 }
87 if (!float.TryParse(Rhs, out var result))
88 {
89 return lhs;
90 }
91 switch (Op)
92 {
93 case "+":
94 return lhs + result;
95 case "-":
96 return lhs - result;
97 case "*":
98 case "x":
99 return lhs * result;
100 case "/":
101 return lhs / result;
102 case "=":
103 case "==":
104 return result;
105 case "":
106 return result;
107 default:
108 return lhs;
109 }
110 }
111 return lhs + 1f;
112 }
113
114 public int ModOrSet(int lhs)

◆ publicintCalc()

_listSyntaxRegex.publicintCalc ( intlhs  )

Definition at line 38 of file DramaValueExpression.cs.

References $.

◆ publicramaValueExpression()

_listSyntaxRegex.publicramaValueExpression ( stringexpression  )

Definition at line 14 of file DramaValueExpression.cs.

15 {
16 Expression = expression.Trim();
17 Match match = _listSyntaxRegex.Match(Expression);
18 Op = match.Groups["op"].Value;
19 Rhs = match.Groups["number"].Value;
20 }

References DramaValueExpression._listSyntaxRegex.

◆ publicstaticboolTryParse()

_listSyntaxRegex.publicstaticboolTryParse ( stringexpression  ,
outramaValueExpressionvalueExpr   
)

Definition at line 22 of file DramaValueExpression.cs.

23 {
24 valueExpr = new DramaValueExpression(expression);
25 return true;
26 }

◆ publicstaticimplicitoperatorramaValueExpression()

_listSyntaxRegex.publicstaticimplicitoperatorramaValueExpression ( stringexpr  )

Definition at line 28 of file DramaValueExpression.cs.

29 {
30 return new DramaValueExpression(expr);
31 }

◆ publicstaticimplicitoperatorstring()

_listSyntaxRegex.publicstaticimplicitoperatorstring ( ramaValueExpressionexpr  )

Definition at line 33 of file DramaValueExpression.cs.

34 {
35 return expr.Expression;
36 }

Variable Documentation

◆ $

$

Definition at line 6 of file DramaValueExpression.cs.

Referenced by publicintCalc().

◆ Compiled

RegexOptions. Compiled

Definition at line 6 of file DramaValueExpression.cs.

◆ publicstringExpression

publicstringExpression { get

Definition at line 8 of file DramaValueExpression.cs.

◆ publicstringOp

publicstringOp { get

Definition at line 10 of file DramaValueExpression.cs.

◆ publicstringRhs

publicstringRhs { get

Definition at line 12 of file DramaValueExpression.cs.