static int Position2Index(Size Size, Point Position, NSE_Framework.Data.Sprite.SpriteType Type) { if (Type == NSE_Framework.Data.Sprite.SpriteType.Color16) { int r = (Position.Y - (Position.Y % 8)) / 2 * Size.Width; r += (Position.X - (Position.X % 8)) * 4; r += (Position.Y % 8) * 4; r += (Position.X % 8) / 2; return(r); } else if (Type == NSE_Framework.Data.Sprite.SpriteType.Color256) { int r = (Position.Y - (Position.Y % 8)) * Size.Width; r += (Position.X - (Position.X % 8)) * 8; r += (Position.Y % 8) * 8; r += (Position.X % 8); return(r); } else { return(-1); } }
int Position2Index(Size Size, Point Position, NSE_Framework.Data.Sprite.SpriteType Type) { Position.X = Clamp(Position.X, 0, NewSprite.Width * 8 - 1); Position.Y = Clamp(Position.Y, 0, NewSprite.Height * 8 - 1); if (Type == NSE_Framework.Data.Sprite.SpriteType.Color16) { int r = (Position.Y - (Position.Y % 8)) / 2 * Size.Width; r += (Position.X - (Position.X % 8)) * 4; r += (Position.Y % 8) * 4; r += (Position.X % 8) / 2; return(Clamp(r, 0, Size.Width * Size.Height / 2 - 1));; } else if (Type == NSE_Framework.Data.Sprite.SpriteType.Color256) { int r = (Position.Y - (Position.Y % 8)) * Size.Width; r += (Position.X - (Position.X % 8)) * 8; r += (Position.Y % 8) * 8; r += (Position.X % 8); return(Clamp(r, 0, Size.Width * Size.Height - 1)); } else { return(-1); } }