Adds ability for multi-colored colorable belly overlays to exist, adds one using it

This commit is contained in:
Heroman
2023-06-17 16:31:24 +10:00
parent 2f53b590d8
commit b801e4d6c7
10 changed files with 105 additions and 20 deletions
+3 -1
View File
@@ -1528,7 +1528,9 @@
if(!isbelly(loc)) //VOREStation Add - Belly fullscreens safety
clear_fullscreen("belly")
//clear_fullscreen("belly2") //For multilayered stomachs. Not currently implemented.
clear_fullscreen("belly2")
clear_fullscreen("belly3")
clear_fullscreen("belly4")
if(config.welder_vision)
var/found_welder
+40 -12
View File
@@ -167,8 +167,8 @@
var/disable_hud = FALSE
var/colorization_enabled = FALSE
var/belly_fullscreen_color = "#823232"
var/belly_fullscreen_color_secondary = "#428242"
var/belly_fullscreen_color_trinary = "#f0f0f0"
//For serialization, keep this updated, required for bellies to save correctly.
/obj/belly/vars_to_save()
@@ -230,6 +230,8 @@
"belly_fullscreen",
"disable_hud",
"belly_fullscreen_color",
"belly_fullscreen_color_secondary",
"belly_fullscreen_color_trinary",
"colorization_enabled",
"egg_type",
"save_digest_mode",
@@ -316,6 +318,9 @@
if(isliving(thing) && !isbelly(thing.loc))
var/mob/living/L = thing
L.clear_fullscreen("belly")
L.clear_fullscreen("belly2")
L.clear_fullscreen("belly3")
L.clear_fullscreen("belly4")
if(L.hud_used)
if(!L.hud_used.hud_shown)
L.toggle_hud_vis()
@@ -336,16 +341,25 @@
var/obj/screen/fullscreen/F = L.overlay_fullscreen("belly", /obj/screen/fullscreen/belly/colorized)
F.icon_state = belly_fullscreen
F.color = belly_fullscreen_color
/* //Allows for 'multilayered' stomachs. Currently not implemented.
if(b_multilayered)
var/obj/screen/fullscreen/F2 = L.overlay_fullscreen("belly2", /obj/screen/fullscreen/belly)
*/
if("[belly_fullscreen]_l1" in icon_states('icons/mob/screen_full_colorized_vore_overlays.dmi'))
var/obj/screen/fullscreen/F2 = L.overlay_fullscreen("belly2", /obj/screen/fullscreen/belly/colorized/overlay)
F2.icon_state = "[belly_fullscreen]_l1"
F2.color = belly_fullscreen_color_secondary
if("[belly_fullscreen]_l2" in icon_states('icons/mob/screen_full_colorized_vore_overlays.dmi'))
var/obj/screen/fullscreen/F3 = L.overlay_fullscreen("belly3", /obj/screen/fullscreen/belly/colorized/overlay)
F3.icon_state = "[belly_fullscreen]_l2"
F3.color = belly_fullscreen_color_trinary
if("[belly_fullscreen]_nc" in icon_states('icons/mob/screen_full_colorized_vore_overlays.dmi'))
var/obj/screen/fullscreen/F4 = L.overlay_fullscreen("belly4", /obj/screen/fullscreen/belly/colorized/overlay)
F4.icon_state = "[belly_fullscreen]_nc"
else
var/obj/screen/fullscreen/F = L.overlay_fullscreen("belly", /obj/screen/fullscreen/belly)
F.icon_state = belly_fullscreen
else
L.clear_fullscreen("belly")
//L.clear_fullscreen("belly2") //Allows for 'multilayered' stomachs. Currently not implemented.
L.clear_fullscreen("belly2")
L.clear_fullscreen("belly3")
L.clear_fullscreen("belly4")
if(disable_hud)
if(L?.hud_used?.hud_shown)
@@ -363,19 +377,31 @@
var/obj/screen/fullscreen/F = L.overlay_fullscreen("belly", /obj/screen/fullscreen/belly/colorized)
F.icon_state = belly_fullscreen
F.color = belly_fullscreen_color
/* //Allows for 'multilayered' stomachs. Currently not implemented.
if(b_multilayered)
var/obj/screen/fullscreen/F2 = L.overlay_fullscreen("belly2", /obj/screen/fullscreen/belly)
*/
if("[belly_fullscreen]_l1" in icon_states('icons/mob/screen_full_colorized_vore_overlays.dmi'))
var/obj/screen/fullscreen/F2 = L.overlay_fullscreen("belly2", /obj/screen/fullscreen/belly/colorized/overlay)
F2.icon_state = "[belly_fullscreen]_l1"
F2.color = belly_fullscreen_color_secondary
if("[belly_fullscreen]_l2" in icon_states('icons/mob/screen_full_colorized_vore_overlays.dmi'))
var/obj/screen/fullscreen/F3 = L.overlay_fullscreen("belly3", /obj/screen/fullscreen/belly/colorized/overlay)
F3.icon_state = "[belly_fullscreen]_l2"
F3.color = belly_fullscreen_color_trinary
if("[belly_fullscreen]_nc" in icon_states('icons/mob/screen_full_colorized_vore_overlays.dmi'))
var/obj/screen/fullscreen/F4 = L.overlay_fullscreen("belly4", /obj/screen/fullscreen/belly/colorized/overlay)
F4.icon_state = "[belly_fullscreen]_nc"
else
var/obj/screen/fullscreen/F = L.overlay_fullscreen("belly", /obj/screen/fullscreen/belly)
F.icon_state = belly_fullscreen
else
L.clear_fullscreen("belly")
//L.clear_fullscreen("belly2") //Allows for 'multilayered' stomachs. Currently not implemented.
L.clear_fullscreen("belly2")
L.clear_fullscreen("belly3")
L.clear_fullscreen("belly4")
/obj/belly/proc/clear_preview(mob/living/L)
L.clear_fullscreen("belly")
L.clear_fullscreen("belly2")
L.clear_fullscreen("belly3")
L.clear_fullscreen("belly4")
@@ -1218,6 +1244,8 @@
dupe.belly_fullscreen = belly_fullscreen
dupe.disable_hud = disable_hud
dupe.belly_fullscreen_color = belly_fullscreen_color
dupe.belly_fullscreen_color_secondary = belly_fullscreen_color_secondary
dupe.belly_fullscreen_color_trinary = belly_fullscreen_color_trinary
dupe.colorization_enabled = colorization_enabled
dupe.egg_type = egg_type
dupe.emote_time = emote_time
+3
View File
@@ -1108,6 +1108,9 @@
/obj/screen/fullscreen/belly/colorized
icon = 'icons/mob/screen_full_colorized_vore.dmi'
/obj/screen/fullscreen/belly/colorized/overlay
icon = 'icons/mob/screen_full_colorized_vore_overlays.dmi'
/mob/living/proc/vorebelly_printout() //Spew the vorepanel belly messages into chat window for copypasting.
set name = "X-Print Vorebelly Settings"
set category = "Preferences"
+24 -5
View File
@@ -8,6 +8,12 @@
#define BELLIES_DESC_MAX 4096
#define FLAVOR_MAX 400
//INSERT COLORIZE-ONLY STOMACHS HERE
var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono",
"a_synth_flesh_mono_hole",
"a_anim_belly",
"multi_layer_test_tummy")
/mob/living
var/datum/vore_look/vorePanel
@@ -202,6 +208,8 @@
"weight_ex" = host.weight_message_visible,
"belly_fullscreen" = selected.belly_fullscreen,
"belly_fullscreen_color" = selected.belly_fullscreen_color,
"belly_fullscreen_color_secondary" = selected.belly_fullscreen_color_secondary,
"belly_fullscreen_color_trinary" = selected.belly_fullscreen_color_trinary,
"colorization_enabled" = selected.colorization_enabled,
"eating_privacy_local" = selected.eating_privacy_local,
"silicon_belly_overlay_preference" = selected.silicon_belly_overlay_preference,
@@ -241,6 +249,8 @@
selected_list["disable_hud"] = selected.disable_hud
selected_list["colorization_enabled"] = selected.colorization_enabled
selected_list["belly_fullscreen_color"] = selected.belly_fullscreen_color
selected_list["belly_fullscreen_color_secondary"] = selected.belly_fullscreen_color_secondary
selected_list["belly_fullscreen_color_trinary"] = selected.belly_fullscreen_color_trinary
if(selected.colorization_enabled)
selected_list["possible_fullscreens"] = icon_states('icons/mob/screen_full_colorized_vore.dmi') //Makes any icons inside of here selectable.
@@ -252,10 +262,7 @@
//Why? I have no flipping clue. As you can see above, vore_colorized is included in the assets but isn't working. It makes no sense.
//I can only imagine this is a BYOND/TGUI issue with the cache. If you can figure out how to fix this and make it so you only need to
//include things in full_colorized_vore, that would be great. For now, this is the only workaround that I could get to work.
selected_list["possible_fullscreens"] -= "a_synth_flesh_mono"
selected_list["possible_fullscreens"] -= "a_synth_flesh_mono_hole"
selected_list["possible_fullscreens"] -= "a_anim_belly"
//INSERT COLORIZE-ONLY STOMACHS HERE
selected_list["possible_fullscreens"] -= belly_colorable_only_fullscreens
var/list/selected_contents = list()
for(var/O in selected)
@@ -534,7 +541,9 @@
host.client.prefs_vr.show_vore_fx = host.show_vore_fx
if(!host.show_vore_fx)
host.clear_fullscreen("belly")
//host.clear_fullscreen("belly2") //For multilayered stomachs. Not currently implemented.
host.clear_fullscreen("belly2")
host.clear_fullscreen("belly3")
host.clear_fullscreen("belly4")
if(!host.hud_used.hud_shown)
host.toggle_hud_vis()
unsaved_changes = TRUE
@@ -1400,6 +1409,16 @@
if(newcolor)
host.vore_selected.belly_fullscreen_color = newcolor
. = TRUE
if("b_fullscreen_color_secondary")
var/newcolor = input(usr, "Choose a color.", "", host.vore_selected.belly_fullscreen_color) as color|null
if(newcolor)
host.vore_selected.belly_fullscreen_color_secondary = newcolor
. = TRUE
if("b_fullscreen_color_trinary")
var/newcolor = input(usr, "Choose a color.", "", host.vore_selected.belly_fullscreen_color) as color|null
if(newcolor)
host.vore_selected.belly_fullscreen_color_trinary = newcolor
. = TRUE
if("b_save_digest_mode")
host.vore_selected.save_digest_mode = !host.vore_selected.save_digest_mode
. = TRUE
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 MiB

