Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 76ed4fefe1 | |||
| f73799f4fc | |||
| da9691a195 | |||
| 2b829dbc07 |
+1
-1
@@ -112,7 +112,7 @@ link in a nightly build, or compile the modules as described above. You'll
|
||||
also need the `Sphinx <https://www.sphinx-doc.org>`_ documentation generator.
|
||||
If you have pip working, install Sphinx using::
|
||||
|
||||
pip install -U sphinx sphinx_rtd_theme sphinx_rtd_dark_mode
|
||||
pip install -U sphinx sphinx-bootstrap-theme
|
||||
|
||||
Once Sphinx is installed, change into the ``sphinx`` directory inside the
|
||||
Ren'Py checkout and run::
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"start_a170b500": {
|
||||
"area": [
|
||||
53,
|
||||
120,
|
||||
426,
|
||||
120
|
||||
]
|
||||
},
|
||||
"start_f41f55d7": {
|
||||
"area": [
|
||||
106,
|
||||
60,
|
||||
426,
|
||||
120
|
||||
]
|
||||
}
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 4.1 KiB |
+12
-45
@@ -1409,12 +1409,12 @@ style nvl_button_text:
|
||||
|
||||
## Bubble screen ###############################################################
|
||||
##
|
||||
## The bubble screen is used to display dialogue to the player when using
|
||||
## speech bubbles. The bubble screen takes the same parameters as the say
|
||||
## The Bubble screen is used to display dialogue to the player when using
|
||||
## speech bubbles. The Bubble screen takes the same parameters as the say
|
||||
## screen, must create a displayable with the id of "what", and can create
|
||||
## displayables with the "namebox", "who", and "window" ids.
|
||||
##
|
||||
## https://www.renpy.org/doc/html/bubble.html#bubble-screen
|
||||
## https://www.renpy.org/doc/html/screen_special.html#bubble
|
||||
|
||||
screen bubble(who, what):
|
||||
style_prefix "bubble"
|
||||
@@ -1434,18 +1434,22 @@ screen bubble(who, what):
|
||||
text what:
|
||||
id "what"
|
||||
|
||||
|
||||
style bubble_window is empty
|
||||
style bubble_namebox is empty
|
||||
style bubble_who is default
|
||||
style bubble_what is default
|
||||
|
||||
|
||||
style bubble_window:
|
||||
xpadding 30
|
||||
top_padding 5
|
||||
bottom_padding 5
|
||||
background Frame("gui/bubble.png", 15, 15, 15, 15)
|
||||
padding (15, 10)
|
||||
|
||||
style bubble_namebox:
|
||||
xalign 0.5
|
||||
background Frame("gui/bubble.png", 15, 15, 15, 15)
|
||||
pos (-15, -5)
|
||||
anchor (0.0, 1.0)
|
||||
padding (15, 10)
|
||||
|
||||
style bubble_who:
|
||||
xalign 0.5
|
||||
@@ -1454,47 +1458,10 @@ style bubble_who:
|
||||
|
||||
style bubble_what:
|
||||
align (0.5, 0.5)
|
||||
text_align 0.5
|
||||
textalign 0.5
|
||||
layout "subtitle"
|
||||
color "#000"
|
||||
|
||||
define bubble.frame = Frame("gui/bubble.png", 55, 55, 55, 95)
|
||||
define bubble.thoughtframe = Frame("gui/thoughtbubble.png", 55, 55, 55, 55)
|
||||
|
||||
define bubble.properties = {
|
||||
"bottom_left" : {
|
||||
"window_background" : Transform(bubble.frame, xzoom=1, yzoom=1),
|
||||
"window_bottom_padding" : 27,
|
||||
},
|
||||
|
||||
"bottom_right" : {
|
||||
"window_background" : Transform(bubble.frame, xzoom=-1, yzoom=1),
|
||||
"window_bottom_padding" : 27,
|
||||
},
|
||||
|
||||
"top_left" : {
|
||||
"window_background" : Transform(bubble.frame, xzoom=1, yzoom=-1),
|
||||
"window_top_padding" : 27,
|
||||
},
|
||||
|
||||
"top_right" : {
|
||||
"window_background" : Transform(bubble.frame, xzoom=-1, yzoom=-1),
|
||||
"window_top_padding" : 27,
|
||||
},
|
||||
|
||||
"thought" : {
|
||||
"window_background" : bubble.thoughtframe,
|
||||
}
|
||||
}
|
||||
|
||||
define bubble.expand_area = {
|
||||
"bottom_left" : (0, 0, 0, 22),
|
||||
"bottom_right" : (0, 0, 0, 22),
|
||||
"top_left" : (0, 22, 0, 0),
|
||||
"top_right" : (0, 22, 0, 0),
|
||||
"thought" : (0, 0, 0, 0),
|
||||
}
|
||||
|
||||
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -31,10 +31,8 @@ init python:
|
||||
ANDROID_NO_BUNDLE = 6
|
||||
ANDROID_OK = 7
|
||||
|
||||
JDK_REQUIREMENT=8
|
||||
|
||||
NO_RAPT_TEXT = _("To build Android packages, please download RAPT, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher.")
|
||||
NO_JDK_TEXT = _("A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher.")
|
||||
NO_JDK_TEXT = _("A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}download and install the JDK{/a}, then restart the Ren'Py launcher.")
|
||||
NO_SDK_TEXT = _("RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this.")
|
||||
NO_KEY_TEXT = _("RAPT has been installed, but a key hasn't been configured. Please generate new keys, or copy android.keystore and bundle.keystore to the base directory.")
|
||||
NO_CONFIG_TEXT = _("The current project has not been configured. Use \"Configure\" to configure it before building.")
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
# This file contains strings used by RAPT, so the Ren'Py translation framework
|
||||
# can find them. It's automatically generated by rapt/update_translations.py, and
|
||||
# hence should not be changed by hand.
|
||||
@@ -63,12 +63,11 @@ init python hide:
|
||||
__("I found an android.keystore file in the rapt directory. Do you want to use this file?")
|
||||
__("I can create an application signing key for you. This key is required to create Universal APK for sideloading and stores other than Google Play.\n\nDo you want to create a key?")
|
||||
__("I will create the key in the android.keystore file.\n\nYou need to back this file up. If you lose it, you will not be able to upgrade your application.\n\nYou also need to keep the key safe. If evil people get this file, they could make fake versions of your application, and potentially steal your users' data.\n\nWill you make a backup of android.keystore, and keep it in a safe place?")
|
||||
__("\n\nSaying 'No' will prevent key creation.")
|
||||
__("Could not create android.keystore. Is keytool in your path?")
|
||||
__("I've finished creating android.keystore. Please back it up, and keep it in a safe place.")
|
||||
__("I found a bundle.keystore file in the rapt directory. Do you want to use this file?")
|
||||
__("I can create a bundle signing key for you. This key is required to build an Android App Bundle (AAB) for upload to Google Play.\n\nDo you want to create a key?")
|
||||
__("I will create the key in the bundle.keystore file.\n\nYou need to back this file up. If you lose it, you will not be able to upgrade your application.\n\nYou also need to keep the key safe. If evil people get this file, they could make fake versions of your application, and potentially steal your users' data.\n\nWill you make a backup of bundle.keystore, and keep it in a safe place?")
|
||||
__("\n\nSaying 'No' will prevent key creation.")
|
||||
__("Could not create bundle.keystore. Is keytool in your path?")
|
||||
__("I've opened the directory containing android.keystore and bundle.keystore. Please back them up, and keep them in a safe place.")
|
||||
__("It looks like you're ready to start packaging games.")
|
||||
|
||||
@@ -214,8 +214,7 @@ class CodeGenerator(object):
|
||||
'gui.insensitive_color' : repr(self.p.insensitive_color.hexcode),
|
||||
'gui.text_color' : repr(self.p.text_color.hexcode),
|
||||
'gui.interface_text_color' : repr(self.p.text_color.hexcode),
|
||||
'gui.choice_button_text_idle_color' : repr(self.p.idle_color.hexcode),
|
||||
'gui.choice_button_text_insensitive_color' : repr(self.p.insensitive_color.hexcode),
|
||||
'gui.choice_text_color' : repr(self.p.choice_color.hexcode),
|
||||
}
|
||||
|
||||
self.update_defines(replacements, language_defines[self.p.language])
|
||||
|
||||
@@ -408,15 +408,13 @@ class ImageGenerator(object):
|
||||
|
||||
import shutil
|
||||
|
||||
for fn in [ "bubble.png", "thoughtbubble.png" ]:
|
||||
source = os.path.join(config.renpy_base, "gui", "game", "gui", "bubble.png")
|
||||
dest = os.path.join(self.prefix, "bubble.png")
|
||||
|
||||
source = os.path.join(config.renpy_base, "gui", "game", "gui", fn)
|
||||
dest = os.path.join(self.prefix, fn)
|
||||
if source == dest:
|
||||
return
|
||||
|
||||
if source == dest:
|
||||
return
|
||||
|
||||
shutil.copyfile(source, dest)
|
||||
shutil.copyfile(source, dest)
|
||||
|
||||
|
||||
def generate_all(self):
|
||||
|
||||
@@ -67,8 +67,8 @@ class GuiParameters(object):
|
||||
if light:
|
||||
|
||||
self.selected_color = Color("#555555")
|
||||
self.idle_color = Color("#707070")
|
||||
self.idle_small_color = Color("#606060")
|
||||
self.idle_color = Color("#aaaaaa")
|
||||
self.idle_small_color = Color("#888888")
|
||||
self.text_color = Color("#404040")
|
||||
self.choice_color = Color("#cccccc")
|
||||
|
||||
|
||||
@@ -95,7 +95,9 @@ label install_live2d:
|
||||
|
||||
(r".*/Core/dll/android/(armeabi-v7a/libLive2DCubismCore.so)", r"rapt/prototype/renpyandroid/src/main/jniLibs/\1"),
|
||||
(r".*/Core/dll/android/(arm64-v8a/libLive2DCubismCore.so)", r"rapt/prototype/renpyandroid/src/main/jniLibs/\1"),
|
||||
(r".*/Core/dll/android/(x86_64/libLive2DCubismCore.so)", r"rapt/prototype/renpyandroid/src/main/jniLibs/\1"),
|
||||
|
||||
# This doesn't exist yet.
|
||||
# (r".*/Core/dll/android/(x86_64/libLive2DCubismCore.so)", r"rapt/prototype/renpyandroid/src/main/jniLibs/\1"),
|
||||
]
|
||||
|
||||
install_from_zip("Live2D Cubism SDK for Native", "CubismSdkForNative-4-*.zip", patterns)
|
||||
|
||||
@@ -200,15 +200,7 @@ screen common:
|
||||
add SPACER
|
||||
|
||||
for v, l in choices:
|
||||
textbutton l:
|
||||
action SetScreenVariable("selected", v)
|
||||
selected_background REVERSE_IDLE
|
||||
selected_hover_background REVERSE_HOVER
|
||||
xpadding 20
|
||||
size_group "choice"
|
||||
text_selected_idle_color REVERSE_TEXT
|
||||
text_selected_hover_color REVERSE_TEXT
|
||||
text_xalign 0.5
|
||||
textbutton l action SetScreenVariable("selected", v)
|
||||
|
||||
if selected is not None:
|
||||
$ continue_ = Return(selected)
|
||||
|
||||
+22
-4
@@ -97,14 +97,32 @@ label itch:
|
||||
files = [ ]
|
||||
|
||||
for fn in os.listdir(destination):
|
||||
fn = os.path.join(destination, fn)
|
||||
|
||||
if fn.endswith("-all.zip"):
|
||||
channel = "win-osx-linux"
|
||||
|
||||
elif fn.endswith("-market.zip"):
|
||||
channel = "win-osx-linux"
|
||||
|
||||
elif fn.endswith("-pc.zip"):
|
||||
channel = "win-linux"
|
||||
|
||||
elif fn.endswith("-win.zip"):
|
||||
channel = "win"
|
||||
|
||||
elif fn.endswith("-mac.zip"):
|
||||
channel = "osx"
|
||||
|
||||
elif fn.endswith("-linux.tar.bz2"):
|
||||
channel = "linux"
|
||||
|
||||
elif fn.endswith("-release.apk"):
|
||||
channel = "android"
|
||||
|
||||
for pattern, channel in reversed(build['itch_channels']):
|
||||
if fnmatch.fnmatch(fn, pattern):
|
||||
break
|
||||
else:
|
||||
continue
|
||||
|
||||
fn = os.path.join(destination, fn)
|
||||
files.append((fn, channel))
|
||||
|
||||
if not os.path.exists(destination):
|
||||
|
||||
@@ -355,7 +355,6 @@ init python:
|
||||
|
||||
build.classify_renpy("gui/game/gui/", "source")
|
||||
build.classify_renpy("gui/game/gui/bubble.png", "source")
|
||||
build.classify_renpy("gui/game/gui/thoughtbubble.png", "source")
|
||||
build.classify_renpy("gui/game/gui/*", None)
|
||||
|
||||
source_and_binary("launcher", py=False)
|
||||
@@ -450,6 +449,3 @@ python early:
|
||||
# Since the launcher can be run directly or can be run from the SDK directory,
|
||||
# uneliding files needs to be handled slightly differently.
|
||||
define config.alternate_unelide_path = os.path.join(config.basedir, "launcher")
|
||||
|
||||
# Disable skipping.
|
||||
define config.allow_skipping = False
|
||||
|
||||
@@ -248,8 +248,8 @@ screen preferences():
|
||||
add HALF_SPACER
|
||||
|
||||
textbutton _("Default theme") style "l_checkbox" action [SetField(persistent, "theme", None), RestartAtPreferences() ]
|
||||
textbutton _("Dark theme") style "l_checkbox" action [SetField(persistent, "theme", "dark"), RestartAtPreferences()]
|
||||
textbutton _("Custom theme") style "l_checkbox" action [SetField(persistent, "theme", "custom"), RestartAtPreferences()]
|
||||
textbutton _("Dark theme") style "l_checkbox" action [SetField(persistent, "theme", "dark", None), RestartAtPreferences()]
|
||||
textbutton _("Custom theme") style "l_checkbox" action [SetField(persistent, "theme", "custom", None), RestartAtPreferences()]
|
||||
|
||||
add SPACER
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ label start:
|
||||
|
||||
define config.rtl = True
|
||||
|
||||
define gui.textalign = 1.0
|
||||
define gui.text_align = 1.0
|
||||
define gui.button_text_xalign = 1.0
|
||||
define gui.prompt_text_xalign = 1.0
|
||||
define gui.navigation_xpos = 240
|
||||
|
||||
@@ -332,6 +332,8 @@
|
||||
old "return"
|
||||
new "retour"
|
||||
|
||||
translate french strings:
|
||||
|
||||
# renpy/common/00accessibility.rpy:76
|
||||
old "Font Override"
|
||||
new "Forcer la police"
|
||||
@@ -810,11 +812,7 @@
|
||||
|
||||
# renpy/common/00director.rpy:1771
|
||||
old "Click to set transform, right click to add to transform list."
|
||||
new "Clic pour assigner le transform, clic droit pour ajouter à la liste des transforms."
|
||||
|
||||
# renpy/common/00director.rpy:1789
|
||||
old "Click to set, right click to add to behind list."
|
||||
new "Clic pour assigner, clic droit pour ajouter à la liste du \"behind\"."
|
||||
new "Clic pour ajouter un transform, clic droit pour ajouter une liste de transforms."
|
||||
|
||||
# renpy/common/00preferences.rpy:528
|
||||
old "audio when unfocused"
|
||||
@@ -899,11 +897,3 @@
|
||||
# renpy/common/00webvideo.rpy:5
|
||||
old "Touch to play the video."
|
||||
new "Touchez pour jouer la vidéo."
|
||||
|
||||
# renpy/common/00gui.rpy:456
|
||||
old "This save was created on a different device. Maliciously constructed save files can harm your computer. Do you trust this save's creator and everyone who could have changed the file?"
|
||||
new "Cette sauvegarde a été créée sur un autre appareil. Des faux fichiers de sauvegarde peuvent être utilisés pour endommager votre ordinateur. Faites-vous confiance au créateur de cette sauvegarde et à tous ceux qui auraient pu modifier le fichier ?"
|
||||
|
||||
# renpy/common/00gui.rpy:457
|
||||
old "Do you trust the device the save was created on? You should only choose yes if you are the device's sole user."
|
||||
new "Faites-vous confiance à l'appareil sur lequel cette sauvegarde a été créée ? Vous ne devriez dire oui que si vous en êtes l'unique utilisateur ."
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
|
||||
# _developer/developer.rpym:532
|
||||
old "\n{color=#cfc}✔ predicted image (good){/color}\n{color=#fcc}✘ unpredicted image (bad){/color}\n{color=#fff}Drag to move.{/color}"
|
||||
new "\n{color=#cfc}✔ image prédite (bien){/color}\n{color=#fcc}✘ image non prédite (pas bien){/color}\n{color=#fff}Glissez pour déplacer.{/color}"
|
||||
new "\n{color=#cfc}✔ image prédite (bon){/color}\n{color=#fcc}✘ image prédite (mauvais){/color}\n{color=#fff}Glissez pour bouger.{/color}"
|
||||
|
||||
# _developer/inspector.rpym:38
|
||||
old "Displayable Inspector"
|
||||
@@ -207,7 +207,3 @@
|
||||
# renpy/common/00console.rpy:784
|
||||
old "stack: print the return stack"
|
||||
new "stack : affiche la pile de retour"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:70
|
||||
old "Speech Bubble Editor (Shift+B)"
|
||||
new "Éditeur de bulles de dialogue (Shift+B)"
|
||||
|
||||
@@ -455,7 +455,3 @@
|
||||
# gui/game/gui.rpy:441
|
||||
old "## Change the size and spacing of various things."
|
||||
new "## Changer la taille et l'espacement de diverses choses."
|
||||
|
||||
# gui/game/gui.rpy:14
|
||||
old "## Enable checks for invalid or unstable properties in screens or transforms"
|
||||
new "## Active la vérification de propriétés invalides ou instables dans les screens et transforms"
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
# android.rpy:32
|
||||
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
|
||||
new "RAPT a été installé, mais vous devez installer le kit de développement Android pour pouvoir compiler les paquets Android, avec « Installer le SDK »."
|
||||
new "RAPT a été installé, mais vous devez installer le kit de développement Android pour pouvoir compiler les paquets Android. Choisissez « installer le kit de développement et créer les clés » pour cela."
|
||||
|
||||
# android.rpy:33
|
||||
old "RAPT has been installed, but a key hasn't been configured. Please create a new key, or restore android.keystore."
|
||||
@@ -65,11 +65,11 @@
|
||||
|
||||
# android.rpy:39
|
||||
old "Attempts to emulate a televison-based Android console, like the OUYA or Fire TV.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Tentative d’émulation d'une console télé basée sur Android, comme OUYA ou Fire TV.\n\nLa manette est émulée par les touches fléchées, le bouton select par la touche Entrée, le bouton menu par la touche Echap, et le bouton retour par la touche PageUp."
|
||||
new "Tentative d’émulation d'une console télé basée sur Android, comme OUYA ou Fire TV.\n\n Le contrôleur est émulé par les touches fléchées, le bouton select par la touche Entrée, le bouton menu par la touche Echap, et le bouton retour par la touche PageUp."
|
||||
|
||||
# android.rpy:41
|
||||
old "Downloads and installs the Android SDK and supporting packages. Optionally, generates the keys required to sign the package."
|
||||
new "Télécharge et installe le kit de développement Android et les paquets requis. Optionnellement, génère les clés requises pour signer le paquet."
|
||||
new "Télécharge et installe le kit de développement Android et les paquets supportés. Optionnellement, génère les clés requises pour signer le paquet."
|
||||
|
||||
# android.rpy:42
|
||||
old "Configures the package name, version, and other information about this project."
|
||||
@@ -1192,8 +1192,8 @@
|
||||
new "Le nom de fichier ne peut pas être vide."
|
||||
|
||||
# game/android.rpy:31
|
||||
old "A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Un kit de développement Java [JDK_REQUIREMENT] 64-bit/x64 est requis pour construire des paquets Android depuis Windows. Le JDK est différent du JRE, donc il est possible d'avoir Java sans avoir le JDK.\n\n{a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}Téléchargez et installez le JDK{/a}, puis redémarrez Ren'Py."
|
||||
old "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Un kit de développement Java 8 64-bit/x64 est requis pour construire des paquets Android depuis Windows. Le JDK est différent du JRE, donc il est possible d'avoir Java sans avoir le JDK.\n\n{a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}Téléchargez et installez le JDK{/a}, puis redémarrez Ren'Py."
|
||||
|
||||
# game/android.rpy:50
|
||||
old "Selects the Debug build, which can be accessed through Android Studio. Changing between debug and release builds requires an uninstall from your device."
|
||||
@@ -2086,47 +2086,3 @@
|
||||
# game/web.rpy:484
|
||||
old "Creating package..."
|
||||
new "Création du package..."
|
||||
|
||||
# game/android.rpy:37
|
||||
old "RAPT has been installed, but a key hasn't been configured. Please generate new keys, or copy android.keystore and bundle.keystore to the base directory."
|
||||
new "RAPT a été installé, mais aucune clé n’a été configurée. Veuillez générer de nouvelles clés, ou copier android.keystore and bundle.keystore dans le dossier racine du projet."
|
||||
|
||||
# game/android.rpy:44
|
||||
old "Attempts to emulate a televison-based Android console.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Tentative d’émulation d'une console télé basée sur Android.\n\nLa manette est émulée par les touches fléchées, le bouton select par la touche Entrée, le bouton menu par la touche Echap, et le bouton retour par la touche PageUp."
|
||||
|
||||
# game/android.rpy:46
|
||||
old "Downloads and installs the Android SDK and supporting packages."
|
||||
new "Télécharge et installe le kit de développement Android et les paquets requis."
|
||||
|
||||
# game/android.rpy:47
|
||||
old "Generates the keys required to sign the package."
|
||||
new "Génère les clés requises pour signer le package."
|
||||
|
||||
# game/android.rpy:381
|
||||
old "Install SDK"
|
||||
new "Installer le SDK"
|
||||
|
||||
# game/android.rpy:385
|
||||
old "Generate Keys"
|
||||
new "Générer les clés"
|
||||
|
||||
# game/androidstrings.rpy:32
|
||||
old "How much RAM (in GB) do you want to allocate to Gradle?\nThis must be a positive integer number."
|
||||
new "Combien de RAM (in GB) voulez-vous allouer à Gradle ?\nEntrez un nombre entier positif."
|
||||
|
||||
# game/androidstrings.rpy:33
|
||||
old "The RAM size must contain only numbers and be positive."
|
||||
new "La taille de RAM ne doit contenir que des chiffres et être positive."
|
||||
|
||||
# game/androidstrings.rpy:63
|
||||
old "I found an android.keystore file in the rapt directory. Do you want to use this file?"
|
||||
new "J'ai trouvé un fichier android.keystore dans le dossier \"rapt\". Voulez-vous l'utiliser ?"
|
||||
|
||||
# game/androidstrings.rpy:66
|
||||
old "\n\nSaying 'No' will prevent key creation."
|
||||
new "\n\nRépondre \"Non\" empêchera la création de clés."
|
||||
|
||||
# game/androidstrings.rpy:69
|
||||
old "I found a bundle.keystore file in the rapt directory. Do you want to use this file?"
|
||||
new "J'ai trouvé un fichier bundle.keystore dans le dossier \"rapt\". Voulez-vous l'utiliser ?"
|
||||
|
||||
@@ -724,18 +724,10 @@
|
||||
old "## Bubble screen"
|
||||
new "## Screen des bulles"
|
||||
|
||||
# gui/game/screens.rpy:1412
|
||||
old "## The bubble screen is used to display dialogue to the player when using speech bubbles. The Bubble screen takes the same parameters as the say screen, must create a displayable with the id of \"what\", and can create displayables with the \"namebox\", \"who\", and \"window\" ids."
|
||||
# gui/game/screens.rpy:1399
|
||||
old "## The Bubble screen is used to display dialogue to the player when using speech bubbles. The Bubble screen takes the same parameters as the say screen, must create a displayable with the id of \"what\", and can create displayables with the \"namebox\", \"who\", and \"window\" ids."
|
||||
new "## Le screen des bulles est utilisé pour afficher des dialogues en utilisant des bulles. Ce screen prend les mêmes paramètres que le screen say, doit prévoir un displayable avec l'id \"what\", et peut créer des displayables avec les ids \"namebox\", \"who\", et \"window\"."
|
||||
|
||||
# gui/game/screens.rpy:1417
|
||||
old "## https://www.renpy.org/doc/html/bubble.html#bubble-screen"
|
||||
new "## https://www.renpy.org/doc/html/bubble.html#bubble-screen"
|
||||
|
||||
# gui/game/screens.rpy:676
|
||||
old "Upload Sync"
|
||||
new "Uploader Sync"
|
||||
|
||||
# gui/game/screens.rpy:680
|
||||
old "Download Sync"
|
||||
new "Télécharger Sync"
|
||||
# gui/game/screens.rpy:1404
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#bubble"
|
||||
new "## https://www.renpy.org/doc/html/screen_special.html#bubble"
|
||||
|
||||
@@ -1199,13 +1199,15 @@
|
||||
old "Proceed"
|
||||
new "Fortsetzen"
|
||||
|
||||
translate german strings:
|
||||
|
||||
# game/add_file.rpy:37
|
||||
old "The file name may not be empty."
|
||||
new "Der Dateiname darf nicht leer sein."
|
||||
|
||||
# game/android.rpy:35
|
||||
old "A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
old "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
|
||||
# game/android.rpy:38
|
||||
old "RAPT has been installed, but a bundle key hasn't been configured. Please create a new key, or restore bundle.keystore."
|
||||
@@ -1930,3 +1932,4 @@
|
||||
# game/web.rpy:348
|
||||
old "Before packaging web apps, you'll need to download RenPyWeb, Ren'Py's web support. Would you like to download RenPyWeb now?"
|
||||
new "Before packaging web apps, you'll need to download RenPyWeb, Ren'Py's web support. Would you like to download RenPyWeb now?"
|
||||
|
||||
|
||||
@@ -1320,8 +1320,8 @@
|
||||
new "ファイル名が与えられていません。"
|
||||
|
||||
# game/android.rpy:31
|
||||
old "A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "ウィンドウズでアンドロイドパッケージをビルドするには、 64-bit/x64 Java 8 Development Kit が必要になります。 JDK は JRE とは違うもので、Java には含まれていません。\n\n{a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}JDK{/a}をダンロード、インストールしてから Ren'Py ランチャーを再起動してください。"
|
||||
old "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "ウィンドウズでアンドロイドパッケージをビルドするには、 64-bit/x64 Java 8 Development Kit が必要になります。 JDK は JRE とは違うもので、Java には含まれていません。\n\n{a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}JDK{/a}をダンロード、インストールしてから Ren'Py ランチャーを再起動してください。"
|
||||
|
||||
# game/android.rpy:50
|
||||
old "Selects the Debug build, which can be accessed through Android Studio. Changing between debug and release builds requires an uninstall from your device."
|
||||
@@ -2094,3 +2094,4 @@
|
||||
# game/web.rpy:344
|
||||
old "We will restore support in a future release of Ren'Py 8. Until then, please use Ren'Py 7 for web support."
|
||||
new "Ren'Py 8 の将来のリリースでサポートを復活させます。それまではRen'Py 7 をウェブプラットフォームに使用ください。"
|
||||
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
new "안드로이드 패키지를 만드려면, RAPT 파일을 내려받고 렌파이 디렉터리 안에 압축 해제하세요. 그다음 렌파이를 재시작하세요."
|
||||
|
||||
# game/android.rpy:31
|
||||
old "A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "윈도우에서 안드로이드 패키지를 만드려면 64비트 JDK가 필요합니다. JDK는 JRE와 다르므로 PC에 JDK가 없는 자바가 설치되어 있을 수 있습니다.\n\n{a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}JDK를 내려받아 설치한 뒤{/a}, 렌파이를 재시작해주세요."
|
||||
old "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "윈도우에서 안드로이드 패키지를 만드려면 64비트 JDK가 필요합니다. JDK는 JRE와 다르므로 PC에 JDK가 없는 자바가 설치되어 있을 수 있습니다.\n\n{a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}JDK를 내려받아 설치한 뒤{/a}, 렌파이를 재시작해주세요."
|
||||
|
||||
# game/android.rpy:32
|
||||
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
|
||||
|
||||
@@ -109,11 +109,11 @@ translate piglatin strings:
|
||||
old "Debug"
|
||||
new "Ebugday"
|
||||
|
||||
# renpy/common/00accessibility.rpy:223
|
||||
# renpy/common/00accessibility.rpy:215
|
||||
old "Self-Voicing Volume Drop"
|
||||
new "Elfsay-Oicingvay Olumevay Ropday"
|
||||
|
||||
# renpy/common/00accessibility.rpy:234
|
||||
# renpy/common/00accessibility.rpy:224
|
||||
old "The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was."
|
||||
new "Hetay optionsay onay histay enumay areay intendeday otay improveay accessibilityay. Heytay aymay otnay orkway ithway allay amesgay, anday omesay ombinationscay ofay optionsay aymay enderray hetay amegay unplayableay. Histay isay otnay anay issueay ithway hetay amegay oray engineay. Orfay hetay estbay esultsray henway angingchay ontsfay, ytray otay eepkay hetay exttay izesay hetay amesay asay itay originallyay asway."
|
||||
|
||||
@@ -269,595 +269,483 @@ translate piglatin strings:
|
||||
old "{#month_short}Dec"
|
||||
new "{#month_short}Ecday"
|
||||
|
||||
# renpy/common/00action_file.rpy:258
|
||||
# renpy/common/00action_file.rpy:250
|
||||
old "%b %d, %H:%M"
|
||||
new "%bay %day, %Hay:%May"
|
||||
|
||||
# renpy/common/00action_file.rpy:378
|
||||
# renpy/common/00action_file.rpy:364
|
||||
old "Save slot %s: [text]"
|
||||
new "Avesay otslay %say: [text]"
|
||||
|
||||
# renpy/common/00action_file.rpy:461
|
||||
# renpy/common/00action_file.rpy:445
|
||||
old "Load slot %s: [text]"
|
||||
new "Oadlay otslay %say: [text]"
|
||||
|
||||
# renpy/common/00action_file.rpy:514
|
||||
# renpy/common/00action_file.rpy:498
|
||||
old "Delete slot [text]"
|
||||
new "Eleteday otslay [text]"
|
||||
|
||||
# renpy/common/00action_file.rpy:593
|
||||
# renpy/common/00action_file.rpy:577
|
||||
old "File page auto"
|
||||
new "Ilefay agepay autoay"
|
||||
|
||||
# renpy/common/00action_file.rpy:595
|
||||
# renpy/common/00action_file.rpy:579
|
||||
old "File page quick"
|
||||
new "Ilefay agepay uickqay"
|
||||
|
||||
# renpy/common/00action_file.rpy:597
|
||||
# renpy/common/00action_file.rpy:581
|
||||
old "File page [text]"
|
||||
new "Ilefay agepay [text]"
|
||||
|
||||
# renpy/common/00action_file.rpy:796
|
||||
# renpy/common/00action_file.rpy:780
|
||||
old "Next file page."
|
||||
new "Extnay ilefay agepay."
|
||||
|
||||
# renpy/common/00action_file.rpy:868
|
||||
# renpy/common/00action_file.rpy:852
|
||||
old "Previous file page."
|
||||
new "Reviouspay ilefay agepay."
|
||||
|
||||
# renpy/common/00action_file.rpy:929
|
||||
# renpy/common/00action_file.rpy:913
|
||||
old "Quick save complete."
|
||||
new "Uickqay avesay ompletecay."
|
||||
|
||||
# renpy/common/00action_file.rpy:944
|
||||
# renpy/common/00action_file.rpy:931
|
||||
old "Quick save."
|
||||
new "Uickqay avesay."
|
||||
|
||||
# renpy/common/00action_file.rpy:963
|
||||
# renpy/common/00action_file.rpy:950
|
||||
old "Quick load."
|
||||
new "Uickqay oadlay."
|
||||
|
||||
# renpy/common/00action_other.rpy:381
|
||||
# renpy/common/00action_other.rpy:377
|
||||
old "Language [text]"
|
||||
new "Anguagelay [text]"
|
||||
|
||||
# renpy/common/00action_other.rpy:721
|
||||
# renpy/common/00action_other.rpy:664
|
||||
old "Open [text] directory."
|
||||
new "Penoay [text] irectoryday."
|
||||
|
||||
# renpy/common/00director.rpy:705
|
||||
# renpy/common/00director.rpy:708
|
||||
old "The interactive director is not enabled here."
|
||||
new "Hetay interactiveay irectorday isay otnay enableday erehay."
|
||||
|
||||
# renpy/common/00director.rpy:1504
|
||||
# renpy/common/00director.rpy:1481
|
||||
old "⬆"
|
||||
new "⬆"
|
||||
|
||||
# renpy/common/00director.rpy:1510
|
||||
# renpy/common/00director.rpy:1487
|
||||
old "⬇"
|
||||
new "⬇"
|
||||
|
||||
# renpy/common/00director.rpy:1574
|
||||
# renpy/common/00director.rpy:1551
|
||||
old "Done"
|
||||
new "Oneday"
|
||||
|
||||
# renpy/common/00director.rpy:1584
|
||||
# renpy/common/00director.rpy:1561
|
||||
old "(statement)"
|
||||
new "(atementstay)"
|
||||
|
||||
# renpy/common/00director.rpy:1585
|
||||
# renpy/common/00director.rpy:1562
|
||||
old "(tag)"
|
||||
new "(agtay)"
|
||||
|
||||
# renpy/common/00director.rpy:1586
|
||||
# renpy/common/00director.rpy:1563
|
||||
old "(attributes)"
|
||||
new "(attributesay)"
|
||||
|
||||
# renpy/common/00director.rpy:1587
|
||||
# renpy/common/00director.rpy:1564
|
||||
old "(transform)"
|
||||
new "(ansformtray)"
|
||||
|
||||
# renpy/common/00director.rpy:1612
|
||||
# renpy/common/00director.rpy:1589
|
||||
old "(transition)"
|
||||
new "(ansitiontray)"
|
||||
|
||||
# renpy/common/00director.rpy:1624
|
||||
# renpy/common/00director.rpy:1601
|
||||
old "(channel)"
|
||||
new "(annelchay)"
|
||||
|
||||
# renpy/common/00director.rpy:1625
|
||||
# renpy/common/00director.rpy:1602
|
||||
old "(filename)"
|
||||
new "(ilenamefay)"
|
||||
|
||||
# renpy/common/00director.rpy:1654
|
||||
# renpy/common/00director.rpy:1631
|
||||
old "Change"
|
||||
new "Hangecay"
|
||||
|
||||
# renpy/common/00director.rpy:1656
|
||||
# renpy/common/00director.rpy:1633
|
||||
old "Add"
|
||||
new "Ddaay"
|
||||
|
||||
# renpy/common/00director.rpy:1659
|
||||
# renpy/common/00director.rpy:1636
|
||||
old "Cancel"
|
||||
new "Ancelcay"
|
||||
|
||||
# renpy/common/00director.rpy:1662
|
||||
# renpy/common/00director.rpy:1639
|
||||
old "Remove"
|
||||
new "Emoveray"
|
||||
|
||||
# renpy/common/00director.rpy:1697
|
||||
# renpy/common/00director.rpy:1674
|
||||
old "Statement:"
|
||||
new "Tatementsay:"
|
||||
|
||||
# renpy/common/00director.rpy:1718
|
||||
# renpy/common/00director.rpy:1695
|
||||
old "Tag:"
|
||||
new "Agtay:"
|
||||
|
||||
# renpy/common/00director.rpy:1734
|
||||
# renpy/common/00director.rpy:1711
|
||||
old "Attributes:"
|
||||
new "Ttributesaay:"
|
||||
|
||||
# renpy/common/00director.rpy:1745
|
||||
old "Click to toggle attribute, right click to toggle negative attribute."
|
||||
new "Lickcay otay oggletay attributeay, ightray ickclay otay oggletay egativenay attributeay."
|
||||
|
||||
# renpy/common/00director.rpy:1757
|
||||
# renpy/common/00director.rpy:1729
|
||||
old "Transforms:"
|
||||
new "Ransformstay:"
|
||||
|
||||
# renpy/common/00director.rpy:1768
|
||||
old "Click to set transform, right click to add to transform list."
|
||||
new "Lickcay otay etsay ansformtray, ightray ickclay otay adday otay ansformtray istlay."
|
||||
|
||||
# renpy/common/00director.rpy:1780
|
||||
# renpy/common/00director.rpy:1748
|
||||
old "Behind:"
|
||||
new "Ehindbay:"
|
||||
|
||||
# renpy/common/00director.rpy:1789
|
||||
old "Click to set, right click to add to behind list."
|
||||
new "Lickcay otay etsay, ightray ickclay otay adday otay ehindbay istlay."
|
||||
|
||||
# renpy/common/00director.rpy:1801
|
||||
# renpy/common/00director.rpy:1767
|
||||
old "Transition:"
|
||||
new "Ransitiontay:"
|
||||
|
||||
# renpy/common/00director.rpy:1819
|
||||
# renpy/common/00director.rpy:1785
|
||||
old "Channel:"
|
||||
new "Hannelcay:"
|
||||
|
||||
# renpy/common/00director.rpy:1837
|
||||
# renpy/common/00director.rpy:1803
|
||||
old "Audio Filename:"
|
||||
new "Udioaay Ilenamefay:"
|
||||
|
||||
# renpy/common/00gui.rpy:446
|
||||
# renpy/common/00gui.rpy:435
|
||||
old "Are you sure?"
|
||||
new "Reaay ouyay uresay?"
|
||||
|
||||
# renpy/common/00gui.rpy:447
|
||||
# renpy/common/00gui.rpy:436
|
||||
old "Are you sure you want to delete this save?"
|
||||
new "Reaay ouyay uresay ouyay antway otay eleteday histay avesay?"
|
||||
|
||||
# renpy/common/00gui.rpy:448
|
||||
# renpy/common/00gui.rpy:437
|
||||
old "Are you sure you want to overwrite your save?"
|
||||
new "Reaay ouyay uresay ouyay antway otay overwriteay ouryay avesay?"
|
||||
|
||||
# renpy/common/00gui.rpy:449
|
||||
# renpy/common/00gui.rpy:438
|
||||
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
|
||||
new "Oadinglay illway oselay unsaveday rogresspay.\nReaay ouyay uresay ouyay antway otay oday histay?"
|
||||
|
||||
# renpy/common/00gui.rpy:450
|
||||
# renpy/common/00gui.rpy:439
|
||||
old "Are you sure you want to quit?"
|
||||
new "Reaay ouyay uresay ouyay antway otay uitqay?"
|
||||
|
||||
# renpy/common/00gui.rpy:451
|
||||
# renpy/common/00gui.rpy:440
|
||||
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
|
||||
new "Reaay ouyay uresay ouyay antway otay eturnray otay hetay ainmay enumay?\nHistay illway oselay unsaveday rogresspay."
|
||||
|
||||
# renpy/common/00gui.rpy:452
|
||||
# renpy/common/00gui.rpy:441
|
||||
old "Are you sure you want to end the replay?"
|
||||
new "Reaay ouyay uresay ouyay antway otay enday hetay eplayray?"
|
||||
|
||||
# renpy/common/00gui.rpy:453
|
||||
# renpy/common/00gui.rpy:442
|
||||
old "Are you sure you want to begin skipping?"
|
||||
new "Reaay ouyay uresay ouyay antway otay eginbay kippingsay?"
|
||||
|
||||
# renpy/common/00gui.rpy:454
|
||||
# renpy/common/00gui.rpy:443
|
||||
old "Are you sure you want to skip to the next choice?"
|
||||
new "Reaay ouyay uresay ouyay antway otay kipsay otay hetay extnay oicechay?"
|
||||
|
||||
# renpy/common/00gui.rpy:455
|
||||
# renpy/common/00gui.rpy:444
|
||||
old "Are you sure you want to skip unseen dialogue to the next choice?"
|
||||
new "Reaay ouyay uresay ouyay antway otay kipsay unseenay ialogueday otay hetay extnay oicechay?"
|
||||
|
||||
# renpy/common/00gui.rpy:456
|
||||
old "This save was created on a different device. Maliciously constructed save files can harm your computer. Do you trust this save's creator and everyone who could have changed the file?"
|
||||
new "Histay avesay asway reatedcay onay aay ifferentday eviceday. Aliciouslymay onstructedcay avesay ilesfay ancay armhay ouryay omputercay. Oday ouyay usttray histay avesay'say reatorcay anday everyoneay howay ouldcay avehay angedchay hetay ilefay?"
|
||||
|
||||
# renpy/common/00gui.rpy:457
|
||||
old "Do you trust the device the save was created on? You should only choose yes if you are the device's sole user."
|
||||
new "Oday ouyay usttray hetay eviceday hetay avesay asway reatedcay onay? Ouyay ouldshay onlyay oosechay esyay ifay ouyay areay hetay eviceday'say olesay useray."
|
||||
|
||||
# renpy/common/00keymap.rpy:322
|
||||
# renpy/common/00keymap.rpy:310
|
||||
old "Failed to save screenshot as %s."
|
||||
new "Ailedfay otay avesay creenshotsay asay %say."
|
||||
|
||||
# renpy/common/00keymap.rpy:334
|
||||
# renpy/common/00keymap.rpy:322
|
||||
old "Saved screenshot as %s."
|
||||
new "Avedsay creenshotsay asay %say."
|
||||
|
||||
# renpy/common/00library.rpy:235
|
||||
# renpy/common/00library.rpy:211
|
||||
old "Skip Mode"
|
||||
new "Kipsay Odemay"
|
||||
|
||||
# renpy/common/00library.rpy:340
|
||||
# renpy/common/00library.rpy:297
|
||||
old "This program contains free software under a number of licenses, including the MIT License and GNU Lesser General Public License. A complete list of software, including links to full source code, can be found {a=https://www.renpy.org/l/license}here{/a}."
|
||||
new "Histay rogrampay ontainscay eefray oftwaresay underay aay umbernay ofay icenseslay, includingay hetay Itmay Icenselay anday Nugay Esserlay Eneralgay Ublicpay Icenselay. Aay ompletecay istlay ofay oftwaresay, includingay inkslay otay ullfay ourcesay odecay, ancay ebay oundfay {a=https://www.renpy.org/l/license}erehay{/a}."
|
||||
|
||||
# renpy/common/00preferences.rpy:271
|
||||
# renpy/common/00preferences.rpy:263
|
||||
old "display"
|
||||
new "isplayday"
|
||||
|
||||
# renpy/common/00preferences.rpy:283
|
||||
# renpy/common/00preferences.rpy:275
|
||||
old "transitions"
|
||||
new "ansitionstray"
|
||||
|
||||
# renpy/common/00preferences.rpy:292
|
||||
# renpy/common/00preferences.rpy:284
|
||||
old "skip transitions"
|
||||
new "kipsay ansitionstray"
|
||||
|
||||
# renpy/common/00preferences.rpy:294
|
||||
# renpy/common/00preferences.rpy:286
|
||||
old "video sprites"
|
||||
new "ideovay pritessay"
|
||||
|
||||
# renpy/common/00preferences.rpy:303
|
||||
# renpy/common/00preferences.rpy:295
|
||||
old "show empty window"
|
||||
new "owshay emptyay indowway"
|
||||
|
||||
# renpy/common/00preferences.rpy:312
|
||||
# renpy/common/00preferences.rpy:304
|
||||
old "text speed"
|
||||
new "exttay peedsay"
|
||||
|
||||
# renpy/common/00preferences.rpy:320
|
||||
# renpy/common/00preferences.rpy:312
|
||||
old "joystick"
|
||||
new "oystickjay"
|
||||
|
||||
# renpy/common/00preferences.rpy:320
|
||||
# renpy/common/00preferences.rpy:312
|
||||
old "joystick..."
|
||||
new "oystickjay..."
|
||||
|
||||
# renpy/common/00preferences.rpy:327
|
||||
# renpy/common/00preferences.rpy:319
|
||||
old "skip"
|
||||
new "kipsay"
|
||||
|
||||
# renpy/common/00preferences.rpy:330
|
||||
# renpy/common/00preferences.rpy:322
|
||||
old "skip unseen [text]"
|
||||
new "kipsay unseenay [text]"
|
||||
|
||||
# renpy/common/00preferences.rpy:335
|
||||
# renpy/common/00preferences.rpy:327
|
||||
old "skip unseen text"
|
||||
new "kipsay unseenay exttay"
|
||||
|
||||
# renpy/common/00preferences.rpy:337
|
||||
# renpy/common/00preferences.rpy:329
|
||||
old "begin skipping"
|
||||
new "eginbay kippingsay"
|
||||
|
||||
# renpy/common/00preferences.rpy:341
|
||||
# renpy/common/00preferences.rpy:333
|
||||
old "after choices"
|
||||
new "afteray oiceschay"
|
||||
|
||||
# renpy/common/00preferences.rpy:348
|
||||
# renpy/common/00preferences.rpy:340
|
||||
old "skip after choices"
|
||||
new "kipsay afteray oiceschay"
|
||||
|
||||
# renpy/common/00preferences.rpy:350
|
||||
# renpy/common/00preferences.rpy:342
|
||||
old "auto-forward time"
|
||||
new "autoay-orwardfay imetay"
|
||||
|
||||
# renpy/common/00preferences.rpy:364
|
||||
# renpy/common/00preferences.rpy:356
|
||||
old "auto-forward"
|
||||
new "autoay-orwardfay"
|
||||
|
||||
# renpy/common/00preferences.rpy:371
|
||||
# renpy/common/00preferences.rpy:363
|
||||
old "Auto forward"
|
||||
new "Utoaay orwardfay"
|
||||
|
||||
# renpy/common/00preferences.rpy:374
|
||||
# renpy/common/00preferences.rpy:366
|
||||
old "auto-forward after click"
|
||||
new "autoay-orwardfay afteray ickclay"
|
||||
|
||||
# renpy/common/00preferences.rpy:383
|
||||
# renpy/common/00preferences.rpy:375
|
||||
old "automatic move"
|
||||
new "automaticay ovemay"
|
||||
|
||||
# renpy/common/00preferences.rpy:392
|
||||
# renpy/common/00preferences.rpy:384
|
||||
old "wait for voice"
|
||||
new "aitway orfay oicevay"
|
||||
|
||||
# renpy/common/00preferences.rpy:401
|
||||
# renpy/common/00preferences.rpy:393
|
||||
old "voice sustain"
|
||||
new "oicevay ustainsay"
|
||||
|
||||
# renpy/common/00preferences.rpy:410
|
||||
# renpy/common/00preferences.rpy:402
|
||||
old "self voicing"
|
||||
new "elfsay oicingvay"
|
||||
|
||||
# renpy/common/00preferences.rpy:419
|
||||
# renpy/common/00preferences.rpy:411
|
||||
old "self voicing volume drop"
|
||||
new "elfsay oicingvay olumevay ropday"
|
||||
|
||||
# renpy/common/00preferences.rpy:427
|
||||
# renpy/common/00preferences.rpy:419
|
||||
old "clipboard voicing"
|
||||
new "ipboardclay oicingvay"
|
||||
|
||||
# renpy/common/00preferences.rpy:436
|
||||
# renpy/common/00preferences.rpy:428
|
||||
old "debug voicing"
|
||||
new "ebugday oicingvay"
|
||||
|
||||
# renpy/common/00preferences.rpy:445
|
||||
# renpy/common/00preferences.rpy:437
|
||||
old "emphasize audio"
|
||||
new "emphasizeay audioay"
|
||||
|
||||
# renpy/common/00preferences.rpy:454
|
||||
# renpy/common/00preferences.rpy:446
|
||||
old "rollback side"
|
||||
new "ollbackray idesay"
|
||||
|
||||
# renpy/common/00preferences.rpy:464
|
||||
# renpy/common/00preferences.rpy:456
|
||||
old "gl powersave"
|
||||
new "glay owersavepay"
|
||||
|
||||
# renpy/common/00preferences.rpy:470
|
||||
# renpy/common/00preferences.rpy:462
|
||||
old "gl framerate"
|
||||
new "glay ameratefray"
|
||||
|
||||
# renpy/common/00preferences.rpy:473
|
||||
# renpy/common/00preferences.rpy:465
|
||||
old "gl tearing"
|
||||
new "glay earingtay"
|
||||
|
||||
# renpy/common/00preferences.rpy:476
|
||||
# renpy/common/00preferences.rpy:468
|
||||
old "font transform"
|
||||
new "ontfay ansformtray"
|
||||
|
||||
# renpy/common/00preferences.rpy:479
|
||||
# renpy/common/00preferences.rpy:471
|
||||
old "font size"
|
||||
new "ontfay izesay"
|
||||
|
||||
# renpy/common/00preferences.rpy:487
|
||||
# renpy/common/00preferences.rpy:479
|
||||
old "font line spacing"
|
||||
new "ontfay inelay pacingsay"
|
||||
|
||||
# renpy/common/00preferences.rpy:495
|
||||
# renpy/common/00preferences.rpy:487
|
||||
old "system cursor"
|
||||
new "ystemsay ursorcay"
|
||||
|
||||
# renpy/common/00preferences.rpy:504
|
||||
# renpy/common/00preferences.rpy:496
|
||||
old "renderer menu"
|
||||
new "endererray enumay"
|
||||
|
||||
# renpy/common/00preferences.rpy:507
|
||||
# renpy/common/00preferences.rpy:499
|
||||
old "accessibility menu"
|
||||
new "accessibilityay enumay"
|
||||
|
||||
# renpy/common/00preferences.rpy:510
|
||||
# renpy/common/00preferences.rpy:502
|
||||
old "high contrast text"
|
||||
new "ighhay ontrastcay exttay"
|
||||
|
||||
# renpy/common/00preferences.rpy:519
|
||||
# renpy/common/00preferences.rpy:511
|
||||
old "audio when minimized"
|
||||
new "audioay henway inimizedmay"
|
||||
|
||||
# renpy/common/00preferences.rpy:528
|
||||
old "audio when unfocused"
|
||||
new "audioay henway unfocuseday"
|
||||
|
||||
# renpy/common/00preferences.rpy:537
|
||||
old "web cache preload"
|
||||
new "ebway achecay reloadpay"
|
||||
|
||||
# renpy/common/00preferences.rpy:552
|
||||
old "voice after game menu"
|
||||
new "oicevay afteray amegay enumay"
|
||||
|
||||
# renpy/common/00preferences.rpy:571
|
||||
# renpy/common/00preferences.rpy:531
|
||||
old "main volume"
|
||||
new "ainmay olumevay"
|
||||
|
||||
# renpy/common/00preferences.rpy:572
|
||||
# renpy/common/00preferences.rpy:532
|
||||
old "music volume"
|
||||
new "usicmay olumevay"
|
||||
|
||||
# renpy/common/00preferences.rpy:573
|
||||
# renpy/common/00preferences.rpy:533
|
||||
old "sound volume"
|
||||
new "oundsay olumevay"
|
||||
|
||||
# renpy/common/00preferences.rpy:574
|
||||
# renpy/common/00preferences.rpy:534
|
||||
old "voice volume"
|
||||
new "oicevay olumevay"
|
||||
|
||||
# renpy/common/00preferences.rpy:575
|
||||
# renpy/common/00preferences.rpy:535
|
||||
old "mute main"
|
||||
new "utemay ainmay"
|
||||
|
||||
# renpy/common/00preferences.rpy:576
|
||||
# renpy/common/00preferences.rpy:536
|
||||
old "mute music"
|
||||
new "utemay usicmay"
|
||||
|
||||
# renpy/common/00preferences.rpy:577
|
||||
# renpy/common/00preferences.rpy:537
|
||||
old "mute sound"
|
||||
new "utemay oundsay"
|
||||
|
||||
# renpy/common/00preferences.rpy:578
|
||||
# renpy/common/00preferences.rpy:538
|
||||
old "mute voice"
|
||||
new "utemay oicevay"
|
||||
|
||||
# renpy/common/00preferences.rpy:579
|
||||
# renpy/common/00preferences.rpy:539
|
||||
old "mute all"
|
||||
new "utemay allay"
|
||||
|
||||
# renpy/common/00preferences.rpy:653
|
||||
# renpy/common/00preferences.rpy:620
|
||||
old "Clipboard voicing enabled. Press 'shift+C' to disable."
|
||||
new "Lipboardcay oicingvay enableday. Resspay 'iftshay+Cay' otay isableday."
|
||||
|
||||
# renpy/common/00preferences.rpy:655
|
||||
# renpy/common/00preferences.rpy:622
|
||||
old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
|
||||
new "Elfsay-oicingvay ouldway aysay \"[renpy.display.tts.last]\". Resspay 'altay+iftshay+Vay' otay isableday."
|
||||
|
||||
# renpy/common/00preferences.rpy:657
|
||||
# renpy/common/00preferences.rpy:624
|
||||
old "Self-voicing enabled. Press 'v' to disable."
|
||||
new "Elfsay-oicingvay enableday. Resspay 'vay' otay isableday."
|
||||
|
||||
# renpy/common/00speechbubble.rpy:344
|
||||
old "Speech Bubble Editor"
|
||||
new "Peechsay Ubblebay Ditoreay"
|
||||
|
||||
# renpy/common/00speechbubble.rpy:349
|
||||
old "(hide)"
|
||||
new "(idehay)"
|
||||
|
||||
# renpy/common/00sync.rpy:70
|
||||
old "Sync downloaded."
|
||||
new "Yncsay ownloadedday."
|
||||
|
||||
# renpy/common/00sync.rpy:190
|
||||
old "Could not connect to the Ren'Py Sync server."
|
||||
new "Ouldcay otnay onnectcay otay hetay Enray'Ypay Yncsay erversay."
|
||||
|
||||
# renpy/common/00sync.rpy:192
|
||||
old "The Ren'Py Sync server timed out."
|
||||
new "Hetay Enray'Ypay Yncsay erversay imedtay outay."
|
||||
|
||||
# renpy/common/00sync.rpy:194
|
||||
old "An unknown error occurred while connecting to the Ren'Py Sync server."
|
||||
new "Naay unknownay erroray occurreday hileway onnectingcay otay hetay Enray'Ypay Yncsay erversay."
|
||||
|
||||
# renpy/common/00sync.rpy:267
|
||||
old "The Ren'Py Sync server does not have a copy of this sync. The sync ID may be invalid, or it may have timed out."
|
||||
new "Hetay Enray'Ypay Yncsay erversay oesday otnay avehay aay opycay ofay histay yncsay. Hetay yncsay Diay aymay ebay invaliday, oray itay aymay avehay imedtay outay."
|
||||
|
||||
# renpy/common/00sync.rpy:409
|
||||
old "Please enter the sync ID you generated.\nNever enter a sync ID you didn't create yourself."
|
||||
new "Leasepay enteray hetay yncsay Diay ouyay eneratedgay.\nEvernay enteray aay yncsay Diay ouyay idnday'tay reatecay ourselfyay."
|
||||
|
||||
# renpy/common/00sync.rpy:428
|
||||
old "The sync ID is not in the correct format."
|
||||
new "Hetay yncsay Diay isay otnay inay hetay orrectcay ormatfay."
|
||||
|
||||
# renpy/common/00sync.rpy:448
|
||||
old "The sync could not be decrypted."
|
||||
new "Hetay yncsay ouldcay otnay ebay ecryptedday."
|
||||
|
||||
# renpy/common/00sync.rpy:471
|
||||
old "The sync belongs to a different game."
|
||||
new "Hetay yncsay elongsbay otay aay ifferentday amegay."
|
||||
|
||||
# renpy/common/00sync.rpy:476
|
||||
old "The sync contains a file with an invalid name."
|
||||
new "Hetay yncsay ontainscay aay ilefay ithway anay invaliday amenay."
|
||||
|
||||
# renpy/common/00sync.rpy:529
|
||||
old "This will upload your saves to the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nDo you want to continue?"
|
||||
new "Histay illway uploaday ouryay avessay otay hetay {a=https://sync.renpy.org}Enray'Ypay Yncsay Erversay{/a}.\nOday ouyay antway otay ontinuecay?"
|
||||
|
||||
# renpy/common/00sync.rpy:558
|
||||
old "Enter Sync ID"
|
||||
new "Ntereay Yncsay Diay"
|
||||
|
||||
# renpy/common/00sync.rpy:569
|
||||
old "This will contact the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}."
|
||||
new "Histay illway ontactcay hetay {a=https://sync.renpy.org}Enray'Ypay Yncsay Erversay{/a}."
|
||||
|
||||
# renpy/common/00sync.rpy:596
|
||||
old "Sync Success"
|
||||
new "Yncsay Uccesssay"
|
||||
|
||||
# renpy/common/00sync.rpy:599
|
||||
old "The Sync ID is:"
|
||||
new "Hetay Yncsay Diay isay:"
|
||||
|
||||
# renpy/common/00sync.rpy:605
|
||||
old "You can use this ID to download your save on another device.\nThis sync will expire in an hour.\nRen'Py Sync is supported by {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}."
|
||||
new "Ouyay ancay useay histay Diay otay ownloadday ouryay avesay onay anotheray eviceday.\nHistay yncsay illway expireay inay anay ourhay.\nEnray'Ypay Yncsay isay upportedsay ybay {a=https://www.renpy.org/sponsors.html}Enray'Ypay'say Ponsorssay{/a}."
|
||||
|
||||
# renpy/common/00sync.rpy:609
|
||||
old "Continue"
|
||||
new "Ontinuecay"
|
||||
|
||||
# renpy/common/00sync.rpy:631
|
||||
old "Sync Error"
|
||||
new "Yncsay Rroreay"
|
||||
|
||||
# renpy/common/00iap.rpy:219
|
||||
old "Contacting App Store\nPlease Wait..."
|
||||
new "Ontactingcay Ppaay Toresay\nLeasepay Aitway..."
|
||||
|
||||
# renpy/common/00updater.rpy:419
|
||||
# renpy/common/00updater.rpy:390
|
||||
old "The Ren'Py Updater is not supported on mobile devices."
|
||||
new "Hetay Enray'Ypay Pdateruay isay otnay upportedsay onay obilemay evicesday."
|
||||
|
||||
# renpy/common/00updater.rpy:548
|
||||
# renpy/common/00updater.rpy:519
|
||||
old "An error is being simulated."
|
||||
new "Naay erroray isay eingbay imulatedsay."
|
||||
|
||||
# renpy/common/00updater.rpy:738
|
||||
# renpy/common/00updater.rpy:703
|
||||
old "Either this project does not support updating, or the update status file was deleted."
|
||||
new "Ithereay histay rojectpay oesday otnay upportsay updatingay, oray hetay updateay atusstay ilefay asway eletedday."
|
||||
|
||||
# renpy/common/00updater.rpy:752
|
||||
# renpy/common/00updater.rpy:717
|
||||
old "This account does not have permission to perform an update."
|
||||
new "Histay accountay oesday otnay avehay ermissionpay otay erformpay anay updateay."
|
||||
|
||||
# renpy/common/00updater.rpy:755
|
||||
# renpy/common/00updater.rpy:720
|
||||
old "This account does not have permission to write the update log."
|
||||
new "Histay accountay oesday otnay avehay ermissionpay otay riteway hetay updateay oglay."
|
||||
|
||||
# renpy/common/00updater.rpy:783
|
||||
# renpy/common/00updater.rpy:748
|
||||
old "Could not verify update signature."
|
||||
new "Ouldcay otnay erifyvay updateay ignaturesay."
|
||||
|
||||
# renpy/common/00updater.rpy:1084
|
||||
# renpy/common/00updater.rpy:1049
|
||||
old "The update file was not downloaded."
|
||||
new "Hetay updateay ilefay asway otnay ownloadedday."
|
||||
|
||||
# renpy/common/00updater.rpy:1102
|
||||
# renpy/common/00updater.rpy:1067
|
||||
old "The update file does not have the correct digest - it may have been corrupted."
|
||||
new "Hetay updateay ilefay oesday otnay avehay hetay orrectcay igestday - itay aymay avehay eenbay orruptedcay."
|
||||
|
||||
# renpy/common/00updater.rpy:1252
|
||||
# renpy/common/00updater.rpy:1217
|
||||
old "While unpacking {}, unknown type {}."
|
||||
new "Hileway unpackingay {}, unknownay ypetay {}."
|
||||
|
||||
# renpy/common/00updater.rpy:1624
|
||||
# renpy/common/00updater.rpy:1589
|
||||
old "Updater"
|
||||
new "Pdateruay"
|
||||
|
||||
# renpy/common/00updater.rpy:1635
|
||||
# renpy/common/00updater.rpy:1600
|
||||
old "This program is up to date."
|
||||
new "Histay rogrampay isay upay otay ateday."
|
||||
|
||||
# renpy/common/00updater.rpy:1637
|
||||
# renpy/common/00updater.rpy:1602
|
||||
old "[u.version] is available. Do you want to install it?"
|
||||
new "[u.version] isay availableay. Oday ouyay antway otay installay itay?"
|
||||
|
||||
# renpy/common/00updater.rpy:1639
|
||||
# renpy/common/00updater.rpy:1604
|
||||
old "Preparing to download the updates."
|
||||
new "Reparingpay otay ownloadday hetay updatesay."
|
||||
|
||||
# renpy/common/00updater.rpy:1641
|
||||
# renpy/common/00updater.rpy:1606
|
||||
old "Downloading the updates."
|
||||
new "Ownloadingday hetay updatesay."
|
||||
|
||||
# renpy/common/00updater.rpy:1643
|
||||
# renpy/common/00updater.rpy:1608
|
||||
old "Unpacking the updates."
|
||||
new "Npackinguay hetay updatesay."
|
||||
|
||||
# renpy/common/00updater.rpy:1647
|
||||
# renpy/common/00updater.rpy:1612
|
||||
old "The updates have been installed. The program will restart."
|
||||
new "Hetay updatesay avehay eenbay installeday. Hetay rogrampay illway estartray."
|
||||
|
||||
# renpy/common/00updater.rpy:1649
|
||||
# renpy/common/00updater.rpy:1614
|
||||
old "The updates have been installed."
|
||||
new "Hetay updatesay avehay eenbay installeday."
|
||||
|
||||
# renpy/common/00updater.rpy:1651
|
||||
# renpy/common/00updater.rpy:1616
|
||||
old "The updates were cancelled."
|
||||
new "Hetay updatesay ereway ancelledcay."
|
||||
|
||||
|
||||
@@ -22,94 +22,90 @@ translate piglatin strings:
|
||||
new "Ariablevay Iewervay"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:51
|
||||
old "Persistent Viewer"
|
||||
new "Ersistentpay Iewervay"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:53
|
||||
old "Image Location Picker"
|
||||
new "Mageiay Ocationlay Ickerpay"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:55
|
||||
# renpy/common/_developer/developer.rpym:53
|
||||
old "Filename List"
|
||||
new "Ilenamefay Istlay"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:59
|
||||
# renpy/common/_developer/developer.rpym:57
|
||||
old "Show Image Load Log (F4)"
|
||||
new "Howsay Mageiay Oadlay Oglay (4fay)"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:62
|
||||
# renpy/common/_developer/developer.rpym:60
|
||||
old "Hide Image Load Log (F4)"
|
||||
new "Idehay Mageiay Oadlay Oglay (4fay)"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:65
|
||||
# renpy/common/_developer/developer.rpym:63
|
||||
old "Image Attributes"
|
||||
new "Mageiay Ttributesaay"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:70
|
||||
old "Speech Bubble Editor (Shift+B)"
|
||||
new "Peechsay Ubblebay Ditoreay (Hiftsay+Bay)"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:97
|
||||
# renpy/common/_developer/developer.rpym:90
|
||||
old "[name] [attributes] (hidden)"
|
||||
new "[name] [attributes] (iddenhay)"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:101
|
||||
# renpy/common/_developer/developer.rpym:94
|
||||
old "[name] [attributes]"
|
||||
new "[name] [attributes]"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:151
|
||||
# renpy/common/_developer/developer.rpym:143
|
||||
old "Nothing to inspect."
|
||||
new "Othingnay otay inspectay."
|
||||
|
||||
# renpy/common/_developer/developer.rpym:162
|
||||
# renpy/common/_developer/developer.rpym:154
|
||||
old "Hide deleted"
|
||||
new "Idehay eletedday"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:162
|
||||
# renpy/common/_developer/developer.rpym:154
|
||||
old "Show deleted"
|
||||
new "Howsay eletedday"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:318
|
||||
old "Rectangle copied to clipboard."
|
||||
new "Ectangleray opiedcay otay ipboardclay."
|
||||
# renpy/common/_developer/developer.rpym:278
|
||||
old "Return to the developer menu"
|
||||
new "Eturnray otay hetay eveloperday enumay"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:321
|
||||
old "Position copied to clipboard."
|
||||
new "Ositionpay opiedcay otay ipboardclay."
|
||||
|
||||
# renpy/common/_developer/developer.rpym:333
|
||||
# renpy/common/_developer/developer.rpym:443
|
||||
old "Rectangle: %r"
|
||||
new "Ectangleray: %ray"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:336
|
||||
# renpy/common/_developer/developer.rpym:448
|
||||
old "Mouse position: %r"
|
||||
new "Ousemay ositionpay: %ray"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:341
|
||||
# renpy/common/_developer/developer.rpym:453
|
||||
old "Right-click or escape to quit."
|
||||
new "Ightray-ickclay oray escapeay otay uitqay."
|
||||
|
||||
# renpy/common/_developer/developer.rpym:389
|
||||
# renpy/common/_developer/developer.rpym:485
|
||||
old "Rectangle copied to clipboard."
|
||||
new "Ectangleray opiedcay otay ipboardclay."
|
||||
|
||||
# renpy/common/_developer/developer.rpym:488
|
||||
old "Position copied to clipboard."
|
||||
new "Ositionpay opiedcay otay ipboardclay."
|
||||
|
||||
# renpy/common/_developer/developer.rpym:506
|
||||
old "Type to filter: "
|
||||
new "Ypetay otay ilterfay: "
|
||||
|
||||
# renpy/common/_developer/developer.rpym:507
|
||||
# renpy/common/_developer/developer.rpym:631
|
||||
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
|
||||
new "Exturestay: [tex_count] ([tex_size_mb:.1f] Bmay)"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:511
|
||||
# renpy/common/_developer/developer.rpym:635
|
||||
old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
|
||||
new "Mageiay achecay: [cache_pct:.1f]% ([cache_size_mb:.1f] Bmay)"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:521
|
||||
# renpy/common/_developer/developer.rpym:645
|
||||
old "✔ "
|
||||
new "✔ "
|
||||
|
||||
# renpy/common/_developer/developer.rpym:524
|
||||
# renpy/common/_developer/developer.rpym:648
|
||||
old "✘ "
|
||||
new "✘ "
|
||||
|
||||
# renpy/common/_developer/developer.rpym:529
|
||||
# renpy/common/_developer/developer.rpym:653
|
||||
old "\n{color=#cfc}✔ predicted image (good){/color}\n{color=#fcc}✘ unpredicted image (bad){/color}\n{color=#fff}Drag to move.{/color}"
|
||||
new "\n{color=#cfc}✔ redictedpay imageay (oodgay){/color}\n{color=#fcc}✘ unpredicteday imageay (adbay){/color}\n{color=#fff}Ragday otay ovemay.{/color}"
|
||||
|
||||
@@ -149,91 +145,87 @@ translate piglatin strings:
|
||||
old "<repr() failed>"
|
||||
new "<eprray() ailedfay>"
|
||||
|
||||
# renpy/common/00console.rpy:533
|
||||
# renpy/common/00console.rpy:492
|
||||
old "Press <esc> to exit console. Type help for help.\n"
|
||||
new "Resspay <escay> otay exitay onsolecay. Ypetay elphay orfay elphay.\n"
|
||||
|
||||
# renpy/common/00console.rpy:537
|
||||
# renpy/common/00console.rpy:496
|
||||
old "Ren'Py script enabled."
|
||||
new "Enray'Ypay criptsay enableday."
|
||||
|
||||
# renpy/common/00console.rpy:539
|
||||
# renpy/common/00console.rpy:498
|
||||
old "Ren'Py script disabled."
|
||||
new "Enray'Ypay criptsay isabledday."
|
||||
|
||||
# renpy/common/00console.rpy:789
|
||||
old "help: show this help\n help <expr>: show signature and documentation of <expr>"
|
||||
new "elphay: owshay histay elphay\n elphay <expray>: owshay ignaturesay anday ocumentationday ofay <expray>"
|
||||
# renpy/common/00console.rpy:747
|
||||
old "help: show this help"
|
||||
new "elphay: owshay histay elphay"
|
||||
|
||||
# renpy/common/00console.rpy:813
|
||||
old "Help may display undocumented functions. Please check that the function or\nclass you want to use is documented.\n\n"
|
||||
new "Elphay aymay isplayday undocumenteday unctionsfay. Leasepay eckchay hattay hetay unctionfay oray\nassclay ouyay antway otay useay isay ocumentedday.\n\n"
|
||||
|
||||
# renpy/common/00console.rpy:822
|
||||
# renpy/common/00console.rpy:752
|
||||
old "commands:\n"
|
||||
new "ommandscay:\n"
|
||||
|
||||
# renpy/common/00console.rpy:832
|
||||
# renpy/common/00console.rpy:762
|
||||
old " <renpy script statement>: run the statement\n"
|
||||
new " <enpyray criptsay atementstay>: unray hetay atementstay\n"
|
||||
|
||||
# renpy/common/00console.rpy:834
|
||||
# renpy/common/00console.rpy:764
|
||||
old " <python expression or statement>: run the expression or statement"
|
||||
new " <ythonpay expressionay oray atementstay>: unray hetay expressionay oray atementstay"
|
||||
|
||||
# renpy/common/00console.rpy:842
|
||||
# renpy/common/00console.rpy:772
|
||||
old "clear: clear the console history"
|
||||
new "earclay: earclay hetay onsolecay istoryhay"
|
||||
|
||||
# renpy/common/00console.rpy:846
|
||||
# renpy/common/00console.rpy:776
|
||||
old "exit: exit the console"
|
||||
new "exitay: exitay hetay onsolecay"
|
||||
|
||||
# renpy/common/00console.rpy:854
|
||||
# renpy/common/00console.rpy:784
|
||||
old "stack: print the return stack"
|
||||
new "ackstay: rintpay hetay eturnray ackstay"
|
||||
|
||||
# renpy/common/00console.rpy:876
|
||||
# renpy/common/00console.rpy:806
|
||||
old "load <slot>: loads the game from slot"
|
||||
new "oadlay <otslay>: oadslay hetay amegay omfray otslay"
|
||||
|
||||
# renpy/common/00console.rpy:889
|
||||
# renpy/common/00console.rpy:819
|
||||
old "save <slot>: saves the game in slot"
|
||||
new "avesay <otslay>: avessay hetay amegay inay otslay"
|
||||
|
||||
# renpy/common/00console.rpy:900
|
||||
# renpy/common/00console.rpy:830
|
||||
old "reload: reloads the game, refreshing the scripts"
|
||||
new "eloadray: eloadsray hetay amegay, efreshingray hetay criptssay"
|
||||
|
||||
# renpy/common/00console.rpy:908
|
||||
# renpy/common/00console.rpy:838
|
||||
old "watch <expression>: watch a python expression\n watch short: makes the representation of traced expressions short (default)\n watch long: makes the representation of traced expressions as is"
|
||||
new "atchway <expressionay>: atchway aay ythonpay expressionay\n atchway ortshay: akesmay hetay epresentationray ofay acedtray expressionsay ortshay (efaultday)\n atchway onglay: akesmay hetay epresentationray ofay acedtray expressionsay asay isay"
|
||||
|
||||
# renpy/common/00console.rpy:945
|
||||
# renpy/common/00console.rpy:875
|
||||
old "unwatch <expression>: stop watching an expression"
|
||||
new "unwatchay <expressionay>: opstay atchingway anay expressionay"
|
||||
|
||||
# renpy/common/00console.rpy:991
|
||||
# renpy/common/00console.rpy:918
|
||||
old "unwatchall: stop watching all expressions"
|
||||
new "unwatchallay: opstay atchingway allay expressionsay"
|
||||
|
||||
# renpy/common/00console.rpy:1012
|
||||
# renpy/common/00console.rpy:939
|
||||
old "jump <label>: jumps to label"
|
||||
new "umpjay <abellay>: umpsjay otay abellay"
|
||||
|
||||
# renpy/common/00console.rpy:1028
|
||||
# renpy/common/00console.rpy:955
|
||||
old "short: Shorten the representation of objects on the console (default)."
|
||||
new "ortshay: Hortensay hetay epresentationray ofay objectsay onay hetay onsolecay (efaultday)."
|
||||
|
||||
# renpy/common/00console.rpy:1032
|
||||
# renpy/common/00console.rpy:959
|
||||
old "long: Print the full representation of objects on the console."
|
||||
new "onglay: Rintpay hetay ullfay epresentationray ofay objectsay onay hetay onsolecay."
|
||||
|
||||
# renpy/common/00console.rpy:1036
|
||||
# renpy/common/00console.rpy:963
|
||||
old "escape: Enables escaping of unicode symbols in unicode strings."
|
||||
new "escapeay: Nableseay escapingay ofay unicodeay ymbolssay inay unicodeay ringsstay."
|
||||
|
||||
# renpy/common/00console.rpy:1040
|
||||
# renpy/common/00console.rpy:967
|
||||
old "unescape: Disables escaping of unicode symbols in unicode strings and print it as is (default)."
|
||||
new "unescapeay: Isablesday escapingay ofay unicodeay ymbolssay inay unicodeay ringsstay anday rintpay itay asay isay (efaultday)."
|
||||
|
||||
|
||||
@@ -129,75 +129,75 @@ translate piglatin strings:
|
||||
old "Back (B)"
|
||||
new "Ackbay (Bay)"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:555
|
||||
# renpy/common/_errorhandling.rpym:553
|
||||
old "Open"
|
||||
new "Penoay"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:557
|
||||
# renpy/common/_errorhandling.rpym:555
|
||||
old "Opens the traceback.txt file in a text editor."
|
||||
new "Pensoay hetay acebacktray.xttay ilefay inay aay exttay editoray."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:559
|
||||
# renpy/common/_errorhandling.rpym:557
|
||||
old "Copy BBCode"
|
||||
new "Opycay Bcodebay"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:561
|
||||
# renpy/common/_errorhandling.rpym:559
|
||||
old "Copies the traceback.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/."
|
||||
new "Opiescay hetay acebacktray.xttay ilefay otay hetay ipboardclay asay Bcodebay orfay orumsfay ikelay ttpshay://emmasoftlay.enairay.usay/."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:563
|
||||
# renpy/common/_errorhandling.rpym:561
|
||||
old "Copy Markdown"
|
||||
new "Opycay Arkdownmay"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:565
|
||||
# renpy/common/_errorhandling.rpym:563
|
||||
old "Copies the traceback.txt file to the clipboard as Markdown for Discord."
|
||||
new "Opiescay hetay acebacktray.xttay ilefay otay hetay ipboardclay asay Arkdownmay orfay Iscordday."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:594
|
||||
# renpy/common/_errorhandling.rpym:592
|
||||
old "An exception has occurred."
|
||||
new "Naay exceptionay ashay occurreday."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:617
|
||||
# renpy/common/_errorhandling.rpym:615
|
||||
old "Rollback"
|
||||
new "Ollbackray"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:619
|
||||
# renpy/common/_errorhandling.rpym:617
|
||||
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
|
||||
new "Ttemptsaay aay ollray ackbay otay aay riorpay imetay, allowingay ouyay otay avesay oray oosechay aay ifferentday oicechay."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:622
|
||||
# renpy/common/_errorhandling.rpym:620
|
||||
old "Ignore"
|
||||
new "Gnoreiay"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:626
|
||||
# renpy/common/_errorhandling.rpym:624
|
||||
old "Ignores the exception, allowing you to continue."
|
||||
new "Gnoresiay hetay exceptionay, allowingay ouyay otay ontinuecay."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:628
|
||||
# renpy/common/_errorhandling.rpym:626
|
||||
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
|
||||
new "Gnoresiay hetay exceptionay, allowingay ouyay otay ontinuecay. Histay oftenay eadslay otay additionalay errorsay."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:632
|
||||
# renpy/common/_errorhandling.rpym:630
|
||||
old "Reload"
|
||||
new "Eloadray"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:634
|
||||
# renpy/common/_errorhandling.rpym:632
|
||||
old "Reloads the game from disk, saving and restoring game state if possible."
|
||||
new "Eloadsray hetay amegay omfray iskday, avingsay anday estoringray amegay atestay ifay ossiblepay."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:637
|
||||
# renpy/common/_errorhandling.rpym:635
|
||||
old "Console"
|
||||
new "Onsolecay"
|
||||
|
||||
# renpy/common/_errorhandling.rpym:639
|
||||
# renpy/common/_errorhandling.rpym:637
|
||||
old "Opens a console to allow debugging the problem."
|
||||
new "Pensoay aay onsolecay otay alloway ebuggingday hetay roblempay."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:652
|
||||
# renpy/common/_errorhandling.rpym:650
|
||||
old "Quits the game."
|
||||
new "Uitsqay hetay amegay."
|
||||
|
||||
# renpy/common/_errorhandling.rpym:673
|
||||
# renpy/common/_errorhandling.rpym:671
|
||||
old "Parsing the script failed."
|
||||
new "Arsingpay hetay criptsay ailedfay."
|
||||
|
||||
|
||||
+105
-109
@@ -13,427 +13,423 @@ translate piglatin strings:
|
||||
old "## Calling gui.init resets the styles to sensible default values, and sets the width and height of the game."
|
||||
new "## Allingcay uigay.initay esetsray hetay ylesstay otay ensiblesay efaultday aluesvay, anday etssay hetay idthway anday eighthay ofay hetay amegay."
|
||||
|
||||
# gui/game/gui.rpy:14
|
||||
old "## Enable checks for invalid or unstable properties in screens or transforms"
|
||||
new "## Nableeay eckschay orfay invaliday oray unstableay ropertiespay inay creenssay oray ansformstray"
|
||||
|
||||
# gui/game/gui.rpy:19
|
||||
# gui/game/gui.rpy:17
|
||||
old "## GUI Configuration Variables"
|
||||
new "## Uigay Onfigurationcay Ariablesvay"
|
||||
|
||||
# gui/game/gui.rpy:23
|
||||
# gui/game/gui.rpy:21
|
||||
old "## Colors"
|
||||
new "## Olorscay"
|
||||
|
||||
# gui/game/gui.rpy:25
|
||||
# gui/game/gui.rpy:23
|
||||
old "## The colors of text in the interface."
|
||||
new "## Hetay olorscay ofay exttay inay hetay interfaceay."
|
||||
|
||||
# gui/game/gui.rpy:27
|
||||
# gui/game/gui.rpy:25
|
||||
old "## An accent color used throughout the interface to label and highlight text."
|
||||
new "## Naay accentay olorcay useday hroughouttay hetay interfaceay otay abellay anday ighlighthay exttay."
|
||||
|
||||
# gui/game/gui.rpy:31
|
||||
# gui/game/gui.rpy:29
|
||||
old "## The color used for a text button when it is neither selected nor hovered."
|
||||
new "## Hetay olorcay useday orfay aay exttay uttonbay henway itay isay eithernay electedsay ornay overedhay."
|
||||
|
||||
# gui/game/gui.rpy:34
|
||||
# gui/game/gui.rpy:32
|
||||
old "## The small color is used for small text, which needs to be brighter/darker to achieve the same effect."
|
||||
new "## Hetay mallsay olorcay isay useday orfay mallsay exttay, hichway eedsnay otay ebay ighterbray/arkerday otay achieveay hetay amesay effectay."
|
||||
|
||||
# gui/game/gui.rpy:38
|
||||
# gui/game/gui.rpy:36
|
||||
old "## The color that is used for buttons and bars that are hovered."
|
||||
new "## Hetay olorcay hattay isay useday orfay uttonsbay anday arsbay hattay areay overedhay."
|
||||
|
||||
# gui/game/gui.rpy:41
|
||||
# gui/game/gui.rpy:39
|
||||
old "## The color used for a text button when it is selected but not focused. A button is selected if it is the current screen or preference value."
|
||||
new "## Hetay olorcay useday orfay aay exttay uttonbay henway itay isay electedsay utbay otnay ocusedfay. Aay uttonbay isay electedsay ifay itay isay hetay urrentcay creensay oray referencepay aluevay."
|
||||
|
||||
# gui/game/gui.rpy:45
|
||||
# gui/game/gui.rpy:43
|
||||
old "## The color used for a text button when it cannot be selected."
|
||||
new "## Hetay olorcay useday orfay aay exttay uttonbay henway itay annotcay ebay electedsay."
|
||||
|
||||
# gui/game/gui.rpy:48
|
||||
# gui/game/gui.rpy:46
|
||||
old "## Colors used for the portions of bars that are not filled in. These are not used directly, but are used when re-generating bar image files."
|
||||
new "## Olorscay useday orfay hetay ortionspay ofay arsbay hattay areay otnay illedfay inay. Hesetay areay otnay useday irectlyday, utbay areay useday henway eray-eneratinggay arbay imageay ilesfay."
|
||||
|
||||
# gui/game/gui.rpy:53
|
||||
# gui/game/gui.rpy:51
|
||||
old "## The colors used for dialogue and menu choice text."
|
||||
new "## Hetay olorscay useday orfay ialogueday anday enumay oicechay exttay."
|
||||
|
||||
# gui/game/gui.rpy:58
|
||||
# gui/game/gui.rpy:56
|
||||
old "## Fonts and Font Sizes"
|
||||
new "## Ontsfay anday Ontfay Izessay"
|
||||
|
||||
# gui/game/gui.rpy:60
|
||||
# gui/game/gui.rpy:58
|
||||
old "## The font used for in-game text."
|
||||
new "## Hetay ontfay useday orfay inay-amegay exttay."
|
||||
|
||||
# gui/game/gui.rpy:63
|
||||
# gui/game/gui.rpy:61
|
||||
old "## The font used for character names."
|
||||
new "## Hetay ontfay useday orfay aracterchay amesnay."
|
||||
|
||||
# gui/game/gui.rpy:66
|
||||
# gui/game/gui.rpy:64
|
||||
old "## The font used for out-of-game text."
|
||||
new "## Hetay ontfay useday orfay outay-ofay-amegay exttay."
|
||||
|
||||
# gui/game/gui.rpy:69
|
||||
# gui/game/gui.rpy:67
|
||||
old "## The size of normal dialogue text."
|
||||
new "## Hetay izesay ofay ormalnay ialogueday exttay."
|
||||
|
||||
# gui/game/gui.rpy:72
|
||||
# gui/game/gui.rpy:70
|
||||
old "## The size of character names."
|
||||
new "## Hetay izesay ofay aracterchay amesnay."
|
||||
|
||||
# gui/game/gui.rpy:75
|
||||
# gui/game/gui.rpy:73
|
||||
old "## The size of text in the game's user interface."
|
||||
new "## Hetay izesay ofay exttay inay hetay amegay'say useray interfaceay."
|
||||
|
||||
# gui/game/gui.rpy:78
|
||||
# gui/game/gui.rpy:76
|
||||
old "## The size of labels in the game's user interface."
|
||||
new "## Hetay izesay ofay abelslay inay hetay amegay'say useray interfaceay."
|
||||
|
||||
# gui/game/gui.rpy:81
|
||||
# gui/game/gui.rpy:79
|
||||
old "## The size of text on the notify screen."
|
||||
new "## Hetay izesay ofay exttay onay hetay otifynay creensay."
|
||||
|
||||
# gui/game/gui.rpy:84
|
||||
# gui/game/gui.rpy:82
|
||||
old "## The size of the game's title."
|
||||
new "## Hetay izesay ofay hetay amegay'say itletay."
|
||||
|
||||
# gui/game/gui.rpy:88
|
||||
# gui/game/gui.rpy:86
|
||||
old "## Main and Game Menus"
|
||||
new "## Ainmay anday Amegay Enusmay"
|
||||
|
||||
# gui/game/gui.rpy:90
|
||||
# gui/game/gui.rpy:88
|
||||
old "## The images used for the main and game menus."
|
||||
new "## Hetay imagesay useday orfay hetay ainmay anday amegay enusmay."
|
||||
|
||||
# gui/game/gui.rpy:95
|
||||
# gui/game/gui.rpy:93
|
||||
old "## Dialogue"
|
||||
new "## Ialogueday"
|
||||
|
||||
# gui/game/gui.rpy:97
|
||||
# gui/game/gui.rpy:95
|
||||
old "## These variables control how dialogue is displayed on the screen one line at a time."
|
||||
new "## Hesetay ariablesvay ontrolcay owhay ialogueday isay isplayedday onay hetay creensay oneay inelay atay aay imetay."
|
||||
|
||||
# gui/game/gui.rpy:100
|
||||
# gui/game/gui.rpy:98
|
||||
old "## The height of the textbox containing dialogue."
|
||||
new "## Hetay eighthay ofay hetay extboxtay ontainingcay ialogueday."
|
||||
|
||||
# gui/game/gui.rpy:103
|
||||
# gui/game/gui.rpy:101
|
||||
old "## The placement of the textbox vertically on the screen. 0.0 is the top, 0.5 is center, and 1.0 is the bottom."
|
||||
new "## Hetay acementplay ofay hetay extboxtay erticallyvay onay hetay creensay. 0ay.0ay isay hetay optay, 0ay.5ay isay entercay, anday 1ay.0ay isay hetay ottombay."
|
||||
|
||||
# gui/game/gui.rpy:108
|
||||
# gui/game/gui.rpy:106
|
||||
old "## The placement of the speaking character's name, relative to the textbox. These can be a whole number of pixels from the left or top, or 0.5 to center."
|
||||
new "## Hetay acementplay ofay hetay peakingsay aracterchay'say amenay, elativeray otay hetay extboxtay. Hesetay ancay ebay aay holeway umbernay ofay ixelspay omfray hetay eftlay oray optay, oray 0ay.5ay otay entercay."
|
||||
|
||||
# gui/game/gui.rpy:113
|
||||
# gui/game/gui.rpy:111
|
||||
old "## The horizontal alignment of the character's name. This can be 0.0 for left-aligned, 0.5 for centered, and 1.0 for right-aligned."
|
||||
new "## Hetay orizontalhay alignmentay ofay hetay aracterchay'say amenay. Histay ancay ebay 0ay.0ay orfay eftlay-aligneday, 0ay.5ay orfay enteredcay, anday 1ay.0ay orfay ightray-aligneday."
|
||||
|
||||
# gui/game/gui.rpy:117
|
||||
# gui/game/gui.rpy:115
|
||||
old "## The width, height, and borders of the box containing the character's name, or None to automatically size it."
|
||||
new "## Hetay idthway, eighthay, anday ordersbay ofay hetay oxbay ontainingcay hetay aracterchay'say amenay, oray Onenay otay automaticallyay izesay itay."
|
||||
|
||||
# gui/game/gui.rpy:122
|
||||
# gui/game/gui.rpy:120
|
||||
old "## The borders of the box containing the character's name, in left, top, right, bottom order."
|
||||
new "## Hetay ordersbay ofay hetay oxbay ontainingcay hetay aracterchay'say amenay, inay eftlay, optay, ightray, ottombay orderay."
|
||||
|
||||
# gui/game/gui.rpy:126
|
||||
# gui/game/gui.rpy:124
|
||||
old "## If True, the background of the namebox will be tiled, if False, the background of the namebox will be scaled."
|
||||
new "## Fiay Ruetay, hetay ackgroundbay ofay hetay ameboxnay illway ebay iledtay, ifay Alsefay, hetay ackgroundbay ofay hetay ameboxnay illway ebay caledsay."
|
||||
|
||||
# gui/game/gui.rpy:131
|
||||
# gui/game/gui.rpy:129
|
||||
old "## The placement of dialogue relative to the textbox. These can be a whole number of pixels relative to the left or top side of the textbox, or 0.5 to center."
|
||||
new "## Hetay acementplay ofay ialogueday elativeray otay hetay extboxtay. Hesetay ancay ebay aay holeway umbernay ofay ixelspay elativeray otay hetay eftlay oray optay idesay ofay hetay extboxtay, oray 0ay.5ay otay entercay."
|
||||
|
||||
# gui/game/gui.rpy:137
|
||||
# gui/game/gui.rpy:135
|
||||
old "## The maximum width of dialogue text, in pixels."
|
||||
new "## Hetay aximummay idthway ofay ialogueday exttay, inay ixelspay."
|
||||
|
||||
# gui/game/gui.rpy:140
|
||||
# gui/game/gui.rpy:138
|
||||
old "## The horizontal alignment of the dialogue text. This can be 0.0 for left-aligned, 0.5 for centered, and 1.0 for right-aligned."
|
||||
new "## Hetay orizontalhay alignmentay ofay hetay ialogueday exttay. Histay ancay ebay 0ay.0ay orfay eftlay-aligneday, 0ay.5ay orfay enteredcay, anday 1ay.0ay orfay ightray-aligneday."
|
||||
|
||||
# gui/game/gui.rpy:145
|
||||
# gui/game/gui.rpy:143
|
||||
old "## Buttons"
|
||||
new "## Uttonsbay"
|
||||
|
||||
# gui/game/gui.rpy:147
|
||||
# gui/game/gui.rpy:145
|
||||
old "## These variables, along with the image files in gui/button, control aspects of how buttons are displayed."
|
||||
new "## Hesetay ariablesvay, alongay ithway hetay imageay ilesfay inay uigay/uttonbay, ontrolcay aspectsay ofay owhay uttonsbay areay isplayedday."
|
||||
|
||||
# gui/game/gui.rpy:150
|
||||
# gui/game/gui.rpy:148
|
||||
old "## The width and height of a button, in pixels. If None, Ren'Py computes a size."
|
||||
new "## Hetay idthway anday eighthay ofay aay uttonbay, inay ixelspay. Fiay Onenay, Enray'Ypay omputescay aay izesay."
|
||||
|
||||
# gui/game/gui.rpy:154
|
||||
# gui/game/gui.rpy:152
|
||||
old "## The borders on each side of the button, in left, top, right, bottom order."
|
||||
new "## Hetay ordersbay onay eachay idesay ofay hetay uttonbay, inay eftlay, optay, ightray, ottombay orderay."
|
||||
|
||||
# gui/game/gui.rpy:157
|
||||
# gui/game/gui.rpy:155
|
||||
old "## If True, the background image will be tiled. If False, the background image will be linearly scaled."
|
||||
new "## Fiay Ruetay, hetay ackgroundbay imageay illway ebay iledtay. Fiay Alsefay, hetay ackgroundbay imageay illway ebay inearlylay caledsay."
|
||||
|
||||
# gui/game/gui.rpy:161
|
||||
# gui/game/gui.rpy:159
|
||||
old "## The font used by the button."
|
||||
new "## Hetay ontfay useday ybay hetay uttonbay."
|
||||
|
||||
# gui/game/gui.rpy:164
|
||||
# gui/game/gui.rpy:162
|
||||
old "## The size of the text used by the button."
|
||||
new "## Hetay izesay ofay hetay exttay useday ybay hetay uttonbay."
|
||||
|
||||
# gui/game/gui.rpy:167
|
||||
# gui/game/gui.rpy:165
|
||||
old "## The color of button text in various states."
|
||||
new "## Hetay olorcay ofay uttonbay exttay inay ariousvay atesstay."
|
||||
|
||||
# gui/game/gui.rpy:173
|
||||
# gui/game/gui.rpy:171
|
||||
old "## The horizontal alignment of the button text. (0.0 is left, 0.5 is center, 1.0 is right)."
|
||||
new "## Hetay orizontalhay alignmentay ofay hetay uttonbay exttay. (0ay.0ay isay eftlay, 0ay.5ay isay entercay, 1ay.0ay isay ightray)."
|
||||
|
||||
# gui/game/gui.rpy:178
|
||||
# gui/game/gui.rpy:176
|
||||
old "## These variables override settings for different kinds of buttons. Please see the gui documentation for the kinds of buttons available, and what each is used for."
|
||||
new "## Hesetay ariablesvay overrideay ettingssay orfay ifferentday indskay ofay uttonsbay. Leasepay eesay hetay uigay ocumentationday orfay hetay indskay ofay uttonsbay availableay, anday hatway eachay isay useday orfay."
|
||||
|
||||
# gui/game/gui.rpy:182
|
||||
# gui/game/gui.rpy:180
|
||||
old "## These customizations are used by the default interface:"
|
||||
new "## Hesetay ustomizationscay areay useday ybay hetay efaultday interfaceay:"
|
||||
|
||||
# gui/game/gui.rpy:197
|
||||
# gui/game/gui.rpy:195
|
||||
old "## You can also add your own customizations, by adding properly-named variables. For example, you can uncomment the following line to set the width of a navigation button."
|
||||
new "## Ouyay ancay alsoay adday ouryay ownay ustomizationscay, ybay addingay roperlypay-amednay ariablesvay. Orfay exampleay, ouyay ancay uncommentay hetay ollowingfay inelay otay etsay hetay idthway ofay aay avigationnay uttonbay."
|
||||
|
||||
# gui/game/gui.rpy:204
|
||||
# gui/game/gui.rpy:202
|
||||
old "## Choice Buttons"
|
||||
new "## Hoicecay Uttonsbay"
|
||||
|
||||
# gui/game/gui.rpy:206
|
||||
# gui/game/gui.rpy:204
|
||||
old "## Choice buttons are used in the in-game menus."
|
||||
new "## Hoicecay uttonsbay areay useday inay hetay inay-amegay enusmay."
|
||||
|
||||
# gui/game/gui.rpy:220
|
||||
# gui/game/gui.rpy:218
|
||||
old "## File Slot Buttons"
|
||||
new "## Ilefay Lotsay Uttonsbay"
|
||||
|
||||
# gui/game/gui.rpy:222
|
||||
# gui/game/gui.rpy:220
|
||||
old "## A file slot button is a special kind of button. It contains a thumbnail image, and text describing the contents of the save slot. A save slot uses image files in gui/button, like the other kinds of buttons."
|
||||
new "## Aay ilefay otslay uttonbay isay aay pecialsay indkay ofay uttonbay. Tiay ontainscay aay humbnailtay imageay, anday exttay escribingday hetay ontentscay ofay hetay avesay otslay. Aay avesay otslay usesay imageay ilesfay inay uigay/uttonbay, ikelay hetay otheray indskay ofay uttonsbay."
|
||||
|
||||
# gui/game/gui.rpy:226
|
||||
# gui/game/gui.rpy:224
|
||||
old "## The save slot button."
|
||||
new "## Hetay avesay otslay uttonbay."
|
||||
|
||||
# gui/game/gui.rpy:236
|
||||
# gui/game/gui.rpy:234
|
||||
old "## The width and height of thumbnails used by the save slots."
|
||||
new "## Hetay idthway anday eighthay ofay humbnailstay useday ybay hetay avesay otsslay."
|
||||
|
||||
# gui/game/gui.rpy:240
|
||||
# gui/game/gui.rpy:238
|
||||
old "## The number of columns and rows in the grid of save slots."
|
||||
new "## Hetay umbernay ofay olumnscay anday owsray inay hetay idgray ofay avesay otsslay."
|
||||
|
||||
# gui/game/gui.rpy:245
|
||||
# gui/game/gui.rpy:243
|
||||
old "## Positioning and Spacing"
|
||||
new "## Ositioningpay anday Pacingsay"
|
||||
|
||||
# gui/game/gui.rpy:247
|
||||
# gui/game/gui.rpy:245
|
||||
old "## These variables control the positioning and spacing of various user interface elements."
|
||||
new "## Hesetay ariablesvay ontrolcay hetay ositioningpay anday pacingsay ofay ariousvay useray interfaceay elementsay."
|
||||
|
||||
# gui/game/gui.rpy:250
|
||||
# gui/game/gui.rpy:248
|
||||
old "## The position of the left side of the navigation buttons, relative to the left side of the screen."
|
||||
new "## Hetay ositionpay ofay hetay eftlay idesay ofay hetay avigationnay uttonsbay, elativeray otay hetay eftlay idesay ofay hetay creensay."
|
||||
|
||||
# gui/game/gui.rpy:254
|
||||
# gui/game/gui.rpy:252
|
||||
old "## The vertical position of the skip indicator."
|
||||
new "## Hetay erticalvay ositionpay ofay hetay kipsay indicatoray."
|
||||
|
||||
# gui/game/gui.rpy:257
|
||||
# gui/game/gui.rpy:255
|
||||
old "## The vertical position of the notify screen."
|
||||
new "## Hetay erticalvay ositionpay ofay hetay otifynay creensay."
|
||||
|
||||
# gui/game/gui.rpy:260
|
||||
# gui/game/gui.rpy:258
|
||||
old "## The spacing between menu choices."
|
||||
new "## Hetay pacingsay etweenbay enumay oiceschay."
|
||||
|
||||
# gui/game/gui.rpy:263
|
||||
# gui/game/gui.rpy:261
|
||||
old "## Buttons in the navigation section of the main and game menus."
|
||||
new "## Uttonsbay inay hetay avigationnay ectionsay ofay hetay ainmay anday amegay enusmay."
|
||||
|
||||
# gui/game/gui.rpy:266
|
||||
# gui/game/gui.rpy:264
|
||||
old "## Controls the amount of spacing between preferences."
|
||||
new "## Ontrolscay hetay amountay ofay pacingsay etweenbay referencespay."
|
||||
|
||||
# gui/game/gui.rpy:269
|
||||
# gui/game/gui.rpy:267
|
||||
old "## Controls the amount of spacing between preference buttons."
|
||||
new "## Ontrolscay hetay amountay ofay pacingsay etweenbay referencepay uttonsbay."
|
||||
|
||||
# gui/game/gui.rpy:272
|
||||
# gui/game/gui.rpy:270
|
||||
old "## The spacing between file page buttons."
|
||||
new "## Hetay pacingsay etweenbay ilefay agepay uttonsbay."
|
||||
|
||||
# gui/game/gui.rpy:275
|
||||
# gui/game/gui.rpy:273
|
||||
old "## The spacing between file slots."
|
||||
new "## Hetay pacingsay etweenbay ilefay otsslay."
|
||||
|
||||
# gui/game/gui.rpy:278
|
||||
# gui/game/gui.rpy:276
|
||||
old "## The position of the main menu text."
|
||||
new "## Hetay ositionpay ofay hetay ainmay enumay exttay."
|
||||
|
||||
# gui/game/gui.rpy:282
|
||||
# gui/game/gui.rpy:280
|
||||
old "## Frames"
|
||||
new "## Ramesfay"
|
||||
|
||||
# gui/game/gui.rpy:284
|
||||
# gui/game/gui.rpy:282
|
||||
old "## These variables control the look of frames that can contain user interface components when an overlay or window is not present."
|
||||
new "## Hesetay ariablesvay ontrolcay hetay ooklay ofay amesfray hattay ancay ontaincay useray interfaceay omponentscay henway anay overlayay oray indowway isay otnay resentpay."
|
||||
|
||||
# gui/game/gui.rpy:287
|
||||
# gui/game/gui.rpy:285
|
||||
old "## Generic frames."
|
||||
new "## Enericgay amesfray."
|
||||
|
||||
# gui/game/gui.rpy:290
|
||||
# gui/game/gui.rpy:288
|
||||
old "## The frame that is used as part of the confirm screen."
|
||||
new "## Hetay amefray hattay isay useday asay artpay ofay hetay onfirmcay creensay."
|
||||
|
||||
# gui/game/gui.rpy:293
|
||||
# gui/game/gui.rpy:291
|
||||
old "## The frame that is used as part of the skip screen."
|
||||
new "## Hetay amefray hattay isay useday asay artpay ofay hetay kipsay creensay."
|
||||
|
||||
# gui/game/gui.rpy:296
|
||||
# gui/game/gui.rpy:294
|
||||
old "## The frame that is used as part of the notify screen."
|
||||
new "## Hetay amefray hattay isay useday asay artpay ofay hetay otifynay creensay."
|
||||
|
||||
# gui/game/gui.rpy:299
|
||||
# gui/game/gui.rpy:297
|
||||
old "## Should frame backgrounds be tiled?"
|
||||
new "## Houldsay amefray ackgroundsbay ebay iledtay?"
|
||||
|
||||
# gui/game/gui.rpy:303
|
||||
# gui/game/gui.rpy:301
|
||||
old "## Bars, Scrollbars, and Sliders"
|
||||
new "## Arsbay, Crollbarssay, anday Liderssay"
|
||||
|
||||
# gui/game/gui.rpy:305
|
||||
# gui/game/gui.rpy:303
|
||||
old "## These control the look and size of bars, scrollbars, and sliders."
|
||||
new "## Hesetay ontrolcay hetay ooklay anday izesay ofay arsbay, crollbarssay, anday idersslay."
|
||||
|
||||
# gui/game/gui.rpy:307
|
||||
# gui/game/gui.rpy:305
|
||||
old "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written screens."
|
||||
new "## Hetay efaultday Uigay onlyay usesay idersslay anday erticalvay crollbarssay. Llaay ofay hetay otheray arsbay areay onlyay useday inay reatorcay-rittenway creenssay."
|
||||
|
||||
# gui/game/gui.rpy:310
|
||||
# gui/game/gui.rpy:308
|
||||
old "## The height of horizontal bars, scrollbars, and sliders. The width of vertical bars, scrollbars, and sliders."
|
||||
new "## Hetay eighthay ofay orizontalhay arsbay, crollbarssay, anday idersslay. Hetay idthway ofay erticalvay arsbay, crollbarssay, anday idersslay."
|
||||
|
||||
# gui/game/gui.rpy:316
|
||||
# gui/game/gui.rpy:314
|
||||
old "## True if bar images should be tiled. False if they should be linearly scaled."
|
||||
new "## Ruetay ifay arbay imagesay ouldshay ebay iledtay. Alsefay ifay heytay ouldshay ebay inearlylay caledsay."
|
||||
|
||||
# gui/game/gui.rpy:321
|
||||
# gui/game/gui.rpy:319
|
||||
old "## Horizontal borders."
|
||||
new "## Orizontalhay ordersbay."
|
||||
|
||||
# gui/game/gui.rpy:326
|
||||
# gui/game/gui.rpy:324
|
||||
old "## Vertical borders."
|
||||
new "## Erticalvay ordersbay."
|
||||
|
||||
# gui/game/gui.rpy:331
|
||||
# gui/game/gui.rpy:329
|
||||
old "## What to do with unscrollable scrollbars in the gui. \"hide\" hides them, while None shows them."
|
||||
new "## Hatway otay oday ithway unscrollableay crollbarssay inay hetay uigay. \"idehay\" ideshay hemtay, hileway Onenay owsshay hemtay."
|
||||
|
||||
# gui/game/gui.rpy:336
|
||||
# gui/game/gui.rpy:334
|
||||
old "## History"
|
||||
new "## Istoryhay"
|
||||
|
||||
# gui/game/gui.rpy:338
|
||||
# gui/game/gui.rpy:336
|
||||
old "## The history screen displays dialogue that the player has already dismissed."
|
||||
new "## Hetay istoryhay creensay isplaysday ialogueday hattay hetay ayerplay ashay alreadyay ismissedday."
|
||||
|
||||
# gui/game/gui.rpy:340
|
||||
# gui/game/gui.rpy:338
|
||||
old "## The number of blocks of dialogue history Ren'Py will keep."
|
||||
new "## Hetay umbernay ofay ocksblay ofay ialogueday istoryhay Enray'Ypay illway eepkay."
|
||||
|
||||
# gui/game/gui.rpy:343
|
||||
# gui/game/gui.rpy:341
|
||||
old "## The height of a history screen entry, or None to make the height variable at the cost of performance."
|
||||
new "## Hetay eighthay ofay aay istoryhay creensay entryay, oray Onenay otay akemay hetay eighthay ariablevay atay hetay ostcay ofay erformancepay."
|
||||
|
||||
# gui/game/gui.rpy:347
|
||||
# gui/game/gui.rpy:345
|
||||
old "## The position, width, and alignment of the label giving the name of the speaking character."
|
||||
new "## Hetay ositionpay, idthway, anday alignmentay ofay hetay abellay ivinggay hetay amenay ofay hetay peakingsay aracterchay."
|
||||
|
||||
# gui/game/gui.rpy:354
|
||||
# gui/game/gui.rpy:352
|
||||
old "## The position, width, and alignment of the dialogue text."
|
||||
new "## Hetay ositionpay, idthway, anday alignmentay ofay hetay ialogueday exttay."
|
||||
|
||||
# gui/game/gui.rpy:361
|
||||
# gui/game/gui.rpy:359
|
||||
old "## NVL-Mode"
|
||||
new "## Vlnay-Odemay"
|
||||
|
||||
# gui/game/gui.rpy:363
|
||||
# gui/game/gui.rpy:361
|
||||
old "## The NVL-mode screen displays the dialogue spoken by NVL-mode characters."
|
||||
new "## Hetay Vlnay-odemay creensay isplaysday hetay ialogueday pokensay ybay Vlnay-odemay aracterschay."
|
||||
|
||||
# gui/game/gui.rpy:365
|
||||
# gui/game/gui.rpy:363
|
||||
old "## The borders of the background of the NVL-mode background window."
|
||||
new "## Hetay ordersbay ofay hetay ackgroundbay ofay hetay Vlnay-odemay ackgroundbay indowway."
|
||||
|
||||
# gui/game/gui.rpy:368
|
||||
# gui/game/gui.rpy:366
|
||||
old "## The maximum number of NVL-mode entries Ren'Py will display. When more entries than this are to be show, the oldest entry will be removed."
|
||||
new "## Hetay aximummay umbernay ofay Vlnay-odemay entriesay Enray'Ypay illway isplayday. Henway oremay entriesay hantay histay areay otay ebay owshay, hetay oldestay entryay illway ebay emovedray."
|
||||
|
||||
# gui/game/gui.rpy:372
|
||||
# gui/game/gui.rpy:370
|
||||
old "## The height of an NVL-mode entry. Set this to None to have the entries dynamically adjust height."
|
||||
new "## Hetay eighthay ofay anay Vlnay-odemay entryay. Etsay histay otay Onenay otay avehay hetay entriesay ynamicallyday adjustay eighthay."
|
||||
|
||||
# gui/game/gui.rpy:376
|
||||
# gui/game/gui.rpy:374
|
||||
old "## The spacing between NVL-mode entries when gui.nvl_height is None, and between NVL-mode entries and an NVL-mode menu."
|
||||
new "## Hetay pacingsay etweenbay Vlnay-odemay entriesay henway uigay.vl_heightnay isay Onenay, anday etweenbay Vlnay-odemay entriesay anday anay Vlnay-odemay enumay."
|
||||
|
||||
# gui/game/gui.rpy:393
|
||||
# gui/game/gui.rpy:391
|
||||
old "## The position, width, and alignment of nvl_thought text (the text said by the nvl_narrator character.)"
|
||||
new "## Hetay ositionpay, idthway, anday alignmentay ofay vl_thoughtnay exttay (hetay exttay aidsay ybay hetay vl_narratornay aracterchay.)"
|
||||
|
||||
# gui/game/gui.rpy:400
|
||||
# gui/game/gui.rpy:398
|
||||
old "## The position of nvl menu_buttons."
|
||||
new "## Hetay ositionpay ofay vlnay enu_buttonsmay."
|
||||
|
||||
# gui/game/gui.rpy:405
|
||||
# gui/game/gui.rpy:402
|
||||
old "## Localization"
|
||||
new "## Ocalizationlay"
|
||||
|
||||
# gui/game/gui.rpy:407
|
||||
# gui/game/gui.rpy:404
|
||||
old "## This controls where a line break is permitted. The default is suitable for most languages. A list of available values can be found at https://www.renpy.org/doc/html/style_properties.html#style-property-language"
|
||||
new "## Histay ontrolscay hereway aay inelay eakbray isay ermittedpay. Hetay efaultday isay uitablesay orfay ostmay anguageslay. Aay istlay ofay availableay aluesvay ancay ebay oundfay atay ttpshay://wwway.enpyray.orgay/ocday/tmlhay/yle_propertiesstay.tmlhay#ylestay-ropertypay-anguagelay"
|
||||
|
||||
# gui/game/gui.rpy:415
|
||||
# gui/game/gui.rpy:412
|
||||
old "## Mobile devices"
|
||||
new "## Obilemay evicesday"
|
||||
|
||||
# gui/game/gui.rpy:420
|
||||
# gui/game/gui.rpy:417
|
||||
old "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
|
||||
new "## Histay increasesay hetay izesay ofay hetay uickqay uttonsbay otay akemay hemtay easieray otay ouchtay onay abletstay anday onesphay."
|
||||
|
||||
# gui/game/gui.rpy:427
|
||||
# gui/game/gui.rpy:424
|
||||
old "## This changes the size and spacing of various GUI elements to ensure they are easily visible on phones."
|
||||
new "## Histay angeschay hetay izesay anday pacingsay ofay ariousvay Uigay elementsay otay ensureay heytay areay easilyay isiblevay onay onesphay."
|
||||
|
||||
# gui/game/gui.rpy:432
|
||||
# gui/game/gui.rpy:429
|
||||
old "## Font sizes."
|
||||
new "## Ontfay izessay."
|
||||
|
||||
# gui/game/gui.rpy:440
|
||||
# gui/game/gui.rpy:437
|
||||
old "## Adjust the location of the textbox."
|
||||
new "## Djustaay hetay ocationlay ofay hetay extboxtay."
|
||||
|
||||
# gui/game/gui.rpy:446
|
||||
# gui/game/gui.rpy:443
|
||||
old "## Change the size and spacing of various things."
|
||||
new "## Hangecay hetay izesay anday pacingsay ofay ariousvay hingstay."
|
||||
|
||||
# gui/game/gui.rpy:460
|
||||
# gui/game/gui.rpy:457
|
||||
old "## File button layout."
|
||||
new "## Ilefay uttonbay ayoutlay."
|
||||
|
||||
# gui/game/gui.rpy:464
|
||||
# gui/game/gui.rpy:461
|
||||
old "## NVL-mode."
|
||||
new "## Vlnay-odemay."
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -190,8 +190,8 @@ translate piglatin strings:
|
||||
new "## Ilesfay atchingmay ocumentationday atternspay areay uplicatedday inay aay acmay appay uildbay, osay heytay appearay inay othbay hetay appay anday hetay ipzay ilefay."
|
||||
|
||||
# gui/game/options.rpy:203
|
||||
old "## A Google Play license key is required to perform in-app purchases. It can be found in the Google Play developer console, under \"Monetize\" > \"Monetization Setup\" > \"Licensing\"."
|
||||
new "## Aay Ooglegay Laypay icenselay eykay isay equiredray otay erformpay inay-appay urchasespay. Tiay ancay ebay oundfay inay hetay Ooglegay Laypay eveloperday onsolecay, underay \"Onetizemay\" > \"Onetizationmay Etupsay\" > \"Icensinglay\"."
|
||||
old "## A Google Play license key is required to download expansion files and perform in-app purchases. It can be found on the \"Services & APIs\" page of the Google Play developer console."
|
||||
new "## Aay Ooglegay Laypay icenselay eykay isay equiredray otay ownloadday expansionay ilesfay anday erformpay inay-appay urchasespay. Tiay ancay ebay oundfay onay hetay \"Ervicessay & Pisaay\" agepay ofay hetay Ooglegay Laypay eveloperday onsolecay."
|
||||
|
||||
# gui/game/options.rpy:210
|
||||
old "## The username and project name associated with an itch.io project, separated by a slash."
|
||||
|
||||
@@ -281,395 +281,374 @@ translate piglatin strings:
|
||||
old "## Buttons to access other pages."
|
||||
new "## Uttonsbay otay accessay otheray agespay."
|
||||
|
||||
# gui/game/screens.rpy:660
|
||||
# gui/game/screens.rpy:657
|
||||
old "<"
|
||||
new "<"
|
||||
|
||||
# gui/game/screens.rpy:663
|
||||
# gui/game/screens.rpy:660
|
||||
old "{#auto_page}A"
|
||||
new "{#auto_page}Aay"
|
||||
|
||||
# gui/game/screens.rpy:666
|
||||
# gui/game/screens.rpy:663
|
||||
old "{#quick_page}Q"
|
||||
new "{#quick_page}Qay"
|
||||
|
||||
# gui/game/screens.rpy:668
|
||||
# gui/game/screens.rpy:665
|
||||
old "## range(1, 10) gives the numbers from 1 to 9."
|
||||
new "## angeray(1ay, 01ay) ivesgay hetay umbersnay omfray 1ay otay 9ay."
|
||||
|
||||
# gui/game/screens.rpy:672
|
||||
# gui/game/screens.rpy:669
|
||||
old ">"
|
||||
new ">"
|
||||
|
||||
# gui/game/screens.rpy:676
|
||||
old "Upload Sync"
|
||||
new "Ploaduay Yncsay"
|
||||
|
||||
# gui/game/screens.rpy:680
|
||||
old "Download Sync"
|
||||
new "Ownloadday Yncsay"
|
||||
|
||||
# gui/game/screens.rpy:717
|
||||
# gui/game/screens.rpy:704
|
||||
old "## Preferences screen"
|
||||
new "## Referencespay creensay"
|
||||
|
||||
# gui/game/screens.rpy:719
|
||||
# gui/game/screens.rpy:706
|
||||
old "## The preferences screen allows the player to configure the game to better suit themselves."
|
||||
new "## Hetay referencespay creensay allowsay hetay ayerplay otay onfigurecay hetay amegay otay etterbay uitsay hemselvestay."
|
||||
|
||||
# gui/game/screens.rpy:722
|
||||
# gui/game/screens.rpy:709
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#preferences"
|
||||
new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#referencespay"
|
||||
|
||||
# gui/game/screens.rpy:739
|
||||
# gui/game/screens.rpy:726
|
||||
old "Display"
|
||||
new "Isplayday"
|
||||
|
||||
# gui/game/screens.rpy:740
|
||||
# gui/game/screens.rpy:727
|
||||
old "Window"
|
||||
new "Indowway"
|
||||
|
||||
# gui/game/screens.rpy:741
|
||||
# gui/game/screens.rpy:728
|
||||
old "Fullscreen"
|
||||
new "Ullscreenfay"
|
||||
|
||||
# gui/game/screens.rpy:746
|
||||
# gui/game/screens.rpy:733
|
||||
old "Unseen Text"
|
||||
new "Nseenuay Exttay"
|
||||
|
||||
# gui/game/screens.rpy:747
|
||||
# gui/game/screens.rpy:734
|
||||
old "After Choices"
|
||||
new "Fteraay Hoicescay"
|
||||
|
||||
# gui/game/screens.rpy:748
|
||||
# gui/game/screens.rpy:735
|
||||
old "Transitions"
|
||||
new "Ransitionstay"
|
||||
|
||||
# gui/game/screens.rpy:750
|
||||
# gui/game/screens.rpy:737
|
||||
old "## Additional vboxes of type \"radio_pref\" or \"check_pref\" can be added here, to add additional creator-defined preferences."
|
||||
new "## Dditionalaay boxesvay ofay ypetay \"adio_prefray\" oray \"eck_prefchay\" ancay ebay addeday erehay, otay adday additionalay reatorcay-efinedday referencespay."
|
||||
|
||||
# gui/game/screens.rpy:761
|
||||
# gui/game/screens.rpy:748
|
||||
old "Text Speed"
|
||||
new "Exttay Peedsay"
|
||||
|
||||
# gui/game/screens.rpy:765
|
||||
# gui/game/screens.rpy:752
|
||||
old "Auto-Forward Time"
|
||||
new "Utoaay-Orwardfay Imetay"
|
||||
|
||||
# gui/game/screens.rpy:772
|
||||
# gui/game/screens.rpy:759
|
||||
old "Music Volume"
|
||||
new "Usicmay Olumevay"
|
||||
|
||||
# gui/game/screens.rpy:779
|
||||
# gui/game/screens.rpy:766
|
||||
old "Sound Volume"
|
||||
new "Oundsay Olumevay"
|
||||
|
||||
# gui/game/screens.rpy:785
|
||||
# gui/game/screens.rpy:772
|
||||
old "Test"
|
||||
new "Esttay"
|
||||
|
||||
# gui/game/screens.rpy:789
|
||||
# gui/game/screens.rpy:776
|
||||
old "Voice Volume"
|
||||
new "Oicevay Olumevay"
|
||||
|
||||
# gui/game/screens.rpy:800
|
||||
# gui/game/screens.rpy:787
|
||||
old "Mute All"
|
||||
new "Utemay Llaay"
|
||||
|
||||
# gui/game/screens.rpy:876
|
||||
# gui/game/screens.rpy:863
|
||||
old "## History screen"
|
||||
new "## Istoryhay creensay"
|
||||
|
||||
# gui/game/screens.rpy:878
|
||||
# gui/game/screens.rpy:865
|
||||
old "## This is a screen that displays the dialogue history to the player. While there isn't anything special about this screen, it does have to access the dialogue history stored in _history_list."
|
||||
new "## Histay isay aay creensay hattay isplaysday hetay ialogueday istoryhay otay hetay ayerplay. Hileway heretay isnay'tay anythingay pecialsay aboutay histay creensay, itay oesday avehay otay accessay hetay ialogueday istoryhay oredstay inay history_list_ay."
|
||||
|
||||
# gui/game/screens.rpy:882
|
||||
# gui/game/screens.rpy:869
|
||||
old "## https://www.renpy.org/doc/html/history.html"
|
||||
new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/istoryhay.tmlhay"
|
||||
|
||||
# gui/game/screens.rpy:888
|
||||
# gui/game/screens.rpy:875
|
||||
old "## Avoid predicting this screen, as it can be very large."
|
||||
new "## Voidaay redictingpay histay creensay, asay itay ancay ebay eryvay argelay."
|
||||
|
||||
# gui/game/screens.rpy:899
|
||||
# gui/game/screens.rpy:886
|
||||
old "## This lays things out properly if history_height is None."
|
||||
new "## Histay ayslay hingstay outay roperlypay ifay istory_heighthay isay Onenay."
|
||||
|
||||
# gui/game/screens.rpy:909
|
||||
# gui/game/screens.rpy:896
|
||||
old "## Take the color of the who text from the Character, if set."
|
||||
new "## Aketay hetay olorcay ofay hetay howay exttay omfray hetay Haractercay, ifay etsay."
|
||||
|
||||
# gui/game/screens.rpy:918
|
||||
# gui/game/screens.rpy:905
|
||||
old "The dialogue history is empty."
|
||||
new "Hetay ialogueday istoryhay isay emptyay."
|
||||
|
||||
# gui/game/screens.rpy:921
|
||||
# gui/game/screens.rpy:908
|
||||
old "## This determines what tags are allowed to be displayed on the history screen."
|
||||
new "## Histay eterminesday hatway agstay areay alloweday otay ebay isplayedday onay hetay istoryhay creensay."
|
||||
|
||||
# gui/game/screens.rpy:966
|
||||
# gui/game/screens.rpy:953
|
||||
old "## Help screen"
|
||||
new "## Elphay creensay"
|
||||
|
||||
# gui/game/screens.rpy:968
|
||||
# gui/game/screens.rpy:955
|
||||
old "## A screen that gives information about key and mouse bindings. It uses other screens (keyboard_help, mouse_help, and gamepad_help) to display the actual help."
|
||||
new "## Aay creensay hattay ivesgay informationay aboutay eykay anday ousemay indingsbay. Tiay usesay otheray creenssay (eyboard_helpkay, ouse_helpmay, anday amepad_helpgay) otay isplayday hetay actualay elphay."
|
||||
|
||||
# gui/game/screens.rpy:987
|
||||
# gui/game/screens.rpy:974
|
||||
old "Keyboard"
|
||||
new "Eyboardkay"
|
||||
|
||||
# gui/game/screens.rpy:988
|
||||
# gui/game/screens.rpy:975
|
||||
old "Mouse"
|
||||
new "Ousemay"
|
||||
|
||||
# gui/game/screens.rpy:991
|
||||
# gui/game/screens.rpy:978
|
||||
old "Gamepad"
|
||||
new "Amepadgay"
|
||||
|
||||
# gui/game/screens.rpy:1004
|
||||
# gui/game/screens.rpy:991
|
||||
old "Enter"
|
||||
new "Ntereay"
|
||||
|
||||
# gui/game/screens.rpy:1005
|
||||
# gui/game/screens.rpy:992
|
||||
old "Advances dialogue and activates the interface."
|
||||
new "Dvancesaay ialogueday anday activatesay hetay interfaceay."
|
||||
|
||||
# gui/game/screens.rpy:1008
|
||||
# gui/game/screens.rpy:995
|
||||
old "Space"
|
||||
new "Pacesay"
|
||||
|
||||
# gui/game/screens.rpy:1009
|
||||
# gui/game/screens.rpy:996
|
||||
old "Advances dialogue without selecting choices."
|
||||
new "Dvancesaay ialogueday ithoutway electingsay oiceschay."
|
||||
|
||||
# gui/game/screens.rpy:1012
|
||||
# gui/game/screens.rpy:999
|
||||
old "Arrow Keys"
|
||||
new "Rrowaay Eyskay"
|
||||
|
||||
# gui/game/screens.rpy:1013
|
||||
# gui/game/screens.rpy:1000
|
||||
old "Navigate the interface."
|
||||
new "Avigatenay hetay interfaceay."
|
||||
|
||||
# gui/game/screens.rpy:1016
|
||||
# gui/game/screens.rpy:1003
|
||||
old "Escape"
|
||||
new "Scapeeay"
|
||||
|
||||
# gui/game/screens.rpy:1017
|
||||
# gui/game/screens.rpy:1004
|
||||
old "Accesses the game menu."
|
||||
new "Ccessesaay hetay amegay enumay."
|
||||
|
||||
# gui/game/screens.rpy:1020
|
||||
# gui/game/screens.rpy:1007
|
||||
old "Ctrl"
|
||||
new "Trlcay"
|
||||
|
||||
# gui/game/screens.rpy:1021
|
||||
# gui/game/screens.rpy:1008
|
||||
old "Skips dialogue while held down."
|
||||
new "Kipssay ialogueday hileway eldhay ownday."
|
||||
|
||||
# gui/game/screens.rpy:1024
|
||||
# gui/game/screens.rpy:1011
|
||||
old "Tab"
|
||||
new "Abtay"
|
||||
|
||||
# gui/game/screens.rpy:1025
|
||||
# gui/game/screens.rpy:1012
|
||||
old "Toggles dialogue skipping."
|
||||
new "Ogglestay ialogueday kippingsay."
|
||||
|
||||
# gui/game/screens.rpy:1028
|
||||
# gui/game/screens.rpy:1015
|
||||
old "Page Up"
|
||||
new "Agepay Puay"
|
||||
|
||||
# gui/game/screens.rpy:1029
|
||||
# gui/game/screens.rpy:1016
|
||||
old "Rolls back to earlier dialogue."
|
||||
new "Ollsray ackbay otay earlieray ialogueday."
|
||||
|
||||
# gui/game/screens.rpy:1032
|
||||
# gui/game/screens.rpy:1019
|
||||
old "Page Down"
|
||||
new "Agepay Ownday"
|
||||
|
||||
# gui/game/screens.rpy:1033
|
||||
# gui/game/screens.rpy:1020
|
||||
old "Rolls forward to later dialogue."
|
||||
new "Ollsray orwardfay otay aterlay ialogueday."
|
||||
|
||||
# gui/game/screens.rpy:1037
|
||||
# gui/game/screens.rpy:1024
|
||||
old "Hides the user interface."
|
||||
new "Ideshay hetay useray interfaceay."
|
||||
|
||||
# gui/game/screens.rpy:1041
|
||||
# gui/game/screens.rpy:1028
|
||||
old "Takes a screenshot."
|
||||
new "Akestay aay creenshotsay."
|
||||
|
||||
# gui/game/screens.rpy:1045
|
||||
# gui/game/screens.rpy:1032
|
||||
old "Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}."
|
||||
new "Ogglestay assistiveay {a=https://www.renpy.org/l/voicing}elfsay-oicingvay{/a}."
|
||||
|
||||
# gui/game/screens.rpy:1049
|
||||
# gui/game/screens.rpy:1036
|
||||
old "Opens the accessibility menu."
|
||||
new "Pensoay hetay accessibilityay enumay."
|
||||
|
||||
# gui/game/screens.rpy:1055
|
||||
# gui/game/screens.rpy:1042
|
||||
old "Left Click"
|
||||
new "Eftlay Lickcay"
|
||||
|
||||
# gui/game/screens.rpy:1059
|
||||
# gui/game/screens.rpy:1046
|
||||
old "Middle Click"
|
||||
new "Iddlemay Lickcay"
|
||||
|
||||
# gui/game/screens.rpy:1063
|
||||
# gui/game/screens.rpy:1050
|
||||
old "Right Click"
|
||||
new "Ightray Lickcay"
|
||||
|
||||
# gui/game/screens.rpy:1067
|
||||
# gui/game/screens.rpy:1054
|
||||
old "Mouse Wheel Up\nClick Rollback Side"
|
||||
new "Ousemay Heelway Puay\nLickcay Ollbackray Idesay"
|
||||
|
||||
# gui/game/screens.rpy:1071
|
||||
# gui/game/screens.rpy:1058
|
||||
old "Mouse Wheel Down"
|
||||
new "Ousemay Heelway Ownday"
|
||||
|
||||
# gui/game/screens.rpy:1078
|
||||
# gui/game/screens.rpy:1065
|
||||
old "Right Trigger\nA/Bottom Button"
|
||||
new "Ightray Riggertay\nAay/Ottombay Uttonbay"
|
||||
|
||||
# gui/game/screens.rpy:1082
|
||||
# gui/game/screens.rpy:1069
|
||||
old "Left Trigger\nLeft Shoulder"
|
||||
new "Eftlay Riggertay\nEftlay Houldersay"
|
||||
|
||||
# gui/game/screens.rpy:1086
|
||||
# gui/game/screens.rpy:1073
|
||||
old "Right Shoulder"
|
||||
new "Ightray Houldersay"
|
||||
|
||||
# gui/game/screens.rpy:1091
|
||||
# gui/game/screens.rpy:1078
|
||||
old "D-Pad, Sticks"
|
||||
new "Day-Adpay, Tickssay"
|
||||
|
||||
# gui/game/screens.rpy:1095
|
||||
# gui/game/screens.rpy:1082
|
||||
old "Start, Guide"
|
||||
new "Tartsay, Uidegay"
|
||||
|
||||
# gui/game/screens.rpy:1099
|
||||
# gui/game/screens.rpy:1086
|
||||
old "Y/Top Button"
|
||||
new "Yay/Optay Uttonbay"
|
||||
|
||||
# gui/game/screens.rpy:1102
|
||||
# gui/game/screens.rpy:1089
|
||||
old "Calibrate"
|
||||
new "Alibratecay"
|
||||
|
||||
# gui/game/screens.rpy:1130
|
||||
# gui/game/screens.rpy:1117
|
||||
old "## Additional screens"
|
||||
new "## Dditionalaay creenssay"
|
||||
|
||||
# gui/game/screens.rpy:1134
|
||||
# gui/game/screens.rpy:1121
|
||||
old "## Confirm screen"
|
||||
new "## Onfirmcay creensay"
|
||||
|
||||
# gui/game/screens.rpy:1136
|
||||
# gui/game/screens.rpy:1123
|
||||
old "## The confirm screen is called when Ren'Py wants to ask the player a yes or no question."
|
||||
new "## Hetay onfirmcay creensay isay alledcay henway Enray'Ypay antsway otay askay hetay ayerplay aay esyay oray onay uestionqay."
|
||||
|
||||
# gui/game/screens.rpy:1139
|
||||
# gui/game/screens.rpy:1126
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#confirm"
|
||||
new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#onfirmcay"
|
||||
|
||||
# gui/game/screens.rpy:1143
|
||||
# gui/game/screens.rpy:1130
|
||||
old "## Ensure other screens do not get input while this screen is displayed."
|
||||
new "## Nsureeay otheray creenssay oday otnay etgay inputay hileway histay creensay isay isplayedday."
|
||||
|
||||
# gui/game/screens.rpy:1167
|
||||
# gui/game/screens.rpy:1154
|
||||
old "Yes"
|
||||
new "Esyay"
|
||||
|
||||
# gui/game/screens.rpy:1168
|
||||
# gui/game/screens.rpy:1155
|
||||
old "No"
|
||||
new "Onay"
|
||||
|
||||
# gui/game/screens.rpy:1170
|
||||
# gui/game/screens.rpy:1157
|
||||
old "## Right-click and escape answer \"no\"."
|
||||
new "## Ightray-ickclay anday escapeay answeray \"onay\"."
|
||||
|
||||
# gui/game/screens.rpy:1197
|
||||
# gui/game/screens.rpy:1184
|
||||
old "## Skip indicator screen"
|
||||
new "## Kipsay indicatoray creensay"
|
||||
|
||||
# gui/game/screens.rpy:1199
|
||||
# gui/game/screens.rpy:1186
|
||||
old "## The skip_indicator screen is displayed to indicate that skipping is in progress."
|
||||
new "## Hetay kip_indicatorsay creensay isay isplayedday otay indicateay hattay kippingsay isay inay rogresspay."
|
||||
|
||||
# gui/game/screens.rpy:1202
|
||||
# gui/game/screens.rpy:1189
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#skip-indicator"
|
||||
new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#kipsay-indicatoray"
|
||||
|
||||
# gui/game/screens.rpy:1214
|
||||
# gui/game/screens.rpy:1201
|
||||
old "Skipping"
|
||||
new "Kippingsay"
|
||||
|
||||
# gui/game/screens.rpy:1221
|
||||
# gui/game/screens.rpy:1208
|
||||
old "## This transform is used to blink the arrows one after another."
|
||||
new "## Histay ansformtray isay useday otay inkblay hetay arrowsay oneay afteray anotheray."
|
||||
|
||||
# gui/game/screens.rpy:1248
|
||||
# gui/game/screens.rpy:1235
|
||||
old "## We have to use a font that has the BLACK RIGHT-POINTING SMALL TRIANGLE glyph in it."
|
||||
new "## Eway avehay otay useay aay ontfay hattay ashay hetay Lackbay Ightray-Ointingpay Mallsay Riangletay yphglay inay itay."
|
||||
|
||||
# gui/game/screens.rpy:1253
|
||||
# gui/game/screens.rpy:1240
|
||||
old "## Notify screen"
|
||||
new "## Otifynay creensay"
|
||||
|
||||
# gui/game/screens.rpy:1255
|
||||
# gui/game/screens.rpy:1242
|
||||
old "## The notify screen is used to show the player a message. (For example, when the game is quicksaved or a screenshot has been taken.)"
|
||||
new "## Hetay otifynay creensay isay useday otay owshay hetay ayerplay aay essagemay. (Orfay exampleay, henway hetay amegay isay uicksavedqay oray aay creenshotsay ashay eenbay akentay.)"
|
||||
|
||||
# gui/game/screens.rpy:1258
|
||||
# gui/game/screens.rpy:1245
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#notify-screen"
|
||||
new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#otifynay-creensay"
|
||||
|
||||
# gui/game/screens.rpy:1292
|
||||
# gui/game/screens.rpy:1279
|
||||
old "## NVL screen"
|
||||
new "## Vlnay creensay"
|
||||
|
||||
# gui/game/screens.rpy:1294
|
||||
# gui/game/screens.rpy:1281
|
||||
old "## This screen is used for NVL-mode dialogue and menus."
|
||||
new "## Histay creensay isay useday orfay Vlnay-odemay ialogueday anday enusmay."
|
||||
|
||||
# gui/game/screens.rpy:1296
|
||||
# gui/game/screens.rpy:1283
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#nvl"
|
||||
new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/creen_specialsay.tmlhay#vlnay"
|
||||
|
||||
# gui/game/screens.rpy:1307
|
||||
# gui/game/screens.rpy:1294
|
||||
old "## Displays dialogue in either a vpgrid or the vbox."
|
||||
new "## Isplaysday ialogueday inay eitheray aay pgridvay oray hetay boxvay."
|
||||
|
||||
# gui/game/screens.rpy:1320
|
||||
# gui/game/screens.rpy:1307
|
||||
old "## Displays the menu, if given. The menu may be displayed incorrectly if config.narrator_menu is set to True."
|
||||
new "## Isplaysday hetay enumay, ifay ivengay. Hetay enumay aymay ebay isplayedday incorrectlyay ifay onfigcay.arrator_menunay isay etsay otay Ruetay."
|
||||
|
||||
# gui/game/screens.rpy:1350
|
||||
# gui/game/screens.rpy:1337
|
||||
old "## This controls the maximum number of NVL-mode entries that can be displayed at once."
|
||||
new "## Histay ontrolscay hetay aximummay umbernay ofay Vlnay-odemay entriesay hattay ancay ebay isplayedday atay onceay."
|
||||
|
||||
# gui/game/screens.rpy:1410
|
||||
old "## Bubble screen"
|
||||
new "## Ubblebay creensay"
|
||||
|
||||
# gui/game/screens.rpy:1412
|
||||
old "## The bubble screen is used to display dialogue to the player when using speech bubbles. The bubble screen takes the same parameters as the say screen, must create a displayable with the id of \"what\", and can create displayables with the \"namebox\", \"who\", and \"window\" ids."
|
||||
new "## Hetay ubblebay creensay isay useday otay isplayday ialogueday otay hetay ayerplay henway usingay peechsay ubblesbay. Hetay ubblebay creensay akestay hetay amesay arameterspay asay hetay aysay creensay, ustmay reatecay aay isplayableday ithway hetay iday ofay \"hatway\", anday ancay reatecay isplayablesday ithway hetay \"ameboxnay\", \"howay\", anday \"indowway\" idsay."
|
||||
|
||||
# gui/game/screens.rpy:1417
|
||||
old "## https://www.renpy.org/doc/html/bubble.html#bubble-screen"
|
||||
new "## ttpshay://wwway.enpyray.orgay/ocday/tmlhay/ubblebay.tmlhay#ubblebay-creensay"
|
||||
|
||||
# gui/game/screens.rpy:1501
|
||||
# gui/game/screens.rpy:1399
|
||||
old "## Mobile Variants"
|
||||
new "## Obilemay Ariantsvay"
|
||||
|
||||
# gui/game/screens.rpy:1508
|
||||
# gui/game/screens.rpy:1406
|
||||
old "## Since a mouse may not be present, we replace the quick menu with a version that uses fewer and bigger buttons that are easier to touch."
|
||||
new "## Incesay aay ousemay aymay otnay ebay resentpay, eway eplaceray hetay uickqay enumay ithway aay ersionvay hattay usesay ewerfay anday iggerbay uttonsbay hattay areay easieray otay ouchtay."
|
||||
|
||||
# gui/game/screens.rpy:1526
|
||||
# gui/game/screens.rpy:1424
|
||||
old "Menu"
|
||||
new "Enumay"
|
||||
|
||||
|
||||
@@ -40,8 +40,8 @@
|
||||
new "Aby zbudować pakiet dla Androida, pobierz RAPT, rozpakuj i umieść w katalogu Ren'Py. Następnie uruchom ponownie program Ren'py."
|
||||
|
||||
# game/android.rpy:31
|
||||
old "A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Tworzenie pakietów dla systemu Android w systemie Windows wymaga pakietu 64-bit/x64 Java Development Kit. JDK różni się od JRE, istnieje możliwość, że posiadasz Javę bez JDK.\n\n{a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}Pobierz i zainstaluj JDK{/a}, a następnie uruchom ponownie program Ren'py."
|
||||
old "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Tworzenie pakietów dla systemu Android w systemie Windows wymaga pakietu 64-bit/x64 Java Development Kit. JDK różni się od JRE, istnieje możliwość, że posiadasz Javę bez JDK.\n\n{a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}Pobierz i zainstaluj JDK{/a}, a następnie uruchom ponownie program Ren'py."
|
||||
|
||||
# game/android.rpy:32
|
||||
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
|
||||
|
||||
@@ -40,8 +40,8 @@
|
||||
new "Чтобы построить Android-пакет, пожалуйста, загрузите RAPT, разархивируйте его, и поместите в директорию Ren'Py. Затем перезагрузите лаунчер Ren'Py."
|
||||
|
||||
# android.rpy:31
|
||||
old "A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Чтобы построить Android-пакеты на Windows требуется 64-битный инструментарий разработки Java 8. JDK отличен от JRE, и возможно, у вас есть Java без JDK.\n\nПожалуйста, {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}загрузите и установите JDK{/a}, и перезапустите лаунчер Ren'Py."
|
||||
old "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Чтобы построить Android-пакеты на Windows требуется 64-битный инструментарий разработки Java 8. JDK отличен от JRE, и возможно, у вас есть Java без JDK.\n\nПожалуйста, {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}загрузите и установите JDK{/a}, и перезапустите лаунчер Ren'Py."
|
||||
|
||||
# android.rpy:32
|
||||
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
|
||||
|
||||
@@ -37,8 +37,8 @@
|
||||
new "要构建安卓应用包,请下载 RAPT,并解压到 Ren'Py 目录中。之后重启 Ren'Py。"
|
||||
|
||||
# game/android.rpy:35
|
||||
old "A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "在 Windows 中构建安卓应用包需要 64 位/x64 Java 8 开发套件(JDK)。JDK 不同于 JRE,所以您可能已安装过 Java 但尚未安装 JDK。\n\n请{a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}下载并安装 JDK{/a},然后重启 Ren'Py。"
|
||||
old "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "在 Windows 中构建安卓应用包需要 64 位/x64 Java 8 开发套件(JDK)。JDK 不同于 JRE,所以您可能已安装过 Java 但尚未安装 JDK。\n\n请{a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}下载并安装 JDK{/a},然后重启 Ren'Py。"
|
||||
|
||||
# game/android.rpy:36
|
||||
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
|
||||
|
||||
@@ -785,7 +785,7 @@ translate spanish strings:
|
||||
# renpy/common/00speechbubble.rpy:304
|
||||
old "(hide)"
|
||||
new "(ocultar)"
|
||||
|
||||
|
||||
# renpy/common/00gui.rpy:455
|
||||
old "This save was created on a different device. Maliciously constructed save files can harm your computer. Do you trust this save's creator and everyone who could have changed the file?"
|
||||
new "Este archivo se creó en otro dispositivo. Los archivos de guardado maliciosamente creados pueden dañar tu computadora. Confías en el creador de este archivo y en todos los que podrían haberlo modificado?"
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
# _developer/developer.rpym:45
|
||||
old "Reload Game (Shift+R)"
|
||||
new "Reiniciar juego (Mayús+R)"
|
||||
new "Reiniciar juego (Shift+R)"
|
||||
|
||||
# _developer/developer.rpym:47
|
||||
old "Console (Shift+O)"
|
||||
@@ -211,7 +211,7 @@
|
||||
# renpy/common/00console.rpy:784
|
||||
old "stack: print the return stack"
|
||||
new "stack: imprime la pila de retorno"
|
||||
|
||||
|
||||
# renpy/common/00console.rpy:781
|
||||
old "help: show this help\n help <expr>: show signature and documentation of <expr>"
|
||||
new "help: muestra esta ayuda\n help <expr>: muestra la firma y la documentación de <expr>"
|
||||
@@ -223,8 +223,3 @@
|
||||
# renpy/common/_developer/developer.rpym:51
|
||||
old "Persistent Viewer"
|
||||
new "Visor de datos persistentes"
|
||||
|
||||
# renpy/common/_developer/developer.rpym:70
|
||||
old "Speech Bubble Editor (Shift+B)"
|
||||
new "Editor de burbujas de diálogo (Mayús+B)"
|
||||
|
||||
|
||||
@@ -431,7 +431,3 @@
|
||||
# gui.rpy:457
|
||||
old "## NVL-mode."
|
||||
new "## Modo-NVL"
|
||||
|
||||
# gui/game/gui.rpy:14
|
||||
old "## Enable checks for invalid or unstable properties in screens or transforms"
|
||||
new "## Habilitar comprobaciones de propiedades no válidas o inestables en pantallas o transformaciones."
|
||||
|
||||
@@ -36,8 +36,8 @@
|
||||
new "Para construir un paquete para Android, por favor descarga RAPT, descomprímelo y colócalo dentro de la carpeta de Ren'Py. Después reinicia el lanzador de Ren'Py."
|
||||
|
||||
# game/android.rpy:31
|
||||
old "A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Se requiere un kit de desarrollo Java 8 de 64 bits/x64 para construir paquetes de Android en Windows. El JDK es diferente del JRE, por lo que es posible que tengas Java sin el JDK.\n\nPor favor, {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}descarga e instala el JDK{/a}, luego reinicia el lanzador de Ren'Py."
|
||||
old "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Se requiere un kit de desarrollo Java 8 de 64 bits/x64 para construir paquetes de Android en Windows. El JDK es diferente del JRE, por lo que es posible que tengas Java sin el JDK.\n\nPor favor, {a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}descarga e instala el JDK{/a}, luego reinicia el lanzador de Ren'Py."
|
||||
|
||||
# android.rpy:32
|
||||
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
|
||||
@@ -2060,7 +2060,7 @@ translate spanish strings:
|
||||
# game/preferences.rpy:327
|
||||
old "{#in language font}Start using Ren'Py in [lang_name]"
|
||||
new "{font=fonts/Roboto-Light.ttf}Empieza a usar Ren'Py en [lang_name]{/font}"
|
||||
|
||||
|
||||
# game/distribute_gui.rpy:231
|
||||
old "(DLC)"
|
||||
new "(DLC)"
|
||||
@@ -2072,47 +2072,3 @@ translate spanish strings:
|
||||
# game/web.rpy:484
|
||||
old "Creating package..."
|
||||
new "Creando paquete..."
|
||||
|
||||
# game/android.rpy:39
|
||||
old "RAPT has been installed, but a key hasn't been configured. Please generate new keys, or copy android.keystore and bundle.keystore to the base directory."
|
||||
new "RAPT ha sido instalado, pero no se ha configurado una clave. Por favor, genera nuevas claves, o copia android.keystore y bundle.keystore al directorio base."
|
||||
|
||||
# game/android.rpy:46
|
||||
old "Attempts to emulate a televison-based Android console.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Intenta emular una consola Android basada en televisión.\n\nLa entrada del controlador se asigna a las teclas de flecha, Enter se asigna al botón de selección, Escape se asigna al botón de menú y PageUp se asigna al botón de retroceso."
|
||||
|
||||
# game/android.rpy:48
|
||||
old "Downloads and installs the Android SDK and supporting packages."
|
||||
new "Descarga e instala el SDK de Android y los paquetes de soporte."
|
||||
|
||||
# game/android.rpy:49
|
||||
old "Generates the keys required to sign the package."
|
||||
new "Genera las claves necesarias para firmar el paquete."
|
||||
|
||||
# game/android.rpy:383
|
||||
old "Install SDK"
|
||||
new "Instalar SDK"
|
||||
|
||||
# game/android.rpy:387
|
||||
old "Generate Keys"
|
||||
new "Generar claves"
|
||||
|
||||
# game/androidstrings.rpy:32
|
||||
old "How much RAM (in GB) do you want to allocate to Gradle?\nThis must be a positive integer number."
|
||||
new "¿Cuánta RAM (en GB) quiere asignar a Gradle?\nDebe ser un número entero positivo."
|
||||
|
||||
# game/androidstrings.rpy:33
|
||||
old "The RAM size must contain only numbers and be positive."
|
||||
new "El tamaño de la RAM debe contener sólo números y ser positivo."
|
||||
|
||||
# game/androidstrings.rpy:63
|
||||
old "I found an android.keystore file in the rapt directory. Do you want to use this file?"
|
||||
new "He encontrado un archivo android.keystore en el directorio rapt. ¿Quieres usar este archivo?"
|
||||
|
||||
# game/androidstrings.rpy:66
|
||||
old "\n\nSaying 'No' will prevent key creation."
|
||||
new "\n\nDecir 'No' impedirá la creación de claves."
|
||||
|
||||
# game/androidstrings.rpy:69
|
||||
old "I found a bundle.keystore file in the rapt directory. Do you want to use this file?"
|
||||
new "He encontrado un archivo bundle.keystore en el directorio rapt. ¿Quieres usar este archivo?"
|
||||
|
||||
@@ -680,7 +680,7 @@ translate spanish strings:
|
||||
# gui/game/screens.rpy:1049
|
||||
old "Opens the accessibility menu."
|
||||
new "Abre el menú de accesibilidad."
|
||||
|
||||
|
||||
# gui/game/screens.rpy:1397
|
||||
old "## Bubble screen"
|
||||
new "## Pantalla de globos"
|
||||
@@ -692,20 +692,3 @@ translate spanish strings:
|
||||
# gui/game/screens.rpy:1404
|
||||
old "## https://www.renpy.org/doc/html/screen_special.html#bubble"
|
||||
new "## https://www.renpy.org/doc/html/screen_special.html#bubble"
|
||||
|
||||
# gui/game/screens.rpy:676
|
||||
old "Upload Sync"
|
||||
new "Subir Sync"
|
||||
|
||||
# gui/game/screens.rpy:680
|
||||
old "Download Sync"
|
||||
new "Descargar Sync"
|
||||
|
||||
# gui/game/screens.rpy:1412
|
||||
old "## The bubble screen is used to display dialogue to the player when using speech bubbles. The bubble screen takes the same parameters as the say screen, must create a displayable with the id of \"what\", and can create displayables with the \"namebox\", \"who\", and \"window\" ids."
|
||||
new "## La pantalla de burbujas se utiliza para mostrar el diálogo al jugador cuando se utilizan burbujas de diálogo. La pantalla de burbujas toma los mismos parámetros que la pantalla \"say\", debe crear un visualizable con el id de \"what\", y puede crear visualizables con los ids \"namebox\", \"who\", y \"window\"."
|
||||
|
||||
# gui/game/screens.rpy:1417
|
||||
old "## https://www.renpy.org/doc/html/bubble.html#bubble-screen"
|
||||
new "## https://www.renpy.org/doc/html/bubble.html#bubble-screen"
|
||||
|
||||
|
||||
@@ -40,8 +40,8 @@
|
||||
new "Android paketleri derlemek için lütfen RAPT'ı indirin, açın ve Ren'Py klasörüne atın. Ardından Ren'Py'ı yeniden başlatın."
|
||||
|
||||
# android.rpy:31
|
||||
old "A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Windows'ta Android paketleri derlemek için bir 64-bit/x64 Java 8 Development Kit gerekir. JDK, JRE'den farklıdır, bu yüzden JDK olmayan bir Java kurulumunuz olabilir.\n\nLütfen JDK'yı {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}indirin ve kurun{/a}, ardından Ren'Py'ı yeniden başlatın."
|
||||
old "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Windows'ta Android paketleri derlemek için bir 64-bit/x64 Java 8 Development Kit gerekir. JDK, JRE'den farklıdır, bu yüzden JDK olmayan bir Java kurulumunuz olabilir.\n\nLütfen JDK'yı {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}indirin ve kurun{/a}, ardından Ren'Py'ı yeniden başlatın."
|
||||
|
||||
# android.rpy:32
|
||||
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
|
||||
|
||||
@@ -38,8 +38,8 @@ translate ukrainian strings:
|
||||
new "Щоб створити пакети Android, завантажте RAPT, розархівуйте його та помістіть у каталог Ren'Py. Потім перезапустіть лаунчер Ren'Py."
|
||||
|
||||
# game/android.rpy:35
|
||||
old "A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Для створення пакетів Android у Windows потрібен 64-розрядний/x64 Java 8 Development Kit. JDK відрізняється від JRE, тому можливо, що у вас є Java без JDK.\n\nБудь ласка, {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}завантажте та встановіть JDK{/a}, а потім перезапустіть лаунчер Ren'Py."
|
||||
old "A 64-bit/x64 Java 8 Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}download and install the JDK{/a}, then restart the Ren'Py launcher."
|
||||
new "Для створення пакетів Android у Windows потрібен 64-розрядний/x64 Java 8 Development Kit. JDK відрізняється від JRE, тому можливо, що у вас є Java без JDK.\n\nБудь ласка, {a=https://adoptopenjdk.net/?variant=openjdk8&jvmVariant=hotspot}завантажте та встановіть JDK{/a}, а потім перезапустіть лаунчер Ren'Py."
|
||||
|
||||
# game/android.rpy:36
|
||||
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
|
||||
|
||||
@@ -21,7 +21,6 @@ renpy.styledata.style_selected_activate_functions gen/renpy.styledata.style_sele
|
||||
renpy.display.matrix gen/renpy.display.matrix.c
|
||||
renpy.display.render gen/renpy.display.render.c
|
||||
renpy.display.accelerator gen/renpy.display.accelerator.c
|
||||
renpy.display.quaternion gen/renpy.display.quaternion.c
|
||||
renpy.uguu.gl gen/renpy.uguu.gl.c
|
||||
renpy.uguu.uguu gen/renpy.uguu.uguu.c
|
||||
renpy.gl.gldraw gen/renpy.gl.gldraw.c
|
||||
|
||||
+16
-22
@@ -824,33 +824,27 @@ static SurfaceQueueEntry *decode_video_frame(MediaState *ms) {
|
||||
|
||||
SDL_Surface *sample = rgba_surface;
|
||||
|
||||
if (ms->sws == NULL) {
|
||||
ms->sws = sws_getContext(
|
||||
ms->video_decode_frame->width,
|
||||
ms->video_decode_frame->height,
|
||||
ms->video_decode_frame->format,
|
||||
ms->sws = sws_getCachedContext(
|
||||
ms->sws,
|
||||
|
||||
ms->video_decode_frame->width,
|
||||
ms->video_decode_frame->height,
|
||||
get_pixel_format(sample),
|
||||
ms->video_decode_frame->width,
|
||||
ms->video_decode_frame->height,
|
||||
ms->video_decode_frame->format,
|
||||
|
||||
SWS_POINT | SWS_FULL_CHR_H_INP | SWS_FULL_CHR_H_INT,
|
||||
ms->video_decode_frame->width,
|
||||
ms->video_decode_frame->height,
|
||||
get_pixel_format(rgba_surface),
|
||||
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
);
|
||||
SWS_POINT,
|
||||
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
);
|
||||
|
||||
if (!ms->sws) {
|
||||
ms->video_finished = 1;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
sws_setColorspaceDetails(ms->sws,
|
||||
sws_getCoefficients(SWS_CS_DEFAULT), 0,
|
||||
sws_getCoefficients(SWS_CS_DEFAULT), 0,
|
||||
0, 1 << 16, 1 << 16);
|
||||
if (!ms->sws) {
|
||||
ms->video_finished = 1;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
SurfaceQueueEntry *rv = av_malloc(sizeof(SurfaceQueueEntry));
|
||||
|
||||
@@ -97,9 +97,6 @@ static const char *error_msg = NULL;
|
||||
/* Have we been initialized? */
|
||||
static int initialized = 0;
|
||||
|
||||
/** Should fades be linear rather than logarithmic? */
|
||||
static int linear_fades = 0;
|
||||
|
||||
|
||||
struct Interpolate {
|
||||
/* The number of samples that are finished so far. */
|
||||
@@ -116,6 +113,7 @@ struct Interpolate {
|
||||
};
|
||||
|
||||
|
||||
|
||||
void init_interpolate(struct Interpolate *i, float value) {
|
||||
i->done = 0;
|
||||
i->duration = 0;
|
||||
@@ -158,10 +156,6 @@ static inline float get_interpolate_power(struct Interpolate *i) {
|
||||
|
||||
float log_power = get_interpolate(i);
|
||||
|
||||
if (linear_fades) {
|
||||
return log_power / MAX_POWER;
|
||||
}
|
||||
|
||||
if (log_power == MIN_POWER) {
|
||||
return 0;
|
||||
} else if (log_power == MAX_POWER) {
|
||||
@@ -356,13 +350,6 @@ static inline void mix_sample(struct Channel *c, short left_in, short right_in,
|
||||
*right_out += right * volume;
|
||||
}
|
||||
|
||||
|
||||
/** If not NULL, this can be replaced with a function that will be called
|
||||
to generate audio. The functtio is called with a consistion of 2*length
|
||||
shorts, and should fill the buffer with audio data. */
|
||||
void (*RPS_generate_audio_c_function)(float *stream, int length) = NULL;
|
||||
|
||||
|
||||
static void callback(void *userdata, Uint8 *stream, int length) {
|
||||
|
||||
// Convert the length to samples.
|
||||
@@ -373,10 +360,6 @@ static void callback(void *userdata, Uint8 *stream, int length) {
|
||||
|
||||
memset(mix_buffer, 0, length * 2 * sizeof(float));
|
||||
|
||||
if (RPS_generate_audio_c_function) {
|
||||
RPS_generate_audio_c_function(mix_buffer, length);
|
||||
}
|
||||
|
||||
for (int channel = 0; channel < num_channels; channel++) {
|
||||
|
||||
// The number of samples that have been mixed.
|
||||
@@ -1131,7 +1114,7 @@ void RPS_set_video(int channel, int video) {
|
||||
* Initializes the sound to the given frequencies, channels, and
|
||||
* sample buffer size.
|
||||
*/
|
||||
void RPS_init(int freq, int stereo, int samples, int status, int equal_mono, int linear_fades_) {
|
||||
void RPS_init(int freq, int stereo, int samples, int status, int equal_mono) {
|
||||
|
||||
if (initialized) {
|
||||
return;
|
||||
@@ -1168,8 +1151,6 @@ void RPS_init(int freq, int stereo, int samples, int status, int equal_mono, int
|
||||
|
||||
SDL_PauseAudio(0);
|
||||
|
||||
linear_fades = linear_fades_;
|
||||
|
||||
initialized = 1;
|
||||
|
||||
error(SUCCESS);
|
||||
|
||||
@@ -50,7 +50,7 @@ PyObject *RPS_read_video(int channel);
|
||||
void RPS_sample_surfaces(PyObject *rgb, PyObject *rgba);
|
||||
void RPS_set_video(int channel, int video);
|
||||
|
||||
void RPS_init(int freq, int stereo, int samples, int status, int equal_mono, int linear_fades);
|
||||
void RPS_init(int freq, int stereo, int samples, int status, int equal_mono);
|
||||
void RPS_quit(void);
|
||||
|
||||
void RPS_advance_time(void);
|
||||
@@ -58,7 +58,4 @@ void RPS_periodic(void);
|
||||
|
||||
char *RPS_get_error(void);
|
||||
|
||||
extern void (*RPS_generate_audio_c_function)(float *stream, int length);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -165,7 +165,6 @@ for p in generate_styles.prefixes:
|
||||
cython("renpy.display.matrix")
|
||||
cython("renpy.display.render", libs=[ 'z', 'm' ])
|
||||
cython("renpy.display.accelerator", libs=sdl + [ 'z', 'm' ])
|
||||
cython("renpy.display.quaternion", libs=[ 'm' ])
|
||||
|
||||
cython("renpy.uguu.gl", libs=sdl)
|
||||
cython("renpy.uguu.uguu", libs=sdl)
|
||||
|
||||
+2
-5
@@ -91,7 +91,7 @@ if PY2:
|
||||
version_tuple = VersionTuple(7, 6, 0, vc_version)
|
||||
|
||||
# The name of this version.
|
||||
version_name = "To Boldly Go"
|
||||
version_name = "TBD"
|
||||
|
||||
else:
|
||||
|
||||
@@ -99,7 +99,7 @@ else:
|
||||
version_tuple = VersionTuple(8, 1, 0, vc_version)
|
||||
|
||||
# The name of this version.
|
||||
version_name = "Where No One Has Gone Before"
|
||||
version_name = "TBD"
|
||||
|
||||
# A string giving the version number only (8.0.1.123), with a suffix if needed.
|
||||
version_only = ".".join(str(i) for i in version_tuple)
|
||||
@@ -263,8 +263,6 @@ name_blacklist = {
|
||||
"renpy.webloader.queue_lock",
|
||||
"renpy.persistent.MP_instances",
|
||||
"renpy.exports.sdl_dll",
|
||||
"renpy.sl2.slast.serial",
|
||||
"renpy.gl2.gl2draw.default_position",
|
||||
}
|
||||
|
||||
class Backup(_object):
|
||||
@@ -516,7 +514,6 @@ def import_all():
|
||||
import renpy.display.tts
|
||||
import renpy.display.gesture
|
||||
import renpy.display.model
|
||||
import renpy.display.quaternion
|
||||
|
||||
import renpy.display.error
|
||||
|
||||
|
||||
@@ -2321,41 +2321,6 @@ class UserStatement(Node):
|
||||
|
||||
return False
|
||||
|
||||
def reachable(self, is_reachable):
|
||||
"""
|
||||
This is used by lint to find statements reachable from or through
|
||||
this statement.
|
||||
"""
|
||||
|
||||
rv = self.call(
|
||||
"reachable",
|
||||
is_reachable,
|
||||
self.name,
|
||||
self.next.name if self.next is not None else None,
|
||||
self.code_block[0].name if self.code_block else None,
|
||||
)
|
||||
|
||||
if rv is None:
|
||||
|
||||
rv = set()
|
||||
|
||||
if self.call("label"):
|
||||
rv.add(self.name)
|
||||
is_reachable = True
|
||||
|
||||
if is_reachable:
|
||||
|
||||
if self.code_block:
|
||||
rv.add(self.code_block[0].name)
|
||||
|
||||
for i in self.subparses:
|
||||
if i.block:
|
||||
rv.add(i.block[0].name)
|
||||
|
||||
if self.next:
|
||||
rv.add(self.next.name)
|
||||
|
||||
return rv
|
||||
|
||||
class PostUserStatement(Node):
|
||||
|
||||
|
||||
+37
-208
@@ -126,7 +126,7 @@ def interpolate(t, a, b, type): # @ReservedAssignment
|
||||
"""
|
||||
|
||||
# Deal with booleans, nones, etc.
|
||||
if b is None or isinstance(b, (bool, basestring, renpy.display.matrix.Matrix, renpy.display.transform.Camera)):
|
||||
if b is None or isinstance(b, (bool, basestring, renpy.display.matrix.Matrix)):
|
||||
if t >= 1.0:
|
||||
return b
|
||||
else:
|
||||
@@ -228,7 +228,7 @@ def get_catmull_rom_value(t, p_1, p0, p1, p2):
|
||||
+(t - 1) * t * t * p2) / 2)
|
||||
|
||||
|
||||
# A list of atl transforms that may need to be compiled.
|
||||
# A list of atl transforms that may need to be compile.
|
||||
compile_queue = [ ]
|
||||
|
||||
|
||||
@@ -241,29 +241,11 @@ def compile_all():
|
||||
global compile_queue
|
||||
|
||||
for i in compile_queue:
|
||||
|
||||
i.atl.find_loaded_variables()
|
||||
|
||||
if i.atl.constant == GLOBAL_CONST:
|
||||
i.compile()
|
||||
|
||||
compile_queue = [ ]
|
||||
|
||||
def find_loaded_variables(expr):
|
||||
"""
|
||||
Returns the set of variables that are loaded by the given expression.
|
||||
"""
|
||||
|
||||
if expr is None:
|
||||
return set()
|
||||
|
||||
ast = renpy.pyanalysis.ccache.ast_eval(expr)
|
||||
return renpy.python.find_loaded_variables(ast)
|
||||
|
||||
|
||||
# Used to indicate that a variable is not in the context.
|
||||
NotInContext = renpy.object.Sentinel("NotInContext")
|
||||
|
||||
|
||||
# This is the context used when compiling an ATL statement. It stores the
|
||||
# scopes that are used to evaluate the various expressions in the statement,
|
||||
@@ -285,36 +267,6 @@ class Context(object):
|
||||
def __ne__(self, other):
|
||||
return not (self == other)
|
||||
|
||||
def variables_equal(self, other, variables):
|
||||
"""
|
||||
Returns true if the variables in `variables` are equal in
|
||||
this context and `other`. False if they are not equal.
|
||||
|
||||
Returns True if any variable cannot be compared.
|
||||
"""
|
||||
|
||||
try:
|
||||
|
||||
if renpy.config.at_transform_compare_full_context:
|
||||
if self.context != other.context:
|
||||
return False
|
||||
|
||||
for i in variables:
|
||||
if self.context.get(i, NotInContext) != other.context.get(i, NotInContext):
|
||||
|
||||
# Ignore the arguments given to ATL Transitions, which
|
||||
# will change each time an interaction restarts. (See #4167.)
|
||||
if i in ("new_widget", "old_widget"):
|
||||
continue
|
||||
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
except Exception:
|
||||
return True
|
||||
|
||||
|
||||
# This is intended to be subclassed by ATLTransform. It takes care of
|
||||
# managing ATL execution, which allows ATLTransform itself to not care
|
||||
# much about the contents of this file.
|
||||
@@ -335,16 +287,9 @@ class ATLTransformBase(renpy.object.Object):
|
||||
def __init__(self, atl, context, parameters):
|
||||
|
||||
# The constructor will be called by atltransform.
|
||||
|
||||
if parameters is None:
|
||||
parameters = ATLTransformBase.parameters
|
||||
else:
|
||||
|
||||
# Apply the default parameters.
|
||||
context = context.copy()
|
||||
|
||||
for k, v in parameters.parameters:
|
||||
if v is not None:
|
||||
context[k] = renpy.python.py_eval(v, locals=context)
|
||||
|
||||
# The parameters that we take.
|
||||
self.parameters = parameters
|
||||
@@ -398,7 +343,6 @@ class ATLTransformBase(renpy.object.Object):
|
||||
if renpy.game.context().init_phase:
|
||||
compile_queue.append(self)
|
||||
|
||||
|
||||
def _handles_event(self, event):
|
||||
|
||||
if (event == "replaced") and (self.atl_state is None):
|
||||
@@ -442,12 +386,13 @@ class ATLTransformBase(renpy.object.Object):
|
||||
elif t.atl is not self.atl:
|
||||
return
|
||||
|
||||
# Only take the execution state if the contexts haven't changed in
|
||||
# a way that would affect the execution of the ATL.
|
||||
|
||||
if t.atl.constant != GLOBAL_CONST:
|
||||
if not self.context.variables_equal(t.context, t.atl.find_loaded_variables()):
|
||||
# Important to do it this way, so we use __eq__. The exception handling
|
||||
# optimistically assumes that uncomparable objects are the same.
|
||||
try:
|
||||
if not (t.context == self.context):
|
||||
return
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
self.done = t.done
|
||||
self.block = t.block
|
||||
@@ -477,6 +422,10 @@ class ATLTransformBase(renpy.object.Object):
|
||||
|
||||
context = self.context.context.copy()
|
||||
|
||||
for k, v in self.parameters.parameters:
|
||||
if v is not None:
|
||||
context[k] = renpy.python.py_eval(v)
|
||||
|
||||
positional = list(self.parameters.positional)
|
||||
args = list(args)
|
||||
|
||||
@@ -700,13 +649,6 @@ class RawStatement(object):
|
||||
|
||||
self.constant = NOT_CONST
|
||||
|
||||
def find_loaded_variables(self):
|
||||
"""
|
||||
Returns the set of variables that are loaded by this statement.
|
||||
"""
|
||||
|
||||
raise Exception("find_loaded_variables not implemented.")
|
||||
|
||||
# The base class for compiled ATL Statements.
|
||||
|
||||
|
||||
@@ -764,11 +706,6 @@ class RawBlock(RawStatement):
|
||||
# and use this value for all ATLTransform that use us as an atl.
|
||||
compiled_block = None
|
||||
|
||||
# If this is the outermost ATL of a parse, a set giving the variables
|
||||
# that are loaded by this block.
|
||||
loaded_variable_cache = None
|
||||
|
||||
|
||||
def __init__(self, loc, statements, animation):
|
||||
|
||||
super(RawBlock, self).__init__(loc)
|
||||
@@ -830,20 +767,6 @@ class RawBlock(RawStatement):
|
||||
|
||||
self.constant = constant
|
||||
|
||||
def find_loaded_variables(self):
|
||||
|
||||
if self.loaded_variable_cache is not None:
|
||||
return self.loaded_variable_cache
|
||||
|
||||
variables = set()
|
||||
|
||||
for i in self.statements:
|
||||
variables.update(i.find_loaded_variables())
|
||||
|
||||
self.loaded_variable_cache = variables
|
||||
|
||||
return variables
|
||||
|
||||
|
||||
# A compiled ATL block.
|
||||
class Block(Statement):
|
||||
@@ -979,29 +902,22 @@ class Block(Statement):
|
||||
def visit(self):
|
||||
return [ j for i in self.statements for j in i.visit() ]
|
||||
|
||||
# A list of properties
|
||||
incompatible_props = {
|
||||
"alignaround" : {"xaround", "yaround", "xanchoraround", "yanchoraround"},
|
||||
"align" : {"xanchor", "yanchor", "xpos", "ypos"},
|
||||
"anchor" : {"xanchor", "yanchor"},
|
||||
"angle" : {"xpos", "ypos"},
|
||||
"around" : {"xaround", "yaround", "xanchoraround", "yanchoraround"},
|
||||
"offset" : {"xoffset", "yoffset"},
|
||||
"pos" : {"xpos", "ypos"},
|
||||
"radius" : {"xpos", "ypos"},
|
||||
"size" : {"xsize", "ysize"},
|
||||
"xalign" : {"xpos", "xanchor"},
|
||||
"xcenter" : {"xpos", "xanchor"},
|
||||
"xycenter" : {"xpos", "ypos", "xanchor", "yanchor"},
|
||||
"xysize" : {"xsize", "ysize"},
|
||||
"yalign" : {"ypos", "yanchor"},
|
||||
"ycenter" : {"ypos", "yanchor"},
|
||||
}
|
||||
|
||||
# A list of sets of pairs of properties that do not conflict.
|
||||
compatible_pairs = [
|
||||
{"radius", "angle"}
|
||||
]
|
||||
incompatible_props = {"alignaround" : {"xaround", "yaround", "xanchoraround", "yanchoraround"},
|
||||
"align" : {"xanchor", "yanchor", "xpos", "ypos"},
|
||||
"anchor" : {"xanchor", "yanchor"},
|
||||
"angle" : {"xpos", "ypos"},
|
||||
"around" : {"xaround", "yaround", "xanchoraround", "yanchoraround"},
|
||||
"offset" : {"xoffset", "yoffset"},
|
||||
"pos" : {"xpos", "ypos"},
|
||||
"radius" : {"xpos", "ypos"},
|
||||
"size" : {"xsize", "ysize"},
|
||||
"xalign" : {"xpos", "xanchor"},
|
||||
"xcenter" : {"xpos", "xanchor"},
|
||||
"xycenter" : {"xpos", "ypos", "xanchor", "yanchor"},
|
||||
"xysize" : {"xsize", "ysize"},
|
||||
"yalign" : {"ypos", "yanchor"},
|
||||
"ycenter" : {"ypos", "yanchor"},
|
||||
}
|
||||
|
||||
# This can become one of four things:
|
||||
#
|
||||
@@ -1052,14 +968,6 @@ class RawMultipurpose(RawStatement):
|
||||
old = None
|
||||
|
||||
self.properties.append((name, exprs))
|
||||
|
||||
if old is not None:
|
||||
pair = { old, name }
|
||||
|
||||
for i in compatible_pairs:
|
||||
if pair == i:
|
||||
old = None
|
||||
|
||||
return old
|
||||
|
||||
def add_expression(self, expr, with_clause):
|
||||
@@ -1179,26 +1087,6 @@ class RawMultipurpose(RawStatement):
|
||||
|
||||
self.constant = constant
|
||||
|
||||
def find_loaded_variables(self):
|
||||
rv = set()
|
||||
|
||||
rv.update(find_loaded_variables(self.warp_function))
|
||||
rv.update(find_loaded_variables(self.duration))
|
||||
rv.update(find_loaded_variables(self.circles))
|
||||
|
||||
for _name, expr in self.properties:
|
||||
rv.update(find_loaded_variables(expr))
|
||||
|
||||
for _name, exprs in self.splines:
|
||||
for expr in exprs:
|
||||
rv.update(find_loaded_variables(expr))
|
||||
|
||||
for expr, withexpr in self.expressions:
|
||||
rv.update(find_loaded_variables(expr))
|
||||
rv.update(find_loaded_variables(withexpr))
|
||||
|
||||
return rv
|
||||
|
||||
def predict(self, ctx):
|
||||
|
||||
for i, _j in self.expressions:
|
||||
@@ -1234,9 +1122,6 @@ class RawContainsExpr(RawStatement):
|
||||
def mark_constant(self, analysis):
|
||||
self.constant = analysis.is_constant_expr(self.expression)
|
||||
|
||||
def find_loaded_variables(self):
|
||||
return find_loaded_variables(self.expression)
|
||||
|
||||
|
||||
# This allows us to have multiple ATL transforms as children.
|
||||
class RawChild(RawStatement):
|
||||
@@ -1271,14 +1156,6 @@ class RawChild(RawStatement):
|
||||
|
||||
self.constant = constant
|
||||
|
||||
def find_loaded_variables(self):
|
||||
rv = set()
|
||||
|
||||
for i in self.children:
|
||||
rv.update(i.find_loaded_variables())
|
||||
|
||||
return rv
|
||||
|
||||
|
||||
# This changes the child of this statement, optionally with a transition.
|
||||
class Child(Statement):
|
||||
@@ -1367,7 +1244,6 @@ class Interpolation(Statement):
|
||||
newts.take_state(trans.state)
|
||||
|
||||
has_angle = False
|
||||
has_radius = False
|
||||
|
||||
for k, v in self.properties:
|
||||
setattr(newts, k, v)
|
||||
@@ -1376,9 +1252,6 @@ class Interpolation(Statement):
|
||||
newts.last_angle = v
|
||||
has_angle = True
|
||||
|
||||
elif k == "radius":
|
||||
has_radius = True
|
||||
|
||||
# Now, the things we change linearly are in the difference
|
||||
# between the new and old states.
|
||||
linear = trans.state.diff(newts)
|
||||
@@ -1389,7 +1262,7 @@ class Interpolation(Statement):
|
||||
revdir = self.revolution
|
||||
circles = self.circles
|
||||
|
||||
if (revdir or ((has_angle or has_radius) and renpy.config.automatic_polar_motion)) and (newts.xaround is not None):
|
||||
if (revdir or (has_angle and renpy.config.automatic_polar_motion)) and (newts.xaround is not None):
|
||||
|
||||
# Remove various irrelevant motions.
|
||||
for i in [ 'xpos', 'ypos',
|
||||
@@ -1429,22 +1302,13 @@ class Interpolation(Statement):
|
||||
|
||||
startangle += circles * 360
|
||||
|
||||
if has_radius:
|
||||
linear["radius"] = (startradius, endradius)
|
||||
|
||||
# Store the revolution.
|
||||
if has_angle:
|
||||
revolution = (startangle, endangle)
|
||||
revolution = (startangle, endangle, startradius, endradius)
|
||||
|
||||
else:
|
||||
|
||||
if has_angle:
|
||||
last_angle = trans.state.last_angle or trans.state.angle
|
||||
revolution = (last_angle, newts.last_angle)
|
||||
|
||||
if has_radius:
|
||||
linear["radius"] = (trans.state.radius, newts.radius)
|
||||
|
||||
last_angle = trans.state.last_angle or trans.state.angle
|
||||
revolution = (last_angle, newts.last_angle, trans.state.radius, newts.radius)
|
||||
|
||||
# Figure out the splines.
|
||||
for name, values in self.splines:
|
||||
@@ -1467,12 +1331,11 @@ class Interpolation(Statement):
|
||||
if old is None:
|
||||
old = (0.0, 0.0, 0.0)
|
||||
if new is not None:
|
||||
value = renpy.display.quaternion.euler_slerp(complete, old, new)
|
||||
value = renpy.display.accelerator.quaternion_slerp(complete, old, new)
|
||||
elif complete >= 1:
|
||||
value = None
|
||||
else:
|
||||
value = old
|
||||
|
||||
else:
|
||||
value = interpolate(complete, old, new, PROPERTIES[k])
|
||||
|
||||
@@ -1480,12 +1343,14 @@ class Interpolation(Statement):
|
||||
|
||||
# Handle the revolution.
|
||||
if revolution is not None:
|
||||
startangle, endangle = revolution[:2]
|
||||
startangle, endangle, startradius, endradius = revolution
|
||||
|
||||
angle = interpolate(complete, startangle, endangle, float)
|
||||
trans.state.last_angle = angle
|
||||
trans.state.angle = angle
|
||||
|
||||
trans.state.radius = interpolate(complete, startradius, endradius, float)
|
||||
|
||||
# Handle any splines we might have.
|
||||
for name, values in splines:
|
||||
value = interpolate_spline(complete, values)
|
||||
@@ -1523,8 +1388,6 @@ class RawRepeat(RawStatement):
|
||||
def mark_constant(self, analysis):
|
||||
self.constant = analysis.is_constant_expr(self.repeats)
|
||||
|
||||
def find_loaded_variables(self):
|
||||
return find_loaded_variables(self.repeats)
|
||||
|
||||
class Repeat(Statement):
|
||||
|
||||
@@ -1563,14 +1426,6 @@ class RawParallel(RawStatement):
|
||||
|
||||
self.constant = constant
|
||||
|
||||
def find_loaded_variables(self):
|
||||
rv = set()
|
||||
|
||||
for i in self.blocks:
|
||||
rv.update(i.find_loaded_variables())
|
||||
|
||||
return rv
|
||||
|
||||
|
||||
class Parallel(Statement):
|
||||
|
||||
@@ -1651,15 +1506,6 @@ class RawChoice(RawStatement):
|
||||
|
||||
self.constant = constant
|
||||
|
||||
def find_loaded_variables(self):
|
||||
rv = set()
|
||||
|
||||
for chance, block in self.choices:
|
||||
rv.update(find_loaded_variables(chance))
|
||||
rv.update(block.find_loaded_variables())
|
||||
|
||||
return rv
|
||||
|
||||
|
||||
class Choice(Statement):
|
||||
|
||||
@@ -1729,9 +1575,6 @@ class RawTime(RawStatement):
|
||||
def mark_constant(self, analysis):
|
||||
self.constant = analysis.is_constant_expr(self.time)
|
||||
|
||||
def find_loaded_variables(self):
|
||||
return find_loaded_variables(self.time)
|
||||
|
||||
|
||||
class Time(Statement):
|
||||
|
||||
@@ -1779,14 +1622,6 @@ class RawOn(RawStatement):
|
||||
|
||||
self.constant = constant
|
||||
|
||||
def find_loaded_variables(self):
|
||||
rv = set()
|
||||
|
||||
for block in self.handlers.values():
|
||||
rv.update(block.find_loaded_variables())
|
||||
|
||||
return rv
|
||||
|
||||
|
||||
class On(Statement):
|
||||
|
||||
@@ -1896,9 +1731,6 @@ class RawEvent(RawStatement):
|
||||
def mark_constant(self, analysis):
|
||||
self.constant = GLOBAL_CONST
|
||||
|
||||
def find_loaded_variables(self):
|
||||
return set()
|
||||
|
||||
|
||||
class Event(Statement):
|
||||
|
||||
@@ -1925,9 +1757,6 @@ class RawFunction(RawStatement):
|
||||
def mark_constant(self, analysis):
|
||||
self.constant = analysis.is_constant_expr(self.expr)
|
||||
|
||||
def find_loaded_variables(self):
|
||||
return find_loaded_variables(self.expr)
|
||||
|
||||
|
||||
class Function(Statement):
|
||||
|
||||
|
||||
+2
-12
@@ -80,7 +80,7 @@ def load(fn):
|
||||
elif exception.rtype == 'video':
|
||||
# Video files are downloaded by the browser, so return
|
||||
# the file name instead of a file-like object
|
||||
return 'url:' + renpy.config.web_video_base + "/" + exception.relpath
|
||||
return 'url:' + renpy.config.web_video_base + "/" + fn
|
||||
|
||||
# temporary 1s placeholder, will retry loading when looping:
|
||||
rv = open(os.path.join(renpy.config.commondir, '_dl_silence.ogg'), 'rb') # type: ignore
|
||||
@@ -448,9 +448,6 @@ class Channel(object):
|
||||
# mixer is muted.
|
||||
force_stop = self.context.force_stop or (renpy.game.preferences.mute.get(self.mixer, False) and self.stop_on_mute)
|
||||
|
||||
if global_pause and not self.loop:
|
||||
force_stop = True
|
||||
|
||||
if self.playing and force_stop:
|
||||
renpysound.stop(self.number)
|
||||
self.playing = False
|
||||
@@ -471,9 +468,6 @@ class Channel(object):
|
||||
# files. So this loop will only execute once, in practice.
|
||||
while True:
|
||||
|
||||
if global_pause:
|
||||
break
|
||||
|
||||
if self._number is not None:
|
||||
depth = renpysound.queue_depth(self.number)
|
||||
else:
|
||||
@@ -791,7 +785,6 @@ class Channel(object):
|
||||
|
||||
return renpysound.video_ready(self.number)
|
||||
|
||||
|
||||
# Use unconditional imports so these files get compiled during the build
|
||||
# process.
|
||||
|
||||
@@ -995,14 +988,11 @@ def init():
|
||||
bufsize = 8192 # works for me
|
||||
# bufsize = 16384 # jitter/silence right after starting a sound
|
||||
|
||||
if renpy.config.sound_buffer_size is not None:
|
||||
bufsize = renpy.config.sound_buffer_size
|
||||
|
||||
if 'RENPY_SOUND_BUFSIZE' in os.environ:
|
||||
bufsize = int(os.environ['RENPY_SOUND_BUFSIZE'])
|
||||
|
||||
try:
|
||||
renpysound.init(renpy.config.sound_sample_rate, 2, bufsize, False, renpy.config.equal_mono, renpy.config.linear_fades)
|
||||
renpysound.init(renpy.config.sound_sample_rate, 2, bufsize, False, renpy.config.equal_mono)
|
||||
pcm_ok = True
|
||||
except Exception:
|
||||
|
||||
|
||||
@@ -50,8 +50,6 @@ or is stopped.
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
from libc.stdint cimport uintptr_t
|
||||
|
||||
from pygame_sdl2 cimport *
|
||||
import_pygame_sdl2()
|
||||
|
||||
@@ -80,13 +78,12 @@ cdef extern from "renpysound_core.h":
|
||||
void RPS_set_video(int channel, int video)
|
||||
|
||||
void RPS_sample_surfaces(object, object)
|
||||
void RPS_init(int freq, int stereo, int samples, int status, int equal_mono, int linear_fades)
|
||||
void RPS_init(int freq, int stereo, int samples, int status, int equal_mono)
|
||||
void RPS_quit()
|
||||
|
||||
void RPS_periodic()
|
||||
char *RPS_get_error()
|
||||
|
||||
void (*RPS_generate_audio_c_function)(float *stream, int length)
|
||||
|
||||
def check_error():
|
||||
"""
|
||||
@@ -372,7 +369,7 @@ def set_video(channel, video, loop=False):
|
||||
else:
|
||||
RPS_set_video(channel, NO_VIDEO)
|
||||
|
||||
def init(freq, stereo, samples, status=False, equal_mono=False, linear_fades=False):
|
||||
def init(freq, stereo, samples, status=False, equal_mono=False):
|
||||
"""
|
||||
Initializes the audio system with the given parameters. The parameter are
|
||||
just informational - the audio system should be able to play all supported
|
||||
@@ -389,13 +386,7 @@ def init(freq, stereo, samples, status=False, equal_mono=False, linear_fades=Fal
|
||||
|
||||
`status`
|
||||
If true, the sound system will print errors out to the console.
|
||||
|
||||
`equal_mono`
|
||||
If true, the sound system will play mono files at the same volume as
|
||||
stereo files.
|
||||
|
||||
`linear_fades`
|
||||
If true, the sound system will use linear fades.
|
||||
`
|
||||
"""
|
||||
|
||||
if status:
|
||||
@@ -403,7 +394,7 @@ def init(freq, stereo, samples, status=False, equal_mono=False, linear_fades=Fal
|
||||
else:
|
||||
status = 0
|
||||
|
||||
RPS_init(freq, stereo, samples, status, equal_mono, linear_fades)
|
||||
RPS_init(freq, stereo, samples, status, equal_mono)
|
||||
check_error()
|
||||
|
||||
def quit(): # @ReservedAssignment
|
||||
@@ -428,24 +419,6 @@ def advance_time():
|
||||
|
||||
RPS_advance_time()
|
||||
|
||||
def set_generate_audio_c_function(fn):
|
||||
"""
|
||||
This can be use to set a C function that totally replaces the Ren'Py
|
||||
audio system.
|
||||
|
||||
The function is expected to have the signature void (*)(short *buf, int samples,
|
||||
and fill buf with samples samples of audio, where each sample consists of two
|
||||
shorts.
|
||||
"""
|
||||
|
||||
global RPS_generate_audio_c_function
|
||||
|
||||
if not isinstance(fn, int):
|
||||
import ctypes
|
||||
fn = ctypes.cast(fn, ctypes.c_void_p).value
|
||||
|
||||
RPS_generate_audio_c_function = <void (*)(float *, int)> <uintptr_t> fn
|
||||
|
||||
# Store the sample surfaces so they stay alive.
|
||||
rgb_surface = None
|
||||
rgba_surface = None
|
||||
|
||||
+15
-2
@@ -439,11 +439,24 @@ def load_script():
|
||||
|
||||
|
||||
@proxy_call_both
|
||||
def init(freq, stereo, samples, status=False, equal_mono=False, linear_fades=False):
|
||||
def init(freq, stereo, samples, status=False, equal_mono=False):
|
||||
"""
|
||||
Initializes the audio system with the given parameters. The parameters are
|
||||
Initializes the audio system with the given parameters. The parameter are
|
||||
just informational - the audio system should be able to play all supported
|
||||
files.
|
||||
|
||||
`freq`
|
||||
The sample frequency to play back at.
|
||||
|
||||
`stereo`
|
||||
Should we play in stereo (generally true).
|
||||
|
||||
`samples`
|
||||
The length of the sample buffer.
|
||||
|
||||
`status`
|
||||
If true, the sound system will print errors out to the console.
|
||||
`
|
||||
"""
|
||||
|
||||
load_script()
|
||||
|
||||
+1
-14
@@ -609,17 +609,14 @@ def display_say(
|
||||
if renpy.config.scry_extend:
|
||||
|
||||
scry = renpy.exports.scry().next()
|
||||
scry_count = 0
|
||||
|
||||
|
||||
while scry and scry_count < 64:
|
||||
while scry:
|
||||
if scry.extend_text is renpy.ast.DoesNotExtend:
|
||||
break
|
||||
elif scry.extend_text is not None:
|
||||
extend_text += scry.extend_text
|
||||
|
||||
scry = scry.next()
|
||||
scry_count += 1
|
||||
|
||||
if extend_text:
|
||||
extend_text = "{done}" + extend_text
|
||||
@@ -1261,11 +1258,6 @@ class ADVCharacter(object):
|
||||
if not isinstance(what, basestring):
|
||||
raise Exception("Character expects its what argument to be a string, got %r." % (what,))
|
||||
|
||||
if renpy.store._side_image_attributes_reset:
|
||||
renpy.store._side_image_attributes = None
|
||||
renpy.store._side_image_attributes_reset = False
|
||||
|
||||
|
||||
# Figure out multiple and final. Multiple is None if this is not a multiple
|
||||
# dialogue, or a step and the total number of steps in a multiple interaction.
|
||||
|
||||
@@ -1508,9 +1500,6 @@ def Character(name=NotSet, kind=None, **properties):
|
||||
be used to define a template character, and then copy that
|
||||
character with changes.
|
||||
|
||||
This can also be a namespace, in which case the 'character'
|
||||
variable in the namespace is used as the kind.
|
||||
|
||||
**Linked Image.**
|
||||
An image tag may be associated with a Character. This allows a
|
||||
say statement involving this character to display an image with
|
||||
@@ -1664,8 +1653,6 @@ def Character(name=NotSet, kind=None, **properties):
|
||||
if kind is None:
|
||||
kind = renpy.store.adv
|
||||
|
||||
kind = getattr(kind, "character", kind)
|
||||
|
||||
return type(kind)(name, kind=kind, **properties)
|
||||
|
||||
|
||||
|
||||
@@ -212,14 +212,6 @@ screen _accessibility():
|
||||
|
||||
null height 10
|
||||
|
||||
label _("Voice Volume")
|
||||
|
||||
null height 10
|
||||
|
||||
bar value Preference("voice volume")
|
||||
|
||||
null height 10
|
||||
|
||||
label _("Self-Voicing Volume Drop")
|
||||
|
||||
null height 10
|
||||
@@ -227,8 +219,6 @@ screen _accessibility():
|
||||
bar value Preference("self voicing volume drop")
|
||||
|
||||
|
||||
|
||||
|
||||
vbox:
|
||||
|
||||
text _("The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was.")
|
||||
|
||||
@@ -154,26 +154,6 @@ init -1500 python:
|
||||
def get_selected(self):
|
||||
return _preferences.get_volume(self.mixer) == self.volume
|
||||
|
||||
def GetMixer(mixer, db=False):
|
||||
"""
|
||||
:doc: audio_action
|
||||
|
||||
Returns the volume of `mixer`.
|
||||
|
||||
`db`
|
||||
If true, returns the volume in decibels. If false, the default,
|
||||
returns the volume as a number between 0.0 and 1.0.
|
||||
"""
|
||||
|
||||
import math
|
||||
|
||||
rv = _preferences.get_mixer(mixer)
|
||||
|
||||
if db:
|
||||
rv = renpy.config.volume_db_range * rv - renpy.config.volume_db_range
|
||||
|
||||
return rv
|
||||
|
||||
@renpy.pure
|
||||
class SetMute(Action, DictEquality):
|
||||
"""
|
||||
@@ -277,3 +257,4 @@ init -1500 python:
|
||||
rv = not rv
|
||||
|
||||
return rv
|
||||
|
||||
|
||||
@@ -302,11 +302,11 @@ init -1600 python:
|
||||
renpy.restart_interaction()
|
||||
|
||||
def get_selected(self):
|
||||
try:
|
||||
rv = self.dict[self.key]
|
||||
except (KeyError, IndexError):
|
||||
if self.key not in self.dict:
|
||||
return False
|
||||
|
||||
rv = self.dict[self.key]
|
||||
|
||||
if self.true_value is not None:
|
||||
rv = (rv == self.true_value)
|
||||
|
||||
|
||||
@@ -129,8 +129,6 @@ init -1500 python:
|
||||
|
||||
config.predict_file_pages = True
|
||||
|
||||
config.file_slotname_callback = None
|
||||
|
||||
def __slotname(name, page=None, slot=False):
|
||||
|
||||
if slot:
|
||||
@@ -153,13 +151,7 @@ init -1500 python:
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
page = str(page)
|
||||
name = str(name)
|
||||
|
||||
if config.file_slotname_callback is not None:
|
||||
return config.file_slotname_callback(page, name)
|
||||
else:
|
||||
return page + "-" + name
|
||||
return str(page) + "-" + str(name)
|
||||
|
||||
def __newest_slot():
|
||||
"""
|
||||
@@ -574,7 +566,7 @@ init -1500 python:
|
||||
|
||||
page = unicode(page)
|
||||
|
||||
for i in renpy.list_slots(__slotname(page, r'\d+')):
|
||||
for i in renpy.list_slots(page + "-"):
|
||||
renpy.predict(renpy.slot_screenshot(i))
|
||||
|
||||
@renpy.pure
|
||||
|
||||
@@ -414,9 +414,8 @@ init -1500 python:
|
||||
when entering the replay.
|
||||
|
||||
`locked`
|
||||
If true, this action is insensitive and will not do anything when triggered.
|
||||
If false, it will behave normally. If None, it will be locked if the label
|
||||
has not been seen in any playthrough.
|
||||
If true, this replay is locked. If false, it is unlocked. If None, the
|
||||
replay is locked if the label has not been seen in any playthrough.
|
||||
"""
|
||||
|
||||
def __init__(self, label, scope={}, locked=None):
|
||||
@@ -426,7 +425,7 @@ init -1500 python:
|
||||
|
||||
def __call__(self):
|
||||
|
||||
if not self.get_sensitive():
|
||||
if self.locked:
|
||||
return
|
||||
|
||||
if config.enter_replay_transition:
|
||||
@@ -605,8 +604,6 @@ init -1500 python:
|
||||
|
||||
The sensitivity and selectedness of this action match those
|
||||
of the `yes` action.
|
||||
|
||||
See :func:`layout.yesno_screen` for a function version of this action.
|
||||
"""
|
||||
|
||||
|
||||
@@ -697,7 +694,7 @@ init -1500 python:
|
||||
amount = delta * adjustment.step
|
||||
elif self.amount == "page":
|
||||
amount = delta * adjustment.page
|
||||
elif isinstance(self.amount, float) and not isinstance(self.amount, absolute):
|
||||
elif isinstance(self.amount) and not isinstance(self.amount, absolute):
|
||||
amount = delta * self.amount * adjustment.range
|
||||
else:
|
||||
amount = delta * self.amount
|
||||
|
||||
@@ -456,17 +456,6 @@ init -1500 python in build:
|
||||
# The itch.io project name.
|
||||
itch_project = None
|
||||
|
||||
# Maps from files to itch.io channels.
|
||||
itch_channels = [
|
||||
( "*-all.zip", "win-osx-linux" ),
|
||||
( "*-market.zip", "win-osx-linux" ),
|
||||
( "*-pc.zip", "win-linux" ),
|
||||
( "*-win.zip", "win" ),
|
||||
( "*-mac.zip", "osx" ),
|
||||
( "*-linux.tar.bz2", "linux" ),
|
||||
( "*-release.apk", "android" ),
|
||||
]
|
||||
|
||||
# Should we include the old Ren'Py themes?
|
||||
include_old_themes = True
|
||||
|
||||
@@ -563,8 +552,6 @@ init -1500 python in build:
|
||||
if itch_project:
|
||||
rv["itch_project"] = itch_project
|
||||
|
||||
rv["itch_channels"] = itch_channels
|
||||
|
||||
if mac_identity:
|
||||
rv["mac_identity"] = mac_identity
|
||||
rv["mac_codesign_command"] = mac_codesign_command
|
||||
|
||||
@@ -250,14 +250,14 @@ init -1100 python:
|
||||
config.atl_function_always_blocks = True
|
||||
|
||||
if version <= (7, 4, 11):
|
||||
config.modal_blocks_timer = False
|
||||
config.timer_blocks_pause = False
|
||||
config.modal_blocks_pause = False
|
||||
elif _compat_versions(version, (7, 5, 1), (8, 0, 1)):
|
||||
config.modal_blocks_timer = True
|
||||
config.timer_blocks_pause = True
|
||||
config.modal_blocks_pause = False
|
||||
elif _compat_versions(version, (7, 5, 2), (8, 0, 2)):
|
||||
config.modal_blocks_pause = True
|
||||
config.modal_blocks_timer = True
|
||||
config.timer_blocks_pause = True
|
||||
|
||||
if _compat_versions(version, (7, 5, 3), (8, 0, 3)):
|
||||
config.quadratic_volumes = True
|
||||
@@ -268,8 +268,7 @@ init -1100 python:
|
||||
config.history_current_dialogue = False
|
||||
config.scry_extend = False
|
||||
config.fadeout_audio = 0.0
|
||||
config.at_transform_compare_full_context = True
|
||||
config.linear_fades = True
|
||||
config.int_render_blit = True
|
||||
|
||||
if version > (6, 99, 5):
|
||||
config.search_prefixes.append("images/")
|
||||
|
||||
@@ -24,7 +24,7 @@ import renpy.exports as renpy
|
||||
from renpy.minstore import _dict, _object
|
||||
|
||||
"""renpy
|
||||
init -1200 python:
|
||||
init -1100 python:
|
||||
"""
|
||||
|
||||
class _JSONDBDict(_dict):
|
||||
@@ -111,16 +111,13 @@ class JSONDB(_object):
|
||||
For example, this can store information associated with each
|
||||
say statement, that can change how a say statement is displayed.
|
||||
|
||||
JSONDBs are not intended for data that is changed through or because
|
||||
of the player's actions. :doc:`persistent` or normal save files are
|
||||
JSONDBs are not intended for data that is changed after the game
|
||||
has been released. :doc:`persistent` or normal save files are
|
||||
better choices for that data.
|
||||
|
||||
The database should only contain data that Python can serialize to
|
||||
JSON. This includes lists, dictionaries (with strings as keys),
|
||||
strings, numbers, True, False, and None. See
|
||||
`the Python documentation <https://docs.python.org/3/library/json.html#encoders-and-decoders>`__
|
||||
about interoperability, how data converts between the two formats,
|
||||
and the various associated pitfalls.
|
||||
strings, numbers, True, False, and None.
|
||||
|
||||
The two levels of the database are dictionaries both keyed by strings.
|
||||
The first level is read only - when a key on the first level dictionary
|
||||
|
||||
@@ -54,7 +54,6 @@ init -1600 python:
|
||||
choose_renderer = ['alt_K_g', 'shift_K_g' ],
|
||||
progress_screen = [ 'alt_shift_K_p', 'meta_shift_K_p', 'K_F2' ],
|
||||
accessibility = [ 'K_a' ],
|
||||
bubble_editor = [ 'alt_K_b', 'shift_K_b' ],
|
||||
|
||||
# Accessibility.
|
||||
self_voicing = [ 'alt_K_v', 'K_v' ],
|
||||
@@ -84,7 +83,6 @@ init -1600 python:
|
||||
# Input.
|
||||
input_backspace = [ 'any_K_BACKSPACE' ],
|
||||
input_enter = [ 'K_RETURN', 'K_KP_ENTER' ],
|
||||
input_next_line = [ 'shift_K_RETURN', 'shift_K_KP_ENTER' ],
|
||||
input_left = [ 'any_K_LEFT', 'any_KP_LEFT' ],
|
||||
input_right = [ 'any_K_RIGHT', 'any_KP_RIGHT' ],
|
||||
input_up = [ 'any_K_UP', 'any_KP_UP' ],
|
||||
@@ -298,7 +296,7 @@ init -1600 python:
|
||||
dest = config.renpy_base
|
||||
|
||||
if renpy.macapp:
|
||||
dest = os.path.expanduser("~/Desktop")
|
||||
dest = os.path.expanduser(b"~/Desktop")
|
||||
|
||||
pattern = renpy.store._screenshot_pattern or config.screenshot_pattern
|
||||
|
||||
@@ -417,7 +415,8 @@ screen _progress:
|
||||
|
||||
init -1100 python:
|
||||
|
||||
# The default keymap.
|
||||
# The default keymap. We might also want to put some of this into
|
||||
# the launcher.
|
||||
_default_keymap = renpy.Keymap(
|
||||
rollback = renpy.rollback,
|
||||
screenshot = _screenshot,
|
||||
@@ -444,7 +443,6 @@ init -1100 python:
|
||||
director = director.Start(),
|
||||
performance = ToggleScreen("_performance"),
|
||||
accessibility = ToggleScreen("_accessibility"),
|
||||
bubble_editor = bubble.ToggleShown(),
|
||||
)
|
||||
|
||||
config.underlay = [ _default_keymap ]
|
||||
|
||||
@@ -438,7 +438,7 @@ python early in layeredimage:
|
||||
|
||||
class Always(Layer):
|
||||
"""
|
||||
:undocumented:
|
||||
:doc: li
|
||||
:name: Always
|
||||
|
||||
This is used for a displayable that is always shown.
|
||||
@@ -515,14 +515,11 @@ python early in layeredimage:
|
||||
displayables associated with those attribute.
|
||||
|
||||
`attributes`
|
||||
This must be a list of Attribute, Condition, ConditionGroup or
|
||||
:func:`renpy.Displayable` objects. Each one
|
||||
This must be a list of Attribute objects. Each Attribute object
|
||||
reflects a displayable that may or may not be displayed as part
|
||||
of the image. The items in this list are in back-to-front order,
|
||||
with the first item further from the viewer and the last
|
||||
closest.
|
||||
Passing a displayable directly is the equivalent of the `always`
|
||||
layeredimage statement.
|
||||
|
||||
`at`
|
||||
A transform or list of transforms that are applied to the displayable
|
||||
|
||||
+28
-26
@@ -165,17 +165,18 @@ init -1400 python hide:
|
||||
unhovered=None,
|
||||
index=None,
|
||||
**properties):
|
||||
|
||||
"""
|
||||
label - The label of this button. Will be translated if necessary.
|
||||
type - The type of this button. Used to generate the appropriate styles.
|
||||
selected - Determines if this button should be selected.
|
||||
enabled - Determines if this button should be enabled.
|
||||
clicked - A function that is run when the button is clicked.
|
||||
hovered - A function that is run when the button is hovered.
|
||||
unhovered - A function that is run when the button is unhovered.
|
||||
index - A style index. If None, label is used.
|
||||
size_group - The size_group used by this button.
|
||||
"""
|
||||
label - The label of this button. Will be translated if necessary.
|
||||
type - The type of this button. Used to generate the appropriate styles.
|
||||
selected - Determines if this button should be selected.
|
||||
enabled - Determines if this button should be enabled.
|
||||
clicked - A function that is run when the button is clicked.
|
||||
hovered - A function that is run when the button is hovered.
|
||||
unhovered - A function that is run when the button is unhovered.
|
||||
index - A style index. If None, label is used.
|
||||
size_group - The size_group used by this button.
|
||||
"""
|
||||
|
||||
if not enabled:
|
||||
clicked = None
|
||||
@@ -478,23 +479,21 @@ init -1400 python hide:
|
||||
@layout
|
||||
def yesno_screen(message, yes=None, no=None):
|
||||
"""
|
||||
:doc: other
|
||||
:doc: other
|
||||
|
||||
This causes the a yes/no prompt screen with the given message
|
||||
to be displayed. The screen will be hidden when the user hits
|
||||
yes or no.
|
||||
This causes the a yes/no prompt screen with the given message
|
||||
to be displayed. The screen will be hidden when the user hits
|
||||
yes or no.
|
||||
|
||||
`message`
|
||||
The message that will be displayed.
|
||||
`message`
|
||||
The message that will be displayed.
|
||||
|
||||
`yes`
|
||||
An action that is run when the user chooses yes.
|
||||
`yes`
|
||||
An action that is run when the user chooses yes.
|
||||
|
||||
`no`
|
||||
An action that is run when the user chooses no.
|
||||
|
||||
See :func:`Confirm` for an equivalent Action.
|
||||
"""
|
||||
`no`
|
||||
An action that is run when the user chooses no.
|
||||
"""
|
||||
if config.confirm_screen and renpy.has_screen('confirm'):
|
||||
screen = "confirm"
|
||||
elif renpy.has_screen("yesno_prompt"):
|
||||
@@ -523,15 +522,18 @@ init -1400 python hide:
|
||||
|
||||
renpy.restart_interaction()
|
||||
|
||||
elif renpy.invoke_in_new_context(layout.invoke_yesno_prompt, None, message):
|
||||
return
|
||||
|
||||
if renpy.invoke_in_new_context(layout.invoke_yesno_prompt, None, message):
|
||||
if yes is not None:
|
||||
renpy.run(yes)
|
||||
yes()
|
||||
else:
|
||||
if no is not None:
|
||||
renpy.run(no)
|
||||
no()
|
||||
|
||||
|
||||
def __auto_save_extra_info():
|
||||
return save_name
|
||||
|
||||
config.auto_save_extra_info = __auto_save_extra_info
|
||||
|
||||
|
||||
@@ -167,16 +167,17 @@ init -1500 python:
|
||||
b = oldb + (b - oldb) * done
|
||||
a = olda + (a - olda) * done
|
||||
|
||||
# Update the tint with opacity from the alpha channel.
|
||||
r = 1 - (1 - r) * a
|
||||
g = 1 - (1 - g) * a
|
||||
b = 1 - (1 - b) * a
|
||||
# To properly handle premultiplied alpha, the color channels
|
||||
# have to be multiplied by the alpha channel.
|
||||
r *= a
|
||||
g *= a
|
||||
b *= a
|
||||
|
||||
# Return a Matrix.
|
||||
return Matrix([ r, 0, 0, 0,
|
||||
0, g, 0, 0,
|
||||
0, 0, b, 0,
|
||||
0, 0, 0, 1 ])
|
||||
0, 0, 0, a ])
|
||||
|
||||
class BrightnessMatrix(ColorMatrix, DictEquality):
|
||||
"""
|
||||
|
||||
@@ -227,9 +227,9 @@ init -1500 python:
|
||||
* Preference("audio when unfocused", "disable") - Disable sounds playing when the window is not in focus.
|
||||
* Preference("audio when unfocused", "toggle") - Toggle sounds playing when the window is not in focus.
|
||||
|
||||
* Preference("web cache preload", "enable") - Will cause the web cache to be preloaded.
|
||||
* Preference("web cache preload", "disable") - Will cause the web cache to not be preloaded, and preloaded data to be deleted.
|
||||
* Preference("web cache preload", "toggle") - Will toggle the web cache preload state.
|
||||
* Preference("web preload cache", "enable") - Will cause the web cache to be preloaded.
|
||||
* Preference("web preload cache", "disable") - Will cause the web cache to not be preloaded, and preloaded data to be deleted.
|
||||
* Preference("web preload cache", "toggle") - Will toggle the web cache preload state.
|
||||
|
||||
* Preference("voice after game menu", "enable") - Will cause the voice to continue being played when entering the game menu.
|
||||
* Preference("voice after game menu", "disable") - Will cause the voice to stop being played when entering the game menu.
|
||||
@@ -545,9 +545,9 @@ init -1500 python:
|
||||
return [ SetField(_preferences, "web_cache_preload", False), ExecJS("clearCache()") ]
|
||||
elif value == "toggle":
|
||||
if _preferences.web_cache_preload:
|
||||
return Preference("web cache preload", "disable")
|
||||
return Preferences("web cache preload", "disable")
|
||||
else:
|
||||
return Preference("web cache preload", "enable")
|
||||
return Preferences("web cache preload", "enable")
|
||||
|
||||
elif name == _("voice after game menu"):
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ default bubble.tag_properties = { }
|
||||
# on the screen now.
|
||||
default bubble.current_dialogue = [ ]
|
||||
|
||||
init -1150 python in bubble:
|
||||
init -1050 python in bubble:
|
||||
|
||||
from store import config, ADVCharacter, Character, JSONDB, Action, Frame, NoRollback
|
||||
|
||||
@@ -41,14 +41,13 @@ init -1150 python in bubble:
|
||||
# The path to the json file the bubble database is stored in.
|
||||
db_filename = "bubble.json"
|
||||
|
||||
# The number of rows and columns in the grid that is used to position
|
||||
# speech bubbles.
|
||||
# The number of rows and columns in the bubble database.
|
||||
cols = 24
|
||||
rows = 24
|
||||
|
||||
# The default window area rectangle. This is expressed as squares, where units
|
||||
# are defined by the rows and columns.
|
||||
default_area = (15, 1, 8, 5)
|
||||
default_area = (0, 18, 24, 6)
|
||||
|
||||
# The property that the area is supplied as.
|
||||
area_property = "window_area"
|
||||
@@ -56,35 +55,17 @@ init -1150 python in bubble:
|
||||
# Additional properties that the player can use to customize the bubble.
|
||||
# This is a map from a property name to a list of choices that are cycled
|
||||
# through.
|
||||
properties = { }
|
||||
properties = {
|
||||
"default" : { }
|
||||
}
|
||||
|
||||
# The property group names, in order.
|
||||
properties_order = [ ]
|
||||
|
||||
# A map from property name to the (left, top, right, bottom) number of pixels
|
||||
# areas with that property are expanded by. If a property is not in this
|
||||
# map, None is tried.
|
||||
expand_area = { }
|
||||
properties_order = [ "default" ]
|
||||
|
||||
# This is set to the JSONDB object that stores the bubble database,
|
||||
# or None if the database doesn't exist yet.
|
||||
# or None if the databse doesn't exist yet.
|
||||
db = None
|
||||
|
||||
# These are not used directly, but are used by the default screens.rpy, and
|
||||
# so should not be set.
|
||||
frame = None
|
||||
thoughtframe = None
|
||||
|
||||
class ToggleShown(Action):
|
||||
def __call__(self):
|
||||
if not active and not shown.value:
|
||||
return
|
||||
|
||||
shown.value = not shown.value
|
||||
renpy.restart_interaction()
|
||||
|
||||
def get_selected(self):
|
||||
return shown.value
|
||||
|
||||
def scene_callback(layer):
|
||||
global tag_properties
|
||||
@@ -136,9 +117,6 @@ init -1150 python in bubble:
|
||||
for the given image tag.
|
||||
"""
|
||||
|
||||
if not properties_order:
|
||||
raise Exception("A speech bubble is being used, but bubble.properties has not been set.")
|
||||
|
||||
rv = { }
|
||||
|
||||
xgrid = config.screen_width / cols
|
||||
@@ -156,29 +134,6 @@ init -1150 python in bubble:
|
||||
"properties" : properties_order[0]
|
||||
}
|
||||
|
||||
def expand_area(self, area, properties_key):
|
||||
"""
|
||||
This is called to expand the area of a bubble. It is given the
|
||||
area, and the properties key, and returns a new area.
|
||||
"""
|
||||
|
||||
x, y, w, h = area
|
||||
|
||||
expand = expand_area.get(properties_key, None) or expand_area.get(None, None)
|
||||
|
||||
if expand is None:
|
||||
return area
|
||||
|
||||
left, top, right, bottom = expand
|
||||
|
||||
x = x - left
|
||||
y = y - top
|
||||
w = w + left + right
|
||||
h = h + top + bottom
|
||||
|
||||
return (x, y, w, h)
|
||||
|
||||
|
||||
def do_show(self, who, what, multiple=None, extra_properties=None):
|
||||
|
||||
if extra_properties is None:
|
||||
@@ -202,7 +157,7 @@ init -1150 python in bubble:
|
||||
properties_key = tag_properties[image_tag]["properties"]
|
||||
|
||||
extra_properties.update(properties.get(properties_key, { }))
|
||||
extra_properties[area_property] = self.expand_area(tag_properties[image_tag]["area"], properties_key)
|
||||
extra_properties[area_property] = tag_properties[image_tag]["area"]
|
||||
|
||||
return super(BubbleCharacter, self).do_show(who, what, multiple=multiple, extra_properties=extra_properties)
|
||||
|
||||
|
||||
@@ -362,7 +362,7 @@ init -1499 python in _renpysteam:
|
||||
Activates the Steam overlay, and opens the web page at `url`.
|
||||
"""
|
||||
|
||||
steamapi.SteamFriends().ActivateGameOverlayToWebPage(url.encode("utf-8"), steamapi.k_EActivateGameOverlayToWebPageMode_Default)
|
||||
steamapi.SteamFriends().ActivateGameOverlayToWebPage(url.encode("utf-8"))
|
||||
|
||||
def activate_overlay_to_store(appid, flag=None):
|
||||
"""
|
||||
|
||||
+1
-13
@@ -44,12 +44,6 @@ init -1100 python:
|
||||
config.sync_server = "https://sync.renpy.org"
|
||||
|
||||
class UploadSync(Action):
|
||||
"""
|
||||
:doc: sync
|
||||
|
||||
This action begins the process of uploading the most recent
|
||||
saves to the Ren'Py Sync server.
|
||||
"""
|
||||
|
||||
def __call__(self):
|
||||
renpy.invoke_in_new_context(_sync.upload)
|
||||
@@ -58,12 +52,6 @@ init -1100 python:
|
||||
return config.has_sync
|
||||
|
||||
class DownloadSync(Action):
|
||||
"""
|
||||
:doc: sync
|
||||
|
||||
This action begins the process of downloading a Sync from the
|
||||
Ren'Py Sync server.
|
||||
"""
|
||||
|
||||
def __call__(self):
|
||||
if renpy.invoke_in_new_context(_sync.download):
|
||||
@@ -233,7 +221,7 @@ init -1100 python in _sync:
|
||||
return None
|
||||
|
||||
|
||||
def download_content(url):
|
||||
def download_content(hashed, url):
|
||||
import emscripten
|
||||
import time
|
||||
import os
|
||||
|
||||
@@ -183,7 +183,7 @@ init -1500 python:
|
||||
if volume is None:
|
||||
return _CharacterVolumeValue(voice_tag)
|
||||
else:
|
||||
if config.quadratic_volumes:
|
||||
if config.quadratic_volume:
|
||||
return SetDict(persistent._character_volume, voice_tag, volume ** 2)
|
||||
else:
|
||||
return SetDict(persistent._character_volume, voice_tag, volume)
|
||||
|
||||
@@ -287,7 +287,7 @@ let video_start = (c) => {
|
||||
//TODO? c.playing.source.stop(context.currentTime + p.fadeout);
|
||||
//TODO? } catch (e) {
|
||||
//TODO? }
|
||||
//TODO?
|
||||
//TODO?
|
||||
//TODO? }
|
||||
|
||||
setValue(c.relative_volume.gain, p.relative_volume);
|
||||
@@ -702,13 +702,10 @@ renpyAudio.set_pan = (channel, pan, delay) => {
|
||||
linearRampToValue(control, control.value, pan, delay);
|
||||
};
|
||||
|
||||
renpyAudio.tts = (s, v) => {
|
||||
console.log("tts:", s, "volume:", v);
|
||||
|
||||
v = v || 1.0;
|
||||
renpyAudio.tts = (s) => {
|
||||
console.log("tts: " + s);
|
||||
|
||||
let u = new SpeechSynthesisUtterance(s);
|
||||
u.volume = v;
|
||||
speechSynthesis.cancel();
|
||||
speechSynthesis.speak(u);
|
||||
};
|
||||
|
||||
@@ -67,7 +67,7 @@ screen _developer:
|
||||
|
||||
if bubble.active:
|
||||
|
||||
textbutton _("Speech Bubble Editor (Shift+B)"):
|
||||
textbutton _("Speech Bubble Editor"):
|
||||
action [ SetField(bubble.shown, "value", True), Hide("_developer") ]
|
||||
|
||||
hbox:
|
||||
|
||||
@@ -179,19 +179,6 @@ if PY2:
|
||||
add_attribute(io.TextIOWrapper, "_write", io.TextIOWrapper.write)
|
||||
add_attribute(io.TextIOWrapper, "write", types.MethodType(text_write, None, io.TextIOWrapper)) # type: ignore
|
||||
|
||||
################################################################################
|
||||
# Chance the default for subprocess.Popen.
|
||||
if PY2:
|
||||
import subprocess
|
||||
class Popen(subprocess.Popen):
|
||||
def __init__(self, *args, **kwargs):
|
||||
if ("stdout" not in kwargs) and ("stderr" not in kwargs) and ("stdin" not in kwargs):
|
||||
kwargs.setdefault("close_fds", True)
|
||||
super(Popen, self).__init__(*args, **kwargs)
|
||||
|
||||
subprocess.Popen = Popen
|
||||
|
||||
|
||||
################################################################################
|
||||
# Export functions.
|
||||
|
||||
|
||||
+3
-14
@@ -97,7 +97,7 @@ savedir = None
|
||||
image_cache_size = None
|
||||
|
||||
# The size of the image cache, in megabytes.
|
||||
image_cache_size_mb = 400
|
||||
image_cache_size_mb = 300
|
||||
|
||||
# The number of statements we will analyze when doing predictive
|
||||
# loading. Please note that this is a total number of statements in a
|
||||
@@ -1373,20 +1373,9 @@ check_translate_none = True
|
||||
# Like developer, but available at the end of python early blocks.
|
||||
early_developer = False
|
||||
|
||||
# A function that returns the autosave prefix.
|
||||
autosave_prefix_callback = None
|
||||
# Does Render.blit round down its pos parameter ?
|
||||
int_render_blit = False
|
||||
|
||||
# Compatibility for c492f2f8e6de57b2740fa5d00566f445124caaba.
|
||||
at_transform_compare_full_context = False
|
||||
|
||||
# A list of callbacks when the display starts.
|
||||
display_start_callbacks = [ ]
|
||||
|
||||
# If not None, the size of the sound buffer, in bytes.
|
||||
sound_buffer_size = None
|
||||
|
||||
# If true, fades will be linear rather than logarithmic.
|
||||
linear_fades = False
|
||||
|
||||
del os
|
||||
del collections
|
||||
|
||||
@@ -163,8 +163,7 @@ ShowingSwitch = renpy.display.layout.ShowingSwitch
|
||||
AlphaMask = renpy.display.layout.AlphaMask
|
||||
Layer = renpy.display.layout.Layer
|
||||
|
||||
Transform = renpy.display.transform.Transform
|
||||
Camera = renpy.display.transform.Camera
|
||||
Transform = renpy.display.motion.Transform
|
||||
|
||||
Animation = anim.Animation
|
||||
Movie = renpy.display.video.Movie
|
||||
|
||||
+628
-728
File diff suppressed because it is too large
Load Diff
@@ -1116,9 +1116,7 @@ class Button(renpy.display.layout.Window):
|
||||
renpy.game.interface.timeout(renpy.config.longpress_duration)
|
||||
|
||||
if self.longpress_start is not None:
|
||||
if ev.type == pygame.MOUSEBUTTONUP and ev.button == 1:
|
||||
self.longpress_start = None
|
||||
elif math.hypot(x - self.longpress_x, y - self.longpress_y) > renpy.config.longpress_radius:
|
||||
if math.hypot(x - self.longpress_x, y - self.longpress_y) > renpy.config.longpress_radius:
|
||||
self.longpress_start = None
|
||||
elif st >= (self.longpress_start + renpy.config.longpress_duration):
|
||||
renpy.exports.vibrate(renpy.config.longpress_vibrate)
|
||||
@@ -1289,7 +1287,7 @@ def input_post_per_interact():
|
||||
global input_value_active
|
||||
|
||||
for i in input_values:
|
||||
if i == current_input_value:
|
||||
if i is current_input_value:
|
||||
break
|
||||
|
||||
else:
|
||||
@@ -1300,7 +1298,7 @@ def input_post_per_interact():
|
||||
|
||||
for i in inputs:
|
||||
|
||||
editable = (i.value == current_input_value) and input_value_active and i.value.editable
|
||||
editable = (i.value is current_input_value) and input_value_active and i.value.editable
|
||||
|
||||
content = i.value.get_text()
|
||||
|
||||
@@ -1367,7 +1365,6 @@ class Input(renpy.text.text.Text): # @UndefinedVariable
|
||||
edit_text = u""
|
||||
value = None
|
||||
shown = False
|
||||
multiline = False
|
||||
|
||||
st = 0
|
||||
|
||||
@@ -1387,7 +1384,6 @@ class Input(renpy.text.text.Text): # @UndefinedVariable
|
||||
value=None,
|
||||
copypaste=False,
|
||||
caret_blink=None,
|
||||
multiline=False,
|
||||
**properties):
|
||||
|
||||
super(Input, self).__init__("", style=style, replaces=replaces, substitute=False, **properties)
|
||||
@@ -1416,8 +1412,6 @@ class Input(renpy.text.text.Text): # @UndefinedVariable
|
||||
self.editable = editable
|
||||
self.pixel_width = pixel_width
|
||||
|
||||
self.multiline = multiline
|
||||
|
||||
caretprops = { 'color' : None }
|
||||
|
||||
for i, v in properties.items():
|
||||
@@ -1588,14 +1582,6 @@ class Input(renpy.text.text.Text): # @UndefinedVariable
|
||||
renpy.display.render.redraw(self, 0)
|
||||
raise renpy.display.core.IgnoreEvent()
|
||||
|
||||
elif self.multiline and map_event(ev, 'input_next_line'):
|
||||
content = self.content[:self.caret_pos] + '\n' + self.content[self.caret_pos:]
|
||||
self.caret_pos += 1
|
||||
self.update_text(content, self.editable)
|
||||
|
||||
renpy.display.render.redraw(self, 0)
|
||||
raise renpy.display.core.IgnoreEvent()
|
||||
|
||||
elif map_event(ev, "input_enter"):
|
||||
|
||||
content = self.content
|
||||
|
||||
+12
-20
@@ -84,8 +84,7 @@ controllers = { }
|
||||
axis_positions = {}
|
||||
|
||||
# The axis threshold.
|
||||
THRESHOLD = 8192 + 4096
|
||||
ZERO_THRESHOLD = 8192
|
||||
THRESHOLD = (32768 // 2)
|
||||
|
||||
# Should we ignore events?
|
||||
ignore = False
|
||||
@@ -255,28 +254,21 @@ def event(ev):
|
||||
|
||||
elif ev.type == CONTROLLERAXISMOTION:
|
||||
|
||||
pygame_sdl2.event.pump()
|
||||
events = [ ev ] + pygame.event.get(CONTROLLERAXISMOTION)
|
||||
if ev.value > THRESHOLD:
|
||||
pos = "pos"
|
||||
elif ev.value < -THRESHOLD:
|
||||
pos = "neg"
|
||||
else:
|
||||
pos = "zero"
|
||||
|
||||
for ev in events:
|
||||
old_pos = axis_positions.get((ev.which, ev.axis), None)
|
||||
|
||||
old_pos = axis_positions.get((ev.which, ev.axis), None)
|
||||
if pos == old_pos:
|
||||
return None
|
||||
|
||||
if ev.value > THRESHOLD:
|
||||
pos = "pos"
|
||||
elif ev.value < -THRESHOLD:
|
||||
pos = "neg"
|
||||
elif abs(ev.value) < ZERO_THRESHOLD:
|
||||
pos = "zero"
|
||||
else:
|
||||
pos = old_pos
|
||||
axis_positions[(ev.which, ev.axis)] = pos
|
||||
|
||||
if pos == old_pos:
|
||||
continue
|
||||
|
||||
axis_positions[(ev.which, ev.axis)] = pos
|
||||
|
||||
controller_event(get_string_for_axis(ev.axis), pos)
|
||||
controller_event(get_string_for_axis(ev.axis), pos)
|
||||
|
||||
return None
|
||||
|
||||
|
||||
+26
-85
@@ -2017,6 +2017,9 @@ class Interface(object):
|
||||
|
||||
self.old_scene = { }
|
||||
self.transition = { }
|
||||
self.ongoing_transition = { }
|
||||
self.transition_time = { }
|
||||
self.transition_from = { }
|
||||
self.suppress_transition = False
|
||||
self.quick_quit = False
|
||||
self.force_redraw = False
|
||||
@@ -2073,22 +2076,6 @@ class Interface(object):
|
||||
# Is our audio paused?
|
||||
self.audio_paused = False
|
||||
|
||||
# Transition-related:
|
||||
|
||||
# A map from layer (or None for the root) to the uninstantiate
|
||||
# transition object that's on that layer.
|
||||
self.ongoing_transition = { }
|
||||
|
||||
# The same, but for the transition after it's been called with the
|
||||
# old and new displayables.
|
||||
self.instantiated_transition = { }
|
||||
|
||||
# The time an ongoing transition started.
|
||||
self.transition_time = { }
|
||||
|
||||
# The displayable that an ongoing transition is transitioning from.
|
||||
self.transition_from = { }
|
||||
|
||||
# Init layers.
|
||||
init_layers()
|
||||
|
||||
@@ -2373,7 +2360,6 @@ class Interface(object):
|
||||
cursors = { }
|
||||
|
||||
for key, cursor_list in renpy.config.mouse.items():
|
||||
|
||||
l = [ ]
|
||||
|
||||
for i in cursor_list:
|
||||
@@ -2387,18 +2373,11 @@ class Interface(object):
|
||||
|
||||
self.cursor_cache[key] = l
|
||||
|
||||
if ("default" not in self.cursor_cache) and (None in self.cursor_cache):
|
||||
self.cursor_cache["default"] = self.cursor_cache[None]
|
||||
|
||||
s = "Total time until interface ready: {}s.".format(time.time() - import_time)
|
||||
|
||||
if renpy.android and not renpy.config.log_to_stdout:
|
||||
print(s)
|
||||
|
||||
for i in renpy.config.display_start_callbacks:
|
||||
i()
|
||||
|
||||
|
||||
def post_init(self):
|
||||
"""
|
||||
This is called after display init, but before the window is created.
|
||||
@@ -2409,7 +2388,6 @@ class Interface(object):
|
||||
pygame.display.hint("SDL_TOUCH_MOUSE_EVENTS", "1")
|
||||
pygame.display.hint("SDL_MOUSE_TOUCH_EVENTS", "0")
|
||||
pygame.display.hint("SDL_EMSCRIPTEN_ASYNCIFY", "0")
|
||||
pygame.display.hint("SDL_IME_SHOW_UI", "1")
|
||||
|
||||
if renpy.config.mouse_focus_clickthrough:
|
||||
pygame.display.hint("SDL_MOUSE_FOCUS_CLICKTHROUGH", "1")
|
||||
@@ -2473,9 +2451,6 @@ class Interface(object):
|
||||
square_im.blit(im, ((imax - iw) // 2, (imax - ih) // 2))
|
||||
im = square_im
|
||||
|
||||
if im.get_size()[0] > 1024:
|
||||
im = renpy.display.scale.smoothscale(im, (1024, 1024))
|
||||
|
||||
pygame.display.set_icon(im)
|
||||
except renpy.webloader.DownloadNeeded:
|
||||
pass
|
||||
@@ -2944,7 +2919,6 @@ class Interface(object):
|
||||
for l in layers:
|
||||
if l is None:
|
||||
self.ongoing_transition.pop(None, None)
|
||||
self.instantiated_transition.pop(None, None)
|
||||
self.transition_time.pop(None, None)
|
||||
self.transition_from.pop(None, None)
|
||||
continue
|
||||
@@ -2954,7 +2928,6 @@ class Interface(object):
|
||||
|
||||
if (self.frame_time - start) >= delay:
|
||||
self.ongoing_transition.pop(l, None)
|
||||
self.instantiated_transition.pop(l, None)
|
||||
self.transition_time.pop(l, None)
|
||||
self.transition_from.pop(l, None)
|
||||
|
||||
@@ -3165,9 +3138,6 @@ class Interface(object):
|
||||
if interaction and (mouse_kind is None):
|
||||
mouse_kind = self.mouse
|
||||
|
||||
if mouse_kind is None:
|
||||
mouse_kind = "default"
|
||||
|
||||
if pygame.mouse.get_pressed()[0]:
|
||||
mouse_kind = "pressed_" + mouse_kind # type: ignore
|
||||
|
||||
@@ -3358,7 +3328,6 @@ class Interface(object):
|
||||
|
||||
# Stop ongoing transitions.
|
||||
self.ongoing_transition.clear()
|
||||
self.instantiated_transition.clear()
|
||||
self.transition_from.clear()
|
||||
self.transition_time.clear()
|
||||
|
||||
@@ -3644,9 +3613,6 @@ class Interface(object):
|
||||
else:
|
||||
renpy.plog(1, "end idle_frame (inexpensive)")
|
||||
|
||||
# This gets assigned below.
|
||||
take_layer_displayable = None
|
||||
|
||||
def interact_core(self,
|
||||
show_mouse=True,
|
||||
trans_pause=False,
|
||||
@@ -3708,14 +3674,11 @@ class Interface(object):
|
||||
self.suppress_transition = False
|
||||
|
||||
# Figure out transitions.
|
||||
if suppress_transition or renpy.game.after_rollback:
|
||||
if suppress_transition:
|
||||
self.ongoing_transition.clear()
|
||||
self.instantiated_transition.clear()
|
||||
self.transition_from.clear()
|
||||
self.transition_time.clear()
|
||||
|
||||
if not suppress_transition:
|
||||
|
||||
else:
|
||||
for k, t in self.transition.items():
|
||||
if k not in self.old_scene:
|
||||
continue
|
||||
@@ -3828,29 +3791,6 @@ class Interface(object):
|
||||
layers_root = renpy.display.layout.MultiBox(layout='fixed')
|
||||
layers_root.layers = { }
|
||||
|
||||
def instantiate_transition(layer, old_d, new_d):
|
||||
"""
|
||||
Create a transition that will be used to transition `layer` (which
|
||||
can be None) to `d`.
|
||||
"""
|
||||
|
||||
old_trans = self.instantiated_transition.get(layer, None)
|
||||
|
||||
trans = self.ongoing_transition[layer](
|
||||
old_widget=old_d,
|
||||
new_widget=new_d)
|
||||
|
||||
if not isinstance(trans, Displayable):
|
||||
raise Exception("Expected transition to be a displayable, not a %r" % trans)
|
||||
|
||||
if isinstance(trans, renpy.display.transform.Transform) and isinstance(old_trans, renpy.display.transform.Transform):
|
||||
trans.take_state(old_trans)
|
||||
trans.take_execution_state(old_trans)
|
||||
|
||||
self.instantiated_transition[layer] = trans
|
||||
|
||||
return trans
|
||||
|
||||
def add_layer(where, layer):
|
||||
|
||||
scene_layer = scene[layer]
|
||||
@@ -3859,7 +3799,12 @@ class Interface(object):
|
||||
if (self.ongoing_transition.get(layer, None) and
|
||||
not suppress_transition):
|
||||
|
||||
trans = instantiate_transition(layer, self.transition_from[layer], scene_layer)
|
||||
trans = self.ongoing_transition[layer](
|
||||
old_widget=self.transition_from[layer],
|
||||
new_widget=scene_layer)
|
||||
|
||||
if not isinstance(trans, Displayable):
|
||||
raise Exception("Expected transition to be a displayable, not a %r" % trans)
|
||||
|
||||
transition_time = self.transition_time.get(layer, None)
|
||||
|
||||
@@ -3890,7 +3835,9 @@ class Interface(object):
|
||||
old_root.layers[layer] = d
|
||||
old_root.add(d)
|
||||
|
||||
trans = instantiate_transition(None, old_root, layers_root)
|
||||
trans = self.ongoing_transition[None](
|
||||
old_widget=old_root,
|
||||
new_widget=layers_root)
|
||||
|
||||
if not isinstance(trans, Displayable):
|
||||
raise Exception("Expected transition to be a displayable, not a %r" % trans)
|
||||
@@ -3949,29 +3896,23 @@ class Interface(object):
|
||||
# caused by an exception propagating through this function.
|
||||
try:
|
||||
|
||||
# Call per-interaction code for all displayables.
|
||||
def take_layer_displayable(ld):
|
||||
"""
|
||||
This is called by a layer displayable to add the layer's
|
||||
contents to the layer displayable.
|
||||
"""
|
||||
# Insert layers into Layer displayables.
|
||||
def per_interact(i):
|
||||
if isinstance(i, renpy.display.layout.Layer):
|
||||
if i.layer in scene:
|
||||
i.layers = layer_transitions
|
||||
add_layer(i, i.layer)
|
||||
del i.layers
|
||||
else:
|
||||
i.add(null)
|
||||
|
||||
if ld.layer in scene:
|
||||
ld.layers = layer_transitions
|
||||
add_layer(ld, ld.layer)
|
||||
del ld.layers
|
||||
else:
|
||||
ld.add(null)
|
||||
|
||||
self.take_layer_displayable = take_layer_displayable
|
||||
i.per_interact()
|
||||
|
||||
# Call per-interaction code for all widgets.
|
||||
renpy.display.behavior.input_pre_per_interact()
|
||||
root_widget.visit_all(lambda d : d.per_interact())
|
||||
root_widget.visit_all(per_interact)
|
||||
renpy.display.behavior.input_post_per_interact()
|
||||
|
||||
self.take_layer_displayable = None
|
||||
|
||||
|
||||
# Consolidate static and layer transitions for later processing.
|
||||
if layer_transitions:
|
||||
layer_transitions.update(layers_root.layers)
|
||||
|
||||
@@ -471,8 +471,8 @@ class Drag(renpy.display.core.Displayable, renpy.revertable.RevertableObject):
|
||||
Changes the child of this drag to `d`.
|
||||
"""
|
||||
|
||||
d.per_interact()
|
||||
self.child = renpy.easy.displayable(d)
|
||||
self.child.per_interact()
|
||||
renpy.display.render.invalidate(self)
|
||||
|
||||
def top(self):
|
||||
|
||||
+8
-29
@@ -71,15 +71,7 @@ class CacheEntry(object):
|
||||
rv += self.width * self.height
|
||||
|
||||
if self.texture is not None:
|
||||
|
||||
has_mipmaps = getattr(self.texture, "has_mipmaps", None)
|
||||
|
||||
if has_mipmaps and has_mipmaps():
|
||||
mipmap_multiplier = 1.34
|
||||
else:
|
||||
mipmap_multiplier = 1.0
|
||||
|
||||
rv += int(self.bounds[2] * self.bounds[3] * mipmap_multiplier)
|
||||
rv += self.bounds[2] * self.bounds[3]
|
||||
|
||||
return rv
|
||||
|
||||
@@ -384,9 +376,14 @@ class Cache(object):
|
||||
pass
|
||||
|
||||
if not predict:
|
||||
rv = ce.texture
|
||||
|
||||
if render:
|
||||
return make_render(ce)
|
||||
else:
|
||||
rv = ce.texture
|
||||
else:
|
||||
rv = None
|
||||
|
||||
else:
|
||||
rv = ce.surf
|
||||
|
||||
@@ -397,14 +394,11 @@ class Cache(object):
|
||||
|
||||
ce.surf = None
|
||||
|
||||
if texture and render and not predict:
|
||||
return make_render(ce)
|
||||
|
||||
if (ce.surf is None) and (ce.texture is None):
|
||||
with self.lock:
|
||||
self.kill(ce)
|
||||
|
||||
# Done. Return the surface or texture.
|
||||
# Done... return the surface.
|
||||
return rv
|
||||
|
||||
# This kills off a given cache entry.
|
||||
@@ -2069,21 +2063,6 @@ def load_surface(im):
|
||||
|
||||
return cache.get(image(im))
|
||||
|
||||
def load_rgba(data, size):
|
||||
"""
|
||||
:name: renpy.load_rgba
|
||||
:doc: udd_utility
|
||||
|
||||
Loads the image data `bytes` into a texture of size `size`, and return it.
|
||||
|
||||
`data`
|
||||
Should be a bytes object containing the image data in RGBA8888 order.
|
||||
"""
|
||||
|
||||
surf = renpy.display.pgrender.surface(size, True)
|
||||
surf.from_data(data)
|
||||
return renpy.display.draw.load_texture(surf)
|
||||
|
||||
|
||||
def reset_module():
|
||||
print("Resetting cache.")
|
||||
|
||||
+13
-16
@@ -484,7 +484,7 @@ class ImageReference(renpy.display.core.Displayable):
|
||||
|
||||
def _handles_event(self, event):
|
||||
if self.target is None:
|
||||
self.find_target()
|
||||
return False
|
||||
|
||||
return self.target._handles_event(event)
|
||||
|
||||
@@ -745,7 +745,7 @@ class DynamicImage(renpy.display.core.Displayable):
|
||||
|
||||
def _handles_event(self, event):
|
||||
if self.target is None:
|
||||
self.find_target()
|
||||
return False
|
||||
|
||||
return self.target._handles_event(event)
|
||||
|
||||
@@ -1006,8 +1006,7 @@ class ShownImageInfo(renpy.object.Object):
|
||||
|
||||
if ca:
|
||||
ca_required = [ i for i in required if i not in attrs ]
|
||||
ca_optional = [ i for i in optional if i not in attrs if i not in required ]
|
||||
|
||||
ca_optional = [ i for i in optional if i not in attrs ]
|
||||
newattrs = ca(tag, ca_required, ca_optional)
|
||||
|
||||
if newattrs is None:
|
||||
@@ -1015,21 +1014,19 @@ class ShownImageInfo(renpy.object.Object):
|
||||
|
||||
attrs = attrs + newattrs
|
||||
|
||||
else:
|
||||
num_required = 0
|
||||
|
||||
num_required = 0
|
||||
|
||||
for i in attrs:
|
||||
if i in required:
|
||||
num_required += 1
|
||||
continue
|
||||
|
||||
# We don't have any not-found attributes. But we might not
|
||||
# have all of the attributes.
|
||||
|
||||
if num_required != len(required):
|
||||
for i in attrs:
|
||||
if i in required:
|
||||
num_required += 1
|
||||
continue
|
||||
|
||||
# We don't have any not-found attributes. But we might not
|
||||
# have all of the attributes.
|
||||
|
||||
if num_required != len(required):
|
||||
continue
|
||||
|
||||
len_attrs = len(set(attrs))
|
||||
|
||||
if len_attrs < max_len:
|
||||
|
||||
@@ -580,8 +580,8 @@ class Frame(renpy.display.core.Displayable):
|
||||
return rv
|
||||
|
||||
def visit(self):
|
||||
rv = [ self.image ]
|
||||
self.style._visit_frame(rv.append)
|
||||
rv = [ ]
|
||||
self.style._visit_frame(rv)
|
||||
return rv
|
||||
|
||||
|
||||
|
||||
@@ -2469,9 +2469,3 @@ class Layer(AdjustTimes):
|
||||
|
||||
seen.add(id_d)
|
||||
d.visit_all(callback, seen)
|
||||
|
||||
def per_interact(self):
|
||||
if renpy.game.interface and renpy.game.interface.take_layer_displayable:
|
||||
renpy.game.interface.take_layer_displayable(self)
|
||||
|
||||
super(Layer, self).per_interact()
|
||||
|
||||
@@ -247,7 +247,7 @@ def bilinear_scale(src, dst, sx=0, sy=0, sw=None, sh=None, dx=0, dy=0, dw=None,
|
||||
_renpy.bilinear(src, dst, sx, sy, sw, sh, dx, dy, dw, dh, precise=precise)
|
||||
|
||||
|
||||
self = _renpy.transform
|
||||
transform = _renpy.transform
|
||||
|
||||
# Note: Blend requires all surfaces to be the same size.
|
||||
blend = _renpy.blend
|
||||
|
||||
@@ -1,197 +0,0 @@
|
||||
#cython: profile=False
|
||||
# Copyright 2004-2023 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.
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
from libc.math cimport sin, cos, atan2, asin, acos
|
||||
|
||||
DEF pi = 3.14159265358979323846
|
||||
|
||||
cdef double radians(double degrees):
|
||||
return degrees * pi / 180.0
|
||||
|
||||
|
||||
cdef double degrees(double radians):
|
||||
return radians * 180.0 / pi
|
||||
|
||||
|
||||
def euler_slerp(double complete, old, new):
|
||||
"""
|
||||
Use quaternions to interpolate between two euler angles.
|
||||
"""
|
||||
|
||||
cdef double coeff1
|
||||
cdef double coeff2
|
||||
cdef double cosx_cosp
|
||||
cdef double cosz_cosp1
|
||||
cdef double cosz_cosp2
|
||||
cdef double cx
|
||||
cdef double cy
|
||||
cdef double cz
|
||||
cdef double dot
|
||||
cdef double new_q_w
|
||||
cdef double new_q_x
|
||||
cdef double new_q_y
|
||||
cdef double new_q_z
|
||||
cdef double new_x
|
||||
cdef double new_x_div_2
|
||||
cdef double new_y
|
||||
cdef double new_y_div_2
|
||||
cdef double new_z
|
||||
cdef double new_z_div_2
|
||||
cdef double old_q_mul_new_q
|
||||
cdef double old_q_w
|
||||
cdef double old_q_x
|
||||
cdef double old_q_y
|
||||
cdef double old_q_z
|
||||
cdef double old_x
|
||||
cdef double old_x_div_2
|
||||
cdef double old_y
|
||||
cdef double old_y_div_2
|
||||
cdef double old_z
|
||||
cdef double old_z_div_2
|
||||
cdef double q_w
|
||||
cdef double q_x
|
||||
cdef double q_y
|
||||
cdef double q_z
|
||||
cdef double sinx_cosp
|
||||
cdef double siny
|
||||
cdef double sinz_cosp1
|
||||
cdef double sinz_cosp2
|
||||
cdef double sout
|
||||
cdef double st
|
||||
cdef double sut
|
||||
cdef double sx
|
||||
cdef double sy
|
||||
cdef double sz
|
||||
cdef double theta
|
||||
cdef double x
|
||||
cdef double y
|
||||
cdef double z
|
||||
|
||||
if old == new:
|
||||
return new
|
||||
|
||||
#select the shorten root
|
||||
old_x, old_y, old_z = old
|
||||
old_x = old_x % 360
|
||||
old_y = old_y % 360
|
||||
old_z = old_z % 360
|
||||
new_x, new_y, new_z = new
|
||||
new_x = new_x % 360
|
||||
new_y = new_y % 360
|
||||
new_z = new_z % 360
|
||||
if new_x - old_x > 180:
|
||||
new_x = new_x - 360
|
||||
if new_y - old_y > 180:
|
||||
new_y = new_y - 360
|
||||
if new_z - old_z > 180:
|
||||
new_z = new_z - 360
|
||||
|
||||
|
||||
#z-y-x Euler angles to quaternion conversion
|
||||
#https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles
|
||||
old_x_div_2 = radians(old_x) * 0.5
|
||||
old_y_div_2 = radians(old_y) * 0.5
|
||||
old_z_div_2 = radians(old_z) * 0.5
|
||||
cx = cos(old_x_div_2)
|
||||
sx = sin(old_x_div_2)
|
||||
cy = cos(old_y_div_2)
|
||||
sy = sin(old_y_div_2)
|
||||
cz = cos(old_z_div_2)
|
||||
sz = sin(old_z_div_2)
|
||||
|
||||
old_q_x = sx * cy * cz - cx * sy * sz
|
||||
old_q_y = cx * sy * cz + sx * cy * sz
|
||||
old_q_z = cx * cy * sz - sx * sy * cz
|
||||
old_q_w = cx * cy * cz + sx * sy * sz
|
||||
|
||||
new_x_div_2 = radians(new_x) * 0.5
|
||||
new_y_div_2 = radians(new_y) * 0.5
|
||||
new_z_div_2 = radians(new_z) * 0.5
|
||||
cx = cos(new_x_div_2)
|
||||
sx = sin(new_x_div_2)
|
||||
cy = cos(new_y_div_2)
|
||||
sy = sin(new_y_div_2)
|
||||
cz = cos(new_z_div_2)
|
||||
sz = sin(new_z_div_2)
|
||||
|
||||
new_q_x = sx * cy * cz - cx * sy * sz
|
||||
new_q_y = cx * sy * cz + sx * cy * sz
|
||||
new_q_z = cx * cy * sz - sx * sy * cz
|
||||
new_q_w = cx * cy * cz + sx * sy * sz
|
||||
|
||||
|
||||
#calculate new quaternion between old and new.
|
||||
old_q_mul_new_q = (old_q_x * new_q_x + old_q_y * new_q_y + old_q_z * new_q_z + old_q_w * new_q_w)
|
||||
dot = old_q_mul_new_q
|
||||
if dot > 1.0:
|
||||
dot = 1.0
|
||||
elif dot < -1.0:
|
||||
dot = -1.0
|
||||
theta = abs(acos(dot))
|
||||
|
||||
st = sin(theta)
|
||||
|
||||
sut = sin(theta * complete)
|
||||
sout = sin(theta * (1 - complete))
|
||||
|
||||
coeff1 = sout / st
|
||||
coeff2 = sut / st
|
||||
|
||||
q_x = coeff1 * old_q_x + coeff2 * new_q_x
|
||||
q_y = coeff1 * old_q_y + coeff2 * new_q_y
|
||||
q_z = coeff1 * old_q_z + coeff2 * new_q_z
|
||||
q_w = coeff1 * old_q_w + coeff2 * new_q_w
|
||||
|
||||
|
||||
#Quaternion to z-y-x Euler angles conversion
|
||||
#https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles
|
||||
sinx_cosp = 2 * (q_w * q_x + q_y * q_z)
|
||||
cosx_cosp = 1 - 2 * (q_x * q_x + q_y * q_y)
|
||||
siny = 2 * (q_w * q_y - q_z * q_x)
|
||||
sinz_cosp1 = 2 * (q_x * q_y - q_w * q_z)
|
||||
cosz_cosp1 = 1 - 2 * (q_x * q_x + q_z * q_z)
|
||||
sinz_cosp2 = 2 * (q_w * q_z + q_x * q_y)
|
||||
cosz_cosp2 = 1 - 2 * (q_y * q_y + q_z * q_z)
|
||||
|
||||
if siny >= 1:
|
||||
x = 0
|
||||
y = pi/2
|
||||
z = atan2(sinz_cosp1, cosz_cosp1)
|
||||
elif siny <= -1:
|
||||
x = 0
|
||||
y = -pi/2
|
||||
z = atan2(sinz_cosp1, cosz_cosp1)
|
||||
else:
|
||||
x = atan2(sinx_cosp, cosx_cosp)
|
||||
if siny > 1.0:
|
||||
siny = 1.0
|
||||
elif siny < -1.0:
|
||||
siny = -1.0
|
||||
y = asin(siny)
|
||||
z = atan2(sinz_cosp2, cosz_cosp2)
|
||||
x = degrees(x) % 360
|
||||
y = degrees(y) % 360
|
||||
z = degrees(z) % 360
|
||||
|
||||
return (x, y, z)
|
||||
+19
-62
@@ -414,7 +414,10 @@ def redraw_time():
|
||||
|
||||
def redraw(d, when):
|
||||
"""
|
||||
Documented in cdd.rst.
|
||||
:doc: udd_utility
|
||||
|
||||
Causes the displayable `d` to be redrawn after `when` seconds have
|
||||
elapsed.
|
||||
"""
|
||||
|
||||
if not renpy.game.interface:
|
||||
@@ -783,7 +786,8 @@ cdef class Render:
|
||||
If `focus` is true, then focuses are added from the child to the
|
||||
parent.
|
||||
|
||||
This will only blit on integer pixel boundaries.
|
||||
The elements of `pos` are interpreted as a ``position`` :
|
||||
int and absolute are numbers of pixels, pure-float is relative to the size of this render.
|
||||
"""
|
||||
|
||||
if source is self:
|
||||
@@ -795,8 +799,15 @@ cdef class Render:
|
||||
|
||||
(xo, yo) = pos
|
||||
|
||||
xo = int(xo)
|
||||
yo = int(yo)
|
||||
if renpy.config.int_render_blit:
|
||||
xo = int(xo)
|
||||
yo = int(yo)
|
||||
else:
|
||||
if type(xo) is float:
|
||||
xo *= self.width
|
||||
if type(yo) is float:
|
||||
yo *= self.height
|
||||
# no need to convert to absolute
|
||||
|
||||
if index is None:
|
||||
self.children.append((source, xo, yo, focus, main))
|
||||
@@ -809,73 +820,19 @@ cdef class Render:
|
||||
|
||||
return 0
|
||||
|
||||
cpdef int subpixel_blit(Render self, source, tuple pos, object focus=True, object main=True, object index=None):
|
||||
cpdef int absolute_blit(Render self, source, tuple pos, *args, **kwargs):
|
||||
"""
|
||||
Blits `source` (a Render, Surface, or GL2Model) to this Render, offset by
|
||||
xo and yo.
|
||||
|
||||
If `focus` is true, then focuses are added from the child to the
|
||||
parent.
|
||||
|
||||
This blits at fractional pixel boundaries.
|
||||
An proxy for blit that blits at fractional pixel boundaries.
|
||||
"""
|
||||
|
||||
if source is self:
|
||||
raise Exception("Blitting to self.")
|
||||
|
||||
if models:
|
||||
if isinstance(source, pygame.Surface):
|
||||
source = renpy.display.draw.load_texture(source)
|
||||
|
||||
(xo, yo) = pos
|
||||
|
||||
xo = float(xo)
|
||||
yo = float(yo)
|
||||
|
||||
if index is None:
|
||||
self.children.append((source, xo, yo, focus, main))
|
||||
else:
|
||||
self.children.insert(index, (source, xo, yo, focus, main))
|
||||
|
||||
if isinstance(source, Render):
|
||||
self.depends_on_list.append(source)
|
||||
source.parents.add(self)
|
||||
|
||||
return 0
|
||||
|
||||
cpdef int absolute_blit(Render self, source, tuple pos, object focus=True, object main=True, object index=None):
|
||||
"""
|
||||
Blits `source` (a Render or Surface) to this Render, offset by
|
||||
xo and yo.
|
||||
|
||||
If `focus` is true, then focuses are added from the child to the
|
||||
parent.
|
||||
|
||||
This blits at fractional pixel boundaries.
|
||||
"""
|
||||
|
||||
if source is self:
|
||||
raise Exception("Blitting to self.")
|
||||
|
||||
if models:
|
||||
if isinstance(source, pygame.Surface):
|
||||
source = renpy.display.draw.load_texture(source)
|
||||
|
||||
(xo, yo) = pos
|
||||
|
||||
xo = renpy.display.core.absolute(xo)
|
||||
yo = renpy.display.core.absolute(yo)
|
||||
|
||||
if index is None:
|
||||
self.children.append((source, xo, yo, focus, main))
|
||||
else:
|
||||
self.children.insert(index, (source, xo, yo, focus, main))
|
||||
return self.blit(source, (xo, yo), *args, **kwargs)
|
||||
|
||||
if isinstance(source, Render):
|
||||
self.depends_on_list.append(source)
|
||||
source.parents.add(self)
|
||||
|
||||
return 0
|
||||
subpixel_blit = absolute_blit # legacy
|
||||
|
||||
|
||||
def get_size(self):
|
||||
|
||||
@@ -1002,9 +1002,6 @@ def prepare_screens():
|
||||
s.ast.unprepare_screen()
|
||||
s.ast.prepare_screen()
|
||||
|
||||
# Compile ATL in screens.
|
||||
renpy.atl.compile_all()
|
||||
|
||||
prepared = True
|
||||
|
||||
finally:
|
||||
|
||||
@@ -558,7 +558,7 @@ def draw_transformed(dest, clip, what, xo, yo, alpha, forward, reverse):
|
||||
|
||||
dest = dest.subsurface((minx, miny, maxx - minx, maxy - miny))
|
||||
|
||||
renpy.display.module.self(
|
||||
renpy.display.module.transform(
|
||||
what, dest,
|
||||
cx, cy,
|
||||
forward.xdx, forward.ydx,
|
||||
|
||||
+21
-119
@@ -31,25 +31,9 @@ import types # @UnresolvedImport
|
||||
|
||||
import renpy
|
||||
from renpy.display.layout import Container
|
||||
from renpy.display.accelerator import RenderTransform
|
||||
from renpy.display.accelerator import transform_render
|
||||
from renpy.atl import position, any_object, bool_or_none, float_or_none, matrix, mesh
|
||||
|
||||
|
||||
class Camera(renpy.object.Object):
|
||||
"""
|
||||
:doc: point_to_camera
|
||||
|
||||
Instances of this class can be used with point_to to point
|
||||
at the location of the camera for a particular layer.
|
||||
|
||||
`layer`
|
||||
The name of the layer.
|
||||
"""
|
||||
|
||||
def __init__(self, layer="master"):
|
||||
self.layer = layer
|
||||
|
||||
|
||||
# The null object that's used if we don't have a defined child.
|
||||
null = None
|
||||
|
||||
@@ -65,99 +49,40 @@ def get_null():
|
||||
|
||||
# Convert a position from cartesian to polar coordinates.
|
||||
|
||||
def cartesian_to_polar(x, y, xaround, yaround, available_width, available_height):
|
||||
|
||||
def cartesian_to_polar(x, y, xaround, yaround):
|
||||
"""
|
||||
Converts cartesian coordinates to polar coordinates.
|
||||
"""
|
||||
|
||||
tx = type(x)
|
||||
ty = type(y)
|
||||
|
||||
if not available_width:
|
||||
available_width = renpy.config.screen_width
|
||||
|
||||
if not available_height:
|
||||
available_height = renpy.config.screen_height
|
||||
|
||||
if type(xaround) is float:
|
||||
xaround = int(xaround * available_width)
|
||||
|
||||
if type(yaround) is float:
|
||||
yaround = int(yaround * available_height)
|
||||
|
||||
if tx is float:
|
||||
x = x * available_width
|
||||
|
||||
if ty is float:
|
||||
y = y * available_height
|
||||
|
||||
dx = x - xaround
|
||||
dy = y - yaround
|
||||
|
||||
|
||||
|
||||
if tx is float:
|
||||
if available_width:
|
||||
dx /= available_width
|
||||
else:
|
||||
dx = x
|
||||
|
||||
if ty is float:
|
||||
dy /= available_height
|
||||
|
||||
radius = math.hypot(dx, dy)
|
||||
angle = math.atan2(dx, -dy) / math.pi * 180
|
||||
|
||||
if angle < 0:
|
||||
angle += 360
|
||||
|
||||
radius = tx(radius)
|
||||
|
||||
print("AR", angle, radius)
|
||||
|
||||
return angle, radius
|
||||
|
||||
|
||||
def polar_to_cartesian(angle, radius, xaround, yaround, available_width, available_height):
|
||||
def polar_to_cartesian(angle, radius, xaround, yaround):
|
||||
"""
|
||||
Converts polar coordinates to cartesian coordinates.
|
||||
Converts polart coordinates to cartesian coordinates.
|
||||
"""
|
||||
|
||||
tr = type(radius)
|
||||
|
||||
if not available_width:
|
||||
available_width = renpy.config.screen_width
|
||||
|
||||
if not available_height:
|
||||
available_height = renpy.config.screen_height
|
||||
|
||||
if type(xaround) is float:
|
||||
xaround = int(xaround * available_width)
|
||||
|
||||
if type(yaround) is float:
|
||||
yaround = int(yaround * available_height)
|
||||
|
||||
angle = angle * math.pi / 180
|
||||
|
||||
dx = radius * math.sin(angle)
|
||||
dy = -radius * math.cos(angle)
|
||||
|
||||
x = xaround + dx
|
||||
y = yaround + dy
|
||||
|
||||
if tr is float:
|
||||
x /= available_width
|
||||
y /= available_height
|
||||
|
||||
x = tr(x)
|
||||
y = tr(y)
|
||||
|
||||
print("XY", x, y)
|
||||
x = type(xaround)(xaround + dx)
|
||||
y = type(yaround)(yaround + dy)
|
||||
|
||||
return x, y
|
||||
|
||||
|
||||
|
||||
def first_not_none(*args):
|
||||
"""
|
||||
Returns the first argument that is not None, or the last argument if
|
||||
@@ -176,9 +101,6 @@ class TransformState(renpy.object.Object):
|
||||
last_angle = None
|
||||
last_events = True
|
||||
|
||||
available_width = 0
|
||||
available_height = 0
|
||||
|
||||
def __init__(self):
|
||||
|
||||
# Most fields on this object are set by add_property, at the bottom
|
||||
@@ -315,36 +237,34 @@ class TransformState(renpy.object.Object):
|
||||
def get_angle(self):
|
||||
xpos = first_not_none(self.xpos, self.inherited_xpos, 0)
|
||||
ypos = first_not_none(self.ypos, self.inherited_ypos, 0)
|
||||
angle, _radius = cartesian_to_polar(xpos, ypos, self.xaround, self.yaround, self.available_width, self.available_height)
|
||||
return angle or self.last_angle or 0
|
||||
angle, _radius = cartesian_to_polar(xpos, ypos, self.xaround, self.yaround)
|
||||
return angle
|
||||
|
||||
def get_radius(self):
|
||||
xpos = first_not_none(self.xpos, self.inherited_xpos, 0)
|
||||
ypos = first_not_none(self.ypos, self.inherited_ypos, 0)
|
||||
_angle, radius = cartesian_to_polar(xpos, ypos, self.xaround, self.yaround, self.available_width, self.available_height)
|
||||
_angle, radius = cartesian_to_polar(xpos, ypos, self.xaround, self.yaround)
|
||||
return radius
|
||||
|
||||
def set_angle(self, value):
|
||||
self.last_angle = 0
|
||||
|
||||
xpos = first_not_none(self.xpos, self.inherited_xpos, 0)
|
||||
ypos = first_not_none(self.ypos, self.inherited_ypos, 0)
|
||||
_angle, radius = cartesian_to_polar(xpos, ypos, self.xaround, self.yaround, self.available_width, self.available_height)
|
||||
_angle, radius = cartesian_to_polar(xpos, ypos, self.xaround, self.yaround)
|
||||
angle = value
|
||||
self.xpos, self.ypos = polar_to_cartesian(angle, radius, self.xaround, self.yaround, self.available_width, self.available_height)
|
||||
self.xpos, self.ypos = polar_to_cartesian(angle, radius, self.xaround, self.yaround)
|
||||
|
||||
if self.xanchoraround:
|
||||
self.xanchor, self.yanchor = polar_to_cartesian(angle, radius, self.xaround, self.yaround, self.available_width, self.available_height)
|
||||
self.xanchor, self.yanchor = polar_to_cartesian(angle, radius, self.xaround, self.yaround)
|
||||
|
||||
def set_radius(self, value):
|
||||
xpos = first_not_none(self.xpos, self.inherited_xpos, 0)
|
||||
ypos = first_not_none(self.ypos, self.inherited_ypos, 0)
|
||||
angle, _radius = cartesian_to_polar(xpos, ypos, self.xaround, self.yaround, self.available_width, self.available_height)
|
||||
angle, _radius = cartesian_to_polar(xpos, ypos, self.xaround, self.yaround)
|
||||
radius = value
|
||||
self.xpos, self.ypos = polar_to_cartesian(angle, radius, self.xaround, self.yaround, self.available_width, self.available_height)
|
||||
self.xpos, self.ypos = polar_to_cartesian(angle, radius, self.xaround, self.yaround)
|
||||
|
||||
if self.xanchoraround:
|
||||
self.xanchor, self.yanchor = polar_to_cartesian(angle, radius, self.xaround, self.yaround, self.available_width, self.available_height)
|
||||
self.xanchor, self.yanchor = polar_to_cartesian(angle, radius, self.xaround, self.yaround)
|
||||
|
||||
angle = property(get_angle, set_angle)
|
||||
radius = property(get_radius, set_radius)
|
||||
@@ -513,15 +433,14 @@ class Transform(Container):
|
||||
focus=None,
|
||||
default=False,
|
||||
_args=None,
|
||||
alt=None,
|
||||
|
||||
**kwargs):
|
||||
|
||||
properties = {k: kwargs.pop(k) for k in style_properties if k in kwargs}
|
||||
|
||||
self.kwargs = kwargs
|
||||
self.style_arg = style
|
||||
|
||||
super(Transform, self).__init__(style=style, focus=focus, default=default, _args=_args, **properties)
|
||||
super(Transform, self).__init__(style=style, focus=focus, default=default, _args=_args, alt=alt)
|
||||
|
||||
self.function = function
|
||||
|
||||
@@ -831,21 +750,7 @@ class Transform(Container):
|
||||
|
||||
# The render method is now defined in accelerator.pyx.
|
||||
def render(self, width, height, st, at):
|
||||
|
||||
# Prevent time from ticking backwards, as can happen if we replace a
|
||||
# transform but keep its state.
|
||||
if st + self.st_offset <= self.st:
|
||||
self.st_offset = self.st - st
|
||||
if at + self.at_offset <= self.at:
|
||||
self.at_offset = self.at - at
|
||||
|
||||
self.st = st = st + self.st_offset
|
||||
self.at = at = at + self.at_offset
|
||||
|
||||
# Update the state.
|
||||
self.update_state()
|
||||
|
||||
return RenderTransform(self).render(width, height, st, at)
|
||||
return transform_render(self, width, height, st, at)
|
||||
|
||||
def event(self, ev, x, y, st):
|
||||
|
||||
@@ -1042,9 +947,6 @@ class ATLTransform(renpy.atl.ATLTransformBase, Transform):
|
||||
return repr((self.child, self.atl.loc))
|
||||
|
||||
|
||||
# Names of style properties that should be sent to the parent.
|
||||
style_properties = {'alt'}
|
||||
|
||||
# Names of transform properties, and if the property should be handled with
|
||||
# diff2 or diff4.
|
||||
all_properties = set()
|
||||
@@ -1123,7 +1025,7 @@ add_property("nearest", bool_or_none, None)
|
||||
add_property("perspective", any_object, None)
|
||||
add_property("rotate", float, None)
|
||||
add_property("rotate_pad", bool, True)
|
||||
add_property("point_to", any_object, None)
|
||||
add_property("poi", (float, float, float), None)
|
||||
add_property("orientation", (float, float, float), None)
|
||||
add_property("xrotate", float, None)
|
||||
add_property("yrotate", float, None)
|
||||
@@ -1175,7 +1077,7 @@ ALIASES = {
|
||||
"around" : (position, position),
|
||||
"offset" : (int, int),
|
||||
"pos" : (position, position),
|
||||
"radius" : position,
|
||||
"radius" : float,
|
||||
"size" : (int, int),
|
||||
"xalign" : float,
|
||||
"xcenter" : position,
|
||||
|
||||
@@ -639,11 +639,6 @@ class AlphaDissolve(Transition):
|
||||
super(AlphaDissolve, self).__init__(delay, **properties)
|
||||
|
||||
self.control = renpy.display.layout.Fixed()
|
||||
|
||||
control = renpy.easy.displayable(control)
|
||||
if control._duplicatable:
|
||||
control = control._duplicate(self._args)
|
||||
|
||||
self.control.add(control)
|
||||
|
||||
self.old_widget = renpy.easy.displayable(old_widget)
|
||||
|
||||
+6
-18
@@ -110,29 +110,19 @@ def default_tts_function(s):
|
||||
|
||||
fsencode = renpy.exports.fsencode
|
||||
|
||||
amplitude = renpy.game.preferences.get_mixer("voice")
|
||||
amplitude_100 = int(amplitude * 100)
|
||||
|
||||
|
||||
if "RENPY_TTS_COMMAND" in os.environ:
|
||||
|
||||
process = subprocess.Popen([ os.environ["RENPY_TTS_COMMAND"], fsencode(s) ])
|
||||
|
||||
elif renpy.linux:
|
||||
|
||||
cmd = [ "espeak", "-a", fsencode(str(amplitude_100)) ]
|
||||
|
||||
if renpy.config.tts_voice is not None:
|
||||
cmd.extend([ "-v", fsencode(renpy.config.tts_voice) ])
|
||||
|
||||
cmd.append(fsencode(s))
|
||||
|
||||
process = subprocess.Popen(cmd)
|
||||
if renpy.config.tts_voice is None:
|
||||
process = subprocess.Popen([ "espeak", fsencode(s) ])
|
||||
else:
|
||||
process = subprocess.Popen([ "espeak", "-v", fsencode(renpy.config.tts_voice), fsencode(s) ])
|
||||
|
||||
elif renpy.macintosh:
|
||||
|
||||
s = "[[volm {}]]".format(amplitude) + s
|
||||
|
||||
if renpy.config.tts_voice is None:
|
||||
process = subprocess.Popen([ "say", fsencode(s) ])
|
||||
else:
|
||||
@@ -147,13 +137,13 @@ def default_tts_function(s):
|
||||
|
||||
say_vbs = os.path.join(os.path.dirname(sys.executable), "say.vbs")
|
||||
s = s.replace('"', "")
|
||||
process = subprocess.Popen([ "wscript", fsencode(say_vbs), fsencode(s), fsencode(voice), fsencode(str(amplitude_100)) ])
|
||||
process = subprocess.Popen([ "wscript", fsencode(say_vbs), fsencode(s), fsencode(voice) ])
|
||||
|
||||
elif renpy.emscripten and renpy.config.webaudio:
|
||||
|
||||
try:
|
||||
from renpy.audio.webaudio import call
|
||||
call("tts", s, amplitude)
|
||||
call("tts", s)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
@@ -264,8 +254,6 @@ def displayable(d):
|
||||
else:
|
||||
prefix = renpy.translation.translate_string("Self-voicing enabled. ")
|
||||
|
||||
last_raw = None
|
||||
|
||||
for i in renpy.config.tts_voice_channels:
|
||||
if not prefix and renpy.audio.music.get_playing(i):
|
||||
return
|
||||
|
||||
+9
-52
@@ -100,9 +100,6 @@ fullscreen = False
|
||||
# place.
|
||||
reset_channels = set()
|
||||
|
||||
# These store the textures for movies in the same group.
|
||||
group_texture = { }
|
||||
|
||||
|
||||
def early_interact():
|
||||
"""
|
||||
@@ -249,15 +246,9 @@ def get_movie_texture_web(channel, mask_channel, side_mask, mipmap):
|
||||
return tex, new
|
||||
|
||||
|
||||
def render_movie(channel, width, height, group=None):
|
||||
def render_movie(channel, width, height):
|
||||
tex, _new = get_movie_texture(channel)
|
||||
|
||||
if group is not None:
|
||||
if tex is None:
|
||||
tex = group_texture.get(group, None)
|
||||
else:
|
||||
group_texture[group] = tex
|
||||
|
||||
if tex is None:
|
||||
return None
|
||||
|
||||
@@ -379,13 +370,6 @@ class Movie(renpy.display.core.Displayable):
|
||||
If False, the movie will not loop. If `image` is defined, the image
|
||||
will be displayed when the movie ends. Otherwise, the displayable will
|
||||
become transparent.
|
||||
|
||||
`group`
|
||||
If not None, this should be a string. If given, and if the movie has not
|
||||
yet started playing, and another movie in the same group has played in
|
||||
the previous frame, the last frame from that movie will be used for
|
||||
this movie. This can prevent flashes of transparency when switching
|
||||
between two movies.
|
||||
"""
|
||||
|
||||
fullscreen = False
|
||||
@@ -403,7 +387,6 @@ class Movie(renpy.display.core.Displayable):
|
||||
play_callback = None
|
||||
|
||||
loop = True
|
||||
group = None
|
||||
|
||||
|
||||
def any_loadable(self, name):
|
||||
@@ -434,6 +417,7 @@ class Movie(renpy.display.core.Displayable):
|
||||
if self.mask_channel is not None:
|
||||
self.mask_channel = self.channel + "_mask"
|
||||
|
||||
|
||||
def ensure_channel(self, name):
|
||||
|
||||
if name is None:
|
||||
@@ -449,7 +433,7 @@ class Movie(renpy.display.core.Displayable):
|
||||
|
||||
renpy.audio.music.register_channel(name, renpy.config.movie_mixer, loop=True, stop_on_mute=False, movie=True, framedrop=framedrop, force=True)
|
||||
|
||||
def __init__(self, fps=24, size=None, channel="movie", play=None, mask=None, mask_channel=None, image=None, play_callback=None, side_mask=False, loop=True, start_image=None, group=None, **properties):
|
||||
def __init__(self, fps=24, size=None, channel="movie", play=None, mask=None, mask_channel=None, image=None, play_callback=None, side_mask=False, loop=True, start_image=None, **properties):
|
||||
|
||||
global movie_channel_serial
|
||||
|
||||
@@ -491,23 +475,16 @@ class Movie(renpy.display.core.Displayable):
|
||||
|
||||
self.play_callback = play_callback
|
||||
|
||||
self.group = group
|
||||
|
||||
if (self.channel == "movie") and (renpy.config.hw_video) and renpy.mobile:
|
||||
raise Exception("Movie(channel='movie') doesn't work on mobile when config.hw_video is true. (Use a different channel argument.)")
|
||||
|
||||
def _handles_event(self, event):
|
||||
return event == "show"
|
||||
|
||||
def set_transform_event(self, event):
|
||||
if event == "show":
|
||||
reset_channels.add(self.channel)
|
||||
|
||||
def render(self, width, height, st, at):
|
||||
|
||||
if self._play and not (renpy.game.preferences.video_image_fallback is True):
|
||||
if channel_movie.get(self.channel, None) is not self:
|
||||
channel_movie[self.channel] = self
|
||||
channel_movie[self.channel] = self
|
||||
|
||||
if st == 0:
|
||||
reset_channels.add(self.channel)
|
||||
|
||||
playing = renpy.audio.music.get_playing(self.channel)
|
||||
|
||||
@@ -516,9 +493,6 @@ class Movie(renpy.display.core.Displayable):
|
||||
if self.channel in reset_channels:
|
||||
not_playing = False
|
||||
|
||||
if self.group is not None and self.group in group_texture:
|
||||
not_playing = False
|
||||
|
||||
if (self.image is not None) and not_playing:
|
||||
surf = renpy.display.render.render(self.image, width, height, st, at)
|
||||
w, h = surf.get_size()
|
||||
@@ -531,12 +505,6 @@ class Movie(renpy.display.core.Displayable):
|
||||
|
||||
tex, _ = get_movie_texture(self.channel, self.mask_channel, self.side_mask, self.style.mipmap)
|
||||
|
||||
if self.group is not None:
|
||||
if tex is None:
|
||||
tex = group_texture.get(self.group, None)
|
||||
else:
|
||||
group_texture[self.group] = tex
|
||||
|
||||
if (not not_playing) and (tex is not None):
|
||||
width, height = tex.get_size()
|
||||
|
||||
@@ -559,7 +527,7 @@ class Movie(renpy.display.core.Displayable):
|
||||
if not playing:
|
||||
rv = None
|
||||
else:
|
||||
rv = render_movie(self.channel, w, h, group=self.group)
|
||||
rv = render_movie(self.channel, w, h)
|
||||
|
||||
if rv is None:
|
||||
rv = renpy.display.render.Render(w, h)
|
||||
@@ -645,6 +613,7 @@ def update_playing():
|
||||
renpy.game.context().movie = dict(channel_movie)
|
||||
reset_channels.clear()
|
||||
|
||||
|
||||
def frequent():
|
||||
"""
|
||||
Called to update the video playback. Returns true if a video refresh is
|
||||
@@ -655,18 +624,6 @@ def frequent():
|
||||
|
||||
renpy.audio.audio.advance_time()
|
||||
|
||||
# Cycle the group textures.
|
||||
global group_texture
|
||||
|
||||
old_group_texture = group_texture
|
||||
group_texture = { }
|
||||
|
||||
for movies in displayable_channels.values():
|
||||
for m in movies:
|
||||
if m.group is not None:
|
||||
group_texture[m.group] = old_group_texture.get(m.group, None)
|
||||
|
||||
# Determine if we need to redraw.
|
||||
if displayable_channels:
|
||||
|
||||
update = True
|
||||
|
||||
+4
-11
@@ -75,7 +75,7 @@ from renpy.display.image import image_exists, image_exists as has_image, list_im
|
||||
from renpy.display.image import get_available_image_tags, get_available_image_attributes, check_image_attributes, get_ordered_image_attributes
|
||||
from renpy.display.image import get_registered_image
|
||||
|
||||
from renpy.display.im import load_surface, load_image, load_rgba
|
||||
from renpy.display.im import load_surface, load_image
|
||||
|
||||
from renpy.curry import curry, partial
|
||||
from renpy.display.video import movie_start_fullscreen, movie_start_displayable, movie_stop
|
||||
@@ -132,7 +132,6 @@ renpy_pure("unelide_filename")
|
||||
renpy_pure("known_languages")
|
||||
renpy_pure("check_text_tags")
|
||||
renpy_pure("filter_text_tags")
|
||||
renpy_pure("split_properties")
|
||||
|
||||
import time
|
||||
import sys
|
||||
@@ -836,9 +835,6 @@ def web_input(prompt, default='', allow=None, exclude='{}', length=None, mask=Fa
|
||||
|
||||
renpy.exports.mode('input')
|
||||
|
||||
# Take the user out of fullscreen during input.
|
||||
renpy.game.preferences.fullscreen = False
|
||||
|
||||
prompt = renpy.text.extras.filter_text_tags(prompt, allow=set())
|
||||
|
||||
roll_forward = renpy.exports.roll_forward_info()
|
||||
@@ -868,7 +864,7 @@ def web_input(prompt, default='', allow=None, exclude='{}', length=None, mask=Fa
|
||||
return rv
|
||||
|
||||
|
||||
def input(prompt, default='', allow=None, exclude='{}', length=None, with_none=None, pixel_width=None, screen="input", mask=None, copypaste=True, multiline=False, **kwargs): # @ReservedAssignment
|
||||
def input(prompt, default='', allow=None, exclude='{}', length=None, with_none=None, pixel_width=None, screen="input", mask=None, copypaste=True, **kwargs): # @ReservedAssignment
|
||||
"""
|
||||
:doc: input
|
||||
|
||||
@@ -908,9 +904,6 @@ def input(prompt, default='', allow=None, exclude='{}', length=None, with_none=N
|
||||
`copypaste`
|
||||
When true, copying from and pasting to this input is allowed.
|
||||
|
||||
`multiline`
|
||||
When true, move caret to next line is allowed.
|
||||
|
||||
If :var:`config.disable_input` is True, this function only returns
|
||||
`default`.
|
||||
|
||||
@@ -947,7 +940,7 @@ def input(prompt, default='', allow=None, exclude='{}', length=None, with_none=N
|
||||
|
||||
if has_screen(screen):
|
||||
widget_properties = { }
|
||||
widget_properties["input"] = dict(default=default, length=length, allow=allow, exclude=exclude, editable=not fixed, pixel_width=pixel_width, mask=mask, copypaste=copypaste, multiline=multiline)
|
||||
widget_properties["input"] = dict(default=default, length=length, allow=allow, exclude=exclude, editable=not fixed, pixel_width=pixel_width, mask=mask, copypaste=copypaste)
|
||||
|
||||
show_screen(screen, _transient=True, _widget_properties=widget_properties, prompt=prompt, **show_properties)
|
||||
|
||||
@@ -1454,7 +1447,7 @@ def say(who, what, *args, **kwargs):
|
||||
|
||||
e "Hello, world."
|
||||
$ renpy.say(e, "Hello, world.")
|
||||
$ e("Hello, world.") # when e is not a string
|
||||
$ e("Hello, world.")
|
||||
"""
|
||||
|
||||
if renpy.config.old_substitutions:
|
||||
|
||||
@@ -47,7 +47,6 @@ cdef class GL2Draw:
|
||||
cdef tuple default_clip
|
||||
cdef float dpi_scale
|
||||
cdef object shader_cache
|
||||
cdef bint ever_set_position
|
||||
|
||||
cdef public tuple clip_rtt_box
|
||||
|
||||
@@ -74,15 +73,6 @@ cdef class GL2Draw:
|
||||
# The framebuffer object used for offscreen rendering.
|
||||
cdef GLuint fbo
|
||||
|
||||
# The color texture object used for pixel tests (1x1).
|
||||
cdef GLuint color_renderbuffer_1px
|
||||
|
||||
# The depth renderbuffer object used for pixel tests. (1x1)
|
||||
cdef GLuint depth_renderbuffer_1px
|
||||
|
||||
# The framebuffer object used for pixel tests (1x1)
|
||||
cdef GLuint fbo_1px
|
||||
|
||||
# The texture_loader singleton.
|
||||
cdef public TextureLoader texture_loader
|
||||
|
||||
|
||||
+14
-96
@@ -76,9 +76,6 @@ vsync = True
|
||||
# A list of frame end times, used for the same purpose.
|
||||
frame_times = [ ]
|
||||
|
||||
# The default position of the window.
|
||||
default_position = (pygame.WINDOWPOS_CENTERED, pygame.WINDOWPOS_CENTERED)
|
||||
|
||||
cdef class GL2Draw:
|
||||
|
||||
def __init__(self, name):
|
||||
@@ -124,9 +121,6 @@ cdef class GL2Draw:
|
||||
# The shader cache,
|
||||
self.shader_cache = None
|
||||
|
||||
# Has the position of this window ever been set?
|
||||
self.ever_set_position = False
|
||||
|
||||
def get_texture_size(self):
|
||||
"""
|
||||
Returns the amount of memory locked up in textures.
|
||||
@@ -148,7 +142,7 @@ cdef class GL2Draw:
|
||||
if old_surface is not None:
|
||||
maximized = old_surface.get_flags() & pygame.WINDOW_MAXIMIZED
|
||||
else:
|
||||
maximized = renpy.game.preferences.maximized
|
||||
maximized = False
|
||||
|
||||
# Information about the virtual size.
|
||||
vwidth, vheight = self.virtual_size
|
||||
@@ -376,10 +370,6 @@ cdef class GL2Draw:
|
||||
self.window = None
|
||||
|
||||
if self.window is None:
|
||||
|
||||
if renpy.game.preferences.maximized:
|
||||
window_flags |= pygame.WINDOW_MAXIMIZED
|
||||
|
||||
try:
|
||||
renpy.display.log.write("Windowed mode.")
|
||||
self.window = pygame.display.set_mode((pwidth, pheight), window_flags)
|
||||
@@ -450,35 +440,22 @@ cdef class GL2Draw:
|
||||
# Are we in fullscreen mode?
|
||||
fullscreen = bool(pygame.display.get_window().get_window_flags() & (pygame.WINDOW_FULLSCREEN_DESKTOP | pygame.WINDOW_FULLSCREEN))
|
||||
|
||||
# Are we maximized?
|
||||
maximized = bool(pygame.display.get_window().get_window_flags() & pygame.WINDOW_MAXIMIZED)
|
||||
|
||||
# See if we've ever set the screen position, and if not, center the window.
|
||||
if not fullscreen and not maximized:
|
||||
if not self.ever_set_position:
|
||||
self.ever_set_position = True
|
||||
pygame.display.get_window().set_position(default_position)
|
||||
|
||||
# Get the size of the created screen.
|
||||
pwidth, pheight = renpy.display.core.get_size()
|
||||
|
||||
renpy.game.preferences.fullscreen = fullscreen
|
||||
renpy.game.interface.fullscreen = fullscreen
|
||||
|
||||
vwidth, vheight = self.virtual_size
|
||||
|
||||
self.physical_size = (pwidth, pheight)
|
||||
self.drawable_size = pygame.display.get_drawable_size()
|
||||
|
||||
renpy.display.log.write("Screen sizes: virtual=%r physical=%r drawable=%r" % (self.virtual_size, self.physical_size, self.drawable_size))
|
||||
|
||||
# Update the preferences.
|
||||
renpy.game.preferences.fullscreen = fullscreen
|
||||
renpy.game.interface.fullscreen = fullscreen
|
||||
|
||||
if not fullscreen:
|
||||
renpy.game.preferences.maximized = maximized
|
||||
|
||||
if not fullscreen and not maximized:
|
||||
renpy.game.preferences.physical_size = self.get_physical_size()
|
||||
|
||||
renpy.display.log.write("Screen sizes: virtual=%r physical=%r drawable=%r" % (self.virtual_size, self.physical_size, self.drawable_size))
|
||||
|
||||
if renpy.config.adjust_view_size is not None:
|
||||
view_width, view_height = renpy.config.adjust_view_size(pwidth, pheight)
|
||||
else:
|
||||
@@ -565,12 +542,8 @@ cdef class GL2Draw:
|
||||
width = max(width, 256)
|
||||
height = max(height, 256)
|
||||
|
||||
if pygame.display.get_window().get_window_flags() & pygame.WINDOW_FULLSCREEN:
|
||||
maximized = renpy.game.preferences.maximized
|
||||
else:
|
||||
maximized = False
|
||||
|
||||
pygame.display.get_window().resize((width, height), opengl=True, fullscreen=fullscreen, maximized=maximized)
|
||||
pygame.display.get_window().restore()
|
||||
pygame.display.get_window().resize((width, height), opengl=True, fullscreen=fullscreen)
|
||||
|
||||
def update(self, force=False):
|
||||
"""
|
||||
@@ -595,18 +568,6 @@ cdef class GL2Draw:
|
||||
Called when terminating the use of the OpenGL context.
|
||||
"""
|
||||
|
||||
global default_position
|
||||
|
||||
# Are we in fullscreen mode?
|
||||
fullscreen = bool(pygame.display.get_window().get_window_flags() & (pygame.WINDOW_FULLSCREEN_DESKTOP | pygame.WINDOW_FULLSCREEN))
|
||||
|
||||
# Are we maximized?
|
||||
maximized = bool(pygame.display.get_window().get_window_flags() & pygame.WINDOW_MAXIMIZED)
|
||||
|
||||
# See if we've ever set the screen position, and if not, center the window.
|
||||
if not fullscreen and not maximized:
|
||||
default_position = pygame.display.get_position()
|
||||
|
||||
self.kill_textures()
|
||||
|
||||
if self.texture_loader is not None:
|
||||
@@ -650,14 +611,11 @@ cdef class GL2Draw:
|
||||
|
||||
# Generate the framebuffer.
|
||||
glGenFramebuffers(1, &self.fbo)
|
||||
glGenFramebuffers(1, &self.fbo_1px)
|
||||
|
||||
glGenRenderbuffers(1, &self.color_renderbuffer)
|
||||
glGenRenderbuffers(1, &self.color_renderbuffer_1px)
|
||||
|
||||
if renpy.config.depth_size:
|
||||
glGenRenderbuffers(1, &self.depth_renderbuffer)
|
||||
glGenRenderbuffers(1, &self.depth_renderbuffer_1px)
|
||||
|
||||
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &max_texture_size)
|
||||
glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE, &max_renderbuffer_size)
|
||||
@@ -684,7 +642,6 @@ cdef class GL2Draw:
|
||||
self.texture_loader.max_texture_width = width
|
||||
self.texture_loader.max_texture_height = height
|
||||
|
||||
# Full-size fbo.
|
||||
self.change_fbo(self.fbo)
|
||||
|
||||
glBindRenderbuffer(GL_RENDERBUFFER, self.color_renderbuffer)
|
||||
@@ -715,37 +672,6 @@ cdef class GL2Draw:
|
||||
GL_RENDERBUFFER,
|
||||
self.depth_renderbuffer)
|
||||
|
||||
# 1px fbo.
|
||||
self.change_fbo(self.fbo_1px)
|
||||
|
||||
glBindRenderbuffer(GL_RENDERBUFFER, self.color_renderbuffer_1px)
|
||||
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8, 1, 1)
|
||||
|
||||
glFramebufferRenderbuffer(
|
||||
GL_FRAMEBUFFER,
|
||||
GL_COLOR_ATTACHMENT0,
|
||||
GL_RENDERBUFFER,
|
||||
self.color_renderbuffer_1px)
|
||||
|
||||
if renpy.config.depth_size:
|
||||
|
||||
glBindRenderbuffer(GL_RENDERBUFFER, self.depth_renderbuffer_1px)
|
||||
|
||||
if self.gles:
|
||||
if renpy.config.depth_size >= 24:
|
||||
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, 1, 1)
|
||||
else:
|
||||
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, 1, 1)
|
||||
|
||||
else:
|
||||
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, 1, 1)
|
||||
|
||||
glFramebufferRenderbuffer(
|
||||
GL_FRAMEBUFFER,
|
||||
GL_DEPTH_ATTACHMENT,
|
||||
GL_RENDERBUFFER,
|
||||
self.depth_renderbuffer_1px)
|
||||
|
||||
glBindRenderbuffer(GL_RENDERBUFFER, default_renderbuffer)
|
||||
self.change_fbo(self.default_fbo)
|
||||
|
||||
@@ -754,20 +680,12 @@ cdef class GL2Draw:
|
||||
|
||||
self.change_fbo(self.default_fbo)
|
||||
|
||||
# Full-size fbo.
|
||||
glDeleteFramebuffers(1, &self.fbo)
|
||||
glDeleteRenderbuffers(1, &self.color_renderbuffer)
|
||||
|
||||
if renpy.config.depth_size:
|
||||
glDeleteRenderbuffers(1, &self.depth_renderbuffer)
|
||||
|
||||
# 1px fbo.
|
||||
glDeleteFramebuffers(1, &self.fbo_1px)
|
||||
glDeleteRenderbuffers(1, &self.color_renderbuffer_1px)
|
||||
|
||||
if renpy.config.depth_size:
|
||||
glDeleteRenderbuffers(1, &self.depth_renderbuffer_1px)
|
||||
|
||||
|
||||
def can_block(self):
|
||||
"""
|
||||
@@ -1022,7 +940,7 @@ cdef class GL2Draw:
|
||||
self.load_all_textures(what)
|
||||
|
||||
# Switch to the right FBO, and the right viewport.
|
||||
self.change_fbo(self.fbo_1px)
|
||||
self.change_fbo(self.fbo)
|
||||
|
||||
# Set up the viewport.
|
||||
glViewport(0, 0, 1, 1)
|
||||
@@ -1231,7 +1149,7 @@ cdef class GL2DrawingContext:
|
||||
"""
|
||||
|
||||
cdef float halfwidth
|
||||
cdef float halfheight
|
||||
cdef float halfheigh
|
||||
|
||||
# This is the equivalent of projecting (0, 0, 0, 1), and getting x and y.
|
||||
cdef float sx = transform.xdw
|
||||
@@ -1257,6 +1175,9 @@ cdef class GL2DrawingContext:
|
||||
if model.reverse is not IDENTITY:
|
||||
transform = transform * model.reverse
|
||||
|
||||
if properties["pixel_perfect"]:
|
||||
transform = self.correct_pixel_perfect(transform)
|
||||
|
||||
# If a clip polygon is in place, clip the mesh with it.
|
||||
if clip_polygon is not None:
|
||||
|
||||
@@ -1350,13 +1271,10 @@ cdef class GL2DrawingContext:
|
||||
|
||||
has_reverse = (r.reverse is not None) and (r.reverse is not IDENTITY)
|
||||
|
||||
if r.properties and r.properties.get("pixel_perfect", False) and properties["pixel_perfect"] is None:
|
||||
transform = self.correct_pixel_perfect(transform)
|
||||
|
||||
if has_reverse or r.properties:
|
||||
properties = self.merge_properties(properties, r.properties)
|
||||
|
||||
if has_reverse:
|
||||
if has_reverse and (properties["pixel_perfect"] is None):
|
||||
properties["pixel_perfect"] = False
|
||||
|
||||
if r.shaders is not None:
|
||||
|
||||
@@ -8,11 +8,11 @@ cdef class AttributeLayout:
|
||||
|
||||
# A map from a string giving the name of the attribute to the
|
||||
# offset of the attribute.
|
||||
cdef public dict offset
|
||||
cdef dict offset
|
||||
|
||||
# The number of floats that make up the attributes for a single
|
||||
# point.
|
||||
cdef public int stride
|
||||
cdef int stride
|
||||
|
||||
cdef class Mesh:
|
||||
"""
|
||||
@@ -21,28 +21,28 @@ cdef class Mesh:
|
||||
"""
|
||||
|
||||
# The number of points that space has been allocated for.
|
||||
cdef public int allocated_points
|
||||
cdef int allocated_points
|
||||
|
||||
# The number of points that are in use.
|
||||
cdef public int points
|
||||
cdef int points
|
||||
|
||||
# The data corresponding to each point.
|
||||
cdef float *point_data
|
||||
|
||||
# The number of floats corresponding to each point.
|
||||
cdef public int point_size
|
||||
cdef int point_size
|
||||
|
||||
# An AttributeLayout object controlling how attributes are stored.
|
||||
cdef public AttributeLayout layout
|
||||
cdef AttributeLayout layout
|
||||
|
||||
# The non-geometry attribute data. This is allocated_points * attribute_per_point in size.
|
||||
cdef float *attribute
|
||||
|
||||
# The number of triangles that spaces has been allocated for.,
|
||||
cdef public int allocated_triangles
|
||||
cdef int allocated_triangles
|
||||
|
||||
# The number of triangles that are in use.
|
||||
cdef public int triangles
|
||||
cdef int triangles
|
||||
|
||||
# The triangle data, where each triangle consists of the index of three
|
||||
# points. This is 3 * allocated_triangles in size.
|
||||
|
||||
@@ -32,80 +32,6 @@ TEXTURE_LAYOUT.add_attribute("a_tex_coord", 2)
|
||||
|
||||
cdef class Mesh:
|
||||
|
||||
def set_geometry_data(self, geometry):
|
||||
"""
|
||||
Sets the geometry data corresponding to this mesh.
|
||||
|
||||
`geometry`
|
||||
This should be a sequence of floats, which are interpreted
|
||||
as x, y for a Mesh2 or x, y, z for a Mesh3. The length of
|
||||
the sequence must be a multiple of the point size of the
|
||||
mesh, and must be less than or equal to the number of
|
||||
allocated points.
|
||||
|
||||
This sets the `points` attribute of the mesh to the number of
|
||||
points in the geometry.
|
||||
"""
|
||||
|
||||
points = len(geometry) // self.point_size
|
||||
|
||||
if points > self.allocated_points:
|
||||
raise Exception("Geometry contains too much data.")
|
||||
|
||||
self.points = points
|
||||
cdef int i
|
||||
cdef int len_geometry = len(geometry)
|
||||
|
||||
for 0 <= i < len_geometry:
|
||||
self.point_data[i] = geometry[i]
|
||||
|
||||
def set_attribute_data(self, attributes):
|
||||
"""
|
||||
Sets the attribute data corresponding to this mesh.
|
||||
|
||||
`attributes`
|
||||
This should be a list of floats, with the first
|
||||
layout.stride floats corresponding to the first point, the
|
||||
next layout.stride floats corresponding to the second point,
|
||||
and so on. The length of the sequence must be a multiple of
|
||||
the stride of the layout, and must be less than or equal to
|
||||
the number of allocated points.
|
||||
"""
|
||||
|
||||
cdef int i
|
||||
cdef int len_attributes = len(attributes)
|
||||
|
||||
if len_attributes > self.allocated_points * self.layout.stride:
|
||||
raise Exception("Attributes contains too much data.")
|
||||
|
||||
for 0 <= i < len_attributes:
|
||||
self.attribute[i] = attributes[i]
|
||||
|
||||
def set_triangle_data(self, triangles):
|
||||
"""
|
||||
Sets the triangle data corresponding to this mesh.
|
||||
|
||||
`triangles`
|
||||
This should be a list of integers, with each triple
|
||||
corresponding to a triangle. The length of the sequence
|
||||
must be a multiple of 3, and must be less than or equal to
|
||||
the number of allocated triangles.
|
||||
|
||||
This sets the `triangles` attribute of the mesh to the number
|
||||
of triangles given here.
|
||||
"""
|
||||
|
||||
cdef int i
|
||||
cdef int len_triangles = len(triangles)
|
||||
|
||||
if len_triangles > self.allocated_triangles * 3:
|
||||
raise Exception("Triangles contains too much data.")
|
||||
|
||||
self.triangles = len_triangles // 3
|
||||
|
||||
for 0 <= i < len_triangles:
|
||||
self.triangle[i] = triangles[i]
|
||||
|
||||
def get_triangles(self):
|
||||
"""
|
||||
Returns the triangles that make up this mesh as triples.
|
||||
|
||||
@@ -105,7 +105,7 @@ class ShaderPart(object):
|
||||
used.add(m.group(0))
|
||||
|
||||
for l in variables.split("\n"):
|
||||
l = l.partition("//")[0].strip(' ;')
|
||||
l = l.strip(' ;')
|
||||
|
||||
a = l.split()
|
||||
if not a:
|
||||
|
||||
@@ -37,7 +37,7 @@ cdef class TextureLoader:
|
||||
|
||||
# The total size (in bytes) of all the textures that have been allocated
|
||||
# but not deallocated.
|
||||
cdef object total_texture_size
|
||||
cdef int total_texture_size
|
||||
|
||||
# The program used for fast texture loading
|
||||
cdef Program ftl_program
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user