Color Picker
* Rewritten and re-implemented color picker in shading language * Vastly improved performance * Added live preview back * Overhauled interface * Code Cleanup * Reduced import overhead
This commit is contained in:
parent
1ff8217434
commit
822f35c08c
@ -196,15 +196,39 @@ init python:
|
|||||||
def set_color(self, n):
|
def set_color(self, n):
|
||||||
"""Takes int layer number for manual color picking or a list to replace the cloth color in its entirety."""
|
"""Takes int layer number for manual color picking or a list to replace the cloth color in its entirety."""
|
||||||
if isinstance(n, int):
|
if isinstance(n, int):
|
||||||
# Transarency slider boolean
|
col = Color(tuple(self.color[n]))
|
||||||
is_cheating = config.developer or cheat_wardrobe_alpha
|
dcol = Color(tuple(self.color_default[n]))
|
||||||
is_blacklisted = self.type.startswith(tuple(self.blacklist_unequip))
|
|
||||||
is_allowed = self.type.startswith(("makeup", "tattoo"))
|
|
||||||
|
|
||||||
transparency = not is_blacklisted and (is_allowed or is_cheating)
|
cp.live_replace(col)
|
||||||
|
cp.start_replace(col)
|
||||||
|
cp.default_replace(dcol)
|
||||||
|
|
||||||
self.color[n] = color_picker(self.color[n], transparency, "Colour channel {}".format(n+1), pos_xy=(40, 85), color_default=self.color_default[n])
|
renpy.show_screen("colorpickerscreen", self)
|
||||||
self.char.override, self.override = False, False
|
|
||||||
|
while True:
|
||||||
|
action, value = ui.interact()
|
||||||
|
|
||||||
|
if action == "layer":
|
||||||
|
n = value
|
||||||
|
col = Color(tuple(self.color[value]))
|
||||||
|
dcol = Color(tuple(self.color_default[n]))
|
||||||
|
|
||||||
|
cp.live_replace(col)
|
||||||
|
cp.start_replace(col)
|
||||||
|
cp.default_replace(dcol)
|
||||||
|
elif action == "released":
|
||||||
|
self.color[n] = [int(255*x) for x in value.rgba]
|
||||||
|
self.rebuild_image()
|
||||||
|
self.char.rebuild_image()
|
||||||
|
elif action == "replace":
|
||||||
|
self.color[n] = [int(255*x) for x in value.rgba]
|
||||||
|
cp.live_replace(value)
|
||||||
|
self.rebuild_image()
|
||||||
|
self.char.rebuild_image()
|
||||||
|
elif action == "finish":
|
||||||
|
break
|
||||||
|
|
||||||
|
renpy.hide_screen("colorpickerscreen")
|
||||||
elif isinstance(n, list):
|
elif isinstance(n, list):
|
||||||
self.color = [x[:] for x in n]
|
self.color = [x[:] for x in n]
|
||||||
self.rebuild_image()
|
self.rebuild_image()
|
||||||
|
@ -85,47 +85,6 @@ screen preferences_general():
|
|||||||
Function(renpy.transition, trans),
|
Function(renpy.transition, trans),
|
||||||
Function(renpy.restart_interaction)
|
Function(renpy.restart_interaction)
|
||||||
]
|
]
|
||||||
|
|
||||||
# Broken.
|
|
||||||
#
|
|
||||||
# vbox:
|
|
||||||
# style_prefix gui.theme("pref")
|
|
||||||
|
|
||||||
# $ text_color_day = settings.get("text_color_day")
|
|
||||||
# $ text_color_night = settings.get("text_color_night")
|
|
||||||
|
|
||||||
# label _("Text Colour")
|
|
||||||
# default color_square = "{font=[gui.glyph_font]}❖{/font}"
|
|
||||||
|
|
||||||
# hbox:
|
|
||||||
# textbutton "Day" size_group "text_color" action [
|
|
||||||
# Function(renpy.invoke_in_new_context, pick_color_setting, "text_color_day", "Day text colour"),
|
|
||||||
# Function(renpy.transition, trans),
|
|
||||||
# Function(gui.rebuild_styles)
|
|
||||||
# ]
|
|
||||||
# textbutton "{color=[text_color_day]}[color_square!i]{/color}" yalign 0.5 style "empty" background "#d1a261"
|
|
||||||
# textbutton "Reset" text_size 14 yalign 0.5 padding (0, 0) action [
|
|
||||||
# settings.Reset("text_color_day"),
|
|
||||||
# Function(renpy.transition, trans),
|
|
||||||
# Function(gui.rebuild_styles)
|
|
||||||
# ]
|
|
||||||
|
|
||||||
# hbox:
|
|
||||||
# textbutton "Night" size_group "text_color" action [
|
|
||||||
# Function(renpy.invoke_in_new_context, pick_color_setting, "text_color_night", "Night text colour"),
|
|
||||||
# Function(renpy.transition, trans),
|
|
||||||
# Function(gui.rebuild_styles)
|
|
||||||
# ]
|
|
||||||
# textbutton "{color=[text_color_night]}[color_square!i]{/color}" yalign 0.5 style "empty" background "#5b4f4f"
|
|
||||||
# textbutton "Reset" text_size 14 yalign 0.5 padding (0, 0) action [
|
|
||||||
# settings.Reset("text_color_night"),
|
|
||||||
# Function(renpy.transition, trans),
|
|
||||||
# Function(gui.rebuild_styles)
|
|
||||||
# ]
|
|
||||||
|
|
||||||
# hbox:
|
|
||||||
# textbutton "Outline" size_group "text_color" action Function(print, "text_shadow")
|
|
||||||
|
|
||||||
vbox:
|
vbox:
|
||||||
style_prefix gui.theme("check")
|
style_prefix gui.theme("check")
|
||||||
label _("Skipping")
|
label _("Skipping")
|
||||||
@ -349,13 +308,6 @@ init python:
|
|||||||
for fn in renpy.list_saved_games(fast=True):
|
for fn in renpy.list_saved_games(fast=True):
|
||||||
renpy.unlink_save(fn)
|
renpy.unlink_save(fn)
|
||||||
|
|
||||||
def pick_color_setting(setting_name, title):
|
|
||||||
renpy.show_screen("preferences")
|
|
||||||
color = settings.get(setting_name)
|
|
||||||
r, g, b, _ = color_picker(get_rgb_list(color), False, title)
|
|
||||||
color = get_hex_string(r/255.0, g/255.0, b/255.0)
|
|
||||||
settings.set(setting_name, color)
|
|
||||||
|
|
||||||
def set_renderer(s):
|
def set_renderer(s):
|
||||||
preferences.renderer = s if s in ("gl2", "angle2") else "auto"
|
preferences.renderer = s if s in ("gl2", "angle2") else "auto"
|
||||||
renpy.quit(relaunch=True)
|
renpy.quit(relaunch=True)
|
||||||
|
@ -245,6 +245,7 @@ init -1 python:
|
|||||||
start_color = list(color) # Keep a copy
|
start_color = list(color) # Keep a copy
|
||||||
|
|
||||||
renpy.show_screen("color_picker", tuple(color), alpha, title, pos_xy, color_default)
|
renpy.show_screen("color_picker", tuple(color), alpha, title, pos_xy, color_default)
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
_return = ui.interact()
|
_return = ui.interact()
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
init python:
|
init python:
|
||||||
import binascii
|
from binascii import unhexlify
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
UPDATE_URL = binascii.unhexlify("687474703a2f2f3135332e39322e3232312e3234362f757064617465732e6a736f6e")
|
UPDATE_URL = unhexlify("687474703a2f2f3135332e39322e3232312e3234362f757064617465732e6a736f6e")
|
||||||
UPDATE_VER = ""
|
UPDATE_VER = ""
|
||||||
|
|
||||||
@renpy.pure
|
@renpy.pure
|
||||||
|
528
game/scripts/wardrobe/color_picker.rpy
Normal file
528
game/scripts/wardrobe/color_picker.rpy
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user