mirror of
https://github.com/4sval/FModel.git
synced 2026-03-21 17:24:26 -05:00
FModel 3.1.1.3
This commit is contained in:
parent
b6a628f3b0
commit
f4e8e34ce2
|
|
@ -38,7 +38,8 @@ namespace FModel.Creator.Bases
|
|||
if (export.GetExport<TextProperty>("UIDescription", "Description") is { } description)
|
||||
Description = Text.GetTextPropertyBase(description);
|
||||
|
||||
Width = Height = 512;
|
||||
Width = 1024;
|
||||
Height = 512;
|
||||
|
||||
if (export.GetExport<NameProperty>("PlaylistName") is { } playlistName && !playlistName.Value.IsNone)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ namespace FModel.Creator
|
|||
Rarity.DrawRarity(c, icon);
|
||||
}
|
||||
|
||||
LargeSmallImage.DrawPreviewImage(c, icon);
|
||||
LargeSmallImage.DrawNotStretchedPreviewImage(c, icon);
|
||||
|
||||
if ((EIconDesign)Properties.Settings.Default.AssetsIconDesign != EIconDesign.NoBackground)
|
||||
{
|
||||
|
|
@ -164,7 +164,7 @@ namespace FModel.Creator
|
|||
}
|
||||
}
|
||||
|
||||
Watermark.DrawWatermark(c); // watermark should only be applied on icons with width = 512
|
||||
// Watermark.DrawWatermark(c); // boi why would you watermark something you don't own ¯\_(ツ)_/¯
|
||||
ImageBoxVm.imageBoxViewModel.Set(ret, assetName);
|
||||
}
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -57,5 +57,13 @@ namespace FModel.Creator.Icons
|
|||
public static void DrawPreviewImage(SKCanvas c, IBase icon) =>
|
||||
c.DrawBitmap(icon.IconImage ?? icon.FallbackImage, new SKRect(icon.Margin, icon.Margin, icon.Width - icon.Margin, icon.Height - icon.Margin),
|
||||
new SKPaint { FilterQuality = SKFilterQuality.High, IsAntialias = true });
|
||||
|
||||
public static void DrawNotStretchedPreviewImage(SKCanvas c, IBase icon)
|
||||
{
|
||||
SKBitmap i = icon.IconImage ?? icon.FallbackImage;
|
||||
int x = i.Width < icon.Width ? ((icon.Width / 2) - (i.Width / 2)) : icon.Margin;
|
||||
c.DrawBitmap(i, new SKRect(x, icon.Margin, (x + i.Width) - (icon.Margin * 2), i.Height - icon.Margin),
|
||||
new SKPaint { FilterQuality = SKFilterQuality.High, IsAntialias = true });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -157,96 +157,92 @@ namespace FModel.Creator.Texts
|
|||
{
|
||||
_NAME_TEXT_SIZE = 45;
|
||||
string text = icon.DisplayName;
|
||||
if (!string.IsNullOrEmpty(text))
|
||||
SKTextAlign side = SKTextAlign.Center;
|
||||
int x = icon.Width / 2;
|
||||
int y = _STARTER_TEXT_POSITION + _NAME_TEXT_SIZE;
|
||||
switch ((EIconDesign)Properties.Settings.Default.AssetsIconDesign)
|
||||
{
|
||||
SKTextAlign side = SKTextAlign.Center;
|
||||
int x = icon.Width / 2;
|
||||
int y = _STARTER_TEXT_POSITION + _NAME_TEXT_SIZE;
|
||||
switch ((EIconDesign)Properties.Settings.Default.AssetsIconDesign)
|
||||
{
|
||||
case EIconDesign.Mini:
|
||||
{
|
||||
_NAME_TEXT_SIZE = 47;
|
||||
text = text.ToUpperInvariant();
|
||||
break;
|
||||
}
|
||||
case EIconDesign.Flat:
|
||||
{
|
||||
_NAME_TEXT_SIZE = 47;
|
||||
side = SKTextAlign.Right;
|
||||
x = icon.Width - icon.Margin * 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SKPaint namePaint = new SKPaint
|
||||
{
|
||||
IsAntialias = true,
|
||||
FilterQuality = SKFilterQuality.High,
|
||||
Typeface = TypeFaces.DisplayNameTypeface,
|
||||
TextSize = _NAME_TEXT_SIZE,
|
||||
Color = SKColors.White,
|
||||
TextAlign = side
|
||||
};
|
||||
|
||||
if ((ELanguage)Properties.Settings.Default.AssetsLanguage == ELanguage.Arabic)
|
||||
{
|
||||
SKShaper shaper = new SKShaper(namePaint.Typeface);
|
||||
float shapedTextWidth;
|
||||
|
||||
while (true)
|
||||
case EIconDesign.Mini:
|
||||
{
|
||||
SKShaper.Result shapedText = shaper.Shape(text, namePaint);
|
||||
shapedTextWidth = shapedText.Points[^1].X + namePaint.TextSize / 2f;
|
||||
|
||||
if (shapedTextWidth > icon.Width - icon.Margin * 2)
|
||||
{
|
||||
namePaint.TextSize = _NAME_TEXT_SIZE -= 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
_NAME_TEXT_SIZE = 47;
|
||||
text = text.ToUpperInvariant();
|
||||
break;
|
||||
}
|
||||
case EIconDesign.Flat:
|
||||
{
|
||||
_NAME_TEXT_SIZE = 47;
|
||||
side = SKTextAlign.Right;
|
||||
x = icon.Width - icon.Margin * 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
c.DrawShapedText(shaper, text, (icon.Width - shapedTextWidth) / 2f, y, namePaint);
|
||||
}
|
||||
else
|
||||
SKPaint namePaint = new SKPaint
|
||||
{
|
||||
IsAntialias = true,
|
||||
FilterQuality = SKFilterQuality.High,
|
||||
Typeface = TypeFaces.DisplayNameTypeface,
|
||||
TextSize = _NAME_TEXT_SIZE,
|
||||
Color = SKColors.White,
|
||||
TextAlign = side
|
||||
};
|
||||
|
||||
if ((ELanguage)Properties.Settings.Default.AssetsLanguage == ELanguage.Arabic)
|
||||
{
|
||||
SKShaper shaper = new SKShaper(namePaint.Typeface);
|
||||
float shapedTextWidth;
|
||||
|
||||
while (true)
|
||||
{
|
||||
// resize if too long
|
||||
while (namePaint.MeasureText(text) > icon.Width - icon.Margin * 2)
|
||||
SKShaper.Result shapedText = shaper.Shape(text, namePaint);
|
||||
shapedTextWidth = shapedText.Points[^1].X + namePaint.TextSize / 2f;
|
||||
|
||||
if (shapedTextWidth > icon.Width - icon.Margin * 2)
|
||||
{
|
||||
namePaint.TextSize = _NAME_TEXT_SIZE -= 1;
|
||||
}
|
||||
|
||||
c.DrawText(text, x, y, namePaint);
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
c.DrawShapedText(shaper, text, side == SKTextAlign.Right ? (x - shapedTextWidth) : ((icon.Width - shapedTextWidth) / 2f), y, namePaint);
|
||||
}
|
||||
else
|
||||
{
|
||||
// resize if too long
|
||||
while (namePaint.MeasureText(text) > icon.Width - icon.Margin * 2)
|
||||
{
|
||||
namePaint.TextSize = _NAME_TEXT_SIZE -= 1;
|
||||
}
|
||||
|
||||
c.DrawText(text, x, y, namePaint);
|
||||
}
|
||||
}
|
||||
|
||||
public static void DrawDescription(SKCanvas c, IBase icon)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(icon.Description)) return;
|
||||
|
||||
int maxLine = 4;
|
||||
_BOTTOM_TEXT_SIZE = 15;
|
||||
string text = icon.Description;
|
||||
ETextSide side = ETextSide.Center;
|
||||
if (text != null)
|
||||
switch ((EIconDesign)Properties.Settings.Default.AssetsIconDesign)
|
||||
{
|
||||
switch ((EIconDesign)Properties.Settings.Default.AssetsIconDesign)
|
||||
{
|
||||
case EIconDesign.Mini:
|
||||
{
|
||||
maxLine = 5;
|
||||
_BOTTOM_TEXT_SIZE = icon.Margin;
|
||||
text = text.ToUpper();
|
||||
break;
|
||||
}
|
||||
case EIconDesign.Flat:
|
||||
{
|
||||
side = ETextSide.Right;
|
||||
break;
|
||||
}
|
||||
}
|
||||
case EIconDesign.Mini:
|
||||
{
|
||||
maxLine = 5;
|
||||
_BOTTOM_TEXT_SIZE = icon.Margin;
|
||||
text = text.ToUpper();
|
||||
break;
|
||||
}
|
||||
case EIconDesign.Flat:
|
||||
{
|
||||
side = ETextSide.Right;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SKPaint descriptionPaint = new SKPaint
|
||||
|
|
@ -257,7 +253,7 @@ namespace FModel.Creator.Texts
|
|||
TextSize = 13,
|
||||
Color = SKColors.White,
|
||||
};
|
||||
|
||||
|
||||
// wrap if too long
|
||||
Helper.DrawCenteredMultilineText(c, text, maxLine, icon, side,
|
||||
new SKRect(icon.Margin, _STARTER_TEXT_POSITION + _NAME_TEXT_SIZE, icon.Width - icon.Margin, icon.Height - _BOTTOM_TEXT_SIZE),
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@
|
|||
<StartupObject>FModel.App</StartupObject>
|
||||
<Authors>Asval</Authors>
|
||||
<Company></Company>
|
||||
<AssemblyVersion>3.1.1.2</AssemblyVersion>
|
||||
<FileVersion>3.1.1.2</FileVersion>
|
||||
<AssemblyVersion>3.1.1.3</AssemblyVersion>
|
||||
<FileVersion>3.1.1.3</FileVersion>
|
||||
<PackageIcon>FModel.ico</PackageIcon>
|
||||
<PackageIconUrl />
|
||||
<PackageProjectUrl>https://github.com/iAmAsval/FModel</PackageProjectUrl>
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ namespace FModel.Grabber.Paks
|
|||
{
|
||||
static class PaksGrabber
|
||||
{
|
||||
private static readonly Regex _pakFileRegex = new Regex(@"^FortniteGame/Content/Paks/.+\.pak$", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
|
||||
private static readonly Regex _pakFileRegex = new Regex(@"^FortniteGame/Content/Paks/pakchunk(?:0|10.*|\w+)-WindowsClient\.pak$", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
|
||||
|
||||
public static async Task PopulateMenu()
|
||||
{
|
||||
|
|
|
|||
9
FModel/Properties/Resources.Designer.cs
generated
9
FModel/Properties/Resources.Designer.cs
generated
|
|
@ -960,6 +960,15 @@ namespace FModel.Properties {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recherche une chaîne localisée semblable à Fat.
|
||||
/// </summary>
|
||||
public static string Fat {
|
||||
get {
|
||||
return ResourceManager.GetString("Fat", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Recherche une chaîne localisée semblable à FBKP Files (*.fbkp)|*.fbkp|All Files (*.*)|*.*.
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -821,4 +821,10 @@ Jetzt ist es die am häufigsten genutzte freie Software um mit Fortnite zu leake
|
|||
<data name="SkipThisVersion" xml:space="preserve">
|
||||
<value>Diese Version überspringen</value>
|
||||
</data>
|
||||
<data name="DrawStats" xml:space="preserve">
|
||||
<value>Zeige Statistiken</value>
|
||||
</data>
|
||||
<data name="Fat" xml:space="preserve">
|
||||
<value>Fett</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -1031,4 +1031,10 @@ Ahora es el software gratuito más utilizado para filtrar en Fortnite.</value>
|
|||
<data name="WithPosition" xml:space="preserve">
|
||||
<value>Posición / Valor</value>
|
||||
</data>
|
||||
<data name="Fat" xml:space="preserve">
|
||||
<value>Gordo</value>
|
||||
</data>
|
||||
<data name="DrawStats" xml:space="preserve">
|
||||
<value>Mostrar estadísticas</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -831,4 +831,7 @@ C'est maintenant le logiciel gratuit le plus utilisé pour leak sur Fortnite.</v
|
|||
<data name="DrawStats" xml:space="preserve">
|
||||
<value>Afficher les statistiques</value>
|
||||
</data>
|
||||
<data name="Fat" xml:space="preserve">
|
||||
<value>Gros</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -787,4 +787,10 @@ Col tempo sono state aggiunte nuove funzioni e molti altri utenti hanno comincia
|
|||
<data name="MaybeLater" xml:space="preserve">
|
||||
<value>Magari più avanti</value>
|
||||
</data>
|
||||
<data name="DrawStats" xml:space="preserve">
|
||||
<value>Mostra statistiche</value>
|
||||
</data>
|
||||
<data name="Fat" xml:space="preserve">
|
||||
<value>Grosso</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -1085,4 +1085,7 @@ It's now the most used free software to leak on Fortnite.</value>
|
|||
<data name="DrawStats" xml:space="preserve">
|
||||
<value>Show statistics</value>
|
||||
</data>
|
||||
<data name="Fat" xml:space="preserve">
|
||||
<value>Fat</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -780,4 +780,10 @@
|
|||
<data name="SkipThisVersion" xml:space="preserve">
|
||||
<value>Пропустить эту версию</value>
|
||||
</data>
|
||||
<data name="DrawStats" xml:space="preserve">
|
||||
<value>Посмотреть Статистику</value>
|
||||
</data>
|
||||
<data name="Fat" xml:space="preserve">
|
||||
<value>Жирный</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -790,4 +790,10 @@
|
|||
<data name="SkipThisVersion" xml:space="preserve">
|
||||
<value>跳过此版本</value>
|
||||
</data>
|
||||
<data name="DrawStats" xml:space="preserve">
|
||||
<value>显示统计数据</value>
|
||||
</data>
|
||||
<data name="Fat" xml:space="preserve">
|
||||
<value>厚</value>
|
||||
</data>
|
||||
</root>
|
||||
Loading…
Reference in New Issue
Block a user