-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add runtime expression types for rich presence macros
- Loading branch information
Showing
15 changed files
with
424 additions
and
343 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
46 changes: 46 additions & 0 deletions
46
Source/Parser/Expressions/Trigger/RichPresenceLookupExpression.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
using System.Text; | ||
|
||
namespace RATools.Parser.Expressions.Trigger | ||
{ | ||
internal class RichPresenceLookupExpression : RichPresenceMacroExpressionBase | ||
{ | ||
public RichPresenceLookupExpression(StringConstantExpression name, ExpressionBase parameter) | ||
: base(name, parameter) | ||
{ | ||
} | ||
|
||
public override string FunctionName { get { return "rich_presence_lookup"; } } | ||
|
||
public DictionaryExpression Items { get; set; } | ||
|
||
public StringConstantExpression Fallback { get; set; } | ||
|
||
protected override bool Equals(ExpressionBase obj) | ||
{ | ||
var that = obj as RichPresenceLookupExpression; | ||
return (that != null && that.Name == Name && that.Parameter == Parameter && that.Fallback == Fallback && that.Items == Items); | ||
} | ||
|
||
internal override void AppendString(StringBuilder builder) | ||
{ | ||
builder.Append("rich_presence_lookup("); | ||
Name.AppendString(builder); | ||
builder.Append(", "); | ||
Parameter.AppendString(builder); | ||
builder.Append(", { }"); | ||
|
||
if (Fallback != null && Fallback.Value != "") | ||
{ | ||
builder.Append(", "); | ||
Fallback.AppendString(builder); | ||
} | ||
|
||
builder.Append(')'); | ||
} | ||
|
||
public override ErrorExpression Attach(RichPresenceBuilder builder) | ||
{ | ||
return builder.AddLookupField(this, Name, Items, Fallback); | ||
} | ||
} | ||
} |
20 changes: 20 additions & 0 deletions
20
Source/Parser/Expressions/Trigger/RichPresenceMacroExpressionBase.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
namespace RATools.Parser.Expressions.Trigger | ||
{ | ||
internal abstract class RichPresenceMacroExpressionBase : ExpressionBase | ||
{ | ||
protected RichPresenceMacroExpressionBase(StringConstantExpression name, ExpressionBase parameter) | ||
: base(ExpressionType.RichPresenceMacro) | ||
{ | ||
Name = name; | ||
Parameter = parameter; | ||
} | ||
|
||
public abstract string FunctionName { get; } | ||
|
||
public StringConstantExpression Name { get; private set; } | ||
|
||
public ExpressionBase Parameter { get; private set; } | ||
|
||
public abstract ErrorExpression Attach(RichPresenceBuilder builder); | ||
} | ||
} |
88 changes: 88 additions & 0 deletions
88
Source/Parser/Expressions/Trigger/RichPresenceValueExpression.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
using RATools.Data; | ||
using System.Text; | ||
|
||
namespace RATools.Parser.Expressions.Trigger | ||
{ | ||
internal class RichPresenceValueExpression : RichPresenceMacroExpressionBase | ||
{ | ||
public RichPresenceValueExpression(StringConstantExpression name, ExpressionBase parameter) | ||
: base(name, parameter) | ||
{ | ||
} | ||
|
||
public override string FunctionName { get { return "rich_presence_value"; } } | ||
|
||
public ValueFormat Format { get; set; } | ||
|
||
public static ValueFormat ParseFormat(string format) | ||
{ | ||
var valueFormat = Leaderboard.ParseFormat(format); | ||
if (valueFormat == ValueFormat.None) | ||
{ | ||
if (format == "ASCIICHAR") | ||
valueFormat = ValueFormat.ASCIIChar; | ||
else if (format == "UNICODECHAR") | ||
valueFormat = ValueFormat.UnicodeChar; | ||
} | ||
return valueFormat; | ||
} | ||
|
||
public static string GetFormatString(ValueFormat format) | ||
{ | ||
switch (format) | ||
{ | ||
case ValueFormat.ASCIIChar: | ||
return "ASCIICHAR"; | ||
|
||
case ValueFormat.UnicodeChar: | ||
return "UNICODECHAR"; | ||
|
||
default: | ||
return Leaderboard.GetFormatString(format); | ||
} | ||
} | ||
|
||
protected override bool Equals(ExpressionBase obj) | ||
{ | ||
var that = obj as RichPresenceValueExpression; | ||
return (that != null && that.Format == Format && that.Name == Name && that.Parameter == Parameter); | ||
} | ||
|
||
internal override void AppendString(StringBuilder builder) | ||
{ | ||
builder.Append("rich_presence_value("); | ||
Name.AppendString(builder); | ||
builder.Append(", "); | ||
Parameter.AppendString(builder); | ||
|
||
if (Format != ValueFormat.Value) | ||
builder.AppendFormat(", \"{0}\"", GetFormatString(Format)); | ||
|
||
builder.Append(')'); | ||
} | ||
|
||
public override ErrorExpression Attach(RichPresenceBuilder builder) | ||
{ | ||
return builder.AddValueField(this, Name, Format); | ||
} | ||
} | ||
|
||
internal class RichPresenceMacroExpression : RichPresenceValueExpression | ||
{ | ||
public RichPresenceMacroExpression(StringConstantExpression name, ExpressionBase parameter) | ||
: base(name, parameter) | ||
{ | ||
} | ||
|
||
public override string FunctionName { get { return "rich_presence_macro"; } } | ||
|
||
internal override void AppendString(StringBuilder builder) | ||
{ | ||
builder.Append("rich_presence_macro("); | ||
Name.AppendString(builder); | ||
builder.Append(", "); | ||
Parameter.AppendString(builder); | ||
builder.Append(')'); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.