custom challenges watermark + drawstring reward id + fixed language pack loading when it wasn't needed

This commit is contained in:
Asval 2019-06-21 03:17:35 +02:00
parent b432ea1235
commit 4e23d23dfb
9 changed files with 177 additions and 48 deletions

View File

@ -133,6 +133,12 @@
<setting name="IconLanguage" serializeAs="String">
<value>English</value>
</setting>
<setting name="challengesDebug" serializeAs="String">
<value>False</value>
</setting>
<setting name="challengesWatermark" serializeAs="String">
<value />
</setting>
</FModel.Properties.Settings>
</userSettings>
<runtime>

View File

@ -61,6 +61,10 @@ namespace FModel.Forms
this.label6 = new System.Windows.Forms.Label();
this.textBox4 = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.groupBox6 = new System.Windows.Forms.GroupBox();
this.checkBox2 = new System.Windows.Forms.CheckBox();
this.textBox6 = new System.Windows.Forms.TextBox();
this.label12 = new System.Windows.Forms.Label();
this.groupBox3.SuspendLayout();
this.groupBox2.SuspendLayout();
this.groupBox4.SuspendLayout();
@ -70,6 +74,7 @@ namespace FModel.Forms
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.imgsPerRow)).BeginInit();
this.groupBox5.SuspendLayout();
this.groupBox6.SuspendLayout();
this.SuspendLayout();
//
// groupBox3
@ -132,7 +137,7 @@ namespace FModel.Forms
//
this.OKButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.OKButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.OKButton.Location = new System.Drawing.Point(475, 476);
this.OKButton.Location = new System.Drawing.Point(475, 527);
this.OKButton.Name = "OKButton";
this.OKButton.Size = new System.Drawing.Size(97, 21);
this.OKButton.TabIndex = 15;
@ -295,7 +300,7 @@ namespace FModel.Forms
this.groupBox1.Controls.Add(this.label5);
this.groupBox1.Controls.Add(this.textBox3);
this.groupBox1.Controls.Add(this.label4);
this.groupBox1.Location = new System.Drawing.Point(12, 420);
this.groupBox1.Location = new System.Drawing.Point(12, 473);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(560, 46);
this.groupBox1.TabIndex = 17;
@ -414,11 +419,50 @@ namespace FModel.Forms
this.label2.TabIndex = 3;
this.label2.Text = "EPIC Email:";
//
// groupBox6
//
this.groupBox6.Controls.Add(this.checkBox2);
this.groupBox6.Controls.Add(this.textBox6);
this.groupBox6.Controls.Add(this.label12);
this.groupBox6.Location = new System.Drawing.Point(12, 421);
this.groupBox6.Name = "groupBox6";
this.groupBox6.Size = new System.Drawing.Size(560, 46);
this.groupBox6.TabIndex = 19;
this.groupBox6.TabStop = false;
this.groupBox6.Text = "Challenges";
//
// checkBox2
//
this.checkBox2.AutoSize = true;
this.checkBox2.Location = new System.Drawing.Point(448, 21);
this.checkBox2.Name = "checkBox2";
this.checkBox2.Size = new System.Drawing.Size(105, 17);
this.checkBox2.TabIndex = 27;
this.checkBox2.Text = "Draw Reward ID";
this.checkBox2.UseVisualStyleBackColor = true;
//
// textBox6
//
this.textBox6.Location = new System.Drawing.Point(74, 19);
this.textBox6.Name = "textBox6";
this.textBox6.Size = new System.Drawing.Size(359, 20);
this.textBox6.TabIndex = 8;
//
// label12
//
this.label12.AutoSize = true;
this.label12.Location = new System.Drawing.Point(6, 22);
this.label12.Name = "label12";
this.label12.Size = new System.Drawing.Size(62, 13);
this.label12.TabIndex = 9;
this.label12.Text = "Watermark:";
//
// Settings
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(584, 509);
this.ClientSize = new System.Drawing.Size(584, 560);
this.Controls.Add(this.groupBox6);
this.Controls.Add(this.groupBox5);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.groupBox4);
@ -446,6 +490,8 @@ namespace FModel.Forms
((System.ComponentModel.ISupportInitialize)(this.imgsPerRow)).EndInit();
this.groupBox5.ResumeLayout(false);
this.groupBox5.PerformLayout();
this.groupBox6.ResumeLayout(false);
this.groupBox6.PerformLayout();
this.ResumeLayout(false);
}
@ -484,5 +530,9 @@ namespace FModel.Forms
private System.Windows.Forms.CheckBox checkBox1;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.GroupBox groupBox6;
private System.Windows.Forms.CheckBox checkBox2;
private System.Windows.Forms.TextBox textBox6;
private System.Windows.Forms.Label label12;
}
}

