private static bool StillValid(FloatMenuOption opt, List <FloatMenuOption> curOpts) { if (opt.revalidateClickTarget == null) { for (int i = 0; i < curOpts.Count; i++) { if (FloatMenuMap.OptionsMatch(opt, curOpts[i])) { return(true); } } } else { if (!opt.revalidateClickTarget.Spawned) { return(false); } List <FloatMenuOption> list = FloatMenuMakerMap.ChoicesAtFor(opt.revalidateClickTarget.Position.ToVector3Shifted(), Find.Selector.SingleSelectedThing as Pawn); for (int j = 0; j < list.Count; j++) { if (FloatMenuMap.OptionsMatch(opt, list[j])) { return(true); } } } return(false); }
private static bool StillValid(FloatMenuOption opt, List <FloatMenuOption> curOpts, Pawn forPawn, ref List <FloatMenuOption> cachedChoices, ref Vector3 cachedChoicesForPos) { if (opt.revalidateClickTarget == null) { for (int i = 0; i < curOpts.Count; i++) { if (FloatMenuMap.OptionsMatch(opt, curOpts[i])) { return(true); } } } else { if (!opt.revalidateClickTarget.Spawned) { return(false); } Vector3 vector = opt.revalidateClickTarget.Position.ToVector3Shifted(); List <FloatMenuOption> list; if (vector == cachedChoicesForPos) { list = cachedChoices; } else { cachedChoices = FloatMenuMakerMap.ChoicesAtFor(vector, forPawn); cachedChoicesForPos = vector; list = cachedChoices; } for (int j = 0; j < list.Count; j++) { if (FloatMenuMap.OptionsMatch(opt, list[j])) { return(!list[j].Disabled); } } } return(false); }