Beispiel #1
0
        private void InteractDoor(Vector3 currentPosition, Vector3 direction)
        {
            // Make sure there is a door controller
            Vector3Int position = Vector3Int.RoundToInt(currentPosition + direction);

            DoorController doorController = matrix.GetFirst <DoorController>(position);

            if (!doorController)
            {
                doorController = matrix.GetFirst <DoorController>(Vector3Int.RoundToInt(currentPosition));

                if (doorController)
                {
                    RegisterDoor registerDoor = doorController.GetComponent <RegisterDoor>();
                    if (registerDoor.IsPassable(position))
                    {
                        doorController = null;
                    }
                }
            }

            // Attempt to open door
            if (doorController != null && allowInput)
            {
                pna.CmdCheckDoorPermissions(doorController.gameObject, gameObject);

                allowInput = false;
                StartCoroutine(DoorInputCoolDown());
            }
        }
Beispiel #2
0
        /// Cross-matrix now! uses world positions
        private void InteractDoor(Vector3Int currentPos, Vector3Int targetPos)
        {
            // Make sure there is a door controller
            DoorTrigger door = MatrixManager.Instance.GetFirst <DoorTrigger>(targetPos);

            if (!door)
            {
                door = MatrixManager.Instance.GetFirst <DoorTrigger>(Vector3Int.RoundToInt(currentPos));

                if (door)
                {
                    RegisterDoor registerDoor = door.GetComponent <RegisterDoor>();

                    Vector3Int localPos = MatrixManager.Instance.WorldToLocalInt(targetPos, matrix);
                    if (registerDoor.IsPassable(localPos))
                    {
                        door = null;
                    }
                }
            }

            // Attempt to open door
            if (door != null && allowInput)
            {
                door.Interact(gameObject, TransformState.HiddenPos);
            }
        }
Beispiel #3
0
        /// Cross-matrix now! uses world positions
        private void InteractDoor(Vector3Int currentPos, Vector3Int targetPos)
        {
            // Make sure there is a door controller
            DoorController doorController = MatrixManager.Instance.GetFirst <DoorController>(targetPos);

            if (!doorController)
            {
                doorController = MatrixManager.Instance.GetFirst <DoorController>(Vector3Int.RoundToInt(currentPos));

                if (doorController)
                {
                    RegisterDoor registerDoor = doorController.GetComponent <RegisterDoor>();

                    Vector3Int localPos = MatrixManager.Instance.WorldToLocalInt(targetPos, matrix);
                    if (registerDoor.IsPassable(localPos))
                    {
                        doorController = null;
                    }
                }
            }

            // Attempt to open door
            if (doorController != null && allowInput)
            {
                pna.CmdCheckDoorPermissions(doorController.gameObject, gameObject);

                allowInput = false;
                StartCoroutine(DoorInputCoolDown());
            }
        }
    private void EnsureInit()
    {
        if (registerTile != null)
        {
            return;
        }
        if (!isWindowedDoor)
        {
            closedLayer = LayerMask.NameToLayer("Door Closed");
        }
        else
        {
            closedLayer = LayerMask.NameToLayer("Windows");
        }
        spriteRenderer     = GetComponentInChildren <SpriteRenderer>();
        closedSortingLayer = SortingLayer.NameToID("Doors Closed");
        openSortingLayer   = SortingLayer.NameToID("Doors Open");
        openLayer          = LayerMask.NameToLayer("Door Open");
        registerTile       = gameObject.GetComponent <RegisterDoor>();
        tileChangeManager  = GetComponentInParent <TileChangeManager>();

        hackingProcess = GetComponent <HackingProcessBase>();
        isHackable     = hackingProcess != null;
        hackingLoaded  = false;
    }
Beispiel #5
0
    private void Awake()
    {
        animator     = gameObject.GetComponent <Animator>();
        registerTile = gameObject.GetComponent <RegisterDoor>();

        closedLayer        = LayerMask.NameToLayer("Door Closed");
        closedSortingLayer = SortingLayer.NameToID("Doors Open");
        openLayer          = LayerMask.NameToLayer("Door Open");
        openSortingLayer   = SortingLayer.NameToID("Doors Closed");
        SetLayer(openLayer, openSortingLayer);
    }
Beispiel #6
0
    private void Awake()
    {
        // Initialize animator and Register Door components
        animator     = gameObject.GetComponent <Animator>();
        registerTile = gameObject.GetComponent <RegisterDoor>();

        closedLayer        = LayerMask.NameToLayer("Door Closed");
        closedSortingLayer = SortingLayer.NameToID("Doors Open");
        openLayer          = LayerMask.NameToLayer("Door Open");
        openSortingLayer   = SortingLayer.NameToID("Doors Closed");
    }
