Add highscore editing GUI

This commit is contained in:
Li 2023-01-14 19:46:18 -08:00
parent 99bc2a83a3
commit bf060a5df6
13 changed files with 721 additions and 49 deletions

View File

@ -0,0 +1,63 @@
using LibXom.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LibW4M.Data.Highscores
{
public class HighscoreCollective : SaveDataCollective
{
public HighscoreCollective(W4SaveFile fileBelongs, XomContainer mainContainer) : base(fileBelongs, mainContainer)
{
}
public override void Load()
{
// highscore data is stored after teams data section of TeamDataCollective.
int[] decompressedCollective = mainContainer.Decompress();
int teamsLen = decompressedCollective[0];
int highscoreStart = teamsLen + 1;
int highscoresLen = decompressedCollective[highscoreStart];
for (int i = 0; i < highscoresLen; i++)
{
HighscoreData highscoreData = new HighscoreData(fileBelongs, fileBelongs.xomFile.GetContainerById(decompressedCollective[highscoreStart + i + 1]));
collectiveEntries.Add(highscoreData);
}
}
public override void Save()
{
// Decompress the collective
int[] decompressedCollective = mainContainer.Decompress();
// get total length of teams collective
int teamsLen = decompressedCollective[0];
// Highscore collective starts right *after* the teams collective.
int highscoreStart = teamsLen + 1;
// get the current number of highscores.
int highscoresLen = Length;
// copy teams data from collective.
int[] teamsData = new int[teamsLen + 1];
Array.Copy(decompressedCollective, teamsData, teamsData.Length);
// copy teams data back to collective.
int[] newCollective = new int[teamsData.Length + highscoresLen + 1];
Array.Copy(teamsData, newCollective, teamsData.Length);
// populate highscores collective
newCollective[highscoreStart] = highscoresLen;
for (int i = 0; i < highscoresLen; i++)
{
HighscoreData highscoreData = collectiveEntries[i] as HighscoreData;
highscoreData.Save();
newCollective[highscoreStart + i + 1] = highscoreData.mainContainer.Id;
}
// Compress whole collective and update the underlying container.
mainContainer.CompressAndUpdate(newCollective);
}
}
}

View File

@ -0,0 +1,55 @@
using LibXom.Data;
using LibXom.Streams;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.PortableExecutable;
using System.Text;
using System.Threading.Tasks;
namespace LibW4M.Data.Highscores
{
public class HighscoreData : SaveDataEntry
{
public override string FriendlyName
{
get
{
return WinnerName.Value + " - " + WinnerTime.ToString();
}
}
public XomString WinnerName;
public int WinnerTime;
public HighscoreData(W4SaveFile fileBelongs, XomContainer mainContainer) : base(fileBelongs, mainContainer)
{
}
public override void Load()
{
using (XomStreamReader reader = new XomStreamReader(new MemoryStream(mainContainer.GetData())))
{
reader.Skip(3);
WinnerName = fileBelongs.LookupStringFromId(reader.ReadCompressedInt());
WinnerTime = reader.ReadInt32();
}
}
public override void Save()
{
using (MemoryStream ms = new MemoryStream())
{
using (XomStreamWriter writer = new XomStreamWriter(ms))
{
writer.Skip(3);
writer.WriteCompressedInt(WinnerName.Id);
writer.WriteInt32(WinnerTime);
ms.Seek(0x00, SeekOrigin.Begin);
mainContainer.SetData(ms.ToArray());
}
}
}
}
}

View File

