public void Initialize(int Width, int Height, int OffsetX, int OffsetY) { if (ProviderIndexes != null) { throw new Exception("Attempt to reinitialize."); } this.Width = Width; this.Height = Height; this.OffsetX = OffsetX; this.OffsetY = OffsetY; ProviderIndexes = new ushort[this.Width, this.Height]; Void = FakeProviderAPI.CreateReadonlyTileProvider(VoidProviderName, 0, 0, 1, 1, new ITile[, ] { { new Terraria.Tile() } }, Int32.MinValue); VoidTile = Void[0, 0]; }
private static void CreateCustomTileProvider() { int maxTilesX = Main.maxTilesX; int maxTilesY = Main.maxTilesY; if (VisibleWidth < 0) { VisibleWidth = (OffsetX + maxTilesX); } else { VisibleWidth++; } if (VisibleHeight < 0) { VisibleHeight = (OffsetY + maxTilesY); } else { VisibleHeight++; } FakeProviderAPI.Tile = new TileProviderCollection(); FakeProviderAPI.Tile.Initialize(VisibleWidth, VisibleHeight, 0, 0); if (ReadonlyWorld) { FakeProviderAPI.World = FakeProviderAPI.CreateReadonlyTileProvider(FakeProviderAPI.WorldProviderName, 0, 0, maxTilesX, maxTilesY, Int32.MinValue + 1); } else { FakeProviderAPI.World = FakeProviderAPI.CreateTileProvider(FakeProviderAPI.WorldProviderName, 0, 0, maxTilesX, maxTilesY, Int32.MinValue + 1); } using (IDisposable previous = Main.tile as IDisposable) Main.tile = FakeProviderAPI.World; }