- Timestamp:
- 06/14/13 11:03:13 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/Robocode/HeuristicLab.Problems.Robocode/Symbols/Void Methods/Fire.cs
r9565 r9630 3 3 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 4 4 5 namespace HeuristicLab.Problems.Robocode 6 { 7 [StorableClass] 8 public class Fire : CodeNode 9 { 10 public override int MinimumArity { get { return 1; } } 11 public override int MaximumArity { get { return 1; } } 5 namespace HeuristicLab.Problems.Robocode { 6 [StorableClass] 7 public class Fire : CodeNode { 8 public override int MinimumArity { get { return 1; } } 9 public override int MaximumArity { get { return 1; } } 12 10 13 14 11 [Storable] 12 public override string Prefix { get; set; } 15 13 16 17 14 [Storable] 15 public override string Suffix { get; set; } 18 16 19 [StorableConstructor] 20 private Fire(bool deserializing) : base(deserializing) { } 21 private Fire(Fire original, Cloner cloner) 22 : base(original, cloner) 23 { 24 this.Prefix = "setFire("; 25 this.Suffix = ");"; 26 } 17 [StorableConstructor] 18 private Fire(bool deserializing) : base(deserializing) { } 19 private Fire(Fire original, Cloner cloner) 20 : base(original, cloner) { } 27 21 28 public Fire() 29 : base("Fire", "Immediately fires a bullet.") 30 { 31 this.Prefix = "setFire("; 32 this.Suffix = ")"; 33 } 22 public Fire() 23 : base("Fire", "Immediately fires a bullet.") { 24 this.Prefix = "setFire("; 25 this.Suffix = ");"; 26 } 34 27 35 public override IDeepCloneable Clone(Cloner cloner) 36 { 37 return new Fire(this, cloner); 38 } 28 public override IDeepCloneable Clone(Cloner cloner) { 29 return new Fire(this, cloner); 30 } 39 31 40 public override string Interpret(ISymbolicExpressionTreeNode node, System.Collections.Generic.IEnumerable<ISymbolicExpressionTreeNode> children) 41 { 42 var enumerator = children.GetEnumerator(); 32 public override string Interpret(ISymbolicExpressionTreeNode node, System.Collections.Generic.IEnumerable<ISymbolicExpressionTreeNode> children) { 33 var enumerator = children.GetEnumerator(); 43 34 44 45 35 if (!enumerator.MoveNext()) throw new System.Exception("Fire was not given a child."); 36 var symbol = enumerator.Current.Symbol; 46 37 47 48 49 38 if (!(symbol is ShotPower)) 39 throw new System.Exception("Fire was given a child of type " + symbol.GetType().ToString() + 40 ". The expected child must be of type " + typeof(ShotPower).ToString() + "."); 50 41 51 52 42 string result = ((CodeNode)symbol).Interpret(enumerator.Current, enumerator.Current.Subtrees); 43 if (enumerator.MoveNext()) throw new System.Exception("Fire was given more than one child."); 53 44 54 return this.Prefix + result + this.Suffix; 55 } 45 return this.Prefix + result + this.Suffix; 56 46 } 47 } 57 48 }
Note: See TracChangeset
for help on using the changeset viewer.