@ -1,4 +1,5 @@
using LibW4M.Data;
using LibW4M.Data.Highscores;
using LibW4M.Data.Teams;
using LibW4M.Data.WeaponFactory;
using LibXom;
@ -12,6 +13,7 @@ namespace LibW4M
internal List<SaveDataEntry> collectives = new List<SaveDataEntry>();
private WeaponsCollective weaponFactoryCollective;
private TeamsCollective teamDataColective;
private HighscoreCollective highscoreCollective;
public WeaponsCollective WeaponFactoryCollective
{
get
@ -26,7 +28,13 @@ namespace LibW4M
return teamDataColective;
}
}
public HighscoreCollective HighscoreDataCollective
{
get
{
return highscoreCollective;
}
}
internal XomFile xomFile;
@ -106,7 +114,7 @@ namespace LibW4M
this.xomFile = w4Save;
weaponFactoryCollective = new WeaponsCollective(this, this.xomFile.GetTypeByName("WeaponFactoryCollective").Containers.First());
teamDataColective = new TeamsCollective(this, this.xomFile.GetTypeByName("TeamDataColective").Containers.First());
highscoreCollective = new HighscoreCollective(this, this.xomFile.GetTypeByName("TeamDataColective").Containers.First());
}
}
}

View File

@ -0,0 +1,156 @@
namespace W4Gui.Components
{
partial class HighscoresPanel
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.highscoreTabControl = new System.Windows.Forms.TabControl();
this.generalTab = new System.Windows.Forms.TabPage();
this.tblGeneral = new System.Windows.Forms.TableLayoutPanel();
this.lblWinnerTime = new System.Windows.Forms.Label();
this.lblWinnerName = new System.Windows.Forms.Label();
this.selWinnerName = new System.Windows.Forms.TextBox();
this.selWinnerTime = new W4Gui.Components.IntUpDown();
this.highscoreTabControl.SuspendLayout();
this.generalTab.SuspendLayout();
this.tblGeneral.SuspendLayout();
this.SuspendLayout();
//
// highscoreTabControl
//
this.highscoreTabControl.Controls.Add(this.generalTab);
this.highscoreTabControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.highscoreTabControl.HotTrack = true;
this.highscoreTabControl.Location = new System.Drawing.Point(0, 0);
this.highscoreTabControl.Name = "highscoreTabControl";
this.highscoreTabControl.SelectedIndex = 0;
this.highscoreTabControl.Size = new System.Drawing.Size(707, 419);
this.highscoreTabControl.TabIndex = 1;
//
// generalTab
//
this.generalTab.BackColor = System.Drawing.Color.Transparent;
this.generalTab.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.generalTab.Controls.Add(this.tblGeneral);
this.generalTab.Location = new System.Drawing.Point(4, 24);
this.generalTab.Name = "generalTab";
this.generalTab.Padding = new System.Windows.Forms.Padding(3);
this.generalTab.Size = new System.Drawing.Size(699, 391);
this.generalTab.TabIndex = 0;
this.generalTab.Text = "General";
//
// tblGeneral
//
this.tblGeneral.AutoSize = true;
this.tblGeneral.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Inset;
this.tblGeneral.ColumnCount = 2;
this.tblGeneral.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tblGeneral.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tblGeneral.Controls.Add(this.lblWinnerTime, 0, 1);
this.tblGeneral.Controls.Add(this.lblWinnerName, 0, 0);
this.tblGeneral.Controls.Add(this.selWinnerName, 1, 0);
this.tblGeneral.Controls.Add(this.selWinnerTime, 1, 1);
this.tblGeneral.Dock = System.Windows.Forms.DockStyle.Top;
this.tblGeneral.Location = new System.Drawing.Point(3, 3);
this.tblGeneral.Name = "tblGeneral";
this.tblGeneral.RowCount = 2;
this.tblGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tblGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tblGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tblGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tblGeneral.Size = new System.Drawing.Size(689, 64);
this.tblGeneral.TabIndex = 0;
//
// lblWinnerTime
//
this.lblWinnerTime.AutoSize = true;
this.lblWinnerTime.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblWinnerTime.Location = new System.Drawing.Point(5, 33);
this.lblWinnerTime.Name = "lblWinnerTime";
this.lblWinnerTime.Size = new System.Drawing.Size(83, 29);
this.lblWinnerTime.TabIndex = 17;
this.lblWinnerTime.Text = "Winner Time:";
this.lblWinnerTime.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// lblWinnerName
//
this.lblWinnerName.AutoSize = true;
this.lblWinnerName.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblWinnerName.Location = new System.Drawing.Point(5, 2);
this.lblWinnerName.Name = "lblWinnerName";
this.lblWinnerName.Size = new System.Drawing.Size(83, 29);
this.lblWinnerName.TabIndex = 0;
this.lblWinnerName.Text = "Winner Name:";
this.lblWinnerName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// selWinnerName
//
this.selWinnerName.Dock = System.Windows.Forms.DockStyle.Top;
this.selWinnerName.Location = new System.Drawing.Point(96, 5);
this.selWinnerName.Name = "selWinnerName";
this.selWinnerName.PlaceholderText = "Winner Name";
this.selWinnerName.Size = new System.Drawing.Size(588, 23);
this.selWinnerName.TabIndex = 1;
//
// selWinnerTime
//
this.selWinnerTime.Dock = System.Windows.Forms.DockStyle.Top;
this.selWinnerTime.Location = new System.Drawing.Point(96, 36);
this.selWinnerTime.Name = "selWinnerTime";
this.selWinnerTime.Size = new System.Drawing.Size(588, 23);
this.selWinnerTime.TabIndex = 18;
this.selWinnerTime.Text = "0";
this.selWinnerTime.Value = 0;
//
// HighscoresPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.LightGray;
this.Controls.Add(this.highscoreTabControl);
this.Name = "HighscoresPanel";
this.Size = new System.Drawing.Size(707, 419);
this.highscoreTabControl.ResumeLayout(false);
this.generalTab.ResumeLayout(false);
this.generalTab.PerformLayout();
this.tblGeneral.ResumeLayout(false);
this.tblGeneral.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private TabControl highscoreTabControl;
private TabPage generalTab;
private TableLayoutPanel tblGeneral;
private Label lblWinnerName;
private TextBox selWinnerName;
private Label lblWinnerTime;
private IntUpDown selWinnerTime;
}
}