View File

@ -10,6 +10,7 @@ namespace FModel.Forms
{
private static string _paKsPathBefore;
private static string _outputPathBefore;
private static string _oldLanguage;
public Settings()
{
@ -21,6 +22,14 @@ namespace FModel.Forms
textBox4.Text = Properties.Settings.Default.eEmail;
textBox5.Text = Properties.Settings.Default.ePassword;
textBox6.Text = Properties.Settings.Default.challengesWatermark;
checkBox2.Checked = Properties.Settings.Default.challengesDebug;
if (string.IsNullOrWhiteSpace(textBox6.Text))
{
textBox6.Text = "{Bundle_Name} Generated using FModel & JohnWickParse - {Date}";
}
else { textBox6.Text = Properties.Settings.Default.challengesWatermark; }
//MERGER
textBox3.Text = Properties.Settings.Default.mergerFileName;
imgsPerRow.Value = Properties.Settings.Default.mergerImagesRow;
@ -68,6 +77,7 @@ namespace FModel.Forms
}
}
_oldLanguage = Properties.Settings.Default.IconLanguage;
comboBox1.SelectedIndex = comboBox1.FindStringExact(Properties.Settings.Default.IconLanguage);
_paKsPathBefore = Properties.Settings.Default.PAKsPath;
@ -97,6 +107,9 @@ namespace FModel.Forms
Properties.Settings.Default.eEmail = textBox4.Text;
Properties.Settings.Default.ePassword = textBox5.Text;
Properties.Settings.Default.challengesDebug = checkBox2.Checked;
Properties.Settings.Default.challengesWatermark = textBox6.Text;
//MERGER
Properties.Settings.Default.mergerFileName = textBox3.Text;
Properties.Settings.Default.mergerImagesRow = Decimal.ToInt32(imgsPerRow.Value);
@ -117,7 +130,10 @@ namespace FModel.Forms
//LOCRES
Properties.Settings.Default.IconLanguage = comboBox1.SelectedItem.ToString();
LoadLocRes.LoadMySelectedLocRes(Properties.Settings.Default.IconLanguage);
if (comboBox1.SelectedItem.ToString() != _oldLanguage)
{
LoadLocRes.LoadMySelectedLocRes(Properties.Settings.Default.IconLanguage);
}
Properties.Settings.Default.Save(); //SAVE
Close();

View File

