using System; using System.Collections.Generic; using System.Linq; using System.Text; using WOMGeneral; using VBXSE; using System.IO; using Microsoft.Xna.Framework; //oooooooooooooooooooooooooooooooooooooooooooo //ooooooooooooo CLIENT ooooooooooooooooooooooo //oooooooooooooooooooooooooooooooooooooooooooo namespace WorldOfMinimalism { public class Tile : TileBase { //Yup. public static bool[,] notLoadedPixels = new bool[,] { { true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true }, { true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true }, { true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true }, { true, false, false, false, false, true, true, true, true, true, false, false, false, false, false, true }, { true, false, false, false, true, true, false, false, false, true, true, false, false, false, false, true }, { true, false, false, false, true, false, false, false, false, false, true, false, false, false, false, true }, { true, false, false, false, true, false, false, false, false, false, true, false, false, false, false, true }, { true, false, false, false, false, false, false, false, true, true, true, false, false, false, false, true }, { true, false, false, false, false, false, false, true, true, false, false, false, false, false, false, true }, { true, false, false, false, false, false, false, true, true, false, false, false, false, false, false, true }, { true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true }, { true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true }, { true, false, false, false, false, false, false, true, true, false, false, false, false, false, false, true }, { true, false, false, false, false, false, false, true, true, false, false, false, false, false, false, true }, { true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true }, { true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true } }; public Sprite sprite; public bool drawn = false; public int x = 0; public int y = 0; public Tile() { } public Tile(bool temporary) { //this.pixels = notLoadedPixels; //Let's just go with black again } public override void SetSprite(bool[,] newPixels) { base.SetSprite(newPixels); if (drawn) { DrawSprite(); } } public void DrawSprite() { bool empty = true; for (int iy = 0; iy < 16; iy++) { for (int ix = 0; ix < 16; ix++) { if (pixels[ix, iy]) empty = false; } } try { SpriteEngine.EraseGObject(this.sprite); } catch (ArgumentOutOfRangeException) { } //FIXME: Really fix this problem if (!empty) { Color[] colorMap = new Color[width * height]; for (int iy = 0; iy < 16; iy++) { for (int ix = 0; ix < 16; ix++) { Color toUse = Color.Black; if (pixels[ix, iy]) toUse = Util.NumberToColor(colorPalette); colorMap[iy * 16 + ix] = toUse; } } this.sprite = SpriteEngine.CreateSprite(Graphics.ColorMapToTexture(colorMap), x, y); } drawn = true; } public override void Move(int offsetX, int offsetY) { this.x += offsetX; this.y += offsetY; UpdateSpritePosition(); base.Move(offsetX, offsetY); } public void UpdateSpritePosition() { if (this.sprite != null) { this.sprite.SetPosition(x, y); } } public override void EraseTile() { SpriteEngine.EraseGObject(sprite); drawn = false; base.EraseTile(); } public override void SetSpritePosition(int x, int y) { if (this.sprite != null) { this.sprite.SetPosition(x, y); } this.x = x; this.y = y; base.SetSpritePosition(x, y); } } }