Example #1
0
        public bool AbsorbsWalker(Walks walker)
        {
            if (Homebase)
            {
                Homebase.DidAbsorb(walker);
                return(true);
            }

            return(false);
        }
Example #2
0
        public void DidAbsorb(Walks walker)
        {
            lastAbsorbTime = Time.time;

            if (walker.CompareTag("Mouse"))
            {
                playerData.mouseCount += 1;
            }
            else if (walker.CompareTag("Cat"))
            {
                playerData.mouseCount = (int)(playerData.mouseCount * 0.6666f);
            }
        }
Example #3
0
        public Direction ShouldRedirect(Direction myDirection, ref Vector2Int lastRedirectCoord, Walks walker)
        {
            if (blockState == BlockState.Confuse)
            {
                const int numDirections = 4;
                var       nextIndex     = ((int)myDirection + 1 + Random.Range(0, numDirections - 1)) % numDirections;
                myDirection = (Direction)nextIndex;
            }

            Direction arrowDirection;
            bool      hasArrow = GetArrowDirection(out arrowDirection);

            if (hasArrow && myDirection != arrowDirection)
            {
                if (arrowDirection == OppositeDirection(myDirection) && walker.DiminishesArrows)
                {
                    DiminishArrow();
                }

                myDirection = arrowDirection;
            }

            if (HasWallOrNeighborWall(myDirection))
            {
                myDirection = DirectionWhenHitWall(myDirection);
                if (HasWallOrNeighborWall(myDirection))
                {
                    myDirection = OppositeDirection(myDirection);
                    if (HasWallOrNeighborWall(myDirection))
                    {
                        myDirection = OppositeDirection(myDirection);
                    }
                }
            }

            return(myDirection);
        }