Compare commits
57 Commits
fix
...
7.4.11.2263
| Author | SHA1 | Date | |
|---|---|---|---|
| b08a5dea70 | |||
| 6b9380f9d6 | |||
| 72967d33e1 | |||
| 2e59657653 | |||
| 50828cb688 | |||
| c1f5401101 | |||
| a508a6c5fa | |||
| a2fc6e4a97 | |||
| 348accd819 | |||
| a5d44c5f6d | |||
| b9acd8bf0b | |||
| a8baa0fc2a | |||
| cc59f46f97 | |||
| 162f22d6f5 | |||
| 9e28b55ea9 | |||
| a38803ec71 | |||
| 6eca382a5a | |||
| 002d7aadf2 | |||
| b6550ada06 | |||
| 7f9b9d32cf | |||
| 2a7d629d04 | |||
| 00a9d2ec80 | |||
| d76978f1b2 | |||
| 357e53a1ab | |||
| 64acbf5adf | |||
| da38eed1ae | |||
| e9a1a02135 | |||
| b2d7232d31 | |||
| 3fbf27a6fa | |||
| 759ef31065 | |||
| c18b987e17 | |||
| ddd0d1b30d | |||
| 91c730cb2d | |||
| 99496696bd | |||
| 859d34994e | |||
| bb0c2028bf | |||
| 56aa271554 | |||
| cda38a4aca | |||
| 509e0ed2f2 | |||
| 116ccc9c3c | |||
| 0ff3b243c5 | |||
| 92ca5e9add | |||
| 9651cc2ed8 | |||
| 2065f82f89 | |||
| 15b23d8ea0 | |||
| e8e206dbba | |||
| 39350f4778 | |||
| 72f3798741 | |||
| 98e06eaba9 | |||
| 34dbd3f5f8 | |||
| 8011545b88 | |||
| ba0ffeb7d0 | |||
| f32c448d02 | |||
| 3c0c1ffb84 | |||
| 5d167a881d | |||
| 1d3b6ffdf0 | |||
| 5c63d9cee8 |
+4
-5
@@ -416,13 +416,15 @@ init python:
|
||||
|
||||
## This increases the size of the quick buttons to make them easier to
|
||||
## touch on tablets and phones.
|
||||
if renpy.variant("touch"):
|
||||
@gui.variant
|
||||
def touch():
|
||||
|
||||
gui.quick_button_borders = Borders(gui.scale(40), gui.scale(14), gui.scale(40), gui.scale(0))
|
||||
|
||||
## This changes the size and spacing of various GUI elements to ensure
|
||||
## they are easily visible on phones.
|
||||
if renpy.variant("small"):
|
||||
@gui.variant
|
||||
def small():
|
||||
|
||||
## Font sizes.
|
||||
gui.text_size = gui.scale(30)
|
||||
@@ -471,6 +473,3 @@ init python:
|
||||
|
||||
gui.nvl_button_width = gui.scale(1240)
|
||||
gui.nvl_button_xpos = gui.scale(20)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -3,71 +3,71 @@ translate german strings:
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Monday"
|
||||
new "{#weekday}Monday"
|
||||
new "{#weekday}Montag"
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Tuesday"
|
||||
new "{#weekday}Tuesday"
|
||||
new "{#weekday}Dienstag"
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Wednesday"
|
||||
new "{#weekday}Wednesday"
|
||||
new "{#weekday}Mittwoch"
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Thursday"
|
||||
new "{#weekday}Thursday"
|
||||
new "{#weekday}Donnerstag"
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Friday"
|
||||
new "{#weekday}Friday"
|
||||
new "{#weekday}Freitag"
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Saturday"
|
||||
new "{#weekday}Saturday"
|
||||
new "{#weekday}Samstag"
|
||||
|
||||
# 00action_file.rpy:26
|
||||
old "{#weekday}Sunday"
|
||||
new "{#weekday}Sunday"
|
||||
new "{#weekday}Sonntag"
|
||||
|
||||
# 00action_file.rpy:37
|
||||
old "{#weekday_short}Mon"
|
||||
new "{#weekday_short}Mon"
|
||||
new "{#weekday_short}Mo"
|
||||
|
||||
# 00action_file.rpy:37
|
||||
old "{#weekday_short}Tue"
|
||||
new "{#weekday_short}Tue"
|
||||
new "{#weekday_short}Di"
|
||||
|
||||
# 00action_file.rpy:37
|
||||
old "{#weekday_short}Wed"
|
||||
new "{#weekday_short}Wed"
|
||||
new "{#weekday_short}Mi"
|
||||
|
||||
# 00action_file.rpy:37
|
||||
old "{#weekday_short}Thu"
|
||||
new "{#weekday_short}Thu"
|
||||
new "{#weekday_short}Do"
|
||||
|
||||
# 00action_file.rpy:37
|
||||
old "{#weekday_short}Fri"
|
||||
new "{#weekday_short}Fri"
|
||||
new "{#weekday_short}Fr"
|
||||
|
||||
# 00action_file.rpy:37
|
||||
old "{#weekday_short}Sat"
|
||||
new "{#weekday_short}Sat"
|
||||
new "{#weekday_short}Sa"
|
||||
|
||||
# 00action_file.rpy:37
|
||||
old "{#weekday_short}Sun"
|
||||
new "{#weekday_short}Sun"
|
||||
new "{#weekday_short}So"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}January"
|
||||
new "{#month}January"
|
||||
new "{#month}Januar"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}February"
|
||||
new "{#month}February"
|
||||
new "{#month}Februar"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}March"
|
||||
new "{#month}March"
|
||||
new "{#month}März"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}April"
|
||||
@@ -75,15 +75,15 @@ translate german strings:
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}May"
|
||||
new "{#month}May"
|
||||
new "{#month}Mai"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}June"
|
||||
new "{#month}June"
|
||||
new "{#month}Juni"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}July"
|
||||
new "{#month}July"
|
||||
new "{#month}Juli"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}August"
|
||||
@@ -95,7 +95,7 @@ translate german strings:
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}October"
|
||||
new "{#month}October"
|
||||
new "{#month}Oktober"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}November"
|
||||
@@ -103,7 +103,7 @@ translate german strings:
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}December"
|
||||
new "{#month}December"
|
||||
new "{#month}Dezember"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Jan"
|
||||
@@ -115,7 +115,7 @@ translate german strings:
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Mar"
|
||||
new "{#month_short}Mar"
|
||||
new "{#month_short}Mär"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Apr"
|
||||
@@ -123,7 +123,7 @@ translate german strings:
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}May"
|
||||
new "{#month_short}May"
|
||||
new "{#month_short}Mai"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Jun"
|
||||
@@ -143,7 +143,7 @@ translate german strings:
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Oct"
|
||||
new "{#month_short}Oct"
|
||||
new "{#month_short}Okt"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Nov"
|
||||
@@ -151,7 +151,7 @@ translate german strings:
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Dec"
|
||||
new "{#month_short}Dec"
|
||||
new "{#month_short}Dez"
|
||||
|
||||
# 00action_file.rpy:235
|
||||
old "%b %d, %H:%M"
|
||||
@@ -187,19 +187,19 @@ translate german strings:
|
||||
|
||||
# 00gui.rpy:233
|
||||
old "Are you sure you want to end the replay?"
|
||||
new "Are you sure you want to end the replay?"
|
||||
new "Sind Sie sicher, dass sie die Szenen-Wiederholung beenden möchten?"
|
||||
|
||||
# 00gui.rpy:234
|
||||
old "Are you sure you want to begin skipping?"
|
||||
new "Sind Sie sicher, dass Sie vorspulen möchten?"
|
||||
new "Sind Sie sicher, dass Sie Text überspringen möchten?"
|
||||
|
||||
# 00gui.rpy:235
|
||||
old "Are you sure you want to skip to the next choice?"
|
||||
new "Sind Sie sicher, dass Sie zur nächsten Auswahl vorspulen möchten?"
|
||||
new "Sind Sie sicher, dass Sie zur nächsten Auswahl springen möchten?"
|
||||
|
||||
# 00gui.rpy:236
|
||||
old "Are you sure you want to skip unseen dialogue to the next choice?"
|
||||
new "Are you sure you want to skip unseen dialogue to the next choice?"
|
||||
new "Sind Sie sicher, dass sie ungesehenen Dialog bis zur nächsten Entscheidung überspringen möchten?"
|
||||
|
||||
# 00keymap.rpy:250
|
||||
old "Saved screenshot as %s."
|
||||
@@ -207,7 +207,7 @@ translate german strings:
|
||||
|
||||
# 00library.rpy:142
|
||||
old "Self-voicing disabled."
|
||||
new "Self-voicing disabled."
|
||||
new "Sprachausgabe deaktiviert."
|
||||
|
||||
# 00library.rpy:143
|
||||
old "Clipboard voicing enabled. "
|
||||
@@ -215,15 +215,15 @@ translate german strings:
|
||||
|
||||
# 00library.rpy:144
|
||||
old "Self-voicing enabled. "
|
||||
new "Self-voicing enabled. "
|
||||
new "Sprachausgabe aktiviert. "
|
||||
|
||||
# 00library.rpy:179
|
||||
old "Skip Mode"
|
||||
new "Vorspulen"
|
||||
new "Skip-Modus"
|
||||
|
||||
# 00library.rpy:262
|
||||
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 "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 "Dieses Programm enthält kostenlose Software unter einer Reihe von Lizenzen, einschließlich der MIT License und der GNU Lesser General Public License. Eine vollständige Liste aller Software, inklusive Links zum vollständigen Quellcode, kann {a=https://www.renpy.org/l/license}hier{/a} gefunden werden."
|
||||
|
||||
# 00preferences.rpy:422
|
||||
old "Clipboard voicing enabled. Press 'shift+C' to disable."
|
||||
@@ -231,47 +231,47 @@ translate german strings:
|
||||
|
||||
# 00preferences.rpy:424
|
||||
old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
|
||||
new "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
|
||||
new "Sprachausgabe würde \"[renpy.display.tts.last]\" sagen. Zum deaktivieren 'alt+shift+V' drücken."
|
||||
|
||||
# 00preferences.rpy:426
|
||||
old "Self-voicing enabled. Press 'v' to disable."
|
||||
new "Self-voicing enabled. Press 'v' to disable."
|
||||
new "Sprachausgabe aktiviert. Zum deaktivieren 'v' drücken."
|
||||
|
||||
# 00iap.rpy:217
|
||||
old "Contacting App Store\nPlease Wait..."
|
||||
new "Contacting App Store\nPlease Wait..."
|
||||
new "Kontaktiert App Store\nBitte warten..."
|
||||
|
||||
# 00updater.rpy:367
|
||||
old "The Ren'Py Updater is not supported on mobile devices."
|
||||
new "The Ren'Py Updater is not supported on mobile devices."
|
||||
new "Der Ren'Py Updater wird auf Mobilgeräten nicht unterstützt."
|
||||
|
||||
# 00updater.rpy:486
|
||||
old "An error is being simulated."
|
||||
new "An error is being simulated."
|
||||
new "Ein Error wird simuliert."
|
||||
|
||||
# 00updater.rpy:662
|
||||
old "Either this project does not support updating, or the update status file was deleted."
|
||||
new "Either this project does not support updating, or the update status file was deleted."
|
||||
new "Entweder unterstützt dieses Projekt keine Updates, oder die Update-Status-Datei wurde gelöscht."
|
||||
|
||||
# 00updater.rpy:676
|
||||
old "This account does not have permission to perform an update."
|
||||
new "This account does not have permission to perform an update."
|
||||
new "Dieser Account hat keine Erlaubnis, Updates durchzuführen."
|
||||
|
||||
# 00updater.rpy:679
|
||||
old "This account does not have permission to write the update log."
|
||||
new "This account does not have permission to write the update log."
|
||||
new "Dieser Account hat keine Erlaubnis, Update-Logs zu schreiben."
|
||||
|
||||
# 00updater.rpy:704
|
||||
old "Could not verify update signature."
|
||||
new "Could not verify update signature."
|
||||
new "Konnte die Update-Signatur nicht verifizieren."
|
||||
|
||||
# 00updater.rpy:975
|
||||
old "The update file was not downloaded."
|
||||
new "The update file was not downloaded."
|
||||
new "Die Update-Datei wurde nicht heruntergeladen."
|
||||
|
||||
# 00updater.rpy:993
|
||||
old "The update file does not have the correct digest - it may have been corrupted."
|
||||
new "The update file does not have the correct digest - it may have been corrupted."
|
||||
new "Die Update-Datei hat nicht das richtige Format - sie wurde möglicherweise beschädigt."
|
||||
|
||||
# 00updater.rpy:1049
|
||||
old "While unpacking {}, unknown type {}."
|
||||
@@ -283,7 +283,7 @@ translate german strings:
|
||||
|
||||
# 00updater.rpy:1404
|
||||
old "This program is up to date."
|
||||
new "Dieses Programm ist aktuell."
|
||||
new "Dieses Programm ist auf dem neuesten Stand."
|
||||
|
||||
# 00updater.rpy:1406
|
||||
old "[u.version] is available. Do you want to install it?"
|
||||
@@ -291,27 +291,27 @@ translate german strings:
|
||||
|
||||
# 00updater.rpy:1408
|
||||
old "Preparing to download the updates."
|
||||
new "Vorbereiten, um die Aktualisierungen herunterzuladen."
|
||||
new "Bereitet das Herunterladen der Updates vor."
|
||||
|
||||
# 00updater.rpy:1410
|
||||
old "Downloading the updates."
|
||||
new "Aktualisierungen werden heruntergeladen."
|
||||
new "Updates werden heruntergeladen."
|
||||
|
||||
# 00updater.rpy:1412
|
||||
old "Unpacking the updates."
|
||||
new "Aktualisierungen werden entpackt."
|
||||
new "Updates werden entpackt."
|
||||
|
||||
# 00updater.rpy:1416
|
||||
old "The updates have been installed. The program will restart."
|
||||
new "Die Aktualisierungen wurden installiert. Das Programm wird nun neustarten."
|
||||
new "Die Updates wurden installiert. Das Programm wird nun neu gestartet."
|
||||
|
||||
# 00updater.rpy:1418
|
||||
old "The updates have been installed."
|
||||
new "Die Aktualisierungen wurden installiert."
|
||||
new "Die Updates wurden installiert."
|
||||
|
||||
# 00updater.rpy:1420
|
||||
old "The updates were cancelled."
|
||||
new "Die Aktualisierungen wurden abgebrochen."
|
||||
new "Die Updates wurden abgebrochen."
|
||||
|
||||
# 00gallery.rpy:563
|
||||
old "Image [index] of [count] locked."
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}February"
|
||||
new "{#month}Febuari"
|
||||
new "{#month}Februari"
|
||||
|
||||
# 00action_file.rpy:47
|
||||
old "{#month}March"
|
||||
@@ -118,7 +118,7 @@
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Apr"
|
||||
new "{#month_short}Aprl"
|
||||
new "{#month_short}Apr"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}May"
|
||||
@@ -134,7 +134,7 @@
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Aug"
|
||||
new "{#month_short}Agust"
|
||||
new "{#month_short}Agu"
|
||||
|
||||
# 00action_file.rpy:63
|
||||
old "{#month_short}Sep"
|
||||
@@ -238,11 +238,11 @@
|
||||
|
||||
# 00iap.rpy:217
|
||||
old "Contacting App Store\nPlease Wait..."
|
||||
new "Contacting App Store\nPlease Wait..."
|
||||
new "Contacting App Store\nTunggu sebenatar..."
|
||||
|
||||
# 00updater.rpy:367
|
||||
old "The Ren'Py Updater is not supported on mobile devices."
|
||||
new "Ren'Py Updater tidak di support di perangkat handphone."
|
||||
new "Pembaru Ren'Py tidak di support di perangkat handphone."
|
||||
|
||||
# 00updater.rpy:486
|
||||
old "An error is being simulated."
|
||||
@@ -250,39 +250,39 @@
|
||||
|
||||
# 00updater.rpy:662
|
||||
old "Either this project does not support updating, or the update status file was deleted."
|
||||
new "Antara proyek tidak mendukung update, atau file status update di hapus."
|
||||
new "Antara proyek tidak mendukung pembaharuan, atau status file pembaharuan di hapus."
|
||||
|
||||
# 00updater.rpy:676
|
||||
old "This account does not have permission to perform an update."
|
||||
new "Akun ini tidak memiliki izin untuk melakukan update."
|
||||
new "Akun ini tidak memiliki izin untuk melakukan pembaharuan."
|
||||
|
||||
# 00updater.rpy:679
|
||||
old "This account does not have permission to write the update log."
|
||||
new "Akun ini tidak memiliki izin untuk menulis log update."
|
||||
new "Akun ini tidak memiliki izin untuk menulis log pembaharuan."
|
||||
|
||||
# 00updater.rpy:704
|
||||
old "Could not verify update signature."
|
||||
new "Tidak dapat memverifikasi tandatangan update."
|
||||
new "Tidak dapat memverifikasi tandatangan pembaharuan."
|
||||
|
||||
# 00updater.rpy:975
|
||||
old "The update file was not downloaded."
|
||||
new "File update tidak di download."
|
||||
new "File pembaharuan tidak di unduh."
|
||||
|
||||
# 00updater.rpy:993
|
||||
old "The update file does not have the correct digest - it may have been corrupted."
|
||||
new "File update tiidak memiliki digest yang benar - mungkin file corrupt."
|
||||
new "File pembaharuan tidak memiliki digest yang benar - mungkin file corrupt/rusak."
|
||||
|
||||
# 00updater.rpy:1049
|
||||
old "While unpacking {}, unknown type {}."
|
||||
new "Ketika unppack {}, tipe tidak diketahui {}."
|
||||
new "Ketika unpack {}, tipe tidak diketahui {}."
|
||||
|
||||
# 00updater.rpy:1393
|
||||
old "Updater"
|
||||
new "Updater"
|
||||
new "Pembaru"
|
||||
|
||||
# 00updater.rpy:1404
|
||||
old "This program is up to date."
|
||||
new "Program ini sudah up to date."
|
||||
new "Program ini sudah up to date(terbaru)."
|
||||
|
||||
# 00updater.rpy:1406
|
||||
old "[u.version] is available. Do you want to install it?"
|
||||
@@ -290,27 +290,27 @@
|
||||
|
||||
# 00updater.rpy:1408
|
||||
old "Preparing to download the updates."
|
||||
new "Bersiap untuk mendownload update."
|
||||
new "Bersiap untuk mengunduh pembaharuan."
|
||||
|
||||
# 00updater.rpy:1410
|
||||
old "Downloading the updates."
|
||||
new "Mendownload update."
|
||||
new "Mengunduh pembaharuan."
|
||||
|
||||
# 00updater.rpy:1412
|
||||
old "Unpacking the updates."
|
||||
new "Meng unpack update."
|
||||
new "Mengunpack pembaharuan."
|
||||
|
||||
# 00updater.rpy:1416
|
||||
old "The updates have been installed. The program will restart."
|
||||
new "Update sudah terpasang. Program akan melakukan restart."
|
||||
new "Pembaharuan telah terpasang. Program akan melakukan restart."
|
||||
|
||||
# 00updater.rpy:1418
|
||||
old "The updates have been installed."
|
||||
new "Update sudah terpasang."
|
||||
new "Pembaharuan telah terpasang."
|
||||
|
||||
# 00updater.rpy:1420
|
||||
old "The updates were cancelled."
|
||||
new "Proses update di batalkan."
|
||||
new "Proses pembaharuan di batalkan."
|
||||
|
||||
# 00gallery.rpy:563
|
||||
old "Image [index] of [count] locked."
|
||||
@@ -353,23 +353,23 @@ translate indonesian strings:
|
||||
|
||||
# 00director.rpy:1471
|
||||
old "(attributes)"
|
||||
new "(attributes)"
|
||||
new "(atribut)"
|
||||
|
||||
# 00director.rpy:1472
|
||||
old "(transform)"
|
||||
new "(tramsform)"
|
||||
new "(tramsformasi)"
|
||||
|
||||
# 00director.rpy:1497
|
||||
old "(transition)"
|
||||
new "(transition)"
|
||||
new "(transisi)"
|
||||
|
||||
# 00director.rpy:1509
|
||||
old "(channel)"
|
||||
new "(channel)"
|
||||
new "(kanal)"
|
||||
|
||||
# 00director.rpy:1510
|
||||
old "(filename)"
|
||||
new "(filename)"
|
||||
new "(namafile)"
|
||||
|
||||
# 00director.rpy:1535
|
||||
old "Change"
|
||||
@@ -397,11 +397,11 @@ translate indonesian strings:
|
||||
|
||||
# 00director.rpy:1631
|
||||
old "Transforms:"
|
||||
new "Transforms:"
|
||||
new "Transformasi:"
|
||||
|
||||
# 00director.rpy:1650
|
||||
old "Behind:"
|
||||
new "Di Belakang:"
|
||||
new "Dibelakang:"
|
||||
|
||||
# 00director.rpy:1669
|
||||
old "Transition:"
|
||||
@@ -409,7 +409,7 @@ translate indonesian strings:
|
||||
|
||||
# 00director.rpy:1687
|
||||
old "Channel:"
|
||||
new "Channel:"
|
||||
new "Kanal:"
|
||||
|
||||
# 00director.rpy:1705
|
||||
old "Audio Filename:"
|
||||
@@ -421,13 +421,12 @@ translate indonesian strings:
|
||||
|
||||
# _developer\developer.rpym:67
|
||||
old "Show Texture Size"
|
||||
new "Tampilkan Ukuran Textur"
|
||||
new "Tampilkan Ukuran Tekstur"
|
||||
|
||||
# _developer\developer.rpym:70
|
||||
old "Hide Texture size"
|
||||
new "Sembunyikan Ukuran Textur"
|
||||
new "Sembunyikan Ukuran Tekstur"
|
||||
|
||||
# _developer\developer.rpym:569
|
||||
old "{size_mb:,.1f} MB in {count} textures."
|
||||
new "{size_mb:,.1f} MB pada {count} textur."
|
||||
|
||||
new "{size_mb:,.1f} MB pada {count} tekstur."
|
||||
|
||||
@@ -7,7 +7,7 @@ translate indonesian strings:
|
||||
|
||||
# _developer/developer.rpym:43
|
||||
old "Reload Game (Shift+R)"
|
||||
new "Reload Game (Shift+R)"
|
||||
new "Muat Ulang Game (Shift+R)"
|
||||
|
||||
# _developer/developer.rpym:45
|
||||
old "Console (Shift+O)"
|
||||
@@ -15,19 +15,19 @@ translate indonesian strings:
|
||||
|
||||
# _developer/developer.rpym:47
|
||||
old "Variable Viewer"
|
||||
new "Viewer variabel"
|
||||
new "Peneliti variabel"
|
||||
|
||||
# _developer/developer.rpym:49
|
||||
old "Theme Test"
|
||||
new "Test Tema"
|
||||
new "Coba Tema"
|
||||
|
||||
# _developer/developer.rpym:51
|
||||
old "Image Location Picker"
|
||||
new "Pemilih LokasI Gambar"
|
||||
new "Pemilih Lokasi Gambar"
|
||||
|
||||
# _developer/developer.rpym:53
|
||||
old "Filename List"
|
||||
new "List Nama File"
|
||||
new "Daftar Nama File"
|
||||
|
||||
# _developer/developer.rpym:57
|
||||
old "Show Image Load Log"
|
||||
@@ -127,7 +127,7 @@ translate indonesian strings:
|
||||
|
||||
# 00console.rpy:398
|
||||
old "help: show this help"
|
||||
new "help: menampilkan bantuan"
|
||||
new "help: tampilkan bantuan"
|
||||
|
||||
# 00console.rpy:403
|
||||
old "commands:\n"
|
||||
@@ -143,7 +143,7 @@ translate indonesian strings:
|
||||
|
||||
# 00console.rpy:423
|
||||
old "clear: clear the console history"
|
||||
new "clear: membersikan histori konsol"
|
||||
new "clear: membersihkan histori konsol"
|
||||
|
||||
# 00console.rpy:427
|
||||
old "exit: exit the console"
|
||||
@@ -159,7 +159,7 @@ translate indonesian strings:
|
||||
|
||||
# 00console.rpy:459
|
||||
old "reload: reloads the game, refreshing the scripts"
|
||||
new "reload: reload game, me refresh script"
|
||||
new "reload: reload game, memuat ulang script"
|
||||
|
||||
# 00console.rpy:467
|
||||
old "watch <expression>: watch a python expression"
|
||||
@@ -176,4 +176,3 @@ translate indonesian strings:
|
||||
# 00console.rpy:536
|
||||
old "jump <label>: jumps to label"
|
||||
new "jump <label>: lompat ke label"
|
||||
|
||||
|
||||
@@ -31,23 +31,23 @@ translate indonesian strings:
|
||||
|
||||
# android.rpy:30
|
||||
old "To build Android packages, please download RAPT, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
|
||||
new "Untuk membuat package Android, silahkan download RAPT, unzip/extrak, dan taruh di direktori Ren,Py. Dan restart launcher Ren'Py."
|
||||
new "Untuk membangun(package) ke versi Android, silahkan unduh RAPT, unzip/ekstrak, dan taruh di direktori Ren,Py. Dan muat ulang launcher Ren'Py."
|
||||
|
||||
# android.rpy:31
|
||||
old "An x86 Java 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 "Java Development Kit 32-bit di perlukan untuk membuat package Android di Windows, JDK itu berbeda dari JRE, jadi sangat mungkin kamu memiliki java tanpa JDK\n\nTolong {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}Download dan install JDK{/a}, lalu restart launcher Ren'Py "
|
||||
new "x86 Java Development Kit diperlukan untuk membangun(package) ke versi Android di Windows, JDK berbeda dengan JRE, jadi sangat mungkin kamu memiliki java tanpa JDK\n\nTolong {a=http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html}Unduh dan pasang JDK{/a}, lalu muat ulang launcher 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."
|
||||
new "RAPT sudah terinstall, tapi kamu harus menginstall Android SDK sebelum kamu dapat membuat package Android. Untuk Melakukan Ini Pilih Install SDK"
|
||||
new "RAPT sudah terpasang, tapi kamu harus memasang Android SDK sebelum kamu dapat membangun package Android. Untuk Melakukan Ini Pilih Install SDK"
|
||||
|
||||
# android.rpy:33
|
||||
old "RAPT has been installed, but a key hasn't been configured. Please create a new key, or restore android.keystore."
|
||||
new "RAPT sudah terinstall, tapi kunci/key belum di configurasi. Silahkan buat kunci/key baru, atau restore android.keystore"
|
||||
new "RAPT sudah terpasang, tapi kunci/key belum di konfigurasi. Silahkan buat kunci/key baru, atau restore android.keystore"
|
||||
|
||||
# android.rpy:34
|
||||
old "The current project has not been configured. Use \"Configure\" to configure it before building."
|
||||
new "Projek ini belum di configurasi. Gunakan \"Konfigurasi\" untuk mengkonfigurasi sebelum membuat build."
|
||||
new "Projek ini belum dikonfigurasi. Gunakan \"Konfigurasi\" untuk mengkonfigurasi sebelum membuat build."
|
||||
|
||||
# android.rpy:35
|
||||
old "Choose \"Build\" to build the current project, or attach an Android device and choose \"Build & Install\" to build and install it on the device."
|
||||
@@ -55,7 +55,7 @@ translate indonesian strings:
|
||||
|
||||
# android.rpy:37
|
||||
old "Attempts to emulate an Android phone.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
new "Mencoba untuk mengemulasi perangkat Android.\n\nInput sentuhan di emulasikan melalui mouse, tapi hanya ketika tombol di tahan. Escape di mapped ke tombol menu, dan PageUp di mapped ke tombol back."
|
||||
new "Uji coba pada perangkat Android.\n\nInput sentuhan di emulasikan melalui mouse, tapi hanya ketika tombol ditahan. Escape di mapped ke tombol menu, dan PageUp di mapped ke tombol back."
|
||||
|
||||
# android.rpy:38
|
||||
old "Attempts to emulate an Android tablet.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
|
||||
@@ -67,7 +67,7 @@ translate indonesian strings:
|
||||
|
||||
# android.rpy:41
|
||||
old "Downloads and installs the Android SDK and supporting packages. Optionally, generates the keys required to sign the package."
|
||||
new "Download dan pasang Android SDK dan paket pendukung. Opsional, mengenerate key/kunci yang di butuhkan untuk menandatangani paket."
|
||||
new "Unduh dan pasang Android SDK dan paket pendukung. Opsional, mengenerate key/kunci yang dibutuhkan untuk menandatangani paket."
|
||||
|
||||
# android.rpy:42
|
||||
old "Configures the package name, version, and other information about this project."
|
||||
@@ -167,7 +167,7 @@ translate indonesian strings:
|
||||
|
||||
# android.rpy:437
|
||||
old "Before packaging Android apps, you'll need to download RAPT, the Ren'Py Android Packaging Tool. Would you like to download RAPT now?"
|
||||
new "Sebelum mempackage aplikasi Android, kamu harus mendownload RAPT, Ren'Py Android Packaging Tool. Maukah kamu mendownload RAPT sekarang?"
|
||||
new "Sebelum membangun(package) ke aplikasi Android, kamu harus mengunduh RAPT, Ren'Py Android Packaging Tool. unduh RAPT sekarang?"
|
||||
|
||||
# android.rpy:496
|
||||
old "Remote ADB Address"
|
||||
@@ -239,7 +239,7 @@ translate indonesian strings:
|
||||
|
||||
# distribute.rpy:459
|
||||
old "Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."
|
||||
new "Membangun distribusi gagal:\n\nVariabel build.directory_name mungkin tidak menginclude spasi ,tanda kutip ,atau titik koma."
|
||||
new "Membangun distribusi gagal:\n\nVariabel build.directory_name mungkin tidak memasukan(include) spasi ,tanda kutip ,atau titik koma."
|
||||
|
||||
# distribute.rpy:504
|
||||
old "No packages are selected, so there's nothing to do."
|
||||
@@ -247,7 +247,7 @@ translate indonesian strings:
|
||||
|
||||
# distribute.rpy:516
|
||||
old "Scanning Ren'Py files..."
|
||||
new "Scanning file Ren'Py..."
|
||||
new "Memindai file Ren'Py..."
|
||||
|
||||
# distribute.rpy:569
|
||||
old "All packages have been built.\n\nDue to the presence of permission information, unpacking and repacking the Linux and Macintosh distributions on Windows is not supported."
|
||||
@@ -507,7 +507,7 @@ translate indonesian strings:
|
||||
|
||||
# front_page.rpy:256
|
||||
old "Extract Dialogue"
|
||||
new "Extrak Dialog"
|
||||
new "Ekstrak Dialog"
|
||||
|
||||
# front_page.rpy:272
|
||||
old "Checking script for potential problems..."
|
||||
@@ -719,7 +719,7 @@ translate indonesian strings:
|
||||
|
||||
# ios.rpy:345
|
||||
old "Before packaging iOS apps, you'll need to download renios, Ren'Py's iOS support. Would you like to download renios now?"
|
||||
new "Sebelum mem package aplikasi iOS, Kamu harus mendownload renios, Ren'Py iOS support. Maukah kamu mendownload renios sekarang?"
|
||||
new "Sebelum membangun ke aplikasi iOS, Kamu harus mengunduh renios, Ren'Py iOS support.unduh renios sekarang?"
|
||||
|
||||
# ios.rpy:354
|
||||
old "XCODE PROJECTS DIRECTORY"
|
||||
@@ -883,7 +883,7 @@ translate indonesian strings:
|
||||
|
||||
# preferences.rpy:96
|
||||
old "Not Set"
|
||||
new "Belum di Set"
|
||||
new "Belum diatur"
|
||||
|
||||
# preferences.rpy:111
|
||||
old "Text Editor:"
|
||||
@@ -959,7 +959,7 @@ translate indonesian strings:
|
||||
|
||||
# project.rpy:229
|
||||
old "Launching the project failed."
|
||||
new "Gagal menjalankan proyek."
|
||||
new "Proyek gagal dijalankan."
|
||||
|
||||
# project.rpy:229
|
||||
old "Please ensure that your project launches normally before running this command."
|
||||
@@ -967,7 +967,7 @@ translate indonesian strings:
|
||||
|
||||
# project.rpy:242
|
||||
old "Ren'Py is scanning the project..."
|
||||
new "Ren'Py sedang menscan proyek..."
|
||||
new "Ren'Py sedang memindai proyek..."
|
||||
|
||||
# project.rpy:568
|
||||
old "Launching"
|
||||
@@ -1007,7 +1007,7 @@ translate indonesian strings:
|
||||
|
||||
# translations.rpy:168
|
||||
old "Extract String Translations"
|
||||
new "Extrak Terjemahan String"
|
||||
new "Ekstrak Terjemahan String"
|
||||
|
||||
# translations.rpy:170
|
||||
old "Merge String Translations"
|
||||
@@ -1027,7 +1027,7 @@ translate indonesian strings:
|
||||
|
||||
# translations.rpy:200
|
||||
old "The extract command allows you to extract string translations from an existing project into a temporary file.\n\nThe merge command merges extracted translations into another project."
|
||||
new "Perintah extrak memungkinkan kamu untuk mengextrak terjemahan string dari proyek ke file sementara.\n\nPerintah merge menyatukan terjemahan yang di extrak ke proyek lain."
|
||||
new "Perintah ekstrak memungkinkan kamu untuk mengekstrak string terjemahan dari proyek ke file sementara.\n\nPerintah merge menyatukan terjemahan yang di ekstrak ke proyek lain."
|
||||
|
||||
# translations.rpy:224
|
||||
old "Ren'Py is generating translations...."
|
||||
@@ -1111,7 +1111,7 @@ translate indonesian strings:
|
||||
|
||||
# updater.rpy:102
|
||||
old "Prerelease"
|
||||
new "Prerelease"
|
||||
new "Prarilis"
|
||||
|
||||
# updater.rpy:108
|
||||
old "A preview of the next version of Ren'Py that can be used for testing and taking advantage of new features, but not for final releases of games."
|
||||
@@ -1139,11 +1139,11 @@ translate indonesian strings:
|
||||
|
||||
# updater.rpy:154
|
||||
old "Checking for updates."
|
||||
new "Mencek untuk update."
|
||||
new "Mencek pembaharuan."
|
||||
|
||||
# updater.rpy:156
|
||||
old "Ren'Py is up to date."
|
||||
new "Renpy sudah up to date."
|
||||
new "Renpy sudah up to date (terbaru)."
|
||||
|
||||
# updater.rpy:158
|
||||
old "[u.version] is now available. Do you want to install it?"
|
||||
@@ -1151,15 +1151,15 @@ translate indonesian strings:
|
||||
|
||||
# updater.rpy:160
|
||||
old "Preparing to download the update."
|
||||
new "Bersiap mendownload update."
|
||||
new "Bersiap mengunduh pembaharuan."
|
||||
|
||||
# updater.rpy:162
|
||||
old "Downloading the update."
|
||||
new "Mendownload update."
|
||||
new "Pengunduhan pembaharuan."
|
||||
|
||||
# updater.rpy:164
|
||||
old "Unpacking the update."
|
||||
new "Meng unpack update."
|
||||
new "Meng unpack pembaharuan."
|
||||
|
||||
# updater.rpy:166
|
||||
old "Finishing up."
|
||||
@@ -1167,19 +1167,19 @@ translate indonesian strings:
|
||||
|
||||
# updater.rpy:168
|
||||
old "The update has been installed. Ren'Py will restart."
|
||||
new "Update telah terpasang. Ren'Py akan restart."
|
||||
new "Pembaharuan telah terpasang. Ren'Py akan restart."
|
||||
|
||||
# updater.rpy:170
|
||||
old "The update has been installed."
|
||||
new "Update telah di pasang."
|
||||
new "Pembaharuan telah di pasang."
|
||||
|
||||
# updater.rpy:172
|
||||
old "The update was cancelled."
|
||||
new "Update telah di batalkan."
|
||||
new "Pembaharuan telah di batalkan."
|
||||
|
||||
# updater.rpy:189
|
||||
old "Ren'Py Update"
|
||||
new "Update Ren'Py."
|
||||
new "Perbaharui Ren'Py."
|
||||
|
||||
# updater.rpy:195
|
||||
old "Proceed"
|
||||
@@ -1302,7 +1302,7 @@ translate indonesian strings:
|
||||
|
||||
# game/install.rpy:144
|
||||
old "Live2D in Ren'Py doesn't support the Web, Android x86_64 (including emulators and Chrome OS), and must be added to iOS projects manually. Live2D must be reinstalled after upgrading Ren'Py or installing Android support."
|
||||
new "Live2D di Ren'py dukung mendukung versi web, Android x86_64 (termsuk emulator dan Chrome OS), dan harus ditambahkan secara manual/terpisah pada iOS. Live2D harus dipasang ulang apabila melakukan pemuktahiran(upgrade) Ren'py atau pada dukungan tambahan pada Androidnya."
|
||||
new "Live2D di Ren'py tidak mendukung versi web, Android x86_64 (termsuk emulator dan Chrome OS), dan harus ditambahkan secara manual/terpisah pada iOS. Live2D harus dipasang ulang apabila melakukan pemuktahiran(upgrade) Ren'py atau pada dukungan tambahan pada Androidnya."
|
||||
|
||||
# game/install.rpy:151
|
||||
old "Install Steam Support"
|
||||
@@ -1319,3 +1319,7 @@ translate indonesian strings:
|
||||
# game/web.rpy:242
|
||||
old "Preparing progressive download"
|
||||
new "Persiapan unduh"
|
||||
|
||||
# web.rpy:194
|
||||
old "Before packaging web apps, you'll need to download RenPyWeb, Ren'Py's web support. Would you like to download RenPyWeb now?"
|
||||
new "Sebelum membangun renpy ke versi web,kamu perlu mengunduh RenpyWeb (Ren'Py's web support),unduh sekarang?"
|
||||
|
||||
@@ -887,7 +887,7 @@ void RPS_pause(int channel, int pause) {
|
||||
|
||||
}
|
||||
|
||||
void RPS_unpause_all(void) {
|
||||
void RPS_unpause_all_at_start(void) {
|
||||
|
||||
int i;
|
||||
|
||||
@@ -895,7 +895,7 @@ void RPS_unpause_all(void) {
|
||||
Py_BEGIN_ALLOW_THREADS
|
||||
|
||||
for (i = 0; i < num_channels; i++) {
|
||||
if (channels[i].playing && channels[i].paused) {
|
||||
if (channels[i].playing && channels[i].paused && channels[i].pos == 0) {
|
||||
media_wait_ready(channels[i].playing);
|
||||
}
|
||||
}
|
||||
@@ -903,8 +903,8 @@ void RPS_unpause_all(void) {
|
||||
Py_END_ALLOW_THREADS
|
||||
|
||||
for (i = 0; i < num_channels; i++) {
|
||||
channels[i].paused = 0;
|
||||
if (channels[i].playing) {
|
||||
if (channels[i].playing && channels[i].pos == 0) {
|
||||
channels[i].paused = 0;
|
||||
media_pause(channels[i].playing, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ int RPS_queue_depth(int channel);
|
||||
PyObject *RPS_playing_name(int channel);
|
||||
void RPS_fadeout(int channel, int ms);
|
||||
void RPS_pause(int channel, int pause);
|
||||
void RPS_unpause_all(void);
|
||||
void RPS_unpause_all_at_start(void);
|
||||
void RPS_set_endevent(int channel, int event);
|
||||
int RPS_get_pos(int channel);
|
||||
double RPS_get_duration(int channel);
|
||||
|
||||
@@ -98,8 +98,6 @@ library("z")
|
||||
has_libglew = library("GLEW", optional=True)
|
||||
has_libglew32 = library("glew32", optional=True)
|
||||
|
||||
has_angle = windows and library("EGL", optional=True) and library("GLESv2", optional=True)
|
||||
|
||||
if android:
|
||||
sdl = [ 'SDL2', 'GLESv2', 'log' ]
|
||||
png = 'png16'
|
||||
|
||||
+2
-3
@@ -81,10 +81,10 @@ official = official and getattr(site, "renpy_build_official", False)
|
||||
if PY2:
|
||||
|
||||
# The tuple giving the version number.
|
||||
version_tuple = (7, 5, 0, vc_version)
|
||||
version_tuple = (7, 4, 11, vc_version)
|
||||
|
||||
# The name of this version.
|
||||
version_name = "TBD"
|
||||
version_name = "Lucky Beckoning Cat"
|
||||
|
||||
else:
|
||||
|
||||
@@ -466,7 +466,6 @@ def import_all():
|
||||
|
||||
import renpy.gl
|
||||
import renpy.gl2
|
||||
import renpy.angle
|
||||
|
||||
import renpy.display.layout
|
||||
import renpy.display.viewport
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
# This file was automatically generated from renpy/gl/__init__.py
|
||||
from __future__ import print_function
|
||||
|
||||
# Modifications will be automatically overwritten.
|
||||
-1578
File diff suppressed because it is too large
Load Diff
@@ -1,802 +0,0 @@
|
||||
import os
|
||||
import renpy
|
||||
|
||||
cdef int check_errors
|
||||
check_errors = int(os.environ.get("RENPY_GL_CHECK_ERRORS", 0))
|
||||
|
||||
|
||||
cdef int glActiveTextureARB(GLenum a0) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glActiveTextureARB')
|
||||
cdef GLenum error
|
||||
realGlActiveTextureARB(a0)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glActiveTextureARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glAttachObjectARB(GLhandleARB a0, GLhandleARB a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glAttachObjectARB')
|
||||
cdef GLenum error
|
||||
realGlAttachObjectARB(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glAttachObjectARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glBindFramebufferEXT(GLenum a0, GLuint a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glBindFramebufferEXT')
|
||||
cdef GLenum error
|
||||
realGlBindFramebufferEXT(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glBindFramebufferEXT' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glBindRenderbufferEXT(GLenum a0, GLuint a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glBindRenderbufferEXT')
|
||||
cdef GLenum error
|
||||
realGlBindRenderbufferEXT(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glBindRenderbufferEXT' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glBindTexture(GLenum a0, GLuint a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glBindTexture')
|
||||
cdef GLenum error
|
||||
realGlBindTexture(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glBindTexture' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glBlendFunc(GLenum a0, GLenum a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glBlendFunc')
|
||||
cdef GLenum error
|
||||
realGlBlendFunc(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glBlendFunc' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glClear(GLbitfield a0) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glClear')
|
||||
cdef GLenum error
|
||||
with nogil:
|
||||
realGlClear(a0)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glClear' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glClearColor(GLclampf a0, GLclampf a1, GLclampf a2, GLclampf a3) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glClearColor')
|
||||
cdef GLenum error
|
||||
realGlClearColor(a0, a1, a2, a3)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glClearColor' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glCompileShaderARB(GLhandleARB a0) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glCompileShaderARB')
|
||||
cdef GLenum error
|
||||
realGlCompileShaderARB(a0)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glCompileShaderARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glCopyTexImage2D(GLenum a0, GLint a1, GLenum a2, GLint a3, GLint a4, GLsizei a5, GLsizei a6, GLint a7) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glCopyTexImage2D')
|
||||
cdef GLenum error
|
||||
realGlCopyTexImage2D(a0, a1, a2, a3, a4, a5, a6, a7)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glCopyTexImage2D' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glCopyTexSubImage2D(GLenum a0, GLint a1, GLint a2, GLint a3, GLint a4, GLint a5, GLsizei a6, GLsizei a7) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glCopyTexSubImage2D')
|
||||
cdef GLenum error
|
||||
realGlCopyTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glCopyTexSubImage2D' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef GLhandleARB glCreateProgramObjectARB() except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glCreateProgramObjectARB')
|
||||
cdef GLenum error
|
||||
cdef GLhandleARB rv = realGlCreateProgramObjectARB()
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glCreateProgramObjectARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return rv
|
||||
|
||||
cdef GLhandleARB glCreateShaderObjectARB(GLenum a0) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glCreateShaderObjectARB')
|
||||
cdef GLenum error
|
||||
cdef GLhandleARB rv = realGlCreateShaderObjectARB(a0)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glCreateShaderObjectARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return rv
|
||||
|
||||
cdef int glDeleteFramebuffersEXT(GLsizei a0, GLuint * a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glDeleteFramebuffersEXT')
|
||||
cdef GLenum error
|
||||
realGlDeleteFramebuffersEXT(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glDeleteFramebuffersEXT' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glDeleteProgram(GLuint a0) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glDeleteProgram')
|
||||
cdef GLenum error
|
||||
realGlDeleteProgram(a0)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glDeleteProgram' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glDeleteRenderbuffersEXT(GLsizei a0, GLuint * a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glDeleteRenderbuffersEXT')
|
||||
cdef GLenum error
|
||||
realGlDeleteRenderbuffersEXT(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glDeleteRenderbuffersEXT' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glDeleteShader(GLuint a0) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glDeleteShader')
|
||||
cdef GLenum error
|
||||
realGlDeleteShader(a0)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glDeleteShader' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glDeleteTextures(GLsizei a0, GLuint * a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glDeleteTextures')
|
||||
cdef GLenum error
|
||||
realGlDeleteTextures(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glDeleteTextures' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glDisable(GLenum a0) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glDisable')
|
||||
cdef GLenum error
|
||||
realGlDisable(a0)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glDisable' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glDisableVertexAttribArrayARB(GLuint a0) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glDisableVertexAttribArrayARB')
|
||||
cdef GLenum error
|
||||
realGlDisableVertexAttribArrayARB(a0)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glDisableVertexAttribArrayARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glDrawArrays(GLenum a0, GLint a1, GLsizei a2) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glDrawArrays')
|
||||
cdef GLenum error
|
||||
realGlDrawArrays(a0, a1, a2)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glDrawArrays' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glEnable(GLenum a0) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glEnable')
|
||||
cdef GLenum error
|
||||
realGlEnable(a0)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glEnable' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glEnableVertexAttribArrayARB(GLuint a0) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glEnableVertexAttribArrayARB')
|
||||
cdef GLenum error
|
||||
realGlEnableVertexAttribArrayARB(a0)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glEnableVertexAttribArrayARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glFinish() except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glFinish')
|
||||
cdef GLenum error
|
||||
realGlFinish()
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glFinish' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glFramebufferRenderbufferEXT(GLenum a0, GLenum a1, GLenum a2, GLuint a3) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glFramebufferRenderbufferEXT')
|
||||
cdef GLenum error
|
||||
realGlFramebufferRenderbufferEXT(a0, a1, a2, a3)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glFramebufferRenderbufferEXT' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glFramebufferTexture2DEXT(GLenum a0, GLenum a1, GLenum a2, GLuint a3, GLint a4) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glFramebufferTexture2DEXT')
|
||||
cdef GLenum error
|
||||
realGlFramebufferTexture2DEXT(a0, a1, a2, a3, a4)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glFramebufferTexture2DEXT' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glGenFramebuffersEXT(GLsizei a0, GLuint * a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glGenFramebuffersEXT')
|
||||
cdef GLenum error
|
||||
realGlGenFramebuffersEXT(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glGenFramebuffersEXT' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glGenRenderbuffersEXT(GLsizei a0, GLuint * a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glGenRenderbuffersEXT')
|
||||
cdef GLenum error
|
||||
realGlGenRenderbuffersEXT(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glGenRenderbuffersEXT' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glGenTextures(GLsizei a0, GLuint * a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glGenTextures')
|
||||
cdef GLenum error
|
||||
realGlGenTextures(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glGenTextures' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef GLint glGetAttribLocationARB(GLhandleARB a0, GLchar * a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glGetAttribLocationARB')
|
||||
cdef GLenum error
|
||||
cdef GLint rv = realGlGetAttribLocationARB(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glGetAttribLocationARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return rv
|
||||
|
||||
cdef int glGetIntegerv(GLenum a0, GLint * a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glGetIntegerv')
|
||||
cdef GLenum error
|
||||
realGlGetIntegerv(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glGetIntegerv' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glGetProgramInfoLog(GLhandleARB a0, GLsizei a1, GLsizei * a2, GLchar * a3) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glGetProgramInfoLog')
|
||||
cdef GLenum error
|
||||
realGlGetProgramInfoLog(a0, a1, a2, a3)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glGetProgramInfoLog' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glGetProgramiv(GLuint a0, GLenum a1, GLint * a2) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glGetProgramiv')
|
||||
cdef GLenum error
|
||||
realGlGetProgramiv(a0, a1, a2)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glGetProgramiv' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glGetShaderInfoLog(GLhandleARB a0, GLsizei a1, GLsizei * a2, GLchar * a3) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glGetShaderInfoLog')
|
||||
cdef GLenum error
|
||||
realGlGetShaderInfoLog(a0, a1, a2, a3)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glGetShaderInfoLog' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glGetShaderiv(GLuint a0, GLenum a1, GLint * a2) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glGetShaderiv')
|
||||
cdef GLenum error
|
||||
realGlGetShaderiv(a0, a1, a2)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glGetShaderiv' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef GLchar * glGetString(GLenum a0) except? NULL:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glGetString')
|
||||
cdef GLenum error
|
||||
cdef GLchar * rv = realGlGetString(a0)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glGetString' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return rv
|
||||
|
||||
cdef GLint glGetUniformLocationARB(GLhandleARB a0, GLchar * a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glGetUniformLocationARB')
|
||||
cdef GLenum error
|
||||
cdef GLint rv = realGlGetUniformLocationARB(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glGetUniformLocationARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return rv
|
||||
|
||||
cdef int glLinkProgramARB(GLhandleARB a0) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glLinkProgramARB')
|
||||
cdef GLenum error
|
||||
realGlLinkProgramARB(a0)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glLinkProgramARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glReadPixels(GLint a0, GLint a1, GLsizei a2, GLsizei a3, GLenum a4, GLenum a5, GLubyte * a6) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glReadPixels')
|
||||
cdef GLenum error
|
||||
realGlReadPixels(a0, a1, a2, a3, a4, a5, a6)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glReadPixels' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glRenderbufferStorageEXT(GLenum a0, GLenum a1, GLsizei a2, GLsizei a3) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glRenderbufferStorageEXT')
|
||||
cdef GLenum error
|
||||
realGlRenderbufferStorageEXT(a0, a1, a2, a3)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glRenderbufferStorageEXT' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glScissor(GLint a0, GLint a1, GLsizei a2, GLsizei a3) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glScissor')
|
||||
cdef GLenum error
|
||||
realGlScissor(a0, a1, a2, a3)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glScissor' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glShaderSourceARB(GLhandleARB a0, GLsizei a1, GLchar * * a2, GLint * a3) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glShaderSourceARB')
|
||||
cdef GLenum error
|
||||
realGlShaderSourceARB(a0, a1, a2, a3)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glShaderSourceARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glTexImage2D(GLenum a0, GLint a1, GLint a2, GLsizei a3, GLsizei a4, GLint a5, GLenum a6, GLenum a7, GLubyte * a8) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glTexImage2D')
|
||||
cdef GLenum error
|
||||
realGlTexImage2D(a0, a1, a2, a3, a4, a5, a6, a7, a8)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glTexImage2D' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glTexParameteri(GLenum a0, GLenum a1, GLint a2) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glTexParameteri')
|
||||
cdef GLenum error
|
||||
realGlTexParameteri(a0, a1, a2)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glTexParameteri' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glTexSubImage2D(GLenum a0, GLint a1, GLint a2, GLint a3, GLsizei a4, GLsizei a5, GLenum a6, GLenum a7, GLubyte * a8) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glTexSubImage2D')
|
||||
cdef GLenum error
|
||||
realGlTexSubImage2D(a0, a1, a2, a3, a4, a5, a6, a7, a8)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glTexSubImage2D' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glUniform1fARB(GLint a0, GLfloat a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glUniform1fARB')
|
||||
cdef GLenum error
|
||||
realGlUniform1fARB(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glUniform1fARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glUniform1iARB(GLint a0, GLint a1) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glUniform1iARB')
|
||||
cdef GLenum error
|
||||
realGlUniform1iARB(a0, a1)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glUniform1iARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glUniform2fARB(GLint a0, GLfloat a1, GLfloat a2) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glUniform2fARB')
|
||||
cdef GLenum error
|
||||
realGlUniform2fARB(a0, a1, a2)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glUniform2fARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glUniform4fARB(GLint a0, GLfloat a1, GLfloat a2, GLfloat a3, GLfloat a4) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glUniform4fARB')
|
||||
cdef GLenum error
|
||||
realGlUniform4fARB(a0, a1, a2, a3, a4)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glUniform4fARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glUniformMatrix4fvARB(GLint a0, GLsizei a1, GLboolean a2, GLfloat * a3) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glUniformMatrix4fvARB')
|
||||
cdef GLenum error
|
||||
realGlUniformMatrix4fvARB(a0, a1, a2, a3)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glUniformMatrix4fvARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glUseProgramObjectARB(GLhandleARB a0) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glUseProgramObjectARB')
|
||||
cdef GLenum error
|
||||
realGlUseProgramObjectARB(a0)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glUseProgramObjectARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glVertexAttribPointerARB(GLuint a0, GLint a1, GLenum a2, GLboolean a3, GLsizei a4, GLubyte * a5) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glVertexAttribPointerARB')
|
||||
cdef GLenum error
|
||||
realGlVertexAttribPointerARB(a0, a1, a2, a3, a4, a5)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glVertexAttribPointerARB' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
|
||||
cdef int glViewport(GLint a0, GLint a1, GLsizei a2, GLsizei a3) except? 0:
|
||||
if check_errors & 4:
|
||||
renpy.display.log.write('glViewport')
|
||||
cdef GLenum error
|
||||
realGlViewport(a0, a1, a2, a3)
|
||||
if check_errors:
|
||||
error = realGlGetError()
|
||||
if error:
|
||||
message = 'GL error %x in glViewport' % error
|
||||
if check_errors & 1:
|
||||
renpy.display.log.write('%s', message)
|
||||
if check_errors & 2:
|
||||
raise Exception(message)
|
||||
return 1
|
||||
@@ -1,51 +0,0 @@
|
||||
# This file was automatically generated from renpy/gl/glblacklist.py
|
||||
# Modifications will be automatically overwritten.
|
||||
|
||||
# Copyright 2004-2021 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.
|
||||
|
||||
|
||||
# The blacklist of OpenGL cards. Fields are:
|
||||
# - A substring of the Renderer.
|
||||
# - A substring of the Version.
|
||||
# - True to allow shader rendering.
|
||||
# - True to allow fixed-function rendering.
|
||||
|
||||
# If both of the last two entries are false, GL refuses to
|
||||
# start.
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
BLACKLIST = [
|
||||
|
||||
# Crashes for Mugenjohncel.
|
||||
("S3 Graphics DeltaChrome", "1.4 20.00", False, False),
|
||||
|
||||
# A bug in Mesa 7.9 and 7.10 (before 7.10.3) causes the system to
|
||||
# fail to initialize the GLSL compiler.
|
||||
# https://bugs.freedesktop.org/show_bug.cgi?id=35603
|
||||
("Mesa", "Mesa 7.9", False, True),
|
||||
("Mesa", "Mesa 7.10.3", True, True),
|
||||
("Mesa", "Mesa 7.10", False, True),
|
||||
|
||||
# Default to allowing everything.
|
||||
("", "", True, True),
|
||||
]
|
||||
@@ -653,7 +653,7 @@ class Channel(object):
|
||||
|
||||
for filename in filenames:
|
||||
filename, _, _ = self.split_filename(filename, False)
|
||||
renpy.game.persistent._seen_audio[filename] = True # @UndefinedVariable
|
||||
renpy.game.persistent._seen_audio[str(filename)] = True # @UndefinedVariable
|
||||
|
||||
if not loop_only:
|
||||
|
||||
@@ -1096,7 +1096,7 @@ def periodic_pass():
|
||||
need_ss = True
|
||||
|
||||
if need_ss:
|
||||
renpysound.unpause_all()
|
||||
renpysound.unpause_all_at_start()
|
||||
|
||||
for c in all_channels:
|
||||
c.synchro_start = False
|
||||
|
||||
@@ -63,7 +63,7 @@ cdef extern from "renpysound_core.h":
|
||||
object RPS_playing_name(int channel)
|
||||
void RPS_fadeout(int channel, int ms)
|
||||
void RPS_pause(int channel, int pause)
|
||||
void RPS_unpause_all()
|
||||
void RPS_unpause_all_at_start()
|
||||
int RPS_get_pos(int channel)
|
||||
double RPS_get_duration(int channel)
|
||||
void RPS_set_endevent(int channel, int event)
|
||||
@@ -224,12 +224,12 @@ def unpause(channel):
|
||||
RPS_pause(channel, 0)
|
||||
check_error()
|
||||
|
||||
def unpause_all():
|
||||
def unpause_all_at_start():
|
||||
"""
|
||||
Unpauses all channels that are paused.
|
||||
Unpauses all channels that are paused at the start.
|
||||
"""
|
||||
|
||||
RPS_unpause_all()
|
||||
RPS_unpause_all_at_start()
|
||||
|
||||
def fadeout(channel, delay):
|
||||
"""
|
||||
@@ -430,4 +430,3 @@ def sample_surfaces(rgb, rgba):
|
||||
RPS_sample_surfaces(rgb, rgba)
|
||||
|
||||
# When changing this API, change webaudio.py, too!
|
||||
|
||||
|
||||
@@ -160,12 +160,12 @@ def unpause(channel):
|
||||
call("unpause", channel)
|
||||
|
||||
|
||||
def unpause_all():
|
||||
def unpause_all_at_start():
|
||||
"""
|
||||
Unpauses all channels that are paused.
|
||||
"""
|
||||
|
||||
call("unpause_all")
|
||||
call("unpauseAllAtStart")
|
||||
|
||||
|
||||
def fadeout(channel, delay):
|
||||
@@ -350,4 +350,3 @@ def sample_surfaces(rgb, rgba):
|
||||
"""
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
init -1100 python:
|
||||
init -1900 python:
|
||||
|
||||
# This is called when script_version is set, to immediately
|
||||
# run code in response to a script_version change.
|
||||
@@ -225,8 +225,8 @@ init -1100 python:
|
||||
config.relative_transform_size = False
|
||||
config.tts_front_to_back = False
|
||||
|
||||
if version <= (7, 5, 0):
|
||||
style.drag.focus_mask = True
|
||||
if version <= (7, 4, 10):
|
||||
config.always_unfocus = False
|
||||
|
||||
# The version of Ren'Py this script is intended for, or
|
||||
# None if it's intended for the current version.
|
||||
@@ -275,7 +275,7 @@ init -1000 python hide:
|
||||
except:
|
||||
pass
|
||||
|
||||
init 1100 python hide:
|
||||
init 1900 python hide:
|
||||
|
||||
# This returns true if the script_version is <= the
|
||||
# script_version supplied. Give it the last script version
|
||||
|
||||
+39
-8
@@ -76,6 +76,36 @@ init -1100 python in gui:
|
||||
if persistent._gui_preference_default is None:
|
||||
persistent._gui_preference_default = { }
|
||||
|
||||
# A list of variant, function tuples.
|
||||
variant_functions = [ ]
|
||||
|
||||
def variant(f, variant=None):
|
||||
"""
|
||||
:doc: gui
|
||||
|
||||
A decorator that causes a function to be called when the gui is first
|
||||
initialized, and again each time the gui is rebuilt. This is intended
|
||||
to be used as a function decorator, of the form::
|
||||
|
||||
@gui.variant
|
||||
def small():
|
||||
gui.text_size = 30
|
||||
# ...
|
||||
|
||||
It can also be called with `f` (a function) and `variant` (a string),
|
||||
giving the variant name.
|
||||
"""
|
||||
|
||||
if variant is None:
|
||||
variant = f.__name__
|
||||
|
||||
variant_functions.append((variant, f))
|
||||
|
||||
if renpy.variant(variant):
|
||||
f()
|
||||
|
||||
return f
|
||||
|
||||
def rebuild():
|
||||
"""
|
||||
:doc: gui
|
||||
@@ -85,8 +115,17 @@ init -1100 python in gui:
|
||||
Note: This is a very slow function.
|
||||
"""
|
||||
|
||||
global variant_functions
|
||||
old_variant_functions = variant_functions
|
||||
|
||||
renpy.ast.redefine([ "store.gui" ])
|
||||
|
||||
variant_functions = old_variant_functions
|
||||
|
||||
for variant, f in variant_functions:
|
||||
if renpy.variant(variant):
|
||||
f()
|
||||
|
||||
for i in config.translate_clean_stores:
|
||||
renpy.python.clean_store_backup.backup_one("store." + i)
|
||||
|
||||
@@ -584,11 +623,3 @@ init -1100 python in gui:
|
||||
return False
|
||||
|
||||
renpy.arguments.register_command("gui_images", _gui_images)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -437,7 +437,7 @@ init -1500 python:
|
||||
elif name == _("rollback side"):
|
||||
|
||||
if value in [ "left", "right", "disable" ]:
|
||||
if renpy.mobile:
|
||||
if renpy.variant("mobile"):
|
||||
field = "mobile_rollback_side"
|
||||
else:
|
||||
field = "desktop_rollback_side"
|
||||
|
||||
@@ -362,7 +362,7 @@ init -1800:
|
||||
yfill False
|
||||
|
||||
style drag:
|
||||
focus_mask None
|
||||
focus_mask True
|
||||
|
||||
# Out-of-game menu root windows
|
||||
|
||||
|
||||
@@ -115,6 +115,7 @@ let start_playing = (c) => {
|
||||
}
|
||||
|
||||
p.started = context.currentTime;
|
||||
p.started_once = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -190,7 +191,8 @@ renpyAudio.queue = (channel, file, name, paused, fadein, tight, start, end) =>
|
||||
started : null,
|
||||
fadein : fadein,
|
||||
fadeout: null,
|
||||
tight : tight
|
||||
tight : tight,
|
||||
started_once : false
|
||||
};
|
||||
|
||||
if (c.playing === null) {
|
||||
@@ -315,9 +317,11 @@ renpyAudio.unpause = (channel) => {
|
||||
};
|
||||
|
||||
|
||||
renpyAudio.unpauseAll = () => {
|
||||
for (let i of Object.entries(channel)) {
|
||||
start_playing(i[1]);
|
||||
renpyAudio.unpauseAllAtStart = () => {
|
||||
for (let i of Object.entries(channels)) {
|
||||
if (i[1].playing && ! i[1].playing.started_once ) {
|
||||
start_playing(i[1]);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1192,6 +1192,10 @@ debug_prediction = False
|
||||
# Should mouse events that cause a window to gain focus be passed through.
|
||||
mouse_focus_clickthrough = False
|
||||
|
||||
# Should the current displayable always run its unfocus handler, even when
|
||||
# focus is taken away by default.
|
||||
always_unfocus = True
|
||||
|
||||
del os
|
||||
del collections
|
||||
|
||||
|
||||
@@ -513,6 +513,9 @@ class PauseBehavior(renpy.display.layout.Null):
|
||||
|
||||
def event(self, ev, x, y, st):
|
||||
|
||||
if ev.type == renpy.display.core.TIMEEVENT and ev.modal:
|
||||
return
|
||||
|
||||
if st >= self.delay:
|
||||
|
||||
if self.voice and renpy.config.nw_voice:
|
||||
@@ -634,7 +637,7 @@ class SayBehavior(renpy.display.layout.Null):
|
||||
|
||||
if not renpy.config.enable_rollback_side:
|
||||
rollback_side = "disable"
|
||||
if renpy.exports.mobile:
|
||||
if renpy.exports.variant("mobile"):
|
||||
rollback_side = renpy.game.preferences.mobile_rollback_side
|
||||
else:
|
||||
rollback_side = renpy.game.preferences.desktop_rollback_side
|
||||
@@ -2258,13 +2261,16 @@ class Timer(renpy.display.layout.Null):
|
||||
# Did we start the timer?
|
||||
self.started = False
|
||||
|
||||
if replaces is not None:
|
||||
if isinstance(replaces, Timer):
|
||||
self.state = replaces.state
|
||||
else:
|
||||
self.state = TimerState()
|
||||
|
||||
def event(self, ev, x, y, st):
|
||||
|
||||
if ev.type == renpy.display.core.TIMEEVENT and ev.modal:
|
||||
return
|
||||
|
||||
state = self.state
|
||||
|
||||
if not state.started:
|
||||
@@ -2304,7 +2310,7 @@ class MouseArea(renpy.display.core.Displayable):
|
||||
# Are we hovered right now?
|
||||
self.is_hovered = False
|
||||
|
||||
if replaces is not None:
|
||||
if isinstance(replaces, MouseArea):
|
||||
self.is_hovered = replaces.is_hovered
|
||||
|
||||
# Taken from the render.
|
||||
|
||||
+21
-19
@@ -1346,20 +1346,27 @@ class SceneLists(renpy.object.Object):
|
||||
rv.append_scene_list(self.layers[layer])
|
||||
rv.layer_name = layer
|
||||
rv._duplicatable = False
|
||||
rv._layer_at_list = self.layer_at_list[layer]
|
||||
rv._camera_list = self.camera_list[layer]
|
||||
|
||||
return rv
|
||||
|
||||
def transform_layer(self, layer, d):
|
||||
def transform_layer(self, layer, d, layer_at_list=None, camera_list=None):
|
||||
"""
|
||||
When `d` is a layer created with make_layer, returns `d` with the
|
||||
various at_list transformas applied to it.
|
||||
various at_list transforms applied to it.
|
||||
"""
|
||||
|
||||
if layer_at_list is None:
|
||||
layer_at_list = self.layer_at_list[layer]
|
||||
if camera_list is None:
|
||||
camera_list = self.camera_list[layer]
|
||||
|
||||
rv = d
|
||||
|
||||
# Layer at list.
|
||||
|
||||
time, at_list = self.layer_at_list[layer]
|
||||
time, at_list = layer_at_list
|
||||
|
||||
old_transform = self.layer_transform.get(layer, None)
|
||||
new_transform = None
|
||||
@@ -1387,7 +1394,7 @@ class SceneLists(renpy.object.Object):
|
||||
|
||||
# Camera list.
|
||||
|
||||
time, at_list = self.camera_list[layer]
|
||||
time, at_list = camera_list
|
||||
|
||||
old_transform = self.camera_transform.get(layer, None)
|
||||
new_transform = None
|
||||
@@ -3401,21 +3408,13 @@ class Interface(object):
|
||||
self.consider_gc()
|
||||
step += 1
|
||||
|
||||
# Step 2: Load downloaded resources
|
||||
# Step 2: Push textures to GPU.
|
||||
elif step == 2:
|
||||
|
||||
if renpy.emscripten or os.environ.get('RENPY_SIMULATE_DOWNLOAD', False):
|
||||
renpy.webloader.process_downloaded_resources()
|
||||
|
||||
step += 1
|
||||
|
||||
# Step 3: Push textures to GPU.
|
||||
elif step == 3:
|
||||
renpy.display.draw.ready_one_texture()
|
||||
step += 1
|
||||
|
||||
# Step 4: Predict more images.
|
||||
elif step == 4:
|
||||
# Step 3: Predict more images.
|
||||
elif step == 3:
|
||||
|
||||
if not self.prediction_coroutine:
|
||||
step += 1
|
||||
@@ -3436,16 +3435,16 @@ class Interface(object):
|
||||
if not expensive:
|
||||
step += 1
|
||||
|
||||
# Step 5: Preload images (on emscripten)
|
||||
elif step == 5:
|
||||
# Step 4: Preload images (on emscripten)
|
||||
elif step == 4:
|
||||
|
||||
if expensive and renpy.emscripten:
|
||||
renpy.display.im.cache.preload_thread_pass()
|
||||
|
||||
step += 1
|
||||
|
||||
# Step 6: Autosave.
|
||||
elif step == 6:
|
||||
# Step 5: Autosave.
|
||||
elif step == 5:
|
||||
|
||||
if not self.did_autosave:
|
||||
renpy.loadsave.autosave()
|
||||
@@ -3800,6 +3799,9 @@ class Interface(object):
|
||||
# Check for autoreload.
|
||||
renpy.loader.check_autoreload()
|
||||
|
||||
if renpy.emscripten or os.environ.get('RENPY_SIMULATE_DOWNLOAD', False):
|
||||
renpy.webloader.process_downloaded_resources()
|
||||
|
||||
for i in renpy.config.needs_redraw_callbacks:
|
||||
if i():
|
||||
needs_redraw = True
|
||||
|
||||
@@ -309,7 +309,7 @@ class Drag(renpy.display.core.Displayable, renpy.python.RevertableObject):
|
||||
# A z index that's changed when something is raised or lowered.
|
||||
self.z = 0
|
||||
|
||||
if replaces is not None:
|
||||
if isinstance(replaces, Drag):
|
||||
self.x = replaces.x
|
||||
self.y = replaces.y
|
||||
self.at = replaces.at
|
||||
@@ -804,7 +804,7 @@ class DragGroup(renpy.display.layout.MultiBox):
|
||||
|
||||
self.sorted = False
|
||||
|
||||
if replaces is not None:
|
||||
if isinstance(replaces, DragGroup):
|
||||
self.positions = renpy.python.RevertableDict(replaces.positions)
|
||||
self.sensitive = replaces.sensitive
|
||||
self.z_serial = replaces.z_serial
|
||||
|
||||
@@ -123,7 +123,7 @@ def dynamic_keyboard(st, at):
|
||||
|
||||
if keyboard is None:
|
||||
keyboard = renpy.store.Fixed(
|
||||
renpy.store.Solid("#000", yalign=1.0, ymaximum=.625),
|
||||
renpy.store.Solid("#0008", yalign=1.0, ymaximum=.625),
|
||||
renpy.store.Text("On-Screen Keyboard", xalign=.5, yalign=.75),
|
||||
)
|
||||
null = renpy.store.Null()
|
||||
@@ -169,7 +169,13 @@ def init_emulator():
|
||||
emulator = null_emulator
|
||||
overlay = [ ]
|
||||
|
||||
if emulator is not null_emulator:
|
||||
|
||||
def early_init_emulator():
|
||||
|
||||
name = os.environ.get("RENPY_EMULATOR", "")
|
||||
|
||||
if name:
|
||||
|
||||
renpy.exports.windows = False
|
||||
renpy.exports.linux = False
|
||||
renpy.exports.macintosh = False
|
||||
|
||||
@@ -278,6 +278,7 @@ def before_interact(roots):
|
||||
|
||||
current = get_focused()
|
||||
current = replaced_by.get(id(current), current)
|
||||
old_current = current
|
||||
|
||||
# Update the grab.
|
||||
grab = replaced_by.get(id(grab), None)
|
||||
@@ -332,7 +333,11 @@ def before_interact(roots):
|
||||
if f is not current:
|
||||
renpy.display.screen.push_current_screen(screen)
|
||||
try:
|
||||
f.unfocus(default=default)
|
||||
if (f is old_current) and renpy.config.always_unfocus:
|
||||
f.unfocus(default=False)
|
||||
else:
|
||||
f.unfocus(default=default)
|
||||
|
||||
finally:
|
||||
renpy.display.screen.pop_current_screen()
|
||||
|
||||
|
||||
@@ -593,6 +593,7 @@ def check_modal(modal, ev, x, y, w, h):
|
||||
if modal(ev, x, y, w, h):
|
||||
if (ev is not None) and (ev.type == renpy.display.core.TIMEEVENT):
|
||||
ev.modal = True
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
@@ -685,7 +686,8 @@ class MultiBox(Container):
|
||||
|
||||
if new_d is not old_d:
|
||||
changed = True
|
||||
new_d = renpy.game.context().scene_lists.transform_layer(layer, new_d)
|
||||
new_d = renpy.game.context().scene_lists.transform_layer(layer, new_d, layer_at_list=old_d._layer_at_list, camera_list=old_d._camera_list)
|
||||
rv.layers[layer] = new_d
|
||||
else:
|
||||
new_d = self.layers[layer]
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ from renpy.display.matrix cimport Matrix, Matrix2D
|
||||
|
||||
cdef class Render:
|
||||
|
||||
cdef public bint mark, cache_killed
|
||||
cdef public bint mark, cache_killed, killed
|
||||
|
||||
cdef public float width, height
|
||||
cdef public object layer_name
|
||||
|
||||
@@ -538,7 +538,7 @@ def mark_sweep():
|
||||
|
||||
for r in live_renders:
|
||||
if not r.mark:
|
||||
r.kill_cache()
|
||||
r.kill()
|
||||
else:
|
||||
r.mark = False
|
||||
|
||||
@@ -603,6 +603,9 @@ cdef class Render:
|
||||
# Is has this render been removed from the cache?
|
||||
self.cache_killed = False
|
||||
|
||||
# Has this render been completely killed?
|
||||
self.killed = False
|
||||
|
||||
self.width = width
|
||||
self.height = height
|
||||
|
||||
@@ -728,8 +731,15 @@ cdef class Render:
|
||||
live_renders.append(self)
|
||||
|
||||
def __repr__(self): #@DuplicatedSignature
|
||||
if self.killed:
|
||||
live = "dead "
|
||||
elif self.cache_killed:
|
||||
live = "cache-killed "
|
||||
else:
|
||||
live = ""
|
||||
|
||||
return "<{}Render {:x} of {!r}>".format(
|
||||
("dead " if self.cache_killed else ""),
|
||||
live,
|
||||
id(self),
|
||||
self.render_of)
|
||||
|
||||
@@ -1081,6 +1091,30 @@ cdef class Render:
|
||||
for i in list(self.parents):
|
||||
i.kill_cache()
|
||||
|
||||
for ro in self.render_of:
|
||||
id_ro = id(ro)
|
||||
|
||||
cache = render_cache[id_ro]
|
||||
for k, v in list(cache.items()):
|
||||
if v is self:
|
||||
del cache[k]
|
||||
|
||||
if not cache:
|
||||
del render_cache[id_ro]
|
||||
|
||||
def kill(self):
|
||||
"""
|
||||
Prepares this render and its parents for deallocation.
|
||||
"""
|
||||
|
||||
if self.killed:
|
||||
return
|
||||
|
||||
self.killed = True
|
||||
|
||||
for i in list(self.parents):
|
||||
i.kill()
|
||||
|
||||
self.parents.clear()
|
||||
|
||||
for i in list(self.depends_on_list):
|
||||
@@ -1117,10 +1151,6 @@ cdef class Render:
|
||||
self.cached_texture = None
|
||||
self.cached_model = None
|
||||
|
||||
def kill(self):
|
||||
"""
|
||||
Retained for compatibility, but does not need to be called.
|
||||
"""
|
||||
|
||||
def add_focus(self, d, arg=None, x=0, y=0, w=None, h=None, mx=None, my=None, mask=None):
|
||||
"""
|
||||
|
||||
+7
-6
@@ -19,10 +19,8 @@
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
# This file contains functions that are exported to the script namespace.
|
||||
# Functions defined in this file can be updated by the user to change
|
||||
# their behavior, while functions imported in are probably best left
|
||||
# alone as part of the api.
|
||||
# This file contains functions that are exported to the script namespace as
|
||||
# the renpy namespace. (So renpy.say, renpy.pause, and so on.)
|
||||
|
||||
from __future__ import division, absolute_import, with_statement, print_function, unicode_literals
|
||||
from renpy.compat import *
|
||||
@@ -1298,8 +1296,12 @@ def display_menu(items,
|
||||
rv = renpy.ui.interact(mouse='menu', type=type, roll_forward=roll_forward)
|
||||
|
||||
for label, val in items:
|
||||
|
||||
if isinstance(val, renpy.ui.ChoiceReturn):
|
||||
val = val.value
|
||||
|
||||
if rv == val:
|
||||
log("User chose: " + label)
|
||||
log("Player chose: " + label)
|
||||
break
|
||||
else:
|
||||
log("No choice chosen.")
|
||||
@@ -4258,4 +4260,3 @@ def request_permission(permission):
|
||||
return False
|
||||
|
||||
return get_sdl_dll().SDL_AndroidRequestPermission(permission.encode("utf-8"))
|
||||
|
||||
|
||||
@@ -449,10 +449,7 @@ cdef class GL2Draw:
|
||||
if not fullscreen:
|
||||
renpy.game.preferences.physical_size = self.get_physical_size()
|
||||
|
||||
if renpy.mobile:
|
||||
print("Screen sizes: virtual=%r physical=%r drawable=%r" % (self.virtual_size, self.physical_size, self.drawable_size))
|
||||
else:
|
||||
renpy.display.log.write("Screen sizes: virtual=%r physical=%r drawable=%r" % (self.virtual_size, self.physical_size, self.drawable_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)
|
||||
@@ -1296,7 +1293,7 @@ cdef class GL2DrawingContext:
|
||||
if depth:
|
||||
glClear(GL_DEPTH_BUFFER_BIT)
|
||||
glEnable(GL_DEPTH_TEST)
|
||||
glDepthFunc(GL_LESS)
|
||||
glDepthFunc(GL_LEQUAL)
|
||||
|
||||
properties["has_depth"] = True
|
||||
|
||||
|
||||
+27
-4
@@ -706,6 +706,11 @@ class Live2D(renpy.display.core.Displayable):
|
||||
|
||||
# Determine the current motion.
|
||||
|
||||
motion_st = st
|
||||
|
||||
if st_fade is not None:
|
||||
motion_st = st - st_fade
|
||||
|
||||
for m in self.motions:
|
||||
motion = common.motions.get(m, None)
|
||||
|
||||
@@ -715,6 +720,10 @@ class Live2D(renpy.display.core.Displayable):
|
||||
if motion.duration > st:
|
||||
break
|
||||
|
||||
elif (motion.duration > motion_st) and not common.is_seamless(m):
|
||||
break
|
||||
|
||||
motion_st -= motion.duration
|
||||
st -= motion.duration
|
||||
current_index += 1
|
||||
|
||||
@@ -722,9 +731,18 @@ class Live2D(renpy.display.core.Displayable):
|
||||
if motion is None:
|
||||
return None
|
||||
|
||||
if not self.loop:
|
||||
if (not self.loop) or (not motion.duration):
|
||||
st = motion.duration
|
||||
last_frame = True
|
||||
|
||||
elif (st_fade is not None) and not common.is_seamless(m):
|
||||
# This keeps a motion from being restarted after it would have
|
||||
# been faded out.
|
||||
motion_start = motion_st - motion_st % motion.duration
|
||||
|
||||
if (st - motion_start) > motion.duration:
|
||||
st = motion.duration
|
||||
last_frame = True
|
||||
|
||||
if motion is None:
|
||||
return None
|
||||
@@ -754,7 +772,7 @@ class Live2D(renpy.display.core.Displayable):
|
||||
if (last_name == current_name) and common.is_seamless(current_name):
|
||||
do_fade_in = False
|
||||
|
||||
if (next_name == current_name) and common.is_seamless(current_name):
|
||||
if (next_name == current_name) and common.is_seamless(current_name) and (st_fade is None):
|
||||
do_fade_out = False
|
||||
|
||||
# Apply the motion.
|
||||
@@ -870,14 +888,19 @@ class Live2D(renpy.display.core.Displayable):
|
||||
model.reset_parameters()
|
||||
|
||||
if fade:
|
||||
old_redraw = state.old.update(common, renpy.display.interface.frame_time - state.old_base_time, st)
|
||||
t = renpy.display.interface.frame_time - state.new_base_time
|
||||
else:
|
||||
old_redraw = None
|
||||
t = st
|
||||
|
||||
new_redraw = self.update(common, t, None)
|
||||
|
||||
if fade:
|
||||
old_redraw = state.old.update(common, renpy.display.interface.frame_time - state.old_base_time, st)
|
||||
else:
|
||||
old_redraw = None
|
||||
|
||||
model.finish_parameters()
|
||||
|
||||
# Apply the expressions.
|
||||
expression_redraw = self.update_expressions(st)
|
||||
|
||||
|
||||
@@ -119,6 +119,7 @@ class Parameter(object):
|
||||
self.minimum = minimum
|
||||
self.maximum = maximum
|
||||
self.default = default
|
||||
self.remaining = 1.0
|
||||
|
||||
class Part(object):
|
||||
|
||||
@@ -126,6 +127,7 @@ class Part(object):
|
||||
self.index = index
|
||||
self.name = name
|
||||
self.default_opacity = default_opacity
|
||||
self.remaining = 1.0
|
||||
|
||||
cdef class Live2DModel:
|
||||
"""
|
||||
@@ -263,11 +265,17 @@ cdef class Live2DModel:
|
||||
csmUpdateModel(self.model)
|
||||
|
||||
def reset_parameters(self):
|
||||
"""
|
||||
Resets the parameters, and resets the remaining weight to 1.0.
|
||||
"""
|
||||
|
||||
for i in self.parameters.values():
|
||||
self.parameter_values[i.index] = i.default
|
||||
self.parameter_values[i.index] = 0.0
|
||||
i.remaining = 1.0
|
||||
|
||||
for i in self.parts.values():
|
||||
self.part_opacities[i.index] = i.default_opacity
|
||||
self.part_opacities[i.index] = 0.0
|
||||
i.remaining = 1.0
|
||||
|
||||
|
||||
def set_part_opacity(self, name, value):
|
||||
@@ -278,7 +286,8 @@ cdef class Live2DModel:
|
||||
self.set_part_opacity(i, value)
|
||||
return
|
||||
|
||||
self.part_opacities[part.index] = value
|
||||
self.part_opacities[part.index] += value * part.remaining
|
||||
part.remaining = 0.0
|
||||
|
||||
def set_parameter(self, name, value, weight=1.0):
|
||||
parameter = self.parameters.get(name, None)
|
||||
@@ -288,8 +297,20 @@ cdef class Live2DModel:
|
||||
self.set_parameter(i, value, weight=weight)
|
||||
return
|
||||
|
||||
weight = min(weight, parameter.remaining)
|
||||
|
||||
old = self.parameter_values[parameter.index]
|
||||
self.parameter_values[parameter.index] = old + weight * (value - old)
|
||||
self.parameter_values[parameter.index] += weight * value
|
||||
parameter.remaining -= weight
|
||||
|
||||
def finish_parameters(self):
|
||||
for i in self.parameters.values():
|
||||
self.parameter_values[i.index] += i.default * i.remaining
|
||||
i.remaining = 0.0
|
||||
|
||||
for i in self.parts.values():
|
||||
self.part_opacities[i.index] += i.default_opacity * i.remaining
|
||||
i.remaining = 0.0
|
||||
|
||||
def blend_parameter(self, name, blend, value, weight=1.0):
|
||||
|
||||
@@ -330,9 +351,6 @@ cdef class Live2DModel:
|
||||
csmUpdateModel(self.model)
|
||||
|
||||
# Render the model.
|
||||
|
||||
# w = self.pixel_size.X
|
||||
# h = self.pixel_size.Y
|
||||
w = int(zoom * self.pixel_size.X)
|
||||
h = int(zoom * self.pixel_size.Y)
|
||||
|
||||
|
||||
@@ -219,6 +219,7 @@ class Motion(object):
|
||||
factor = max(factor, 0.0)
|
||||
|
||||
t = st
|
||||
i = None
|
||||
|
||||
for i in segments:
|
||||
if t <= i.duration:
|
||||
@@ -228,6 +229,11 @@ class Motion(object):
|
||||
|
||||
t -= i.duration
|
||||
|
||||
else:
|
||||
if i is not None:
|
||||
t = i.duration
|
||||
rv[k] = (factor, i.get(t))
|
||||
|
||||
return rv
|
||||
|
||||
def wait(self, st, fade_st, do_fade_in, do_fade_out):
|
||||
|
||||
@@ -161,6 +161,7 @@ def choose_variants():
|
||||
|
||||
if "RENPY_VARIANT" in os.environ:
|
||||
renpy.config.variants = list(os.environ["RENPY_VARIANT"].split()) + [ None ]
|
||||
renpy.display.emulator.early_init_emulator()
|
||||
return
|
||||
|
||||
renpy.config.variants = [ None ]
|
||||
|
||||
@@ -99,6 +99,8 @@ class Persistent(object):
|
||||
if not self._seen_audio:
|
||||
self._seen_audio = { }
|
||||
|
||||
self._seen_audio = { str(i) : True for i in self._seen_audio }
|
||||
|
||||
# The set of seen translate identifiers.
|
||||
if not self._seen_translates:
|
||||
self._seen_translates = set()
|
||||
|
||||
+17
-3
@@ -96,6 +96,9 @@ class SLContext(renpy.ui.Addable):
|
||||
# The local scope that python code is evaluated in.
|
||||
self.scope = { }
|
||||
|
||||
# The scope of the top-level screen.
|
||||
self.root_scope = self.scope
|
||||
|
||||
# The global scope that python code is evaluated in.
|
||||
self.globals = { }
|
||||
|
||||
@@ -785,6 +788,9 @@ class SLDisplayable(SLBlock):
|
||||
|
||||
for i, local_scope, context_scope in cache.constant_uses_scope:
|
||||
|
||||
if context_scope is None:
|
||||
context_scope = context.root_scope
|
||||
|
||||
if local_scope:
|
||||
scope = dict(context_scope)
|
||||
scope.update(local_scope)
|
||||
@@ -1139,7 +1145,10 @@ class SLDisplayable(SLBlock):
|
||||
if i in ctx.scope:
|
||||
local_scope[i] = ctx.scope[i]
|
||||
|
||||
ctx.uses_scope.append((main, local_scope, ctx.scope))
|
||||
if ctx.scope is context.root_scope:
|
||||
ctx.uses_scope.append((main, local_scope, None))
|
||||
else:
|
||||
ctx.uses_scope.append((main, local_scope, ctx.scope))
|
||||
|
||||
cache.constant_uses_scope = ctx.uses_scope
|
||||
|
||||
@@ -1901,7 +1910,9 @@ class SLUse(SLNode):
|
||||
if args:
|
||||
raise Exception("Screen {} does not take positional arguments. ({} given)".format(self.target, len(args)))
|
||||
|
||||
scope = context.scope.copy()
|
||||
scope = ctx.old_cache.get("scope", None) or ctx.miss_cache.get("scope", None) or { }
|
||||
scope.clear()
|
||||
scope.update(context.scope)
|
||||
scope.update(kwargs)
|
||||
|
||||
scope["_scope"] = scope
|
||||
@@ -2153,7 +2164,9 @@ class SLCustomUse(SLNode):
|
||||
if args:
|
||||
raise Exception("Screen {} does not take positional arguments. ({} given)".format(self.target, len(args)))
|
||||
|
||||
scope = context.scope.copy()
|
||||
scope = ctx.old_cache.get("scope", None) or ctx.miss_cache.get("scope", None) or { }
|
||||
scope.clear()
|
||||
scope.update(context.scope)
|
||||
scope.update(kwargs)
|
||||
|
||||
scope["_scope"] = scope
|
||||
@@ -2400,6 +2413,7 @@ class SLScreen(SLBlock):
|
||||
context = SLContext()
|
||||
|
||||
context.scope = scope
|
||||
context.root_scope = scope
|
||||
context.globals = renpy.python.store_dicts["store"]
|
||||
context.debug = debug
|
||||
context.predicting = renpy.display.predict.predicting
|
||||
|
||||
@@ -178,6 +178,7 @@ Keyword("changed")
|
||||
Keyword("pixel_width")
|
||||
Keyword("value")
|
||||
Keyword("mask")
|
||||
Keyword("caret_blink")
|
||||
Style("caret")
|
||||
add(text_properties)
|
||||
|
||||
|
||||
+1
-1
@@ -1590,7 +1590,7 @@ class Text(renpy.display.core.Displayable):
|
||||
self.start = None
|
||||
self.end = None
|
||||
|
||||
if replaces is not None:
|
||||
if isinstance(replaces, Text):
|
||||
self.slow = replaces.slow
|
||||
self.slow_done = replaces.slow_done
|
||||
self.ctc = replaces.ctc
|
||||
|
||||
+2
-7
@@ -202,7 +202,8 @@ def enqueue(relpath, rtype, data):
|
||||
def process_downloaded_resources():
|
||||
global queue, to_unlink
|
||||
|
||||
reload_needed = False
|
||||
if not queue:
|
||||
return
|
||||
|
||||
with queue_lock:
|
||||
|
||||
@@ -230,7 +231,6 @@ def process_downloaded_resources():
|
||||
# mark for deletion
|
||||
fullpath = os.path.join(renpy.config.gamedir,rr.relpath)
|
||||
to_unlink[fullpath] = time.time()
|
||||
reload_needed = True
|
||||
|
||||
elif rr.rtype == 'music':
|
||||
# - just wait for the 0.5s placeholder to finish,
|
||||
@@ -250,11 +250,6 @@ def process_downloaded_resources():
|
||||
finally:
|
||||
queue = postponed + todo
|
||||
|
||||
if reload_needed:
|
||||
# Refresh the screen and re-load images flushed from cache
|
||||
# Note: done at next Ren'Py interaction (prediction reset)
|
||||
renpy.display.render.free_memory()
|
||||
|
||||
# Free files from memory once they are loaded
|
||||
# Due to search-path dups and derived images (including image-based animations)
|
||||
# files can't be removed right after actual load
|
||||
|
||||
@@ -1262,6 +1262,6 @@ in the parent. This is because a displayable may have only one position, and
|
||||
a position that is actively set takes precedence. These properties may be set in
|
||||
multiple ways - for example, :tpref:`xalign` sets xpos and xanchor.
|
||||
|
||||
Finally, when a ``show`` statement does not include and ``at`` clause, the
|
||||
Finally, when a ``show`` statement does not include an ``at`` clause, the
|
||||
same displayables are used, so no inheritence is necessary. To prevent inheritance,
|
||||
show and then hide the displayable.
|
||||
|
||||
+99
-18
@@ -2,39 +2,115 @@
|
||||
Changelog (Ren'Py 7.x-)
|
||||
=======================
|
||||
|
||||
.. _renpy-7.5.0:
|
||||
.. _renpy-7.4.11:
|
||||
|
||||
7.5
|
||||
===
|
||||
7.4.11
|
||||
======
|
||||
|
||||
ChromeOS
|
||||
--------
|
||||
The gui.variant Decorator
|
||||
-------------------------
|
||||
|
||||
When running as an Android application on a ChromeOS device, the "chromeos"
|
||||
variant will be selected.
|
||||
A new gui.variant decorator has been added to Ren'Py. This should be used
|
||||
to decorate a function with the name of a variant, and causes that function
|
||||
to be run, if the variant is active, when the game is first started, and then
|
||||
each time the gui is rebuilt (which happens when :func:`gui.rebuild` is called,
|
||||
when a gui preference is changed, or when the translation changes.)
|
||||
|
||||
This is expected to be used like::
|
||||
|
||||
Features
|
||||
--------
|
||||
init python:
|
||||
|
||||
@gui.variant
|
||||
def small():
|
||||
|
||||
## Font sizes.
|
||||
gui.text_size = gui.scale(30)
|
||||
gui.name_text_size = gui.scale(36)
|
||||
# ...
|
||||
|
||||
as a replacement for::
|
||||
|
||||
init python:
|
||||
|
||||
if renpy.variant("small"):
|
||||
## Font sizes.
|
||||
gui.text_size = gui.scale(30)
|
||||
gui.name_text_size = gui.scale(36)
|
||||
# ...
|
||||
|
||||
Which only runs once, and lost the changes if the gui was ever rebuilt.
|
||||
|
||||
Fixes
|
||||
-----
|
||||
|
||||
The new :var:`config.mouse_focus_clickthrough` variable determines if clicks that
|
||||
cause the game window to be focused will be processed normally.
|
||||
|
||||
The launcher now runs with :var:`config.mouse_focus_clickthrough` true, which
|
||||
means that it will only take a single click to launch the game.
|
||||
means that it will only take a single
|
||||
|
||||
The :propref:`focus_mask` style property now defaults to None for drag displayables.
|
||||
This improves performance, but means that the displayable can be dragged by
|
||||
transparent pixels.
|
||||
When a Live2D motion contains a curve with a shorter duration then the motion
|
||||
it is part of, the last value of the curve is retained to the end of the
|
||||
motion.
|
||||
|
||||
.. _renpy-7.4.11:
|
||||
Rare issues with a displayable being replaced by a displayable of a different
|
||||
type are now guarded against. This should only occur when a game is updated
|
||||
between saves.
|
||||
|
||||
Modal displayables now prevent pauses from ending.
|
||||
|
||||
7.4.11
|
||||
======
|
||||
An issue that could cause images to not display in some cases (when a displayable
|
||||
was invalidated) has been fixed.
|
||||
|
||||
Fixes
|
||||
-----
|
||||
Starting a movie no longer causes paused sounds to unpause.
|
||||
|
||||
AudioData objects are no longer stored in the persistent data. Such objects
|
||||
are removed when persistent data is loaded, if present.
|
||||
|
||||
Platform variables like renpy.android and renpy.ios are now set to follow
|
||||
the emulated platform, when Ren'Py is emulating ios or android.
|
||||
|
||||
When in the iOS and Android emulator, the mobile rollback side is used.
|
||||
|
||||
Ren'Py will now always run an `unhovered` action when a displayable (or its
|
||||
replacement) remains shown, and the focus changes. Previously, the unhovered
|
||||
action would not run when the loss of focus was caused by showing a second
|
||||
screen.
|
||||
|
||||
When :var:`config.log` is true, the selected choice is now logged properly.
|
||||
|
||||
The new :func:`gui.variant` function makes it possible to work around
|
||||
an issue in the standard gui where the calling :func:`gui.rebuild` would cause
|
||||
gui variants to reset.
|
||||
|
||||
The web browser now checks for progressively downloaded images once per
|
||||
frame, allowing images to be loaded into the middle of an animation.
|
||||
|
||||
Live2D now uses saturation arithmetic to combine motion fadeins and fadeouts,
|
||||
such that if the fadein contributes 80% of a parameter value, and the
|
||||
fadeout contributes 20% of the value, 100% of the value comes from
|
||||
the two motions. (Previously, the fadein and fadeout were applied
|
||||
independently, such that together, the fadein and fadeout would
|
||||
contribute 84% of the value, with the remaining 16% taken from
|
||||
the default.)
|
||||
|
||||
When fading from one sequence of Live2D motions to another, the original
|
||||
sequence ends when a motion fades out.
|
||||
|
||||
When preserving screens in the old state for a transition, the later_at_list
|
||||
and camera lists are taken from the old state, preventing unexpected changes.
|
||||
|
||||
The :tpref:`gl_depth` property now causes Ren'Py to use GL_LEQUALS,
|
||||
which more closely matches Ren'Py's semantics.
|
||||
|
||||
The 4-component constructor for matrices has been fixed.
|
||||
|
||||
Ren'Py now cleans out the android build directories when producing a Android
|
||||
App Bundle (AAB) file, preventing problems that might be caused when packaging
|
||||
multiple games, or a single game where files are deleted.
|
||||
|
||||
Live2d now properly handles seamless animation when the same motion is repeated
|
||||
in a displayable. (For example, ``show eileen m1 m1 m2`` where ``m1`` is seamless.)
|
||||
|
||||
Mouse motion is now tracked on Chrome OS devices. This prevents the mouse cursor
|
||||
from being hidden between clicks.
|
||||
@@ -56,6 +132,11 @@ A new :var:`config.debug_prediction` variable has been split out of
|
||||
prediction errors to the console and log.txt, making the latter
|
||||
variable act as documented.
|
||||
|
||||
Translations
|
||||
------------
|
||||
|
||||
The German, Indonesian, Polish, and Russian translations have been updated.
|
||||
|
||||
|
||||
.. _renpy-7.4.10:
|
||||
|
||||
|
||||
@@ -12,20 +12,16 @@ features.
|
||||
Incompatible changes to the GUI are documented at :ref:`gui-changes`, as
|
||||
such changes only take effect when the GUI is regenerated.
|
||||
|
||||
.. _incompatible-7.4.11:
|
||||
|
||||
7.5.0
|
||||
-----
|
||||
7.4.11
|
||||
------
|
||||
|
||||
The :propref:`focus_mask` style property now defaults to None for drag displayables.
|
||||
This improves performance, but means that the displayable can be dragged by
|
||||
transparent pixels. To revert this, the focus_mask property can be set to True
|
||||
for individual drags, or globally with::
|
||||
|
||||
style drag:
|
||||
focus_mask True
|
||||
|
||||
Both options reduce performance.
|
||||
Ren'Py will now run a button's unhovered property even when focus is
|
||||
changed by default, such as when a screen is shown or unshown. To
|
||||
revert to the old behavior, use:
|
||||
|
||||
define config.always_unfocus = False
|
||||
|
||||
.. _incompatible-7.4.9:
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -302,7 +302,7 @@ Creates a horizontally-oriented bar that can be used to view or adjust
|
||||
data. It takes the following properties:
|
||||
|
||||
`value`
|
||||
The current value of the bar. This can be either a :ref:`bar value <input-values>`
|
||||
The current value of the bar. This can be either a :ref:`bar value <bar-values>`
|
||||
object, or a number.
|
||||
|
||||
`range`
|
||||
|
||||
+189
-185
@@ -1,29 +1,29 @@
|
||||
<ul class='sponsors'>
|
||||
<li> 3uliusG33zer (7.4.3–7.4.10)
|
||||
<li> 3uliusG33zer (7.4.3–7.4.11)
|
||||
<li> __skwrl__ (6.99.14.3–7.3.0)
|
||||
<li> Adam Wright (7.4–7.4.8)
|
||||
<li> Adam Wright (7.4.9–7.4.10)
|
||||
<li> Adam Wright (7.4.9–7.4.11)
|
||||
<li> Adia Alderson (6.99.13–7.1.2)
|
||||
<li> Aegis (7.4)
|
||||
<li> Alec (7.4.3–7.4.5)
|
||||
<li> Alec H (7.4.9–7.4.10)
|
||||
<li> Alec H (7.4.9–7.4.11)
|
||||
<li> Aleema (6.99.13–7.4.3)
|
||||
<li> <a href="http://alexdodge.net/" rel="nofollow">Alex Dodge</a> (6.99.14–7.3.0)
|
||||
<li> <a href="https://rabidb.com/" rel="nofollow">AlexSSZ</a> (6.99.13–7.4)
|
||||
<li> <a href="https://alic-szecsei.com" rel="nofollow">Alic Szecsei</a> (6.99.14.3–7.4.10)
|
||||
<li> Alicia (7.1, 7.2–7.4.10)
|
||||
<li> <a href="https://alic-szecsei.com" rel="nofollow">Alic Szecsei</a> (6.99.14.3–7.4.11)
|
||||
<li> Alicia (7.1, 7.2–7.4.11)
|
||||
<li> Almost Human (7.2–7.3.0)
|
||||
<li> Almost Human (7.3.0–7.4.10)
|
||||
<li> Almost Human (7.3.0–7.4.11)
|
||||
<li> Alward Sciröck (7.4)
|
||||
<li> Andrealphus Games (7.4)
|
||||
<li> <a href="https://andrealphus.itch.io/leap-of-love-safe-edition" rel="nofollow">Andrealphus Games</a> (7.4–7.4.10)
|
||||
<li> <a href="https://andrealphus.itch.io/leap-of-love-safe-edition" rel="nofollow">Andrealphus Games</a> (7.4–7.4.11)
|
||||
<li> Andrew (7.4–7.4.2)
|
||||
<li> Andrew Paris (7.4)
|
||||
<li> Andurin (7.1.2–7.4)
|
||||
<li> Anne Camlin (7.0–7.4.10)
|
||||
<li> Anne Camlin (7.0–7.4.11)
|
||||
<li> aphrodisia (7.3.3–7.4.9)
|
||||
<li> <a href="https://lemmasoft.renai.us/forums/viewtopic.php?f=51&t=34131" rel="nofollow">AR09FQF-AQ09FRF</a> (6.99.14.1–7.0)
|
||||
<li> Ariane Barnes (7.3.0–7.3.3, 7.4.1–7.4.10)
|
||||
<li> Ariane Barnes (7.3.0–7.3.3, 7.4.1–7.4.11)
|
||||
<li> Asatiir (6.99.13–7.0)
|
||||
<li> Ashley (7.3.0–7.4)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/ASLPro3D" rel="nofollow">ASLPro3D</a> (7.0–7.3.0)
|
||||
@@ -33,68 +33,68 @@
|
||||
<li> Barry B (7.3.3)
|
||||
<li> Belfort and Bastion (6.99.13–7.1)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://store.steampowered.com/dev/Belgerum" rel="nofollow">Belgerum Games</a> ()
|
||||
<li> BigMan03 (7.4.6–7.4.10)
|
||||
<li> BigMan03 (7.4.6–7.4.11)
|
||||
<li> Biotikos Development (6.99.13–7.4)
|
||||
<li> Bob (6.99.13–7.0)
|
||||
<li> <a href="https://bobcgames.itch.io" rel="nofollow">Bob Conway</a> (6.99.14.1–7.4)
|
||||
<li> Bob Reus (7.1–7.4)
|
||||
<li> bob_xxii (7.2–7.4.10)
|
||||
<li> Bogdan (7.4.1–7.4.10)
|
||||
<li> Booom313's tinker corner (6.99.14–7.4.10)
|
||||
<li> Boreas Bear (6.99.13–7.4.10)
|
||||
<li> bob_xxii (7.2–7.4.11)
|
||||
<li> Bogdan (7.4.1–7.4.11)
|
||||
<li> Booom313's tinker corner (6.99.14–7.4.11)
|
||||
<li> Boreas Bear (6.99.13–7.4.11)
|
||||
<li> <a href="http://boyslaughplus.moe" rel="nofollow">Boys Laugh +</a> (6.99.13–7.4)
|
||||
<li> Brad (7.4–7.4.3)
|
||||
<li> <a href="https://github.com/EchoFrost" rel="nofollow">Brad Whitesell (EchoFrost)</a> (6.99.14.2–7.2, 7.4–7.4.10)
|
||||
<li> <a href="https://github.com/EchoFrost" rel="nofollow">Brad Whitesell (EchoFrost)</a> (6.99.14.2–7.2, 7.4–7.4.11)
|
||||
<li> Brett Douglas (6.99.14–6.99.14.3)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.brunimultimedia.com" rel="nofollow">Bruni Multimedia</a> (6.99.14–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.brunimultimedia.com" rel="nofollow">Bruni Multimedia</a> (6.99.14–7.4.11)
|
||||
<li> <a href="http://www.bura.cl" rel="nofollow">BURA</a> (6.99.13)
|
||||
<li> c7v0tnrw7a51 (7.4.6–7.4.10)
|
||||
<li> Cameron Woodard (6.99.14.3–7.4.10)
|
||||
<li> c7v0tnrw7a51 (7.4.6–7.4.11)
|
||||
<li> Cameron Woodard (6.99.14.3–7.4.11)
|
||||
<li> Cara Hillstock (6.99.13–7.3.3)
|
||||
<li> Cara Hillstock (7.3.3–7.4)
|
||||
<li> <a href="https://www.catmpro.com/" rel="nofollow">CatMoun-P</a> (7.3.0–7.3.3)
|
||||
<li> <a href="https://www.celebrityhunter.com.br" rel="nofollow">Celebrity Hunter</a> (7.1–7.4.5)
|
||||
<li> Charlene Gilbert (6.99.13–7.4.10)
|
||||
<li> Charlene Gilbert (6.99.13–7.4.11)
|
||||
<li> <a href="http://charliethegoldfish.com" rel="nofollow">Charlie Francis Cassidy</a> (6.99.13–7.3.3)
|
||||
<li> Chekhov's Ghost (7.1–7.2)
|
||||
<li> Cherry Kiss Games (6.99.14.1–7.4.10)
|
||||
<li> Cherry Kiss Games (6.99.14.1–7.4.11)
|
||||
<li> Chris (7.4.3–7.4.5)
|
||||
<li> Christopher Mahon (7.4–7.4.10)
|
||||
<li> Christopher Mahon (7.4–7.4.11)
|
||||
<li> Christopher S. Ma (7.3.0)
|
||||
<li> Chroniton (7.4.1–7.4.10)
|
||||
<li> Chrysoula (6.99.13–7.4.10)
|
||||
<li> Chroniton (7.4.1–7.4.11)
|
||||
<li> Chrysoula (6.99.13–7.4.11)
|
||||
<li> <a href="https://cloverfirefly.itch.io" rel="nofollow">cloverfirefly</a> (6.99.13–7.4)
|
||||
<li> Clyde Duensing III (7.3.0–7.3.3)
|
||||
<li> Clyde Duensing III (7.3.3–7.4.10)
|
||||
<li> CobaltCore (7.1.1–7.4.10)
|
||||
<li> Clyde Duensing III (7.3.3–7.4.11)
|
||||
<li> CobaltCore (7.1.1–7.4.11)
|
||||
<li> CobraPL (7.1–7.4.7)
|
||||
<li> <a href="https://store.steampowered.com/app/1159660/Moe_Era/" rel="nofollow">Comfy Company (Moe Era)</a> (7.4)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://obscurasoft.com/" rel="nofollow">Coming Out On Top</a> (6.99.13–7.4)
|
||||
<li> <a href="http://www.computerart.club/" rel="nofollow">computerart.club</a> (6.99.14–7.4)
|
||||
<li> Cookie NomNom (7.1.1–7.4)
|
||||
<li> Crazy Cactus (6.99.14.3–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=http://cricketbat.me" rel="nofollow">cricketbat_</a> (7.0–7.4.10)
|
||||
<li> Crazy Cactus (6.99.14.3–7.4.11)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=http://cricketbat.me" rel="nofollow">cricketbat_</a> (7.0–7.4.11)
|
||||
<li> <a href="http://cultofape.com" rel="nofollow">CultOfApe</a> (6.99.14–7.0)
|
||||
<li> Culture4Jam (6.99.13–7.4)
|
||||
<li> <a href="https://github.com/l30nard0s0n" rel="nofollow">D. Zubitashvili</a> (7.4–7.4.10)
|
||||
<li> Daiko Fextar (7.4.5–7.4.10)
|
||||
<li> Dan Gretton (7.3.0–7.4.10)
|
||||
<li> <a href="https://github.com/l30nard0s0n" rel="nofollow">D. Zubitashvili</a> (7.4–7.4.11)
|
||||
<li> Daiko Fextar (7.4.5–7.4.11)
|
||||
<li> Dan Gretton (7.3.0–7.4.11)
|
||||
<li> Dan Lazar (7.4)
|
||||
<li> Dana Jackson (7.4.7–7.4.10)
|
||||
<li> Dana Jackson (7.4.7–7.4.11)
|
||||
<li> Daniel Burns (7.1–7.2)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=http://www.darkministry.net" rel="nofollow">Dark Ministry</a> (7.2–7.3.0)
|
||||
<li> <a href="http://dark-aii.net" rel="nofollow">Dark-Aii</a> (6.99.14.1–6.99.14.3)
|
||||
<li> DarkDrake1371 (7.3.0–7.3.3)
|
||||
<li> <a href="http://www.darksirengames.com" rel="nofollow">DarkSirenGames</a> (6.99.13–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://darktoz.com/" rel="nofollow">Darktoz</a> (7.4.5–7.4.10)
|
||||
<li> <a href="http://www.darksirengames.com" rel="nofollow">DarkSirenGames</a> (6.99.13–7.4.11)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://darktoz.com/" rel="nofollow">Darktoz</a> (7.4.5–7.4.11)
|
||||
<li> Darryl Taylor (7.0–7.4)
|
||||
<li> Dave Pickett (7.4.9–7.4.10)
|
||||
<li> Dave Pickett (7.4.9–7.4.11)
|
||||
<li> David Koster (6.99.14–7.4)
|
||||
<li> David Maiman - Chaos Cute Soft (7.4)
|
||||
<li> David Yingling (6.99.14.1–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://dizzy.works" rel="nofollow">DavieZwei</a> (7.4.7–7.4.10)
|
||||
<li> David Yingling (6.99.14.1–7.4.11)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://dizzy.works" rel="nofollow">DavieZwei</a> (7.4.7–7.4.11)
|
||||
<li> <a href="https://twitter.com/DEADRKGK" rel="nofollow">DEADRKGK</a> (7.4)
|
||||
<li> DecentMonkey (7.4.5–7.4.10)
|
||||
<li> DecentMonkey (7.4.5–7.4.11)
|
||||
<li> Decopauge123 (7.4)
|
||||
<li> Dee (7.1–7.4.7)
|
||||
<li> Denny Cheng (6.99.14.2–7.3.3)
|
||||
@@ -103,274 +103,278 @@
|
||||
<li> DinoMan21779 (7.3.3–7.4.5)
|
||||
<li> DJ_Light (7.3.3–7.4)
|
||||
<li> Donald (7.4–7.4.9)
|
||||
<li> Dosya (7.4.9–7.4.10)
|
||||
<li> Dosya (7.4.9–7.4.11)
|
||||
<li> Drake Wells (7.3.0–7.4)
|
||||
<li> Drifty (7.4.10)
|
||||
<li> <a href="http://coriginate.com" rel="nofollow">Ds110</a> (6.99.13–7.4.10)
|
||||
<li> DuoDevelopers (7.1.1–7.4.10)
|
||||
<li> Duprès Eric (7.4–7.4.10)
|
||||
<li> DV Enterprises Development (7.3.3–7.4.10)
|
||||
<li> Drifty (7.4.10–7.4.11)
|
||||
<li> <a href="http://coriginate.com" rel="nofollow">Ds110</a> (6.99.13–7.4.11)
|
||||
<li> DuoDevelopers (7.1.1–7.4.11)
|
||||
<li> Duprès Eric (7.4–7.4.11)
|
||||
<li> DV Enterprises Development (7.3.3–7.4.11)
|
||||
<li> E. William Brown (6.99.13–7.3.0)
|
||||
<li> <a href="https://www.eccentric-gaming.com/" rel="nofollow">Eccentric Satyr</a> (7.4–7.4.5)
|
||||
<li> Eileen K (7.3.0–7.4.10)
|
||||
<li> <a href="https://www.youtube.com/c/ElaineDoesCoding" rel="nofollow">ElaineDoesCoding</a> (7.0–7.4.10)
|
||||
<li> Eli Berg-Maas (7.4.7–7.4.10)
|
||||
<li> Eileen K (7.3.0–7.4.11)
|
||||
<li> <a href="https://www.youtube.com/c/ElaineDoesCoding" rel="nofollow">ElaineDoesCoding</a> (7.0–7.4.11)
|
||||
<li> Eli Berg-Maas (7.4.7–7.4.11)
|
||||
<li> Elun GAMES (7.4)
|
||||
<li> eric chi hung ng (7.0–7.3.0)
|
||||
<li> Erik Moeller (7.4.3–7.4.10)
|
||||
<li> Erik Moeller (7.4.3–7.4.11)
|
||||
<li> Eris Discordia (7.4.3)
|
||||
<li> Ertal Games (7.1.1–7.3.3)
|
||||
<li> <a href="https://www.patreon.com/henissart" rel="nofollow">Estate : Dominate</a> (7.4–7.4.10)
|
||||
<li> Euan 'Xolf' Robertson (6.99.13–7.4.10)
|
||||
<li> <a href="https://www.patreon.com/henissart" rel="nofollow">Estate : Dominate</a> (7.4–7.4.11)
|
||||
<li> Euan 'Xolf' Robertson (6.99.13–7.4.11)
|
||||
<li> Eve Hallows (6.99.13–6.99.14)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/exiscoming" rel="nofollow">Exiscoming</a> (6.99.14–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/exiscoming" rel="nofollow">Exiscoming</a> (6.99.14–7.4.11)
|
||||
<li> Eyzi (7.0–7.3.0, 7.4)
|
||||
<li> FightingFox Studio (7.4–7.4.6)
|
||||
<li> FlorgaRec (7.4)
|
||||
<li> Fluffy (7.4.1–7.4.10)
|
||||
<li> Fulcrum-E (6.99.14–7.4.10)
|
||||
<li> Fluffy (7.4.1–7.4.11)
|
||||
<li> Fulcrum-E (6.99.14–7.4.11)
|
||||
<li> Fuseblower (7.0–7.2)
|
||||
<li> gamefang (7.4.1–7.4.10)
|
||||
<li> <a href="https://twitter.com/Patch_Games" rel="nofollow">GB Patch Games</a> (7.4–7.4.10)
|
||||
<li> gamefang (7.4.1–7.4.11)
|
||||
<li> <a href="https://twitter.com/Patch_Games" rel="nofollow">GB Patch Games</a> (7.4–7.4.11)
|
||||
<li> George (7.1–7.4)
|
||||
<li> <a href="http://www.gtbono.com" rel="nofollow">Giovanni Tempobono</a> (7.1–7.1.2)
|
||||
<li> Glib Gentleman (6.99.14–7.4, 7.4.6–7.4.10)
|
||||
<li> gogu (7.4–7.4.10)
|
||||
<li> <a href="https://goldengamebarn.com/" rel="nofollow">Golden Game Barn</a> (6.99.13–7.4.10)
|
||||
<li> <a href="https://twitter.com/goodtalesvn" rel="nofollow">Good Tales</a> (7.1–7.4.10)
|
||||
<li> Great Chicken Studio (6.99.14–7.4.10)
|
||||
<li> Glib Gentleman (6.99.14–7.4, 7.4.6–7.4.11)
|
||||
<li> gogu (7.4–7.4.11)
|
||||
<li> <a href="https://goldengamebarn.com/" rel="nofollow">Golden Game Barn</a> (6.99.13–7.4.11)
|
||||
<li> <a href="https://twitter.com/goodtalesvn" rel="nofollow">Good Tales</a> (7.1–7.4.11)
|
||||
<li> Great Chicken Studio (6.99.14–7.4.11)
|
||||
<li> Gunso (6.99.13–7.2)
|
||||
<li> HAG Productions (7.1.1–7.4)
|
||||
<li> <a href="http://www.hanakogames.com/" rel="nofollow">Hanako Games</a> (7.3.3–7.4.10)
|
||||
<li> <a href="http://hanb.jp" rel="nofollow">HanbitGaram (MOEWORK Entertainment)</a> (7.1–7.4.10)
|
||||
<li> <a href="http://www.hanakogames.com/" rel="nofollow">Hanako Games</a> (7.3.3–7.4.11)
|
||||
<li> <a href="http://hanb.jp" rel="nofollow">HanbitGaram (MOEWORK Entertainment)</a> (7.1–7.4.11)
|
||||
<li> Happimochi (6.99.13–6.99.14)
|
||||
<li> Hasse Svensson (7.4)
|
||||
<li> Hermit Jones (HJ) (7.3.3–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://komisari.itch.io/heros-harem-guild" rel="nofollow">Hero's Harem Guild</a> (7.4–7.4.10)
|
||||
<li> HoarRaven (7.4.10)
|
||||
<li> HopesGaming (7.1.1–7.4.10)
|
||||
<li> Hyperion Thunder (7.4–7.4.10)
|
||||
<li> Hermit Jones (HJ) (7.3.3–7.4.11)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://komisari.itch.io/heros-harem-guild" rel="nofollow">Hero's Harem Guild</a> (7.4–7.4.11)
|
||||
<li> HoarRaven (7.4.10–7.4.11)
|
||||
<li> HopesGaming (7.1.1–7.4.11)
|
||||
<li> Hyperion Thunder (7.4–7.4.11)
|
||||
<li> <a href="https://ijemin.com" rel="nofollow">I_Jemin</a> (6.99.13–7.0)
|
||||
<li> Ianvs (7.3.3–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.teamsadcrab.com" rel="nofollow">Innocent Witches</a> (7.1–7.4.10)
|
||||
<li> Ianvs (7.3.3–7.4.11)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.teamsadcrab.com" rel="nofollow">Innocent Witches</a> (7.1–7.4.11)
|
||||
<li> <a href="https://www.irinakuksova.ie" rel="nofollow">Irina Kuksova</a> (7.3.0–7.4)
|
||||
<li> <a href="https://irredeemable.net/" rel="nofollow">Irredeemable Games</a> (6.99.14–7.4)
|
||||
<li> ITRoy (7.4.3–7.4.10)
|
||||
<li> J. C. Holder (6.99.13–7.4.10)
|
||||
<li> J. Webb (7.4.5–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://m.twitch.tv/jackofallart" rel="nofollow">Jack of All Art</a> (7.4.5–7.4.10)
|
||||
<li> ITRoy (7.4.3–7.4.11)
|
||||
<li> J. C. Holder (6.99.13–7.4.11)
|
||||
<li> J. Webb (7.4.5–7.4.11)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://m.twitch.tv/jackofallart" rel="nofollow">Jack of All Art</a> (7.4.5–7.4.11)
|
||||
<li> Jacob Munro (7.4)
|
||||
<li> Jacob Sporrong (6.99.13–7.4.10)
|
||||
<li> James Gretchen (7.4.10)
|
||||
<li> Jacob Sporrong (6.99.13–7.4.11)
|
||||
<li> James Gretchen (7.4.10–7.4.11)
|
||||
<li> James Tyner (6.99.13–7.1)
|
||||
<li> Jamie Wahls (7.4–7.4.10)
|
||||
<li> Jan Mašek (7.1–7.4.10)
|
||||
<li> JeongPyo Lee (6.99.13–7.4.10)
|
||||
<li> Joanna B (6.99.13–7.4.10)
|
||||
<li> Jamie Wahls (7.4–7.4.11)
|
||||
<li> Jan Mašek (7.1–7.4.11)
|
||||
<li> JeongPyo Lee (6.99.13–7.4.11)
|
||||
<li> Joanna B (6.99.13–7.4.11)
|
||||
<li> JohD (7.4)
|
||||
<li> JohnnyOmaha (7.4.3–7.4.10)
|
||||
<li> Jokeman (7.4.5–7.4.10)
|
||||
<li> JohnnyOmaha (7.4.3–7.4.11)
|
||||
<li> Jokeman (7.4.5–7.4.11)
|
||||
<li> Jonas Kyratzes (7.1.1–7.4.7)
|
||||
<li> jonnymelabo (6.99.13–7.4.10)
|
||||
<li> jonnymelabo (6.99.13–7.4.11)
|
||||
<li> Josh Kaplan (6.99.13–6.99.14.2)
|
||||
<li> Juanito_Santos (7.4)
|
||||
<li> Kampmichi (7.1.1–7.4.5)
|
||||
<li> Katryna Starks (7.2.1–7.4.10)
|
||||
<li> Katryna Starks (7.2.1–7.4.11)
|
||||
<li> Kayde Initials (6.99.13–7.4)
|
||||
<li> Keul (7.3.3–7.4)
|
||||
<li> Kevin Clack (7.4.6–7.4.10)
|
||||
<li> <a href="http://kexboy.com" rel="nofollow">KEXBOY</a> (6.99.13–7.4.10)
|
||||
<li> Khailz (7.4–7.4.10)
|
||||
<li> Kikai Digital (7.0–7.4.10)
|
||||
<li> <a href="http://www.gamesbykinmoku.com" rel="nofollow">Kinmoku</a> (6.99.13–7.4.10)
|
||||
<li> <a href="http://krsm94.web.fc2.com/" rel="nofollow">Klast Halc (crAsm)</a> (6.99.14.2–7.4.10)
|
||||
<li> <a href="https://twitter.com/koda_v4" rel="nofollow">koda</a> (7.4–7.4.10)
|
||||
<li> Kosmos Games (6.99.14–7.4.10)
|
||||
<li> Kevin Clack (7.4.6–7.4.11)
|
||||
<li> <a href="http://kexboy.com" rel="nofollow">KEXBOY</a> (6.99.13–7.4.11)
|
||||
<li> Khailz (7.4–7.4.11)
|
||||
<li> Kikai Digital (7.0–7.4.11)
|
||||
<li> <a href="http://www.gamesbykinmoku.com" rel="nofollow">Kinmoku</a> (6.99.13–7.4.11)
|
||||
<li> <a href="http://krsm94.web.fc2.com/" rel="nofollow">Klast Halc (crAsm)</a> (6.99.14.2–7.4.11)
|
||||
<li> <a href="https://twitter.com/koda_v4" rel="nofollow">koda</a> (7.4–7.4.11)
|
||||
<li> Kosmos Games (6.99.14–7.4.11)
|
||||
<li> <a href="https://de.koubaibu.tech/" rel="nofollow">Koubaibu Technology Group</a> (7.1–7.1.2)
|
||||
<li> Kraig Halfpap (6.99.14.2–7.3.3)
|
||||
<li> Kthulian (7.4.6–7.4.10)
|
||||
<li> Kthulian (7.4.6–7.4.11)
|
||||
<li> L C (7.2–7.4)
|
||||
<li> l8eral Jack (7.4.1–7.4.10)
|
||||
<li> l8eral Jack (7.4.1–7.4.11)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://la-cucaracha-studios.itch.io/" rel="nofollow">La Cucaracha Studios</a> (7.1.2–7.4.6)
|
||||
<li> <a href="http://waltz.moe/portfolio/" rel="nofollow">Laiska</a> (7.2–7.4)
|
||||
<li> <a href="https://lernakow.itch.io/" rel="nofollow">Lernakow</a> (6.99.14.3–7.4, 7.4.9–7.4.10)
|
||||
<li> Lettuce (7.4.3–7.4.10)
|
||||
<li> <a href="https://lernakow.itch.io/" rel="nofollow">Lernakow</a> (6.99.14.3–7.4, 7.4.9–7.4.11)
|
||||
<li> Lettuce (7.4.3–7.4.11)
|
||||
<li> LewdKitty (7.0–7.2)
|
||||
<li> LewdKitty (7.2.1–7.4)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.lewdlab.com/" rel="nofollow">Lewdlab</a> (6.99.14.1–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.lewdlab.com/" rel="nofollow">Lewdlab</a> (6.99.14.1–7.4.11)
|
||||
<li> Lictor (6.99.14.2–7.1.2)
|
||||
<li> Lingrimm (7.3.3–7.4)
|
||||
<li> Little Napoleon (7.1–7.4.10)
|
||||
<li> Lockheart (7.4–7.4.10)
|
||||
<li> Little Napoleon (7.1–7.4.11)
|
||||
<li> Lockheart (7.4–7.4.11)
|
||||
<li> <a href="http://trash.moe/" rel="nofollow">Lore</a> (6.99.13–7.3.3)
|
||||
<li> Luke Hartley (7.4.11)
|
||||
<li> Luke Jackson (6.99.13–7.4)
|
||||
<li> Lunar Parade (7.4–7.4.10)
|
||||
<li> Lunar Parade (7.4–7.4.11)
|
||||
<li> <a href="http://luscious-spirit-studios.tumblr.com/" rel="nofollow">Luscious Spirit Studios</a> (6.99.13–7.3.0)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/Luxee" rel="nofollow">Luxee</a> (6.99.14.3–7.4.10)
|
||||
<li> Luxuria Games (7.4.6–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/VoodooMonkey" rel="nofollow">Lyla's Curse</a> (7.4–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/Luxee" rel="nofollow">Luxee</a> (6.99.14.3–7.4.11)
|
||||
<li> Luxuria Games (7.4.6–7.4.11)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/VoodooMonkey" rel="nofollow">Lyla's Curse</a> (7.4–7.4.11)
|
||||
<li> Maeve Bandruid (6.99.13–7.4)
|
||||
<li> MagicNuts (7.4–7.4.10)
|
||||
<li> Mama J (7.4.6–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/manitu" rel="nofollow">MANITU Games CO.</a> (6.99.13–7.4.10)
|
||||
<li> ManorStories (6.99.14–7.4, 7.4.3–7.4.10)
|
||||
<li> <a href="http://www.marionettecode.com/" rel="nofollow">Marionette</a> (6.99.14–7.4.10)
|
||||
<li> Mary Macapagal (7.3.3–7.4.10)
|
||||
<li> MagicNuts (7.4–7.4.11)
|
||||
<li> Mama J (7.4.6–7.4.11)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/manitu" rel="nofollow">MANITU Games CO.</a> (6.99.13–7.4.11)
|
||||
<li> ManorStories (6.99.14–7.4, 7.4.3–7.4.11)
|
||||
<li> <a href="https://www.patreon.com/marcialart" rel="nofollow">MarcialART</a> (7.4.11)
|
||||
<li> <a href="http://www.marionettecode.com/" rel="nofollow">Marionette</a> (6.99.14–7.4.11)
|
||||
<li> Mary Macapagal (7.3.3–7.4.11)
|
||||
<li> Matt (7.4.1–7.4.2)
|
||||
<li> Matt Sequeira (7.4)
|
||||
<li> Matthew (7.3.3–7.4)
|
||||
<li> Matthew Preston (7.2)
|
||||
<li> Matthew Preston (7.2–7.4.10)
|
||||
<li> Matthew Vimislik (6.99.14.2–7.4.10)
|
||||
<li> Matthew Preston (7.2–7.4.11)
|
||||
<li> Matthew Vimislik (6.99.14.2–7.4.11)
|
||||
<li> MAW.3D.Art (6.99.13)
|
||||
<li> Max J Sher (6.99.13–7.4)
|
||||
<li> MCatter Dev (7.1–7.4.10)
|
||||
<li> <a href="https://meagantrott.com" rel="nofollow">Meagan Trott</a> (6.99.13–7.4.10)
|
||||
<li> Meyvol (6.99.14.1–7.4.10)
|
||||
<li> <a href="https://store.steampowered.com/developer/mia" rel="nofollow">Mia Blais-Côté</a> (7.3.0–7.3.3)
|
||||
<li> Michael Lewis (7.2–7.4.10)
|
||||
<li> Michael Simon (7.1.1–7.4.10)
|
||||
<li> Michaela Amanda Laws (6.99.13–7.4.10)
|
||||
<li> Mikolaj Kupiec (7.0–7.4.10)
|
||||
<li> MCatter Dev (7.1–7.4.11)
|
||||
<li> <a href="https://meagantrott.com" rel="nofollow">Meagan Trott</a> (6.99.13–7.4.11)
|
||||
<li> Meyvol (6.99.14.1–7.4.11)
|
||||
<li> Mia Blais-Côté (7.3.0–7.3.3, 7.4.11)
|
||||
<li> Michael Lewis (7.2–7.4.11)
|
||||
<li> Michael Simon (7.1.1–7.4.11)
|
||||
<li> Michaela Amanda Laws (6.99.13–7.4.11)
|
||||
<li> Mikolaj Kupiec (7.0–7.4.11)
|
||||
<li> <a href="http://www.milkteestudios.com" rel="nofollow">Milktee Studios</a> (7.0–7.1)
|
||||
<li> Miss Skizzors (7.0–7.4.10)
|
||||
<li> model mili (7.4.7–7.4.10)
|
||||
<li> Moogs Parfait (6.99.13–7.4.10)
|
||||
<li> Miss Skizzors (7.0–7.4.11)
|
||||
<li> model mili (7.4.7–7.4.11)
|
||||
<li> Moogs Parfait (6.99.13–7.4.11)
|
||||
<li> MrValdez (7.0–7.4, 7.4.3–7.4.8)
|
||||
<li> <a href="https://ms45.itch.io" rel="nofollow">Ms .45</a> (6.99.13)
|
||||
<li> Ms DOS (7.3.0–7.4)
|
||||
<li> <a href="https://www.patreon.com/muplur" rel="nofollow">MUPLUR</a> (7.3.0–7.4.2)
|
||||
<li> Mychal robinson (7.4)
|
||||
<li> Narutuzu (7.4–7.4.10)
|
||||
<li> nasredin (6.99.14.3–7.4.10)
|
||||
<li> Narutuzu (7.4–7.4.11)
|
||||
<li> nasredin (6.99.14.3–7.4.11)
|
||||
<li> Natalie Van Sistine (7.0–7.3.3)
|
||||
<li> Naughty Road (7.4.1–7.4.10)
|
||||
<li> Naughty Road (7.4.1–7.4.11)
|
||||
<li> <a href="https://cafe.naver.com/vmo.cafe" rel="nofollow">Naver cafe VMO</a> (7.1–7.4)
|
||||
<li> <a href="http://cafe.naver.com/vmo" rel="nofollow">NaverCafe VMO</a> (6.99.13–7.1)
|
||||
<li> Neigan (7.0)
|
||||
<li> Nicholas Beard (7.4.3)
|
||||
<li> <a href="https://www.patreon.com/nikraria" rel="nofollow">nikraria</a> (6.99.13–7.4.10)
|
||||
<li> <a href="https://www.patreon.com/nikraria" rel="nofollow">nikraria</a> (6.99.13–7.4.11)
|
||||
<li> niktwazny (7.4.5)
|
||||
<li> Ninecrux (7.4.7–7.4.10)
|
||||
<li> NOODLEMANNY (7.4.9–7.4.10)
|
||||
<li> Ninecrux (7.4.7–7.4.11)
|
||||
<li> NOODLEMANNY (7.4.9–7.4.11)
|
||||
<li> Nova Alamak (6.99.14.3–7.3.3)
|
||||
<li> <a href="http://devety.com" rel="nofollow">Oleksii olety Kyrylchuk</a> (6.99.14.1–6.99.14.2)
|
||||
<li> Oppai-Man (7.4.5–7.4.10)
|
||||
<li> Panda Penguin Games (7.2–7.4.10)
|
||||
<li> Oppai-Man (7.4.5–7.4.11)
|
||||
<li> Panda Penguin Games (7.2–7.4.11)
|
||||
<li> Panthera Morag (6.99.13–7.2)
|
||||
<li> Passion City (7.4)
|
||||
<li> Patchwork Princess (7.1–7.3.0)
|
||||
<li> Patricia (6.99.13–7.1.1)
|
||||
<li> <a href="https://store.steampowered.com/app/1327540/Cross_the_Moon/" rel="nofollow">Patrick Rainville</a> (7.4.5–7.4.10)
|
||||
<li> <a href="https://store.steampowered.com/app/1327540/Cross_the_Moon/" rel="nofollow">Patrick Rainville</a> (7.4.5–7.4.11)
|
||||
<li> Paul Birchenough (7.3.0)
|
||||
<li> <a href="http://peachpattch.com/" rel="nofollow">peachpattch</a> (6.99.14–7.4)
|
||||
<li> Pete Goodwin (7.3.0–7.4.10)
|
||||
<li> philat (6.99.14.1–7.4.10)
|
||||
<li> Pete Goodwin (7.3.0–7.4.11)
|
||||
<li> philat (6.99.14.1–7.4.11)
|
||||
<li> Pi3shark (7.2–7.4)
|
||||
<li> <a href="https://store.steampowered.com/search/?publisher=Pingfang%20Games" rel="nofollow">Pingfang Games</a> (7.4–7.4.10)
|
||||
<li> plasterbrain (6.99.13–7.4.10)
|
||||
<li> <a href="https://store.steampowered.com/search/?publisher=Pingfang%20Games" rel="nofollow">Pingfang Games</a> (7.4–7.4.11)
|
||||
<li> plasterbrain (6.99.13–7.4.11)
|
||||
<li> Ploppertje (6.99.13–6.99.14.3)
|
||||
<li> <a href="https://about.plus9.io/renpy/" rel="nofollow">Plus9</a> (7.4.9)
|
||||
<li> Podge (6.99.13–7.4)
|
||||
<li> Prometheus (7.3.3–7.4)
|
||||
<li> PublicLewdness (7.4.11)
|
||||
<li> Puriwit Sesupaponphong (6.99.13)
|
||||
<li> Puriwit Sesupaponphong (6.99.13–7.1)
|
||||
<li> Pyonkotchi (7.1–7.4.9)
|
||||
<li> Pyonkotchi (7.1–7.4.9, 7.4.11)
|
||||
<li> Pólyí Konrád (7.1–7.1.1)
|
||||
<li> quakefultales (7.4–7.4.10)
|
||||
<li> quakefultales (7.4–7.4.11)
|
||||
<li> <a href="http://www.cottoncandycyanide.com/" rel="nofollow">Quantum Suicide</a> (7.1–7.2)
|
||||
<li> <a href="https://www.nintendo.com/games/detail/a-summer-with-the-shiba-inu-switch/" rel="nofollow">Quill Game Studios</a> (7.4–7.4.10)
|
||||
<li> Rachel (6.99.13–7.4.10)
|
||||
<li> <a href="http://ratalaikagames.com/renpybanner.php" rel="nofollow">Ratalaika Games</a> (7.4–7.4.10)
|
||||
<li> <a href="http://razzartvisual.com/" rel="nofollow">Razz</a> (6.99.13–7.4.10)
|
||||
<li> <a href="https://www.nintendo.com/games/detail/a-summer-with-the-shiba-inu-switch/" rel="nofollow">Quill Game Studios</a> (7.4–7.4.11)
|
||||
<li> Rachel (6.99.13–7.4.11)
|
||||
<li> <a href="http://ratalaikagames.com/renpybanner.php" rel="nofollow">Ratalaika Games</a> (7.4–7.4.11)
|
||||
<li> <a href="http://razzartvisual.com/" rel="nofollow">Razz</a> (6.99.13–7.4.11)
|
||||
<li> <a href="https://twitter.com/ragnarhomsar" rel="nofollow">Realga</a> (7.0–7.1)
|
||||
<li> Red Lotus Designz (7.3.0–7.4.10)
|
||||
<li> René Dudfield (6.99.13–7.4.10)
|
||||
<li> Richard (6.99.14–7.4.10)
|
||||
<li> Red Lotus Designz (7.3.0–7.4.11)
|
||||
<li> René Dudfield (6.99.13–7.4.11)
|
||||
<li> Richard (6.99.14–7.4.11)
|
||||
<li> <a href="http://impqueen.com/" rel="nofollow">Rinmaru</a> (6.99.13–7.3.0)
|
||||
<li> Rizia Praja (6.99.14.1–7.4)
|
||||
<li> <a href="https://robcolton.com/games" rel="nofollow">Rob Colton</a> (7.2–7.4.10)
|
||||
<li> <a href="https://robcolton.com/games" rel="nofollow">Rob Colton</a> (7.2–7.4.11)
|
||||
<li> robert Vince Jr (7.4)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://f95zone.to/threads/rocking-robin-v0-5b-robbery1211.26188/" rel="nofollow">Rocking Robin</a> (7.4–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://f95zone.to/threads/rocking-robin-v0-5b-robbery1211.26188/" rel="nofollow">Rocking Robin</a> (7.4–7.4.11)
|
||||
<li> <a href="http://sunkoiwish.com/" rel="nofollow">Royce A Xaiyeon</a> (6.99.13–7.2)
|
||||
<li> Rui Jiang (7.3.0–7.4)
|
||||
<li> <a href="https://ub4q.itch.io/" rel="nofollow">ruqiyah</a> (7.3.3–7.4.10)
|
||||
<li> <a href="https://ub4q.itch.io/" rel="nofollow">ruqiyah</a> (7.3.3–7.4.11)
|
||||
<li> Ryan Whited (6.99.14–7.1)
|
||||
<li> <a href="https://www.patreon.com/Sad_Crab" rel="nofollow">Sad Crab Company</a> (7.4–7.4.10)
|
||||
<li> <a href="https://www.patreon.com/Sad_Crab" rel="nofollow">Sad Crab Company</a> (7.4–7.4.11)
|
||||
<li> <a href="https://saiffyros.wordpress.com/" rel="nofollow">Saiffyros</a> (6.99.14–7.4.9)
|
||||
<li> Sam Yang (6.99.13–7.3.0)
|
||||
<li> Samantha (7.4–7.4.5)
|
||||
<li> Samibotss CONET (7.4.11)
|
||||
<li> scandis (7.3.3–7.4)
|
||||
<li> <a href="https://github.com/scj643" rel="nofollow">scj643</a> (7.4–7.4.10)
|
||||
<li> SG Game Design (7.4.9–7.4.10)
|
||||
<li> <a href="https://twitter.com/SilkenSail" rel="nofollow">Silken Sail Entertainment</a> (7.4–7.4.10)
|
||||
<li> <a href="https://github.com/scj643" rel="nofollow">scj643</a> (7.4–7.4.11)
|
||||
<li> SG Game Design (7.4.9–7.4.11)
|
||||
<li> <a href="https://twitter.com/SilkenSail" rel="nofollow">Silken Sail Entertainment</a> (7.4–7.4.11)
|
||||
<li> Simply Aria (6.99.14–7.2)
|
||||
<li> SkinnGames (7.4–7.4.10)
|
||||
<li> <a href="https://www.skybeargames.com" rel="nofollow">Sky Bear Games</a> (7.3.0–7.4.10)
|
||||
<li> SkyCloudGames (7.4.9–7.4.10)
|
||||
<li> <a href="http://sleepyagents.co.uk" rel="nofollow">Sleepy Agents</a> (6.99.13–7.4.10)
|
||||
<li> SkinnGames (7.4–7.4.11)
|
||||
<li> <a href="https://www.skybeargames.com" rel="nofollow">Sky Bear Games</a> (7.3.0–7.4.11)
|
||||
<li> SkyCloudGames (7.4.9–7.4.11)
|
||||
<li> <a href="http://sleepyagents.co.uk" rel="nofollow">Sleepy Agents</a> (6.99.13–7.4.11)
|
||||
<li> <a href="https://twitter.com/slyestial" rel="nofollow">Slyestial</a> (7.4)
|
||||
<li> Snowlocke (7.0–7.4.10)
|
||||
<li> Snowlocke (7.0–7.4.11)
|
||||
<li> <a href="http://store.steampowered.com/app/570350/Sorry_Entschuldigung__A_Psychological_Horror_Visual_Novel/" rel="nofollow">Sorry. (Entschuldigung)</a> (6.99.14.2–7.1)
|
||||
<li> <a href="https://store.steampowered.com/app/1706470/Space_to_Grow/" rel="nofollow">Space to Grow</a> (6.99.13–7.4.10)
|
||||
<li> speedycalm (7.4–7.4.10)
|
||||
<li> <a href="https://store.steampowered.com/app/1706470/Space_to_Grow/" rel="nofollow">Space to Grow</a> (6.99.13–7.4.11)
|
||||
<li> speedycalm (7.4–7.4.11)
|
||||
<li> Spyros Panagiotopoulos (6.99.14–7.1)
|
||||
<li> Steamgirl (6.99.13–6.99.14, 7.2–7.4.10)
|
||||
<li> Steamgirl (6.99.13–6.99.14, 7.2–7.4.11)
|
||||
<li> Steamlynx (6.99.14.1–7.4)
|
||||
<li> Stefan Gagne (6.99.13–7.4.10)
|
||||
<li> Stephen Theyer (7.4.9–7.4.10)
|
||||
<li> Stefan Gagne (6.99.13–7.4.11)
|
||||
<li> Stephen Theyer (7.4.9–7.4.11)
|
||||
<li> steven (7.4–7.4.9)
|
||||
<li> STEVEN HOWARD (7.4)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=http://www.patreon.com/errilhl" rel="nofollow">Studio Errilhl</a> (6.99.14.3–7.4.3)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/studioerrilhl" rel="nofollow">Studio Errilhl</a> (7.4.3–7.4.10)
|
||||
<li> Studio Lupiesoft (6.99.13–7.4.10)
|
||||
<li> <a href="https://vnstudioelan.com/" rel="nofollow">Studio Élan</a> (7.2.1–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/studioerrilhl" rel="nofollow">Studio Errilhl</a> (7.4.3–7.4.11)
|
||||
<li> Studio Lupiesoft (6.99.13–7.4.11)
|
||||
<li> <a href="https://vnstudioelan.com/" rel="nofollow">Studio Élan</a> (7.2.1–7.4.11)
|
||||
<li> Sugar Joe (7.2–7.4.3)
|
||||
<li> <a href="https://play.google.com/store/apps/developer?id=Suhaimizs&hl=en" rel="nofollow">Suhaimizs</a> (7.2)
|
||||
<li> <a href="https://ladyisak.itch.io/" rel="nofollow">Sych Games</a> (7.3.0–7.4)
|
||||
<li> SYH (7.4–7.4.10)
|
||||
<li> SYH (7.4–7.4.11)
|
||||
<li> Sébastien Irola (7.4–7.4.5)
|
||||
<li> T-Patch (7.3.0–7.4.7)
|
||||
<li> Team Borsch (7.3.0–7.4.10)
|
||||
<li> Team Borsch (7.3.0–7.4.11)
|
||||
<li> Teofilo Hurtado (6.99.14–7.1.1)
|
||||
<li> TERNOX (7.4–7.4.5)
|
||||
<li> TERNOX (7.4.5–7.4.10)
|
||||
<li> <a href="https://TheClimateTrail.com" rel="nofollow">The Climate Trail</a> (7.4–7.4.10)
|
||||
<li> the66 (7.2–7.4.10)
|
||||
<li> Thibaut de la Chapelle (7.3.3–7.4.10)
|
||||
<li> TERNOX (7.4.5–7.4.11)
|
||||
<li> <a href="https://TheClimateTrail.com" rel="nofollow">The Climate Trail</a> (7.4–7.4.11)
|
||||
<li> the66 (7.2–7.4.11)
|
||||
<li> Thibaut de la Chapelle (7.3.3–7.4.11)
|
||||
<li> Thomas Charlie (6.99.13–7.2)
|
||||
<li> Timothy Young (6.99.14.1–7.4.10)
|
||||
<li> Timothy Young (6.99.14.1–7.4.11)
|
||||
<li> TJ Huckabee (6.99.13–7.4)
|
||||
<li> ToastCrust (6.99.13–6.99.14)
|
||||
<li> Tobias Wüthrich (6.99.13–6.99.14.3)
|
||||
<li> <a href="http://www.shadowpath.com" rel="nofollow">Tom Dowd</a> (7.3.3–7.4.10)
|
||||
<li> <a href="http://www.shadowpath.com" rel="nofollow">Tom Dowd</a> (7.3.3–7.4.11)
|
||||
<li> Tonny33 (7.4)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/tremmiGames" rel="nofollow">tremmiGames</a> (7.0–7.4.10)
|
||||
<li> trooper6 (6.99.13–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.patreon.com/tremmiGames" rel="nofollow">tremmiGames</a> (7.0–7.4.11)
|
||||
<li> trooper6 (6.99.13–7.4.11)
|
||||
<li> TropeCode (7.4–7.4.2)
|
||||
<li> <a href="https://www.youtube.com/tryinmorning" rel="nofollow">tryinmorning</a> (6.99.13–7.4.9)
|
||||
<li> tryinmorning (6.99.13–7.4.9, 7.4.11)
|
||||
<li> Tsad (7.4–7.4.9)
|
||||
<li> Ven Jacobs (7.4.3–7.4.10)
|
||||
<li> Vikks Hallowhaunt (7.3.3–7.4.10)
|
||||
<li> ViNovella (7.4–7.4.10)
|
||||
<li> Ven Jacobs (7.4.3–7.4.11)
|
||||
<li> Vikks Hallowhaunt (7.3.3–7.4.11)
|
||||
<li> ViNovella (7.4–7.4.11)
|
||||
<li> VJ (7.3.3)
|
||||
<li> Vollschauer (6.99.13–6.99.14)
|
||||
<li> <a href="http://vxlloyd.com" rel="nofollow">VX Lloyd</a> (6.99.14.3–7.0)
|
||||
<li> Wayne Wollesen (6.99.14.3–7.1.1)
|
||||
<li> <a href="https://www.facebook.com/weeabooriot" rel="nofollow">Weeabooriot Cosplay</a> (6.99.13–7.4.10)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.whitephantomgames.co.uk/" rel="nofollow">White Phantom Games</a> (7.4.9–7.4.10)
|
||||
<li> <a href="https://www.facebook.com/weeabooriot" rel="nofollow">Weeabooriot Cosplay</a> (6.99.13–7.4.11)
|
||||
<li> <a href="https://www.renpy.org/agegate?url=https://www.whitephantomgames.co.uk/" rel="nofollow">White Phantom Games</a> (7.4.9–7.4.11)
|
||||
<li> William (7.4)
|
||||
<li> <a href="https://arcaniinteractive.com/" rel="nofollow">William Lucht</a> (7.0–7.4.5)
|
||||
<li> William McGowen (7.4–7.4.10)
|
||||
<li> William McGowen (7.4–7.4.11)
|
||||
<li> William Tumeo (6.99.13–7.1.2)
|
||||
<li> <a href="http://winterwolves.com/ambersmagicshop.htm" rel="nofollow">Winter Wolves</a> (6.99.13–7.4.10)
|
||||
<li> <a href="https://www.wolfbiteinteractive.com/" rel="nofollow">WolfBite Interactive</a> (7.2–7.4.10)
|
||||
<li> <a href="http://winterwolves.com/ambersmagicshop.htm" rel="nofollow">Winter Wolves</a> (6.99.13–7.4.11)
|
||||
<li> <a href="https://www.wolfbiteinteractive.com/" rel="nofollow">WolfBite Interactive</a> (7.2–7.4.11)
|
||||
<li> wtx (7.4.1–7.4.3)
|
||||
<li> Xiphear (7.3.3–7.4)
|
||||
<li> xoeleox (7.4.6–7.4.10)
|
||||
<li> xoeleox (7.4.6–7.4.11)
|
||||
<li> Y Press Games (7.2–7.4)
|
||||
<li> Y Press Games (7.4–7.4.10)
|
||||
<li> <a href="http://astralore.com/" rel="nofollow">Yakmala!</a> (6.99.13–7.4.10)
|
||||
<li> Zanith (7.4–7.4.10)
|
||||
<li> Y Press Games (7.4–7.4.11)
|
||||
<li> <a href="http://astralore.com/" rel="nofollow">Yakmala!</a> (6.99.13–7.4.11)
|
||||
<li> Zanith (7.4–7.4.11)
|
||||
<li> <a href="https://zimoncoldres.itch.io/champion-of-realms" rel="nofollow">Zimon</a> (7.4.5–7.4.9)
|
||||
</ul>
|
||||
|
||||
@@ -411,13 +411,15 @@ init python:
|
||||
|
||||
## This increases the size of the quick buttons to make them easier to touch
|
||||
## on tablets and phones.
|
||||
if renpy.variant("touch"):
|
||||
@gui.variant
|
||||
def touch():
|
||||
|
||||
gui.quick_button_borders = Borders(40, 14, 40, 0)
|
||||
|
||||
## This changes the size and spacing of various GUI elements to ensure they
|
||||
## are easily visible on phones.
|
||||
if renpy.variant("small"):
|
||||
@gui.variant
|
||||
def small():
|
||||
|
||||
## Font sizes.
|
||||
gui.text_size = 30
|
||||
@@ -464,6 +466,3 @@ init python:
|
||||
|
||||
## Quick buttons.
|
||||
gui.quick_button_text_size = 20
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -408,13 +408,15 @@ init python:
|
||||
|
||||
## This increases the size of the quick buttons to make them easier to touch
|
||||
## on tablets and phones.
|
||||
if renpy.variant("touch"):
|
||||
@gui.variant
|
||||
def touch():
|
||||
|
||||
gui.quick_button_borders = Borders(40, 14, 40, 0)
|
||||
|
||||
## This changes the size and spacing of various GUI elements to ensure they
|
||||
## are easily visible on phones.
|
||||
if renpy.variant("small"):
|
||||
@gui.variant
|
||||
def small():
|
||||
|
||||
## Font sizes.
|
||||
gui.text_size = 30
|
||||
@@ -461,6 +463,3 @@ init python:
|
||||
|
||||
## Quick buttons.
|
||||
gui.quick_button_text_size = 20
|
||||
|
||||
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user