Newer
Older
TheVengeance-Project-IADE-Unity2D / Assets / Ink / InkLibs / InkCompiler / ParsedHierarchy / StringExpression.cs
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace Ink.Parsed
  5. {
  6. public class StringExpression : Parsed.Expression
  7. {
  8. public bool isSingleString {
  9. get {
  10. if (content.Count != 1)
  11. return false;
  12. var c = content [0];
  13. if (!(c is Text))
  14. return false;
  15. return true;
  16. }
  17. }
  18. public StringExpression (List<Parsed.Object> content)
  19. {
  20. AddContent (content);
  21. }
  22. public override void GenerateIntoContainer (Runtime.Container container)
  23. {
  24. container.AddContent (Runtime.ControlCommand.BeginString());
  25. foreach (var c in content) {
  26. container.AddContent (c.runtimeObject);
  27. }
  28. container.AddContent (Runtime.ControlCommand.EndString());
  29. }
  30. public override string ToString ()
  31. {
  32. var sb = new StringBuilder ();
  33. foreach (var c in content) {
  34. sb.Append (c.ToString ());
  35. }
  36. return sb.ToString ();
  37. }
  38. // Equals override necessary in order to check for CONST multiple definition equality
  39. public override bool Equals (object obj)
  40. {
  41. var otherStr = obj as StringExpression;
  42. if (otherStr == null) return false;
  43. // Can only compare direct equality on single strings rather than
  44. // complex string expressions that contain dynamic logic
  45. if (!this.isSingleString || !otherStr.isSingleString) {
  46. return false;
  47. }
  48. var thisTxt = this.ToString ();
  49. var otherTxt = otherStr.ToString ();
  50. return thisTxt.Equals (otherTxt);
  51. }
  52. public override int GetHashCode ()
  53. {
  54. return this.ToString ().GetHashCode ();
  55. }
  56. }
  57. }