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; }
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); }
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); }