Example #1
0
 // Update is called once per frame
 void Update()
 {
     if (Door1.activeSelf == false && Door2.activeSelf == false && Door3.activeSelf == false)
     {
         Door4.SetActive(false);
     }
 }
    IEnumerator OpenLateralDoors()
    {
        yield return(new WaitForSeconds(TimeToPlayTraps));

        Door3.OpenDoor();
        Door4.OpenDoor();
    }
Example #3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Marcher4"/> class.
 /// </summary>
 /// <param name="startDirection">The start direction.</param>
 /// <param name="startX">The start X.</param>
 /// <param name="startY">The start Y.</param>
 /// <remarks></remarks>
 public Marcher4(Door4 startDirection, int startX, int startY)
 {
     Contract.Requires(startDirection.ExactlyOneValueSet());
     Contract.Requires(startX >= 0 && startY >= 0);
     Direction = startDirection;
     X = startX;
     Y = startY;
 }
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.CompareTag("Player") && !activated)
     {
         activated = true;
         controller.TurnOnTrap(TimeToPlayTraps);
         if (Door1 != null)
         {
             Door1.CloseDoor();
             Door2.CloseDoor();
             StartCoroutine(OpenDoors());
         }
         else if (Door3 != null)
         {
             Door3.CloseDoor();
             Door4.CloseDoor();
             StartCoroutine(OpenLateralDoors());
         }
     }
 }
Example #5
0
 /// <summary>
 /// Ermittelt, ob eine Vorwärtsbewegung möglich ist.
 /// </summary>
 /// <param name="door">Die zu testende Tür</param>
 /// <returns><c>true</c>, wenn Vorwärtsbewegung möglich, ansonsten <c>false</c></returns>
 public bool CanMoveForward(Door4 door)
 {
     return door.ContainsDoor(Direction);
 }
Example #6
0
 /// <summary>
 /// Ermittelt, ob eine Rechtsbewegung möglich ist.
 /// </summary>
 /// <param name="door">Die zu testende Tür</param>
 /// <returns><c>true</c>, wenn Rechtsbewegung möglich, ansonsten <c>false</c></returns>
 public bool CanTurnRight(Door4 door)
 {
     switch (Direction)
     {
         case Door4.North:
             return door.ContainsDoor(Door4.East);
         case Door4.South:
             return door.ContainsDoor(Door4.West);
         case Door4.East:
             return door.ContainsDoor(Door4.South);
         case Door4.West:
             return door.ContainsDoor(Door4.North);
         default:
             throw new InvalidOperationException("Ungültiger Zustand: " + Direction);
     }
 }
 public static bool ContainsDoor(this Door4 item, Door4 door)
 {
     return (item & door) == door;
 }
        /// <summary>
        /// Wandelt ein <see cref="Wall4"/>-Array in ein <see cref="Door4"/>-Array um
        /// </summary>
        /// <param name="walls">Die Wände.</param>
        /// <returns>Das <see cref="Door4"/>-Array</returns>
        /// <remarks></remarks>
        public static Door4[,] ToDoorArray(this Wall4[,] walls)
        {
            Contract.Requires(walls != null);
            Contract.Ensures(Contract.Result<Door4[,]>() != null);

            int width = walls.GetLength(0);
            int height = walls.GetLength(1);
            Contract.Assert(width >= 0 && height >= 0);

            Door4[,] doors = new Door4[width, height];
            for (int y=0; y<height; ++y)
            {
                for (int x = 0; x < height; ++x)
                {
                    doors[x, y] = walls[x, y].ToDoor();
                }
            }
            return doors;
        }
Example #9
0
 public DistanceTrackingEventArgs(int x, int y, Door4 currentDirection)
 {
     X = x;
     Y = y;
     CurrentDirection = currentDirection;
 }
Example #10
0
 /// <summary>
 /// Legt fest, dass eine Tür durchschritten wurde
 /// </summary>
 /// <param name="set">Das Lookup-Set</param>
 /// <param name="room">Der Raum</param>
 /// <param name="direction">Die Richtung</param>
 private static void SetBeenThere(HashSet<Tuple<IRoom4, Door4>> set, IRoom4 room, Door4 direction)
 {
     Contract.Requires(set != null);
     Contract.Requires(room != null);
     Contract.Requires(direction.ExactlyOneValueSet());
     set.Add(new Tuple<IRoom4, Door4>(room, direction));
 }
Example #11
0
 /// <summary>
 /// Ermittelt, ob eine Tür bereits durchschritten wurde
 /// </summary>
 /// <param name="set">Das Lookup-Set</param>
 /// <param name="room">Der Raum</param>
 /// <param name="direction">Die Richtung</param>
 /// <returns><c>true</c>, wenn der angegebene Raum bereits durch diese Tür verlassen wurde, ansonsten <c>false</c></returns>
 private static bool BeenThere(HashSet<Tuple<IRoom4, Door4>> set, IRoom4 room, Door4 direction)
 {
     Contract.Requires(set != null);
     Contract.Requires(room != null);
     Contract.Requires(direction.ExactlyOneValueSet());
     return set.Contains(new Tuple<IRoom4, Door4>(room, direction));
 }