@ -1279,48 +1279,50 @@ namespace FModel
{
UpdateConsole(ThePak.CurrentUsedItem + " is an Item Definition", Color.FromArgb(255, 66, 244, 66), "Success");
Bitmap bmp = new Bitmap(522, 522);
Graphics g = Graphics.FromImage(bmp);
g.TextRenderingHint = TextRenderingHint.AntiAlias;
Rarity.DrawRarity(theItem, g, specialMode);
ItemIcon.ItemIconPath = string.Empty;
ItemIcon.GetItemIcon(theItem, Settings.Default.loadFeaturedImage);
if (File.Exists(ItemIcon.ItemIconPath))
using (Bitmap bmp = new Bitmap(522, 522))
{
Image itemIcon;
using (var bmpTemp = new Bitmap(ItemIcon.ItemIconPath))
Graphics g = Graphics.FromImage(bmp);
g.TextRenderingHint = TextRenderingHint.AntiAlias;
Rarity.DrawRarity(theItem, g, specialMode);
ItemIcon.ItemIconPath = string.Empty;
ItemIcon.GetItemIcon(theItem, Settings.Default.loadFeaturedImage);
if (File.Exists(ItemIcon.ItemIconPath))
{
itemIcon = new Bitmap(bmpTemp);
Image itemIcon;
using (var bmpTemp = new Bitmap(ItemIcon.ItemIconPath))
{
itemIcon = new Bitmap(bmpTemp);
}
g.DrawImage(ImageUtilities.ResizeImage(itemIcon, 512, 512), new Point(5, 5));
}
g.DrawImage(ImageUtilities.ResizeImage(itemIcon, 512, 512), new Point(5, 5));
}
else
{
Image itemIcon = Resources.unknown512;
g.DrawImage(itemIcon, new Point(0, 0));
}
ItemIcon.DrawWatermark(g);
Image bg512 = Resources.BG512;
g.DrawImage(bg512, new Point(5, 383));
DrawText.DrawTexts(theItem, g, specialMode);
if (autoSaveImagesToolStripMenuItem.Checked || updateModeToolStripMenuItem.Checked)
{
bmp.Save(App.DefaultOutputPath + "\\Icons\\" + ThePak.CurrentUsedItem + ".png", ImageFormat.Png);
if (File.Exists(App.DefaultOutputPath + "\\Icons\\" + ThePak.CurrentUsedItem + ".png"))
else
{
AppendText(ThePak.CurrentUsedItem, Color.DarkRed);
AppendText(" successfully saved", Color.Black, true);
Image itemIcon = Resources.unknown512;
g.DrawImage(itemIcon, new Point(0, 0));
}
}
return bmp;
ItemIcon.DrawWatermark(g);
Image bg512 = Resources.BG512;
g.DrawImage(bg512, new Point(5, 383));
DrawText.DrawTexts(theItem, g, specialMode);
if (autoSaveImagesToolStripMenuItem.Checked || updateModeToolStripMenuItem.Checked)
{
bmp.Save(App.DefaultOutputPath + "\\Icons\\" + ThePak.CurrentUsedItem + ".png", ImageFormat.Png);
if (File.Exists(App.DefaultOutputPath + "\\Icons\\" + ThePak.CurrentUsedItem + ".png"))
{
AppendText(ThePak.CurrentUsedItem, Color.DarkRed);
AppendText(" successfully saved", Color.Black, true);
}
}
return bmp;
}
}
@ -1375,7 +1377,7 @@ namespace FModel
//in case you wanna make some changes
//BundleDesign.toDrawOn.DrawRectangle(new Pen(new SolidBrush(Color.Red)), new Rectangle(107, BundleDesign.theY + 7, 2000, 93)); //rectangle that resize the font -> used for "Font goodFont = "
//BundleDesign.toDrawOn.DrawRectangle(new Pen(new SolidBrush(Color.Green)), new Rectangle(107, BundleDesign.theY + 7, 2000, 75)); //rectangle the font needs to be fit with
//BundleDesign.toDrawOn.DrawRectangle(new Pen(new SolidBrush(Color.Blue)), new Rectangle(107, BundleDesign.theY + 7, 2000, 75)); //rectangle the font needs to be fit with
//draw quest description
Font goodFont = FontUtilities.FindFont(BundleDesign.toDrawOn, BundleInfos.BundleData[i].questDescr, new Rectangle(107, BundleDesign.theY + 7, 2000, 93).Size, new Font(FontUtilities.pfc.Families[1], 50)); //size in "new Font()" is never check
@ -1428,6 +1430,7 @@ namespace FModel
AppendText(" successfully saved", Color.Black, true);
}
}
bmp.Dispose();
}
/// <summary>
@ -1500,10 +1503,13 @@ namespace FModel
else
UpdateConsole("Couldn't convert " + ThePak.CurrentUsedItem, Color.FromArgb(255, 244, 66, 66), "Error");
}
/// <summary>
/// todo: overwrite existing extracted font
/// </summary>
/// <param name="file"></param>
private void ConvertToTtf(string file)
{
if (File.Exists(file)) { File.Delete(file); }
File.Move(file, Path.ChangeExtension(file, ".ttf") ?? throw new InvalidOperationException());
UpdateConsole(ThePak.CurrentUsedItem + " successfully converter to a font", Color.FromArgb(255, 66, 244, 66), "Success");
}