View File

@ -0,0 +1,40 @@
using LibW4M.Data.Highscores;
using LibW4M.Data.Teams;
using LibW4M.Data.WeaponFactory;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using W4Gui.Dialogs;
namespace W4Gui.Components
{
public partial class HighscoresPanel : UserControl
{
public HighscoresPanel()
{
InitializeComponent();
}
public void SaveHighscoreData(ref HighscoreData highscore)
{
// Load general
highscore.WinnerName = DataManager.SaveFile.LookupString(selWinnerName.Text);
highscore.WinnerTime = selWinnerTime.Value;
}
public void LoadHighscoreData(HighscoreData highscore)
{
// Load general
this.selWinnerName.Text = highscore.WinnerName.Value;
this.selWinnerTime.Value = highscore.WinnerTime;
}
}
}

View File

@ -0,0 +1,60 @@
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -31,6 +31,8 @@
this.teamTabControl = new System.Windows.Forms.TabControl();
this.generalTab = new System.Windows.Forms.TabPage();
this.tblGeneral = new System.Windows.Forms.TableLayoutPanel();
this.selPlayerUsername = new System.Windows.Forms.TextBox();
this.lblPlayer = new System.Windows.Forms.Label();
this.lblWormName = new System.Windows.Forms.Label();
this.lblSkillLevel = new System.Windows.Forms.Label();
this.lblTeamName = new System.Windows.Forms.Label();
@ -40,6 +42,7 @@
this.apperanceTab = new System.Windows.Forms.TabPage();
this.tblApperance = new System.Windows.Forms.TableLayoutPanel();
this.lblGlasses = new System.Windows.Forms.Label();
this.lblFace = new System.Windows.Forms.Label();
this.lblGloves = new System.Windows.Forms.Label();
this.lblHat = new System.Windows.Forms.Label();
this.lblSpeech = new System.Windows.Forms.Label();
@ -51,6 +54,7 @@
this.selHat = new System.Windows.Forms.TextBox();
this.selGloves = new System.Windows.Forms.TextBox();
this.selGlasses = new System.Windows.Forms.TextBox();
this.selFace = new System.Windows.Forms.TextBox();
this.storyTab = new System.Windows.Forms.TabPage();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.tblStoryFlags = new System.Windows.Forms.TableLayoutPanel();
@ -80,10 +84,6 @@
this.tblWeapButtonSep = new System.Windows.Forms.TableLayoutPanel();
this.btnEditWeapon = new System.Windows.Forms.Button();
this.btnChangeWeapon = new System.Windows.Forms.Button();
this.lblPlayer = new System.Windows.Forms.Label();
this.selPlayerUsername = new System.Windows.Forms.TextBox();
this.selFace = new System.Windows.Forms.TextBox();
this.lblFace = new System.Windows.Forms.Label();
this.teamTabControl.SuspendLayout();
this.generalTab.SuspendLayout();
this.tblGeneral.SuspendLayout();
@ -145,13 +145,32 @@
this.tblGeneral.Name = "tblGeneral";
this.tblGeneral.RowCount = 4;
this.tblGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tblGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tblGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tblGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tblGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tblGeneral.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tblGeneral.Size = new System.Drawing.Size(689, 379);
this.tblGeneral.TabIndex = 0;
//
// selPlayerUsername
//
this.selPlayerUsername.Dock = System.Windows.Forms.DockStyle.Top;
this.selPlayerUsername.Location = new System.Drawing.Point(96, 36);
this.selPlayerUsername.Name = "selPlayerUsername";
this.selPlayerUsername.PlaceholderText = "Computer Name";
this.selPlayerUsername.Size = new System.Drawing.Size(588, 23);
this.selPlayerUsername.TabIndex = 18;
//
// lblPlayer
//
this.lblPlayer.AutoSize = true;
this.lblPlayer.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPlayer.Location = new System.Drawing.Point(5, 33);
this.lblPlayer.Name = "lblPlayer";
this.lblPlayer.Size = new System.Drawing.Size(83, 29);
this.lblPlayer.TabIndex = 17;
this.lblPlayer.Text = "Username:";
this.lblPlayer.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// lblWormName
//
this.lblWormName.AutoSize = true;
@ -278,6 +297,17 @@
this.lblGlasses.Text = "Glasses:";
this.lblGlasses.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// lblFace
//
this.lblFace.AutoSize = true;
this.lblFace.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblFace.Location = new System.Drawing.Point(5, 188);
this.lblFace.Name = "lblFace";
this.lblFace.Size = new System.Drawing.Size(83, 29);
this.lblFace.TabIndex = 10;
this.lblFace.Text = "Face:";
this.lblFace.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// lblGloves
//
this.lblGloves.AutoSize = true;
@ -383,6 +413,14 @@
this.selGlasses.Size = new System.Drawing.Size(588, 23);
this.selGlasses.TabIndex = 14;
//
// selFace
//
this.selFace.Dock = System.Windows.Forms.DockStyle.Top;
this.selFace.Location = new System.Drawing.Point(96, 191);
this.selFace.Name = "selFace";
this.selFace.Size = new System.Drawing.Size(588, 23);
this.selFace.TabIndex = 15;
//
// storyTab
//
this.storyTab.BackColor = System.Drawing.Color.Transparent;
@ -749,45 +787,6 @@
this.btnChangeWeapon.UseVisualStyleBackColor = true;
this.btnChangeWeapon.Click += new System.EventHandler(this.btnChangeWeapon_Click);
//
// lblPlayer
//
this.lblPlayer.AutoSize = true;
this.lblPlayer.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblPlayer.Location = new System.Drawing.Point(5, 33);
this.lblPlayer.Name = "lblPlayer";
this.lblPlayer.Size = new System.Drawing.Size(83, 29);
this.lblPlayer.TabIndex = 17;
this.lblPlayer.Text = "Username:";
this.lblPlayer.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// selPlayerUsername
//
this.selPlayerUsername.Dock = System.Windows.Forms.DockStyle.Top;
this.selPlayerUsername.Location = new System.Drawing.Point(96, 36);
this.selPlayerUsername.Name = "selPlayerUsername";
this.selPlayerUsername.PlaceholderText = "Computer Name";
this.selPlayerUsername.Size = new System.Drawing.Size(588, 23);
this.selPlayerUsername.TabIndex = 18;
//
// selFace
//
this.selFace.Dock = System.Windows.Forms.DockStyle.Top;
this.selFace.Location = new System.Drawing.Point(96, 191);
this.selFace.Name = "selFace";
this.selFace.Size = new System.Drawing.Size(588, 23);
this.selFace.TabIndex = 15;
//
// lblFace
//
this.lblFace.AutoSize = true;
this.lblFace.Dock = System.Windows.Forms.DockStyle.Fill;
this.lblFace.Location = new System.Drawing.Point(5, 188);
this.lblFace.Name = "lblFace";
this.lblFace.Size = new System.Drawing.Size(83, 29);
this.lblFace.TabIndex = 10;
this.lblFace.Text = "Face:";
this.lblFace.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// TeamsPanel
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);