After

Width:  |  Height:  |  Size: 2.6 MiB

+33 -1
View File
@@ -887,6 +887,8 @@ const VoreSelectedBellyVisuals = (props, context) => {
possible_fullscreens,
disable_hud,
belly_fullscreen_color,
belly_fullscreen_color_secondary,
belly_fullscreen_color_trinary,
mapRef,
colorization_enabled,
} = belly;
@@ -908,7 +910,37 @@ const VoreSelectedBellyVisuals = (props, context) => {
val: null,
})
}>
Select Color
Select Primary Color
</Button>
<Box
backgroundColor={belly_fullscreen_color_secondary}
width="20px"
height="20px"
/>
<Button
icon="eye-dropper"
onClick={() =>
act('set_attribute', {
attribute: 'b_fullscreen_color_secondary',
val: null,
})
}>
Select Secondary Color
</Button>
<Box
backgroundColor={belly_fullscreen_color_trinary}
width="20px"
height="20px"
/>
<Button
icon="eye-dropper"
onClick={() =>
act('set_attribute', {
attribute: 'b_fullscreen_color_trinary',
val: null,
})
}>
Select Trinary Color
</Button>
<LabeledList.Item label="Enable Coloration">
<Button
File diff suppressed because one or more lines are too long
+1
View File
@@ -4065,6 +4065,7 @@
#include "code\modules\vore\appearance\update_icons_vr.dm"
#include "code\modules\vore\eating\belly_dat_vr.dm"
#include "code\modules\vore\eating\belly_obj_vr.dm"
#include "code\modules\vore\eating\belly_overlays_vr.dm"
#include "code\modules\vore\eating\bellymodes_datum_vr.dm"
#include "code\modules\vore\eating\bellymodes_vr.dm"
#include "code\modules\vore\eating\contaminate_vr.dm"