mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
[MIRROR] vorepanel hotfix (#10970)
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
c805da1d1e
commit
17a58042c3
@@ -57,4 +57,5 @@
|
||||
target.vore_sprite_color = source.vore_sprite_color; \
|
||||
target.belly_rub_target = source.belly_rub_target; \
|
||||
\
|
||||
target.soulcatcher_pref_flags = source.soulcatcher_pref_flags;
|
||||
target.soulcatcher_pref_flags = source.soulcatcher_pref_flags; \
|
||||
target.persistend_edit_mode = source.persistend_edit_mode;
|
||||
|
||||
@@ -74,6 +74,7 @@
|
||||
no_latejoin_prey_warning_persists = client.prefs_vr.no_latejoin_prey_warning_persists
|
||||
belly_rub_target = client.prefs_vr.belly_rub_target
|
||||
soulcatcher_pref_flags = client.prefs_vr.soulcatcher_pref_flags
|
||||
persistend_edit_mode = client.prefs_vr.persistend_edit_mode
|
||||
|
||||
/mob/living/simple_mob/proc/set_name()
|
||||
set name = "Set Name"
|
||||
|
||||
@@ -86,6 +86,7 @@
|
||||
var/no_latejoin_prey_warning_persists = FALSE //Do we save it?
|
||||
var/belly_rub_target = null
|
||||
var/soulcatcher_pref_flags = 0 //Default disabled
|
||||
var/persistend_edit_mode = FALSE
|
||||
|
||||
var/voice_freq = 42500 // Preference for character voice frequency
|
||||
var/emote_sound_mode = EMOTE_SOUND_VOICE_FREQ
|
||||
|
||||
@@ -93,11 +93,14 @@
|
||||
. = TRUE
|
||||
if("b_egg_name")
|
||||
var/new_egg_name = sanitize(params["val"], BELLIES_NAME_MAX, FALSE, TRUE, FALSE)
|
||||
host.vore_selected.egg_name = new_egg_name
|
||||
if(!new_egg_name)
|
||||
host.vore_selected.egg_name = null
|
||||
else
|
||||
host.vore_selected.egg_name = new_egg_name
|
||||
. = TRUE
|
||||
if("b_egg_size")
|
||||
var/new_egg_size = text2num(params["val"])
|
||||
if(isnum(new_egg_size))
|
||||
if(!isnum(new_egg_size))
|
||||
return FALSE
|
||||
if(new_egg_size == 0) //Disable.
|
||||
host.vore_selected.egg_size = 0
|
||||
|
||||
@@ -178,6 +178,7 @@
|
||||
"egg_type" = selected.egg_type,
|
||||
"egg_types" = GLOB.global_vore_egg_types,
|
||||
"egg_name" = selected.egg_name,
|
||||
"egg_name_length" = BELLIES_NAME_MAX,
|
||||
"egg_size" = selected.egg_size,
|
||||
"recycling" = selected.recycling,
|
||||
"storing_nutrition" = selected.storing_nutrition,
|
||||
|
||||
@@ -92,6 +92,7 @@
|
||||
var/belly_rub_target = null
|
||||
var/soulcatcher_pref_flags = 0
|
||||
var/list/soulcatcher_prefs = list()
|
||||
var/persistend_edit_mode = FALSE
|
||||
|
||||
var/list/belly_prefs = list()
|
||||
var/vore_taste = "nothing in particular"
|
||||
@@ -248,6 +249,7 @@
|
||||
belly_rub_target = json_from_file["belly_rub_target"]
|
||||
soulcatcher_pref_flags = json_from_file["soulcatcher_pref_flags"]
|
||||
soulcatcher_prefs = json_from_file["soulcatcher_prefs"]
|
||||
persistend_edit_mode = json_from_file["persistend_edit_mode"]
|
||||
|
||||
//Quick sanitize
|
||||
if(isnull(digestable))
|
||||
@@ -377,6 +379,8 @@
|
||||
soulcatcher_pref_flags = 0
|
||||
if(isnull(soulcatcher_prefs))
|
||||
soulcatcher_prefs = list()
|
||||
if(isnull(persistend_edit_mode))
|
||||
persistend_edit_mode = FALSE
|
||||
|
||||
return TRUE
|
||||
|
||||
@@ -438,7 +442,8 @@
|
||||
"no_latejoin_prey_warning_persists" = no_latejoin_prey_warning_persists,
|
||||
"belly_rub_target" = belly_rub_target,
|
||||
"soulcatcher_pref_flags" = soulcatcher_pref_flags,
|
||||
"soulcatcher_prefs" = soulcatcher_prefs
|
||||
"soulcatcher_prefs" = soulcatcher_prefs,
|
||||
"persistend_edit_mode" = persistend_edit_mode
|
||||
)
|
||||
|
||||
//List to JSON
|
||||
|
||||
@@ -127,6 +127,7 @@
|
||||
// General Data
|
||||
data["unsaved_changes"] = unsaved_changes
|
||||
data["active_tab"] = active_tab
|
||||
data["persist_edit_mode"] = host.persistend_edit_mode
|
||||
|
||||
// Inisde Data
|
||||
data["inside"] = get_inside_data(host)
|
||||
@@ -228,6 +229,10 @@
|
||||
show_pictures = !show_pictures
|
||||
return TRUE
|
||||
|
||||
if("toggle_editmode_persistence")
|
||||
host.persistend_edit_mode = !host.persistend_edit_mode
|
||||
return TRUE
|
||||
|
||||
// Host is inside someone else, and is trying to interact with something else inside that person.
|
||||
if("pick_from_inside")
|
||||
return pick_from_inside(ui.user, params)
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { Box, Button } from 'tgui-core/components';
|
||||
import { useBackend } from 'tgui/backend';
|
||||
import { Box, Button, Stack } from 'tgui-core/components';
|
||||
import { type BooleanLike } from 'tgui-core/react';
|
||||
|
||||
export const VorePanelColorBox = (props: {
|
||||
back_color: string;
|
||||
@@ -34,16 +36,33 @@ export const VorePanelColorBox = (props: {
|
||||
|
||||
export const VorePanelEditToggle = (props: {
|
||||
editMode: boolean;
|
||||
persistEditMode: BooleanLike;
|
||||
toggleEditMode: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
}) => {
|
||||
const { editMode, toggleEditMode } = props;
|
||||
const { act } = useBackend();
|
||||
const { editMode, persistEditMode, toggleEditMode } = props;
|
||||
|
||||
return (
|
||||
<Button
|
||||
icon="pencil"
|
||||
color={editMode ? 'green' : undefined}
|
||||
tooltip={(editMode ? 'Dis' : 'En') + 'able edit mode'}
|
||||
onClick={() => toggleEditMode(!editMode)}
|
||||
/>
|
||||
<Stack>
|
||||
<Stack.Item>
|
||||
<Button
|
||||
icon="pencil"
|
||||
selected={editMode}
|
||||
tooltip={(editMode ? 'Dis' : 'En') + 'able edit mode.'}
|
||||
onClick={() => toggleEditMode(!editMode)}
|
||||
/>
|
||||
</Stack.Item>
|
||||
<Stack.Item>
|
||||
<Button
|
||||
icon={persistEditMode ? 'lock' : 'lock-open'}
|
||||
selected={persistEditMode}
|
||||
tooltip={
|
||||
(persistEditMode ? 'Dis' : 'En') +
|
||||
'able edit mode active on window opening.'
|
||||
}
|
||||
onClick={() => act('toggle_editmode_persistence')}
|
||||
/>
|
||||
</Stack.Item>
|
||||
</Stack>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -28,6 +28,7 @@ export const VoreBellySelectionAndCustomization = (props: {
|
||||
vore_words: Record<string, string[]>;
|
||||
toggleEditMode: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
editMode: boolean;
|
||||
persist_edit_mode: BooleanLike;
|
||||
}) => {
|
||||
const { act } = useBackend();
|
||||
|
||||
@@ -41,6 +42,7 @@ export const VoreBellySelectionAndCustomization = (props: {
|
||||
vore_words,
|
||||
toggleEditMode,
|
||||
editMode,
|
||||
persist_edit_mode,
|
||||
} = props;
|
||||
|
||||
const [showSearch, setShowSearch] = useState(false);
|
||||
@@ -138,6 +140,7 @@ export const VoreBellySelectionAndCustomization = (props: {
|
||||
buttons={
|
||||
<VorePanelEditToggle
|
||||
editMode={editMode}
|
||||
persistEditMode={persist_edit_mode}
|
||||
toggleEditMode={toggleEditMode}
|
||||
/>
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
Section,
|
||||
Stack,
|
||||
} from 'tgui-core/components';
|
||||
import { type BooleanLike } from 'tgui-core/react';
|
||||
|
||||
import { noSelectionName } from '../constants';
|
||||
import type { abilities, DropdownEntry, soulcatcherData } from '../types';
|
||||
@@ -30,9 +31,16 @@ export const VoreSoulcatcher = (props: {
|
||||
abilities: abilities;
|
||||
toggleEditMode: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
editMode: boolean;
|
||||
persist_edit_mode: BooleanLike;
|
||||
}) => {
|
||||
const { soulcatcher, our_bellies, abilities, toggleEditMode, editMode } =
|
||||
props;
|
||||
const {
|
||||
soulcatcher,
|
||||
our_bellies,
|
||||
abilities,
|
||||
toggleEditMode,
|
||||
editMode,
|
||||
persist_edit_mode,
|
||||
} = props;
|
||||
|
||||
const getBellies = our_bellies.map((belly) => {
|
||||
return { displayText: belly.name, value: belly.ref };
|
||||
@@ -50,6 +58,7 @@ export const VoreSoulcatcher = (props: {
|
||||
overlayBellies={locationNames}
|
||||
toggleEditMode={toggleEditMode}
|
||||
editMode={editMode}
|
||||
persist_edit_mode={persist_edit_mode}
|
||||
/>
|
||||
</Stack.Item>
|
||||
)}
|
||||
@@ -66,10 +75,17 @@ const VoreSoulcatcherSection = (props: {
|
||||
overlayBellies: DropdownEntry[];
|
||||
toggleEditMode: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
editMode: boolean;
|
||||
persist_edit_mode: BooleanLike;
|
||||
}) => {
|
||||
const { act } = useBackend();
|
||||
|
||||
const { soulcatcher, overlayBellies, toggleEditMode, editMode } = props;
|
||||
const {
|
||||
soulcatcher,
|
||||
overlayBellies,
|
||||
toggleEditMode,
|
||||
editMode,
|
||||
persist_edit_mode,
|
||||
} = props;
|
||||
|
||||
const {
|
||||
active,
|
||||
@@ -112,6 +128,7 @@ const VoreSoulcatcherSection = (props: {
|
||||
<Stack.Item>
|
||||
<VorePanelEditToggle
|
||||
editMode={editMode}
|
||||
persistEditMode={persist_edit_mode}
|
||||
toggleEditMode={toggleEditMode}
|
||||
/>
|
||||
</Stack.Item>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { useBackend } from 'tgui/backend';
|
||||
import { Button, Section, Stack } from 'tgui-core/components';
|
||||
import { type BooleanLike } from 'tgui-core/react';
|
||||
|
||||
import type { bellyData, generalPrefData } from '../types';
|
||||
import { VoreUserPreferencesAesthetic } from '../VoreUserPreferencesTabs/VoreUserPreferencesAesthetic';
|
||||
@@ -9,11 +10,18 @@ import { VoreUserPreferencesAesthetic } from '../VoreUserPreferencesTabs/VoreUse
|
||||
export const VoreUserGeneral = (props: {
|
||||
general_pref_data?: generalPrefData;
|
||||
editMode: boolean;
|
||||
persist_edit_mode: BooleanLike;
|
||||
our_bellies: bellyData[];
|
||||
toggleEditMode: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
}) => {
|
||||
const { act } = useBackend();
|
||||
const { general_pref_data, editMode, our_bellies, toggleEditMode } = props;
|
||||
const {
|
||||
general_pref_data,
|
||||
editMode,
|
||||
persist_edit_mode,
|
||||
our_bellies,
|
||||
toggleEditMode,
|
||||
} = props;
|
||||
|
||||
return (
|
||||
<Section fill>
|
||||
@@ -22,6 +30,7 @@ export const VoreUserGeneral = (props: {
|
||||
<Stack.Item grow>
|
||||
<VoreUserPreferencesAesthetic
|
||||
editMode={editMode}
|
||||
persist_edit_mode={persist_edit_mode}
|
||||
toggleEditMode={toggleEditMode}
|
||||
active_belly={general_pref_data.active_belly}
|
||||
belly_rub_target={general_pref_data.belly_rub_target}
|
||||
|
||||
@@ -24,6 +24,7 @@ export const BellyOptionsRight = (props: {
|
||||
egg_type,
|
||||
egg_types,
|
||||
egg_name,
|
||||
egg_name_length,
|
||||
egg_size,
|
||||
recycling,
|
||||
storing_nutrition,
|
||||
@@ -32,6 +33,12 @@ export const BellyOptionsRight = (props: {
|
||||
drainmode,
|
||||
} = bellyOptionData;
|
||||
|
||||
const displayedEggName = editMode
|
||||
? egg_name || ''
|
||||
: egg_name
|
||||
? egg_name
|
||||
: 'Default';
|
||||
|
||||
return (
|
||||
<LabeledList>
|
||||
<LabeledList.Item label="Digest Brute Damage">
|
||||
@@ -176,8 +183,8 @@ export const BellyOptionsRight = (props: {
|
||||
action="set_attribute"
|
||||
subAction="b_egg_name"
|
||||
editMode={editMode}
|
||||
limit={0}
|
||||
entry={editMode ? egg_name : egg_name ? egg_name : 'Default'}
|
||||
limit={egg_name_length}
|
||||
entry={displayedEggName}
|
||||
/>
|
||||
</LabeledList.Item>
|
||||
<LabeledList.Item label="Custom Egg Size">
|
||||
|
||||
@@ -13,6 +13,7 @@ import { VorePanelEditSwitch } from '../VorePanelElements/VorePanelEditSwitch';
|
||||
|
||||
export const VoreUserPreferencesAesthetic = (props: {
|
||||
editMode: boolean;
|
||||
persist_edit_mode: BooleanLike;
|
||||
toggleEditMode: React.Dispatch<React.SetStateAction<boolean>>;
|
||||
active_belly: string | null;
|
||||
our_bellies: bellyData[];
|
||||
@@ -24,6 +25,7 @@ export const VoreUserPreferencesAesthetic = (props: {
|
||||
}) => {
|
||||
const {
|
||||
editMode,
|
||||
persist_edit_mode,
|
||||
toggleEditMode,
|
||||
active_belly,
|
||||
belly_rub_target,
|
||||
@@ -52,6 +54,7 @@ export const VoreUserPreferencesAesthetic = (props: {
|
||||
buttons={
|
||||
<VorePanelEditToggle
|
||||
editMode={editMode}
|
||||
persistEditMode={persist_edit_mode}
|
||||
toggleEditMode={toggleEditMode}
|
||||
/>
|
||||
}
|
||||
|
||||
@@ -156,6 +156,7 @@ export const VorePanel = () => {
|
||||
const {
|
||||
active_tab,
|
||||
active_vore_tab,
|
||||
persist_edit_mode,
|
||||
inside,
|
||||
our_bellies,
|
||||
selected,
|
||||
@@ -170,7 +171,7 @@ export const VorePanel = () => {
|
||||
general_pref_data,
|
||||
} = data;
|
||||
|
||||
const [editMode, setEditMode] = useState(false);
|
||||
const [editMode, setEditMode] = useState(!!persist_edit_mode);
|
||||
|
||||
const tabs: (React.JSX.Element | null | undefined)[] = [];
|
||||
|
||||
@@ -185,6 +186,7 @@ export const VorePanel = () => {
|
||||
vore_words={vore_words}
|
||||
toggleEditMode={setEditMode}
|
||||
editMode={editMode}
|
||||
persist_edit_mode={persist_edit_mode}
|
||||
/>
|
||||
);
|
||||
tabs[1] = our_bellies && soulcatcher && abilities && (
|
||||
@@ -194,6 +196,7 @@ export const VorePanel = () => {
|
||||
abilities={abilities}
|
||||
toggleEditMode={setEditMode}
|
||||
editMode={editMode}
|
||||
persist_edit_mode={persist_edit_mode}
|
||||
/>
|
||||
);
|
||||
tabs[2] = general_pref_data && our_bellies && (
|
||||
@@ -202,6 +205,7 @@ export const VorePanel = () => {
|
||||
our_bellies={our_bellies}
|
||||
editMode={editMode}
|
||||
toggleEditMode={setEditMode}
|
||||
persist_edit_mode={persist_edit_mode}
|
||||
/>
|
||||
);
|
||||
tabs[3] = prefs && (
|
||||
|
||||
@@ -7,6 +7,7 @@ export type Data = {
|
||||
show_pictures: BooleanLike;
|
||||
icon_overflow: BooleanLike;
|
||||
active_tab: number;
|
||||
persist_edit_mode: BooleanLike;
|
||||
host_mobtype: hostMob | null;
|
||||
our_bellies?: bellyData[] | null;
|
||||
selected?: selectedData | null;
|
||||
@@ -115,7 +116,8 @@ export type bellyOptionData = {
|
||||
contaminate_colors: string[] | null;
|
||||
egg_type: string;
|
||||
egg_types: string[];
|
||||
egg_name: string;
|
||||
egg_name: string | null;
|
||||
egg_name_length: number;
|
||||
egg_size: number;
|
||||
recycling: BooleanLike;
|
||||
storing_nutrition: BooleanLike;
|
||||
|
||||
Reference in New Issue
Block a user