Skip to content

Commit

Permalink
Fixed duplicate vehicle spawning bug for saved vehicles when replace-…
Browse files Browse the repository at this point in the history
…previous-vehicle option was turned off.
  • Loading branch information
TomGrobbe committed Apr 8, 2018
1 parent d1e5b0f commit c1e8aa8
Showing 1 changed file with 32 additions and 28 deletions.
60 changes: 32 additions & 28 deletions vMenu/menus/SavedVehicles.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ private void CreateMenu()
ControlDisablingEnabled = false
};
// Create submenus.
UIMenu savedVehicles = new UIMenu(menuTitle, "Spawn Saved Vehicle", true)
UIMenu spawnSavedVehicles = new UIMenu(menuTitle, "Spawn Saved Vehicle", true)
{
ScaleWithSafezone = false,
MouseControlsEnabled = false,
Expand Down Expand Up @@ -69,7 +69,7 @@ private void CreateMenu()
// Bind submenus to menu items.
if (cf.IsAllowed(Permission.SVSpawn))
{
menu.BindMenuToItem(savedVehicles, savedVehiclesBtn);
menu.BindMenuToItem(spawnSavedVehicles, savedVehiclesBtn);
}
else
{
Expand All @@ -94,7 +94,7 @@ private void CreateMenu()
else if (item == savedVehiclesBtn)
{
// Remove all old items.
savedVehicles.MenuItems.Clear();
spawnSavedVehicles.MenuItems.Clear();
// Get all saved vehicles.
SavedVehiclesDict = cf.GetSavedVehiclesDictionary();
Expand All @@ -105,7 +105,7 @@ private void CreateMenu()
//MainMenu.Cf.Log(savedVehicle.ToString());
UIMenuItem vehBtn = new UIMenuItem(savedVehicle.Key.Substring(4), "Click to spawn this saved vehicle.");
vehBtn.SetRightLabel($"({savedVehicle.Value["name"]})");
savedVehicles.AddItem(vehBtn);
spawnSavedVehicles.AddItem(vehBtn);
if (!IsModelInCdimage((uint)Int64.Parse(savedVehicle.Value["model"])))
{
vehBtn.SetLeftBadge(UIMenuItem.BadgeStyle.Lock);
Expand All @@ -116,24 +116,12 @@ private void CreateMenu()
}
// Sort the menu items (case IN-sensitive) by name.
savedVehicles.MenuItems.Sort((pair1, pair2) => pair1.Text.ToString().ToLower().CompareTo(pair2.Text.ToString().ToLower()));
// When a vehicle is selected...
savedVehicles.OnItemSelect += (sender2, item2, index2) =>
{
Dictionary<string, string> vehInfo = SavedVehiclesDict["veh_" + item2.Text];
// Get the model hash.
var model = vehInfo["model"];
// Spawn a vehicle using the hash, and pass on the vehicleInfo dictionary containing all saved vehicle mods.
cf.SpawnVehicle((uint)Int64.Parse(model), MainMenu.VehicleSpawnerMenu.SpawnInVehicle, MainMenu.VehicleSpawnerMenu.ReplaceVehicle, vehicleInfo: vehInfo, saveName: item2.Text);
};
spawnSavedVehicles.MenuItems.Sort((pair1, pair2) => pair1.Text.ToString().ToLower().CompareTo(pair2.Text.ToString().ToLower()));
// Refresh the index of the page.
savedVehicles.RefreshIndex();
spawnSavedVehicles.RefreshIndex();
// Update the scaleform.
savedVehicles.UpdateScaleform();
spawnSavedVehicles.UpdateScaleform();
}
// Delete saved vehicle.
else if (item == deleteSavedVehiclesBtn)
Expand All @@ -155,20 +143,36 @@ private void CreateMenu()
// Sort the menu items (case IN-sensitive) by name.
deleteSavedVehicles.MenuItems.Sort((pair1, pair2) => pair1.Text.ToString().ToLower().CompareTo(pair2.Text.ToString().ToLower()));
// Handle vehicle deletions
deleteSavedVehicles.OnItemSelect += (sender2, item2, index2) =>
{
var vehDictName = "veh_" + item2.Text;
new StorageManager().DeleteSavedDictionary(vehDictName);
deleteSavedVehicles.GoBack();
};
deleteSavedVehicles.RefreshIndex();
deleteSavedVehicles.UpdateScaleform();
}
};
#endregion

#region Handle saved vehicles being pressed. (spawning)
// When a vehicle is selected...
spawnSavedVehicles.OnItemSelect += (sender2, item2, index2) =>
{
Dictionary<string, string> vehInfo = SavedVehiclesDict["veh_" + item2.Text];
// Get the model hash.
var model = vehInfo["model"];
// Spawn a vehicle using the hash, and pass on the vehicleInfo dictionary containing all saved vehicle mods.
cf.SpawnVehicle((uint)Int64.Parse(model), MainMenu.VehicleSpawnerMenu.SpawnInVehicle, MainMenu.VehicleSpawnerMenu.ReplaceVehicle, vehicleInfo: vehInfo, saveName: item2.Text);
};

// Handle vehicle deletions
deleteSavedVehicles.OnItemSelect += (sender2, item2, index2) =>
{
var vehDictName = "veh_" + item2.Text;
new StorageManager().DeleteSavedDictionary(vehDictName);
deleteSavedVehicles.GoBack();
};
#endregion

// Add the submenus to the menu pool.
MainMenu.Mp.Add(savedVehicles);
MainMenu.Mp.Add(spawnSavedVehicles);
MainMenu.Mp.Add(deleteSavedVehicles);
}

Expand Down

0 comments on commit c1e8aa8

Please sign in to comment.