private static Script CreateScript(int switchType, int switchColor, VariableLookup lookup) { switch (switchColor) { case ZeldaStates.SwitchRed: return(ZeldaScripts.CreateRedPiston(switchType, lookup)); case ZeldaStates.SwitchBlue: return(ZeldaScripts.CreateBluePiston(switchType, lookup)); } Debug.Fail(); return(IdentityScript.Default); }
public State ToState(VariableLookup lookup) { var stateVariables = new int[lookup.NumVariables]; foreach (var variable in variables) { var identifier = lookup.Query(variable.Key); var idx = identifier.Id; stateVariables[idx] = variable.Value; } return(new State(stateVariables)); }
public void HashCodeEqualsByContent() { var lookup = new VariableLookup(); lookup.Resolve("a"); lookup.Resolve("b"); lookup.Resolve("c"); lookup.Resolve("x"); var variables = CreateVariables3(); State a = CreateVariables1().ToState(lookup); State b = CreateVariables2().ToState(lookup); State x = variables.ToState(lookup); State y = variables.ToState(lookup); State z = CreateVariables3().ToState(lookup); // self equality Assert.AreNotSame(x, y); Assert.AreNotSame(x, z); Assert.AreNotSame(y, z); Assert.AreEqual(x.GetHashCode(), x.GetHashCode()); Assert.AreEqual(y.GetHashCode(), y.GetHashCode()); Assert.AreEqual(z.GetHashCode(), z.GetHashCode()); // hash equality by content Assert.AreEqual(x.GetHashCode(), y.GetHashCode()); Assert.AreEqual(y.GetHashCode(), x.GetHashCode()); Assert.AreEqual(x.GetHashCode(), z.GetHashCode()); Assert.AreEqual(z.GetHashCode(), x.GetHashCode()); Assert.AreEqual(y.GetHashCode(), z.GetHashCode()); Assert.AreEqual(z.GetHashCode(), y.GetHashCode()); // more hash equality by content Assert.AreNotSame(x, a); Assert.AreNotSame(x, b); Assert.AreNotEqual(x.GetHashCode(), a.GetHashCode()); Assert.AreNotEqual(a.GetHashCode(), x.GetHashCode()); Assert.AreNotEqual(x.GetHashCode(), b.GetHashCode()); Assert.AreNotEqual(b.GetHashCode(), x.GetHashCode()); }
public void EqualsByContent() { var lookup = new VariableLookup(); lookup.Resolve("a"); lookup.Resolve("b"); lookup.Resolve("c"); lookup.Resolve("x"); var variables = CreateVariables3(); State a = CreateVariables1().ToState(lookup); State b = CreateVariables2().ToState(lookup); State x = variables.ToState(lookup); State y = variables.ToState(lookup); State z = CreateVariables3().ToState(lookup); // self equality Assert.AreNotSame(x, y); Assert.AreNotSame(x, z); Assert.AreNotSame(y, z); Assert.AreEqual(x, x); Assert.AreEqual(y, y); Assert.AreEqual(z, z); // equality by content Assert.AreEqual(x, y); Assert.AreEqual(y, x); Assert.AreEqual(x, z); Assert.AreEqual(z, x); Assert.AreEqual(y, z); Assert.AreEqual(z, y); // more equality by content Assert.AreNotSame(x, a); Assert.AreNotSame(x, b); Assert.AreNotEqual(x, a); Assert.AreNotEqual(a, x); Assert.AreNotEqual(x, b); Assert.AreNotEqual(b, x); }
public DoorScript(VariableIdentifier keyIdentifier, VariableLookup lookup, string doorName) { this.keyIdentifier = keyIdentifier; this.doorStateIdentifier = lookup.Unique("door state"); this.doorName = doorName; }
public static ObstacleScript CreateObstacle(int type, VariableLookup lookup) { return(new ObstacleScript(lookup.Resolve(tools[type]), obstacles[type])); }
public static ItemScript CreateTool(int type, VariableLookup lookup) { return(new ItemScript(lookup.Resolve(tools[type]), lookup)); }
public static ColorPistonScript CreateBluePiston(int type, VariableLookup lookup) { return(new ColorPistonScript(lookup.Resolve(switches[type]), ZeldaStates.SwitchBlue, bluePistons[type])); }
public static ColorSwitchScript CreateColorSwitch(int type, VariableLookup lookup) { return(new ColorSwitchScript(lookup.Resolve(switches[type]))); }
public static DoorScript CreateDoor(int type, VariableLookup lookup) { return(new DoorScript(lookup.Resolve(keys[type]), lookup, doors[type])); }
public ItemScript(VariableIdentifier itemIdentifier, VariableLookup lookup) { this.itemIdentifier = itemIdentifier; this.itemStateIdentifier = lookup.Unique("item state"); }