Example #1
0
    private bool getMatchingAspects(Block fromBlock, Block toBlock, Direction dir)
    {
        var aspectA = fromBlock.getAspect(dir);
        var aspectB = toBlock.getAspect(DirectionHelper.GetInverse(dir));

        switch (aspectB)
        {
        case Aspect.WINDOW:
            return(false);

        case Aspect.ACCESS:
            return(aspectA == Aspect.OPEN || aspectA == Aspect.ACCESS && fromBlock.getAccess(dir) == toBlock.getAccess(DirectionHelper.GetInverse(dir)));

        case Aspect.OPEN:
            return(aspectA == Aspect.OPEN || aspectA == Aspect.CLOSED || aspectA == Aspect.ACCESS);

        case Aspect.CLOSED:
            return(aspectA == Aspect.OPEN || aspectA == Aspect.CLOSED);

        default:
            throw new ArgumentOutOfRangeException("Aspect " + aspectA);
        }
    }