別のタイルを指定して、特定のタイルの描画状態を設定する関数があります。描画状態が変化するタイルは、それを囲むタイルを比較し、それに応じて更新します。以下でそれを説明しようと思います
[b] [b] [a]
[b] [a] [a]
[a] [a] [a] where a = sand && b = water
aがbがそれに隣接していることを検出すると、その描画状態を更新する必要があります。だから私は大文字、小文字、左大文字、右大文字で動作する関数を持っています。次に、その関数を変更して、左右のケース、右上のケース、右下のケースなどを処理できるようにする必要があります。これが私の関数です。
public override void CompareBorderingTiles(Tile T)
{
if (T is Water)
{
float leftBound = location.X - (Tile.TileWidth * Tile.TileScale);
float rightBound = location.X + (Tile.TileWidth * Tile.TileScale);
float upperBound = location.Y - (Tile.TileHieght * Tile.TileScale);
float bottomBound = location.Y + (Tile.TileHieght * Tile.TileScale);
if (T.GridLocation.X == leftBound)
{
drawstate = DrawState.Left;
}
if (T.GridLocation.X == rightBound)
drawstate = DrawState.Right;
if (T.GridLocation.Y == upperBound)
drawstate = DrawState.Upper;
if (T.GridLocation.Y == bottomBound)
drawstate = DrawState.Lower;
}
base.CompareBorderingTiles(T);
}
なぜこの関数から抜け出したいのか、そうでないのかについては、かなり説明できるはずです。基本的に、ドローステートが何であるかを示す列挙型があります(ドローステートは列挙型です)。その正しい描画状態を設定してから関数から抜け出すことができるかどうか誰かに教えてもらえますか?