Exemplo n.º 1
0
        private void OnRoomTraversedEvent(RoomTraversedEventArgs args)
        {
            if (args.CurrentRoom.gameObject != gameObject)
            {
                return;
            }

            _ending = true;
            SceneFaderBehaviour.Instance.FadeInto("EndingCutscene");
        }
        private void OnRoomTraversedEvent(RoomTraversedEventArgs args)
        {
            if (args.CurrentRoom.gameObject != transform.parent.gameObject)
            {
                return;
            }

            int targetHealth = _playerHealthBehaviour.MaxHealth - IncreaseValue;

            if (_playerHealthBehaviour.Value != targetHealth)
            {
                _playerHealthBehaviour.Value = targetHealth;
            }
        }
        /// <summary>
        /// Updates the minimap when the player traverses between rooms, this
        /// is called by the EventManager when RoomTraversedEventArgs is
        /// emitted.
        /// </summary>
        private void OnRoomTraversed(RoomTraversedEventArgs eventArgs)
        {
            RoomConnectionBehaviour roomConnectionBehaviour = eventArgs.CurrentRoom;

            GameObject roomNode = HasRoomNode(roomConnectionBehaviour)
                                ? GetRoomNode(roomConnectionBehaviour)
                                : AddRoomNode(roomConnectionBehaviour);

            foreach (DoorConnectionBehaviour doorConnectionBehaviour in eventArgs.CurrentRoom.Doors)
            {
                RoomConnectionBehaviour connectingRoomConnectionBehaviour = doorConnectionBehaviour.ConnectingDoor.GetComponentsInParent <RoomConnectionBehaviour>(true)[0];

                // add connecting room node
                if (!HasRoomNode(connectingRoomConnectionBehaviour))
                {
                    AddRoomNode(connectingRoomConnectionBehaviour);
                }

                // add line between room node and connecting room node
                if (!HasLineNode(roomConnectionBehaviour, connectingRoomConnectionBehaviour))
                {
                    AddLineNode(roomConnectionBehaviour, connectingRoomConnectionBehaviour);
                }
            }

            // update room node colors
            if (_currentRoomNode != null)
            {
                bool startingRoom = _currentRoomNode.transform.localPosition == Vector3.zero;
                _currentRoomNode.GetComponent <SpriteRenderer>().color = startingRoom ? StartingRoomColor : ExploredRoomColor;
            }
            _currentRoomNode = roomNode;
            _currentRoomNode.GetComponent <SpriteRenderer>().color = CurrentRoomColor;

            // update minimap target position
            _targetOffset.Value = new Vector3
            {
                x = -eventArgs.CurrentRoom.Position.x * _roomOffset.localScale.x * _spacing,
                y = -eventArgs.CurrentRoom.Position.y * _roomOffset.localScale.y * _spacing,
                z = _roomOffset.position.z,
            };
        }
        private void OnRoomTraversed(RoomTraversedEventArgs eventArgs)
        {
            bool onceShut = false;
            RoomClearBehaviour roomClearBehaviour =
                eventArgs.CurrentRoom.GetComponent <RoomClearBehaviour>();

            if (roomClearBehaviour._enemyCount == 0)
            {
                return;
            }

            foreach (DoorConnectionBehaviour doorConnectionBehaviour in roomClearBehaviour._doorConnectionBehaviours)
            {
                if (doorConnectionBehaviour.IsOpen)
                {
                    doorConnectionBehaviour.Close();
                    if (!onceShut)
                    {
                        AudioManager.Play(DoorLock, AudioCategory.Effect);
                        onceShut = true;
                    }
                }
            }
        }
Exemplo n.º 5
0
        private void OnRoomTraversed(RoomTraversedEventArgs eventArgs)
        {
            int id = eventArgs.CurrentRoom.gameObject.GetInstanceID();

            _visitedRooms.Add(id);
        }