66
W4Gui/Main.Designer.cs generated
View File

@ -43,10 +43,16 @@ namespace W4Gui
this.weaponPage = new W4Gui.Tabs.WeaponsTab();
this.teamTab = new System.Windows.Forms.TabPage();
this.teamsPage = new W4Gui.Tabs.TeamsTab();
this.schemeTab = new System.Windows.Forms.TabPage();
this.highscoreTab = new System.Windows.Forms.TabPage();
this.highscoresPage = new W4Gui.Tabs.HighscoresTab();
this.inputTab = new System.Windows.Forms.TabPage();
this.variablesTab = new System.Windows.Forms.TabPage();
this.mainMenuStrip.SuspendLayout();
this.mainTabControl.SuspendLayout();
this.weaponTab.SuspendLayout();
this.teamTab.SuspendLayout();
this.highscoreTab.SuspendLayout();
this.SuspendLayout();
//
// mainMenuStrip
@ -120,6 +126,10 @@ namespace W4Gui
//
this.mainTabControl.Controls.Add(this.weaponTab);
this.mainTabControl.Controls.Add(this.teamTab);
this.mainTabControl.Controls.Add(this.schemeTab);
this.mainTabControl.Controls.Add(this.highscoreTab);
this.mainTabControl.Controls.Add(this.inputTab);
this.mainTabControl.Controls.Add(this.variablesTab);
this.mainTabControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.mainTabControl.Enabled = false;
this.mainTabControl.HotTrack = true;
@ -169,6 +179,56 @@ namespace W4Gui
this.teamsPage.Size = new System.Drawing.Size(858, 499);
this.teamsPage.TabIndex = 0;
//
// schemeTab
//
this.schemeTab.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.schemeTab.Location = new System.Drawing.Point(4, 24);
this.schemeTab.Name = "schemeTab";
this.schemeTab.Size = new System.Drawing.Size(192, 72);
this.schemeTab.TabIndex = 3;
this.schemeTab.Text = "Schemes";
this.schemeTab.UseVisualStyleBackColor = true;
//
// highscoreTab
//
this.highscoreTab.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.highscoreTab.Controls.Add(this.highscoresPage);
this.highscoreTab.Location = new System.Drawing.Point(4, 24);
this.highscoreTab.Name = "highscoreTab";
this.highscoreTab.Size = new System.Drawing.Size(868, 509);
this.highscoreTab.TabIndex = 2;
this.highscoreTab.Text = "Highscores";
this.highscoreTab.UseVisualStyleBackColor = true;
//
// highscoresPage
//
this.highscoresPage.Dock = System.Windows.Forms.DockStyle.Fill;
this.highscoresPage.Location = new System.Drawing.Point(3, 3);
this.highscoresPage.Name = "highscoresPage";
this.highscoresPage.Size = new System.Drawing.Size(858, 499);
this.highscoresPage.TabIndex = 0;
//
// inputTab
//
this.inputTab.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.inputTab.Location = new System.Drawing.Point(4, 24);
this.inputTab.Name = "inputTab";
this.inputTab.Size = new System.Drawing.Size(192, 72);
this.inputTab.TabIndex = 4;
this.inputTab.Text = "Input Settings";
this.inputTab.UseVisualStyleBackColor = true;
//
// variablesTab
//
this.variablesTab.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.variablesTab.Location = new System.Drawing.Point(4, 24);
this.variablesTab.Name = "variablesTab";
this.variablesTab.Size = new System.Drawing.Size(192, 72);
this.variablesTab.TabIndex = 5;
this.variablesTab.Text = "Variables";
this.variablesTab.UseVisualStyleBackColor = true;
//
// Main
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
@ -187,6 +247,7 @@ namespace W4Gui
this.mainTabControl.ResumeLayout(false);
this.weaponTab.ResumeLayout(false);
this.teamTab.ResumeLayout(false);
this.highscoreTab.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
@ -207,5 +268,10 @@ namespace W4Gui
private ToolStripMenuItem extractAllXomContainersToolStripMenuItem;
private TabPage teamTab;
private TeamsTab teamsPage;
private TabPage schemeTab;
private TabPage highscoreTab;
private TabPage inputTab;
private TabPage variablesTab;
private HighscoresTab highscoresPage;
}
}

