Wardrobe 2.0 - Performance boost, hook cache into export func

This commit is contained in:
LoafyLemon 2024-11-07 08:44:09 +00:00
parent 481270faaf
commit 8cfff1febe
3 changed files with 40 additions and 56 deletions

View File

@ -177,7 +177,7 @@ init python:
@functools.cache @functools.cache
def build_icon(self, hash): def build_icon(self, hash):
if (d := self.get_disk_cache(hash)): if (d := self.get_disk_cache(hash)):
return d return AlphaMask(Transform(d, xysize=(96, 96)), Transform("wheelmenu_button_opaque", xysize=(96, 96)))
matrix = SaturationMatrix(0.0) matrix = SaturationMatrix(0.0)
sprites = [i for i in self.build_image(hash, matrix=matrix) if not i[0] == "mask"] sprites = [i for i in self.build_image(hash, matrix=matrix) if not i[0] == "mask"]
@ -209,7 +209,7 @@ init python:
y = hmax-h y = hmax-h
d = Transform(Fixed(*[i[1] for i in sprites], fit_first=True), crop=(x, y, w, h), size=(256, 256), fit="contain", align=(0.5, 0.5)) d = Transform(Fixed(*[i[1] for i in sprites], fit_first=True), crop=(x, y, w, h), size=(256, 256), fit="contain", align=(0.5, 0.5))
return self.create_disk_cache(d, hash) return AlphaMask(Transform(self.create_disk_cache(d, hash), xysize=(96, 96)), Transform("wheelmenu_button_opaque", xysize=(96, 96)))
@property @property
def icon(self): def icon(self):
@ -230,7 +230,7 @@ init python:
blacklister = self.char.get_blacklister(self.type) # Victim (List clothing types blacklisting this item ) blacklister = self.char.get_blacklister(self.type) # Victim (List clothing types blacklisting this item )
warnings.append("Incompatible with:{size=-4}\n" + "\n".join(set(blacklisted + blacklister)) + "{/size}") warnings.append("Incompatible with:{size=-4}\n" + "\n".join(set(blacklisted + blacklister)) + "{/size}")
child = AlphaMask(Transform(self.icon, xysize=(96, 96)), Transform("wheelmenu_button_opaque", xysize=(96, 96))) child = self.icon
hbox = [] hbox = []
overlay = [] overlay = []
@ -276,7 +276,6 @@ init python:
else: else:
alternate = [Function(wardrobe.equip, self), Function(wardrobe.jump_to_item, self, "color_picker")] alternate = [Function(wardrobe.equip, self), Function(wardrobe.jump_to_item, self, "color_picker")]
return Button(child=child, focus_mask=None, xysize=(96, 96), action=action, tooltip=("\n".join(warnings)), unhovered=unhovered, style=style, selected=is_equipped, alternate=alternate) return Button(child=child, focus_mask=None, xysize=(96, 96), action=action, tooltip=("\n".join(warnings)), unhovered=unhovered, style=style, selected=is_equipped, alternate=alternate)
@functools.cache @functools.cache

File diff suppressed because it is too large Load Diff

View File

@ -22,7 +22,6 @@ default wardrobe.allow_opacity = False
# Functions # Functions
init python in wardrobe: init python in wardrobe:
import functools import functools
import datetime
import os import os
from collections import OrderedDict from collections import OrderedDict
@ -65,10 +64,11 @@ init python in wardrobe:
def change_category(category): def change_category(category):
scope = renpy.get_screen("wardrobe").scope scope = renpy.get_screen("wardrobe").scope
character = scope["character"]
if scope["selected_category"] == category: if scope["selected_category"] == category:
return return
scope["selected_category"] = category scope["selected_category"] = category
scope["selected_subcategory"] = None scope["selected_subcategory"] = next((subcat for subcat in character.wardrobe[category]), None)
def change_subcategory(subcategory): def change_subcategory(subcategory):
scope = renpy.get_screen("wardrobe").scope scope = renpy.get_screen("wardrobe").scope
@ -273,7 +273,7 @@ init python in wardrobe:
d = {} d = {}
if section == "outfits": if section == "outfits":
delete_action = item.delete delete_action = item.delete
export_action = renpy.store.Function(item.export_data, datetime.datetime.now().strftime("%d %b %Y-%H%M%S") + ".png") export_action = renpy.store.Function(item.export_data, f"{item._hash}.png")
overwrite_action = renpy.store.Function(_overwrite_outfit, character, item) overwrite_action = renpy.store.Function(_overwrite_outfit, character, item)
d[_("Equip")] = (renpy.store.Text("👗", align=(0.5, 0.5)), [exit_action, equip_action]) d[_("Equip")] = (renpy.store.Text("👗", align=(0.5, 0.5)), [exit_action, equip_action])
@ -670,6 +670,11 @@ style wardrobe_item_small_button is wardrobe_item_button:
hover_background At(Transform("wheelmenu_button_opaque", xysize=(48,48)), wheelmenu_hover_anim) hover_background At(Transform("wheelmenu_button_opaque", xysize=(48,48)), wheelmenu_hover_anim)
selected_foreground Transform("interface/topbar/icon_check.webp", align=(1.0, 1.0), size=(24, 24)) selected_foreground Transform("interface/topbar/icon_check.webp", align=(1.0, 1.0), size=(24, 24))
style wardrobe_item_rectangular_button is wardrobe_item_button:
background Transform("wheelmenu_button", xysize=(96,168))
hover_background At(Transform("wheelmenu_button_opaque", xysize=(96,168)), wheelmenu_hover_anim)
selected_foreground Transform("interface/topbar/icon_check.webp", align=(1.0, 1.0), size=(24, 24))
style wardrobe_outline: style wardrobe_outline:
padding (2, 2) padding (2, 2)
foreground Frame(Image("gui/creamy_pumpkin_pie/colorpicker/colorpicker_outline.png"), 2, 0, 2, 0, tile=False) foreground Frame(Image("gui/creamy_pumpkin_pie/colorpicker/colorpicker_outline.png"), 2, 0, 2, 0, tile=False)