Beispiel #1
0
        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);
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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());
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
 public DoorScript(VariableIdentifier keyIdentifier, VariableLookup lookup, string doorName)
 {
     this.keyIdentifier       = keyIdentifier;
     this.doorStateIdentifier = lookup.Unique("door state");
     this.doorName            = doorName;
 }
Beispiel #6
0
 public static ObstacleScript CreateObstacle(int type, VariableLookup lookup)
 {
     return(new ObstacleScript(lookup.Resolve(tools[type]), obstacles[type]));
 }
Beispiel #7
0
 public static ItemScript CreateTool(int type, VariableLookup lookup)
 {
     return(new ItemScript(lookup.Resolve(tools[type]), lookup));
 }
Beispiel #8
0
 public static ColorPistonScript CreateBluePiston(int type, VariableLookup lookup)
 {
     return(new ColorPistonScript(lookup.Resolve(switches[type]), ZeldaStates.SwitchBlue, bluePistons[type]));
 }
Beispiel #9
0
 public static ColorSwitchScript CreateColorSwitch(int type, VariableLookup lookup)
 {
     return(new ColorSwitchScript(lookup.Resolve(switches[type])));
 }
Beispiel #10
0
 public static DoorScript CreateDoor(int type, VariableLookup lookup)
 {
     return(new DoorScript(lookup.Resolve(keys[type]), lookup, doors[type]));
 }
Beispiel #11
0
 public ItemScript(VariableIdentifier itemIdentifier, VariableLookup lookup)
 {
     this.itemIdentifier      = itemIdentifier;
     this.itemStateIdentifier = lookup.Unique("item state");
 }