Reverted TextureAtlas indexing to the original string system

This commit is contained in:
Perry 2026-03-14 11:40:04 +01:00
parent 182ebfc31c
commit de2b2a56f0

View file

@ -10,7 +10,8 @@ namespace MonoGameLibrary.Graphics;
public class TextureAtlas public class TextureAtlas
{ {
private TextureRegion[] _regions; // private TextureRegion[] _regions;
private readonly Dictionary<string, TextureRegion> _regions;
/// <summary> /// <summary>
/// Gets or Sets the source texture represented by this texture atlas. /// Gets or Sets the source texture represented by this texture atlas.
@ -28,9 +29,9 @@ public class TextureAtlas
/// Creates a new texture atlas instance using the given texture. /// Creates a new texture atlas instance using the given texture.
/// </summary> /// </summary>
/// <param name="texture">The source texture represented by the texture atlas.</param> /// <param name="texture">The source texture represented by the texture atlas.</param>
public TextureAtlas(Texture2D texture, int spriteCount) { public TextureAtlas(Texture2D texture) {
Texture = texture; Texture = texture;
_regions = new TextureRegion[spriteCount]; _regions = new();
} }
// /// <summary> // /// <summary>
@ -51,10 +52,9 @@ public class TextureAtlas
/// </summary> /// </summary>
/// <param name="name">The name of the region to retrieve.</param> /// <param name="name">The name of the region to retrieve.</param>
/// <returns>The TextureRegion with the specified name.</returns> /// <returns>The TextureRegion with the specified name.</returns>
public TextureRegion this[string name] {
public TextureRegion this[int id] { get => _regions[name];
get => _regions[id]; set => _regions[name] = value;
set => _regions[id] = value;
} }
// public TextureRegion GetRegion(string name) { // public TextureRegion GetRegion(string name) {
@ -96,8 +96,8 @@ public class TextureAtlas
// The <Texture> element contains the content path for the Texture2D to load. // The <Texture> element contains the content path for the Texture2D to load.
// So we will retrieve that value then use the content manager to load the texture. // So we will retrieve that value then use the content manager to load the texture.
string texturePath = root.Element("Texture").Value; string texturePath = root.Element("Texture").Value;
int spriteCount = int.Parse(root.Attribute("count").Value); // int spriteCount = int.Parse(root.Attribute("count").Value);
atlas = new TextureAtlas(content.Load<Texture2D>(texturePath), spriteCount); atlas = new TextureAtlas(content.Load<Texture2D>(texturePath));
// The <Regions> element contains individual <Region> elements, each one describing // The <Regions> element contains individual <Region> elements, each one describing
// a different texture region within the atlas. // a different texture region within the atlas.
@ -121,7 +121,7 @@ public class TextureAtlas
// int width = int.Parse(region.Attribute("width")?.Value ?? "0"); // int width = int.Parse(region.Attribute("width")?.Value ?? "0");
// int height = int.Parse(region.Attribute("height")?.Value ?? "0"); // int height = int.Parse(region.Attribute("height")?.Value ?? "0");
atlas[int.Parse(region.Attribute("id").Value)] = new TextureRegion( atlas[region.Attribute("name").Value] = new TextureRegion(
atlas.Texture, atlas.Texture,
int.Parse(region.Attribute("x")?.Value ?? "0"), int.Parse(region.Attribute("x")?.Value ?? "0"),
int.Parse(region.Attribute("y")?.Value ?? "0"), int.Parse(region.Attribute("y")?.Value ?? "0"),