Files
RAGECOOP-V/RageCoop.Client/Menus/Sub/SettingsMenu.cs

142 lines
6.2 KiB
C#
Raw Normal View History

2022-07-20 17:50:01 +08:00
using GTA;
using LemonUI.Menus;
using System;
2022-07-20 17:50:01 +08:00
using System.Drawing;
using System.Windows.Forms;
namespace RageCoop.Client.Menus
{
internal static class SettingsMenu
{
public static NativeMenu Menu = new NativeMenu("RAGECOOP", "Settings", "Go to the settings")
{
UseMouse = false,
2022-05-22 15:55:26 +08:00
Alignment = Main.Settings.FlipMenu ? GTA.UI.Alignment.Right : GTA.UI.Alignment.Left
};
2021-08-18 11:47:59 +02:00
private static readonly NativeCheckboxItem _disableTrafficItem = new NativeCheckboxItem("Disable Traffic (NPCs/Vehicles)", "Local traffic only", Main.Settings.DisableTraffic);
private static readonly NativeCheckboxItem _flipMenuItem = new NativeCheckboxItem("Flip menu", Main.Settings.FlipMenu);
2022-08-22 10:01:09 +08:00
private static readonly NativeCheckboxItem _disablePauseAlt = new NativeCheckboxItem("Disable Alternate Pause", "Don't freeze game time when Esc pressed", Main.Settings.DisableAlternatePause);
private static readonly NativeCheckboxItem _showBlip = new NativeCheckboxItem("Show player blip", "Show other player's blip on map", Main.Settings.ShowPlayerBlip);
private static readonly NativeCheckboxItem _showNametag = new NativeCheckboxItem("Show player nametag", "Show other player's nametag on your screen", Main.Settings.ShowPlayerNameTag);
2022-08-14 02:26:59 +02:00
private static readonly NativeCheckboxItem _disableVoice = new NativeCheckboxItem("Enable voice", "Check your GTA:V settings to find the right key on your keyboard for PushToTalk and talk to your friends", Main.Settings.Voice);
2022-09-06 21:46:35 +08:00
private static readonly NativeItem _menuKey = new NativeItem("Menu Key", "The key to open menu", Main.Settings.MenuKey.ToString());
private static readonly NativeItem _passengerKey = new NativeItem("Passenger Key", "The key to enter a vehicle as passenger", Main.Settings.PassengerKey.ToString());
private static readonly NativeItem _vehicleSoftLimit = new NativeItem("Vehicle limit (soft)", "The game won't spawn more NPC traffic if the limit is exceeded. \n-1 for unlimited (not recommended).", Main.Settings.WorldVehicleSoftLimit.ToString());
static SettingsMenu()
{
Menu.Banner.Color = Color.FromArgb(225, 0, 0, 0);
Menu.Title.Color = Color.FromArgb(255, 165, 0);
2022-04-06 02:18:24 +02:00
_disableTrafficItem.CheckboxChanged += DisableTrafficCheckboxChanged;
2022-09-06 21:46:35 +08:00
_disablePauseAlt.CheckboxChanged += DisablePauseAltCheckboxChanged;
2022-08-13 03:39:11 +02:00
_disableVoice.CheckboxChanged += DisableVoiceCheckboxChanged;
_flipMenuItem.CheckboxChanged += FlipMenuCheckboxChanged;
2022-09-06 21:46:35 +08:00
_menuKey.Activated += ChaneMenuKey;
_passengerKey.Activated += ChangePassengerKey;
_vehicleSoftLimit.Activated += VehicleSoftLimitActivated;
_showBlip.Activated += (s, e) =>
{
Main.Settings.ShowPlayerBlip = _showBlip.Checked;
Util.SaveSettings();
};
_showNametag.Activated += (s, e) =>
{
Main.Settings.ShowPlayerNameTag = _showNametag.Checked;
Util.SaveSettings();
};
Menu.Add(_disableTrafficItem);
Menu.Add(_disablePauseAlt);
Menu.Add(_flipMenuItem);
2022-08-13 00:52:34 +02:00
Menu.Add(_disableVoice);
Menu.Add(_menuKey);
Menu.Add(_passengerKey);
Menu.Add(_vehicleSoftLimit);
Menu.Add(_showBlip);
Menu.Add(_showNametag);
}
2022-08-13 03:39:11 +02:00
private static void DisableVoiceCheckboxChanged(object sender, EventArgs e)
{
2022-08-14 02:26:59 +02:00
if (_disableVoice.Checked)
2022-08-13 03:39:11 +02:00
{
2022-08-15 16:13:53 +08:00
if (Networking.IsOnServer && !Voice.WasInitialized())
2022-08-14 02:26:59 +02:00
{
2022-08-15 16:13:53 +08:00
Voice.Init();
2022-08-14 02:26:59 +02:00
}
2022-09-06 21:46:35 +08:00
}
else
{
2022-08-15 16:13:53 +08:00
Voice.ClearAll();
2022-08-13 03:39:11 +02:00
}
Main.Settings.Voice = _disableVoice.Checked;
Util.SaveSettings();
}
2022-08-13 00:52:34 +02:00
private static void DisablePauseAltCheckboxChanged(object sender, EventArgs e)
{
2022-09-06 21:46:35 +08:00
Main.Settings.DisableAlternatePause = _disablePauseAlt.Checked;
Util.SaveSettings();
}
2022-08-13 00:52:34 +02:00
private static void VehicleSoftLimitActivated(object sender, EventArgs e)
{
try
{
2022-09-06 21:46:35 +08:00
Main.Settings.WorldVehicleSoftLimit = int.Parse(
Game.GetUserInput(WindowTitle.EnterMessage20,
Main.Settings.WorldVehicleSoftLimit.ToString(), 20));
2022-09-06 21:46:35 +08:00
_menuKey.AltTitle = Main.Settings.WorldVehicleSoftLimit.ToString();
Util.SaveSettings();
}
catch { }
}
private static void ChaneMenuKey(object sender, EventArgs e)
{
try
{
2022-09-06 21:46:35 +08:00
Main.Settings.MenuKey = (Keys)Enum.Parse(
typeof(Keys),
Game.GetUserInput(WindowTitle.EnterMessage20,
Main.Settings.MenuKey.ToString(), 20));
2022-09-06 21:46:35 +08:00
_menuKey.AltTitle = Main.Settings.MenuKey.ToString();
2022-05-23 15:01:55 +08:00
Util.SaveSettings();
}
catch { }
}
private static void ChangePassengerKey(object sender, EventArgs e)
{
try
{
2022-09-06 21:46:35 +08:00
Main.Settings.PassengerKey = (Keys)Enum.Parse(
typeof(Keys),
Game.GetUserInput(WindowTitle.EnterMessage20,
Main.Settings.PassengerKey.ToString(), 20));
2022-09-06 21:46:35 +08:00
_passengerKey.AltTitle = Main.Settings.PassengerKey.ToString();
2022-05-23 15:01:55 +08:00
Util.SaveSettings();
}
catch { }
}
public static void DisableTrafficCheckboxChanged(object a, System.EventArgs b)
2021-08-22 13:59:15 +02:00
{
2022-08-22 10:01:09 +08:00
WorldThread.Traffic(!_disableTrafficItem.Checked);
Main.Settings.DisableTraffic = _disableTrafficItem.Checked;
2022-07-20 17:50:01 +08:00
Util.SaveSettings();
2021-08-22 13:59:15 +02:00
}
public static void FlipMenuCheckboxChanged(object a, System.EventArgs b)
{
CoopMenu.Menu.Alignment = _flipMenuItem.Checked ? GTA.UI.Alignment.Right : GTA.UI.Alignment.Left;
Menu.Alignment = _flipMenuItem.Checked ? GTA.UI.Alignment.Right : GTA.UI.Alignment.Left;
2022-05-22 15:55:26 +08:00
Main.Settings.FlipMenu = _flipMenuItem.Checked;
Util.SaveSettings();
}
}
}