fix: Fixes wrong sector shift for tilematrix iteration (#1623)
This commit is contained in:
parent
130a5674bf
commit
fec78040bc
2 changed files with 8 additions and 8 deletions
|
|
@ -20,7 +20,7 @@ namespace Server;
|
||||||
|
|
||||||
public partial class Map
|
public partial class Map
|
||||||
{
|
{
|
||||||
public ref struct StaticTileEnumerable
|
public readonly ref struct StaticTileEnumerable
|
||||||
{
|
{
|
||||||
public static StaticTileEnumerable Empty
|
public static StaticTileEnumerable Empty
|
||||||
{
|
{
|
||||||
|
|
@ -69,7 +69,7 @@ public partial class Map
|
||||||
|
|
||||||
if (includeStatics)
|
if (includeStatics)
|
||||||
{
|
{
|
||||||
var tiles = map.Tiles.GetStaticBlock(p.X >> SectorShift, p.Y >> SectorShift);
|
var tiles = map.Tiles.GetStaticBlock(p.X >> TileMatrix.SectorShift, p.Y >> TileMatrix.SectorShift);
|
||||||
_tiles = tiles[p.X & 0x7][p.Y & 0x7];
|
_tiles = tiles[p.X & 0x7][p.Y & 0x7];
|
||||||
_index = -1;
|
_index = -1;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,19 +13,19 @@
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
|
using Server.Logging;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Threading;
|
|
||||||
using Server.Logging;
|
|
||||||
|
|
||||||
namespace Server;
|
namespace Server;
|
||||||
|
|
||||||
public class TileMatrix
|
public class TileMatrix
|
||||||
{
|
{
|
||||||
|
public const int SectorShift = 3;
|
||||||
|
|
||||||
private static readonly ILogger logger = LogFactory.GetLogger(typeof(TileMatrix));
|
private static readonly ILogger logger = LogFactory.GetLogger(typeof(TileMatrix));
|
||||||
private static readonly List<TileMatrix> _instances = new();
|
private static readonly List<TileMatrix> _instances = new();
|
||||||
|
|
||||||
|
|
@ -82,8 +82,8 @@ public class TileMatrix
|
||||||
}
|
}
|
||||||
|
|
||||||
_fileIndex = fileIndex;
|
_fileIndex = fileIndex;
|
||||||
BlockWidth = width >> 3;
|
BlockWidth = width >> SectorShift;
|
||||||
BlockHeight = height >> 3;
|
BlockHeight = height >> SectorShift;
|
||||||
|
|
||||||
_map = owner;
|
_map = owner;
|
||||||
|
|
||||||
|
|
@ -296,7 +296,7 @@ public class TileMatrix
|
||||||
|
|
||||||
public LandTile GetLandTile(int x, int y)
|
public LandTile GetLandTile(int x, int y)
|
||||||
{
|
{
|
||||||
var tiles = GetLandBlock(x >> 3, y >> 3);
|
var tiles = GetLandBlock(x >> SectorShift, y >> SectorShift);
|
||||||
|
|
||||||
return tiles[((y & 0x7) << 3) + (x & 0x7)];
|
return tiles[((y & 0x7) << 3) + (x & 0x7)];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue