106 lines
3.6 KiB
Text
106 lines
3.6 KiB
Text
# Copyright 2004-2019 Tom Rothamel <pytom@bishoujo.us>
|
|
#
|
|
# Permission is hereby granted, free of charge, to any person
|
|
# obtaining a copy of this software and associated documentation files
|
|
# (the "Software"), to deal in the Software without restriction,
|
|
# including without limitation the rights to use, copy, modify, merge,
|
|
# publish, distribute, sublicense, and/or sell copies of the Software,
|
|
# and to permit persons to whom the Software is furnished to do so,
|
|
# subject to the following conditions:
|
|
#
|
|
# The above copyright notice and this permission notice shall be
|
|
# included in all copies or substantial portions of the Software.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
init -1650 python:
|
|
|
|
##########################################################################
|
|
# Side Images
|
|
|
|
# A tag to use. This can be used to force the side image to only be of the
|
|
# main character.
|
|
config.side_image_tag = None
|
|
|
|
# If True, the side image will only be shown if an image with the same tag
|
|
# is not shown.
|
|
config.side_image_only_not_showing = False
|
|
|
|
# A transform to use when the side image changes to that of a different
|
|
# character.
|
|
config.side_image_change_transform = None
|
|
|
|
# A transform to use when the side image changes to that of the same
|
|
# character.
|
|
config.side_image_same_transform = None
|
|
|
|
# The null to use.
|
|
config.side_image_null = Null()
|
|
|
|
_side_image_old = config.side_image_null
|
|
_side_image_raw = config.side_image_null
|
|
_side_image = config.side_image_null
|
|
|
|
def _side_per_interact():
|
|
"""
|
|
Called once per interaction to update the side image.
|
|
"""
|
|
|
|
global _side_image_raw
|
|
global _side_image
|
|
|
|
old = _side_image_raw
|
|
|
|
new = renpy.get_side_image(config.side_image_prefix_tag, image_tag=config.side_image_tag, not_showing=config.side_image_only_not_showing)
|
|
|
|
if new is None:
|
|
new = config.side_image_null
|
|
else:
|
|
new = ImageReference(new)
|
|
|
|
_side_image_raw = new
|
|
|
|
if config.skipping or renpy.game.after_rollback:
|
|
tf = None
|
|
elif isinstance(old, Null) and isinstance(new, Null):
|
|
tf = None
|
|
elif isinstance(old, Null) or isinstance(new, Null) or new.name[1] != old.name[1]:
|
|
tf = config.side_image_change_transform
|
|
else:
|
|
tf = config.side_image_same_transform
|
|
|
|
if tf:
|
|
_side_image = tf(old, new)
|
|
else:
|
|
_side_image = new
|
|
|
|
config.start_interact_callbacks.append(_side_per_interact)
|
|
|
|
def SideImage(prefix_tag=None):
|
|
"""
|
|
:doc: side_image_function
|
|
:args: ()
|
|
|
|
Returns the side image associated with the currently speaking character,
|
|
or a Null displayable if no such side image exists.
|
|
"""
|
|
|
|
# Compatibility with older games.
|
|
if (prefix_tag is not None) and (prefix_tag != config.side_image_prefix_tag):
|
|
config.side_image_prefix_tag = prefix_tag
|
|
_side_per_interact()
|
|
|
|
return _side_image
|
|
|
|
init 1650 python:
|
|
|
|
_side_image_old = config.side_image_null
|
|
_side_image_raw = config.side_image_null
|
|
_side_image = config.side_image_null
|
|
|