mirror of
https://github.com/4sval/FModel.git
synced 2026-03-24 18:54:42 -05:00
Merge pull request #241 from OutTheShade/dav2-offer-images
display all offerimages in a dav2
This commit is contained in:
commit
10de896db9
|
|
@ -1,4 +1,4 @@
|
|||
using System.Linq;
|
||||
using System.Linq;
|
||||
using CUE4Parse.UE4.Assets.Exports;
|
||||
using CUE4Parse.UE4.Assets.Exports.Material;
|
||||
using CUE4Parse.UE4.Assets.Exports.Texture;
|
||||
|
|
@ -84,4 +84,4 @@ namespace FModel.Creator.Bases.FN
|
|||
return SKImage.FromBitmap(ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
73
FModel/Creator/Bases/FN/BaseOfferDisplayData.cs
Normal file
73
FModel/Creator/Bases/FN/BaseOfferDisplayData.cs
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
using System.Collections.Generic;
|
||||
using CUE4Parse.UE4.Assets.Exports;
|
||||
using CUE4Parse.UE4.Assets.Exports.Material;
|
||||
using SkiaSharp;
|
||||
|
||||
namespace FModel.Creator.Bases.FN
|
||||
{
|
||||
public class BaseOfferDisplayData : UCreator
|
||||
{
|
||||
private List<SKImage> _offerImages;
|
||||
|
||||
public BaseOfferDisplayData(UObject uObject, EIconStyle style) : base(uObject, style)
|
||||
{
|
||||
}
|
||||
|
||||
public override void ParseForInfo()
|
||||
{
|
||||
if (Object.ExportType != "AthenaItemShopOfferDisplayData")
|
||||
return;
|
||||
|
||||
if (!Object.TryGetValue(out UMaterialInterface[] presentations, "Presentations"))
|
||||
return;
|
||||
|
||||
_offerImages = new List<SKImage>();
|
||||
foreach (var p in presentations)
|
||||
{
|
||||
var offerImage = new BaseMaterialInstance(p, Style);
|
||||
offerImage.ParseForInfo();
|
||||
_offerImages.Add(offerImage.Draw());
|
||||
}
|
||||
}
|
||||
|
||||
public override SKImage Draw()
|
||||
{
|
||||
int imageOrder;
|
||||
|
||||
if (_offerImages.Count < 4)
|
||||
imageOrder = _offerImages.Count;
|
||||
else if (_offerImages.Count == 4)
|
||||
imageOrder = 2;
|
||||
else if (_offerImages.Count <= 9)
|
||||
imageOrder = 3;
|
||||
else imageOrder = 5;
|
||||
|
||||
Width = 512 * imageOrder;
|
||||
Height = _offerImages.Count / imageOrder;
|
||||
|
||||
if (_offerImages.Count % imageOrder != 0)
|
||||
Height++;
|
||||
|
||||
Height *= 512;
|
||||
|
||||
using var bitmap = new SKBitmap(Width, Height);
|
||||
using var canvas = new SKCanvas(bitmap);
|
||||
var point = new SKPoint(0, 0);
|
||||
|
||||
for (int i = 0, placement = 0; i < _offerImages.Count; i++)
|
||||
{
|
||||
if (placement >= imageOrder)
|
||||
{
|
||||
placement = 0;
|
||||
point.Y += 512;
|
||||
}
|
||||
point.X = 512 * placement;
|
||||
|
||||
canvas.DrawImage(_offerImages[i], point);
|
||||
placement++;
|
||||
}
|
||||
|
||||
return SKImage.FromBitmap(bitmap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -133,6 +133,9 @@ namespace FModel.Creator
|
|||
_object.Owner.Name.EndsWith($"/MI_BPTile/{_object.Name}", StringComparison.OrdinalIgnoreCase)):
|
||||
creator = new BaseMaterialInstance(_object, _style);
|
||||
return true;
|
||||
case "AthenaItemShopOfferDisplayData":
|
||||
creator = new BaseOfferDisplayData(_object, _style);
|
||||
return true;
|
||||
case "FortMtxOfferData":
|
||||
creator = new BaseMtxOffer(_object, _style);
|
||||
return true;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user