98
W4Gui/Tabs/HighscoresTab.Designer.cs generated Normal file
View File

@ -0,0 +1,98 @@
namespace W4Gui.Tabs
{
partial class HighscoresTab
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.highscoresSplitContainer = new System.Windows.Forms.SplitContainer();
this.highscoresList = new W4Gui.Components.CollectiveListAddDelete();
this.highscoresPanel = new W4Gui.Components.HighscoresPanel();
((System.ComponentModel.ISupportInitialize)(this.highscoresSplitContainer)).BeginInit();
this.highscoresSplitContainer.Panel1.SuspendLayout();
this.highscoresSplitContainer.Panel2.SuspendLayout();
this.highscoresSplitContainer.SuspendLayout();
this.SuspendLayout();
//
// highscoresSplitContainer
//
this.highscoresSplitContainer.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.highscoresSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill;
this.highscoresSplitContainer.Location = new System.Drawing.Point(0, 0);
this.highscoresSplitContainer.Name = "highscoresSplitContainer";
//
// highscoresSplitContainer.Panel1
//
this.highscoresSplitContainer.Panel1.Controls.Add(this.highscoresList);
//
// highscoresSplitContainer.Panel2
//
this.highscoresSplitContainer.Panel2.Controls.Add(this.highscoresPanel);
this.highscoresSplitContainer.Size = new System.Drawing.Size(797, 464);
this.highscoresSplitContainer.SplitterDistance = 265;
this.highscoresSplitContainer.TabIndex = 0;
//
// highscoresList
//
this.highscoresList.Dock = System.Windows.Forms.DockStyle.Fill;
this.highscoresList.Location = new System.Drawing.Point(0, 0);
this.highscoresList.Name = "highscoresList";
this.highscoresList.Size = new System.Drawing.Size(261, 460);
this.highscoresList.TabIndex = 0;
this.highscoresList.NewButton += new System.EventHandler<System.EventArgs>(this.teamsList_NewButton);
this.highscoresList.DeleteButton += new System.EventHandler<System.EventArgs>(this.teamsList_DeleteButton);
//
// highscorePanel
//
this.highscoresPanel.BackColor = System.Drawing.Color.LightGray;
this.highscoresPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.highscoresPanel.Location = new System.Drawing.Point(0, 0);
this.highscoresPanel.Name = "highscorePanel";
this.highscoresPanel.Size = new System.Drawing.Size(524, 460);
this.highscoresPanel.TabIndex = 0;
//
// HighscoresTab
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.highscoresSplitContainer);
this.Name = "HighscoresTab";
this.Size = new System.Drawing.Size(797, 464);
this.highscoresSplitContainer.Panel1.ResumeLayout(false);
this.highscoresSplitContainer.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.highscoresSplitContainer)).EndInit();
this.highscoresSplitContainer.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private SplitContainer highscoresSplitContainer;
private Components.CollectiveListAddDelete highscoresList;
private Components.HighscoresPanel highscoresPanel;
}
}

