Add StockWeapon flag

This commit is contained in:
Li 2023-01-14 16:32:46 -08:00
commit 61da8073d8
4 changed files with 24 additions and 4 deletions

View File

@ -14,6 +14,7 @@ namespace LibW4M.Data.WeaponFactory
public WeaponData Weapon;
public WeaponData Cluster;
public bool StockWeapon;
internal XomContainer weaponContainer;
internal XomContainer clusterContainer;
@ -26,6 +27,7 @@ namespace LibW4M.Data.WeaponFactory
public override void Load()
{
int[] weaponStore = this.mainContainer.Decompress();
this.StockWeapon = (weaponStore[0] == 1);
this.weaponContainer = this.fileBelongs.xomFile.GetContainerById(weaponStore[1]);
this.clusterContainer = this.fileBelongs.xomFile.GetContainerById(weaponStore[2]);
@ -39,6 +41,7 @@ namespace LibW4M.Data.WeaponFactory
this.Cluster.Save();
int[] weaponStore = this.mainContainer.Decompress();
weaponStore[0] = (this.StockWeapon ? 1 : 0);
weaponStore[1] = this.weaponContainer.Id;
weaponStore[2] = this.clusterContainer.Id;
this.mainContainer.CompressAndUpdate(weaponStore);

View File

@ -26,7 +26,7 @@ namespace W4Gui.Dialogs
{
if (!saved)
{
if (MessageBox.Show("Are you sure you want to exit?\nyou'll loose any changes you've made to the weapon.", "Are you sure?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
if(MessageBox.Show("Are you sure you want to exit?\nyou'll lose any changes you've made to the weapon.", "Are you sure?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
this.saved = true;
this.DialogResult = DialogResult.Cancel;

View File

@ -36,6 +36,7 @@ namespace W4Gui.Tabs
this.weaponPanel = new W4Gui.Components.WeaponsPanel();
this.clustersPage = new System.Windows.Forms.TabPage();
this.clusterPanel = new W4Gui.Components.WeaponsPanel();
this.selStockWeapon = new System.Windows.Forms.CheckBox();
((System.ComponentModel.ISupportInitialize)(this.weaponSplitContainer)).BeginInit();
this.weaponSplitContainer.Panel1.SuspendLayout();
this.weaponSplitContainer.Panel2.SuspendLayout();
@ -58,6 +59,7 @@ namespace W4Gui.Tabs
//
// weaponSplitContainer.Panel2
//
this.weaponSplitContainer.Panel2.Controls.Add(this.selStockWeapon);
this.weaponSplitContainer.Panel2.Controls.Add(this.weaponClusterTabControl);
this.weaponSplitContainer.Size = new System.Drawing.Size(797, 464);
this.weaponSplitContainer.SplitterDistance = 265;
@ -77,7 +79,7 @@ namespace W4Gui.Tabs
//
this.weaponClusterTabControl.Controls.Add(this.mainWeaponPage);
this.weaponClusterTabControl.Controls.Add(this.clustersPage);
this.weaponClusterTabControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.weaponClusterTabControl.Dock = System.Windows.Forms.DockStyle.Top;
this.weaponClusterTabControl.HotTrack = true;
this.weaponClusterTabControl.Location = new System.Drawing.Point(0, 0);
this.weaponClusterTabControl.Name = "weaponClusterTabControl";
@ -113,7 +115,7 @@ namespace W4Gui.Tabs
this.clustersPage.Location = new System.Drawing.Point(4, 24);
this.clustersPage.Name = "clustersPage";
this.clustersPage.Padding = new System.Windows.Forms.Padding(3);
this.clustersPage.Size = new System.Drawing.Size(517, 432);
this.clustersPage.Size = new System.Drawing.Size(192, 72);
this.clustersPage.TabIndex = 1;
this.clustersPage.Text = "Clusters";
//
@ -122,9 +124,20 @@ namespace W4Gui.Tabs
this.clusterPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.clusterPanel.Location = new System.Drawing.Point(3, 3);
this.clusterPanel.Name = "clusterPanel";
this.clusterPanel.Size = new System.Drawing.Size(507, 422);
this.clusterPanel.Size = new System.Drawing.Size(182, 62);
this.clusterPanel.TabIndex = 0;
//
// selStockWeapon
//
this.selStockWeapon.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.selStockWeapon.AutoSize = true;
this.selStockWeapon.Location = new System.Drawing.Point(420, 0);
this.selStockWeapon.Name = "selStockWeapon";
this.selStockWeapon.Size = new System.Drawing.Size(102, 19);
this.selStockWeapon.TabIndex = 1;
this.selStockWeapon.Text = "Stock Weapon";
this.selStockWeapon.UseVisualStyleBackColor = true;
//
// WeaponsTab
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
@ -134,6 +147,7 @@ namespace W4Gui.Tabs
this.Size = new System.Drawing.Size(797, 464);
this.weaponSplitContainer.Panel1.ResumeLayout(false);
this.weaponSplitContainer.Panel2.ResumeLayout(false);
this.weaponSplitContainer.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.weaponSplitContainer)).EndInit();
this.weaponSplitContainer.ResumeLayout(false);
this.weaponClusterTabControl.ResumeLayout(false);
@ -152,5 +166,6 @@ namespace W4Gui.Tabs
private TabPage clustersPage;
private WeaponsPanel clusterPanel;
private CollectiveListAddDelete weaponList;
private CheckBox selStockWeapon;
}
}

View File

@ -39,6 +39,7 @@ namespace W4Gui.Tabs
WeaponStore store = DataManager.SaveFile.WeaponFactoryCollective[weaponList.List.LastSelected] as WeaponStore;
weaponPanel.SaveWeaponData(ref store.Weapon);
clusterPanel.SaveWeaponData(ref store.Cluster);
store.StockWeapon = selStockWeapon.Checked;
weaponList.List.UpdateName(weaponList.List.LastSelected, store.Weapon.Name.Value);
}
@ -47,6 +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;
}