From 2e0eb65b478fad60c2f8dd09d9c24649f1a65e26 Mon Sep 17 00:00:00 2001
From: Li
Date: Sat, 25 Feb 2023 19:46:12 +1300
Subject: [PATCH] Read all containers!
---
LibW4M/Data/Awards/TeamAwardsData.cs | 44 +++++++++
LibW4M/Data/Highscores/HighscoreCollective.cs | 3 +-
LibW4M/Data/InputMapping/InputDetailsData.cs | 52 ++++++++++
.../InputMapping/InputEventMappingData.cs | 76 +++++++++++++++
.../InputMapping/InputMappingCollective.cs | 43 +++++++++
LibW4M/Data/Stats/StatsCollective.cs | 71 +++++---------
LibW4M/Data/Stats/StatsContainerData.cs | 10 ++
LibW4M/Data/Stats/TeamStatsCollective.cs | 96 +++++++++++++++++++
.../Data/WeaponFactory/WeaponsCollective.cs | 2 +
LibW4M/W4SaveFile.cs | 24 ++++-
LibXom/Streams/XomStreamReader.cs | 7 ++
LibXom/Streams/XomStreamWriter.cs | 7 ++
W4Gui/Main.Designer.cs | 48 +++++-----
W4Gui/W4Gui.csproj | 2 +-
14 files changed, 412 insertions(+), 73 deletions(-)
create mode 100644 LibW4M/Data/Awards/TeamAwardsData.cs
create mode 100644 LibW4M/Data/InputMapping/InputDetailsData.cs
create mode 100644 LibW4M/Data/InputMapping/InputEventMappingData.cs
create mode 100644 LibW4M/Data/InputMapping/InputMappingCollective.cs
create mode 100644 LibW4M/Data/Stats/TeamStatsCollective.cs
diff --git a/LibW4M/Data/Awards/TeamAwardsData.cs b/LibW4M/Data/Awards/TeamAwardsData.cs
new file mode 100644
index 0000000..0a8bbb7
--- /dev/null
+++ b/LibW4M/Data/Awards/TeamAwardsData.cs
@@ -0,0 +1,44 @@
+using LibXom.Data;
+using LibXom.Streams;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LibW4M.Data.Awards
+{
+ public class TeamAwardsData : SaveDataEntry
+ {
+ int[] TeamAwards;
+ public TeamAwardsData(W4SaveFile fileBelongs, XomContainer mainContainer) : base(fileBelongs, mainContainer)
+ {
+ }
+
+ public override void Load()
+ {
+ using (XomStreamReader reader = new XomStreamReader(new MemoryStream(this.mainContainer.GetData())))
+ {
+ reader.Skip(3);
+
+ this.TeamAwards = reader.ReadInt32Array();
+ }
+ }
+
+ public override void Save()
+ {
+ using (MemoryStream ms = new MemoryStream())
+ {
+ using (XomStreamWriter writer = new XomStreamWriter(ms))
+ {
+ writer.Skip(3);
+
+ writer.WriteInt32Array(TeamAwards);
+
+ ms.Seek(0x00, SeekOrigin.Begin);
+ mainContainer.SetData(ms.ToArray());
+ }
+ }
+ }
+ }
+}
diff --git a/LibW4M/Data/Highscores/HighscoreCollective.cs b/LibW4M/Data/Highscores/HighscoreCollective.cs
index 7a35afd..b032ee1 100644
--- a/LibW4M/Data/Highscores/HighscoreCollective.cs
+++ b/LibW4M/Data/Highscores/HighscoreCollective.cs
@@ -34,10 +34,11 @@ namespace LibW4M.Data.Highscores
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;
+ int highscoresLen = this.Length;
// copy teams data from collective.
int[] teamsData = new int[teamsLen + 1];
diff --git a/LibW4M/Data/InputMapping/InputDetailsData.cs b/LibW4M/Data/InputMapping/InputDetailsData.cs
new file mode 100644
index 0000000..f44cf6d
--- /dev/null
+++ b/LibW4M/Data/InputMapping/InputDetailsData.cs
@@ -0,0 +1,52 @@
+using LibXom.Data;
+using LibXom.Streams;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LibW4M.Data.InputMapping
+{
+ public class InputDetailsData : SaveDataEntry
+ {
+ public InputDetailsData(W4SaveFile fileBelongs, XomContainer mainContainer) : base(fileBelongs, mainContainer)
+ {
+ }
+
+ public int Type;
+ public int Key;
+ public int JoystickAxis;
+
+ public override void Load()
+ {
+ using (XomStreamReader reader = new XomStreamReader(new MemoryStream(this.mainContainer.GetData())))
+ {
+ reader.Skip(3);
+
+ this.Type = reader.ReadInt32();
+ this.Key = reader.ReadInt32();
+ this.JoystickAxis = reader.ReadInt32();
+
+ }
+ }
+
+ public override void Save()
+ {
+ using (MemoryStream ms = new MemoryStream())
+ {
+ using (XomStreamWriter writer = new XomStreamWriter(ms))
+ {
+ writer.Skip(3);
+
+ writer.WriteInt32(this.Type);
+ writer.WriteInt32(this.Key);
+ writer.WriteInt32(this.JoystickAxis);
+
+ ms.Seek(0x00, SeekOrigin.Begin);
+ mainContainer.SetData(ms.ToArray());
+ }
+ }
+ }
+ }
+}
diff --git a/LibW4M/Data/InputMapping/InputEventMappingData.cs b/LibW4M/Data/InputMapping/InputEventMappingData.cs
new file mode 100644
index 0000000..9adeb94
--- /dev/null
+++ b/LibW4M/Data/InputMapping/InputEventMappingData.cs
@@ -0,0 +1,76 @@
+using LibXom.Data;
+using LibXom.Streams;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LibW4M.Data.InputMapping
+{
+ public class InputEventMappingData : SaveDataEntry
+ {
+ XomString Message;
+ XomString FEResourceID;
+ byte[] AllowedDuplacates;
+ InputDetailsData[] InputMappings;
+ int Group;
+
+ public InputEventMappingData(W4SaveFile fileBelongs, XomContainer mainContainer) : base(fileBelongs, mainContainer)
+ {
+ }
+
+ public override void Load()
+ {
+ using (XomStreamReader reader = new XomStreamReader(new MemoryStream(this.mainContainer.GetData())))
+ {
+ reader.Skip(3);
+
+ this.Message = fileBelongs.LookupStringFromId(reader.ReadCompressedInt());
+ this.FEResourceID = fileBelongs.LookupStringFromId(reader.ReadCompressedInt());
+
+ this.AllowedDuplacates = reader.ReadByteArray();
+
+ int[] inputMappingIds = reader.ReadCompressedIntArray();
+ InputMappings = new InputDetailsData[inputMappingIds.Length];
+
+ for(int i = 0; i < inputMappingIds.Length; i++)
+ {
+ InputMappings[i] = new InputDetailsData(this.fileBelongs, this.fileBelongs.LookupContainerById(inputMappingIds[i]));
+ }
+
+ this.Group = reader.ReadCompressedInt();
+ }
+ }
+
+ public override void Save()
+ {
+ using (MemoryStream ms = new MemoryStream())
+ {
+ using (XomStreamWriter writer = new XomStreamWriter(ms))
+ {
+ writer.Skip(3);
+
+ writer.WriteCompressedInt(this.Message.Id);
+ writer.WriteCompressedInt(this.FEResourceID.Id);
+
+ writer.WriteByteArray(this.AllowedDuplacates);
+
+ int[] inputMappingIds = new int[this.InputMappings.Length];
+
+ for (int i = 0; i < inputMappingIds.Length; i++)
+ {
+ this.InputMappings[i].Save();
+ inputMappingIds[i] = this.InputMappings[i].containerId;
+ }
+ writer.WriteCompressedIntArray(inputMappingIds);
+
+ writer.WriteCompressedInt(this.Group);
+
+ ms.Seek(0x00, SeekOrigin.Begin);
+ mainContainer.SetData(ms.ToArray());
+ }
+ }
+ }
+ }
+}
diff --git a/LibW4M/Data/InputMapping/InputMappingCollective.cs b/LibW4M/Data/InputMapping/InputMappingCollective.cs
new file mode 100644
index 0000000..c4a4483
--- /dev/null
+++ b/LibW4M/Data/InputMapping/InputMappingCollective.cs
@@ -0,0 +1,43 @@
+using LibW4M.Data.WeaponFactory;
+using LibXom.Data;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LibW4M.Data.InputMapping
+{
+ public class InputMappingCollective : SaveDataCollective
+ {
+ public InputMappingCollective(W4SaveFile fileBelongs, XomContainer mainContainer) : base(fileBelongs, mainContainer)
+ {
+ }
+
+ public override void Load()
+ {
+ int[] collective = mainContainer.Decompress();
+ for (int i = 0; i < collective[0]; i++)
+ {
+ InputEventMappingData eventMappingData = new InputEventMappingData(this.fileBelongs, this.fileBelongs.LookupContainerById(collective[i + 1]));
+ base.collectiveEntries.Add(eventMappingData);
+ }
+ }
+
+ public override void Save()
+ {
+ int len = this.Length;
+ int[] collective = new int[len + 1];
+ collective[0] = len;
+ for (int i = 0; i < len; i++)
+ {
+ InputEventMappingData eventMappingData = collectiveEntries[i] as InputEventMappingData;
+ if (eventMappingData is null) continue;
+
+ eventMappingData.Save();
+ collective[i + 1] = eventMappingData.mainContainer.Id;
+ }
+ mainContainer.CompressAndUpdate(collective);
+ }
+ }
+}
diff --git a/LibW4M/Data/Stats/StatsCollective.cs b/LibW4M/Data/Stats/StatsCollective.cs
index 41cdbd2..e4b1e80 100644
--- a/LibW4M/Data/Stats/StatsCollective.cs
+++ b/LibW4M/Data/Stats/StatsCollective.cs
@@ -1,4 +1,5 @@
-using LibW4M.Data.Teams;
+using LibW4M.Data.Highscores;
+using LibW4M.Data.Teams;
using LibXom.Data;
using LibXom.Streams;
using System;
@@ -11,8 +12,6 @@ namespace LibW4M.Data.Stats
{
public class StatsCollective : SaveDataCollective
{
- private List teamStats = new List();
- private List teamNames = new List();
public StatsCollective(W4SaveFile fileBelongs, XomContainer mainContainer) : base(fileBelongs, mainContainer)
{
}
@@ -27,58 +26,40 @@ namespace LibW4M.Data.Stats
this.collectiveEntries.Add(stat);
}
- int teamStatsStart = (1 + numStats) + 1;
- int numTeamStats = decompressedCollective[(1 + numStats)];
- for (int i = 0; i < numTeamStats; i++)
- {
- StatsContainerData teamStat = new StatsContainerData(this.fileBelongs, this.fileBelongs.LookupContainerById(decompressedCollective[i + (teamStatsStart)]));
- this.teamStats.Add(teamStat);
- }
-
- int teamNamesStart = ((((1 + numStats) + 1) + numTeamStats) + 1);
- int numTeamNames = decompressedCollective[(((1 + numStats) + 1) + numTeamStats)];
- for (int i = 0; i < numTeamNames; i++)
- {
- this.teamNames.Add(this.fileBelongs.LookupStringFromId(decompressedCollective[i + (teamNamesStart)]));
- }
}
public override void Save()
{
- int numStats = this.collectiveEntries.Count;
- int numTeamStats = this.teamStats.Count;
- int numTeamNames = this.teamNames.Count;
+ // Once again Team17 stores multiple different types of data here
+ // a generic one i dunno whats for besides to make the filesize huge..
+ // and one for team stats ..
+ // to make thins easier im gonna abstract it away as two different collectives
+ // like i did on the highscores .
- // Save regular stats
- int statsStart = 1;
- int[] collective = new int[(numStats + 1) + (numTeamStats + 1) + (numTeamNames + 1)];
- collective[statsStart - 1] = numStats;
+ int[] decompressedCollective = mainContainer.Decompress();
+ int oldLen = decompressedCollective[0];
- for(int i = 0; i < numStats; i++)
+ // Copy Team Stats data.
+ int[] teamStatsData = new int[(decompressedCollective.Length - (oldLen + 1))];
+ Array.ConstrainedCopy(decompressedCollective, oldLen + 1, teamStatsData, 0, teamStatsData.Length);
+
+ // Recalculate collective size and offsets
+
+ int sz = this.Length;
+ int[] collective = new int[(sz + 1) + (teamStatsData.Length)];
+ collective[0] = sz;
+ for (int i = 0; i < sz; i++)
{
- this.collectiveEntries[i].Save();
- collective[statsStart + i] = this.collectiveEntries[i].containerId;
+ StatsContainerData statsData = collectiveEntries[i] as StatsContainerData;
+ if (statsData is null) continue;
+
+ statsData.Save();
+ collective[i + 1] = statsData.mainContainer.Id;
}
- // Save team stats
- int teamStatsStart = (1 + numStats) + 1;
- collective[teamStatsStart-1] = numTeamStats;
-
- for (int i = 0; i < numTeamStats; i++)
- {
- this.teamStats[i].Save();
-
- collective[teamStatsStart + i] = this.teamStats[i].containerId;
- }
-
- // Save team names
- int teamNamesStart = ((1 + numStats) + (1 + numTeamStats) + 1);
- collective[teamNamesStart - 1] = numTeamNames;
- for (int i = 0; i < numTeamStats; i++)
- {
- collective[teamNamesStart + i] = this.teamNames[i].Id;
- }
+ // Copy Team Stats data back to the collective.
+ Array.ConstrainedCopy(teamStatsData, 0, collective, sz + 1, teamStatsData.Length);
mainContainer.CompressAndUpdate(collective);
}
diff --git a/LibW4M/Data/Stats/StatsContainerData.cs b/LibW4M/Data/Stats/StatsContainerData.cs
index 31befd4..9a83ed6 100644
--- a/LibW4M/Data/Stats/StatsContainerData.cs
+++ b/LibW4M/Data/Stats/StatsContainerData.cs
@@ -11,10 +11,20 @@ namespace LibW4M.Data.Stats
public class StatsContainerData : SaveDataEntry
{
int[] Values;
+ internal XomString? teamName;
public StatsContainerData(W4SaveFile fileBelongs, XomContainer mainContainer) : base(fileBelongs, mainContainer)
{
}
+ public override string FriendlyName
+ {
+ get
+ {
+ if (teamName.Value is not null) return teamName.Value;
+ return base.FriendlyName;
+ }
+ }
+
public override void Load()
{
using (XomStreamReader reader = new XomStreamReader(new MemoryStream(this.mainContainer.GetData())))
diff --git a/LibW4M/Data/Stats/TeamStatsCollective.cs b/LibW4M/Data/Stats/TeamStatsCollective.cs
new file mode 100644
index 0000000..0117401
--- /dev/null
+++ b/LibW4M/Data/Stats/TeamStatsCollective.cs
@@ -0,0 +1,96 @@
+using LibW4M.Data.Highscores;
+using LibXom.Data;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LibW4M.Data.Stats
+{
+ public class TeamStatsCollective : SaveDataCollective
+ {
+ public List TeamNames;
+
+ public TeamStatsCollective(W4SaveFile fileBelongs, XomContainer mainContainer) : base(fileBelongs, mainContainer)
+ {
+ TeamNames = new List();
+ }
+
+ public override void Load()
+ {
+ // team stats are stored *after* the regular stats
+
+ int[] decompressedCollective = mainContainer.Decompress();
+ int statsLen = decompressedCollective[0];
+
+
+ int teamStatsStart = statsLen + 1;
+ int teamStatsLen = decompressedCollective[teamStatsStart];
+
+ // And then the team name this is associated with, is after that
+ int teamNamesStart = (statsLen + 1) + (teamStatsLen + 1);
+ int teamNamesLen = decompressedCollective[teamNamesStart];
+
+ for(int i = 0; i < teamNamesLen; i++)
+ TeamNames.Add(fileBelongs.LookupStringFromId(decompressedCollective[(teamNamesStart + 1) + i]));
+
+ for(int i = 0; i < teamStatsLen; i++)
+ {
+ StatsContainerData stats = new StatsContainerData(this.fileBelongs, fileBelongs.LookupContainerById(decompressedCollective[(teamStatsStart + 1) + i]));
+
+ if (i < TeamNames.Count)
+ stats.teamName = TeamNames[i];
+
+ this.collectiveEntries.Add(stats);
+ }
+
+
+ }
+
+ public override void Save()
+ {
+ // Decompress the collective
+ int[] decompressedCollective = mainContainer.Decompress();
+
+ // get total length of stats
+ int statsLen = decompressedCollective[0];
+
+ // Team Stats collective starts right *after* the stats collective.
+ int teamStatsStart = statsLen + 1;
+ int teamStatsLen = this.Length;
+
+ int teamNamesStart = (statsLen + 1) + (teamStatsLen + 1);
+ int teamNamesLen = this.TeamNames.Count;
+
+ // copy regular stats data from collective.
+ int[] statsData = new int[statsLen + 1];
+ Array.Copy(decompressedCollective, statsData, statsData.Length);
+
+ // copy regular stats data back to collective.
+ int[] newCollective = new int[statsData.Length + (1 + teamStatsLen) + (1 + TeamNames.Count)];
+ Array.Copy(statsData, newCollective, statsData.Length);
+
+ // populate team stats collective
+ newCollective[teamStatsStart] = teamStatsLen;
+
+ for(int i = 0; i < teamStatsLen; i++)
+ {
+ StatsContainerData teamStatsData = collectiveEntries[i] as StatsContainerData;
+ if (teamStatsData is null) continue;
+ teamStatsData.Save();
+ newCollective[teamStatsStart + i + 1] = teamStatsData.mainContainer.Id;
+ }
+
+
+ // add team names too
+ newCollective[teamStatsStart] = teamNamesLen;
+ for (int i = 0; i < teamNamesLen; i++)
+ newCollective[teamNamesStart + i + 1] = this.TeamNames[i].Id;
+
+ // Compress whole collective and update the underlying container.
+ mainContainer.CompressAndUpdate(newCollective);
+
+ }
+ }
+}
diff --git a/LibW4M/Data/WeaponFactory/WeaponsCollective.cs b/LibW4M/Data/WeaponFactory/WeaponsCollective.cs
index 7f1c3c9..5c66002 100644
--- a/LibW4M/Data/WeaponFactory/WeaponsCollective.cs
+++ b/LibW4M/Data/WeaponFactory/WeaponsCollective.cs
@@ -32,6 +32,8 @@ namespace LibW4M.Data.WeaponFactory
for (int i = 0; i < len; i++)
{
WeaponStore store = collectiveEntries[i] as WeaponStore;
+ if (store is null) continue;
+
store.Save();
collective[i + 1] = store.mainContainer.Id;
}
diff --git a/LibW4M/W4SaveFile.cs b/LibW4M/W4SaveFile.cs
index ab17d9e..670fcd5 100644
--- a/LibW4M/W4SaveFile.cs
+++ b/LibW4M/W4SaveFile.cs
@@ -1,5 +1,7 @@
using LibW4M.Data;
+using LibW4M.Data.Awards;
using LibW4M.Data.Highscores;
+using LibW4M.Data.InputMapping;
using LibW4M.Data.Schemes;
using LibW4M.Data.Stats;
using LibW4M.Data.Teams;
@@ -32,7 +34,10 @@ namespace LibW4M
public SchemesCollective SchemesCollective;
public HighscoreCollective HighscoreCollective;
public StatsCollective StatsCollective;
+ public StatsCollective TeamStatsCollective;
+ public InputMappingCollective InputMappingCollective;
+ public TeamAwardsData TeamAwardsContainer;
public UnlockableItemData[] UnlockableItems
{
@@ -79,8 +84,14 @@ namespace LibW4M
break;
case "PersistStats":
StatsCollective = new StatsCollective(this, containerResourceDetail.Value);
+ TeamStatsCollective = new StatsCollective(this, containerResourceDetail.Value);
+ break;
+ case "Awards":
+ TeamAwardsContainer = new TeamAwardsData(this, containerResourceDetail.Value);
+ break;
+ case "InputMapping":
+ InputMappingCollective = new InputMappingCollective(this, containerResourceDetail.Value);
break;
-
default:
// stupid hack; the only other option is manually hardcoding every unlockable item in the game
@@ -96,7 +107,7 @@ namespace LibW4M
}
else
{
- Console.Error.WriteLine("Unknown container resource: " + containerResourceDetail.Value);
+ Console.Error.WriteLine("Unknown container resource: " + containerResourceDetail.Name);
}
break;
@@ -109,10 +120,19 @@ namespace LibW4M
XDataBank.Save();
WeaponFactoryCollective.Save();
+
+ // Save Teams, Highscores
TeamDataColective.Save();
HighscoreCollective.Save();
+
SchemesCollective.Save();
+
+ // Save Stats, TeamStats
StatsCollective.Save();
+ TeamStatsCollective.Save();
+
+ TeamAwardsContainer.Save();
+ InputMappingCollective.Save();
foreach (UnlockableItemData unlockableItem in UnlockableItems)
unlockableItem.Save();
diff --git a/LibXom/Streams/XomStreamReader.cs b/LibXom/Streams/XomStreamReader.cs
index 5da27a9..2e9591e 100644
--- a/LibXom/Streams/XomStreamReader.cs
+++ b/LibXom/Streams/XomStreamReader.cs
@@ -40,6 +40,13 @@ namespace LibXom.Streams
{
return XomCompressor.ReadCompressedIntFromStream(xStream);
}
+
+ public byte[] ReadByteArray()
+ {
+ int len = this.ReadCompressedInt();
+ return ReadBytes(len);
+ }
+
public byte[] ReadBytes(int amt)
{
byte[] buffer = new byte[amt];
diff --git a/LibXom/Streams/XomStreamWriter.cs b/LibXom/Streams/XomStreamWriter.cs
index 1bf359e..29f4b0f 100644
--- a/LibXom/Streams/XomStreamWriter.cs
+++ b/LibXom/Streams/XomStreamWriter.cs
@@ -72,6 +72,13 @@ namespace LibXom.Streams
{
XomCompressor.compressIntAndWriteToStream(xStream, uncompressedInt);
}
+
+ public void WriteByteArray(byte[] data)
+ {
+ this.WriteCompressedInt(data.Length);
+ WriteBytes(data);
+ }
+
public void WriteBytes(byte[] bytes)
{
xStream.Write(bytes, 0, bytes.Length);
diff --git a/W4Gui/Main.Designer.cs b/W4Gui/Main.Designer.cs
index 884df3e..ba056f1 100644
--- a/W4Gui/Main.Designer.cs
+++ b/W4Gui/Main.Designer.cs
@@ -51,7 +51,7 @@ namespace W4Gui
this.unlockItemsTab = new System.Windows.Forms.TabPage();
this.unlockableItemsPanel = new W4Gui.Tabs.UnlockableItemsTab();
this.inputTab = new System.Windows.Forms.TabPage();
- this.persistStatsTab = new System.Windows.Forms.TabPage();
+ this.statsTab = new System.Windows.Forms.TabPage();
this.awardsTab = new System.Windows.Forms.TabPage();
this.variablesTab = new System.Windows.Forms.TabPage();
this.variablesPage = new W4Gui.Tabs.VariablesTab.VariablesTabs();
@@ -141,7 +141,7 @@ namespace W4Gui
this.mainTabControl.Controls.Add(this.highscoreTab);
this.mainTabControl.Controls.Add(this.unlockItemsTab);
this.mainTabControl.Controls.Add(this.inputTab);
- this.mainTabControl.Controls.Add(this.persistStatsTab);
+ this.mainTabControl.Controls.Add(this.statsTab);
this.mainTabControl.Controls.Add(this.awardsTab);
this.mainTabControl.Controls.Add(this.variablesTab);
this.mainTabControl.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -181,7 +181,7 @@ namespace W4Gui
this.teamTab.Location = new System.Drawing.Point(4, 24);
this.teamTab.Name = "teamTab";
this.teamTab.Padding = new System.Windows.Forms.Padding(3);
- this.teamTab.Size = new System.Drawing.Size(192, 72);
+ this.teamTab.Size = new System.Drawing.Size(905, 509);
this.teamTab.TabIndex = 1;
this.teamTab.Text = "Teams";
this.teamTab.UseVisualStyleBackColor = true;
@@ -191,7 +191,7 @@ namespace W4Gui
this.teamsPage.Dock = System.Windows.Forms.DockStyle.Fill;
this.teamsPage.Location = new System.Drawing.Point(3, 3);
this.teamsPage.Name = "teamsPage";
- this.teamsPage.Size = new System.Drawing.Size(182, 62);
+ this.teamsPage.Size = new System.Drawing.Size(895, 499);
this.teamsPage.TabIndex = 0;
//
// schemeTab
@@ -201,7 +201,7 @@ namespace W4Gui
this.schemeTab.Location = new System.Drawing.Point(4, 24);
this.schemeTab.Name = "schemeTab";
this.schemeTab.Padding = new System.Windows.Forms.Padding(3);
- this.schemeTab.Size = new System.Drawing.Size(192, 72);
+ this.schemeTab.Size = new System.Drawing.Size(905, 509);
this.schemeTab.TabIndex = 3;
this.schemeTab.Text = "Schemes";
this.schemeTab.UseVisualStyleBackColor = true;
@@ -211,7 +211,7 @@ namespace W4Gui
this.schemesPage.Dock = System.Windows.Forms.DockStyle.Fill;
this.schemesPage.Location = new System.Drawing.Point(3, 3);
this.schemesPage.Name = "schemesPage";
- this.schemesPage.Size = new System.Drawing.Size(182, 62);
+ this.schemesPage.Size = new System.Drawing.Size(895, 499);
this.schemesPage.TabIndex = 0;
//
// highscoreTab
@@ -221,7 +221,7 @@ namespace W4Gui
this.highscoreTab.Location = new System.Drawing.Point(4, 24);
this.highscoreTab.Name = "highscoreTab";
this.highscoreTab.Padding = new System.Windows.Forms.Padding(3);
- this.highscoreTab.Size = new System.Drawing.Size(192, 72);
+ this.highscoreTab.Size = new System.Drawing.Size(905, 509);
this.highscoreTab.TabIndex = 2;
this.highscoreTab.Text = "Highscores";
this.highscoreTab.UseVisualStyleBackColor = true;
@@ -231,7 +231,7 @@ namespace W4Gui
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(182, 62);
+ this.highscoresPage.Size = new System.Drawing.Size(895, 499);
this.highscoresPage.TabIndex = 0;
//
// unlockItemsTab
@@ -241,7 +241,7 @@ namespace W4Gui
this.unlockItemsTab.Location = new System.Drawing.Point(4, 24);
this.unlockItemsTab.Name = "unlockItemsTab";
this.unlockItemsTab.Padding = new System.Windows.Forms.Padding(3);
- this.unlockItemsTab.Size = new System.Drawing.Size(192, 72);
+ this.unlockItemsTab.Size = new System.Drawing.Size(905, 509);
this.unlockItemsTab.TabIndex = 6;
this.unlockItemsTab.Text = "Unlockable Items";
this.unlockItemsTab.UseVisualStyleBackColor = true;
@@ -251,7 +251,7 @@ namespace W4Gui
this.unlockableItemsPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.unlockableItemsPanel.Location = new System.Drawing.Point(3, 3);
this.unlockableItemsPanel.Name = "unlockableItemsPanel";
- this.unlockableItemsPanel.Size = new System.Drawing.Size(182, 62);
+ this.unlockableItemsPanel.Size = new System.Drawing.Size(895, 499);
this.unlockableItemsPanel.TabIndex = 0;
//
// inputTab
@@ -259,21 +259,21 @@ namespace W4Gui
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.Size = new System.Drawing.Size(905, 509);
this.inputTab.TabIndex = 4;
this.inputTab.Text = "Input Settings";
this.inputTab.UseVisualStyleBackColor = true;
//
- // persistStatsTab
+ // statsTab
//
- this.persistStatsTab.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
- this.persistStatsTab.Location = new System.Drawing.Point(4, 24);
- this.persistStatsTab.Name = "persistStatsTab";
- this.persistStatsTab.Padding = new System.Windows.Forms.Padding(3);
- this.persistStatsTab.Size = new System.Drawing.Size(192, 72);
- this.persistStatsTab.TabIndex = 7;
- this.persistStatsTab.Text = "Persistant Statistics";
- this.persistStatsTab.UseVisualStyleBackColor = true;
+ this.statsTab.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
+ this.statsTab.Location = new System.Drawing.Point(4, 24);
+ this.statsTab.Name = "statsTab";
+ this.statsTab.Padding = new System.Windows.Forms.Padding(3);
+ this.statsTab.Size = new System.Drawing.Size(905, 509);
+ this.statsTab.TabIndex = 7;
+ this.statsTab.Text = "Statistics";
+ this.statsTab.UseVisualStyleBackColor = true;
//
// awardsTab
//
@@ -281,7 +281,7 @@ namespace W4Gui
this.awardsTab.Location = new System.Drawing.Point(4, 24);
this.awardsTab.Name = "awardsTab";
this.awardsTab.Padding = new System.Windows.Forms.Padding(3);
- this.awardsTab.Size = new System.Drawing.Size(192, 72);
+ this.awardsTab.Size = new System.Drawing.Size(905, 509);
this.awardsTab.TabIndex = 8;
this.awardsTab.Text = "Awards";
this.awardsTab.UseVisualStyleBackColor = true;
@@ -293,7 +293,7 @@ namespace W4Gui
this.variablesTab.Location = new System.Drawing.Point(4, 24);
this.variablesTab.Name = "variablesTab";
this.variablesTab.Padding = new System.Windows.Forms.Padding(3);
- this.variablesTab.Size = new System.Drawing.Size(192, 72);
+ this.variablesTab.Size = new System.Drawing.Size(905, 509);
this.variablesTab.TabIndex = 5;
this.variablesTab.Text = "Variables";
this.variablesTab.UseVisualStyleBackColor = true;
@@ -304,7 +304,7 @@ namespace W4Gui
this.variablesPage.Dock = System.Windows.Forms.DockStyle.Fill;
this.variablesPage.Location = new System.Drawing.Point(3, 3);
this.variablesPage.Name = "variablesPage";
- this.variablesPage.Size = new System.Drawing.Size(182, 62);
+ this.variablesPage.Size = new System.Drawing.Size(895, 499);
this.variablesPage.TabIndex = 0;
//
// Main
@@ -358,7 +358,7 @@ namespace W4Gui
private TabPage unlockItemsTab;
private VariablesTabs variablesPage;
private UnlockableItemsTab unlockableItemsPanel;
- private TabPage persistStatsTab;
+ private TabPage statsTab;
private TabPage awardsTab;
}
}
\ No newline at end of file
diff --git a/W4Gui/W4Gui.csproj b/W4Gui/W4Gui.csproj
index c74007b..af6b9e6 100644
--- a/W4Gui/W4Gui.csproj
+++ b/W4Gui/W4Gui.csproj
@@ -1,7 +1,7 @@
- WinExe
+ Exe
net7.0-windows
enable
true