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); } } }
/// <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)); // 如果这个地块没有完全处于阴影中,并且这个地块不透明,说明会遮挡视线 }