Skip to content

Game Preferences Update #13936

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions SQL/paradise_schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -255,20 +255,15 @@ CREATE TABLE `player` (
`be_role` mediumtext,
`default_slot` smallint(4) DEFAULT '1',
`toggles` int(8) DEFAULT '383',
`toggles_2` int(8) DEFAULT '14',
`sound` mediumint(8) DEFAULT '31',
`randomslot` tinyint(1) DEFAULT '0',
`volume` smallint(4) DEFAULT '100',
`nanoui_fancy` smallint(4) DEFAULT '1',
`show_ghostitem_attack` smallint(4) DEFAULT '1',
`lastchangelog` varchar(32) NOT NULL DEFAULT '0',
`windowflashing` smallint(4) DEFAULT '1',
`ghost_anonsay` tinyint(1) NOT NULL DEFAULT '0',
`exp` mediumtext,
`clientfps` smallint(4) DEFAULT '0',
`atklog` smallint(4) DEFAULT '0',
`fuid` bigint(20) NULL DEFAULT NULL,
`fupdate` smallint(4) NULL DEFAULT '0',
`afk_watch` tinyint(1) NOT NULL DEFAULT '0',
`parallax` tinyint(1) DEFAULT '8',
PRIMARY KEY (`id`),
UNIQUE KEY `ckey` (`ckey`)
Expand Down
7 changes: 1 addition & 6 deletions SQL/paradise_schema_prefixed.sql
Original file line number Diff line number Diff line change
Expand Up @@ -254,20 +254,15 @@ CREATE TABLE `SS13_player` (
`be_role` mediumtext,
`default_slot` smallint(4) DEFAULT '1',
`toggles` int(8) DEFAULT '383',
`toggles_2` int(8) DEFAULT '14',
`sound` mediumint(8) DEFAULT '31',
`randomslot` tinyint(1) DEFAULT '0',
`volume` smallint(4) DEFAULT '100',
`nanoui_fancy` smallint(4) DEFAULT '1',
`show_ghostitem_attack` smallint(4) DEFAULT '1',
`lastchangelog` varchar(32) NOT NULL DEFAULT '0',
`windowflashing` smallint(4) DEFAULT '1',
`ghost_anonsay` tinyint(1) NOT NULL DEFAULT '0',
`exp` mediumtext,
`clientfps` smallint(4) DEFAULT '0',
`atklog` smallint(4) DEFAULT '0',
`fuid` bigint(20) NULL DEFAULT NULL,
`fupdate` smallint(4) NULL DEFAULT '0',
`afk_watch` tinyint(1) NOT NULL DEFAULT '0',
`parallax` tinyint(1) DEFAULT '8',
PRIMARY KEY (`id`),
UNIQUE KEY `ckey` (`ckey`)
Expand Down
22 changes: 22 additions & 0 deletions SQL/updates/12-13.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#Updating the SQL from version 12 to version 13. -AffectedArc07
#Modifying the player table to remove old columns and add a new bitflag column for toggles
#Includes conversion from old to new

ALTER TABLE `player` ADD COLUMN `toggles_2` INT NULL DEFAULT '0' AFTER `toggles`;

# The following lines will update the new toggles_2 column based on existing data
UPDATE `player` SET `toggles_2` = `toggles_2` + 1 WHERE `randomslot` = 1;
UPDATE `player` SET `toggles_2` = `toggles_2` + 2 WHERE `nanoui_fancy` = 1;
UPDATE `player` SET `toggles_2` = `toggles_2` + 4 WHERE `show_ghostitem_attack` = 1;
UPDATE `player` SET `toggles_2` = `toggles_2` + 8 WHERE `windowflashing` = 1;
UPDATE `player` SET `toggles_2` = `toggles_2` + 16 WHERE `ghost_anonsay` = 1;
UPDATE `player` SET `toggles_2` = `toggles_2` + 32 WHERE `afk_watch` = 1;

# Remove the old columns
ALTER TABLE `player`
DROP COLUMN `randomslot`,
DROP COLUMN `nanoui_fancy`,
DROP COLUMN `show_ghostitem_attack`,
DROP COLUMN `windowflashing`,
DROP COLUMN `ghost_anonsay`,
DROP COLUMN `afk_watch`;
2 changes: 1 addition & 1 deletion code/__DEFINES/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,7 @@
#define INVESTIGATE_BOMB "bombs"

// The SQL version required by this version of the code
#define SQL_VERSION 12
#define SQL_VERSION 13

// Vending machine stuff
#define CAT_NORMAL 1
Expand Down
75 changes: 49 additions & 26 deletions code/__DEFINES/preferences.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,34 +12,57 @@

#define SOUND_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|SOUND_HEARTBEAT|SOUND_BUZZ|SOUND_INSTRUMENTS|SOUND_MENTORHELP|SOUND_DISCO|SOUND_AI_VOICE)

#define CHAT_OOC 1
#define CHAT_DEAD 2
#define CHAT_GHOSTEARS 4
#define CHAT_GHOSTSIGHT 8
#define CHAT_PRAYER 16
#define CHAT_RADIO 32
#define AZERTY 64
#define CHAT_DEBUGLOGS 128
#define CHAT_LOOC 256
#define CHAT_GHOSTRADIO 512
#define SHOW_TYPING 1024
#define DISABLE_SCOREBOARD 2048
#define DISABLE_KARMA_REMINDER 4096
#define MEMBER_PUBLIC 8192
#define CHAT_NO_ADMINLOGS 16384
#define DONATOR_PUBLIC 32768
#define CHAT_NO_TICKETLOGS 65536
#define UI_DARKMODE 131072
#define DISABLE_KARMA 262144
#define CHAT_NO_MENTORTICKETLOGS 524288
#define TYPING_ONCE 1048576
#define AMBIENT_OCCLUSION 2097152
#define CHAT_GHOSTPDA 4194304
#define NUMPAD_TARGET 8388608
#define TOGGLES_TOTAL 16777215 // If you add or remove a preference toggle above, make sure you update this define with the total value of the toggles combined.
#define PREFTOGGLE_CHAT_OOC 1
#define PREFTOGGLE_CHAT_DEAD 2
#define PREFTOGGLE_CHAT_GHOSTEARS 4
#define PREFTOGGLE_CHAT_GHOSTSIGHT 8
#define PREFTOGGLE_CHAT_PRAYER 16
#define PREFTOGGLE_CHAT_RADIO 32
#define PREFTOGGLE_AZERTY 64
#define PREFTOGGLE_CHAT_DEBUGLOGS 128
#define PREFTOGGLE_CHAT_LOOC 256
#define PREFTOGGLE_CHAT_GHOSTRADIO 512
#define PREFTOGGLE_SHOW_TYPING 1024
#define PREFTOGGLE_DISABLE_SCOREBOARD 2048
#define PREFTOGGLE_DISABLE_KARMA_REMINDER 4096
#define PREFTOGGLE_MEMBER_PUBLIC 8192
#define PREFTOGGLE_CHAT_NO_ADMINLOGS 16384
#define PREFTOGGLE_DONATOR_PUBLIC 32768
#define PREFTOGGLE_CHAT_NO_TICKETLOGS 65536
#define PREFTOGGLE_UI_DARKMODE 131072
#define PREFTOGGLE_DISABLE_KARMA 262144
#define PREFTOGGLE_CHAT_NO_MENTORTICKETLOGS 524288
#define PREFTOGGLE_TYPING_ONCE 1048576
#define PREFTOGGLE_AMBIENT_OCCLUSION 2097152
#define PREFTOGGLE_CHAT_GHOSTPDA 4194304
#define PREFTOGGLE_NUMPAD_TARGET 8388608

#define TOGGLES_TOTAL 16777215 // If you add or remove a preference toggle above, make sure you update this define with the total value of the toggles combined.

#define TOGGLES_DEFAULT (PREFTOGGLE_CHAT_OOC|PREFTOGGLE_CHAT_DEAD|PREFTOGGLE_CHAT_GHOSTEARS|PREFTOGGLE_CHAT_GHOSTSIGHT|PREFTOGGLE_CHAT_PRAYER|PREFTOGGLE_CHAT_RADIO|PREFTOGGLE_CHAT_LOOC|PREFTOGGLE_MEMBER_PUBLIC|PREFTOGGLE_DONATOR_PUBLIC|PREFTOGGLE_AMBIENT_OCCLUSION|PREFTOGGLE_CHAT_GHOSTPDA|PREFTOGGLE_NUMPAD_TARGET)

// toggles_2 variables. These MUST be prefixed with PREFTOGGLE_2
#define PREFTOGGLE_2_RANDOMSLOT 1
#define PREFTOGGLE_2_FANCYUI 2
#define PREFTOGGLE_2_ITEMATTACK 4
#define PREFTOGGLE_2_WINDOWFLASHING 8
#define PREFTOGGLE_2_ANONDCHAT 16
#define PREFTOGGLE_2_AFKWATCH 32

#define TOGGLES_2_TOTAL 63 // If you add or remove a preference toggle above, make sure you update this define with the total value of the toggles combined.

#define TOGGLES_2_DEFAULT (PREFTOGGLE_2_FANCYUI|PREFTOGGLE_2_ITEMATTACK|PREFTOGGLE_2_WINDOWFLASHING)

// Sanity checks
#if TOGGLES_TOTAL > 16777215
#error toggles bitflag over 16777215. Please use toggles_2.
#endif

#if TOGGLES_2_TOTAL > 16777215
#error toggles_2 bitflag over 16777215. Please make an issue report and postpone the feature you are working on.
#endif


#define TOGGLES_DEFAULT (CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|CHAT_LOOC|MEMBER_PUBLIC|DONATOR_PUBLIC|AMBIENT_OCCLUSION|CHAT_GHOSTPDA|NUMPAD_TARGET)

// Admin attack logs filter system, see /proc/add_attack_logs and /proc/msg_admin_attack
#define ATKLOG_ALL 0
Expand Down
2 changes: 1 addition & 1 deletion code/__HELPERS/_logging.dm
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ GLOBAL_VAR_INIT(log_end, (world.system_type == UNIX ? ascii2text(13) : ""))
WRITE_LOG(GLOB.world_game_log, "DEBUG: [text][GLOB.log_end]")

for(var/client/C in GLOB.admins)
if(check_rights(R_DEBUG, 0, C.mob) && (C.prefs.toggles & CHAT_DEBUGLOGS))
if(check_rights(R_DEBUG, 0, C.mob) && (C.prefs.toggles & PREFTOGGLE_CHAT_DEBUGLOGS))
to_chat(C, "DEBUG: [text]")

/proc/log_game(text)
Expand Down
4 changes: 2 additions & 2 deletions code/__HELPERS/game.dm
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@
var/turf/ear = get_turf(M)
if(ear)
// Ghostship is magic: Ghosts can hear radio chatter from anywhere
if(speaker_coverage[ear] || (istype(M, /mob/dead/observer) && M.get_preference(CHAT_GHOSTRADIO)))
if(speaker_coverage[ear] || (istype(M, /mob/dead/observer) && M.get_preference(PREFTOGGLE_CHAT_GHOSTRADIO)))
. |= M // Since we're already looping through mobs, why bother using |= ? This only slows things down.
return .

Expand Down Expand Up @@ -469,7 +469,7 @@
var/mob/M = C
if(M.client)
C = M.client
if(!C || !C.prefs.windowflashing)
if(!C || !C.prefs.toggles2 & PREFTOGGLE_2_WINDOWFLASHING)
return
winset(C, "mainwindow", "flash=5")

Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/hud/plane_master.dm
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
blend_mode = BLEND_OVERLAY

/obj/screen/plane_master/game_world/backdrop(mob/mymob)
if(istype(mymob) && mymob.client && mymob.client.prefs && (mymob.client.prefs.toggles & AMBIENT_OCCLUSION))
if(istype(mymob) && mymob.client && mymob.client.prefs && (mymob.client.prefs.toggles & PREFTOGGLE_AMBIENT_OCCLUSION))
add_filter(AMBIENT_OCCLUSION_FILTER_KEY, FILTER_AMBIENT_OCCLUSION)

/obj/screen/plane_master/lighting
Expand Down
2 changes: 1 addition & 1 deletion code/controllers/subsystem/afk.dm
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ SUBSYSTEM_DEF(afk)
var/turf/T
// Only players and players with the AFK watch enabled
// No dead, unconcious, restrained, people without jobs or people on other Z levels than the station
if(!H.client || !H.client.prefs.afk_watch || !H.mind || \
if(!H.client || !H.client.prefs.toggles2 & PREFTOGGLE_2_AFKWATCH || !H.mind || \
H.stat || H.restrained() || !H.job || !is_station_level((T = get_turf(H)).z)) // Assign the turf as last. Small optimization
if(afk_players[H.ckey])
toRemove += H.ckey
Expand Down
8 changes: 4 additions & 4 deletions code/controllers/subsystem/changelog.dm
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ SUBSYSTEM_DEF(changelog)
return // Only return here, we dont have to worry about a queue list because this will be called from ShowChangelog()
// Technically this is only for the date but we can also do the UI button at the same time
var/datum/preferences/P = GLOB.preferences_datums[C.ckey]
if(P.toggles & UI_DARKMODE)
if(P.toggles & PREFTOGGLE_UI_DARKMODE)
winset(C, "rpane.changelog", "background-color=#40628a;font-color=#ffffff;font-style=none")
else
winset(C, "rpane.changelog", "background-color=none;font-style=none")
Expand All @@ -74,7 +74,7 @@ SUBSYSTEM_DEF(changelog)
/datum/controller/subsystem/changelog/proc/UpdatePlayerChangelogButton(client/C)
// If SQL aint even enabled, just set the button to default style
if(!GLOB.dbcon.IsConnected())
if(C.prefs.toggles & UI_DARKMODE)
if(C.prefs.toggles & PREFTOGGLE_UI_DARKMODE)
winset(C, "rpane.changelog", "background-color=#40628a;text-color=#FFFFFF")
else
winset(C, "rpane.changelog", "background-color=none;text-color=#000000")
Expand All @@ -83,7 +83,7 @@ SUBSYSTEM_DEF(changelog)
// If SQL is enabled but we aint ready, queue them up, and use the default style
if(!ss_ready)
startup_clients_button |= C
if(C.prefs.toggles & UI_DARKMODE)
if(C.prefs.toggles & PREFTOGGLE_UI_DARKMODE)
winset(C, "rpane.changelog", "background-color=#40628a;text-color=#FFFFFF")
else
winset(C, "rpane.changelog", "background-color=none;text-color=#000000")
Expand All @@ -96,7 +96,7 @@ SUBSYSTEM_DEF(changelog)
winset(C, "rpane.changelog", "background-color=#bb7700;text-color=#FFFFFF;font-style=bold")
to_chat(C, "<span class='info'>Changelog has changed since your last visit.</span>")
else
if(C.prefs.toggles & UI_DARKMODE)
if(C.prefs.toggles & PREFTOGGLE_UI_DARKMODE)
winset(C, "rpane.changelog", "background-color=#40628a;text-color=#FFFFFF")
else
winset(C, "rpane.changelog", "background-color=none;text-color=#000000")
Expand Down
2 changes: 1 addition & 1 deletion code/controllers/subsystem/jobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ SUBSYSTEM_DEF(jobs)
for(var/mob/new_player/player in GLOB.player_list)
if(player.ready && player.has_valid_preferences() && player.mind && !player.mind.assigned_role)
unassigned += player
if(player.client.prefs.randomslot)
if(player.client.prefs.toggles2 & PREFTOGGLE_2_RANDOMSLOT)
player.client.prefs.load_random_character_slot(player.client)

Debug("DO, Len: [unassigned.len]")
Expand Down
2 changes: 1 addition & 1 deletion code/game/atoms_movable.dm
Original file line number Diff line number Diff line change
Expand Up @@ -561,7 +561,7 @@
// Who can see the attack?
var/list/viewing = list()
for(var/mob/M in viewers(A))
if(M.client && M.client.prefs.show_ghostitem_attack)
if(M.client && M.client.prefs.toggles2 & PREFTOGGLE_2_ITEMATTACK)
viewing |= M.client

flick_overlay(I, viewing, 5) // 5 ticks/half a second
Expand Down
2 changes: 1 addition & 1 deletion code/game/gamemodes/scoreboard.dm
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@
to_chat(world, "<b>The crew's final score is:</b>")
to_chat(world, "<b><font size='4'>[GLOB.score_crewscore]</font></b>")
for(var/mob/E in GLOB.player_list)
if(E.client && !E.get_preference(DISABLE_SCOREBOARD))
if(E.client && !E.get_preference(PREFTOGGLE_DISABLE_SCOREBOARD))
E.scorestats()

// A recursive function to properly determine the wealthiest escapee
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/tcomms/_base.dm
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ GLOBAL_LIST_EMPTY(tcomms_machines)

/* --- Loop through the receivers and categorize them --- */

if(is_admin(R) && !R.get_preference(CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios.
if(is_admin(R) && !R.get_preference(PREFTOGGLE_CHAT_RADIO)) //Adminning with 80 people on can be fun when you're trying to talk and all you can hear is radios.
continue

if(isnewplayer(R)) // we don't want new players to hear messages. rare but generates runtimes.
Expand Down
16 changes: 8 additions & 8 deletions code/game/verbs/ooc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ GLOBAL_VAR_INIT(admin_ooc_colour, "#b82e00")

//Checks if the client already has a text input open
/client/proc/checkTyping()
return (prefs.toggles & TYPING_ONCE && typing)
return (prefs.toggles & PREFTOGGLE_TYPING_ONCE && typing)

/client/verb/ooc(msg = "" as text)
set name = "OOC"
Expand Down Expand Up @@ -36,7 +36,7 @@ GLOBAL_VAR_INIT(admin_ooc_colour, "#b82e00")
if(!msg)
return

if(!(prefs.toggles & CHAT_OOC))
if(!(prefs.toggles & PREFTOGGLE_CHAT_OOC))
to_chat(src, "<span class='danger'>You have OOC muted.</span>")
return

Expand Down Expand Up @@ -68,20 +68,20 @@ GLOBAL_VAR_INIT(admin_ooc_colour, "#b82e00")

if(prefs.unlock_content)
if(display_colour == GLOB.normal_ooc_colour)
if((prefs.toggles & MEMBER_PUBLIC))
if((prefs.toggles & PREFTOGGLE_MEMBER_PUBLIC))
display_colour = GLOB.member_ooc_colour

for(var/client/C in GLOB.clients)
if(C.prefs.toggles & CHAT_OOC)
if(C.prefs.toggles & PREFTOGGLE_CHAT_OOC)
var/display_name = key

if(prefs.unlock_content)
if(prefs.toggles & MEMBER_PUBLIC)
if(prefs.toggles & PREFTOGGLE_MEMBER_PUBLIC)
var/icon/byond = icon('icons/member_content.dmi', "blag")
display_name = "[bicon(byond)][display_name]"

if(donator_level > 0)
if((prefs.toggles & DONATOR_PUBLIC))
if((prefs.toggles & PREFTOGGLE_DONATOR_PUBLIC))
var/icon/donator = icon('icons/ooc_tag_16x.dmi', "donator")
display_name = "[bicon(donator)][display_name]"

Expand Down Expand Up @@ -192,7 +192,7 @@ GLOBAL_VAR_INIT(admin_ooc_colour, "#b82e00")
if(!msg)
return

if(!(prefs.toggles & CHAT_LOOC))
if(!(prefs.toggles & PREFTOGGLE_CHAT_LOOC))
to_chat(src, "<span class='danger'>You have LOOC muted.</span>")
return

Expand All @@ -217,7 +217,7 @@ GLOBAL_VAR_INIT(admin_ooc_colour, "#b82e00")
display_name = mob.name

for(var/client/target in GLOB.clients)
if(target.prefs.toggles & CHAT_LOOC)
if(target.prefs.toggles & PREFTOGGLE_CHAT_LOOC)
var/prefix = ""
var/admin_stuff = ""
var/send = 0
Expand Down
6 changes: 3 additions & 3 deletions code/modules/admin/admin.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ GLOBAL_VAR_INIT(nologevent, 0)
msg = "<span class=\"admin\"><span class=\"prefix\">ADMIN LOG:</span> <span class=\"message\">[msg]</span></span>"
for(var/client/C in GLOB.admins)
if(R_ADMIN & C.holder.rights)
if(C.prefs && !(C.prefs.toggles & CHAT_NO_ADMINLOGS))
if(C.prefs && !(C.prefs.toggles & PREFTOGGLE_CHAT_NO_ADMINLOGS))
to_chat(C, msg)

/proc/msg_admin_attack(var/text, var/loglevel)
Expand All @@ -30,7 +30,7 @@ GLOBAL_VAR_INIT(nologevent, 0)
/proc/message_adminTicket(msg, important = FALSE)
for(var/client/C in GLOB.admins)
if(R_ADMIN & C.holder.rights)
if(important || (C.prefs && !(C.prefs.toggles & CHAT_NO_TICKETLOGS)))
if(important || (C.prefs && !(C.prefs.toggles & PREFTOGGLE_CHAT_NO_TICKETLOGS)))
to_chat(C, msg)
if(important)
if(C.prefs?.sound & SOUND_ADMINHELP)
Expand All @@ -47,7 +47,7 @@ GLOBAL_VAR_INIT(nologevent, 0)
/proc/message_mentorTicket(msg, important = FALSE)
for(var/client/C in GLOB.admins)
if(check_rights(R_ADMIN | R_MENTOR | R_MOD, 0, C.mob))
if(important || (C.prefs && !(C.prefs.toggles & CHAT_NO_MENTORTICKETLOGS)))
if(important || (C.prefs && !(C.prefs.toggles & PREFTOGGLE_CHAT_NO_TICKETLOGS)))
to_chat(C, msg)
if(important)
if(C.prefs?.sound & SOUND_MENTORHELP)
Expand Down
Loading