View File

@ -0,0 +1,62 @@
using LibW4M.Data.Highscores;
using LibW4M.Data.Teams;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace W4Gui.Tabs
{
public partial class HighscoresTab : TabEntry
{
public HighscoresTab()
{
InitializeComponent();
this.highscoresList.List.Selected += highscoresList_Selected;
this.highscoresList.List.Unselected += highscoresList_Unselected;
}
public override void SaveFromControl()
{
if (this.highscoresList.List.IsItemSelected)
highscoresList_Unselected(null, null);
}
public override void LoadIntoControl()
{
this.highscoresList.List.LoadCollective(DataManager.SaveFile.HighscoreDataCollective);
highscoresPanel.Enabled = false;
}
private void highscoresList_Unselected(object? sender, EventArgs e)
{
HighscoreData highscoreData = DataManager.SaveFile.HighscoreDataCollective[highscoresList.List.LastSelected] as HighscoreData;
highscoresPanel.SaveHighscoreData(ref highscoreData);
highscoresList.List.UpdateName(highscoresList.List.LastSelected, highscoreData.FriendlyName);
}
private void highscoresList_Selected(object? sender, EventArgs e)
{
HighscoreData highscoreData = DataManager.SaveFile.HighscoreDataCollective[highscoresList.List.CurrentlySelected] as HighscoreData;
highscoresPanel.LoadHighscoreData(highscoreData);
highscoresPanel.Enabled = true;
}
private void teamsList_NewButton(object sender, EventArgs e)
{
throw new NotImplementedException("Adding new highscores from here not implemented yet ;)");
}
private void teamsList_DeleteButton(object sender, EventArgs e)
{
throw new NotImplementedException("Removing highscores from here not implemented yet ;)");
}
}
}

View File

@ -0,0 +1,60 @@
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -48,8 +48,7 @@ namespace W4Gui.Tabs
WeaponStore store = DataManager.SaveFile.WeaponFactoryCollective[weaponList.List.CurrentlySelected] as WeaponStore;
weaponPanel.LoadWeaponData(store.Weapon);
clusterPanel.LoadWeaponData(store.Cluster);
selStockWeapon.Checked = store.StockWeapon;
weaponClusterTabControl.Enabled = true;
selStockWeapon.Checked = store.StockWeapon; weaponClusterTabControl.Enabled = true;
}
private void weaponList_NewButton(object sender, EventArgs e)

View File

@ -13,6 +13,9 @@
<Compile Update="Components\FloatUpDown.cs">
<SubType>Component</SubType>
</Compile>
<Compile Update="Components\HighscoresPanel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Update="Components\IntList.cs">
<SubType>UserControl</SubType>
</Compile>
@ -40,6 +43,9 @@
<Compile Update="Components\WeaponsPanel.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Update="Tabs\HighscoresTab.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Update="Tabs\TabEntry.cs">
<SubType>UserControl</SubType>
</Compile>