Improve standard reset transform

The built-in reset transform will now reset all transform properties
rather than only a small subset. This makes it more predictable (no more
guessing which properties it will reset) and also future proof as it no
longer requires being kept up to date as an explicit definition.
This commit is contained in:
Mal Graty
2025-01-14 17:45:01 +00:00
parent 698d391033
commit 9af6d13c08
2 changed files with 21 additions and 5 deletions
+1 -2
View File
@@ -27,8 +27,7 @@
init -1400:
transform reset:
alpha 1.0 rotate None zoom 1.0 xzoom 1.0 yzoom 1.0 align (0, 0) alignaround (0, 0) subpixel False
xsize None ysize None fit None crop None
_reset True
# These are positions that can be used inside at clauses. We set
# them up here so that they can be used throughout the program.
+20 -3
View File
@@ -34,6 +34,7 @@ from renpy.display.accelerator import RenderTransform
from renpy.atl import position, DualAngle, position_or_none, any_object, bool_or_none, float_or_none, matrix, mesh
from renpy.display.core import absolute
class Camera(renpy.object.Object):
"""
:doc: point_to_camera
@@ -220,8 +221,6 @@ class TransformState(renpy.object.Object):
self.xanchor = old_xanchor
self.yanchor = old_yanchor
def get_placement(self, cxoffset=0, cyoffset=0):
if self.perspective is not None: # type: ignore
@@ -605,6 +604,18 @@ class TransformState(renpy.object.Object):
xycenter = property(get_pos, set_xycenter)
def get_reset(self):
return False
def set_reset(self, value):
if value:
self.take_state(RESET_STATE)
_reset = property(get_reset, set_reset)
RESET_STATE = TransformState()
def simplify_position(v):
if isinstance(v, tuple):
@@ -700,11 +711,15 @@ class Transform(Container):
focus=None,
default=False,
_args=None,
*,
reset=False,
**kwargs):
properties = {k: kwargs.pop(k) for k in style_properties if k in kwargs}
if reset:
kwargs = {"_reset": True} | kwargs
self.kwargs = kwargs
self.style_arg = style
@@ -1402,6 +1417,8 @@ ALIASES = {
"xysize" : (position_or_none, position_or_none),
"yalign" : position_or_none, # documented as float
"ycenter" : position_or_none,
"_reset" : bool,
}
renpy.atl.PROPERTIES.update(ALIASES)