예제 #1
0
        public void MoveGameObject(int targetX, int targetY)
        {
            int range = FindObjects.PC.GetComponent <FieldOfView>().MaxRange;

            int[] source = coord.Convert(FindObjects.PC.transform.position);
            int[] target = new int[] { targetX, targetY };

            if (dungeon.IsInsideRange(FOVShape.Square, range, source, target))
            {
                transform.position = coord.Convert(targetX, targetY);
            }
            else
            {
                return;
            }

            if (fov.CheckFOV(FOVStatus.Insight, target) &&
                actor.HasActor(target) &&
                !actor.CheckActorTag(SubObjectTag.PC, target[0], target[1]))
            {
                mode.SwitchUIExamineMessage(true);
            }
            else
            {
                mode.SwitchUIExamineMessage(false);
            }
            return;
        }
예제 #2
0
        private bool CanSeeTarget <T>(T targetTag)
        {
            int[] position = coord.Convert(transform.position);
            int   x        = position[0];
            int   y        = position[1];
            int   range    = fov.MaxRange;

            for (int i = x - range; i < x + range + 1; i++)
            {
                for (int j = y - range; j < y + range + 1; j++)
                {
                    if ((i == x && j == y) ||
                        !fov.CheckFOV(FOVStatus.Insight, i, j))
                    {
                        continue;
                    }

                    if (actor.CheckActorTag(targetTag, i, j))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
예제 #3
0
        private List <GameObject> FindTargets()
        {
            int[] position = coord.Convert(FindObjects.PC.transform.position);
            int   x        = position[0];
            int   y        = position[1];
            int   range    = fov.MaxRange;

            List <GameObject> targets = new List <GameObject>();

            for (int i = x - range; i < x + range + 1; i++)
            {
                for (int j = y - range; j < y + range + 1; j++)
                {
                    if (!actor.HasActor(i, j) ||
                        !fov.CheckFOV(FOVStatus.Insight, i, j) ||
                        (i == x && j == y))
                    {
                        continue;
                    }
                    targets.Add(actor.GetActor(i, j));
                }
            }
            return(targets);
        }