Newer
Older
DungeonShooting / DungeonShooting_Godot / src / framework / map / image / AffiliationSpriteRoot.cs
@小李xl 小李xl on 3 Nov 2023 1 KB 优化可互动物体

using System.Collections.Generic;
using Godot;

/// <summary>
/// AffiliationArea 中用于存放静态Sprite的功能类
/// </summary>
public partial class AffiliationSpriteRoot : Node2D, IDestroy
{
    private class SpriteData
    {
        public Vector2 Position;
        public FreezeSprite FreezeSprite;
    }
    
    public bool IsDestroyed { get; private set; }
    
    private readonly Grid<List<SpriteData>> _grid = new Grid<List<SpriteData>>();
    private readonly AffiliationArea _affiliationArea;

    public AffiliationSpriteRoot(AffiliationArea affiliationArea)
    {
        _affiliationArea = affiliationArea;
    }
    
    public void Destroy()
    {
        if (IsDestroyed)
        {
            return;
        }

        IsDestroyed = true;

        _grid.ForEach((x, y, data) =>
        {
            foreach (var spriteData in data)
            {
                spriteData.FreezeSprite.Destroy();
            }
            data.Clear();
        });
        _grid.Clear();
        QueueFree();
    }

    /// <summary>
    /// 添加静态精灵
    /// </summary>
    public void AddFreezeSprite(FreezeSprite freezeSprite)
    {
        
        // var result = _freezeSprites.Add(freezeSprite);
        // if (result)
        // {
        //     
        // }
        // return result;
    }

    /// <summary>
    /// 移除静态精灵
    /// </summary>
    public void RemoveFreezeSprite(FreezeSprite freezeSprite)
    {
        //return _freezeSprites.Remove(freezeSprite);
    }
}