Compare commits
13 Commits
6.17.0.271
...
6.18
| Author | SHA1 | Date | |
|---|---|---|---|
| c0f4395a53 | |||
| fd6f59e39a | |||
| de69ac7843 | |||
| a6174993d1 | |||
| d263552a79 | |||
| e67f671fe6 | |||
| bee097f3cd | |||
| 61c2fc4e49 | |||
| 6f7398e4ae | |||
| 5f1e49978b | |||
| 564a82c187 | |||
| ea2243ea86 | |||
| 4be828ede3 |
@@ -34,6 +34,12 @@ init python:
|
||||
try:
|
||||
with open(self.filename) as f:
|
||||
text = f.read()
|
||||
|
||||
try:
|
||||
text = renpy.fsdecode(text)
|
||||
except:
|
||||
text = text.decode("latin-1")
|
||||
|
||||
text = text.strip()
|
||||
text = text.split("\n")
|
||||
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ except ImportError:
|
||||
vc_version = 0
|
||||
|
||||
# The tuple giving the version number.
|
||||
version_tuple = (6, 17, 0, vc_version)
|
||||
version_tuple = (6, 18, 0, vc_version)
|
||||
|
||||
# The name of this version.
|
||||
version_name = "In This Decade..."
|
||||
|
||||
+20
-22
@@ -876,14 +876,15 @@ def predict_imspec(imspec, scene=False, atl=None):
|
||||
"""
|
||||
|
||||
if len(imspec) == 7:
|
||||
name, expression, tag, _at_list, layer, _zorder, _behind = imspec
|
||||
name, expression, tag, at_expr_list, layer, _zorder, _behind = imspec
|
||||
|
||||
elif len(imspec) == 6:
|
||||
name, expression, tag, _at_list, layer, _zorder = imspec
|
||||
name, expression, tag, at_expr_list, layer, _zorder = imspec
|
||||
|
||||
elif len(imspec) == 3:
|
||||
name, _at_list, layer = imspec
|
||||
|
||||
name, at_expr_list, layer = imspec
|
||||
tag = None
|
||||
expression = None
|
||||
|
||||
if expression:
|
||||
try:
|
||||
@@ -891,30 +892,27 @@ def predict_imspec(imspec, scene=False, atl=None):
|
||||
img = renpy.easy.displayable(img)
|
||||
except:
|
||||
return
|
||||
|
||||
else:
|
||||
img = renpy.display.image.images.get(name, None)
|
||||
if img is None:
|
||||
return
|
||||
img = None
|
||||
|
||||
full_name = name
|
||||
if tag:
|
||||
full_name = (tag,) + full_name[1:]
|
||||
at_list = [ ]
|
||||
for i in at_expr_list:
|
||||
try:
|
||||
at_list.append(renpy.python.py_eval(i))
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
if atl is not None:
|
||||
try:
|
||||
at_list.append(renpy.display.motion.ATLTransform(atl))
|
||||
except:
|
||||
pass
|
||||
|
||||
if scene:
|
||||
renpy.game.context().images.predict_scene(layer)
|
||||
|
||||
renpy.game.context().images.predict_show(tag or name, layer)
|
||||
|
||||
if atl is not None:
|
||||
try:
|
||||
img = renpy.display.motion.ATLTransform(atl, child=img)
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
renpy.display.predict.displayable(img)
|
||||
|
||||
renpy.exports.predict_show(name, layer, what=img, tag=tag)
|
||||
|
||||
|
||||
def show_imspec(imspec, atl=None):
|
||||
|
||||
+13
-8
@@ -105,6 +105,16 @@ def predict_show_display_say(who, what, who_args, what_args, window_args, image=
|
||||
list of images used by show_display_say.
|
||||
"""
|
||||
|
||||
if side_image:
|
||||
renpy.easy.predict(side_image)
|
||||
|
||||
if renpy.store._side_image_attributes:
|
||||
renpy.easy.predict(renpy.display.image.ImageReference(("side",) + renpy.store._side_image_attributes))
|
||||
|
||||
if image:
|
||||
if image != "<Dynamic>":
|
||||
renpy.easy.predict(who)
|
||||
|
||||
if screen:
|
||||
props = compute_widget_properties(who_args, what_args, window_args)
|
||||
|
||||
@@ -120,12 +130,6 @@ def predict_show_display_say(who, what, who_args, what_args, window_args, image=
|
||||
|
||||
return
|
||||
|
||||
if image:
|
||||
if image != "<Dynamic>":
|
||||
renpy.easy.predict(who)
|
||||
|
||||
if side_image:
|
||||
renpy.easy.predict(side_image)
|
||||
|
||||
|
||||
def compute_widget_properties(who_args, what_args, window_args, variant=None):
|
||||
@@ -347,8 +351,9 @@ def display_say(
|
||||
ctc_timedpause=None,
|
||||
ctc_force=False):
|
||||
|
||||
if (not renpy.game.preferences.skip_unseen) and (not renpy.game.context().seen_current(True)) and renpy.config.skipping == "fast":
|
||||
if interact and (not renpy.game.preferences.skip_unseen) and (not renpy.game.context().seen_current(True)) and renpy.config.skipping == "fast":
|
||||
renpy.config.skipping = None
|
||||
|
||||
# If we're in fast skipping mode, don't bother with say
|
||||
# statements at all.
|
||||
if interact and renpy.config.skipping == "fast":
|
||||
@@ -828,7 +833,7 @@ class ADVCharacter(object):
|
||||
old_side_image_attributes = renpy.store._side_image_attributes
|
||||
|
||||
if self.image_tag:
|
||||
attrs = self.image_tag + renpy.game.context().images.get_attributes("master", self.image_tag)
|
||||
attrs = ( self.image_tag, ) + renpy.game.context().images.get_attributes("master", self.image_tag)
|
||||
else:
|
||||
attrs = None
|
||||
|
||||
|
||||
@@ -436,7 +436,7 @@ init -1500 python:
|
||||
Returns the name of the numbered slot. This assumes that slots on
|
||||
normal pages are numbered in a linear order starting with 1, and
|
||||
that page numbers start with 1. When slot is 2, and slots_per_page
|
||||
is 10, and the other variables are the defauts:
|
||||
is 10, and the other variables are the defaults:
|
||||
|
||||
* When the first page is showing, this returns "2".
|
||||
* When the second page is showing, this returns "12".
|
||||
|
||||
@@ -113,9 +113,7 @@ init -1700 python:
|
||||
def _invoke_game_menu():
|
||||
if renpy.context()._menu:
|
||||
if renpy.context()._main_menu:
|
||||
if not renpy.get_screen("main_menu"):
|
||||
renpy.play(config.exit_sound)
|
||||
ShowMenu("main_menu")()
|
||||
return
|
||||
else:
|
||||
renpy.jump("_noisy_return")
|
||||
else:
|
||||
|
||||
@@ -295,6 +295,63 @@ def showing(name, layer='master'):
|
||||
|
||||
return renpy.game.context().images.showing(layer, name)
|
||||
|
||||
def predict_show(name, layer='master', what=None, tag=None, at_list=[ ]):
|
||||
"""
|
||||
:undocumented:
|
||||
|
||||
Predicts a scene or show statement.
|
||||
|
||||
`name`
|
||||
The name of the image to show, a string.
|
||||
|
||||
`layer`
|
||||
The layer the image is being show non.
|
||||
|
||||
`what`
|
||||
What is being show - if given, overrides `name`.
|
||||
|
||||
`tag`
|
||||
The tag of the thing being shown.
|
||||
|
||||
`at_list`
|
||||
A list of transforms to apply to the displayable.
|
||||
"""
|
||||
|
||||
key = tag or name[0]
|
||||
|
||||
if what is None:
|
||||
what = name
|
||||
elif isinstance(what, basestring):
|
||||
what = tuple(what.split())
|
||||
|
||||
if isinstance(what, renpy.display.core.Displayable):
|
||||
base = img = what
|
||||
|
||||
else:
|
||||
if renpy.config.image_attributes:
|
||||
|
||||
new_what = renpy.game.context().images.apply_attributes(layer, key, name)
|
||||
if new_what is not None:
|
||||
what = new_what
|
||||
name = (key,) + new_what[1:]
|
||||
|
||||
base = img = renpy.display.image.ImageReference(what, style='image_placement')
|
||||
|
||||
if not base.find_target():
|
||||
return
|
||||
|
||||
for i in at_list:
|
||||
if isinstance(i, renpy.display.motion.Transform):
|
||||
img = i(child=img)
|
||||
else:
|
||||
img = i(img)
|
||||
|
||||
renpy.game.context().images.predict_show(layer, name, True)
|
||||
renpy.display.predict.displayable(img)
|
||||
|
||||
|
||||
|
||||
|
||||
def show(name, at_list=[ ], layer='master', what=None, zorder=0, tag=None, behind=[ ], atl=None, transient=False, munge_name=True):
|
||||
"""
|
||||
:doc: se_images
|
||||
|
||||
@@ -27,7 +27,7 @@ remains fully supported.) Lengthy and redundant code like::
|
||||
|
||||
can be replaced with::
|
||||
|
||||
style quick_button_text is defaut:
|
||||
style quick_button_text is default:
|
||||
size 12
|
||||
idle_color "#8888"
|
||||
hover_color "#ccc"
|
||||
@@ -90,7 +90,8 @@ Buttons may now have an alternate action that is triggered by longpress
|
||||
on Android and right-click on desktop computers.
|
||||
|
||||
This release fixes a bug in which Ren'Py would not save persistent data
|
||||
(including preferences) before being terminated by the Android system.
|
||||
(including preferences) before being terminated by the Android system, and
|
||||
a regression that broke compatibility with some Android 2.3 systems.
|
||||
|
||||
New and Changed Preferences
|
||||
---------------------------
|
||||
@@ -147,6 +148,13 @@ The new :propref:`xsize`, :propref:`ysize`, and :propref:`xysize` style
|
||||
properties make it possible to directly set the size of resizable
|
||||
displayables.
|
||||
|
||||
Prediction of images with partial attributes and side images used in
|
||||
dialogue has been improved. Prediction of creator-defined statements
|
||||
now works as documented.
|
||||
|
||||
|
||||
|
||||
|
||||
Ren'Py 6.16.2
|
||||
=============
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
Returns the name of the numbered slot. This assumes that slots on
|
||||
normal pages are numbered in a linear order starting with 1, and
|
||||
that page numbers start with 1. When slot is 2, and slots_per_page
|
||||
is 10, and the other variables are the defauts:
|
||||
is 10, and the other variables are the defaults:
|
||||
|
||||
* When the first page is showing, this returns "2".
|
||||
* When the second page is showing, this returns "12".
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
* Zoom
|
||||
* ZoomInOut
|
||||
* absolute
|
||||
* adv
|
||||
* :var:`adv`
|
||||
* anim
|
||||
* :var:`blinds`
|
||||
* build
|
||||
@@ -183,9 +183,9 @@
|
||||
* layout
|
||||
* :var:`left`
|
||||
* library
|
||||
* main_menu
|
||||
* :var:`main_menu`
|
||||
* :func:`menu`
|
||||
* mouse_visible
|
||||
* :var:`mouse_visible`
|
||||
* :var:`move`
|
||||
* moveinbottom
|
||||
* moveinleft
|
||||
@@ -195,8 +195,8 @@
|
||||
* moveoutleft
|
||||
* :var:`moveoutright`
|
||||
* moveouttop
|
||||
* name_only
|
||||
* narrator
|
||||
* :var:`name_only`
|
||||
* :var:`narrator`
|
||||
* nvl
|
||||
* nvl_clear
|
||||
* nvl_clear_next
|
||||
@@ -223,7 +223,7 @@
|
||||
* :var:`reset`
|
||||
* :var:`right`
|
||||
* :var:`save_name`
|
||||
* say
|
||||
* :var:`say`
|
||||
* skip_indicator
|
||||
* slideawaydown
|
||||
* :var:`slideawayleft`
|
||||
|
||||
@@ -68,6 +68,7 @@ Customizing Ren'Py
|
||||
screen_actions
|
||||
screen_special
|
||||
config
|
||||
store_variables
|
||||
|
||||
Other Functionality
|
||||
-------------------
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
Store Variables
|
||||
===============
|
||||
|
||||
Ren'Py has a number of store variables that control its function. Store
|
||||
variables may be changed at any time. If a store variable is changed after
|
||||
the game has started, it will be be saved and loaded by the save system,
|
||||
and rolled-back when rollback occurs.
|
||||
|
||||
.. var:: adv = Character(...)
|
||||
|
||||
This is a template ADV-mode character, and the default character kind
|
||||
that is used when :func:`Character` is called.
|
||||
|
||||
.. var:: _game_menu_screen = "save"
|
||||
|
||||
This is the screen that is displayed when entering the game menu with no
|
||||
more specific screen selected. (For example, when right-clicking, pressing
|
||||
escape, or when :func:`ShowMenu` is not given an argument.) If None, entry
|
||||
to the game menu is disallowed.
|
||||
|
||||
This is set to None at the start of the splashscreen, and restored to its
|
||||
original value when the splashscreen ends.
|
||||
|
||||
.. var:: main_menu = False
|
||||
|
||||
Ren'Py sets this variable to True while in the main menu. This can be used
|
||||
to have screens display differently while in the main menu.
|
||||
|
||||
.. var:: menu = renpy.display_menu
|
||||
|
||||
The function that's called to display the in-gamemenu. It should take the same
|
||||
arguments as :func`renpy.display_menu`. Assigning :func:`nvl_menu` to this
|
||||
will display an nvl-mode menu.
|
||||
|
||||
.. var:: mouse_visible = True
|
||||
|
||||
Controls if the mouse is visible. This is automatically set to true when
|
||||
entering the standard game menus.
|
||||
|
||||
.. var:: name_only = Character(...)
|
||||
|
||||
This is a template character that is used when a string is given as the
|
||||
character name in a say statement. The code::
|
||||
|
||||
"Eileen" "Hello, world."
|
||||
|
||||
is equivalent to::
|
||||
|
||||
$ temp_char = Character("Eileen", kind=name_only)
|
||||
temp_char "Hello, world."
|
||||
|
||||
except that the temp_char variable is not used.
|
||||
|
||||
.. var:: narrator = Character(...)
|
||||
|
||||
This is the character that speaks narration (say statements that do not
|
||||
give a character or character name). The code::
|
||||
|
||||
"Hello, world."
|
||||
|
||||
is equivalent to::
|
||||
|
||||
narrator "Hello, world."
|
||||
|
||||
.. var:: _rollback = True
|
||||
|
||||
Controls if rollback is allowed.
|
||||
|
||||
.. var:: say = ...
|
||||
|
||||
A function that is called by Ren'Py to display dialogue. This is called
|
||||
with three arguments. The first argument (`who`) is the character saying the
|
||||
dialogue (or None for the narrator). The second argument(`what`) is what dialogue
|
||||
is being said.
|
||||
|
||||
The third argument must be a keyword argument named `interact` and defaulting
|
||||
to True. If true, the say function will wait for a click. If false, it will
|
||||
immediately return with the dialogue displayed on the screen.
|
||||
|
||||
It's rare to call this function directly, as one can simply call a character
|
||||
with dialogue. This variable mostly exists to be redefined, as a way of
|
||||
hooking the say statement.
|
||||
|
||||
.. var:: save_name = ""
|
||||
|
||||
A save name that is included with saves.
|
||||
|
||||
.. var:: _window = False
|
||||
|
||||
This set by the ``window show`` and ``window hide`` statements, and indirectly
|
||||
by ``window auto``. If true, the dialogue window is shown during non-dialogue
|
||||
statements.
|
||||
|
||||
.. var:: _window_auto = False
|
||||
|
||||
This is set to true by ``window auto`` and to false by ``window show`` and
|
||||
``window hide``. If true, the window auto behavior occurs.
|
||||
|
||||
.. var:: _window_subtitle = ''
|
||||
|
||||
This is appended to :var:`config.window_title` to produce the caption for the game
|
||||
window. This is automatically set to :var:`config.menu_window_subtitle` while in
|
||||
the game menu.
|
||||
|
||||
@@ -269,7 +269,7 @@ allocated to it by a layout, or on the screen when not inside a layout.
|
||||
.. style-property:: ysize int
|
||||
|
||||
Equivalent to setting yminimum and ymaximum to the same value. This
|
||||
has the effect of setting the width of the displayable.
|
||||
has the effect of setting the height of the displayable.
|
||||
|
||||
.. style-property:: xysize tuple of (int, int)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user