summaryrefslogtreecommitdiff
path: root/sourcemod/scripting/gokz-jumpstats/options.sp
diff options
context:
space:
mode:
Diffstat (limited to 'sourcemod/scripting/gokz-jumpstats/options.sp')
-rw-r--r--sourcemod/scripting/gokz-jumpstats/options.sp86
1 files changed, 86 insertions, 0 deletions
diff --git a/sourcemod/scripting/gokz-jumpstats/options.sp b/sourcemod/scripting/gokz-jumpstats/options.sp
new file mode 100644
index 0000000..7e0e9e9
--- /dev/null
+++ b/sourcemod/scripting/gokz-jumpstats/options.sp
@@ -0,0 +1,86 @@
+/*
+ Options for jumpstats, including an option to disable it completely.
+*/
+
+
+
+// =====[ PUBLIC ]=====
+
+bool GetJumpstatsDisabled(int client)
+{
+ return GOKZ_JS_GetOption(client, JSOption_JumpstatsMaster) == JSToggleOption_Disabled
+ || (GOKZ_JS_GetOption(client, JSOption_MinChatTier) == DistanceTier_None
+ && GOKZ_JS_GetOption(client, JSOption_MinConsoleTier) == DistanceTier_None
+ && GOKZ_JS_GetOption(client, JSOption_MinSoundTier) == DistanceTier_None
+ && GOKZ_JS_GetOption(client, JSOption_FailstatsConsole) == JSToggleOption_Disabled
+ && GOKZ_JS_GetOption(client, JSOption_FailstatsChat) == JSToggleOption_Disabled
+ && GOKZ_JS_GetOption(client, JSOption_JumpstatsAlways) == JSToggleOption_Disabled);
+}
+
+
+
+// =====[ EVENTS ]=====
+
+void OnOptionsMenuReady_Options()
+{
+ RegisterOptions();
+}
+
+void OnClientPutInServer_Options(int client)
+{
+ if (GOKZ_JS_GetOption(client, JSOption_MinSoundTier) == DistanceTier_Meh)
+ {
+ GOKZ_JS_SetOption(client, JSOption_MinSoundTier, DistanceTier_Impressive);
+ }
+}
+
+void OnOptionChanged_Options(int client, const char[] option, any newValue)
+{
+ JSOption jsOption;
+ if (GOKZ_JS_IsJSOption(option, jsOption))
+ {
+ if (jsOption == JSOption_MinSoundTier && newValue == DistanceTier_Meh)
+ {
+ GOKZ_JS_SetOption(client, JSOption_MinSoundTier, DistanceTier_Impressive);
+ }
+ else
+ {
+ PrintOptionChangeMessage(client, jsOption, newValue);
+ }
+ }
+}
+
+
+
+// =====[ PRIVATE ]=====
+
+static void RegisterOptions()
+{
+ for (JSOption option; option < JSOPTION_COUNT; option++)
+ {
+ GOKZ_RegisterOption(gC_JSOptionNames[option], gC_JSOptionDescriptions[option],
+ OptionType_Int, gI_JSOptionDefaults[option], 0, gI_JSOptionCounts[option] - 1);
+ }
+}
+
+static void PrintOptionChangeMessage(int client, JSOption option, any newValue)
+{
+ // NOTE: Not all options have a message for when they are changed.
+ switch (option)
+ {
+ case JSOption_JumpstatsMaster:
+ {
+ switch (newValue)
+ {
+ case JSToggleOption_Enabled:
+ {
+ GOKZ_PrintToChat(client, true, "%t", "Jumpstats Option - Master Switch - Enable");
+ }
+ case JSToggleOption_Disabled:
+ {
+ GOKZ_PrintToChat(client, true, "%t", "Jumpstats Option - Master Switch - Disable");
+ }
+ }
+ }
+ }
+}