Here are the examples of the csharp api System.Collections.Generic.List.Contains(VehicleColor) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
2 Examples
19
Source : DevVehicleMenu.cs
with MIT License
from GroovyGiantPanda
with MIT License
from GroovyGiantPanda
public override void Refresh()
{
var _menuItems = new List<MenuItem>();
if (Game.PlayerPed.Exists() && Game.PlayerPed.IsInVehicle())
{
if (vehicle != Game.PlayerPed.CurrentVehicle)
{
vehicle = Game.PlayerPed.CurrentVehicle;
vehicle.Mods.InstallModKit();
}
try
{
int selectedVehicleIndex = VehicleHashValues.Contains((VehicleHash)vehicle.Model.Hash) ? VehicleHashValues.IndexOf((VehicleHash)vehicle.Model.Hash) : VehicleHashValues.IndexOf(VehicleHash.Monster);
VehicleColor primaryColor = vehicle.Mods.PrimaryColor;
VehicleColor secondaryColor = vehicle.Mods.SecondaryColor;
VehicleColor pearlescentColor = vehicle.Mods.PearlescentColor;
VehicleColor RimColor = vehicle.Mods.RimColor;
VehicleWheelType WheelType = (VehicleWheelType)Function.Call<int>(Hash.GET_VEHICLE_WHEEL_TYPE, vehicle.Handle);
int LiveryCount = vehicle.Mods.LiveryCount;
int Livery = vehicle.Mods.Livery;
// R/G/B selection?
//System.Drawing.Color NeonLightsColor = vehicle.Mods.NeonLightsColor;
// Do we even want this one?
//LicensePlateStyle LicensePlateStyle = vehicle.Mods.LicensePlateStyle;
// I have gotten several requests not to implement tire smoke (realism level -150)
VehicleMod[] AllMods = vehicle.Mods.GetAllMods();
_menuItems.Add(new MenuItemHorNamedSelector
{
replacedle = $"Vehicle",
Description = "Activate to replace your current vehicle.",
state = menuItems[0] is MenuItemHorNamedSelector ? (menuItems[0] as MenuItemHorNamedSelector).state : selectedVehicleIndex,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
optionList = VehicleHashNames,
OnActivate = new Action<int, string, MenuItemHorNamedSelector>(async (selectedAlternative, selName, menuItem) => { await ReplaceCurrentVehicleByIndex(selectedAlternative); })
});
if (LiveryCount != -1)
{
if (Livery == -1) vehicle.Mods.Livery = 1;
_menuItems.Add(new MenuItemHorSelector<int>
{
replacedle = $@"Livery",
state = menuItems.Count > 1 ? ((MenuItemHorSelector<int>)menuItems[1]).state : 1,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
minState = 1,
maxState = LiveryCount,
overrideDetailWith = vehicle.Mods.LocalizedLiveryName != "" ? $"{vehicle.Mods.LocalizedLiveryName}" : "",
OnChange = new Action<int, MenuItemHorSelector<int>>((selectedAlternative, menuItem) => { vehicle.Mods.Livery = selectedAlternative; })
});
}
_menuItems.Add(new MenuItemHorNamedSelector
{
replacedle = $"Primary Color",
state = VehicleColorValues.Contains(primaryColor) ? VehicleColorValues.IndexOf(primaryColor) : 0,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
optionList = VehicleColorNames,
OnChange = new Action<int, string, MenuItemHorNamedSelector>(async (selectedAlternative, selName, menuItem) => { await SetColorByIndex(selectedAlternative, 0); })
});
_menuItems.Add(new MenuItemHorNamedSelector
{
replacedle = $"Secondary Color",
state = VehicleColorValues.Contains(secondaryColor) ? VehicleColorValues.IndexOf(secondaryColor) : 0,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
optionList = VehicleColorNames,
OnChange = new Action<int, string, MenuItemHorNamedSelector>(async (selectedAlternative, selName, menuItem) => { await SetColorByIndex(selectedAlternative, 1); })
});
_menuItems.Add(new MenuItemHorNamedSelector
{
replacedle = $"Pearlescent Color",
state = VehicleColorValues.Contains(pearlescentColor) ? VehicleColorValues.IndexOf(pearlescentColor) : 0,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
optionList = VehicleColorNames,
OnChange = new Action<int, string, MenuItemHorNamedSelector>(async (selectedAlternative, selName, menuItem) => { await SetColorByIndex(selectedAlternative, 2); })
});
_menuItems.Add(new MenuItemHorNamedSelector
{
replacedle = $"Rim Color",
state = VehicleColorValues.Contains(RimColor) ? VehicleColorValues.IndexOf(RimColor) : 0,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
optionList = VehicleColorNames,
OnChange = new Action<int, string, MenuItemHorNamedSelector>(async (selectedAlternative, selName, menuItem) => { await SetColorByIndex(selectedAlternative, 3); })
});
var allowedWheelTypes = vehicle.Mods.AllowedWheelTypes.ToList();
if(allowedWheelTypes.Contains(VehicleWheelType.HighEnd)) allowedWheelTypes.Remove(VehicleWheelType.HighEnd); // Removing for now, seems to not want to set this
// Wheel Types not a thing for bikes I believe; real and front wheel already a mod category
if (vehicle.Model.IsCar && allowedWheelTypes.Count() > 0)
{
_menuItems.Add(new MenuItemHorNamedSelector
{
replacedle = $"Wheel Type",
state = allowedWheelTypes.ToList().Contains(WheelType) ? (int)WheelType : (int)allowedWheelTypes[0],
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
optionList = allowedWheelTypes.Select(i => $"{i}").ToList(),
OnChange = new Action<int, string, MenuItemHorNamedSelector>((selectedAlternative, selName, menuItem) => { vehicle.Mods.WheelType = (VehicleWheelType)selectedAlternative; vehicle.Mods[VehicleModType.FrontWheel].Index = 0; })
});
}
AllMods.ToList().ForEach(m =>
{
try
{
_menuItems.Add(new MenuItemHorSelector<int>
{
replacedle = $@"{m.LocalizedModTypeName}",
state = (m.Index >= -1 && m.Index <= m.ModCount - 1) ? m.Index : 0,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
minState = -1,
maxState = m.ModCount - 1,
overrideDetailWith = m.LocalizedModName,
OnChange = new Action<int, MenuItemHorSelector<int>>((selectedAlternative, menuItem) => { m.Index = selectedAlternative; })
});
if (m.ModType == VehicleModType.FrontWheel)
{
_menuItems.Add(new MenuItemCheckbox
{
replacedle = $"Special Tire Variation",
Description = "This will only work for some wheels.",
state = m.Variation,
OnActivate = new Action<bool, MenuItemCheckbox>((selectedAlternative, menuItem) => { m.Variation = selectedAlternative; })
});
}
}
catch (Exception ex)
{
Log.Error($"[VEHICLETESTMENU] Exception in vehicle mods code; {ex.Message}");
}
});
// Yes, there are this many extra indices
// TODO: Save these for each vehicle after iterating once; this is the first iteration
// No performance hit on my own PC though
Enumerable.Range(0, 50).ToList().ForEach(i =>
{
try
{
if (Function.Call<bool>(Hash.DOES_EXTRA_EXIST, vehicle.Handle, i))
{
_menuItems.Add(new MenuItemCheckbox
{
replacedle = $"Extra #{i + 1}",
state = Function.Call<bool>(Hash.IS_VEHICLE_EXTRA_TURNED_ON, vehicle.Handle, i),
OnActivate = new Action<bool, MenuItemCheckbox>((selectedAlternative, menuItem) => { Function.Call(Hash.SET_VEHICLE_EXTRA, vehicle.Handle, i, selectedAlternative ? 0 : -1); })
});
}
}
catch (Exception ex)
{
Log.Error($"[VEHICLETESTMENU] Exception in extras code; {ex.Message}");
}
});
visibleItems = _menuItems.Slice(visibleItems.IndexOf(menuItems.First()), visibleItems.IndexOf(menuItems.Last()));
menuItems = _menuItems;
SelectedIndex = SelectedIndex; // refreshes state
}
catch(Exception ex)
{
Log.Error($"[VEHICLETESTMENU] Outer exception {ex.Message}");
}
}
else
{
if (!currentlySelectedVehicleOnFoot.IsBetween(0, VehicleHashValues.Count-1)) currentlySelectedVehicleOnFoot = 0;
_menuItems.Add(new MenuItemHorNamedSelector
{
replacedle = $"Spawn Vehicle",
Description = "Activate to spawn vehicle.",
state = currentlySelectedVehicleOnFoot,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
optionList = VehicleHashNames,
OnChange = new Action<int, string, MenuItemHorNamedSelector>((selectedAlternative, selName, menuItem) => { currentlySelectedVehicleOnFoot = selectedAlternative; }),
OnActivate = new Action<int, string, MenuItemHorNamedSelector>(async (selectedAlternative, selName, menuItem) => { await ReplaceCurrentVehicleByIndex(selectedAlternative); })
});
menuItems = _menuItems;
SelectedIndex = 0; // refreshes state
}
}
19
Source : PoliceVehicleMenu.cs
with MIT License
from GroovyGiantPanda
with MIT License
from GroovyGiantPanda
public override void Refresh()
{
_menuItems.Clear();
if (serviceVehicle != null)
{
try
{
//Log.Debug($"X {VehicleHashNames.Count()}");
VehicleColor primaryColor = serviceVehicle.Mods.PrimaryColor;
VehicleColor secondaryColor = serviceVehicle.Mods.SecondaryColor;
VehicleColor pearlescentColor = serviceVehicle.Mods.PearlescentColor;
VehicleColor RimColor = serviceVehicle.Mods.RimColor;
VehicleWheelType WheelType = (VehicleWheelType)Function.Call<int>(Hash.GET_VEHICLE_WHEEL_TYPE, serviceVehicle.Handle);
int LiveryCount = serviceVehicle.Mods.LiveryCount;
int Livery = serviceVehicle.Mods.Livery;
// R/G/B selection?
//System.Drawing.Color NeonLightsColor = vehicle.Mods.NeonLightsColor;
// Do we even want this one?
//LicensePlateStyle LicensePlateStyle = vehicle.Mods.LicensePlateStyle;
// I have gotten several requests not to implement tire smoke (realism level -150)
//Log.Debug($"{selectedVehicleIndex}");
VehicleMod[] AllMods = serviceVehicle.Mods.GetAllMods();
_menuItems.Add(new MenuItemHorNamedSelector
{
replacedle = "Vehicle",
Description = "Activate to replace your current vehicle.",
state = selectedVehicleIndex,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
optionList = VehicleHashNames,
OnChange = (selectedAlternative, selName, item) => { selectedVehicleIndex = (item as MenuItemHorNamedSelector).state; },
OnActivate = new Action<int, string, MenuItemHorNamedSelector>(async (selectedAlternative, selName, menuItem) => { await ReplaceCurrentVehicleByIndex(selectedAlternative); })
});
if (LiveryCount != -1)
{
if (Livery == -1) serviceVehicle.Mods.Livery = 1;
_menuItems.Add(new MenuItemHorSelector<int>
{
replacedle = $@"Livery",
state = selectedLivery,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
minState = 1,
maxState = LiveryCount,
overrideDetailWith = serviceVehicle.Mods.LocalizedLiveryName != "" ? $"{serviceVehicle.Mods.LocalizedLiveryName}" : "",
OnChange = new Action<int, MenuItemHorSelector<int>>((selectedAlternative, menuItem) => { serviceVehicle.Mods.Livery = selectedAlternative; selectedLivery = selectedAlternative; })
});
}
_menuItems.Add(new MenuItemHorNamedSelector
{
replacedle = $"Primary Color",
state = VehicleColorValues.Contains(primaryColor) ? VehicleColorValues.IndexOf(primaryColor) : 0,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
optionList = VehicleColorNames,
OnChange = new Action<int, string, MenuItemHorNamedSelector>(async (selectedAlternative, selName, menuItem) => { await SetColorByIndex(selectedAlternative, 0); })
});
_menuItems.Add(new MenuItemHorNamedSelector
{
replacedle = $"Secondary Color",
state = VehicleColorValues.Contains(secondaryColor) ? VehicleColorValues.IndexOf(secondaryColor) : 0,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
optionList = VehicleColorNames,
OnChange = new Action<int, string, MenuItemHorNamedSelector>(async (selectedAlternative, selName, menuItem) => { await SetColorByIndex(selectedAlternative, 1); })
});
_menuItems.Add(new MenuItemHorNamedSelector
{
replacedle = $"Pearlescent Color",
state = VehicleColorValues.Contains(pearlescentColor) ? VehicleColorValues.IndexOf(pearlescentColor) : 0,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
optionList = VehicleColorNames,
OnChange = new Action<int, string, MenuItemHorNamedSelector>(async (selectedAlternative, selName, menuItem) => { await SetColorByIndex(selectedAlternative, 2); })
});
_menuItems.Add(new MenuItemHorNamedSelector
{
replacedle = $"Rim Color",
state = VehicleColorValues.Contains(RimColor) ? VehicleColorValues.IndexOf(RimColor) : 0,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
optionList = VehicleColorNames,
OnChange = new Action<int, string, MenuItemHorNamedSelector>(async (selectedAlternative, selName, menuItem) => { await SetColorByIndex(selectedAlternative, 3); })
});
var allowedWheelTypes = serviceVehicle.Mods.AllowedWheelTypes.ToList();
if (allowedWheelTypes.Contains(VehicleWheelType.HighEnd)) allowedWheelTypes.Remove(VehicleWheelType.HighEnd); // Removing for now, seems to not want to set this
// Wheel Types not a thing for bikes I believe; real and front wheel already a mod category
if (serviceVehicle.Model.IsCar && allowedWheelTypes.Count() > 0)
{
_menuItems.Add(new MenuItemHorNamedSelector
{
replacedle = $"Wheel Type",
state = allowedWheelTypes.ToList().Contains(WheelType) ? (int)WheelType : (int)allowedWheelTypes[0],
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
optionList = allowedWheelTypes.Select(i => $"{i}").ToList(),
OnChange = new Action<int, string, MenuItemHorNamedSelector>((selectedAlternative, selName, menuItem) => { serviceVehicle.Mods.WheelType = (VehicleWheelType)selectedAlternative; serviceVehicle.Mods[VehicleModType.FrontWheel].Index = 0; })
});
}
AllMods.Where(m => m.ModType != VehicleModType.Engine && m.ModType != VehicleModType.Transmission && m.ModType != VehicleModType.Brakes).ToList().ForEach(m =>
{
try
{
_menuItems.Add(new MenuItemHorSelector<int>
{
replacedle = $@"{m.LocalizedModTypeName}",
state = (m.Index >= -1 && m.Index <= m.ModCount - 1) ? m.Index : 0,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
minState = -1,
maxState = m.ModCount - 1,
overrideDetailWith = m.LocalizedModName,
OnChange = new Action<int, MenuItemHorSelector<int>>((selectedAlternative, menuItem) => { m.Index = selectedAlternative; })
});
if (m.ModType == VehicleModType.FrontWheel)
{
_menuItems.Add(new MenuItemCheckbox
{
replacedle = $"Special Tire Variation",
Description = "This will only work for some wheels.",
state = m.Variation,
OnActivate = new Action<bool, MenuItemCheckbox>((selectedAlternative, menuItem) => { m.Variation = selectedAlternative; })
});
}
}
catch (Exception ex)
{
Log.Error($"[COPVEHICLEMENU] Exception in vehicle mods code; {ex.Message}");
}
});
// Yes, there are this many extra indices
// TODO: Save these for each vehicle after iterating once; this is the first iteration
// No performance hit on my own PC though
Enumerable.Range(0, 50).ToList().ForEach(i =>
{
try
{
if (Function.Call<bool>(Hash.DOES_EXTRA_EXIST, serviceVehicle.Handle, i))
{
_menuItems.Add(new MenuItemCheckbox
{
replacedle = $"Extra #{i + 1}",
state = Function.Call<bool>(Hash.IS_VEHICLE_EXTRA_TURNED_ON, serviceVehicle.Handle, i),
OnActivate = new Action<bool, MenuItemCheckbox>((selectedAlternative, menuItem) => { Function.Call(Hash.SET_VEHICLE_EXTRA, serviceVehicle.Handle, i, selectedAlternative ? 0 : -1); })
});
}
}
catch (Exception ex)
{
Log.Error($"[COPVEHICLEMENU] Exception in extras code; {ex.Message}");
}
});
int firstVisibleItem = visibleItems.IndexOf(menuItems.First());
int lastVisibleItem = visibleItems.IndexOf(menuItems.Last());
visibleItems = _menuItems.Slice(firstVisibleItem, lastVisibleItem);
//if (lastVisibleItem - firstVisibleItem >= _menuItems.Count)
// visibleItems = _menuItems;
//else
//{
// visibleItems = _menuItems.Slice(firstVisibleItem, firstVisibleItem + Math.Min(Math.Max(lastVisibleItem - firstVisibleItem, _menuItems.Count - 1 - firstVisibleItem), numVisibleItems));
//}
menuItems = _menuItems;
SelectedIndex = SelectedIndex; // refreshes state
}
catch (Exception ex)
{
Log.Error($"[COPVEHICLEMENU] Outer exception {ex.Message}");
}
}
else
{
if (!currentlySelectedVehicleOnFoot.IsBetween(0, VehicleHashValues.Count-1)) currentlySelectedVehicleOnFoot = 0;
_menuItems.Add(new MenuItemHorNamedSelector
{
replacedle = $"Spawn Vehicle",
Description = "Activate to spawn vehicle.",
state = currentlySelectedVehicleOnFoot,
Type = MenuItemHorizontalSelectorType.NumberAndBar,
wrapAround = true,
optionList = VehicleHashNames,
OnChange = new Action<int, string, MenuItemHorNamedSelector>((selectedAlternative, selName, menuItem) => { selectedVehicleIndex = currentlySelectedVehicleOnFoot = selectedAlternative; }),
OnActivate = new Action<int, string, MenuItemHorNamedSelector>(async (selectedAlternative, selName, menuItem) => { await ReplaceCurrentVehicleByIndex(selectedAlternative); })
});
menuItems = _menuItems;
SelectedIndex = SelectedIndex; // refreshes state
}
}