Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / data / ImportCombinationData.cs

using System.Collections.Generic;
using Godot;

/// <summary>
/// 导入的组合图块数据
/// </summary>
public class ImportCombinationData
{
    /// <summary>
    /// 预览图
    /// </summary>
    public ImageTexture PreviewTexture { get; set; }
    /// <summary>
    /// 组合图块数据
    /// </summary>
    public TileCombinationInfo CombinationInfo { get; set; }

    public ImportCombinationData(ImageTexture previewTexture, TileCombinationInfo combinationInfo)
    {
        PreviewTexture = previewTexture;
        CombinationInfo = combinationInfo;
    }
    
    public void UpdatePreviewTexture(Image src)
    {
        using (var image = GetPreviewTexture(src, CombinationInfo.Cells, CombinationInfo.Positions))
        {
            PreviewTexture.SetImage(image);
        }
    }
    
    public static Image GetPreviewTexture(Image src, SerializeVector2[] cells, SerializeVector2[] positions)
    {
        var rect = Utils.CalcTileRect(positions);
        var rectSize = rect.Size;
        var image = Image.Create(rectSize.X + 4, rectSize.Y + 4, false, Image.Format.Rgba8);
        image.Fill(Colors.Gray);
        for (var i = 0; i < cells.Length; i++)
        {
            var cell = cells[i];
            var pos = positions[i];
            image.BlendRect(src, new Rect2I(cell.AsVector2I(), GameConfig.TileCellSizeVector2I), pos.AsVector2I() + new Vector2I(2, 2));
        }
        return image;
    }
}