Beispiel #7
0
        public override void OnStartClient()
        {
            base.OnStartClient();
            if (!isWindowedDoor)
            {
                closedLayer = LayerMask.NameToLayer("Door Closed");
            }
            else
            {
                closedLayer = LayerMask.NameToLayer("Windows");
            }
            spriteRenderer     = GetComponentInChildren <SpriteRenderer>();
            closedSortingLayer = SortingLayer.NameToID("Doors Closed");
            openSortingLayer   = SortingLayer.NameToID("Doors Open");
            openLayer          = LayerMask.NameToLayer("Door Open");


            registerTile = gameObject.GetComponent <RegisterDoor>();
            matrix       = Matrix.GetMatrix(this);

            //            var rmt = GetComponent<RestrictiveMoveTile>();
            //            if (rmt != null)
            //            {
            //                var dooranim = (WinDoorAnimator)GetComponent<DoorAnimator>();
            //                if (dooranim != null)
            //                {
            //                    rmt.setAll(false);
            //                    switch ((int)dooranim.direction)
            //                    {
            //                        case 0:
            //                            rmt.setSouth(true);
            //                            break;
            //                        case 1:
            //                            rmt.setNorth(true);
            //                            break;
            //                        case 2:
            //                            rmt.setEast(true);
            //                            break;
            //                        case 3:
            //                            rmt.setWest(true);
            //                            break;
            //                    }
            //                }
            //            }

            Awake();
        }
Beispiel #8
0
    public override void OnStartClient()
    {
        base.OnStartClient();
        if (!isWindowedDoor)
        {
            closedLayer = LayerMask.NameToLayer("Door Closed");
        }
        else
        {
            closedLayer = LayerMask.NameToLayer("Windows");
        }
        spriteRenderer     = GetComponentInChildren <SpriteRenderer>();
        closedSortingLayer = SortingLayer.NameToID("Doors Closed");
        openSortingLayer   = SortingLayer.NameToID("Doors Open");
        openLayer          = LayerMask.NameToLayer("Door Open");


        registerTile = gameObject.GetComponent <RegisterDoor>();
    }
Beispiel #9
0
 private void EnsureInit()
 {
     if (registerTile != null)
     {
         return;
     }
     if (!isWindowedDoor)
     {
         closedLayer = LayerMask.NameToLayer("Door Closed");
     }
     else
     {
         closedLayer = LayerMask.NameToLayer("Windows");
     }
     spriteRenderer     = GetComponentInChildren <SpriteRenderer>();
     closedSortingLayer = SortingLayer.NameToID("Doors Closed");
     openSortingLayer   = SortingLayer.NameToID("Doors Open");
     openLayer          = LayerMask.NameToLayer("Door Open");
     registerTile       = gameObject.GetComponent <RegisterDoor>();
 }
Beispiel #10
0
        private void InteractDoor(Vector3 currentPosition, Vector3 direction)
        {
            Vector3Int position = Vector3Int.RoundToInt(currentPosition + direction);

            DoorController doorController = matrix.GetFirst <DoorController>(position);

            if (!doorController)
            {
                doorController = matrix.GetFirst <DoorController>(Vector3Int.RoundToInt(currentPosition));

                if (doorController)
                {
                    RegisterDoor registerDoor = doorController.GetComponent <RegisterDoor>();
                    if (registerDoor.IsPassable(position))
                    {
                        doorController = null;
                    }
                }
            }

            if (doorController != null && allowInput)
            {
                //checking if the door actually has a restriction (only need one because that's how ss13 works!
                if (doorController.restriction > 0)
                {
                    //checking if the ID slot on player contains an ID with an itemIdentity component
                    if (UIManager.InventorySlots.IDSlot.IsFull &&
                        UIManager.InventorySlots.IDSlot.Item.GetComponent <IDCard>() != null)
                    {
                        //checking if the ID has access to bypass the restriction
                        CheckDoorAccess(UIManager.InventorySlots.IDSlot.Item.GetComponent <IDCard>(), doorController);
                        //Check the current hand for an ID
                    }
                    else if (UIManager.Hands.CurrentSlot.IsFull &&
                             UIManager.Hands.CurrentSlot.Item.GetComponent <IDCard>() != null)
                    {
                        CheckDoorAccess(UIManager.Hands.CurrentSlot.Item.GetComponent <IDCard>(), doorController);
                    }
                    else
                    {
                        //does not have an ID
                        allowInput = false;
                        StartCoroutine(DoorInputCoolDown());
                        if (CustomNetworkManager.Instance._isServer)
                        {
                            doorController.CmdTryDenied();
                        }
                    }
                }
                else
                {
                    //door does not have restriction
                    allowInput = false;
                    //Server only here but it is a cmd for the input trigger (opening with mouse click from client)
                    if (CustomNetworkManager.Instance._isServer)
                    {
                        doorController.CmdTryOpen(gameObject);
                    }

                    StartCoroutine(DoorInputCoolDown());
                }
            }
        }