예제 #1
0
    Color GetQuadColor(int x, int y)
    {
        /*
         *  光标 -> 闪烁的
         *  玩家
         *  可见的空地
         *  可见的墙
         *  不可见的空地
         *  不可见的墙
         */
        if (x == _mousePosition.x && y == _mousePosition.y)
        {
            return(GetMouseColor());
        }

        if (x == _playerPosition.x && y == _playerPosition.y)
        {
            return(_playerColor);
        }

        if (_viewField.IsVisible(x, y))
        {
            if (_visibleMap.IsTransparent(x, y))
            {
                return(_visibleFloor);
            }
            else
            {
                return(_visibleWall);
            }
        }
        else
        {
            if (_visibleMap.IsTransparent(x, y))
            {
                return(_invisibleFloor);
            }
            else
            {
                return(_invisibleWall);
            }
        }
    }
예제 #2
0
 /// <summary>
 /// 判断一个地块是否遮挡视线
 /// </summary>
 /// <param name="shadowLine"></param>
 /// <param name="currentPosition"></param>
 /// <param name="projection"></param>
 /// <returns></returns>
 bool IsBlockView(ShadowLine shadowLine, Vector2 currentPosition, Shadow projection)
 {
     return(!shadowLine.AllInShadow(projection) && !_visiableMap.IsTransparent(currentPosition));
     // 如果这个地块没有完全处于阴影中,并且这个地块不透明,说明会遮挡视线
 }