public virtual IEnumerable <Space> FindSources(IKnowSpiritLocations presence, TargetSourceCriteria source)
    {
        var sources = source.From switch {
            From.Presence => presence.Spaces,
            From.SacredSite => presence.SacredSites,
            _ => throw new ArgumentException("Invalid presence source " + source.From),
        };

        return(sources.Where(x => !source.Terrain.HasValue || x.Is(source.Terrain.Value)));
    }
    public MistsShiftAndFlow(ShroudOfSilentMist spirit, GameState gameState, string prompt, TargetSourceCriteria sourceCriteria, TargetCriteria[] targetCriteria, TargettingFrom powerType)
    {
        this.spirit         = spirit;
        this.gameState      = gameState;
        this.prompt         = prompt ?? "Target Space.";
        this.sourceCriteria = sourceCriteria;
        this.targetCriteria = targetCriteria;
        this.powerType      = powerType;

        CalculateSpaceGroups();
    }
    public IEnumerable <Space> FindSources(IKnowSpiritLocations _, TargetSourceCriteria sourceCriteria)
    {
        List <Space> sources = new ();

        // Find source of original
        for (int i = 0; i < spirits.Length; ++i)
        {
            sources.AddRange(origApis[i].FindSources(spirits[i].Presence, sourceCriteria));
        }
        return(sources.Distinct());
    }
 public override Task <Space> TargetsSpace(TargettingFrom powerType, GameState gameState, string prompt, TargetSourceCriteria sourceCriteria, params TargetCriteria[] targetCriteria)
 {
     return(new MistsShiftAndFlow(this, gameState, prompt, sourceCriteria, targetCriteria, powerType)
            .TargetAndFlow());
 }
Exemple #5
0
 public TargetSpaceAttribute(TargetSourceCriteria sourceCriteria, int range, string targetFilter)
 {
     this.sourceCriteria = sourceCriteria;
     this.range          = range;
     this.TargetFilter   = targetFilter;
 }