mirror of
https://github.com/4sval/FModel.git
synced 2026-04-18 15:47:43 -05:00
can draw and show multiple icons on one extract
This commit is contained in:
parent
082917d3cb
commit
a6adddf8fe
|
|
@ -26,7 +26,7 @@ namespace FModel.Creator.Bases.BB
|
|||
Description = description.Text;
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
|
@ -37,7 +37,7 @@ namespace FModel.Creator.Bases.BB
|
|||
DrawDisplayName(c);
|
||||
DrawDescription(c);
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ namespace FModel.Creator.Bases.FN
|
|||
Height += 256 * _quests.Count;
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
|
@ -88,7 +88,7 @@ namespace FModel.Creator.Bases.FN
|
|||
DrawDisplayName(c);
|
||||
DrawQuests(c);
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
|
||||
private readonly SKPaint _headerPaint = new()
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ namespace FModel.Creator.Bases.FN
|
|||
Description = Description.ToUpper();
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
|
@ -69,7 +69,7 @@ namespace FModel.Creator.Bases.FN
|
|||
DrawUserFacingFlags(c, _design.GameplayTags.DrawCustomOnly);
|
||||
}
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
|
||||
private void CheckGameplayTags(FGameplayTagContainer gameplayTags)
|
||||
|
|
|
|||
|
|
@ -112,14 +112,14 @@ namespace FModel.Creator.Bases.FN
|
|||
}
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
||||
Draw(c);
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
|
||||
private void GetSeries(FPackageIndex s)
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ namespace FModel.Creator.Bases.FN
|
|||
Height += 50 * _statistics.Count;
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
|
@ -134,7 +134,7 @@ namespace FModel.Creator.Bases.FN
|
|||
DrawDisplayName(c);
|
||||
DrawStatistics(c);
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
|
||||
private bool TryGetCurveTableStat(FStructFallback property, out float statValue)
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ namespace FModel.Creator.Bases.FN
|
|||
if (Object.TryGetValue(out FText unlockDescription, "UnlockDescription")) _unlockedDescription = unlockDescription.Text;
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
|
@ -61,7 +61,7 @@ namespace FModel.Creator.Bases.FN
|
|||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
|
||||
private void DrawInformation(SKCanvas c)
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ namespace FModel.Creator.Bases.FN
|
|||
}
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
|
@ -81,7 +81,7 @@ namespace FModel.Creator.Bases.FN
|
|||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ namespace FModel.Creator.Bases.FN
|
|||
Description = Utils.RemoveHtmlTags(Description);
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
using var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
|
@ -79,7 +79,7 @@ namespace FModel.Creator.Bases.FN
|
|||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
using System.Collections.Generic;
|
||||
using CUE4Parse.UE4.Assets.Exports;
|
||||
using CUE4Parse.UE4.Assets.Exports.Material;
|
||||
using SkiaSharp;
|
||||
|
|
@ -7,7 +6,7 @@ namespace FModel.Creator.Bases.FN
|
|||
{
|
||||
public class BaseOfferDisplayData : UCreator
|
||||
{
|
||||
private List<SKBitmap> _offerImages;
|
||||
private BaseMaterialInstance[] _offerImages;
|
||||
|
||||
public BaseOfferDisplayData(UObject uObject, EIconStyle style) : base(uObject, style)
|
||||
{
|
||||
|
|
@ -15,56 +14,24 @@ namespace FModel.Creator.Bases.FN
|
|||
|
||||
public override void ParseForInfo()
|
||||
{
|
||||
if (Object.ExportType != "AthenaItemShopOfferDisplayData")
|
||||
if (!Object.TryGetValue(out UMaterialInterface[] presentations, "Presentations"))
|
||||
return;
|
||||
|
||||
if (!Object.TryGetValue(out UMaterialInterface[] presentations, "Presentations"))
|
||||
return;
|
||||
|
||||
_offerImages = new List<SKBitmap>();
|
||||
foreach (var p in presentations)
|
||||
_offerImages = new BaseMaterialInstance[presentations.Length];
|
||||
for (int i = 0; i < _offerImages.Length; i++)
|
||||
{
|
||||
var offerImage = new BaseMaterialInstance(p, Style);
|
||||
var offerImage = new BaseMaterialInstance(presentations[i], Style);
|
||||
offerImage.ParseForInfo();
|
||||
_offerImages.Add(offerImage.Draw());
|
||||
_offerImages[i] = offerImage;
|
||||
}
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] 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;
|
||||
|
||||
var ret = new SKBitmap(Width, Height);
|
||||
using var canvas = new SKCanvas(ret);
|
||||
var point = new SKPoint(0, 0);
|
||||
|
||||
for (int i = 0, placement = 0; i < _offerImages.Count; i++)
|
||||
var ret = new SKBitmap[_offerImages.Length];
|
||||
for (int i = 0; i < ret.Length; i++)
|
||||
{
|
||||
if (placement >= imageOrder)
|
||||
{
|
||||
placement = 0;
|
||||
point.Y += 512;
|
||||
}
|
||||
point.X = 512 * placement;
|
||||
|
||||
canvas.DrawBitmap(_offerImages[i], point);
|
||||
placement++;
|
||||
ret[i] = _offerImages[i].Draw()[0];
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ namespace FModel.Creator.Bases.FN
|
|||
Height = Preview.Height;
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
|
@ -66,7 +66,7 @@ namespace FModel.Creator.Bases.FN
|
|||
break;
|
||||
}
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
|
||||
private void DrawMissionIcon(SKCanvas c)
|
||||
|
|
|
|||
|
|
@ -161,14 +161,14 @@ namespace FModel.Creator.Bases.FN
|
|||
DrawTexts(c, y);
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
||||
DrawQuest(c, 0);
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
|
||||
private string ReformatString(string s, string completionCount, bool isAll)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ namespace FModel.Creator.Bases.FN
|
|||
public int RewardsNeededForUnlock;
|
||||
public Reward[] RewardEntryList;
|
||||
}
|
||||
|
||||
|
||||
public class BaseSeason : UCreator
|
||||
{
|
||||
private Reward _firstWinReward;
|
||||
|
|
@ -35,7 +35,7 @@ namespace FModel.Creator.Bases.FN
|
|||
public override void ParseForInfo()
|
||||
{
|
||||
_bookXpSchedule = Array.Empty<Page>();
|
||||
|
||||
|
||||
if (Object.TryGetValue(out FText displayName, "DisplayName"))
|
||||
DisplayName = displayName.Text.ToUpperInvariant();
|
||||
|
||||
|
|
@ -67,7 +67,7 @@ namespace FModel.Creator.Bases.FN
|
|||
!page.TryGetValue(out int rewardsNeededForUnlock, "RewardsNeededForUnlock") ||
|
||||
!page.TryGetValue(out FPackageIndex[] rewardEntryList, "RewardEntryList"))
|
||||
continue;
|
||||
|
||||
|
||||
var p = new Page
|
||||
{
|
||||
LevelsNeededForUnlock = levelsNeededForUnlock,
|
||||
|
|
@ -96,7 +96,7 @@ namespace FModel.Creator.Bases.FN
|
|||
Height += 100 * _bookXpSchedule.Sum(x => x.RewardEntryList.Length) / _bookXpSchedule.Length;
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
|
@ -105,7 +105,7 @@ namespace FModel.Creator.Bases.FN
|
|||
_firstWinReward?.DrawSeasonWin(c, _headerHeight);
|
||||
DrawBookSchedule(c);
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
|
||||
private const int _DEFAULT_AREA_SIZE = 80;
|
||||
|
|
|
|||
|
|
@ -14,14 +14,14 @@ namespace FModel.Creator.Bases.FN
|
|||
GetSeries(Object);
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
||||
DrawBackground(c);
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ namespace FModel.Creator.Bases.FN
|
|||
_additionalDescription = addDesc.Text;
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
|
@ -64,7 +64,7 @@ namespace FModel.Creator.Bases.FN
|
|||
DrawGeneralDescription(c);
|
||||
DrawAdditionalDescription(c);
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
|
||||
private readonly SKPaint _panelPaint = new() { IsAntialias = true, FilterQuality = SKFilterQuality.High, Color = SKColor.Parse("#0045C7") };
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ namespace FModel.Creator.Bases.FN
|
|||
Height += 35 * _optionValues.Count;
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Opaque);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
|
@ -119,7 +119,7 @@ namespace FModel.Creator.Bases.FN
|
|||
DrawBackground(c);
|
||||
DrawInformation(c);
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
|
||||
private new void DrawBackground(SKCanvas c)
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ namespace FModel.Creator.Bases.SB
|
|||
DisplayName = displayName.Text;
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
|
@ -42,7 +42,7 @@ namespace FModel.Creator.Bases.SB
|
|||
DrawTextBackground(c);
|
||||
DrawDisplayName(c);
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ namespace FModel.Creator.Bases.SB
|
|||
public class BaseGameModeInfo : UCreator
|
||||
{
|
||||
private SKBitmap _icon;
|
||||
|
||||
|
||||
public BaseGameModeInfo(UObject uObject, EIconStyle style) : base(uObject, style)
|
||||
{
|
||||
Width = 738;
|
||||
|
|
@ -28,7 +28,7 @@ namespace FModel.Creator.Bases.SB
|
|||
_icon = Utils.GetBitmap(icon).Resize(25);
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
|
@ -38,9 +38,9 @@ namespace FModel.Creator.Bases.SB
|
|||
DrawDisplayName(c);
|
||||
DrawIcon(c);
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
|
||||
|
||||
private void DrawIcon(SKCanvas c)
|
||||
{
|
||||
if (_icon == null) return;
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ namespace FModel.Creator.Bases.SB
|
|||
DisplayName = displayName.Text;
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
|
@ -49,7 +49,7 @@ namespace FModel.Creator.Bases.SB
|
|||
DrawToBottom(c, SKTextAlign.Left, $"PromotionXP: {_promotionXp}");
|
||||
DrawToBottom(c, SKTextAlign.Right, $"XPLostPerMatch: {_xpLostPerMatch}");
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ namespace FModel.Creator.Bases.SB
|
|||
_seriesBackground2 = Utils.GetBitmap("g3/Content/UI/Textures/assets/store/ItemBGStatic_UIT.ItemBGStatic_UIT");
|
||||
}
|
||||
|
||||
public override SKBitmap Draw()
|
||||
public override SKBitmap[] Draw()
|
||||
{
|
||||
var ret = new SKBitmap(Width, Height, SKColorType.Rgba8888, SKAlphaType.Premul);
|
||||
using var c = new SKCanvas(ret);
|
||||
|
|
@ -59,7 +59,7 @@ namespace FModel.Creator.Bases.SB
|
|||
DrawDisplayName(c);
|
||||
DrawDescription(c);
|
||||
|
||||
return ret;
|
||||
return new []{ret};
|
||||
}
|
||||
|
||||
private void DrawBackgrounds(SKCanvas c)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ namespace FModel.Creator.Bases
|
|||
public int Height { get; protected set; }
|
||||
|
||||
public abstract void ParseForInfo();
|
||||
public abstract SKBitmap Draw();
|
||||
public abstract SKBitmap[] Draw();
|
||||
|
||||
protected UCreator(UObject uObject, EIconStyle style)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -223,6 +223,10 @@ namespace FModel.ViewModels
|
|||
}
|
||||
|
||||
public void AddImage(UTexture2D texture) => AddImage(texture.Name, texture.bRenderNearestNeighbor, texture.Decode());
|
||||
public void AddImage(string name, bool rnn, SKBitmap[] img)
|
||||
{
|
||||
foreach (var i in img) AddImage(name, rnn, i);
|
||||
}
|
||||
public void AddImage(string name, bool rnn, SKBitmap img)
|
||||
{
|
||||
Application.Current.Dispatcher.Invoke(() =>
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user