Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
MosleyTheMalO committed Jul 22, 2024
2 parents b4f453b + 3656329 commit fe903da
Show file tree
Hide file tree
Showing 6 changed files with 104 additions and 26 deletions.
6 changes: 3 additions & 3 deletions code/modules/client/preferences_savefile.dm
Original file line number Diff line number Diff line change
Expand Up @@ -601,7 +601,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
max_save_slots = old_max_save_slots
save_preferences(TRUE)

return TRUE
return S

/datum/preferences/proc/verify_keybindings_valid()
// Sanitize the actual keybinds to make sure they exist.
Expand Down Expand Up @@ -726,7 +726,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
if(parent && !silent)
to_chat(parent, span_notice("Saved preferences!"))

return TRUE
return S

/datum/preferences/proc/queue_save_pref(save_in, silent)
if(parent && !silent)
Expand Down Expand Up @@ -1389,7 +1389,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car

splurt_character_pref_load(S)

return TRUE
return S

/datum/preferences/proc/save_character(bypass_cooldown = FALSE, silent = FALSE, export = FALSE)
if(!path)
Expand Down
4 changes: 4 additions & 0 deletions html/changelogs/archive/2024-07.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,7 @@
2024-07-05:
SandPoot:
- bugfix: Fixed runtimes on hugbot.
2024-07-19:
SandPoot:
- rscadd: Added favorite interactions to the interaction menu, those persist between
rounds and between characters.
14 changes: 14 additions & 0 deletions modular_sand/code/datums/components/interaction_menu_granter.dm
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,9 @@

var/datum/preferences/prefs = self?.client.prefs
if(prefs)
//Let's get their favorites!
.["favorite_interactions"] = SANITIZE_LIST(prefs.favorite_interactions)

//Getting char prefs
.["erp_pref"] = pref_to_num(prefs.erppref)
.["noncon_pref"] = pref_to_num(prefs.nonconpref)
Expand Down Expand Up @@ -511,6 +514,17 @@
o.do_action(parent_mob, target)
return TRUE
return FALSE
if("favorite")
var/datum/interaction/interaction = SSinteractions.interactions[params["interaction"]]
if(interaction)
var/datum/preferences/prefs = parent_mob.client.prefs
if(interaction.type in prefs.favorite_interactions)
LAZYREMOVE(prefs.favorite_interactions, interaction.type)
else
LAZYADD(prefs.favorite_interactions, interaction.type)
prefs.save_preferences()
return TRUE
return FALSE
if("genital")
var/mob/living/carbon/self = parent_mob
if("visibility" in params)
Expand Down
3 changes: 3 additions & 0 deletions modular_sand/code/modules/client/preferences.dm
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
/datum/preferences
var/list/favorite_interactions

//SANDSTORM EDIT - extra language
/datum/preferences/proc/SetLanguage(mob/user)
var/list/dat = list()
Expand Down
23 changes: 23 additions & 0 deletions modular_sand/code/modules/client/preferences_savefile.dm
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,26 @@
DISABLE_BITFIELD(toggles, SOUND_BARK)
ENABLE_BITFIELD(toggles, VERB_CONSENT)
. = ..()

/datum/preferences/save_preferences(bypass_cooldown, silent)
. = ..()
if(!istype(., /savefile))
return FALSE
WRITE_FILE(.["favorite_interactions"], favorite_interactions)

/datum/preferences/load_preferences(bypass_cooldown)
. = ..()
if(!istype(., /savefile))
return FALSE
.["favorite_interactions"] >> favorite_interactions

favorite_interactions = SANITIZE_LIST(favorite_interactions)

for(var/interaction in favorite_interactions)
var/datum/interaction/interaction_path = ispath(interaction) ? interaction : text2path(interaction)
if(!interaction_path)
LAZYREMOVE(favorite_interactions, interaction)
continue
if(!initial(interaction_path.description))
LAZYREMOVE(favorite_interactions, interaction)
continue
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ import { flow } from 'common/fp';
import { createSearch } from 'common/string';

import { useBackend, useLocalState } from '../../../backend';
import { Button, Icon, Section, Stack, Tooltip } from '../../../components';
import { Button, Icon, Section, Stack, Tabs, Tooltip } from '../../../components';
import { Box } from '../../../components';

type ContentInfo = {
interactions: InteractionData[];
favorite_interactions: string[];
user_is_blacklisted: boolean;
target_is_blacklisted: boolean;
}
Expand Down Expand Up @@ -44,33 +45,66 @@ export const InteractionsTab = (props, context) => {
searchText,
data)
|| [];
const favorite_interactions = data.favorite_interactions || [];
const [
tab,
setTab,
] = useLocalState(context, 'tab', 0);
const valid_favorites = interactions.filter(interaction => favorite_interactions.includes(interaction.key));
const interactions_to_display = tab === 1
? valid_favorites
: interactions;
if (tab === 1 && !favorite_interactions.length) {
setTab(0);
}
const { user_is_blacklisted, target_is_blacklisted } = data;
return (
<Stack vertical>
{(!!valid_favorites.length || !!tab) && (
<Stack.Item>
<Tabs fluid textAlign="center">
<Tabs.Tab selected={tab === 0} onClick={() => setTab(0)}>Normal</Tabs.Tab>
<Tabs.Tab selected={tab === 1} onClick={() => setTab(1)}>Favorites</Tabs.Tab>
</Tabs>
</Stack.Item>
)}
{
interactions.length ? (
interactions.map((interaction) => (
interactions_to_display.length ? (
interactions_to_display.map((interaction) => (
<Stack.Item key={interaction.key}>
<Button
key={interaction.key}
content={interaction.desc}
color={interaction.type === INTERACTION_EXTREME ? "red"
: interaction.type ? "pink"
: "default"}
fluid
mb={-0.7}
onClick={() => act('interact', {
interaction: interaction.key,
})}>
<Box textAlign="right" fillPositionedParent>
{interaction.additionalDetails && (
interaction.additionalDetails.map(detail => (
<Tooltip content={detail.info} key={detail}>
<Icon name={detail.icon} key={detail} />
</Tooltip>
)))}
</Box>
</Button>
<Stack fill>
<Stack.Item grow>
<Button
key={interaction.key}
content={interaction.desc}
color={interaction.type === INTERACTION_EXTREME ? "red"
: interaction.type ? "pink"
: "default"}
fluid
mb={-0.7}
onClick={() => act('interact', {
interaction: interaction.key,
})}>
<Box textAlign="right" fillPositionedParent>
{interaction.additionalDetails && (
interaction.additionalDetails.map(detail => (
<Tooltip content={detail.info} key={detail}>
<Icon name={detail.icon} key={detail} />
</Tooltip>
)))}
</Box>
</Button>
</Stack.Item>
<Stack.Item>
<Button
icon="star"
onClick={() => act('favorite', {
interaction: interaction.key,
})}
selected={favorite_interactions.includes(interaction.key)}
/>
</Stack.Item>
</Stack>
</Stack.Item>
))
) : (
Expand Down

0 comments on commit fe903da

Please sign in to comment.