View File

@ -207,9 +207,23 @@ namespace FModel
/// <param name="myBitmap"></param>
public static void drawWatermark(Bitmap myBitmap)
{
string text = SearchResource.getTextByKey(myItem.DisplayName.Key, myItem.DisplayName.SourceString);
string text = Settings.Default.challengesWatermark;
if (string.IsNullOrWhiteSpace(text))
{
text = "{Bundle_Name} Generated using FModel & JohnWickParse - {Date}";
}
if (text.Contains("{Bundle_Name}"))
{
text = text.Replace("{Bundle_Name}", SearchResource.getTextByKey(myItem.DisplayName.Key, myItem.DisplayName.SourceString));
}
if (text.Contains("{Date}"))
{
text = text.Replace("{Date}", DateTime.Now.ToString("dd/MM/yyyy"));
}
toDrawOn.FillRectangle(new SolidBrush(Color.FromArgb(100, 0, 0, 0)), new Rectangle(0, theY + 240, myBitmap.Width, 40));
toDrawOn.DrawString(text + " Generated using FModel & JohnWickParse - " + DateTime.Now.ToString("dd/MM/yyyy"), new Font(FontUtilities.pfc.Families[0], 20), new SolidBrush(Color.FromArgb(150, 255, 255, 255)), new Point(myBitmap.Width / 2, theY + 250), FontUtilities.centeredString);
toDrawOn.DrawString(text, new Font(FontUtilities.pfc.Families[0], 20), new SolidBrush(Color.FromArgb(150, 255, 255, 255)), new Point(myBitmap.Width / 2, theY + 250), FontUtilities.centeredString);
}
private static void drawForbyteReward()

View File

@ -71,7 +71,7 @@ namespace FModel
{
ItemIcon.SearchAthIteDefIcon(itemId[i]);
drawIcon();
drawIcon(item);
}
}
}
@ -127,7 +127,7 @@ namespace FModel
ItemIcon.ItemIconPath = JohnWick.AssetToTexture2D(textureFile);
}
drawIcon();
drawIcon(bannerName);
}
}
}
@ -139,10 +139,16 @@ namespace FModel
}
}
private static void drawIcon()
private static void drawIcon(string itemId)
{
if (File.Exists(ItemIcon.ItemIconPath))
{
if (Settings.Default.challengesDebug)
{
//draw quest reward id
BundleDesign.toDrawOn.DrawString(itemId, new Font("Courier New", 12), new SolidBrush(Color.White), new RectangleF(2110, BundleDesign.theY + 30, 190, 60), FontUtilities.centeredStringLine);
}
Image itemIcon;
using (var bmpTemp = new Bitmap(ItemIcon.ItemIconPath))
{

View File

@ -514,5 +514,29 @@ namespace FModel.Properties {
this["IconLanguage"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool challengesDebug {
get {
return ((bool)(this["challengesDebug"]));
}
set {
this["challengesDebug"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string challengesWatermark {
get {
return ((string)(this["challengesWatermark"]));
}
set {
this["challengesWatermark"] = value;
}
}
}
}

View File

@ -125,5 +125,11 @@
<Setting Name="IconLanguage" Type="System.String" Scope="User">
<Value Profile="(Default)">English</Value>
</Setting>
<Setting Name="challengesDebug" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="challengesWatermark" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

View File

@ -83,6 +83,7 @@ This project is mainly based on what [UModel](https://github.com/gildor2/UModel)
I'd highly suggest you to use [UModel](https://github.com/gildor2/UModel) instead if you wanna use something made professionnaly.
## TODO
- [ ] Take a look at memory usage
- [ ] Code refactoring
- [ ] 2FA support
- [ ] Export Queue