Compare commits

..

2652 Commits

Author SHA1 Message Date
Andy_kl 7f303a5fbf Revert some changes to make branch surface smaller. 2025-02-17 00:27:45 +04:00
Andy_kl 388cf6aac7 Fix -dash-attribute-names. 2025-02-16 13:37:34 +04:00
Andy_kl c7db343855 Fix tokenization of 1. floats. 2025-02-16 13:37:34 +04:00
Andy_kl 7a45ec3e0a Fix incorrect attribute name. 2025-02-16 13:37:34 +04:00
Andy_kl 976aeebf0b Remove lexer.Lexer and tokenizer.Tokenizer duplication. 2025-02-16 13:37:34 +04:00
Andy_kl 98e85f83be Do not litter renpy.lexer with tokenizer stuff. 2025-02-16 13:37:34 +04:00
Andy_kl 9273c41437 Fixes after review. 2025-02-16 13:37:34 +04:00
Andy_kl a590472f55 Update SyntaxError in tokenizer to ParseError. 2025-02-16 13:37:34 +04:00
Andy_kl 06e884ac70 Replace fake TokenKind class and constants with literals of token kinds. 2025-02-16 13:37:34 +04:00
Andy_kl fd5f97289b Fix line munging after rebase. 2025-02-16 13:37:34 +04:00
Andy_kl 8e2f926bc3 Move filename to PhysicalLocation named tuple. 2025-02-16 13:37:34 +04:00
Andy_kl 916a4b0f56 Strip \n at the end of logical line in Lexer.
It was that way before, it does not break things,
and people could rely on that.
2025-02-16 13:37:34 +04:00
Andy_kl 3191754e79 Make munging more robust. 2025-02-16 13:37:34 +04:00
Andy_kl 0770876b14 Make Lexer more backward compatible. 2025-02-16 13:37:34 +04:00
Andy_kl b4783374a8 Fix scriptedit and add_from. 2025-02-16 13:37:34 +04:00
Andy_kl 5c401c0406 Fix pre-7.3 CDS renpy.statements.parse function. 2025-02-16 13:37:34 +04:00
Andy_kl 4b39d4d0c4 Some cleanup. 2025-02-16 13:37:34 +04:00
Andy_kl 3860fc7d8d Rework it so it does not change Ren'Py syntax. 2025-02-16 13:37:34 +04:00
Andy_kl 50c70a8615 Revert "Delete lexersupport module."
This reverts commit e4be5a646bc39741e53f77c3aa63d046321ec904.
2025-02-16 13:37:34 +04:00
Andy_kl 70f0362b4a Fix tokenization of f-strings. 2025-02-16 13:37:33 +04:00
Andy_kl bd418d9541 Fix _ren.py to .rpy column offsets. 2025-02-16 13:37:33 +04:00
Andy_kl 95e764b411 Update tokenizer for Python 3.12 2025-02-16 13:37:33 +04:00
Andy_kl b173b7252d Fix ur"strings" parse. 2025-02-16 13:37:33 +04:00
Andy_kl 16fbd10e6f Change token kind from enum to plain string.
This is even 5% faster to init and compare.
2025-02-16 13:37:33 +04:00
Andy_kl feb9cd85ed Get rid of 2 separate enums and make it StrEnum back.
This is 15% faster accodring to cProfile.
2025-02-16 13:37:33 +04:00
Andy_kl 362f9d6c33 Some optimizations. 2025-02-16 13:37:33 +04:00
Andy_kl f2def9c148 Factor out token-based delimited python. 2025-02-16 13:37:33 +04:00
Andy_kl 1d994fa126 Change kind enums not to be string subclasses
so `TokenKind("name") != TokenExactKind("name")`.
2025-02-16 13:37:33 +04:00
Andy_kl 16685b6b9f Move munging from tokenizer to lexer. 2025-02-16 13:37:33 +04:00
Andy_kl fd5841d2d2 Delete lexersupport module. 2025-02-16 13:37:33 +04:00
Andy_kl 753776973e Move tokenizer code into separate file. 2025-02-16 13:37:33 +04:00
Andy_kl e546ac6c73 Fix performance 2025-02-16 13:37:33 +04:00
Andy_kl e67c91d176 Make Lexer token-based. 2025-02-16 13:37:33 +04:00
Andy_kl 6252945a47 Update Lexer class. 2025-02-16 13:37:33 +04:00
Andy_kl 819d3386d7 Some changes in Lexer. 2025-02-16 13:37:33 +04:00
Andy_kl 430d01aa13 Update from old tokenization. 2025-02-16 13:37:33 +04:00
Andy_kl ef8917e044 Finish Tokenizer class. 2025-02-16 13:37:33 +04:00
Andy_kl 4d1be9e610 Initial 2025-02-16 13:37:33 +04:00
Tom Rothamel e1b8de8512 assimp: Rename AssimpModel to GLTF model.
Assimp was contributing a lot of to the size of Ren'Py, so put it on a
diet and removed all the formats except for GLTF). This would also let
us switch toanother GLTF parser in the future.
2025-02-15 23:26:32 -05:00
Tom Rothamel e55856d177 Merge pull request #6154 from renpy/pep-657-munge
Fix incorrect column offsets of munged names.
2025-02-15 22:29:44 -05:00
Tom Rothamel fbe7cab9c6 Remove spurious backslash in README. 2025-02-15 20:05:42 -05:00
Tom Rothamel d6e3b4f492 Merge pull request #6157 from jsfehler/tyop_killer
Fix mimor typos
2025-02-15 17:55:35 -05:00
Joshua Fehler 7aac6fffb6 Fix mimor typos 2025-02-15 16:08:25 -05:00
Tom Rothamel 4e09103b09 Merge pull request #6155 from jsfehler/remove_unused_particle
Remove unused import
2025-02-14 20:05:28 -05:00
Joshua Fehler 3605298777 Remove unused import 2025-02-14 17:35:44 -05:00
Tom Rothamel 6b467eca81 Merge branch 'master' into pep-657-munge 2025-02-14 00:07:08 -05:00
Tom Rothamel 9e966702ac More precisely control mipmapping.
* For images used by Live2D and AssimpModel, it's enabled.
* Other images can opt-in on a per-image basis.
2025-02-13 23:48:07 -05:00
Tom Rothamel cc2486fa82 gl2: Disable mipmapping by default.
Despite Ren'Py supporting it, scaling images down (except when the
window is scaled) is somewhat rare. So instead of generating a lot of
mipmaps that will not be used, we only opt in automatically if the
window itself is scaled down, and otherwise leave the decision to
the creator.
2025-02-13 23:48:07 -05:00
Andy_kl 74cadd2b03 python: Raise original exception without chaining the same via cause for incorrect pythons. 2025-02-14 06:19:48 +04:00
Andy_kl caad552141 Update copyright year in lost files. 2025-02-14 05:25:38 +04:00
Andy_kl 3202e0eab2 Remove monkey-patch name from name_blacklist 2025-02-14 05:21:19 +04:00
Andy_kl 58434e2553 Fix 2025-02-14 03:48:18 +04:00
Andy_kl 78ff61dd08 Fix incorrect column offsets of munged names.
This moves munging to AST, so column offsets match source code.
2025-02-14 03:36:22 +04:00
Andy_kl 65edc55eb0 Add PyExpr.__new__ signature. 2025-02-13 18:04:55 +04:00
Andy_kl 5bf35c8c4f Remove linecache.updatecache monkeypatch.
That no longer needed after changes to `renpy.python.create_store`.
2025-02-13 17:59:11 +04:00
Tom Rothamel ef5777d6b6 Add PEP 657-style parse error handling. (#5881) 2025-02-13 00:02:28 -05:00
Tom Rothamel 033574e235 Merge branch 'fix' 2025-02-12 23:31:22 -05:00
Tom Rothamel 8a21aa55dc Wrap json loaded in revertible objects.
This is intended to improve compatibility with older games that might
use .iteritems and similar methods.
2025-02-12 23:21:48 -05:00
Tom Rothamel 6c948bf046 fonts: Allow deallocation and clear face cache.
So fonts can be reloaded when required. Fixes #6153.
2025-02-12 22:51:50 -05:00
Tom Rothamel 95074ff55d doc: Update keymap.
Fixes #6145.
2025-02-11 22:55:40 -05:00
Tom Rothamel d836316e90 Document the AssimpModel displayable. 2025-02-11 01:28:12 -05:00
Tom Rothamel 4804b04dcc assimp: Add zoom and flip operations. 2025-02-10 23:13:41 -05:00
Tom Rothamel 6d08132e58 assimp: Expose AssimpModel to the default store. 2025-02-09 23:35:47 -05:00
Tom Rothamel dfb6c7beb1 assimp: Handle _duplicate. 2025-02-09 21:25:09 -05:00
Tom Rothamel d2755faa5c Optimize caching of UnoptimizedTexture. 2025-02-09 14:49:20 -05:00
Tom Rothamel ef40de899c assimp: Preload AsssimpModels.
This prevents long loading times by preloading AssimpModel objects
from disk when required.

As part of this, the idea of a callback is dropped, and renders of
textures happen when the displayable is rendered. This creates all
Renders in the main thread, which makes Render mark-sweep reliable.
2025-02-09 14:05:04 -05:00
Tom Rothamel d81f8264ff Fix regression in renpy.get_all_labels.
Fixes #6130.
2025-02-08 22:30:19 -05:00
Ren'Py Bot 3b60afe8dc Merge branch 'fix' 2025-02-08 04:30:40 -05:00
Tom Rothamel 6783f22f3b When walking paths, replace \ with /. 2025-02-07 08:45:48 -05:00
Tom Rothamel 3c59cac254 Proxy SelectedIf and SensitiveIf lists into a single Action.
Fixes #6132.
2025-02-07 08:45:48 -05:00
Tom Rothamel 8de2bda1e6 Proxy SelectedIf and SensitiveIf lists into a single Action.
Fixes #6132.
2025-02-07 01:24:18 -05:00
Mal Graty 57f9a1e508 Remove disused import 2025-02-07 01:26:13 +00:00
Tom Rothamel e0ca2992ed Fix typos (#6142)
Fix typos
2025-02-06 20:17:35 -05:00
tinyboxvk 731cb8c53c Fix typos
Signed-off-by: tinyboxvk <13696594+tinyboxvk@users.noreply.github.com>
2025-02-06 18:18:43 -04:00
Tom Rothamel 37d7d71d2b Avoid renaming the filename stored in nodes.
When a .rpy is removed, and a .rpyc is given.
2025-02-06 00:33:28 -05:00
Tom Rothamel a672a6840a Redo statement names when a .rpyc file has been moved.
Fixes #6137.
2025-02-06 00:23:26 -05:00
Tom Rothamel 8603ca2cf1 assimp: Allow tangents and bitangents to be loaded. 2025-02-06 00:17:44 -05:00
Tom Rothamel 6793d7e5fa Document when mouse moves are unlikely to work.
Fixes #6126.
2025-02-05 23:40:47 -05:00
Tom Rothamel 24a8135657 Merge pull request #6138 from mal/optimised-file-scan
Optimise startup file scan
2025-02-05 20:54:37 -05:00
Tom Rothamel 1a945d9663 Merge pull request #6139 from Lezalith/master
Doc changes - Colormatrix, Audio, general cleanup
2025-02-05 20:52:34 -05:00
Lezalith 0196e6aa69 Merge branch 'colormatrix-docs' 2025-02-05 18:08:24 +01:00
Lezalith dbee728716 Doc: Audio Directory & Namespace rewrite
Directory mentioned before the Namespace.
Made more newbies friendly, and moved more to the top of the docs.

This is consistent with the Doc page on Displaying Images.
2025-02-05 17:52:37 +01:00
Mal Graty 86bb2b83c0 Find archive files during main directory scan 2025-02-05 16:26:59 +00:00
Mal Graty 9586b0f685 Minor improvements when loading extensions 2025-02-05 15:18:08 +00:00
Tom Rothamel 6aa0ee45bf doc: Matrix uniforms. 2025-02-05 01:18:16 -05:00
Tom Rothamel 54e567160c gl2: Improved missing uniform handling.
* Do a lookup and function call rather than a big if statement.
* Use the suffix to perform matrix computations.
2025-02-04 22:29:07 -05:00
Tom Rothamel 6c40f39930 gl2: Allow transforms to supply view and projection matrices.
And while at it, rename u_camera to u_projection, as the camera is
really both projection and view.
2025-02-04 02:18:10 -05:00
Tom Rothamel 9eefa84bf2 gl2: Rename the model matrix, and add u_cameraview.
This makes all the matrices we need available in uniforms. The reason
for u_transform and u_cameraview is both to make these available for
further processing in Program.missing.
2025-02-03 23:00:00 -05:00
Tom Rothamel 9d1f34995a gl2: Break out the different kinds of matrices. 2025-02-03 22:38:03 -05:00
Tom Rothamel 0883e74935 gl2: Default to highp floats on gl2es.
To prevent issues where mediump is rounded and causes problems.
2025-02-02 22:52:15 -05:00
Tom Rothamel f257dc1c41 assimp: Free the scene once import is done. 2025-02-01 16:59:26 -05:00
Tom Rothamel 1b079ef358 assimp: Route IO through Ren'Py. 2025-02-01 15:39:17 -05:00
Andrej Klychin 07b853f77f Merge pull request #6127 from dm1sh/handle_uninitialized_newest_mtime
Handle newest_mtime initialized as None while determining newest game save
2025-02-01 17:24:02 +02:00
dm1sh 8db8651eb0 Handle newest_mtime initialized as None while determining newest game save 2025-02-01 18:02:48 +03:00
Ren'Py Bot 3568c02c42 Merge branch 'fix' 2025-02-01 04:30:40 -05:00
Tom Rothamel 5e3b209ba2 Fix the name of config.dissolve_shrinks.
Fixes #6122.
2025-01-31 22:07:18 -05:00
Lezalith 4a097934de Doc: Config defaults updated. 2025-01-30 23:13:01 +01:00
Lezalith 159f6a94ce Doc: config.web_video_prompt commented out
Currently a to-do variable.
2025-01-30 23:12:49 +01:00
Lezalith c726573089 Doc: Typos. 2025-01-30 23:12:21 +01:00
Lezalith b2499105ec Doc: Recommend VSCode in Quickstart
Used to recommend Editra back when it was an option in the launcher itself.
2025-01-30 23:10:26 +01:00
Tom Rothamel 315b0a9118 The _reset style property shouldn't be exposed to sl. 2025-01-29 23:13:58 -05:00
Tom Rothamel cb6101eab4 Only clear focus when a displayable is not grabbed.
Fixes #6121.
2025-01-29 23:13:58 -05:00
Tom Rothamel 8773f1b0ed Update compat fixes for tokenizer changes in Python 3.12. (#6037) 2025-01-28 22:11:01 -05:00
Tom Rothamel ecf19de428 Merge branch 'master' into update-token-fixes 2025-01-28 22:10:31 -05:00
Tom Rothamel c182a7cc72 atl: Deal with a boolean becoming a tuple. 2025-01-27 23:17:26 -05:00
Tom Rothamel 3b5be04369 Add assimp as a dependency. 2025-01-27 01:31:38 -05:00
Tom Rothamel 38b91afaa1 assimp: Add to the build process. 2025-01-27 01:30:42 -05:00
Tom Rothamel cb382804c3 doc: Ubuntu version increase. 2025-01-27 01:30:42 -05:00
Tom Rothamel 364eef9392 assimp: Rename modelloader to assimp. 2025-01-27 01:30:42 -05:00
Tom Rothamel 773b428996 ml: Integrate modelloader with render memory management. 2025-01-27 01:30:42 -05:00
Tom Rothamel 043a7c142e Fix bad range conversion. 2025-01-27 01:30:42 -05:00
Tom Rothamel a312a6f77e ml: Move to callback-based model loading.
This allows a callback to go mesh-by-mesh, asking about textures
(and eventually, material properties) before making the render.
2025-01-27 01:30:42 -05:00
Tom Rothamel ccc502e8a6 Add the im.Null() image manipulator.
This allows the creation of a 1x1 clear pixel. The intent is to
use this when a texture is missing.
2025-01-27 01:30:42 -05:00
Tom Rothamel b2af375e0a Search for archive files in sub-directories of game/.
Per #6013.
2025-01-27 01:29:25 -05:00
Tom Rothamel 14c191cf7f ml: Texture access. 2025-01-27 01:26:36 -05:00
Tom Rothamel 3a47bea97f ml: Load embedded textures. 2025-01-27 01:26:36 -05:00
Tom Rothamel 373235c179 ml: Allow mat2 and mat3, compute the normal matrix. 2025-01-27 01:26:36 -05:00
Tom Rothamel b0765aaf3a ml: Allow Matrix to compute its transpose. 2025-01-27 01:26:36 -05:00
Tom Rothamel 8b7b17c5ac ml: Walk the node tree and handle matrix transformations. 2025-01-27 01:26:36 -05:00
Tom Rothamel 82d2384b09 cy3: Replace old for syntax with range syntax.
In older versions of Cython, the `for` loop syntax `for 0 <= i < n:`
was used. This has been replaced with the more Pythonic
`for i in range(n):` syntax, which the Cyright tool handles better.

Both syntaxes are optimized in modern Cython.
2025-01-27 01:26:36 -05:00
Tom Rothamel 37647ecfea ml: Load to the point where a model becomes visible. 2025-01-27 01:26:36 -05:00
Tom Rothamel 3dd9bff6ea ml: Get Asset Importer loading the model. 2025-01-27 01:26:36 -05:00
Lezalith 8e5445c6bf Doc: Fix quick maths
(There are 6 items in the list)
2025-01-26 18:16:35 +01:00
Lezalith a6142487c8 Doc: Clearer Premultiplied Alpha explanation
I felt like the discrepancy between "transparent pixel" and "transparent black" was confusing. This seems much clearer and hopefully technically correct.
2025-01-26 18:16:01 +01:00
Ren'Py Bot 2acbd61df4 Merge branch 'fix' 2025-01-25 04:30:40 -05:00
Tom Rothamel 2e45c3e609 doc: Fixes.
Fixes #6097.
2025-01-24 21:29:51 -05:00
Ren'Py Bot 87cc2c334d Merge branch 'fix' 2025-01-24 04:30:40 -05:00
Tom Rothamel 8c7a3b13bf Merge pull request #6105 from nullvoid8/docs_nearrect
Update `nearrect` documentation
2025-01-23 22:32:49 -05:00
Tom Rothamel 83c75d1a0f Merge pull request #6107 from Kassy2048/limit-cython-processes
Limit the number of cython processes ran in parallel
2025-01-23 22:15:11 -05:00
Kassy ac83e934a1 Limit the number of cython processes ran in parallel
Running all the cython tasks in parallel at once is a bit violent. On my Docker
container for instance, it makes some processes be killed before they complete
because of resources exhaustion.

Using a ThreadPoolExecutor instance to limit the number of parallel tasks
guarantees there will be at least as much processes at the number of CPU plus 4
(up to 32) so that should be as fast as before without risking to reach the
host resources limit.
2025-01-23 21:01:32 +01:00
Tom Rothamel 9ce1334039 Merge branch 'fix' 2025-01-22 22:31:54 -05:00
Tom Rothamel e8ece0a442 Implement creating rpa archives in subdirectories (#6103) 2025-01-22 22:22:01 -05:00
Tom Rothamel 4a0738f2aa Document build.version.
Fixes #6102.
2025-01-22 22:19:42 -05:00
nullvoid8 899eb6616f merge documentation of nearrect the class, and nearrect the statement 2025-01-23 02:46:14 +00:00
Gio 8cdc759126 Don't allow ./ path prefix in archive list 2025-01-22 18:32:04 -06:00
Gio d1af90f096 Keep track of archives' paths relative to game root 2025-01-22 18:23:38 -06:00
Gio e88db2678b Implement creating rpa archives in subdirectories 2025-01-21 22:06:06 -06:00
Tom Rothamel 125f3b81d1 Search for archive files in sub-directories of game/.
Per #6013.
2025-01-21 22:54:26 -05:00
Tom Rothamel dc4541553e Merge pull request #6084 from mal/drop-disused-winver-function
Remove disused internal function
2025-01-19 20:54:38 -05:00
Tom Rothamel 6c4e86ac13 Merge pull request #6096 from the66F95/nested-viewports
Update viewport.py
2025-01-19 20:54:20 -05:00
the66F95 a96174950f Update viewport.py
this should fix #6087 (dragging of nested viewports).
however, i don't see a way to fix scrolling of nested viewports via mousewheel also, now that a viewport is no longer focusable with a mouse/touch screen(rv.add_focus(self, renpy.display.render.Render.NO_MOUSE_FOCUS, 0, 0, width, height)).
on the other hand, i don't know if that would be very practical at all. so currently only the outer viewport makes use of the mouseweel property.
2025-01-19 10:14:20 +01:00
Tom Rothamel 536fce4a22 sl2: Add box properties to imagemap.
As documented. Fixes #6090.
2025-01-18 23:03:42 -05:00
Tom Rothamel 4957280f4c Merge pull request #6091 from Elckarow/rpe_in_libs
search for rpe files in /libs
2025-01-18 11:13:26 -05:00
Elckarow e9a0fdbbc7 doc 2025-01-18 08:41:34 +01:00
Elckarow 9c86961cd1 search /libs for rpe files 2025-01-18 08:36:04 +01:00
Tom Rothamel f3e1b12e61 doc: The addition of the as clause to use and custom screen language.
Closes #6041.
2025-01-16 19:18:19 -05:00
Tom Rothamel 805308d78a Address #6041 for custom SL statements. 2025-01-15 23:51:18 -05:00
Tom Rothamel d0fdf85658 Allow the SL use statement to take an as clause.
Per #6041
2025-01-15 21:36:29 -05:00
Mal Graty ebfcd1b153 doc: Small changes to last commit 2025-01-15 12:30:06 +00:00
Tom Rothamel 52ae19a185 doc: Transform reset changes. 2025-01-15 02:13:27 -05:00
Tom Rothamel 97f4b95969 Improve standard reset transform (#6085)
To reset all properties, and to have a reset argument to Transform.
2025-01-14 22:17:15 -05:00
Mal Graty 9af6d13c08 Improve standard reset transform
The built-in reset transform will now reset all transform properties
rather than only a small subset. This makes it more predictable (no more
guessing which properties it will reset) and also future proof as it no
longer requires being kept up to date as an explicit definition.
2025-01-14 17:45:01 +00:00
Mal Graty b4bbf4bd80 Remove disused internal function
This was previously used to make allowances for Windows 7 and below,
however those conditions have been dropped along with Windows 7 support
and so there's no need to keep this function around.
2025-01-14 14:59:09 +00:00
Tom Rothamel 698d391033 Allow a displayable with size to opt out of mouse focus.
And do that for viewports.

Fixes #6081.
2025-01-14 02:11:35 -05:00
Tom Rothamel d9ecde9a62 Make gles2 the default renderer on arm-linux.
As it's much faster on Raspberry Pi, and probably other arm-linux
devices.
2025-01-14 02:11:35 -05:00
Tom Rothamel ca9e2dfe47 Fix regexp. 2025-01-14 01:49:35 -05:00
Tom Rothamel 321434e95e Allow a displayable with size to opt out of mouse focus.
And do that for viewports.

Fixes #6081.
2025-01-14 01:44:45 -05:00
Tom Rothamel 33e633c1aa docs: Remove debug print and fix typos. 2025-01-13 22:43:24 -05:00
the66F95 41b6e689d3 fix some newline typos 2025-01-13 08:56:13 -05:00
Tom Rothamel cddda04e20 Merge pull request #6077 from the66F95/newline-typos
fix some newline typos
2025-01-13 08:55:21 -05:00
the66F95 1a8eed69ac fix some newline typos 2025-01-13 14:31:20 +01:00
Tom Rothamel 3bcc9c72b2 Changelog game/libs and game/mods.
Per #6049.
2025-01-12 22:54:17 -05:00
Tom Rothamel 4f1ee9e601 Make game/libs and game/mods special.
If flag files, game/libs/libs.txt and game/mods/mods.txt exist.

In both cases, the files in the directory load in unicode order by
filename, and not by full path. Files in game/libs load before other
files in game, while those in game/mods load after other files in
games.

The main reason for this is to support CDSes that are  distributed
in libraries. A CDS in game/libs/cds.rpy can be used in any file
in the main game.

Similarly, mods son't affect the parsing of the main game.

Per #6049.
2025-01-12 22:31:42 -05:00
Tom Rothamel 732ef3af11 Create libs/ and lib/libs.txt.
The latter is the flags file that will load the libs directory in
libs mode.
2025-01-12 15:25:28 -05:00
Tom Rothamel 0c3b419dad Add the libs and mods directories to the list in launcher. 2025-01-12 14:21:13 -05:00
Ren'Py Bot adf545a199 Merge branch 'fix' 2025-01-12 04:30:40 -05:00
Tom Rothamel 1a952fd87e py312: Remove import machinery from store modules.
If the import machinery is present, Python will try to use it when
loading lines for a traceback. This would lead to the wrong line
being shown in tracebacks.
2025-01-12 00:22:09 -05:00
Tom Rothamel 96825cb518 Changelog prefering gles2 on Raspberry Pi. 2025-01-11 22:48:55 -05:00
Tom Rothamel 7958f5445a Make gles2 the default renderer on arm-linux.
As it's much faster on Raspberry Pi, and probably other arm-linux
devices.
2025-01-11 22:36:46 -05:00
Gio efd4cc6b5e Document cb_args cb_ prefix behavior 2025-01-11 15:34:01 -05:00
Tom Rothamel c57b7748f5 Merge pull request #6062 from GiovanH/doc-callback
Document cb_args cb_ prefix behavior
2025-01-11 15:32:23 -05:00
Tom Rothamel acf1f8ae38 Merge branch 'fix' 2025-01-10 23:03:26 -05:00
Tom Rothamel 35c4ba4a41 Make all fields in gl2draw public.
Fixes #6060.
2025-01-10 22:56:34 -05:00
Tom Rothamel 13df1dc000 Merge branch 'fix' 2025-01-10 01:24:29 -05:00
Tom Rothamel 5361a8e9a5 Ignore text tag errors that happen after {done}. 2025-01-10 01:21:56 -05:00
Tom Rothamel ba76f970c5 Perform substitution when scrying extend text.
This prevents problems if the scryed text substitutes things.

Fixes #6071
2025-01-10 01:07:25 -05:00
Tom Rothamel a9b529b9fd Back out change from fix branch.
That was already made in this branch.
2025-01-09 22:46:32 -05:00
Tom Rothamel a4f4d49259 Merge branch 'fix' 2025-01-09 22:45:28 -05:00
Tom Rothamel 7d8d05107b Allow the fix branch to run on python 3.12. 2025-01-09 22:44:43 -05:00
Tom Rothamel dfb31d28f9 Load common files before game files. 2025-01-09 01:09:42 -05:00
Tom Rothamel 181eb8adab Do not reload with a nonexistent file comes into existence.
Fixes #6018.
2025-01-08 23:32:25 -05:00
Tom Rothamel f0feb9b33e Merge branch 'fix' 2025-01-08 09:38:30 -05:00
Tom Rothamel 2639028ce7 Document config.has_music, config.has_sound, and config.has_voice.
Also, slight correction on how a channel without a mixer works.

Fixes #6068.
2025-01-08 08:27:10 -05:00
Tom Rothamel 85e055a3dc Fix an unconverted use of split_filename. 2025-01-07 22:01:46 -05:00
Tom Rothamel cbc6986ae6 Merge pull request #6070 from mal/windows-platform-checks
Small clean up of Windows platform checks
2025-01-07 19:04:09 -05:00
Mal Graty c329714093 Remove check intended for Windows 7 and older only
Follow up to 919e22059b.
2025-01-07 18:48:13 +00:00
Mal Graty abdf045277 Skip redundant platform version check on Windows 2025-01-07 18:46:24 +00:00
Tom Rothamel 8df7c8605d cslots: Only allow objects of the same type to compare equal.
Fixes #6066, which was caused by the changes to store statement
names in the statement, changes that made an unnamed statement
equal None.
2025-01-07 02:14:28 -05:00
Tom Rothamel 919e22059b Do not use renpy.windows as a tuple.
Fixes #6067.
2025-01-06 22:49:59 -05:00
Tom Rothamel 10d04c1faf Allow Ren'Py to continue to operate if something corrupts the bytecode cache.
This fixed an issue reported to me via patreon, though I have no idea
why it's happening - seems to be one-off.
2025-01-06 22:35:58 -05:00
Tom Rothamel 0a1e694e02 Many changes to how Ren'Py deals with seen statements.
The biggest one is that once a translation has been seen, dialogue
statemments inside that translation are also marked as seen.

This change also changes the representation of seen translates and
nodes, to store a 64-bit hash of the identifier, which should take
up less memory and should be able to be pickled faster.
2025-01-05 23:04:19 -05:00
Tom Rothamel 0f6379a797 Properly cast numbers to ensure there isn't a python conversion. 2025-01-05 22:42:45 -05:00
Gio 9226d27605 Document cb_args cb_ prefix behavior 2025-01-05 18:18:07 +00:00
Tom Rothamel c2baefb2a1 Minor cleanups to the LibExecFinder. 2025-01-05 01:29:03 -05:00
Tom Rothamel 7aeef3bae9 Type corrections.
renpy.windows was aways meant to be bool like the other platform flags,
while store can just be an annotated assign.
2025-01-05 01:06:51 -05:00
Tom Rothamel 8d5dbe4f73 Merge pull request #6006 from renpy/modernize-init
Modernize `renpy.__init__`.
2025-01-05 00:56:25 -05:00
Tom Rothamel 04cd9fe223 Merge remote-tracking branch 'origin/fix' 2025-01-05 00:51:20 -05:00
Kassy beedbc0a22 Do not kill Renders that cache the last video frame on Web (#6057)
Fixes and issue where, when the next video frame is not ready, the previous one is returned by get_movie_texture_web(). Normally, this is just a GLTexture instance, but when using a mask, that frame is a Render instance instead. The problem is that Render instances get killed soon after they have been drawn, so get_movie_texture_web() returns a dead instance when re-using the previous frame which causes a crash because of missing uniforms when drawing the screen.

Fixes #6050.
2025-01-05 00:50:49 -05:00
Tom Rothamel 36c00a5e19 Rewrite the imports to use typing.TYPE_CHECKING. 2025-01-05 00:48:05 -05:00
Tom Rothamel cedcc36418 Update .gitignore and .vscode/settings.json when generating pyi files.
Also check in some missing pyis.
2025-01-04 23:33:41 -05:00
Tom Rothamel 6a828f6ade Revert "cslots: Avoid double store of IntegerSlot defaults"
This reverts commit 627c6c6a48.
2025-01-04 14:37:25 -05:00
Tom Rothamel 3df4aabba0 Fixes to astsupport. 2025-01-04 14:37:15 -05:00
Tom Rothamel ae20ebead0 Merge pull request #6058 from mal/cslots-suggestions
Suggestions for cslots
2025-01-04 14:36:55 -05:00
Tom Rothamel fc5ccc2f7b Rename hash functions, and make astsupport.pyi. 2025-01-04 12:16:34 -05:00
Mal Graty 9c31ee66bb cslots: Unify compressed behaviour of Slot classes 2025-01-04 11:09:24 +00:00
Mal Graty 627c6c6a48 cslots: Avoid double store of IntegerSlot defaults 2025-01-04 11:01:47 +00:00
Mal Graty 407f3ad859 cslots: Maintain experiment while in development 2025-01-04 11:00:32 +00:00
Tom Rothamel 2b63ccf21e cslots: Use the default values from the namespace. 2025-01-03 23:56:19 -05:00
Tom Rothamel 2993629f22 Allow a volume adjustment to be included in audio filenames.
Closes #6055.
2025-01-03 22:19:32 -05:00
Andrej Klychin 77aaeaa514 Merge pull request #6053 from mal/fix-lint-bytecode-check
Update lint to use py_compile function
2025-01-03 18:01:30 +02:00
Mal Graty 7baac98ecb Update lint to use py_compile function 2025-01-03 15:48:32 +00:00
Tom Rothamel ed155c4b43 cslots: Construct the class, then read the annotations dictionary.
This attempts to future-proof things when PEP 649 is out.
2025-01-03 02:06:06 -05:00
Tom Rothamel bfae063c3c Fix to _in_current_store behaviour for ATLTransform (#6043) 2025-01-02 20:07:41 -05:00
Tom Rothamel 2ee62542bb Update Ukrainian Translation (#6044) 2025-01-02 20:06:51 -05:00
Tom Rothamel 20f988a175 Update copyright for 2025. 2025-01-02 19:01:36 -05:00
Tom Rothamel 26c440f7a5 Merge branch 'fix' 2025-01-02 18:57:41 -05:00
Tom Rothamel b0e250d11e cy3: Fix an issue with coercion of the string. 2025-01-02 18:52:43 -05:00
Tom Rothamel 74157a4ad6 Update copyright for 2025. 2025-01-02 18:48:44 -05:00
Ruben Garcia 25b4a17d1a Fix typo 2025-01-02 18:47:03 -05:00
Tom Rothamel a2f0747294 Merge pull request #6005 from RubenGarcia/master
Fix typo in documentation for SaturationMatrix.
2025-01-02 18:41:52 -05:00
Tom Rothamel 7c8f6fc6b7 py3: Remove py2 compatibility. (#6052)
Remove various compatibility names that were only used for py2 to py3 compatibility purposes.
2025-01-02 18:40:54 -05:00
Andy_kl 6951397e17 Remove ast shenenegans, as it was fixed in Python 3.12. 2025-01-02 21:52:59 +04:00
Andy_kl e46ba6c0db Render multi-caret parse errors correctly. 2025-01-02 21:52:59 +04:00
Andy_kl 8737c5f2a7 Work around how Python tokenizer init SyntaxError. 2025-01-02 21:52:58 +04:00
Andy_kl 16855d59a8 Modernize ParserError and uses. 2025-01-02 21:52:58 +04:00
Andy_kl cba492a109 Add monkeypatch of linecache.updatecache.
This replaces `renpy.lexer.get_line_text` but also
allows other python modules to read renpy files,
namely `traceback` module.
2025-01-02 21:47:03 +04:00
Andy_kl 2d0c3a3929 Fixes after review. 2025-01-02 21:31:25 +04:00
Andy_kl 66fd602018 Revert some bytes handlers as it was never public at the first place. 2025-01-02 19:49:20 +04:00
Andy_kl 85eb29e25d Reraise exceptions without spurious frames. 2025-01-02 19:36:42 +04:00
Andy_kl cfa27c3295 Fix unintentional change of basestring in d3c827f 2025-01-02 18:34:40 +04:00
Andy_kl 3bd1fe0d0c Make one change cleaner after review. 2025-01-02 18:11:43 +04:00
Andy_kl ad68443ce9 Revert unrelated changes to displayable[_or_none]. 2025-01-02 18:09:54 +04:00
Andy_kl 29867c25da Audit other functions from renpy.compat. 2025-01-02 17:10:01 +04:00
Andy_kl 5aae0b2a4c Audit Python 2/Python 3 only comments and variables. 2025-01-02 16:52:33 +04:00
Andy_kl 02dee6d384 Audit uses of basestring in RenPy code base.
Most of times it already raised, but often deep in the RenPy.
In other cases, decode or use tuple of str and bytes.
2025-01-02 16:38:40 +04:00
Andy_kl bed1de4001 Update uses of reraise and exec_ with Python 3 counterparts. 2025-01-02 14:39:10 +04:00
Tom Rothamel 6fdb82a211 Allow an AST node to be used as its own name.
By doing this, it's no longer to keep the name tuples materialized
all the time. Instead, the AST store this information, which should
reduced memory usage (at the cost of some CPU time).
2025-01-02 00:30:19 -05:00
Tom Rothamel 4e97001e47 Store node names inside the node.
This prevents a 64 byte tuple and 28 byte integer from being
stored for every object. (At the cost of having to recompute these
when needed.)
2025-01-01 23:48:16 -05:00
Tom Rothamel 389eac79fe Startup times are now in ms. 2025-01-01 23:37:48 -05:00
Tom Rothamel 18558cca21 Reimplement PyExpr in Cython.
The motivation for this is to reduce the memory used by PyExprs
Previously, a PyExpr needed to point to an int object for the line
number (8 bytes for the pointer, 28 bytes for the int), and another for the
Python version. (8 bytes for the pointer.)

Now, the line number is stored in 4 bytes, and the Python version in
1. Even with 4 bytes for the hashcode, this drops from 44 to 12 bytes
of overhead.

There's also another 16 bytes saved by disabling cyclic gc.
2025-01-01 21:00:16 -05:00
Tom Rothamel 0e9198ae0f cy3: Build in -3 mode.
Now that we don't need to support Python 2, it's possible to build
in -3 mode. This should make the generated C more optimized.
2025-01-01 20:02:13 -05:00
Tom Rothamel eee91e5f9c cslots: Allow unknown fields to be handled by a descriptor. 2025-01-01 17:37:13 -05:00
Tom Rothamel 750fc33438 Remove import of renpy.location. 2025-01-01 09:23:33 -05:00
Tom Rothamel 545f4200e4 Rename pythonsupport to astsupport.
Both because it's used mostly by the ast module, and because PyExpr
will be moving here.
2025-01-01 09:09:56 -05:00
Tom Rothamel fe02e12192 Improve the bytecode cache.
Previously, the bytecode cache had a lot of duplication, with
PyCode and PyExpr blocks being treated differently. With this
change, the same cache is used for both.

By storing fnv1a hashcodes on both objects, looking up the bytecode
in the py_compile cache should be fast, and so the second path to
hash and cahe PyCodes isn't required.
2025-01-01 01:30:32 -05:00
Tom Rothamel 57b2ce638e Add a c-compiled fnv1a hash.
This is intended to replace the md5s overkill used when compiling
a script.
2024-12-31 23:30:49 -05:00
Tom Rothamel 05d0bff24e cslots: Decompress a compressed object on modification.
This allows things like scriptedit.py to work.
2024-12-31 22:29:16 -05:00
Tom Rothamel ee1a3cf44a cslots: Compress the script after chaning translates. 2024-12-31 09:22:24 -05:00
Tom Rothamel 5013b1f98f cslots: object.__getstate___ exists, we don't want it. 2024-12-30 08:46:52 -05:00
Tom Rothamel 850a9f9b37 cslots: Fix filename/linenumber. 2024-12-30 02:23:56 -05:00
Tom Rothamel 0b61e59d7f Remove the location class.
Now that cslots supersedes it.
2024-12-30 02:09:08 -05:00
Tom Rothamel b01928453c cslots: Compress and kill nodes.
The former should reduce memory usage, the latter is required to
break reference cycles when the script is unloaded.
2024-12-30 02:03:09 -05:00
Tom Rothamel 3af05dadf6 cslots: Migrate AST to cslots.
This required marking class variables with ClassVar.

Most __new__ methods have been eliminated, as they would duplicate
the default information now contained by cslots.
2024-12-30 01:00:18 -05:00
Tom Rothamel 2508785591 cslots: Add control on if line/column is included when pickling. 2024-12-30 00:59:26 -05:00
Tom Rothamel b8769d9800 cslots: Directly access meta-information. 2024-12-29 22:59:03 -05:00
veydzh3r 1febfd4306 Update gui.rpy 2024-12-29 22:43:57 +00:00
veydzh3r 260cf63292 Update developer.rpy 2024-12-29 22:43:20 +00:00
Mal Graty d95d734912 Avoid acting on a child about to be replaced
Calling an instance of ATLTransform acts on the child, which if none is
passed, is self.child. This isn't desired in cases where we're about to
inject a new child, so instead provide the child as a parameter.

Additionally we pre-emptively call _unique on the child to forestall any
_duplicate attempts during the construction of the transform.
2024-12-29 21:51:27 +00:00
Tom Rothamel c35dc9a02a cslots: Automatically define Slots for non-class variables.
And as a side-effect, make the annotations something I enjoy
looking at.
2024-12-29 11:33:15 -05:00
Tom Rothamel f99c8acd62 cslots: Use __getstate__ if defined. 2024-12-29 11:31:02 -05:00
Tom Rothamel fbf533a003 cslots: Remove auto-interning.
It wasn't being used a bit much, and it would be dangerous to
intern a pyexpr.
2024-12-29 10:37:07 -05:00
Tom Rothamel 03c31da5f0 cslots: Move PyCode over to Cslots. 2024-12-28 23:27:13 -05:00
Tom Rothamel a794ee3b00 cslots: Merge with Ren'Py. 2024-12-28 13:06:35 -05:00
Tom Rothamel c1afced29c Add a debug print when a .rpyc file can't be loaded.
This should never trigger for users, except during downgrade
scenarios.
2024-12-28 10:22:51 -05:00
Tom Rothamel 02156e6e47 Merge pull request #6023 from renpy/modernize-ast
Make `renpy.ast` more polymorphic.
2024-12-28 09:16:29 -05:00
Tom Rothamel 07b9a6da78 cslots: Pickle support.
Also some performance optimizations.
2024-12-28 00:57:41 -05:00
Tom Rothamel a77170508e cslots: Add IntegerSlot
This is a slot that's optimized to contain an integer, storing it
without needing to create a separate object.
2024-12-27 19:10:16 -05:00
Tom Rothamel 03cdfd091d cslots: Add the decompress method. 2024-12-27 17:06:19 -05:00
Tom Rothamel 2caf0adabb cslots: Fix and test getsizeof. 2024-12-27 15:18:07 -05:00
Tom Rothamel 423f544dc9 cslots: Objects with the metaclass also do not particpate in cyclic gc. 2024-12-27 15:16:53 -05:00
Tom Rothamel e207fdc435 cslots: Remove cyclic GC, replace with a ._kill() method.
Cyclic GC imposes a 16 byte overhead on each object. Instead of
cyclic GC, we have a ._kill() method that clears the references
from each object, and rely on Ren'Py to call it to break cycles
when it's time for the Script to be deallocated.
2024-12-27 14:45:15 -05:00
Tom Rothamel bfbc9b8b1f cslots: Use pymalloc. 2024-12-27 14:13:03 -05:00
Tom Rothamel ae04573e90 cslots: Add object compression. 2024-12-27 13:22:04 -05:00
Tom Rothamel 6c2baa1474 cslots: Allow slots to contain integers.
For now, just allow it the IntegerSlot class will come later.
2024-12-27 11:31:05 -05:00
Tom Rothamel ceb7dea7cc cslots: Renamings, error handing, compressed flag. 2024-12-27 01:10:07 -05:00
Tom Rothamel 2da5f4ae6a Support cyclic garbage collection. 2024-12-26 23:56:41 -05:00
Andy_kl 8bbb827d25 Update compat fixes for tokenizer changes in Python 3.12. 2024-12-27 01:35:57 +04:00
Tom Rothamel a535365da0 cslots: Uncompressed objects. 2024-12-26 00:21:22 -05:00
Tom Rothamel 2450dcbfa8 Remove align function.
It's not needed.
2024-12-26 00:21:22 -05:00
Tom Rothamel 439921baea cslots: Initial setup.
Cslots - short for compressed slots, will be an attempt to reduce
AST memory consumption by only including non-default slots in
objects.
2024-12-26 00:21:22 -05:00
Andy_kl ac450c8b1f Fix depricated use cases of python ast. 2024-12-26 06:22:52 +04:00
Tom Rothamel 4163c1396c Merge pull request #6035 from shawna-p/default-focus-fix2
Don't overrule focus override for max focus
2024-12-25 20:39:00 -05:00
shawna-p d6ab06dd1f Don't overrule focus override for max focus 2024-12-25 16:42:56 -05:00
Tichq 3db515db3c fix: function staticmethod of TransformMatrix 2024-12-25 07:29:53 -05:00
Tom Rothamel 99cb4c0975 Merge pull request #6032 from qTich/fix-matrixtransform-function
fix: function property of `TransformMatrix`
2024-12-25 07:28:18 -05:00
Tichq b120ea6303 fix: function staticmethod of TransformMatrix 2024-12-25 11:25:01 +03:00
Tom Rothamel cc654ebfeb atl: Distinguish between children and included transforms.
During prediction. Fixes #6014.
2024-12-25 00:04:04 -05:00
Tom Rothamel a8342ba40b Merge pull request #6031 from mal/fix-docstring-lint-warnings
Use raw strings for docstrings that contain unescaped slashes
2024-12-24 13:21:21 -05:00
Mal Graty 72535d881a Use raw str for docstrings that contain slashes 2024-12-24 15:06:23 +00:00
Tom Rothamel 41458e274e Better error if textshaders are used incorrectly. 2024-12-24 00:26:31 -05:00
Tom Rothamel 5f8382a9aa Use the correct condition for including i686.
Fixes #6028.
2024-12-24 00:26:31 -05:00
Tom Rothamel f389c13b29 Better error if textshaders are used incorrectly. 2024-12-24 00:23:35 -05:00
Tom Rothamel c57dbe7a9d Use the correct condition for including i686.
Fixes #6028.
2024-12-23 20:34:28 -05:00
Tom Rothamel fba051737f dist: Classify pxd files as source only. 2024-12-22 10:26:01 -05:00
Tom Rothamel 83c87011ad Updated keywords.py. 2024-12-22 10:15:15 -05:00
Tom Rothamel 9e9e9061e0 Distribute src/ and the new setup.py. 2024-12-22 10:08:18 -05:00
Tom Rothamel 3bef0a10b0 Remove the usue of future. 2024-12-22 09:44:33 -05:00
Tom Rothamel cedf98910f Python 311 bytecode is no longer needed for web builds. 2024-12-22 09:36:53 -05:00
Tom Rothamel ae08ac55c5 Only include the current libpython3.{x}.dll in builds. 2024-12-22 09:34:49 -05:00
Tom Rothamel e35fcb2e86 Only include the current libpython3.{x}.dll in builds. 2024-12-22 09:32:23 -05:00
Ren'Py Bot 6c8030ad99 Merge branch 'fix' 2024-12-22 04:30:55 -05:00
Tom Rothamel 820bd815ca Fix code-typo regarding tight playback.
Fixes #6019.
2024-12-22 01:34:27 -05:00
Tom Rothamel 38b505ba36 Fix code-typo regarding tight playback.
Fixes #6019.
2024-12-22 01:32:26 -05:00
Tom Rothamel 9de620953d doc: Changelog. 2024-12-22 01:31:14 -05:00
Tom Rothamel c5f54a6d72 rapt: Call non-static methods through mActivity.
This wasn't enforced by pyjnius, and now it is.
2024-12-22 01:25:30 -05:00
Andy_kl 9968387f89 Simplify Node.get_init method to always return init priority
of the node and make polymorphic `Node.execute_init` do the job.
2024-12-21 20:18:23 +04:00
Tom Rothamel 680fe45ec8 Merge pull request #6010 from AbdulGoodLooks/patch-6
Fix typo in style_properties.rst
2024-12-21 10:38:26 -05:00
Andy_kl 5c2258b970 Add Node.get_translation_strings, a polymorphic method to get
extra translation strings of the node.
2024-12-21 18:10:13 +04:00
Andy_kl 4d976330ec Make reacheability a polymorphic method on Node class. 2024-12-21 17:45:50 +04:00
Andy_kl d8096effe4 Add removed slots of TranslateSay as properties. 2024-12-21 17:23:09 +04:00
Andy_kl f04a303af0 Do not set get_init and early_execute to None.
It does not speed things up any way to notice.
2024-12-19 19:46:57 +04:00
Andy_kl 2fdcd690a9 Move non translation nodes before translations. 2024-12-19 19:37:57 +04:00
Andy_kl 52e309aa1b Add types for renpy.ast module. 2024-12-19 19:35:57 +04:00
Ren'Py Bot 293f0f5e5d Merge branch 'fix' 2024-12-19 04:30:54 -05:00
Tom Rothamel f132d49157 text: Handle events in virtual coordinates.
Fixes #6013.
2024-12-18 23:17:56 -05:00
Abdul 73333d16fc Fix typo in style_properties.rst 2024-12-17 21:46:42 +00:00
Tom Rothamel 6cf5e23f6a reorg: Change Setup to work with the new location of generated files. 2024-12-15 23:11:31 -05:00
Tom Rothamel e6b92d5a27 reorg: Give setup.py a main. 2024-12-15 20:39:22 -05:00
Tom Rothamel f2d3e0d20e reorg: Setup.py no longer probes for libraries and includes.
Previously, setup.py had been the main build process, and would
probe the system for dependencies. Now that all dependencies are
available on all platforms, and cross-compiling is done by renpy-build,
setup.py has been simplified by assuming everything is present.

(Optional probing is done using pkg-config.)

Various includes have been changed to be more canonical.
2024-12-15 20:27:42 -05:00
Tom Rothamel e41a4f85e9 reorg: Eliminate use of the module directory.
This directory contained a mix of both c/cython source code, scripts,
and build information. Now, source is in src, scripts are in scripts,
and setup.py is in the root.
2024-12-15 18:14:26 -05:00
Andy_kl 6b4e61f3b2 Remove uses of removed update_path 2024-12-16 02:44:11 +04:00
Andy_kl adfb70038b Modernize renpy.__init__. 2024-12-16 02:41:22 +04:00
Tom Rothamel 5146b83125 Document the two most important branches. 2024-12-15 11:02:18 -05:00
Ruben Garcia 5bc46900f6 Fix typo 2024-12-15 10:31:31 +01:00
Ren'Py Bot b23a0df6e8 Merge branch 'fix' 2024-12-15 04:30:54 -05:00
Tom Rothamel 86dbd0d299 Move statement_start from a property of ast.Node to ast.Menu.
This reduces memory, as it's only relevant for Menu nodes.
2024-12-15 02:41:04 -05:00
Tom Rothamel 13919e7f94 Store ast filename and line number in Location.
This should reduce the memory used by not requiring many integer
objects to be kept alive.
2024-12-15 02:36:08 -05:00
Tom Rothamel 63155fbc7e Ren'Py is now cython 3 compatible. 2024-12-14 23:54:24 -05:00
Tom Rothamel ba0bc218c2 cy3: Add noexcept annotations.
These allow Ren'Py to be compiled by cython 3.0.
2024-12-14 20:50:07 -05:00
Tom Rothamel 8a4a811a4c cy3: Add noexcept annotations.
These allow Ren'Py to be compiled by cython 3.0.
2024-12-14 19:59:04 -05:00
Tom Rothamel 643fd38510 Merge branch 'fix' 2024-12-14 01:08:40 -05:00
Tom Rothamel 8ea6482788 Add config.keep_screenshot_entering_menu.
Per discord discussion, this makes it possible to take a screenshot
before an in-game menu is shown, and use that screenshot when entering
the menu context.
2024-12-14 01:07:20 -05:00
Tom Rothamel 97331e2464 Fix to how SetCharacterVolume sets the volume.
Previously, it would try to adjust the volume. Now it treats it
the same way _CharacterVolumeValue does.

Fixes #6001.
2024-12-13 20:05:12 -05:00
Tom Rothamel 2ba27b5549 Add the location class.
This class stores a filename, linenumber, and a column. Storing the
data as C inside the object is intended to reduce the amount of
RAM used.
2024-12-12 22:54:59 -05:00
Ren'Py Bot 8c26b986a3 Merge branch 'fix' 2024-12-12 04:30:54 -05:00
Tom Rothamel 8d38a6ae4d Add no_launcher_links.txt.
If a file named ``no_launcher_links.txt`` exists in the Ren'Py base directory (the one with
renpy.exe, renpy.sh, and renpy.app in it), the launcher will disable links to renpy.org. While
not guaranteed, this is intended in educational and homeschool environments to prevent young
Ren'Py users from seeing adult sponsors.
2024-12-11 22:27:36 -05:00
Tom Rothamel bac6dbdba7 Add no_launcher_links.txt.
If a file named ``no_launcher_links.txt`` exists in the Ren'Py base directory (the one with
renpy.exe, renpy.sh, and renpy.app in it), the launcher will disable links to renpy.org. While
not guaranteed, this is intended in educational and homeschool environments to prevent young
Ren'Py users from seeing adult sponsors.
2024-12-11 21:59:35 -05:00
Tom Rothamel 346b34d5a0 Allow Gallery.get_Fraction to return the fraction for all buttons.
Fixes #5991.
2024-12-10 22:54:33 -05:00
Tom Rothamel 7d2a131995 Changelog #6000. 2024-12-09 23:32:28 -05:00
Tom Rothamel fd6eb01e5e Change thumb_offset, add thumb_align #6000
Updates thumb_offset to optionally take a tuple instead of an integer. If provided a tuple, the first number is used to offset the left/top of the bar, and the second number is used for the right/bottom. This is helpful for bars whose thumb is asymmetrical, such as a half-circle. In particular, it avoids issues with semi-transparent image overlap (in general or when using ATL or transitions). It is backwards-compatible with the regular integer value.

Adds a thumb_align property to bars. This solves an incredibly common issue which occurs when the bar's thumb is larger than the bar images. Most people want the center and thumb of the bar to be aligned. This provides a simple in-engine solution, rather than forcing players to adjust their bar images in an image editor.
2024-12-09 20:28:02 -05:00
shawna-p 81653b0daf New bar properties 2024-12-09 19:23:08 -05:00
Ren'Py Bot c97f8acadd Merge branch 'fix' 2024-12-09 04:30:54 -05:00
Tom Rothamel e3c4993487 Bump the fix version. 2024-12-08 23:48:49 -05:00
Ren'Py Bot 62810b94ab Merge branch 'fix' 2024-12-08 04:30:54 -05:00
Tom Rothamel d0270729c1 doc: Changelog. 2024-12-07 22:57:53 -05:00
Tom Rothamel 3bc3bf3e19 Avoid reporting string errors on triple-quoted strings.
Which tend to be much more intentional, and cause errors when
monologue mode exists.
2024-12-07 22:31:04 -05:00
Tom Rothamel 831fb59d49 Produce a better error for monologue mode with an id clause.
Fixes #5980.
2024-12-07 22:16:19 -05:00
Tom Rothamel 5db210473c Switch from MultipleDict to collections.ChainMap (#5983)
Switch from MultipleDict to collections.ChainMap
2024-12-07 00:24:22 -05:00
Tom Rothamel 0686c2621d Remove debug raise, again.
Fixes #5986.
2024-12-06 22:44:36 -05:00
Mal Graty 3fcf634c8b Switch from MultipleDict to collections.ChainMap 2024-12-06 03:20:20 +00:00
Tom Rothamel 9caf81c129 Merge remote-tracking branch 'origin/fix' 2024-12-05 22:07:35 -05:00
Tom Rothamel f5555d6f1a Merge pull request #5982 from mal/fix-5981
Prevent MultipleDict masking builtins during interpolation
2024-12-05 22:02:58 -05:00
Mal Graty e7eb0e135b Meet expectation to raise KeyError on missing keys
Fixes #5981
2024-12-06 00:15:14 +00:00
Ren'Py Bot 9d4fd5aef1 Merge branch 'fix' 2024-12-04 04:30:54 -05:00
Tom Rothamel 92514e4c1f imagemap: Remove caching.
This has been disabled for a long time, and doesn't make a lot of sense
in modern Ren'Py. So it's gone.
2024-12-04 00:36:12 -05:00
Tom Rothamel 40078a18f3 Offer config.screen_width, config.screen_height to imagemaps.
This shouldn't affect normal imagemaps that use images, but
should make using non-image displayables in imagemaps work better.

Fixes #5976.
2024-12-04 00:36:12 -05:00
Tom Rothamel 22153cb191 Use itch.zone instead of itch.ovh.
Per https://github.com/itchio/butler/commit/898b30bb2cadaaf561d91c4f7784aa1927c5cfb2

Fixes #5795.
2024-12-04 00:36:12 -05:00
Tom Rothamel bf9de85f75 Offer config.screen_width, config.screen_height to imagemaps.
This shouldn't affect normal imagemaps that use images, but
should make using non-image displayables in imagemaps work better.

Fixes #5976.
2024-12-03 23:28:01 -05:00
Tom Rothamel 6470a37b40 Use itch.zone instead of itch.ovh.
Per https://github.com/itchio/butler/commit/898b30bb2cadaaf561d91c4f7784aa1927c5cfb2

Fixes #5795.
2024-12-03 19:18:34 -05:00
Ren'Py Bot b6aa7e7139 Merge branch 'fix' 2024-12-03 04:30:54 -05:00
Tom Rothamel 99a5ac89db Remove style_prefix from the template say screen.
As it's not used.

Fixes #5973.
2024-12-03 00:34:17 -05:00
Tom Rothamel d594f15b23 Merge branch 'fix' 2024-12-02 23:47:45 -05:00
Tom Rothamel e46073b059 Allow renpy.register_style_preference to take a style by name.
Per the documentation.

Fixes #5972.
2024-12-02 21:57:17 -05:00
Mal Graty 88ddee9d5e doc: Missing version headers in changelog 2024-12-02 01:24:05 +00:00
Tom Rothamel d8283c958c doc: Changelog. 2024-12-01 20:17:41 -05:00
Tom Rothamel 31025cdadb doc: Credits, sponsors. 2024-12-01 19:27:10 -05:00
naughty road e66a9b8c6d Code cleanup: remove superfluous line 2024-12-01 19:10:20 -05:00
naughty road 2b5b9835b7 Fix order of attempting to load presplash images
Checks for foreground+background first, before falling back to the single presplash image, instead of the other way around, to match behavior in the documentation (https://www.renpy.org/doc/html/splashscreen_presplash.html#adding-a-progress-bar).
2024-12-01 19:10:08 -05:00
Tom Rothamel 43441524cd Merge pull request #5969 from NaughtyRoad/fix-order-of-presplash-image-checks-to-match-documentation
Fix order of attempting to load presplash images
2024-12-01 19:09:48 -05:00
the66F95 3f667e3ef1 Update dragdrop.py
should fix #5968 (not extensively tested)
2024-12-01 19:08:38 -05:00
Tom Rothamel f8cc239df6 Merge pull request #5970 from the66F95/drags
Update dragdrop.py
2024-12-01 19:08:16 -05:00
the66F95 3ece5ec173 Update dragdrop.py
should fix #5968 (not extensively tested)
2024-12-02 00:50:22 +01:00
Tom Rothamel 823e235a1c Remove debug raise.
Fixes #5966.
2024-12-01 17:09:27 -05:00
naughty road 2e2020be4a Code cleanup: remove superfluous line 2024-12-01 22:47:04 +01:00
naughty road 6666a285a7 Fix order of attempting to load presplash images
Checks for foreground+background first, before falling back to the single presplash image, instead of the other way around, to match behavior in the documentation (https://www.renpy.org/doc/html/splashscreen_presplash.html#adding-a-progress-bar).
2024-12-01 22:11:45 +01:00
Tom Rothamel 1df2c15b07 Stop movies that may have been restarted when returning to a channel.
Fixes #5960. (Replicated as bug5911.)
2024-12-01 00:20:18 -05:00
Tom Rothamel 4087f8de87 Use the correct variable name. 2024-11-30 22:22:18 -05:00
Tom Rothamel cde2db2ebf Avoid save scanning restarting the interaction.
The strategy chosen was to keep track of which slots have had
information by the rest of Ren'Py, and only restarting if one of
those slots is accessed.

This is motivated by a series of interaction restarts at choice menus,
caused by the autosaves that happen when a choice menu is reached.
2024-11-30 22:22:18 -05:00
Tom Rothamel c1f85b21d5 Remove the ATL "update" event.
This was rarely used, and caused problems, like #5926, with no
actual benefit.

Fixes #5956 by virtue of reverting #5927.
2024-11-30 22:22:18 -05:00
Tom Rothamel 2552c35581 Revert "Update screen.py"
This reverts commit cb10f2a21a.
2024-11-30 22:22:18 -05:00
Tom Rothamel 86294e34f2 Compat #4717.
Fixes #5954.
2024-11-30 22:21:40 -05:00
Tom Rothamel 5c5252a516 Use the correct variable name. 2024-11-30 08:25:11 -05:00
Tom Rothamel 70bb4208bc Avoid save scanning restarting the interaction.
The strategy chosen was to keep track of which slots have had
information by the rest of Ren'Py, and only restarting if one of
those slots is accessed.

This is motivated by a series of interaction restarts at choice menus,
caused by the autosaves that happen when a choice menu is reached.
2024-11-29 21:42:03 -05:00
Tom Rothamel 2e1c09dbbd Remove the ATL "update" event.
This was rarely used, and caused problems, like #5926, with no
actual benefit.

Fixes #5956 by virtue of reverting #5927.
2024-11-29 21:09:41 -05:00
Tom Rothamel fc5f8e0d3e Revert "Update screen.py"
This reverts commit cb10f2a21a.
2024-11-29 20:23:41 -05:00
Tom Rothamel 81198df4c5 Add the arrowkeys property to input.
This controls if the arrow keys apply to the input, or can be
used for focus.

Fixes #5959.
2024-11-29 15:09:45 -05:00
Tom Rothamel 9deaddbbd4 Fix where nvl_hide sets store._window.
So that _window is False before the empty window is shown.
2024-11-29 14:53:23 -05:00
Tom Rothamel 4dbddc88ed Add renpy.get_statement_name.
To make available the statement name.
2024-11-29 14:53:23 -05:00
Tom Rothamel 17e574866b Handle non-keyboard focusable displayables.
Specifically, before doing any sort of keyboard focus, check
that the current focus supports the keyboard, and drop it if
it does.

Per #5936. Keeps the fix for #5173.
2024-11-29 14:51:59 -05:00
Tom Rothamel c59e787262 Compat #4717.
Fixes #5954.
2024-11-29 14:51:59 -05:00
Tom Rothamel 5f77306cba Fix keyboard focus of viewports.
Based on #5936, fixes #5934.
2024-11-29 14:51:41 -05:00
Tom Rothamel 28ae4a7c0c Fix where nvl_hide sets store._window.
So that _window is False before the empty window is shown.
2024-11-29 14:36:51 -05:00
Tom Rothamel ec5738c6e0 Add renpy.get_statement_name.
To make available the statement name.
2024-11-29 14:30:40 -05:00
Tom Rothamel 2da8beecd7 Handle non-keyboard focusable displayables.
Specifically, before doing any sort of keyboard focus, check
that the current focus supports the keyboard, and drop it if
it does.

Per #5936. Keeps the fix for #5173.
2024-11-29 13:07:57 -05:00
Tom Rothamel e0062cbebc Compat #4717.
Fixes #5954.
2024-11-28 22:31:14 -05:00
Tom Rothamel 9b290e07f5 Fix keyboard focus of viewports.
Based on #5936, fixes #5934.
2024-11-28 21:53:27 -05:00
Tom Rothamel c0051f49b3 Merge pull request #5953 from 0x0ade/fix-persistent-clear-doc
docs: Update persistent._clear with current behavior
2024-11-27 08:28:11 -05:00
Jade Macho f64c74ac78 docs: Update persistent._clear with current behavior 2024-11-27 14:19:22 +01:00
Tom Rothamel 5d217f6527 Merge pull request #5901 from the66F95/android-open-editor
Android open editor
2024-11-26 22:46:40 -05:00
Tom Rothamel e63efb05de Merge branch 'master' into android-open-editor 2024-11-26 22:46:33 -05:00
Tom Rothamel 48ef5c89b3 Make quick menu locatioon configurable through a style.
As requested in #5948.

Thought was given to doing something similar with file_slots, but
that would require multiple new styles, and it's generally a bigger
lift when it comes to customization.
2024-11-25 23:01:02 -05:00
Ren'Py Bot 2145516173 Merge branch 'fix' 2024-11-24 22:11:26 -05:00
Tom Rothamel 864feaba02 Indentation fix from #5947. 2024-11-24 11:48:50 -05:00
Tom Rothamel 76b068c6dc Take the CaretBlink change from #5947. 2024-11-24 11:45:22 -05:00
Tom Rothamel ebc6e66433 Add a ZWSP to pad out an empty line.
This fixes the same thing seen in #5947, in a different way.
2024-11-24 11:11:00 -05:00
Ren'Py Bot 9ee1562ff3 Merge branch 'fix' 2024-11-24 04:30:12 -05:00
Tom Rothamel f25dcea3cb Take the remaining fix from #5931.
Fixes #5929.
2024-11-23 22:35:03 -05:00
ヽ◕◡◕✿ノ 78899cfef3 Live2D.blend_opacity wasn't usable 2024-11-23 22:28:51 -05:00
Tom Rothamel 442c4fdc7a Merge pull request #5942 from farzher/master
Live2D.blend_opacity wasn't usable
2024-11-23 22:27:56 -05:00
Tom Rothamel 339c7357dc Update and modernize SpriteManager.
Fixes #5939

* Make SpriteManager pickleable.
* Update the idea of a fast render to take gl2 into account.
2024-11-23 22:15:35 -05:00
Tom Rothamel 4a1182cdd5 Ensure inputs are at least 1px wide.
Fixes #5944 while retaining #5929 and #5913.
2024-11-23 21:41:38 -05:00
Tom Rothamel 9ff3bb67e8 Revert "input mask regression"
This reverts commit 89d5858d2b.
2024-11-23 21:19:45 -05:00
Ren'Py Bot a84543fb99 Merge branch 'fix' 2024-11-23 04:30:13 -05:00
ヽ◕◡◕✿ノ bb3d8254b1 Live2D.blend_opacity wasn't usable 2024-11-23 02:31:36 -05:00
Jan Masek f7a5e874ea Mention screen calling labels in Special Labels 2024-11-22 23:39:29 -05:00
Tom Rothamel 97f05000b5 Merge pull request #5937 from Lezalith/master
Mention screen calling labels in Special Labels
2024-11-22 22:45:55 -05:00
Lezalith e7297b78f8 Merge branch 'renpy:master' into master 2024-11-23 04:23:44 +01:00
Ren'Py Bot 6f2bc54e1b Merge branch 'fix' 2024-11-22 04:30:12 -05:00
Jan Masek 07dc391c59 Mention screen calling labels in Special Labels 2024-11-22 02:54:21 +01:00
HorBro38 ec758301ac Update displaying_images.rst
Corrects errant use of .jxl file type discovered in #5933
2024-11-21 17:56:47 -05:00
Tom Rothamel 83cada0b34 Merge pull request #5935 from HorBro38/Displaying-Images-doc-fix
Update displaying_images.rst
2024-11-21 17:50:05 -05:00
HorBro38 2fe65592db Update displaying_images.rst
Corrects errant use of .jxl file type discovered in #5933
2024-11-21 13:24:00 -05:00
Ren'Py Bot 48bd8358d2 Merge branch 'fix' 2024-11-21 04:30:13 -05:00
the66F95 19122e45c8 Update screen.py
seems to fix #5926 while preserving #5905
2024-11-20 23:10:26 -05:00
the66F95 89d5858d2b input mask regression
should fix #5929 while preserving #5913
2024-11-20 23:10:12 -05:00
Tom Rothamel 75ef4e4f7e Merge pull request #5927 from the66F95/screen-show-update-events
Update screen.py
2024-11-20 21:12:05 -05:00
Tom Rothamel e6e72e3d94 Merge pull request #5930 from the66F95/input-mask-regression
input mask regression
2024-11-20 21:11:38 -05:00
the66F95 d5b1da1052 input mask regression
should fix #5929 while preserving #5913
2024-11-20 23:51:09 +01:00
the66F95 cb10f2a21a Update screen.py
seems to fix #5926 while preserving #5905
2024-11-20 17:35:58 +01:00
Ren'Py Bot 089675bafa Merge branch 'fix' 2024-11-20 04:30:28 -05:00
the66F95 5a65eea075 Update viewport.py
should fix #5921
2024-11-19 22:59:21 -05:00
Edward Nicholes Jr. 4e5dd16606 Fix the ATL part of the tutorial to show the correct example code
In the "Tutorial" > "Transforms and Animation", there is a section that demonstrated that `repeat` can take an integer argument.

However, the `alt_image1` example code is shown twice on lines 543 and 548 for two different examples.

Line 548, should be changed to show the `alt_image2` example code which removed the `repeat 2` line from the previous example, showing that the animation will only happen once.
2024-11-19 22:59:12 -05:00
Tom Rothamel f746a61a1c Merge pull request #5922 from the66F95/viewport-focus
Update viewport.py
2024-11-19 22:49:40 -05:00
Tom Rothamel 28a35bfcea Merge pull request #5925 from GameDevFox/patch-1
Fix the ATL part of the tutorial to show the correct example code
2024-11-19 22:41:37 -05:00
Tom Rothamel dd61e71beb Ensure the cache is maintained under lock.
And also check that cache entry is in the cache when it's killed.

Fixes #5923.
2024-11-19 22:25:23 -05:00
Edward Nicholes Jr. 74b4674439 Fix the ATL part of the tutorial to show the correct example code
In the "Tutorial" > "Transforms and Animation", there is a section that demonstrated that `repeat` can take an integer argument.

However, the `alt_image1` example code is shown twice on lines 543 and 548 for two different examples.

Line 548, should be changed to show the `alt_image2` example code which removed the `repeat 2` line from the previous example, showing that the animation will only happen once.
2024-11-19 16:51:40 -06:00
Ren'Py Bot 1a8dbd84fb Merge branch 'fix' 2024-11-19 04:30:28 -05:00
the66F95 358502391f Update viewport.py
should fix #5921
2024-11-19 09:02:02 +01:00
Tom Rothamel c3246406c2 Add config.translate_additional_strings_callbacks.
This is a list of callbacks that return strings that will be
offered up for translation.

Fixes #5849.
2024-11-18 22:53:36 -05:00
naughty road 70f30147df fix link to pyjnius docs
Seems the original URL refering to "stable" doesn't exist anymore, this updates it to direct to "latest" instead.
2024-11-18 22:41:47 -05:00
Tom Rothamel bdd07c41ee Merge pull request #5919 from NaughtyRoad/fix-pyjnius-link-in-sphinx
fix link to pyjnius docs
2024-11-18 17:19:35 -05:00
naughty road 55bc71c810 fix link to pyjnius docs
Seems the original URL refering to "stable" doesn't exist anymore, this updates it to direct to "latest" instead.
2024-11-18 23:05:56 +01:00
Tom Rothamel 423e54de9f Add the ___ function.
This translates text, then applies text interpolation.
2024-11-17 20:44:44 -05:00
Tom Rothamel b097fcf3de Merge branch 'fix' 2024-11-16 21:35:25 -05:00
Tom Rothamel fa84f0c61e doc: Changelog wording fix. 2024-11-16 03:06:09 -05:00
Tom Rothamel 74339b0432 Bump the fix version. 2024-11-16 01:59:03 -05:00
Tom Rothamel f6f4b3bce3 Empty masked inputs no longer show a single mask glyph.
Fixes #5913.
2024-11-15 20:34:32 -05:00
Tom Rothamel 5dbd50159a doc: Correct the notify screen. 2024-11-15 00:11:26 -05:00
Tom Rothamel 1e85fd051a doc: Sponsors. 2024-11-14 23:16:13 -05:00
Ren'Py Bot 88185556c6 Merge branch 'fix' 2024-11-14 04:30:28 -05:00
Tom Rothamel dc65afd6f1 Duplicate the children of Movie.
Fixes #5907.
2024-11-13 22:55:57 -05:00
Ren'Py Bot 4cf058d823 Merge branch 'fix' 2024-11-13 04:30:28 -05:00
Tom Rothamel e3222ec11d Store the old_max_default even if it's not used.
Fixes #5903.
2024-11-12 22:30:57 -05:00
Tom Rothamel 37c78dccda config.nvl_adv_transition no longer forces the dialogue window to be hidden.
Fixes #5904.
2024-11-12 22:11:46 -05:00
Tom Rothamel 1a7f0ca8c3 Screens go from SHOW to UPDATE upon first update.
Fixes #5905.

The underlying issue was caused by the screen being run for a
second time in SHOW mode, which in turn prevented scopes of used
screens from being saved.
2024-11-12 21:55:58 -05:00
Tom Rothamel 098b29a15c Merge branch 'fix' 2024-11-11 23:39:23 -05:00
the66F95 0ea39d7637 open editor on Android
the Python part to open/select an editor to open the traceback file on Android devices.
2024-11-11 15:54:38 +01:00
the66F95 173e4ebef4 Revert "open editor on Android"
This reverts commit f2badd8cc9.
2024-11-11 15:49:06 +01:00
the66F95 f2badd8cc9 open editor on Android
the Python part to open/select an editor to open the traceback file on Android devices, works with 651c31a0bd3a6e6dbe67ede889106562d12e68b5
2024-11-11 15:46:10 +01:00
Tom Rothamel be8831b4b2 doc: Changelog and credits. 2024-11-11 00:50:46 -05:00
Tom Rothamel fc87c053c3 Do not focus a displayable that's been transformed to nothing.
Fixes #5869.
2024-11-11 00:41:32 -05:00
Tom Rothamel 10cc039460 Merge pull request #5900 from Kassy2048/fix
Do not offer to open "traceback.txt" on mobile
2024-11-10 23:48:00 -05:00
Tom Rothamel fd027dbdbd Duplicate an AlphaMask's mask. 2024-11-10 23:47:28 -05:00
Kassy 15eb9a9c13 Do not offer to open "traceback.txt" on mobile
renpy.launch_editor() is not supported on mobile (or Web) so clicking on
the button does nothing.
2024-11-11 05:31:11 +01:00
woolion 2ded06bc5d steam: fix get_session_ticket 2024-11-10 13:56:08 -05:00
Tom Rothamel 06f6c73e41 Merge pull request #5899 from Le09/master-getsessionticket
steam: fix get_session_ticket
2024-11-10 13:54:55 -05:00
woolion bebf063872 steam: fix get_session_ticket 2024-11-10 19:36:15 +01:00
Andrej Klychin 8c759f7760 Merge pull request #5895 from Ayowel/doc/pydeps
doc: fix python dependencies list for copy/paste
2024-11-10 18:34:20 +02:00
Ayowel 7fd921b1a0 doc: fix python dependencies list for copy/paste 2024-11-10 16:50:08 +01:00
Dipesh Aggarwal 54fb00100e Fix the wrong keymap for accessibility 2024-11-09 22:38:23 -05:00
Dipesh Aggarwal b87b105387 Replace balloon with 'bubble` to represent a valid type for callbacks 2024-11-09 22:38:23 -05:00
Tom Rothamel bf142b2ba8 doc: Changelog whitespace changes. 2024-11-09 22:38:18 -05:00
Tom Rothamel 13285fe264 doc: Changelog. 2024-11-09 22:37:48 -05:00
Tom Rothamel a9159c5f71 Only skip the BOM, not other characters. 2024-11-09 22:37:27 -05:00
Tom Rothamel c5cdd0038e Merge pull request #5891 from DipeshAggarwal/patch-2
Fix the wrong keymap for accessibility
2024-11-08 21:18:51 -05:00
Tom Rothamel 8bac98c29a Merge pull request #5892 from DipeshAggarwal/patch-3
Replace `balloon` with 'bubble` to represent a valid type for callbacks
2024-11-08 21:18:37 -05:00
Dipesh Aggarwal 421d8cc37d Replace balloon with 'bubble` to represent a valid type for callbacks 2024-11-09 07:08:01 +05:30
Dipesh Aggarwal c097434036 Fix the wrong keymap for accessibility 2024-11-09 06:59:12 +05:30
Dipesh Aggarwal e3cc4be1b8 Fix UnboundLocalError: local variable 'keyboard_mode' referenced before assignment
(cherry picked from commit 15f498516a)
2024-11-09 03:31:10 +04:00
Andrej Klychin 2137eab4cb Merge pull request #5890 from DipeshAggarwal/patch-1
Fix UnboundLocalError: local variable 'keyboard_mode' referenced befo…
2024-11-09 01:21:29 +02:00
Dipesh Aggarwal 15f498516a Fix UnboundLocalError: local variable 'keyboard_mode' referenced before assignment 2024-11-09 01:20:03 +05:30
Tom Rothamel b5711f7e11 doc: Changelog whitespace changes. 2024-11-08 01:07:11 -05:00
Tom Rothamel 8f2649e3a7 doc: Changelog. 2024-11-07 22:29:47 -05:00
Tom Rothamel ab42c0f6e1 Only skip the BOM, not other characters. 2024-11-07 22:02:23 -05:00
Tom Rothamel 01eacd2932 Avoid forcing synchro_start when playing a movie.
Fixes #5887.

This may cause mask_channel to get a bit more out of sync, but it's
already so-so, and side_mask is the superior alternative.
2024-11-07 21:55:08 -05:00
Tom Rothamel c25f22fe4f doc: Credits. 2024-11-07 21:54:55 -05:00
Tom Rothamel e1ca5b3d8a Avoid forcing synchro_start when playing a movie.
Fixes #5887.

This may cause mask_channel to get a bit more out of sync, but it's
already so-so, and side_mask is the superior alternative.
2024-11-07 01:26:32 -05:00
Tom Rothamel 03b6addae0 doc: Credits. 2024-11-07 01:03:49 -05:00
Tom Rothamel bc31530843 doc: Credits. 2024-11-06 20:37:35 -05:00
Tom Rothamel ad49dcae3c Merge branch 'fix' 2024-11-05 01:55:32 -05:00
Tom Rothamel fe3b800cab Change Model to create meshes as documented.
Fixes #5692.
2024-11-05 00:36:12 -05:00
Tom Rothamel ccde74bdb8 doc: Fix config.skip_sounds.
Fixes #5883.
2024-11-04 08:47:28 -05:00
Ren'Py Bot 1817191f8f Merge branch 'fix' 2024-11-04 04:30:28 -05:00
Tom Rothamel ab6f469811 textshader: Consider all glyphs when assigning coordinates.
Fixes #5884.
2024-11-03 23:22:46 -05:00
Tom Rothamel f92b70d38c Protect against errors with disconnected audio sources.
Fixes #5882, with low confidence.
2024-11-03 21:14:34 -05:00
Andy_kl e89338342a Skip BOM in ren_py_to_rpy so RENPY can start at first line. 2024-11-04 02:29:14 +04:00
Ren'Py Bot 60db4ee41a Merge branch 'fix' 2024-11-03 04:30:28 -05:00
Tom Rothamel 62ca262aec Fix tyop. 2024-11-02 15:49:52 -04:00
Tom Rothamel eb5a84d420 Remove unnecessary locking in im.Cache.
This is the most likely cause of the performance issues in #5295.
Now, the lock should be held for brief periods of time.
2024-11-02 15:48:08 -04:00
Tom Rothamel 3280bcc5ff Clarify where gui.unscrollable works.
Fixes #5218.
2024-11-02 15:06:05 -04:00
Ren'Py Bot 2155bb02ae Merge branch 'fix' 2024-11-02 04:30:28 -04:00
Tom Rothamel 5c5f72659c Restore old behavior of screenshot.
When render_tree is None, screenshot takes the old contents of
the framebuffer. Which isn't great, but since it happens when
at the main menu, isn't a huge deal.

Fixes #5879.
2024-11-01 22:47:15 -04:00
Tom Rothamel bc6e2a63d0 Only set the tag if it's not explicitly set. 2024-10-31 22:07:10 -04:00
Ren'Py Bot 204ca35321 Merge branch 'fix' 2024-10-31 04:30:28 -04:00
Tom Rothamel b9789ae25c Fix icon font in the director.
Fixes #5876.
2024-10-31 01:29:21 -04:00
Tom Rothamel 899307d791 Make show expression similar to show.
In the most common string case, it will now use the tag from
the string, rather than the expression.

Per #5877.
2024-10-31 01:16:33 -04:00
Tom Rothamel 0bf4ab51d6 Make show expression use a unique tag.
This prevents tags from conflicting by mistake. Discussed at #5877.
2024-10-30 22:52:37 -04:00
Tom Rothamel 88d3870d5c Merge branch 'fix' 2024-10-30 22:31:14 -04:00
Tom Rothamel db7d998c38 doc: Sponsors. 2024-10-30 22:31:07 -04:00
Tom Rothamel 58e56cff88 Quote attributes in the image attributes screen.
Per #5877.
2024-10-30 22:30:28 -04:00
Ren'Py Bot b1623451e8 Merge branch 'fix' 2024-10-30 04:30:30 -04:00
Tom Rothamel 4b532ac11e Produce a sensible error when monologue mode is used in a menu.
Fixes #5872.
2024-10-29 21:40:41 -04:00
Tom Rothamel a7f16eee3f Remove the "always" steam deck keyboard mode. 2024-10-29 21:13:53 -04:00
Tom Rothamel af7314a8a1 Merge pull request #5875 from AbdulGoodLooks/patch-5
Fix typo in changelog.rst
2024-10-29 18:04:56 -04:00
Abdul a8567d0811 Fix typo in changelog.rst 2024-10-29 20:59:27 +00:00
Tom Rothamel 74a6660ae1 Merge branch 'fix' 2024-10-28 01:30:51 -04:00
Tom Rothamel fff2558083 Revert "Fix an issue that could stop audio rollback from working."
This reverts commit 14ced3377a.
2024-10-28 01:03:30 -04:00
Tom Rothamel 944b7d0e9c Copy the music dictionary when it changes.
Fixes #5868 while continuing to fix #5802.
2024-10-28 00:51:38 -04:00
Tom Rothamel 797e37678a Revert "Fix an issue that could stop audio rollback from working."
This reverts commit 14ced3377a.
2024-10-28 00:30:33 -04:00
Tom Rothamel c4528cf6ad Improve selection of what Python versions to include.
Fixes #5866.
2024-10-27 19:09:07 -04:00
Ren'Py Bot 1417e58963 Merge branch 'fix' 2024-10-27 04:30:30 -04:00
Tom Rothamel 7022001dbe Keep high-rate drawing for 12 frames (.2s).
This ensures that a static image is pushed through any sort of
compositor that requires constant flipping.

Fixes #5867.
2024-10-27 01:38:58 -04:00
Tom Rothamel 0ab9444676 hbfont: Underlines and strikethroughs should not include glyph.x_offset.
Fixes #5861.
2024-10-26 19:19:17 -04:00
Ren'Py Bot 65440785e5 Merge branch 'fix' 2024-10-25 01:11:50 -04:00
Tom Rothamel 0795565e07 Quit out of pygame.display when the presplash ends.
This resets the IME system, which is needed to fix #5801.
2024-10-25 00:51:30 -04:00
Tom Rothamel 3cf31edae2 doc: Fix mistake.
Fixes #5863.
2024-10-24 21:45:59 -04:00
Craig de Stigter 8b356090d9 Fix an obvious undefined variable error 2024-10-24 21:28:40 -04:00
Tom Rothamel c8a2c7036f Merge pull request #5864 from craigds/fix-obvious-undefined-error
Fix an obvious undefined variable error
2024-10-24 20:58:52 -04:00
Craig de Stigter c512985741 Fix an obvious undefined variable error 2024-10-25 11:57:58 +13:00
Ren'Py Bot a2d6911b4e Merge branch 'fix' 2024-10-24 04:30:30 -04:00
Tom Rothamel 9f3be6e604 Only synchro start movie channels when explicitly requested.
Per #5914.
2024-10-23 21:28:48 -04:00
Ren'Py Bot d59029d66c Merge branch 'fix' 2024-10-23 04:30:30 -04:00
Tom Rothamel 0e6522f867 Use a different approach to #5854.
The focus system may not always use the same displayable, so .focus
is a good idea. Instead, change the prefix each time it's asked for.
2024-10-23 01:50:46 -04:00
Tom Rothamel 3cbe6fa1d8 Avoid re-focusing a displayable that has replaced another.
Fixes #5854.
2024-10-22 23:42:02 -04:00
Ren'Py Bot a9ecae1a59 Merge branch 'fix' 2024-10-22 04:30:30 -04:00
Ayowel bb5588f182 Do not needlessly track files in late_base_patterns 2024-10-21 23:38:34 -04:00
Ayowel 45a6a08559 Only ignore .rpe files if they are not explicitly tracked 2024-10-21 23:38:23 -04:00
Tom Rothamel 3bf1b78250 Merge pull request #5855 from Ayowel/patch-1
Only ignore .rpe files if they are not explicitly tracked
2024-10-21 22:26:19 -04:00
Ayowel 2eda0dc2e9 Do not needlessly track files in late_base_patterns 2024-10-21 22:10:39 +02:00
Ayowel 7084ee4b46 Only ignore .rpe files if they are not explicitly tracked 2024-10-21 20:44:56 +02:00
Ren'Py Bot 93d760c9fa Merge branch 'fix' 2024-10-21 04:30:30 -04:00
Tom Rothamel e1cb42f253 gl2: Round coordinates during pixel_perfect.
Rounding errors could cause problems when performing the pixel
perfect correction, and the rounding errors could be different
in normal rendering and render-to-texture.

By rounding first, we eliminate these problems.

Fixes #5844.
2024-10-21 00:53:08 -04:00
Tom Rothamel dde19b8716 gl2: Fix gl_anisotropic
Which used the incorrect field.

Fixes #5851.
2024-10-20 21:57:18 -04:00
Ren'Py Bot 01f74075b8 Merge branch 'fix' 2024-10-20 04:30:30 -04:00
Tom Rothamel 906788fe88 video: Avoid stopping movies if both current and old have _play.
To make Ren'Py cooperate better with games that run the movies
themselves.

Per #5814.
2024-10-19 16:35:26 -04:00
Tom Rothamel 69b019f03c Use last_channel_movie to stop movies, since it exists. 2024-10-19 16:30:11 -04:00
Ren'Py Bot 51f523b3c3 Merge branch 'fix' 2024-10-19 04:30:30 -04:00
Tom Rothamel 9de1c93ef9 Document that transforms shouldn't be applied to a Drag directly.
Per #5847.
2024-10-19 01:19:06 -04:00
Tom Rothamel faf1e15710 Document that renpy.emscripten is the emscripten module.
Closes #5848.
2024-10-19 00:34:50 -04:00
Ren'Py Bot ef4c0bd1d9 Merge branch 'fix' 2024-10-18 04:30:30 -04:00
Tom Rothamel 339300d2a0 Report non-dynamic images that reference non-existent images.
Fixes #5771.
2024-10-18 01:35:40 -04:00
Tom Rothamel 51f6b0d756 Add referrer support to installer.download. 2024-10-18 01:35:40 -04:00
Tom Rothamel c4f478160b Add referrer support to installer.download. 2024-10-17 23:21:01 -04:00
Tom Rothamel f547ea3ed1 Restart looping movies during rollback.
Fixes #5564.
2024-10-17 22:31:30 -04:00
Tom Rothamel 054535f0c8 Restart looping movies during rollback.
Fixes #5564.
2024-10-16 23:19:10 -04:00
Ren'Py Bot 8911825d46 Merge branch 'fix' 2024-10-15 04:30:30 -04:00
Tom Rothamel 16b9c2be67 Use insets when evaluating keyboard focus conditions.
Fixes #5831.
2024-10-15 01:05:44 -04:00
Ren'Py Bot ddc3f67539 Merge branch 'fix' 2024-10-14 04:30:30 -04:00
Tom Rothamel 4a591d552b Fix a rounding issue that stopped bar_invert from working.
Fixes #5843.
2024-10-14 00:43:15 -04:00
Tom Rothamel 99915a3ed3 Merge pull request #5772 from the66F95/replays-seen-events
no seen labels, images, audio in replays
2024-10-13 19:54:07 -04:00
Tom Rothamel 576a1138d3 Changelog last. 2024-10-13 19:35:41 -04:00
avonder 50ef339f16 android: Install-time asset pack support. (#5837)
Enable reading from APK-based asset packs
2024-10-13 19:32:49 -04:00
avonder 21774019a7 android: Install-time asset pack support. (#5837)
Enable reading from APK-based asset packs
2024-10-13 19:32:10 -04:00
Ren'Py Bot 33fbe01388 Merge branch 'fix' 2024-10-13 04:30:30 -04:00
Tom Rothamel 0385bbcb9b Re-render displayables after box_wrap.
After wrap, a displayable may be offered a different size, and
so the render needs to happen again.
2024-10-12 23:52:07 -04:00
Tom Rothamel 82dd5968e3 Merge pull request #5838 from racinmat/readme-update
docs: restrict the cython version and add setuptools
2024-10-12 10:06:15 -04:00
Matěj Račinský 43c6f83aff docs: restrict the cython version and add setuptools 2024-10-12 14:25:29 +02:00
Tom Rothamel e6fc6e3c26 Scale image fonts using nearest neighbor.
When config.nearest_neighbor is True.

Fixes #5830.
2024-10-11 21:53:13 -04:00
the66F95 7fe14c09c9 Update persistentexports.py 2024-10-11 09:12:39 +02:00
the66F95 588824cf3f Update config.py 2024-10-11 09:11:58 +02:00
Tom Rothamel ddf7b35160 Merge pull request #5687 from onitake/patch/ffmpeg-7
Replace deprecated APIs when compiling against newer FFmpeg
2024-10-10 23:15:05 -04:00
Tom Rothamel d85879b1fd Script to find recursive inner functions. 2024-10-08 22:53:24 -04:00
Tom Rothamel adfbb4970b Remove recursive inner functions in transform and lexer. 2024-10-08 09:43:19 -04:00
Ren'Py Bot bbf2cff58f Merge branch 'fix' 2024-10-08 04:30:30 -04:00
Tom Rothamel a1a0b78cb4 Remove recursive inner functions.
Per #5832.
2024-10-08 01:29:56 -04:00
Tom Rothamel 4cd14e18b5 Factor out check_spline_types.
Recursive inner functions create reference loops that need to be
GC-ed, so eliminating such can reduce GC pauses.

Per #5832.
2024-10-07 22:52:08 -04:00
Tom Rothamel 20a5d6cd69 Factor out check_spline_types.
Recursive inner functions create reference loops that need to be
GC-ed, so eliminating such can reduce GC pauses.

Per #5832.
2024-10-07 22:33:42 -04:00
Ren'Py Bot e70011862a Merge branch 'fix' 2024-10-07 04:30:27 -04:00
Tom Rothamel 34a1f57e50 Make all default_focus activations explicit.
So the hovered handler runs.

Fixes #5794.
2024-10-07 02:06:43 -04:00
Tom Rothamel 5245fbb38e Consider controller events inputs before being mapped.
Fixes #5780.
2024-10-06 23:16:54 -04:00
Ren'Py Bot 916c6cc9e9 Merge branch 'fix' 2024-10-06 04:30:30 -04:00
Tom Rothamel 937c91f314 Proactively remove ongoing transitions.
Fixes #5827.
2024-10-06 01:39:47 -04:00
Ren'Py Bot f1e2d074c6 Merge branch 'fix' 2024-10-05 04:30:30 -04:00
Tom Rothamel 6e83ae9bd1 Display if transform are applied to a layer.
Fixes #5822.
2024-10-05 01:01:43 -04:00
Tom Rothamel d3506085c8 Add an internal api to determine if transforms are applied to a layer. 2024-10-05 00:59:40 -04:00
Tom Rothamel d90f1cdc30 Another fix to grabs and viewports. 2024-10-04 21:48:41 -04:00
Ren'Py Bot 02d7a3305a Merge branch 'fix' 2024-10-04 04:30:30 -04:00
Tom Rothamel 8c82667ae1 Disable pixel-perfect for Frame.
It only would work in corners, and wasn't working on the other sections
except at 1:1. So disable it.

Fixes #5793.
2024-10-04 00:28:32 -04:00
Tom Rothamel 3085c15caf Add a method in render.pyx to find GL properties. 2024-10-03 23:37:14 -04:00
Tom Rothamel 2e37df7103 Prevent crash when Live2D.used_nonexclusive is None.
Fixes #5816.
2024-10-03 21:46:32 -04:00
Tom Rothamel 9a75b6628b Another fix to viewport dragging.
Per #5776.

Co-Authored-by: the66F95 <54831834+the66F95@users.noreply.github.com>
2024-10-03 21:37:34 -04:00
Ren'Py Bot cd590d78eb Merge branch 'fix' 2024-10-03 04:30:30 -04:00
Tom Rothamel 405d8d4399 Allow drag to begin inside a button.
Fixes #5776, comment 2383488254.
2024-10-03 00:51:19 -04:00
Ren'Py Bot 0ed2c16ee9 Merge branch 'fix' 2024-10-02 04:30:30 -04:00
Mark 56dda5590b doc: Fix code block in cds.rst 2024-10-01 22:48:48 -04:00
Tom Rothamel fc429eb984 Merge pull request #5748 from remarkablemark/patch-1
doc: Fix code block in cds.rst
2024-10-01 22:46:57 -04:00
Tom Rothamel 623c5f6d1f Merge pull request #5811 from sunrisesarsaparilla/master
remove unused code
2024-10-01 22:33:33 -04:00
Ren'Py Bot b430ca2243 Merge branch 'fix' 2024-09-30 04:30:30 -04:00
Tom Rothamel 86046383a8 Improve how draggable viewports and drags interact.
After these changes, the innermost draggable should take precedence,
rather than what's focused.

Fixes #5776.
2024-09-29 22:16:42 -04:00
Ren'Py Bot 8e21bcbc00 Merge branch 'fix' 2024-09-29 04:30:30 -04:00
Tom Rothamel f907fe119a Changes to audio filters take place immediately after reload.
Fixes #5802.
2024-09-29 02:01:52 -04:00
Tom Rothamel 14ced3377a Fix an issue that could stop audio rollback from working.
The failure would take place in the case where a channel is changed
between roll-forward and and an interaction, but the sound playing
would not change (ie. a queue operation).
2024-09-29 01:47:28 -04:00
Tom Rothamel ad690d8a16 audiofilter: Make the time the filter changes well defined. 2024-09-28 23:47:12 -04:00
Tom Rothamel 31ff6d3e95 py311: Remove now-obsolete AST properties. 2024-09-28 01:36:39 -04:00
Tom Rothamel 6aadfe4d15 py311: Improve analysis of the match statement.
This doesn't bother to try to analyze it, but it will mark the
correct variables as non-constant.
2024-09-28 01:29:38 -04:00
Tom Rothamel 435fec2be6 py311: Wrap the match statement. 2024-09-27 23:53:47 -04:00
Tom Rothamel 6b507d5a57 Merge branch 'fix' 2024-09-27 18:22:25 -04:00
Tom Rothamel 1c830a0be1 Audited #5797 2024-09-27 18:21:28 -04:00
sunrisesarsaparilla 25b0068b1d remove duplicate code line 2024-09-27 01:37:17 -07:00
Ren'Py Bot b1a3171a40 Merge branch 'fix' 2024-09-26 04:30:30 -04:00
sunrisesarsaparilla 30af1dfb70 remove unused code 2024-09-25 22:50:32 -07:00
Tom Rothamel ee89717b47 linvol: Remove compatibility.
This was compat code that has served it's purpose - players can still
adjust the volumes as required.

Fixes #5806.
2024-09-26 01:09:13 -04:00
Tom Rothamel 6cfef151da Write <package>.update.json in a temporary directory, only copy if needed.
Fixes #5798.
2024-09-25 20:18:42 -04:00
Tom Rothamel fca89d813e Merge pull request #5809 from sunrisesarsaparilla/fix-parallel-build-bug-that-adds-one-second
fix bug that adds 1 second to each successive parallel build
2024-09-25 09:53:40 -04:00
sunrisesarsaparilla 9050a9d5a5 fix bug that adds 1 second to each successive parallel build 2024-09-25 06:26:53 -07:00
Tom Rothamel d257b9dc70 doc: #5756. 2024-09-25 00:51:26 -04:00
Tom Rothamel 89c79e55fe Merge pull request #5756 from sunrisesarsaparilla/customize-renpy-launcher-file-shorcuts
allow 'Open Directory' and 'Edit File' customization on renpy launch screen #2467
2024-09-24 21:17:49 -04:00
Gouvernathor d7f194072e fix unbound exception 2024-09-25 01:40:55 +02:00
Tom Rothamel 60ca4cd5ae py3: Always use the Python 3 compilation path. 2024-09-23 23:10:17 -04:00
Gouvernathor 20c1f572d7 Revert use of unpicklable MappingProxyType and wrong import order
fixes #5797
2024-09-20 20:25:50 +02:00
Tom Rothamel a73e20288c Merge pull request #5783 from renpy/py3-signature
Modernize the parameters module
2024-09-19 20:22:21 -04:00
Ren'Py Bot 16fe7290fa Merge branch 'fix' 2024-09-19 04:30:30 -04:00
Tom Rothamel 8d2a6d2596 Allow textshaders to work with glyphs at negative offsets.
Fixes #5787.
2024-09-19 00:20:57 -04:00
Tom Rothamel f225453ff1 Only store transform events on Displayables that use or produce them.
This prevents an issue from occurring when a non-duplicatable
displayable is the child of multiple other displayables, which
could set transform_event multiple times.

As it doesn't respond to the event, and doesn't produce it, there's
no reason for the event to be stored. So we don't.

Fixes #5788
2024-09-18 22:27:12 -04:00
Ren'Py Bot ff04b3ea56 Merge branch 'fix' 2024-09-18 04:30:30 -04:00
Tom Rothamel 209eb580cf web: Prevent access to files and directories starting with "." 2024-09-17 21:24:01 -04:00
Tom Rothamel 3103cff7f7 Restore RENPY_NO_STEAM support. 2024-09-17 20:34:10 -04:00
Ren'Py Bot 903e971395 Merge branch 'fix' 2024-09-17 04:30:30 -04:00
brimbel 138884b545 Fix example of shader text tag
jitter text shader does not have a speed uniform
2024-09-17 00:46:19 -04:00
Tom Rothamel 45e942de05 Merge pull request #5790 from brimbel/patch-1
doc: Fix example of shader text tag
2024-09-17 00:40:04 -04:00
brimbel 24a699ba12 Fix example of shader text tag
jitter text shader does not have a speed uniform
2024-09-16 15:50:07 -07:00
Ren'Py Bot f5ed3d7947 Merge branch 'fix' 2024-09-16 04:30:30 -04:00
Tom Rothamel 1489a4e748 text: Add pseudo-glyphs to the start and end of outlined lines.
These are shown to ensure that all of the outlines are shown, even
if there is no character in that space.

Fixes #5778.
2024-09-16 01:48:00 -04:00
Tom Rothamel 1a7fb9c008 text: Ensure that there is no space between textshader glyphs. 2024-09-15 21:50:26 -04:00
Ren'Py Bot c761ba4c75 Merge branch 'fix' 2024-09-15 04:30:30 -04:00
Tom Rothamel 79fbc7718e Avoid distributing renpy.gl. 2024-09-14 16:02:35 -04:00
Tom Rothamel 7d4f7d17f9 Doc: Requirements changes. 2024-09-14 16:00:24 -04:00
Tom Rothamel 439bcf73f3 Do not include armv7l builds. 2024-09-14 15:52:01 -04:00
Tom Rothamel 6506a3a45e Fix an issue with with sdist, versions, and pygame_sdl2. 2024-09-14 13:15:06 -04:00
Gouvernathor dc81a5edeb Simplify defaulted fields 2024-09-14 18:08:39 +02:00
Gouvernathor 331a4f0211 Add from clauses to raises 2024-09-14 16:39:36 +02:00
Gouvernathor 69f1a2bb0b Optimize empty arguments parsing 2024-09-14 16:33:42 +02:00
Gouvernathor cd90dfa789 Clamp down ArgumentInfo fields
the mutable arguments are not converted, but this is better
2024-09-14 16:32:47 +02:00
Gouvernathor d20d9f2aa7 Use emptymap 2024-09-14 16:30:35 +02:00
Gouvernathor fb1d40db3c Use naturally ordered dict
mappingproxy requires an additional pickling handle which would introduce yet another switch
2024-09-14 16:29:23 +02:00
Gouvernathor 4f835f1250 Change Parameter's parameter rules 2024-09-14 16:27:14 +02:00
Tom Rothamel 0843e46e91 Fix an issue with with sdist, versions, and pygame_sdl2. 2024-09-14 00:19:09 -04:00
Tom Rothamel a0963c18ee Call install_headers.py. 2024-09-13 22:22:51 -04:00
Ren'Py Bot f0dfe18bbf Merge branch 'fix' 2024-09-12 04:30:30 -04:00
Tom Rothamel 9c6cc41ec3 doc: Windows 10 required. 2024-09-12 01:27:55 -04:00
Tom Rothamel 41e13911e3 It's no longer requires to install_headers for pygame_sdl2. 2024-09-12 01:12:15 -04:00
Tom Rothamel 35f6794db2 Remove old find_module method.
As it's not needed in recent Pythons.
2024-09-12 00:47:58 -04:00
Tom Rothamel 699c2a1679 Fix deprecation warning. 2024-09-12 00:46:58 -04:00
Tom Rothamel cad9dc37c2 Merge pull request #5686 from onitake/patch/absolute-launcher-imports
Support find_spec in custom module loader
2024-09-12 00:45:51 -04:00
Tom Rothamel deb959a1e7 Change some of the build process to support Python 3.12. 2024-09-12 00:44:29 -04:00
levicratic 3913ca9c0c Fix size tag preventing outer tags from closing 2024-09-11 21:36:45 -04:00
Tom Rothamel 93c4c4e8df Merge pull request #5775 from levicratic/remove-second-push-from-size-segment
Fix size tag preventing outer tags from closing
2024-09-11 21:32:40 -04:00
Ren'Py Bot c634ff91d2 Merge branch 'fix' 2024-09-10 04:30:30 -04:00
Tom Rothamel 4e03602bd6 Bump versions. 2024-09-10 00:43:15 -04:00
levicratic 5b0f4cf5a7 Fix size tag preventing outer tags from closing 2024-09-09 13:51:27 -04:00
Ren'Py Bot ddd0896840 Merge branch 'fix' 2024-09-09 04:30:30 -04:00
the66F95 a175edde26 no seen labels, images, audio in replays
i don't think labels, images and audio files should be marked as seen in replays. basically all other variables are local to that context.
for instance developer would be able now to temporarily unlock content of a replay gallery for higher tier patrons without actually changing the seen status of a label.
to preserve the old behavior one can set the new config var to True.
2024-09-09 10:21:21 +02:00
Tom Rothamel a2e08864c4 doc: Changelog. 2024-09-09 01:09:54 -04:00
Tom Rothamel 14563943ed Do not include keys in build. 2024-09-09 00:48:57 -04:00
Tom Rothamel 4ebedb6a20 py2: Remove PY2 conditions from launcher. 2024-09-08 19:50:31 -04:00
Tom Rothamel d3c827fc55 py2: Remove support for PY2 in the compat module.
The compat module still needs to exist to keep support for older
games and saves, but a lot of it went away.
2024-09-08 19:40:13 -04:00
Tom Rothamel fc9744192d py2: Remove things conditioned on PY2. 2024-09-08 19:23:25 -04:00
Tom Rothamel 72602ab6ab py2: Remove py2analysis.
As part of the process of dropping support for Python 2.
2024-09-08 17:07:15 -04:00
Ren'Py Bot b78f1d1b41 Merge branch 'fix' 2024-09-08 04:30:30 -04:00
Tom Rothamel 5e91783620 Bump fix version. 2024-09-08 00:04:52 -04:00
Ren'Py Bot e8bbfde5b1 Merge branch 'fix' 2024-09-07 04:30:30 -04:00
Tom Rothamel cde01cf27b Do not allow image keywords to occur in image simple expressions. 2024-09-06 22:12:11 -04:00
Ren'Py Bot 79bda8a568 Merge branch 'fix' 2024-09-06 04:30:30 -04:00
Tom Rothamel 1fefbeba52 Remove checks for config.gl2. 2024-09-06 00:40:09 -04:00
Tom Rothamel 1336b5cfb8 Remove the gl, gles, and angle renderers. 2024-09-06 00:34:14 -04:00
the66F95 6d0b674c30 Update render.pyx
still debug output present.
2024-09-05 13:20:30 -04:00
Tom Rothamel 935a25490a Merge pull request #5766 from the66F95/render.pyx-debug
Update render.pyx
2024-09-05 13:18:04 -04:00
the66F95 5f73d6f1b2 Update render.pyx
still debug output present.
2024-09-05 19:09:43 +02:00
Tom Rothamel e42c774cd4 doc: Fix changelog. 2024-09-05 09:03:21 -04:00
Ren'Py Bot 595e4d45bd Merge branch 'fix' 2024-09-05 04:30:30 -04:00
Tom Rothamel b46eabc2af Update changelog. 2024-09-04 21:43:43 -04:00
Ren'Py Bot c42667b197 Merge branch 'fix' 2024-09-04 04:30:30 -04:00
Tom Rothamel 2c6e08247f Fix invoking local shaders in shader tags.
Fixes #5765.
2024-09-04 00:45:50 -04:00
Tom Rothamel 32ab62f5dd Improve the audio init error message.
Per #5763.
2024-09-03 23:38:19 -04:00
Tom Rothamel 003ac717d8 Improve AudioData.
* Allow it to take <...> properties.
* Document that it works with video as well.
2024-09-03 23:23:33 -04:00
Tom Rothamel e4089d2dce text: Adjust large textshader text for texture borders. 2024-09-03 22:16:18 -04:00
Tom Rothamel 4076bc8ae9 gl2: Store the borders that were used to create a texture mesh. 2024-09-03 22:16:07 -04:00
Ren'Py Bot 00750cb5d5 Merge branch 'fix' 2024-09-03 04:30:30 -04:00
Tom Rothamel 13831d4c39 text: Fixes > 4k textshaders. 2024-09-03 00:45:03 -04:00
Tom Rothamel 33552beb80 text: Close-to-working support for text textures above 4k. 2024-09-02 23:37:18 -04:00
Tom Rothamel 0da702db49 Add a function to offset textures in a mesh. 2024-09-02 22:10:51 -04:00
Tom Rothamel 9d8329c766 Add renpy.stop_skipping.
Fixes #5743.
2024-09-02 19:38:13 -04:00
Tom Rothamel efc671e647 Add Gallery.image(movie=True).
This fixes #5758 by providing a way to keep the movie from
playing through the transition.
2024-09-02 19:09:05 -04:00
Ren'Py Bot 5f42c6bff9 Merge branch 'fix' 2024-09-02 04:30:30 -04:00
Tom Rothamel b2456f5a16 Properly combine transform-uniforms with model-uniforms.
Per #5759
2024-09-01 21:00:13 -04:00
Tom Rothamel 2ad7cebd7a Improvements to allow large amounts of text and meshes.
Fixes #5760.
2024-09-01 15:57:32 -04:00
Ren'Py Bot e6e11dab9f Merge branch 'fix' 2024-09-01 04:30:30 -04:00
Tom Rothamel 6351d60213 Merge pull request #5757 from sunrisesarsaparilla/indent-project.json
make project.json easier for humans to read
2024-08-31 23:55:26 -04:00
Sunrise Sarsaparilla 2928e5495c make project.json easier for humans to read 2024-08-31 20:32:52 -07:00
Andy_kl 72a6d5d347 Make config.interface_layer an early config.variable.
Without it, developer need to set it with `-501` priority to be
lower than `Screen.define`
2024-09-01 04:37:47 +04:00
Sunrise Sarsaparilla 0b5a35a208 allow 'Open Directory' and 'Edit File' customization on renpy launch screen 2024-08-31 14:58:01 -07:00
Ren'Py Bot ffd5eddaf9 Merge branch 'fix' 2024-08-31 04:30:30 -04:00
Tom Rothamel c34b2da03b Add multiple to the character callback.
Fixes #5750.
2024-08-31 00:12:41 -04:00
Tom Rothamel bd943f16a1 Remove debug raise. 2024-08-30 09:31:52 -04:00
Ren'Py Bot 27b4c46013 Merge branch 'fix' 2024-08-30 04:30:30 -04:00
Tom Rothamel 26046d3b15 Only consider input events for default focus.
Fixes #5753.
2024-08-30 00:32:45 -04:00
Tom Rothamel 9ebe782866 Fix subsurfacing of displayables with negative offset and clipping.
Fixes #5752.
2024-08-30 00:19:15 -04:00
Tom Rothamel 327f6a32d5 Route all url-opening through renpy.open_url.
And on PC, shut down fullscreen when opening a web browser.

Fixes #5747.
2024-08-29 09:34:30 -04:00
Ren'Py Bot c8da44781d Merge branch 'fix' 2024-08-29 04:30:30 -04:00
Tom Rothamel a78af4ad86 Remove the Beta flag on the web port. 2024-08-29 00:11:09 -04:00
Mark acf2347930 doc: Fix code block in cds.rst 2024-08-28 22:54:52 -04:00
Tom Rothamel 495d980277 Check in the changes vscode settings. 2024-08-28 20:51:48 -04:00
Tom Rothamel 07ab2c9e52 lint: Do not check non-files as files. 2024-08-28 20:38:12 -04:00
Tom Rothamel c48e102658 Document config.font_transforms.
Fixes #5746.
2024-08-28 19:17:30 -04:00
Ren'Py Bot a40d302500 Merge branch 'fix' 2024-08-28 04:30:30 -04:00
Tom Rothamel 53f2d81f88 Remove debugging raise. 2024-08-28 00:54:14 -04:00
Tom Rothamel 14ed5f4f76 Make TransformState.get work with all properties.
Not just simple ones.

Fixes #5669.
2024-08-28 00:41:23 -04:00
Tom Rothamel a53b06834d Allow negative offsets to be subsurfaced.
This stores the area of the crop box, and lets a displayable go
outside its parents so long as it goes outside the crop box.

(Not 100% sure why this is working without changes when the
displayable is out to the right, but so far so good.)
2024-08-28 00:04:08 -04:00
Tom Rothamel e5d8581a7e render: Fix names compute_subline. 2024-08-27 21:35:02 -04:00
Mark 325a349092 doc: Fix example in dialogue.rst (#5736) 2024-08-27 16:53:23 -04:00
veydzh3r bb0a201e2a Update ukrainian (#5741)
* Update common.rpy

* Update developer.rpy

* Update gui.rpy

* Update launcher.rpy

* Update options.rpy

* Update screens.rpy

* Update script.rpym
2024-08-27 16:53:15 -04:00
Mark 8ad44080ae doc: Fix example in dialogue.rst (#5736) 2024-08-27 16:52:01 -04:00
veydzh3r c41b740ae6 Update ukrainian (#5741)
* Update common.rpy

* Update developer.rpy

* Update gui.rpy

* Update launcher.rpy

* Update options.rpy

* Update screens.rpy

* Update script.rpym
2024-08-27 16:51:34 -04:00
Ren'Py Bot 67e508c979 Merge branch 'fix' 2024-08-27 04:30:30 -04:00
Tom Rothamel ba48755589 Use the correct when rendering a TextMeshDisplayable.
Fixes #5737.
2024-08-26 20:57:18 -04:00
Tom Rothamel d6cf8b37ab Ensure the show_done callback is always called.
And re-document it.
2024-08-26 17:54:39 -04:00
Ren'Py Bot a7e9d39c1d Merge branch 'fix' 2024-08-26 04:30:30 -04:00
Kassy 0e0ae03baa [Web] Only call syncfs once from MultiLocation functions (#5733)
* Do not call syncfs() twice in save_persistent()

With Ren'Py default config, MultiLocation.save_persistent() will call
save_persistent() on 2 different instances of FileLocation. They both
call synfc(), so the warning message "2 FS.syncfs operations in flight
at once, probably just doing extra work" shows up. This commit prevents
that.

* Create and use a context for syncfs pause

* Only call syncfs once from MultiLocation functions

This should handle all the functions of MultiLocation that call
functions of FileLocation that call syncfs().
2024-08-25 23:18:31 -04:00
Kassy 921ddb07f7 [Web] Only call syncfs once from MultiLocation functions (#5733)
* Do not call syncfs() twice in save_persistent()

With Ren'Py default config, MultiLocation.save_persistent() will call
save_persistent() on 2 different instances of FileLocation. They both
call synfc(), so the warning message "2 FS.syncfs operations in flight
at once, probably just doing extra work" shows up. This commit prevents
that.

* Create and use a context for syncfs pause

* Only call syncfs once from MultiLocation functions

This should handle all the functions of MultiLocation that call
functions of FileLocation that call syncfs().
2024-08-25 23:06:10 -04:00
Tom Rothamel 5d59d32634 Skip action cancels skipping when skipping.
Fixes #5731.
2024-08-25 09:13:28 -04:00
Tom Rothamel 06366a8f8f web: Save persistent data during idle frames. 2024-08-25 08:59:55 -04:00
Ren'Py Bot b2b222f23e Merge branch 'fix' 2024-08-25 04:30:30 -04:00
Tom Rothamel be8f94443f py2: Fixes to add.py. 2024-08-24 23:56:11 -04:00
Tom Rothamel 61e1e025ce Make add.py understand multiple directories. 2024-08-24 23:50:59 -04:00
Tom Rothamel 3837df39be Update sponsor doc. 2024-08-24 23:24:46 -04:00
Tom Rothamel 850fc555e2 Bump fix versions. 2024-08-24 22:29:50 -04:00
Ren'Py Bot af202584db Merge branch 'fix' 2024-08-24 22:23:52 -04:00
Tom Rothamel dacbf5515e Synchro start only defaults to true on looping channels.
This is an attempt to prevent synchro start from delaying sound
effects while music is fading out.

Fixes #5730.
2024-08-24 21:53:07 -04:00
Tom Rothamel 147e46dbee Make game.zip configurable. 2024-08-24 21:29:39 -04:00
Tom Rothamel 1ce2f2b2ce doc: Back out. 2024-08-24 21:20:12 -04:00
Tom Rothamel 4242ff838e Revert "web: Rename game.zip to game.data."
This reverts commit f39d53cbac.
2024-08-24 21:19:25 -04:00
Tom Rothamel 4133172fab doc: Syncfs change. 2024-08-24 21:01:51 -04:00
Tom Rothamel f69768bad9 doc: Change from game.zip -> game.data. 2024-08-24 20:59:54 -04:00
Tom Rothamel f39d53cbac web: Rename game.zip to game.data.
This allows games to be hosted on web hosts that don't support
.zip files.

https://lemmasoft.renai.us/forums/viewtopic.php?t=68768
2024-08-24 20:55:50 -04:00
Ren'Py Bot d38dbc79b2 Merge branch 'fix' 2024-08-24 04:30:30 -04:00
Tom Rothamel c275244741 Similar fix for quicksaves. 2024-08-24 02:22:03 -04:00
Tom Rothamel 3b1161c2a4 Allow syncfs to be deferred.
And defer it during autosaves, to prevent warning messages.

Fixes #5725. Closes #5728.
2024-08-24 02:17:16 -04:00
Tom Rothamel 5573b3c2dc Re-document renpy.clear_keymap_cache.
It never was undocumented, but the docs weren't being
generated properly.
2024-08-23 23:44:26 -04:00
Abdul d6ca5e6992 Fix typos in changelog.rst 2024-08-23 21:53:04 -04:00
Andrej Klychin 15c6fdf8c1 Merge pull request #5726 from AbdulGoodLooks/patch-4
Fix typos in changelog.rst
2024-08-24 00:21:10 +02:00
Abdul 5e02e88ec0 Fix typos in changelog.rst 2024-08-23 15:52:51 +01:00
Tom Rothamel 3337049968 py2: Disable build process. 2024-08-23 00:56:10 -04:00
Tom Rothamel 2565157a5a Bump versions. 2024-08-23 00:56:10 -04:00
Tom Rothamel 952e29e737 Merge branch 'future' 2024-08-23 00:40:07 -04:00
Tom Rothamel 276e4b1808 doc: Credits. 2024-08-21 21:35:27 -04:00
Tom Rothamel 4f4dcc1927 Add u_text_max_depth.
This provides a way to find the bottom layer.
2024-08-21 20:57:19 -04:00
Tom Rothamel 0fecd1f70a Add a_text_descent.
To mirror a_text_ascent and provide full metrics for a font.
2024-08-21 20:04:24 -04:00
Tom Rothamel 46c80bfae6 Merge pull request #5724 from Veydzher/master
Update Ukrainian translation
2024-08-21 18:21:39 -04:00
Denys 5d5954b150 Update TRANSLATORS.rst 2024-08-21 21:38:12 +01:00
Denys 7e1643b734 Update screens.rpy
Added new translations.
2024-08-21 21:29:24 +01:00
Denys bf9d78ce17 Update launcher.rpy 2024-08-21 21:27:20 +01:00
Denys b07b4db4cc Update gui.rpy
Added new translations.
2024-08-21 21:26:40 +01:00
Denys d104db85a0 Update developer.rpy 2024-08-21 21:25:09 +01:00
Denys fcadb205db Update developer.rpy
Added new translations.
2024-08-21 21:24:52 +01:00
Denys 961277a751 Update common.rpy
Added new translations.
2024-08-21 21:24:20 +01:00
Denys c4e6cb8a06 Update launcher.rpy 2024-08-21 20:23:22 +01:00
Denys 83e05fca2e Update launcher.rpy 2024-08-21 20:18:55 +01:00
Denys b2b80bbfc3 Update error.rpy 2024-08-21 19:23:54 +01:00
Tom Rothamel 52fba62616 Bump versions. 2024-08-21 01:40:12 -04:00
Tom Rothamel 269c7e6ed5 When using a shader, limit blits to those containing characters.
Per #5718.
2024-08-20 22:31:49 -04:00
Tom Rothamel 3075ae4108 textshader: Add a_text_ascent.
This is intended to help scale effects to the font.
2024-08-20 01:17:01 -04:00
Tom Rothamel 2114dfe3a7 Properly outline the glyph mesh.
Fixes #5719.
2024-08-19 22:52:27 -04:00
Tom Rothamel 644e683c91 Use saturation alpha in fonts.
Fixes #5720
2024-08-19 22:04:15 -04:00
Tom Rothamel 43eefe49b1 doc: Synchro start. 2024-08-19 01:48:52 -04:00
Tom Rothamel 9c5c424bc0 Update sponsors. 2024-08-19 01:42:14 -04:00
Tom Rothamel a86cc5582b Ensure transforms run once before another transform take state.
Fixes #5701.

That was caused by a transform that ran in the normal path, but
was skipped during rollback. As the skipped transform never updated
its state, the outcome was visually different.
2024-08-18 22:33:17 -04:00
Tom Rothamel 1296a95140 Mark Text as being in the None language in the init phase.
This is because during the init phase, deferred translations
haven't been loaded. This leads to two cases:

1) The game is in the None language, and so everything is awesome.
2) The game is in another language, in which case Text.per_interact
   will re-translate the text, and everything becomes awesome.

Fixes #5713.
2024-08-18 16:52:08 -04:00
Tom Rothamel 279c35a80a Allow the creator to select the layer bubbles appear on,.
Fixes #5716.
2024-08-18 15:27:24 -04:00
Tom Rothamel 7058707f7c Only consider the tag when showing a screen.
This had been using get_screen, which considered both tag and
screen name. This means that when the bubble screen was shown
as _retain_0, and the bubble screen was shown, the instance
with retain_0 would be found, causing problems.

Fixes #5715.
2024-08-18 01:29:37 -04:00
Tom Rothamel 5ae359984f Produce a more informative error when {shader] is used wrong.
Specifically, when it's used for a text block where shaders
aren't in use.

Fixes #5711.
2024-08-17 23:52:19 -04:00
Tom Rothamel 5f74557df3 Update the icons in the launcher.
The mac icon is by HB38, and conforms to modern mac icon guidelines.
The windows one is based on the old mac icon, and looks better
on windows 11.
2024-08-17 23:33:46 -04:00
Tom Rothamel 17935743bb audio: Start channels unpaused. 2024-08-17 22:46:48 -04:00
Tom Rothamel 118c66a694 Add RENPY_DEBUG_SOUND. 2024-08-17 22:33:51 -04:00
Tom Rothamel 152025b402 Prevent Ren'Py from initiating a second reload when reloading.
Fixes #5714.
2024-08-17 22:19:48 -04:00
Tom Rothamel da575dfd5c Defer reloading until there hasn't been a file mtime change for 50ms. 2024-08-17 22:12:12 -04:00
Andrej Klychin 2974263792 Merge pull request #5709 from Veydzher/master
Update options.rpy in ukrainian
2024-08-17 15:18:43 +02:00
Tom Rothamel 252221f16f Remove a use of renpy.file. 2024-08-16 21:46:11 -04:00
Tom Rothamel 65eb26ae91 Better documentation for renpy.open_file. 2024-08-16 21:46:11 -04:00
Denys 65de4dafdd Update options.rpy 2024-08-17 02:11:43 +03:00
Denys 5aa423f6dd Merge branch 'renpy:master' into master 2024-08-17 01:17:47 +03:00
Andy_kl d2eaf0f2e3 Minor tweak in generate_pyi script.
This allow to use SDK python (3.9) to execute the script.
2024-08-16 22:27:46 +04:00
Andy_kl 67fd54215f Fix the the and a a duplication in the codebase. 2024-08-16 16:55:20 +04:00
Tom Rothamel c2e1d5b6af steam: Fix initialization problems.
* Remove a debug traceback.
* Avoid trying to initialize steam on unsupported platforms.
2024-08-15 02:35:23 -04:00
Tom Rothamel ea3c2f32ff audio: Implement synchro start using webaudio. 2024-08-15 02:25:08 -04:00
Tom Rothamel 487fc1c9f2 audio: Reimplement synchro_start in renpysound.
This is a more principled implementation than we had before. Syncro
start now consists of audio about to play being delayed until:

* All audio about to play with the synchro_start flag set is
  ready to play. (Has samples decoded.)
* There is no queued audio with the synchro_start flag set.
2024-08-15 00:51:03 -04:00
Tom Rothamel 0081d80c44 audio: Remove the existing implementation of synchro start. 2024-08-14 22:36:32 -04:00
Tom Rothamel 6561f50908 Prevent an exception during prediction from crashing Ren'Py.
Fixes #5698
2024-08-13 22:24:43 -04:00
Tom Rothamel 720a57bad0 Cycle autosaves after the save completes.
This should prevent empty save slots when an autosave fails.

Fixes #5704.
2024-08-13 21:39:18 -04:00
Tom Rothamel 3090a97550 Minor fixes to incompatible changes.
Closes #5701.
2024-08-12 21:49:17 -04:00
Tom Rothamel 53fcb11869 Remove padding from remaining width before rendering.
Fixes #5684.
2024-08-12 01:28:22 -04:00
Tom Rothamel f0a86c2a97 doc: That blend functions work on premultiplied alpha. 2024-08-11 11:17:26 -04:00
Tom Rothamel e00f82fea5 Merge pull request #5700 from renpy/patch-atl-pos-only
Patch compat ATL pos-only behavior
2024-08-11 10:48:43 -04:00
Gouvernathor 50e2b4432e Change the compat setting
This seems better : re-allowing these parameters is the responsibility of another issue
2024-08-11 15:14:09 +02:00
Gouvernathor 24bffd6cbe Patch pre-7.2.0 atl pos-only behavior
the block in which this is added to compat is to be checked
2024-08-11 15:10:25 +02:00
Gregor Riepl 5b0cd0bce7 Use spec_from_loader for the second case 2024-08-10 23:40:10 +02:00
Tom Rothamel df879a7f9f Fix how ids are added to displayables.
Fixes #5683.
2024-08-10 17:21:43 -04:00
Tom Rothamel 04812f43fa Format the volume on mac.
Fixes #5697.
2024-08-10 11:00:45 -04:00
Tom Rothamel 7a59a6bfa0 Do not hide the keyboard on mobile when resizing.
This is an attempt to prevent flickering when the keyboard is
shown.
2024-08-10 10:18:52 -04:00
Tom Rothamel ecdf4c83fc Merge pull request #5670 from renpy/doc-atl-partial
Document ATL's partial behavior
2024-08-09 22:52:23 -04:00
Tom Rothamel 2d941be35c Show "Image Attributes" in order.
Fixes #5689.
2024-08-09 01:26:53 -04:00
Tom Rothamel 76b92e55d6 text: Assign {fast} text a time of -3600.0 seconds.
This is intended to help with textshaders, as it means that any
textshader should have long completed before time 0, preventing it
from happening at time 0.

Fixes #5685.
2024-08-09 01:03:56 -04:00
Tom Rothamel dabe6494e5 Merge pull request #5688 from brimbel/patch-1
Fix texture_wrap typo
2024-08-08 22:58:03 -04:00
brimbel 8dc5b7e554 Fix texture_wrap typo 2024-08-08 19:34:42 -07:00
Gregor Riepl 2901314d05 Fix custom importer/finder/loader to be compatible with Python 3.12 2024-08-09 00:36:08 +02:00
Gregor Riepl 9ec1cd3c4f Revert "Make relative imports from rpy scripts absolute"
This reverts commit c213d17436.
2024-08-09 00:31:36 +02:00
Gregor Riepl b120f82f98 Replace deprecated APIs when compiling against newer FFmpeg 2024-08-08 23:56:16 +02:00
Gouvernathor 142b3fc895 Document parameter default value evaluation time 2024-08-08 22:19:12 +02:00
Gregor Riepl c213d17436 Make relative imports from rpy scripts absolute 2024-08-08 21:08:43 +02:00
Ren'Py Bot 8ddf779df5 Merge branch 'fix' 2024-08-08 04:30:30 -04:00
Tom Rothamel 3d213cb7db Merge pull request #5680 from kyouryuukunn/add_note_textshader
add the textshaders doc note
2024-08-08 01:06:33 -04:00
Tom Rothamel 93b844bc63 Apply __slotname when cycling quicksave slots.
This allows __slotname to apply the prefix and other processing.
Fixes #5679.
2024-08-08 00:05:18 -04:00
kyouryuukunn 1781891b3a add the textshaders doc note 2024-08-08 12:36:33 +09:00
Tom Rothamel e788f399d4 Prevent a crash in warp when next is None.
Fixes #5678.
2024-08-07 21:47:41 -04:00
Andy_kl 87431a41ad Fix for #5522.
Model defined with `default_fade != 1.0` was incorrectly looking for a duplicated for a probably undefined model with `default_fade == 1.0`.
2024-08-08 03:52:16 +04:00
Tom Rothamel 51b8b805e0 Check in updated keywords. 2024-08-06 23:04:55 -04:00
Tom Rothamel ea5bffc799 Name Ren'Py 8. 2024-08-06 22:19:35 -04:00
Tom Rothamel 2b8ece51df doc: Changelog and Sponsors. 2024-08-06 22:19:35 -04:00
Gouvernathor 4627bdba11 Update method doc 2024-08-06 08:28:01 +02:00
Tom Rothamel 8cf771d8fe Merge pull request #5671 from renpy/unrestrained-crop
Unrestrain crop
2024-08-06 00:45:01 -04:00
Tom Rothamel 68a5dfea9d Fix error reporting in screen variable functions.
Fixes #5674.
2024-08-05 23:14:57 -04:00
Asriel Senna 7b836f8a50 Shuffle config values more accurately 2024-08-05 19:34:55 +02:00
Asriel Senna 0faf3553e9 Expand a bit on out-of-bounds crop 2024-08-05 19:26:33 +02:00
Gouvernathor b18003976f Rephrase 2024-08-05 12:10:20 +02:00
Gouvernathor 01420fd46c doc: update incompat 2024-08-05 11:54:25 +02:00
Gouvernathor 68fde6ccb4 Update documentation 2024-08-05 11:45:11 +02:00
Gouvernathor 271e2d5278 doc: Move stuff 2024-08-05 11:43:35 +02:00
Gouvernathor d4d5d0ff3e Unrestrain crop for 8.3 on 2024-08-05 11:22:38 +02:00
Gouvernathor 236a910e62 Reorder and explicite the versions 2024-08-05 11:17:41 +02:00
Gouvernathor 5399b55fa4 Rename the relative function
it's not about abstract relative computation anymore, it's now tied to crop
2024-08-05 11:06:54 +02:00
Gouvernathor a69fefea05 Other doc stuff 2024-08-05 11:04:47 +02:00
Gouvernathor 917765c333 Cancel 4405 2024-08-05 11:04:34 +02:00
Gouvernathor 8ee37ee9bc Document partialing and parameters behavior 2024-08-05 11:04:16 +02:00
Tom Rothamel 534dc8d32c atl: Allow spline to interpolate inherited position properties.
Fixes #5669
2024-08-05 01:55:06 -04:00
Tom Rothamel beca6f8759 Limit cropping of a displayable to the size of that displayable.
Previous versions of Ren'Py could expand a displayable by cropping
it, which makes no sense. This version limits the size of the
cropped displayable to the intersection  of the crop box and
displayable.

This has compatibility with the 8.2 and pre-8.2 behaviors.
2024-08-05 00:22:13 -04:00
Tom Rothamel 6e9a47587c Fix the keybinding for the style inspector.
So it doesn't conflict with the full inspector.
2024-08-04 19:29:55 -04:00
Tom Rothamel 98615653e0 ffmedia: Call media_pause for each channel during a global pause.
This adjust the times on movies so that there isn't a pause when
we come back. Fixes #5667.
2024-08-04 14:28:40 -04:00
Tom Rothamel 328c2b5d95 Change the links to the schinese documentation.
Fixes #5665.
2024-08-04 01:25:13 -04:00
Tom Rothamel 9c5f9de257 Fix uniqueness problems in DynamicImage and slast.
DynamicImages would not be marked unique before the first execution,
which is wrong.

The change in slast is to fix a missing _unique call on the creation
of an unaliased displayable.

Fixes #5659.
2024-08-04 01:02:29 -04:00
Tom Rothamel 3ab001e11a Only enable subpixel subsurface for subsurface blits.
Fixes #5661's second comment.
2024-08-03 14:44:59 -04:00
Tom Rothamel d9baf3f919 boxes: Make box_align/box_justify work better with xfill/yfill.
This is done by making the boxes change behavior when the justify
or align is given, to not supply extra space to the placements
like xfill and yfill usually do.
2024-08-03 10:55:00 -04:00
Ren'Py Bot de103f6039 Merge branch 'fix' 2024-08-03 04:30:30 -04:00
Tom Rothamel c2316d6742 Fix a regression with boxes xfill and yfill. 2024-08-03 03:30:08 -04:00
Tom Rothamel 6d93afe2ed Scale the image before applying config.screenshot_crop.
Fixes #5560.
Fixes #5621.
2024-08-03 02:41:10 -04:00
Tom Rothamel c060312d4b Changes to box_align and box_justify.
This moves alignment and justification to a second pass, when the
size of each placement is fully known. This seems better than trying
to place each with partial information and then correcting it.

As a change, box_align and box_justify no longer imply xfill or
yfill. This follows how Text works, where justify and align
occur inside a small text size.
2024-08-03 02:32:14 -04:00
Tom Rothamel 598ab7f97d Use !r to report the exception, since it shows the exception name. 2024-08-02 23:02:09 -04:00
Tom Rothamel 3dd41ed247 Merge pull request #5451 from renpy/better-cds-lint
Show the error when linting a cds's next
2024-08-02 23:01:28 -04:00
Tom Rothamel c396526408 Use floats to distribute padding in justified boxes.
This makes sure that box_justify completely fills the screen.
2024-08-02 22:40:28 -04:00
Tom Rothamel c1e2724c3a Remove the use of min_line_x and min_line_y.
These were causing crashes, and there's probably a more direct way
of doing the same thing.
2024-08-02 02:31:15 -04:00
Tom Rothamel a54b8fc9d8 Compat for the interaction between box_reverse and box_align.
See the discussion in #5404 for why this is required.
2024-08-01 22:48:06 -04:00
Tom Rothamel af23452394 Support Render.subsurface or subpixel blits.
Turned off on initial call for compatibility, but then activated
for nested calls to subsurface to get correct results.

Fixes #5661.
2024-07-31 23:01:51 -04:00
Tom Rothamel a9dd666e11 text: Make hspace and vspace respect text scaling.
Fixes #5662.
2024-07-31 21:36:42 -04:00
Tom Rothamel 1e91cd28a0 Work on box_justify and box_align.
Some 'cleanups' on #5404.

* Integrate it with the style system.
* Rename justify to box_justify.
2024-07-31 02:00:22 -04:00
Tom Rothamel 99a12807b2 Merge pull request #5404 from shawna-p/box-updates
Add box_align and justify for boxes
2024-07-30 23:18:51 -04:00
Tom Rothamel 850f2705bd Merge branch 'master' into box-updates 2024-07-30 23:18:43 -04:00
Gouvernathor 494420d884 Typo
Interestingly enough, Lint will also not report spelling mistakes in dialogue, snake case in class names, or your stash of downloaded movies to the authorities. The more you know.
2024-07-30 20:19:20 +02:00
Tom Rothamel 2eedf53eac Lint now reports obsolete image manipulators.
Fixes #5532.
2024-07-30 00:55:57 -04:00
Tom Rothamel 5bdbcc2111 Replace uses of im.Tile with Tile.
Allowing us to obsolete im.Tile.
2024-07-30 00:41:47 -04:00
Tom Rothamel f0ecc1dc1a Check to see if the new vscode extension is installed.
And if it is, assume that the old one has been taken care of.
2024-07-29 23:43:53 -04:00
Tom Rothamel c6a29f79bc Run Linux non-system outside the sandbox.
Because we can't set it suid on install.
2024-07-29 23:34:11 -04:00
Tom Rothamel 82bbab49b6 Upgrade the Ren'Py extension for VS Code.
If Ren'Py sees the old VS Code extension, it will offer to upgrade it
to the new renpy.language-renpy extension.
2024-07-29 22:27:51 -04:00
Tom Rothamel d9f595f93e Sync screen fixes.
* Make sync_text inherit from gui text.
* Only use gui/overlay/confirm.png if it exists.

Fixes #5647.
2024-07-28 14:41:28 -04:00
Tom Rothamel 0acd1968e2 renpy.open_file now returns an io.BufferedReader
... when opened in binary mode.

Fixes #5653.
2024-07-28 12:39:50 -04:00
Tom Rothamel 0bae8dd684 Fixen.
Per @mal.
2024-07-27 23:37:06 -04:00
Tom Rothamel d97eb9e4d7 Allow control to start/stop skipping without considering modifiers.
Fixes #5657.
2024-07-27 16:47:48 -04:00
Tom Rothamel b5802657ac Add the anymod keymap prefix.
And rename any to anyrepeat, but keep compatibility.
2024-07-27 16:47:33 -04:00
Tom Rothamel 9dfe6ffc36 Merge pull request #5655 from pabdulin/fix-ru-translate
Fixed some obvious translation "bugs"
2024-07-27 11:10:10 -04:00
Petr Abdulin ba7ff1c175 Fixed some obvious translation "bugs" 2024-07-27 20:42:07 +07:00
Gouvernathor 3c38aa8965 doc: fix a typo and reorder some 2024-07-27 04:49:07 +02:00
Tom Rothamel 2d5b2bc3b8 Correct help. 2024-07-25 23:56:39 -04:00
Tom Rothamel d10b10d4f3 Revert "Export time into the default store."
This reverts commit fcc0f1cfd3.
2024-07-25 23:56:09 -04:00
Tom Rothamel 84d631a41a Merge pull request #5285 from lent1-andrealphusgames/android_packages
Add package argument when building android from CLI
2024-07-25 23:55:52 -04:00
Gouvernathor bac73366e2 Better type annotations 2024-07-26 01:56:28 +02:00
Tom Rothamel b61a47d7c9 Merge pull request #5652 from renpy/trans-doc-overhaul
Transforms, ATL and Transitions doc overhaul
2024-07-25 08:33:37 -04:00
Tom Rothamel 79e83cf566 Include the config.auto_channels mixers in the list of all mixers.
Fixes #5645.
2024-07-24 22:58:24 -04:00
Tom Rothamel 23f9268dad Exclude .rpe files from the build.
Fixes #5648.
2024-07-24 22:49:41 -04:00
Gouvernathor a08224d937 Comments for future evolution of allowed ATL parameters 2024-07-24 13:35:06 +02:00
Gouvernathor bdba20bab6 Add warpers
I would put it in transform properties, to balance the length of the two pages
but existing links to the Warpers section will survive this way (once the redirect is put in place)
and it would be the only part not directly related to transform properties
2024-07-24 13:29:48 +02:00
Gouvernathor cec9fa5e7e Move At from displayables to transforms 2024-07-24 13:10:27 +02:00
Gouvernathor 6e6de0b50a Linkify 2024-07-24 13:00:49 +02:00
Gouvernathor 32076a51b6 Fix links again 2024-07-24 12:46:56 +02:00
Gouvernathor 5818a20746 Merge branch 'master' into trans-doc-overhaul 2024-07-24 12:43:31 +02:00
Gouvernathor 2148123b59 Document the child parameter and its latest features 2024-07-24 12:43:03 +02:00
Gouvernathor c12b4558ea Fix links 2024-07-24 12:42:49 +02:00
Gouvernathor a35d42268c Reorder the statement for good practice and explicitibility reasons 2024-07-24 12:16:06 +02:00
Gouvernathor 6dafe282cf Add the last ATL statements 2024-07-24 11:55:23 +02:00
Tom Rothamel 1ad8e6706e doc: Fix errors.
* Duplications in config.
* Bad reference in Steam.
2024-07-24 02:12:45 -04:00
Gouvernathor ca40c7f797 Fix headers and add more ATL statements 2024-07-24 05:33:28 +02:00
Gouvernathor 4af6740050 Merge branch 'master' into trans-doc-overhaul 2024-07-24 05:07:38 +02:00
Gouvernathor c08d3a72b4 Add more ATL statements 2024-07-24 05:07:11 +02:00
Tom Rothamel fcc0f1cfd3 Export time into the default store.
For compatibility with older saves. Fixes #5650.
2024-07-23 23:04:10 -04:00
Tom Rothamel b321389cde Move loadsaveexports to contextexports.
The two functions make sense in the contextexports file.
2024-07-23 22:58:13 -04:00
Gouvernathor 0e420d769f Add redirect stubs 2024-07-24 04:53:22 +02:00
Gouvernathor f768ba1c82 Shorten the line so that it displays correctly 2024-07-24 04:34:22 +02:00
Tom Rothamel ebd134d91d Add missing import.
Fixes #5649.
2024-07-23 22:34:07 -04:00
Gouvernathor 5702b3a627 Update transform properties intro 2024-07-24 04:30:07 +02:00
Gouvernathor 69f25761e4 Add some ATL statements 2024-07-24 04:29:51 +02:00
Tom Rothamel c39ff754dc doc: Remove obsolete file. 2024-07-23 20:35:06 -04:00
Gouvernathor 8058c86c60 Forgotten page 2024-07-24 02:06:43 +02:00
Gouvernathor 5cad3b479e Include the new pages in the toctree 2024-07-24 02:05:00 +02:00
Gouvernathor 6e86645fa7 First pass of rewriting transforms and transitions 2024-07-24 01:49:03 +02:00
Tom Rothamel 436191ab90 Remove files used to reorder config.rst. 2024-07-23 02:06:42 -04:00
Tom Rothamel 073d54b8aa doc: Reorganize config.rst.
Fixes #5549.

Co-Authored-By: Lezalith <Lezalith@gmail.com>
2024-07-23 02:05:11 -04:00
Tom Rothamel 181a58a0de doc: Continue the organization of config variables. 2024-07-22 23:24:41 -04:00
Tom Rothamel 51d50d9fad Initial grouping of configuration variables.
Co-Authored-By: Lezalith <Lezalith@gmail.com>
2024-07-22 21:17:33 -04:00
Tom Rothamel 9770667158 Sort the contents of exports/__init__.py. 2024-07-21 21:54:46 -04:00
Tom Rothamel ecee802d9d Finish refactoring exports into multiple files. 2024-07-21 20:25:50 -04:00
Tom Rothamel 4a51df2543 More refactoring of exports. 2024-07-21 11:05:55 -04:00
Tom Rothamel 2f561a4294 Continue breaking up exports. 2024-07-21 02:18:47 -04:00
Tom Rothamel 7dab37afaa Continue refactoring exports. 2024-07-21 01:32:28 -04:00
Tom Rothamel 4c405aa344 Make lint accept the shader= tag.
Fixes #5643.
2024-07-20 20:46:54 -04:00
Tom Rothamel 5c41886bf4 Add u_virtual_size, the virtual size of the window.
Per #5642.
2024-07-20 18:20:31 -04:00
Tom Rothamel 753750ba58 Export proxies. 2024-07-19 12:18:15 -04:00
Tom Rothamel c316398404 Migrate more to export files. 2024-07-19 01:18:45 -04:00
Tom Rothamel ce62a7794e Break the fetch exports out into their own file. 2024-07-18 01:30:18 -04:00
Tom Rothamel 65486e9c30 Breaking exports up into multiple files. 2024-07-18 01:23:49 -04:00
Tom Rothamel 437c5ce7d5 Move exports into a package. 2024-07-18 00:54:38 -04:00
Tom Rothamel 07ca61f826 Fix an initialization problem with default preferences.volume.x
Fixes #5639.
2024-07-17 22:07:48 -04:00
Tom Rothamel 287f74065d Convert the translation identifier screen to the translation info screen.
This:

* Is available outside of developer mode.
* Shows the current line number.
* If a translation is in use, shows the source line number.
* If a translation is in use, shows the translated line.

Fixes #5414.
2024-07-17 01:05:50 -04:00
Tom Rothamel 1d2a811c36 Add the _translates screen, which shows what a line will translate. 2024-07-17 00:37:55 -04:00
Tom Rothamel 3ec75f6a10 tl: Add renpy.translation_info.
This returns an object containing information about a translation
or the default text corresponding to the translation, including
the source, filename, and line number.

Per #5414.
2024-07-16 23:14:34 -04:00
Tom Rothamel 423acaa502 Unpremultiply colors when taking a screenshot.
Fixes #5630.
2024-07-15 23:39:50 -04:00
Ren'Py Bot 57be1ca33f Merge branch 'fix' 2024-07-15 04:30:21 -04:00
Tom Rothamel cc61f53730 gl2: When intersecting polygons, align to a grid.
This prevents errors from accumulating and causing glitches. The grid
is 1/100th of a pixel, which should allow for subpixel movement without
too many problems.

Fixes #5632
2024-07-15 02:30:01 -04:00
Tom Rothamel db57fa8e39 Mark side image transforms as unique.
Fixes #5633.
2024-07-14 22:22:50 -04:00
Tom Rothamel 67d5a05a85 Document renpy.show's atl argument. 2024-07-14 16:35:08 -04:00
Tom Rothamel 3186c7c584 Creator-defined statements can take an ATL block.
It's also possible for the block to be optional, or to take an
optional block of script statements.
2024-07-14 16:00:35 -04:00
Tom Rothamel 111d786b59 Predict ATL used in scene and show statements. 2024-07-14 15:36:19 -04:00
Tom Rothamel fa077786aa Add config.interface_layer.
This is the layer that built-in screens will be shown on. It defaults
to "screens", but can be changed by creators.

Fixes #5618.
2024-07-13 23:57:33 -04:00
Ren'Py Bot 56e9243f23 Merge branch 'fix' 2024-07-13 04:30:21 -04:00
Tom Rothamel 335f076048 Save the state after an upgrade or DLC download. 2024-07-13 02:06:56 -04:00
Tom Rothamel 59e0595c66 Monkeypatch the updater to fix missing DLC.
The rpu updater didn't save the state during an update, causing
Ren'Py not update files it installed. That was fixed in
05bfde75e3, and this deals with
the fallout by adding the missing dlc as required.
2024-07-13 02:05:04 -04:00
Tom Rothamel b417b19d37 update: Add RENPY_TEST_MONKEYPATCH
This is an internal environment variable that makes it possible for
me to test monkeypatches without building an update.
2024-07-13 01:57:47 -04:00
Tom Rothamel 05bfde75e3 Save the state after an upgrade or DLC download. 2024-07-13 00:03:06 -04:00
Tom Rothamel 584073f824 Merge branch 'fix' 2024-07-12 23:34:00 -04:00
Tom Rothamel d1d299c64d Use the default style for the Window displayable.
Fixes #5625.
2024-07-12 22:39:39 -04:00
Tom Rothamel 270984c6e1 text: Fixes to RTL with multiple segments:
* The segments were not put in the right order.
* Times were not applied to the segments properly.

Fixes #5629.
2024-07-12 22:27:19 -04:00
Tom Rothamel e3d638eca1 Add more checks to renpy.can_rollback()
To check if rollback is actually possible. Fixes #5619.
2024-07-11 01:27:20 -04:00
Tom Rothamel 1df41abf33 Merge pull request #5616 from aleksbelic/docs-typos-fix
Fixes some typos found in docs.
2024-07-10 23:01:20 -04:00
Tom Rothamel b27cf19317 Merge pull request #5620 from kyouryuukunn/add_description_live2d_in_web
[Doc]add the description that live2d is not supported in web plattform
2024-07-10 23:01:07 -04:00
Tom Rothamel a1eeda4074 Merge pull request #5626 from agejevasv/fix-cors-video-loading
Fix video playing if config.web_video_base URL is cross-origin
2024-07-10 14:07:54 -04:00
Viktoras Agejevas c509bd180c Fix video playing if config.web_video_base URL is cross-origin
When `config.web_video_base` is set with an absolute URL to another origin,
modern browsers won't load the video with an error:

> The HTMLMediaElement passed to createMediaElementSource has a cross-origin resource, the node will output silence.

For CORS to work:
1. The server serving the resources should have a `access-control-allow-origin: *` header.
2. The `video` element should have `crossorigin="anonymous"` attribute.
2024-07-10 18:33:44 +03:00
Tom Rothamel b2ba205e22 Merge branch 'to-renpy-json' 2024-07-10 01:57:39 -04:00
Tom Rothamel bebd305e66 Avoid breaking a role across two lines. 2024-07-10 01:57:27 -04:00
Tom Rothamel e6d8522b96 doc: Document the default namespaces.
Right now, this is mostly hidden, intended to supply information
to vscode completion.
2024-07-09 23:16:00 -04:00
Tom Rothamel 0db128da75 vscode: Create renpy.json when the documentation is built. 2024-07-09 22:05:46 -04:00
Tom Rothamel 5b01a7c678 vscode: Move renpy_json generation into game. 2024-07-09 21:37:40 -04:00
Tom Rothamel b573a0249b Handle deprecation.
With a list of rules for deprecated and non-deprecated names.

The origin of all Ren'Py-sourced names is "renpy", and then this
is changed to "deprecated" if a rule hits.
2024-07-09 21:35:26 -04:00
Ren'Py Bot c01616a959 Merge branch 'fix' 2024-07-09 04:30:21 -04:00
Tom Rothamel 341bf3aaa1 vscode: Experimental script to generate renpy.json.
This does it by parsing the reStructuredText input to Sphinx, and
then converting it to Markdown in the correct format.
2024-07-09 01:17:31 -04:00
Tom Rothamel 4c15220b91 Do not end instantly. 2024-07-08 22:05:06 -04:00
Tom Rothamel 1a06f959bb End the animation if the animation delay is 0 or None.
Fixes #5622.
2024-07-08 21:34:34 -04:00
Tom Rothamel b0ce4e71ac Scale the image before applying config.screenshot_crop.
Fixes #5560.
Fixes #5621.
2024-07-08 01:08:45 -04:00
Gouvernathor 1a2186ad26 doc: tweak renpy.Choice signature
this should be changed once we enable py3-only code
2024-07-08 00:22:38 +02:00
Tom Rothamel 18dc019a54 Add the renpy.Choice class, allowing arguments to be suppled to menu items.
Fixes #5509.
2024-07-07 09:26:10 -04:00
Tom Rothamel 9b8cde6240 doc: Steam. 2024-07-06 17:02:46 -04:00
Tom Rothamel b5767defc2 doc: Document achievement.steam. 2024-07-06 16:26:04 -04:00
Tom Rothamel 296948317a steam: Add support for Steam Timeline. 2024-07-06 16:16:10 -04:00
Tom Rothamel ca4e791fd4 steam: Update to support v160. 2024-07-06 14:26:36 -04:00
Tom Rothamel 712cb434da Add license information to renpy.gl2 files. 2024-07-06 09:44:52 -04:00
Tom Rothamel 0b34353f2a doc: Changelog. 2024-07-06 09:31:30 -04:00
Tom Rothamel 9ecd771a78 screenshot: Add the ability to resize rendered displayables. 2024-07-06 09:22:22 -04:00
Tom Rothamel 6003d51716 doc: Screenshot functions. 2024-07-06 09:12:43 -04:00
Tom Rothamel 2bb9739212 Add renpy.render_to_surfacne and renpy.render_to_file.
Two functions that can capture the rendered version of a displayable.

Fixes #5440.
2024-07-06 01:12:16 -04:00
Tom Rothamel 6d71bfd7fb Give renpy.display.draw.screenshot the ability to screenshot arbiratry renders.
Per #5540.
2024-07-05 19:54:16 -04:00
Tom Rothamel d4fc779f6d gl2: Allow texture wrap to be customize on a per-uniform basis. 2024-07-05 12:13:15 -04:00
Tom Rothamel d16c81f936 gl2: Apply texture properties at render time.
Rather than when the texture is created. This fixes an issue
introduced by texture caching that was preventing GL_REPEAT
from working.

Fixes #5568.
2024-07-05 10:13:05 -04:00
kyouryuukunn 5daac3c611 add the description that live2d is not supported in web plattform 2024-07-05 22:36:29 +09:00
Tom Rothamel a4eb607775 Supply res<x> to shaders, even if tex<x> isn't used.
Fix #5615.
2024-07-04 21:34:53 -04:00
Tom Rothamel 8ed2f4fbfd Allow renpy.display_menu to take menu arguments.
Fixes #5509.
2024-07-03 22:53:56 -04:00
Aleksandar Belic Aleksanchez 300d50b826 Fixes some typos found in docs. 2024-07-03 23:30:23 +02:00
Tom Rothamel a23c5ef778 Retained speech bubbles are cleared...
... when other say, menu, or call screen statement are invoked. With
a variable to control this.

Fixes #5611.
2024-07-03 08:31:01 -04:00
Tom Rothamel fd4da5b0de Merge pull request #5563 from luejerry/save-load-mousewheel
Allow mousewheel to paginate save/load screen
2024-07-02 22:19:11 -04:00
Tom Rothamel acba6a2f60 Remove exec.py support.
It's a bit too footgun, so instead we'll use .rpe.py files to
inject the same thing. See the discussion in #5607.
2024-07-01 22:38:45 -04:00
Tom Rothamel c99a9052d4 RPE changes.
* RPE files are now searched for in config.renpy_base as well as
  the game directory, to make it easy for the user to install
  .rpes.

* .rpe.py files are searched for in the same places, and loaded at
  the same time.
2024-07-01 22:38:45 -04:00
Tom Rothamel 44b5ca8a02 Merge pull request #5608 from m-from-space/master
Update German Translation Files
2024-07-01 11:38:46 -04:00
m-from-space 309080f4e8 Update script.rpym
Changed formal to informal speech, because it is more natural.
2024-07-01 15:56:37 +02:00
m-from-space a998c4dc42 Update screens.rpy
Fixed auto translations where necessary and changed formal to informal speech, because it is more natural and usually shorter.
2024-07-01 15:48:10 +02:00
m-from-space 7e16ce9d2d Update options.rpy
Fixed auto translations where necessary and changed formal speech into informal speech, because it is more natural and usually shorter.
2024-07-01 14:57:21 +02:00
m-from-space c074279dc4 Update launcher.rpy
Fixed auto translations where necessary and changed formal to informal speech, because it is more natural and usually shorter
2024-07-01 14:41:18 +02:00
m-from-space 3cca58e474 Update error.rpy
fixed auto translations and some other translations where necessary and changed formal speech into informal speech, because it is more natural and usually shorter
2024-07-01 11:40:48 +02:00
m-from-space 4ffd682634 Update developer.rpy
fixed auto translations where necessary and changed informal speech into formal, because it is more natural
2024-07-01 11:26:41 +02:00
m-from-space 00facab8c2 Update common.rpy
fixed auto translations where necessary and changed formal speech to informal one, since this is more natural in games
2024-07-01 11:10:41 +02:00
Tom Rothamel 9ceb14d4e0 Add renpy.get_ongoing_transition.
Fixes #5385.
2024-07-01 02:06:37 -04:00
Tom Rothamel 6081c49f5d Add config.translate_ignore_who.
Fixes #5575.
2024-06-30 23:43:46 -04:00
Tom Rothamel 01a5d37ee3 Merge pull request #5606 from qTich/fix/5603
fix: #5603
2024-06-30 23:14:15 -04:00
Tom Rothamel 6c45cdd8f1 Document oversampling directories. 2024-06-30 16:39:31 -04:00
Tom Rothamel 0ca1015974 Merge pull request #5605 from levicratic/allow-@-in-folder
Be more lenient with '@' in image names
2024-06-30 14:18:50 -04:00
Ren'Py Bot d3de1405dc Merge branch 'fix' 2024-06-30 04:30:21 -04:00
Tichq 84ff26b8cb fix: #5603 2024-06-30 07:07:44 +03:00
Tom Rothamel 1e3c7a346d Fix bad merge. 2024-06-29 23:42:39 -04:00
Tom Rothamel e41d22cb9e Merge branch 'fix' 2024-06-29 23:39:22 -04:00
Tom Rothamel 38623ff2ea Merge pull request #5587 from kyouryuukunn/add_describes_for_files
[Doc]add describes for files
2024-06-29 23:03:25 -04:00
Tom Rothamel aa1289aa17 Merge pull request #5589 from shawna-p/pad-event-fix
Gamepad event fix
2024-06-29 23:02:48 -04:00
Gouvernathor 5c14eb023b Trim Signature
the legacy constructor is not used anymore, the positional property either.
extrapos and extrakw returned the name of the parameter instead of the object itself, that's useless
also reimplement the atl commented code that was using it - there needs to be clarity between parameter objects and names
2024-06-30 03:43:34 +02:00
Tom Rothamel 2435f93658 ATL polar coordinates now support the radius being a negative number.
Fixes #5598.
2024-06-29 21:03:11 -04:00
levicratic 387d45cf73 Pull oversample value from folder or base name 2024-06-29 20:51:57 -04:00
Tom Rothamel 1653b87ef3 wp: Store and use the sign of the radius. 2024-06-29 19:33:30 -04:00
Tom Rothamel 2939404b27 transform: Fix error when dealing with near-0 radii.
Fixes #5596.
2024-06-29 16:59:57 -04:00
Tom Rothamel 5321773622 Scroll restarts interaction on when an adjustment is ranged.
Fixes #5599.
2024-06-28 23:46:47 -04:00
Tom Rothamel 48693f76f4 Scroll restarts interaction on when an adjustment is ranged.
Fixes #5599.
2024-06-28 08:52:05 -04:00
kyouryuukunn f80a8c71aa Merge pull request #5601 from kyouryuukunn/japanese_translation_240628
fix japanese translation 240628
2024-06-28 19:36:44 +09:00
kyouryuukunn 1a541133e3 fix japanese translation 240628 2024-06-28 19:30:53 +09:00
Ren'Py Bot ec9c6486b3 Merge branch 'fix' 2024-06-28 04:30:19 -04:00
Tom Rothamel 5e90fbad2e Only trigger default_focus if the mouse hasn't been used in 100ms.
This fixes and issue where restarted interactions could cause
the default_focus behavior.

Fixes #5600.
2024-06-27 20:23:09 -04:00
Ren'Py Bot 098bf0b06e Merge branch 'fix' 2024-06-27 04:30:20 -04:00
Tom Rothamel 5d33a14d3e tts: Properly handle modal screens that do not contain tts text.
Fixes #5590.
2024-06-26 22:26:26 -04:00
Tom Rothamel 06f145a17b Reorg documentation. 2024-06-25 23:30:35 -04:00
Tom Rothamel 43783c2caf Merge #5237 (ATL partials overhaul and fix.)
Adresses most of the main points of #5102, and #4371.
The parameters that get fixed are still forbidden though, as are var-pos and var-kw parameters. That will be for another PR. But the implementation that goes with handling those is already here, commented-out for performance.

The solution to #4405 is there too but also commented out. That change will also go in separately.
2024-06-25 21:16:57 -04:00
shawna-p 1b8780fc8a Update for new pad_bindings as of 8.2 2024-06-25 11:14:39 -04:00
shawna-p fe5f68ab1d Fix for lists of pad events 2024-06-25 11:13:58 -04:00
Tom Rothamel 4379d2187a The displayable inspector (Shift+Alt+I) now shows a displayable's id if it has one.
Fixes #5583.
2024-06-24 16:21:02 -04:00
Tom Rothamel 02573ed165 Store the id as a field on Displayables. 2024-06-24 16:19:49 -04:00
kyouryuukunn a02e5f38bb add describes for files 2024-06-24 19:48:42 +09:00
Tom Rothamel a8ffb16c63 Hide notifications before screenshots.
Fixes #5569.

This works by deferring the screenshot until after an immediate
interaction restart, and adding actions that can be run before
this restart.

As part of this, the precise timing of renpy.invoke_in_main_thread
handing is adjusted. Since that wasn't ever defined, this seems fine.
2024-06-23 22:25:12 -04:00
Tom Rothamel 1537306cab Add Hide(..., immediately=True).
And the renpy.hide_screen equivalent. There are cases (#5569) when
we want to hide a screen with triggering events, and this allows
for that.
2024-06-23 22:03:18 -04:00
Tom Rothamel b231071aa6 Handle local labels in test cases.
Qualified local labels work as expected. Unqualified local labels
are relative to the test case names.

Per #5410.
2024-06-21 23:42:06 -04:00
Tom Rothamel 38b6cdfa94 test: Fix execution of test cases. 2024-06-21 23:41:52 -04:00
Tom Rothamel 40055b24c6 Add changelog and documentation for config.clear_log. 2024-06-21 20:54:15 -04:00
kyouryuukunn 8560b39e71 Merge pull request #5579 from kyouryuukunn/Japanese_update_240621
Japanese update 240621
2024-06-21 12:58:19 +09:00
Tom Rothamel 48d9a8da10 Merge pull request #5286 from lent1-andrealphusgames/clear_config_log_during_startup
Clear config.log file during game startup
2024-06-20 21:43:35 -04:00
kyouryuukunn 5a66ab997d update japanese translation 240621 2024-06-21 08:59:03 +09:00
kyouryuukunn b04141a3a4 update japanese translation 240620 2024-06-20 21:06:24 +09:00
Tom Rothamel c386922b16 Undocument the show_done callback, which was rarely or never called. 2024-06-19 21:04:14 -04:00
Tom Rothamel 066660451e Pass more keyword arguments to character callbacks.
Fixes #5533.
2024-06-19 21:04:14 -04:00
kyouryuukunn f639c176fc Merge pull request #5577 from kyouryuukunn/Japanese_update_240619
update Japanese translation
2024-06-19 12:26:22 +09:00
kyouryuukunn db39372702 update Japanese translation 2024-06-19 12:24:04 +09:00
Tom Rothamel f949c2f09a Merge branch 'fix' 2024-06-18 22:54:36 -04:00
Tom Rothamel 45a13a9da6 Bump versions. 2024-06-18 22:52:10 -04:00
Tom Rothamel 5a88385e7a doc: Update. 2024-06-17 21:55:22 -04:00
Tom Rothamel 689ce63e85 Pull before build. 2024-06-17 20:24:38 -04:00
Tom Rothamel 2c0fcf0418 Limit exec.py processing to developer mode + environment variable handling.
To limit security implications.
2024-06-16 22:20:48 -04:00
Ren'Py Bot 4be97baab1 Merge branch 'fix' 2024-06-16 04:30:18 -04:00
levicratic e8d627d7c7 Add font check for aliases in font_name_map 2024-06-15 19:32:47 -04:00
Tom Rothamel 66aa290908 Merge pull request #5571 from levicratic/lint-font-name-map
Add lint check for font aliases in font_name_map
2024-06-15 19:31:39 -04:00
Tom Rothamel c2f34f0727 Use correct variable. 2024-06-15 19:30:41 -04:00
levicratic c21b2cad01 Add font check for aliases in font_name_map 2024-06-15 16:03:59 -04:00
Tom Rothamel 0aea527511 Add the _clear_layers argument for renpy.{call,invoke}_in_new_context.
Fixes #5550.
2024-06-14 22:52:40 -04:00
Ren'Py Bot 13c5f8d11b Merge branch 'fix' 2024-06-14 04:30:18 -04:00
npckc 6cd01c559e Correct config.fill_shrinks_frames to config.fill_shrinks_frame
The Incompatible Changes page has the variable written as config.fill_shrinks_frames, but config.fill_shrinks_frame is the correct variable
2024-06-13 23:53:47 -04:00
Tom Rothamel 9b3743508e Merge pull request #5565 from npckc/master
Correct config.fill_shrinks_frames to config.fill_shrinks_frame
2024-06-13 23:52:26 -04:00
Tom Rothamel 36690cd413 live2d, doc: Update live2d documentation. 2024-06-13 18:10:53 -04:00
Ren'Py Bot b7f3368c64 Merge branch 'fix' 2024-06-13 04:30:18 -04:00
npckc c8bd10b486 Correct config.fill_shrinks_frames to config.fill_shrinks_frame
The Incompatible Changes page has the variable written as config.fill_shrinks_frames, but config.fill_shrinks_frame is the correct variable
2024-06-13 17:16:59 +09:00
Tom Rothamel 3e6eb3c1f8 Bump version. 2024-06-12 19:12:39 -04:00
Tom Rothamel 18b01d9fb9 Bump version. 2024-06-12 19:03:16 -04:00
luejerry 64ab754bca Allow mousewheel to paginate save/load screen 2024-06-12 01:37:51 -07:00
Ren'Py Bot f8f8a6b2d6 Merge branch 'fix' 2024-06-12 04:30:18 -04:00
Tom Rothamel db12aca24b Add a mode to show files that have changed size. 2024-06-12 01:35:35 -04:00
Tom Rothamel 4248ea0b18 doc: Changelog. 2024-06-11 22:59:11 -04:00
Tom Rothamel e976763457 doc: Changelog. 2024-06-11 21:47:14 -04:00
Tom Rothamel 95c3070bd2 doc: Update sponsors. 2024-06-11 21:23:20 -04:00
Ren'Py Bot 0949e14892 Merge branch 'fix' 2024-06-11 04:30:01 -04:00
Tom Rothamel 6e5d3b926b Scale up the interface styles on small devices.
This makes the accessibility menu more usable on phones.
2024-06-11 00:06:35 -04:00
Tom Rothamel fed3bbf2c1 tts: Allow tts on Android and iOS. 2024-06-10 23:41:10 -04:00
Tom Rothamel 4decefb7c4 On touch platforms, allow a gesture to access the accessibility menu. 2024-06-10 23:03:33 -04:00
Ren'Py Bot 6d0443c94c Merge branch 'fix' 2024-06-10 04:30:01 -04:00
Tom Rothamel 0b257c3505 Tweak the LOD setting.
This changes when it triggers, as .5 is too close to sizes a
creator might use.

Fixes #5466.
2024-06-09 21:16:46 -04:00
Tom Rothamel bf04173e44 tts: Fallback if the selected voice can't be used.
Fixes #5556. Probably only works on Linux and Mac, as on Windows
this is the default.
2024-06-09 16:21:09 -04:00
Tom Rothamel 0ec182d18d tts: Fallback if the selected voice can't be used.
Fixes #5556. Probably only works on Linux and Mac, as on Windows
this is the default.
2024-06-09 16:20:13 -04:00
Tom Rothamel ffc8b5532c Merge branch 'fix' 2024-06-09 01:03:43 -04:00
Tom Rothamel 33818ecd5b Include the version at the end of blocks of variables.
This should help with merges.
2024-06-09 01:01:50 -04:00
Tom Rothamel 08538b2ed6 Merge branch 'fix' 2024-06-09 01:00:56 -04:00
Tom Rothamel 14f28c0160 android: Call armOnStop, finishOnStop.
This is required by renpy/renpy-build@c6253f81ad.
2024-06-09 00:56:28 -04:00
Tom Rothamel 90398b5604 android: Use armOnStop and FinishOnStop.
Per renpy/renpy-build@c6253f81ad
2024-06-08 23:02:35 -04:00
Tom Rothamel ce2ad1c14e Fix translations. 2024-06-07 22:49:40 -04:00
Tom Rothamel 8486ab06bf Fix translations. 2024-06-07 22:49:15 -04:00
Zout141 4b888f0c89 Try To Update Existing SChinese and TChinese Translation,Fix A Little Problem Of Korean Translation (#5524)
Co-authored-by: Liu Wenyuan <15816141883@163.com>
Co-authored-by: 复予 <clonewith@qq.com>
2024-06-07 22:25:54 -04:00
Zout141 f346cf5a1a Try To Update Existing SChinese and TChinese Translation,Fix A Little Problem Of Korean Translation (#5524)
Co-authored-by: Liu Wenyuan <15816141883@163.com>
Co-authored-by: 复予 <clonewith@qq.com>
2024-06-07 22:15:21 -04:00
Tom Rothamel bbd9bfb8ad Us a style to control image error placement.
And update the style to something more modern.
2024-06-07 00:32:11 -04:00
Tom Rothamel 1463b141ab Stop raising image exceptions if the player choses to ignore. 2024-06-07 00:32:11 -04:00
Tom Rothamel a4c51a0095 Add config.raise_image_load_exceptions.
This lets the creator control when image load exceptions
occur.
2024-06-07 00:32:11 -04:00
Tom Rothamel 8cfb3e4dbd Add config.python_exit_callbacks.
Functions that are called when Ren'Py is shutting down, to allow
Python modules to be deinitialized.
2024-06-07 00:31:48 -04:00
Tom Rothamel 7ffdde6ac2 Undocument config.at_exit_callbacks.
This is a really poorly named callback that has little purpose
(other than saving jsondbs) as it runs between when the game
store has been loaded and when the init data is removed.
2024-06-07 00:31:13 -04:00
Tom Rothamel cc97832772 Us a style to control image error placement.
And update the style to something more modern.
2024-06-07 00:19:37 -04:00
Tom Rothamel 4bcb365a78 Stop raising image exceptions if the player choses to ignore. 2024-06-06 21:54:58 -04:00
Tom Rothamel cbf17de9bc Add config.raise_image_load_exceptions.
This lets the creator control when image load exceptions
occur.
2024-06-06 21:50:17 -04:00
Tom Rothamel 1c39200c17 Add config.python_exit_callbacks.
Functions that are called when Ren'Py is shutting down, to allow
Python modules to be deinitialized.
2024-06-05 22:37:41 -04:00
Tom Rothamel f549453214 Undocument config.at_exit_callbacks.
This is a really poorly named callback that has little purpose
(other than saving jsondbs) as it runs between when the game
store has been loaded and when the init data is removed.
2024-06-05 22:09:50 -04:00
Ren'Py Bot f5d065e181 Merge branch 'fix' 2024-06-05 04:30:18 -04:00
Tom Rothamel 6e46f2bb6a Restore _with_none to renpy.call_screen.
See discussion in #5536.
2024-06-04 22:22:03 -04:00
Tom Rothamel 72437e55fa Remove _with_none from argument signatures.
It was never useful, and it's obsolete at this point.

Fixes #5536.
2024-06-04 21:58:57 -04:00
Tom Rothamel c0d6b9b6df Merge branch 'fix' 2024-06-03 23:07:46 -04:00
Tom Rothamel 968c6059df doc: Fix typo. 2024-06-03 23:05:11 -04:00
Tom Rothamel ab09cd29f0 tts: Queue up and allow forced tts.
Queuing up allow multiple messages with renpy.alt to be queued up
before the next tts. And this fix allows renpy.alt(force=True) to
work where it had been broken.

Fixes #5545.
2024-06-03 23:01:38 -04:00
Tom Rothamel 2b5b93adc1 Munge __word everywhere in strings.
Fixes #5442.
2024-06-03 22:32:37 -04:00
Tom Rothamel 4978fe748b Merge branch 'fix' 2024-06-03 02:19:09 -04:00
Tom Rothamel 3b8194dd5e Prevent xfill and yfill from shrinking frames.
Fixes #5424.
2024-06-03 02:17:05 -04:00
Tom Rothamel 909f665585 Merge branch 'fix' 2024-06-02 11:25:15 -04:00
Tom Rothamel 823c168154 Work around an issue where harfbuzz couldn't get font height.
Fixes #5416.
2024-06-02 11:25:01 -04:00
Tom Rothamel 8bf7dbac7b Change files shown in .vscode. 2024-06-01 21:21:13 -04:00
Tom Rothamel 62a002659c Work around an issue where harfbuzz couldn't get font height.
Fixes #5416.
2024-06-01 21:20:21 -04:00
Tom Rothamel a8521df324 doc: Fix style property names. 2024-06-01 13:13:54 -04:00
Ren'Py Bot d08efd929f Merge branch 'fix' 2024-06-01 04:30:01 -04:00
Tom Rothamel 8f2a30c2d5 Merge pull request #5543 from Kuroonehalf/patch-1
Couple typos fix in textshaders.rst
2024-06-01 01:12:59 -04:00
Kuro 4422f66ba8 Couple typos fix in textshaders.rst 2024-06-01 05:50:11 +01:00
Tom Rothamel d7a10778ee Treat the use of default_focus as an explicit focus.
That causes hovered handlers to run. Fixes #5477.
2024-05-31 22:25:50 -04:00
Tom Rothamel 8e6446e85a Add the prefences.volume namespace.
This allows mixers to be set with the default statment.

Fixes #5541.
2024-05-30 22:10:28 -04:00
Denys 451fc492b3 Merge branch 'renpy:master' into master 2024-05-30 15:33:02 +01:00
Tom Rothamel 12e781cf4f Merge pull request #5513 from renpy/doc-display_menu
Tweak display_menu
2024-05-30 01:33:07 -04:00
Tom Rothamel d0c78aaaca Merge branch 'fix' 2024-05-29 21:54:29 -04:00
Tom Rothamel 7886c536ec live2d: Always apply attribute_filter.
Fixes #5415.
2024-05-29 20:36:38 -04:00
Tom Rothamel 7620f8ef78 Fadeout audio when stopping sounds for rollback.
Fixes #5497.
2024-05-29 20:21:21 -04:00
Tom Rothamel 8a6111cf83 Use config.fadeout_audio on play/stop sound.
Per #5497.
2024-05-29 20:21:21 -04:00
Tom Rothamel ac8cd9d9b2 live2d: Properly encode and suggest cause of errors from missing symbols.
Fixes #5485.
2024-05-29 20:21:21 -04:00
Andy_kl ac81c53bf2 Allow to have the same model with 2 different default_fade 2024-05-29 20:21:21 -04:00
Tom Rothamel 2eddbd9712 Fadeout audio when stopping sounds for rollback.
Fixes #5497.
2024-05-29 01:50:34 -04:00
Tom Rothamel 2c7bf8aed4 Use config.fadeout_audio on play/stop sound.
Per #5497.
2024-05-29 01:08:46 -04:00
Tom Rothamel e2cb92540f live2d: Properly encode and suggest cause of errors from missing symbols.
Fixes #5485.
2024-05-28 22:48:29 -04:00
Tom Rothamel 64779676a8 Merge pull request #5540 from qTich/fix/textshader-compilation
textshader: convert static int to float
2024-05-28 09:44:11 -04:00
Tichq f914c0ae50 textshader: convert static int to float 2024-05-28 09:32:53 +03:00
Tom Rothamel fd9fee113e Clear after_rollback even if an interaction aborts early.
Fixes #5511
2024-05-28 01:47:45 -04:00
Tom Rothamel d348af3edf Clear after_rollback even if an interaction aborts early.
Fixes #5511
2024-05-28 01:47:19 -04:00
Tom Rothamel 9476a1e2cd Merge pull request #5489 from andrigamerita/the-question
Create full Italian translation of The Question
2024-05-27 23:14:43 -04:00
Tom Rothamel 4ee10cb9bf Merge pull request #5486 from andrigamerita/master
Update existing Italian translations and add missing ones
2024-05-27 23:14:19 -04:00
Tom Rothamel 920921e87d Merge pull request #5522 from renpy/live2d-auxiliaryout
Allow to have the same model with 2 different default_fade
2024-05-27 21:35:48 -04:00
Tom Rothamel 3907f95a1c Fix newlines in config.log.
Fixes #5535.
2024-05-26 21:09:41 -04:00
Tom Rothamel a2f6891341 Fix newlines in config.log.
Fixes #5535.
2024-05-26 21:08:52 -04:00
Tom Rothamel 10a71b7e0d Add config.log_events.
A way of logging pygame events.
2024-05-26 20:41:31 -04:00
Mal Graty 18aec480f0 Skip unnecessary conditionals during interpolation
We already bail early when inside parens, and taking the same approach
with brackets allows us to short-circuit further character checks.
2024-05-26 20:40:49 -04:00
Mal Graty eb7d711fa8 Respect config.savegame_suffix in sync 2024-05-26 20:40:49 -04:00
Tom Rothamel 7fafea3a5c Move to a different approach to pausing on Android and iOS.
This is a (more or less) direct call of SDL_PauseAudio, without
any locking.

Per #5292.
2024-05-26 20:40:49 -04:00
Tom Rothamel 67618d00fc Look for live2d ion the main executable on ios.
Per #5502.
2024-05-26 20:40:19 -04:00
Tom Rothamel f8383eef39 Add config.log_events.
A way of logging pygame events.
2024-05-25 23:30:35 -04:00
Tom Rothamel 6a9039a7c3 Add config.shader_part_filter.
This can be used to filter shaders, to implement preference that turn
shaders parts on and off as required.

Close #5534.
2024-05-24 22:34:56 -04:00
Tom Rothamel b7bb25fa38 doc textshader: Document creating a textshader. 2024-05-24 01:04:31 -04:00
Tom Rothamel f5b4c5fd5d Convert int to float. 2024-05-24 01:04:16 -04:00
Tom Rothamel ae873abdf4 doc textshader: Generate documentation for built-in textshaders. 2024-05-23 22:02:44 -04:00
Tom Rothamel 0bc13d58a3 doc, textshader: Textshader callbacks. 2024-05-22 21:58:25 -04:00
Tom Rothamel f54bc355fd Only create a rollback at a label if the current rollback is not at a lable.
This fixes a problem where:

    label start:

        "A"
        $ pass

    label b1:
    label b2:
    label b3:
    label b4:
    label b5:
    label b6:
    label b7:
    label b8:
    label b9:

        "B"

Would create a Rollback for each of the labels, depleting the rollback
log space. The practical version of this involves many calls and returns.

Fixes #5406.
2024-05-21 22:00:46 -04:00
Tom Rothamel 53f5445f82 Merge pull request #5529 from mal/optimise-str-interpolation
Skip unnecessary conditionals during interpolation
2024-05-21 20:08:26 -04:00
Tom Rothamel 392fd5c3da Merge pull request #5528 from mal/respect-save-game-suffix
Respect config.savegame_suffix in sync
2024-05-21 20:07:09 -04:00
Chengtian He 8ac49970b8 Fix unpaired quotation mark in python.rst (#5523)
doc: fix unpaired quotation mark in example code
2024-05-21 20:01:07 +02:00
Tom Rothamel 1a7ead6ec0 doc: More changes.
* Do not build the abbreviated documentation on the command line.
* Remove debug prints.
2024-05-21 02:07:12 -04:00
Tom Rothamel 78d8547b27 doc: Fix various errors. 2024-05-21 01:59:22 -04:00
Tom Rothamel db2b3acc31 doc, textshader: Document and rationalize shader priorities. 2024-05-21 01:54:34 -04:00
Tom Rothamel 09f3a53c09 doc: Add an index of shader priorities. 2024-05-21 00:15:41 -04:00
Tom Rothamel d607076acb doc: Move shader parts into their own file. 2024-05-20 23:02:03 -04:00
Tom Rothamel 0cda6a3de6 textshader: Add linetexture. 2024-05-20 02:29:54 -04:00
Tom Rothamel fbfbbfe081 textshader: Remove the texture rect attribute.
As it's equivalent to the a_text_pos_rect / res0.
2024-05-20 01:53:06 -04:00
Tom Rothamel 59d2c251e7 textshader: Add u_text_main.
This is 1.0 if we're on the main text (no outline or offset), and
0.0 otherwise.
2024-05-19 23:40:42 -04:00
Tom Rothamel 00e36f3305 gl2: Correct shader line numbers in log. 2024-05-19 23:30:28 -04:00
Tom Rothamel 8d8ea32b46 textshader: Prefer multiply to divide. 2024-05-19 22:39:57 -04:00
Tom Rothamel 6130437ee7 gl2: Make the texture resolution available to shader uniforms. 2024-05-19 22:25:40 -04:00
Tom Rothamel 2b1c5ac83b textshader: Include the bounding rectangles for positions and textures as attributes. 2024-05-19 22:18:04 -04:00
Mal Graty 92a00f1183 Skip unnecessary conditionals during interpolation
We already bail early when inside parens, and taking the same approach
with brackets allows us to short-circuit further character checks.
2024-05-19 22:05:48 +01:00
Mal Graty 02e654e855 Respect config.savegame_suffix in sync 2024-05-19 22:04:04 +01:00
Tom Rothamel 6a613314c5 Do not add uniforms when rendering a render that is a model. 2024-05-19 01:39:30 -04:00
Tom Rothamel 61c2963ef6 textshader: offset and wave shaders.
And rename the old wave shader to dissolve to free up the name.
2024-05-18 23:25:19 -04:00
Tom Rothamel 3b9068c659 textshader: Fix issue applying arguments. 2024-05-18 23:24:35 -04:00
Tom Rothamel 094827aa83 textshader: Make the index of the character available in the shader. 2024-05-18 23:17:00 -04:00
Tom Rothamel fc0e410ef2 If config.default_texshader is set, set style.default.textshader. 2024-05-18 14:54:18 -04:00
Andy_kl 3318d23a8d Allow to have the same model with 2 different default_fade 2024-05-18 10:24:42 +04:00
Tom Rothamel 234765499c Merge pull request #5517 from brainos233/vf-bold-italic
Allow use italic/bold italic instance for variable font by default
2024-05-17 23:02:49 -04:00
Tom Rothamel 44ebeddaf6 textshader: Add the jitter shader. 2024-05-17 22:53:25 -04:00
Tom Rothamel 554c2f816b textshader: Finish variable rename. 2024-05-17 22:50:33 -04:00
Tom Rothamel 98dee5f007 Move to a different approach to pausing on Android and iOS.
This is a (more or less) direct call of SDL_PauseAudio, without
any locking.

Per #5292.
2024-05-17 01:21:14 -04:00
OleSTEEP e57117ec90 Fix renpy.exports.get_sdl_dll() for Android 2024-05-16 18:57:21 -04:00
Tom Rothamel 48d84ee045 Merge pull request #5519 from OleSTEEP/master
Fix permission requesting on Android platform
2024-05-16 18:55:16 -04:00
OleSTEEP 71424d877a Fix renpy.exports.get_sdl_dll() for Android 2024-05-16 23:58:35 +03:00
Brainos ffb60c054e Allow use italic instance for variable font by default 2024-05-16 23:03:54 +08:00
Gouvernathor 899a4ac7d1 doc: typo in example 2024-05-16 14:50:04 +02:00
Tom Rothamel 2118c398bc gl2: Use cached textures, where possible. 2024-05-16 03:03:08 -04:00
Tom Rothamel a9806926bd textshader: Render text meshes using a displayable.
This makes it possible to have the mesh render depend on
texture displayables, which will allow the mesh displayable
to change if the texture displayable animates.
2024-05-16 02:51:35 -04:00
Tom Rothamel a11c36bb3a gl2: Allow Renders to be supplied to uniforms.
These become textures and are suppled to shaders.
2024-05-16 01:32:05 -04:00
Tom Rothamel f0a52916c4 textshader: Allow textshaders to take textures as arguments.
This is just supplying the argument, with the next commit
going to make use of the displayables.
2024-05-15 21:27:18 -04:00
Tom Rothamel 3292ad26f4 Merge pull request #5514 from renpy/doc-label
Tweak label documentation
2024-05-15 20:20:06 -04:00
Tom Rothamel 63433f7656 Merge pull request #5515 from renpy/cleanup-revertable
Cleanup some warnings in the revertable module
2024-05-15 20:19:24 -04:00
Gouvernathor 0a6e6fb7e1 Cleanup some warnings in the revertable module
importing __future__ is not strictly necessary as the imported values of division and with_statement could be used directly, but I think it's preferable to separate the future statement from the future import.
2024-05-16 01:14:28 +02:00
Gouvernathor ca3d291861 Tweak some more 2024-05-16 01:06:29 +02:00
Gouvernathor 6a4038b5b8 Tweak label documentation 2024-05-16 00:49:09 +02:00
Gouvernathor 97e0b8c71f Tweak display_menu
actually, arbitrary kwargs are a very bad thing to pass since as long as the specified screen exists (so, unless something is very wrong), they are just ignored
the scope's default value change is benign as long as we don't do stupid things with it and continue to call dict() on it - and it prevents stupid things we might do to it in the future to go unseen
2024-05-16 00:04:34 +02:00
Tom Rothamel 8f24a44a02 Add the zoom shader.
This is a shader that causes the text to zoom in.
2024-05-14 22:57:30 -04:00
Tom Rothamel 68a361ddd7 textshader: Add the flip shader. 2024-05-14 22:02:08 -04:00
Tom Rothamel e223e845da textshader: typewriter and slowalpha shaders. 2024-05-14 01:52:24 -04:00
Tom Rothamel 60e56e5e08 textshader: Add the wave text shader. 2024-05-13 22:30:12 -04:00
Tom Rothamel 86d750f741 gl2: Allow shaders to define local variables. 2024-05-13 22:02:56 -04:00
Tom Rothamel 3ef2e5ec58 textshader: Allow textshaders to take a function to adjust settings. 2024-05-12 23:05:33 -04:00
Tom Rothamel 70462ab3e2 Merge pull request #5501 from renpy/textshader-doc-pass
Textshader doc pass
2024-05-12 10:42:17 -04:00
Tom Rothamel db2ac67b6f gl2, textshader: Move support for scoped shader variables into gl2.
These could be useful for other kinds of shaders, so it makes sense
to move them to a common place.
2024-05-11 21:54:55 -04:00
Tom Rothamel 1ab277c8a5 Fix invalid function call in error case. 2024-05-11 09:57:03 -04:00
Tom Rothamel 19b8cfb9aa Look for live2d ion the main executable on ios.
Per #5502.
2024-05-10 21:50:32 -04:00
Tom Rothamel 3eb675c119 textshader: Fix use of undefined variable.
This doesn't actually do all that much, since displayables aren't
rendered by shaders, but it does set the field.

Fixes #5504.
2024-05-10 21:31:09 -04:00
Asriel Senna 5e981d9828 Typing, and trimming useless/obsolete code 2024-05-09 22:19:07 +02:00
Tom Rothamel 19819337a9 textshader: Allow a__ and v__ to be shader-scoped. 2024-05-09 09:35:01 -04:00
Ren'Py Bot c583894c0e Merge branch 'fix' 2024-05-09 04:30:14 -04:00
Tom Rothamel f26b014856 textshader: Add a way of documenting textshaders. 2024-05-09 01:47:47 -04:00
Tom Rothamel 5d862887dc doc: Fix typos in updater documentation.
Fixes #5500.
2024-05-08 23:29:21 -04:00
Asriel Senna 62b8260090 Fix and improve various stuff in exports
optimizing some priority choices or wasteful idioms
also some doc stuff
2024-05-09 04:39:02 +02:00
Asriel Senna 1aa83b0109 doc: rephrases and clarifications
a character is something in renpy (and in renpy dialogue), calling it a unicode character, while not particularly relevant otherwise, helps clarification
internal links = gud, x2
textshader is a tag, text shader is the feature
you can't create an entire text shader out of string interpolation - or I would be very surprised - what you can create is a textshader tag which is nice enough
2024-05-09 00:39:45 +02:00
Asriel Senna c984170eac typo last 2024-05-09 00:36:12 +02:00
Asriel Senna 01d46ae6cd doc: fix code markup and rephrase 2024-05-09 00:25:06 +02:00
Tom Rothamel 2fd6da4195 textshader,doc: Start docs. 2024-05-08 02:03:34 -04:00
Tom Rothamel 1bad7055a8 textshader: Add per-shader uniforms.
These have the form u__var, and expand to u_textshader_name_var,
though are intended to be used as positional-only in most cases.

A way of preventing uniform conflicts.
2024-05-08 02:01:43 -04:00
Tom Rothamel 77e24c0c51 textshader: Allow positional uniforms.
Rather than just one single default, allow multiple positional
shader arguments. It's just too useful not to allow.
2024-05-08 01:13:58 -04:00
Tom Rothamel e9aba8253b textshader: Supply premultiplied alpha to shaders. 2024-05-08 00:17:37 -04:00
Tom Rothamel ab9d904b19 Add tasks.json to .gitignore. 2024-05-07 22:57:33 -04:00
Tom Rothamel 376c520b75 textshader: Make the slow duration available.
The slow duration is 1 / slow_cps, or 0 if slow text is not active.
It's available in the shader, to make effects scalable by the
duration. It's also available as a multiplier that can be used
to add to extra_time.
2024-05-07 22:00:31 -04:00
Tom Rothamel 766be19326 textshader: Avoid slow effects when the CPS is 0. 2024-05-06 02:35:40 -04:00
Tom Rothamel 7a6f6385e1 textshader: Improve getting shaders.
Add config.textshader_callbacks to make it possible to change the
textshader each time it is access.

Cache text shaders once parsed.
2024-05-06 02:28:33 -04:00
Tom Rothamel 88b6373572 textshader: Improve uniform handling.
* Uniforms are checked for existence.
* The u_ prefix is no longer mandatory.
* It's possible to specify a default uniform that's used if no
  uniform name is given.
2024-05-06 01:40:48 -04:00
Tom Rothamel 9bbd594645 textshaders: Disable if not running gl2. 2024-05-06 00:25:11 -04:00
Tom Rothamel 5ce9407066 textshader: Factor out computing the redraw time. 2024-05-05 23:51:12 -04:00
Tom Rothamel dee798a5ea textshader: Allow shaders to be combined with |. 2024-05-05 22:08:10 -04:00
Tom Rothamel 2ca90a5600 textshader: Create the API.
Several changes to provide an API for the textshader system.

Add the renpy.register_textshader function.

Add config.default_textshader. This is a shader that is combined with
other textshaders, generally to provide the slow text effect while
the other textshader provides more complicated effects.
2024-05-05 21:44:48 -04:00
Tom Rothamel 3164cc9deb textshader: Use slow_time, not st.
This is meant to keep shaders from using u_text_slow_time when
u_time is needed.
2024-05-05 12:06:54 -04:00
Tom Rothamel 2d777c9f0c textshader: Use the texture, not the surface. 2024-05-05 02:06:04 -04:00
Tom Rothamel dc0b840c01 textshader: Fixes to shaders that use redraw. 2024-05-04 22:40:10 -04:00
Tom Rothamel 07adaa472e textshader: Add the shader text tag. 2024-05-04 02:10:22 -04:00
Tom Rothamel 4a1dcaf28b textshader: Add a uniform that converts from drawable to virtual. 2024-05-04 01:49:10 -04:00
Tom Rothamel 8589740e8e textshader: Work on the textual representation. 2024-05-03 23:07:24 -04:00
Tom Rothamel 0417b08ed9 Add raw_changed to ui.adjustment.
This gets the raw value, and can be used to trigger actions when
an adjustment goes out of range.
2024-05-03 02:08:07 -04:00
Tom Rothamel 88246afd66 Add RENPY_REPORT_EXCEPTIONS.
This is mostly intended for use in VS Code and similar environments.
When an exception happens, this will propagate it through Ren'Py,
allowing the debugger to inspect the state of the game.
2024-05-02 01:47:27 -04:00
Tom Rothamel ae81022b0c textshader: Move shaders into a dedicated file. 2024-05-02 01:23:23 -04:00
Tom Rothamel d3542f8bc3 textshader: Allow there to be multiple shaders in a single block.
This just implements the rendering aspects, actually having more
than one shader at a time will require the upcoming shader
text tag.
2024-05-01 23:52:02 -04:00
Tom Rothamel 10e210052d textshader: Add more uniforms to the renders. 2024-05-01 22:39:00 -04:00
Tom Rothamel ba8815cff0 textshader: Improve slow text.
* When slow is False, set u_text_slow_time to the end of the slow text
  period.
* Use different redraws for slow and not-slow text.
2024-04-30 23:21:08 -04:00
OctoSpacc a790e836e2 Create full Italian translation of The Question 2024-04-29 16:44:16 +02:00
Ren'Py Bot 4df19285a8 Merge branch 'fix' 2024-04-29 04:30:14 -04:00
Tom Rothamel 1151ac4b9e textshader: Make the glyph duration -1 when no time is assigned.
This is meant to make it more clear what text needs transition
in effects, and what should be displayed from the start.
2024-04-29 01:58:08 -04:00
Tom Rothamel 3dde152c59 textshader: Redraw time handling. 2024-04-29 01:44:25 -04:00
Tom Rothamel dc5101270d textshader: Make it easier to add new info per-glyph. 2024-04-29 01:35:22 -04:00
Tom Rothamel ea34d8f995 Allow Transform to take a Transform Matrix.
Fixes #5487.
2024-04-29 00:57:10 -04:00
Tom Rothamel 7f9ee7ba6c textshader: Create the renders once per layout, not once per frame. 2024-04-28 15:16:56 -04:00
Tom Rothamel 9fbfd99cca textshader: Read text shader config out of an object. 2024-04-28 14:35:33 -04:00
Tom Rothamel d340e41c58 textshader: First working text shaders. 2024-04-28 13:11:00 -04:00
Tom Rothamel 94c912c3ce gl2: Break the renpy.geometry shader up.
This allows for other shaders to adjust the untransformed
geometry if required. (Text shaders will likely be doing
this.)
2024-04-28 12:53:48 -04:00
octospacc ec89ca3cdc Update and improve italian translation for template and launcher 2024-04-28 18:21:00 +02:00
Tom Rothamel 3d717ed39b textshader: Add style. 2024-04-27 14:52:00 -04:00
Tom Rothamel 353f08ce13 textshader: Move blitting text into its own function.
So it will be able to serve as an alternative to shader/mesh
text.
2024-04-27 14:33:37 -04:00
Tom Rothamel 9655231fc0 Remove use of max_height.
Closes #5481, right idea, wrong change.
2024-04-26 21:20:39 -04:00
Tom Rothamel fe1023fe74 text shader: Create meshes.
This moves the conversion of positions to texture coordinates
to glyph_coordinates, where it's faster.

This also stores information about RTL and duration into
each glyph, which is then used to figure out the duration
of each glyph.

Finally, the mesh is created when it doesn't exist already,
and stored in the layout.
2024-04-26 00:54:15 -04:00
Tom Rothamel 8b57b220b9 text shader: Determine bounding box excursions for each glyph.
This is going to be used when computing the text mesh, to expand
the bounding boxes of each glyph when outside the (width, line_spacing)
default bounding box.
2024-04-26 00:54:15 -04:00
Tom Rothamel afc03e11ee Merge pull request #5480 from qTich/fix/emscripten-progress
fix: `emscripten` presplash progress
2024-04-25 22:15:14 -04:00
Tichq ae542aeb3b fix: emscripten presplash progress 2024-04-25 20:40:24 +03:00
Tom Rothamel a2529e3af5 Merge branch 'fix' 2024-04-24 21:32:36 -04:00
Tom Rothamel 5bbbd688af Restore removed line.
Fixes #5469.
2024-04-24 21:03:47 -04:00
Ren'Py Bot ff3a9c4d42 Merge branch 'fix' 2024-04-24 04:30:14 -04:00
Tom Rothamel a7c113adbc text shader: Compute the baseline of each line.
This will be used to determine the 'center' of the character.
2024-04-24 00:28:09 -04:00
Tom Rothamel 9a479f25e5 doc: Fixes.
Mostly the aftermath of undocumenting mode.

Fixes #5469.
2024-04-23 21:37:53 -04:00
Tom Rothamel 3674f45efe doc: Fixes.
Mostly the aftermath of undocumenting mode.

Fixes #5469.
2024-04-23 21:35:16 -04:00
Ren'Py Bot c8ed7059a4 Merge branch 'fix' 2024-04-23 04:30:14 -04:00
Tom Rothamel fb58d699f5 Properly filter the axis text tag.
Fixes #5470.
2024-04-22 22:23:16 -04:00
Tom Rothamel ff8e0a0cb0 Ensure the vibration time is above a minimum value.
Fixes #5474.
2024-04-22 21:45:45 -04:00
Tom Rothamel 6815ae4439 text shader: Add text meshes.
This will store the data used by a text shader.
2024-04-21 23:16:20 -04:00
Tom Rothamel d722260f71 Use the upcoming say statement for window.show. 2024-04-20 11:20:00 -04:00
Tom Rothamel 130f7f4e36 Change how window auto works.
The window hide/show statements no longer disable the window auto
flag, with new statements (window auto True, window auto False)
taking care of that.

The thinking behind this is that window hide is useful in it's own
right, but significantly less useful if it requires a matching
window auto each time.

For example, one might want to do:

     e "Dialogue"
     window hide
     show clouds with dissolve
     e "Dialogue"

and have that work.
2024-04-19 22:38:23 -04:00
Ren'Py Bot 43d0c955a4 Merge branch 'fix' 2024-04-19 04:30:55 -04:00
Tom Rothamel 9cb8b904b9 Improve and document config.statement_callbacks. 2024-04-18 22:16:57 -04:00
Tom Rothamel 980c7cfb1f Undocument mode callbacks. 2024-04-18 21:45:58 -04:00
Tom Rothamel 2c09515c4d Add some safety to MouseDisplayable, by using the default if the mouse isn't defined. 2024-04-18 21:37:02 -04:00
Tom Rothamel 94a8647291 Document last. 2024-04-18 01:01:02 -04:00
Tom Rothamel 66ab709373 Better integrate window show/hide/auto and nvl show/hide.
The two had been largely independent. The result of these changes
is that nvl operations now adjust the window show/hide state, while
the nvl <-> adv transitions won't happen if the window is hidden.

If the window is hidden, then window show will happen instead.
2024-04-17 23:50:00 -04:00
Tom Rothamel a04946905d Remove some obsolete TODOs. 2024-04-17 21:54:36 -04:00
Tom Rothamel 378950f633 Allow ruby text to inherit its color from parent text.
Fixes #5418
2024-04-16 22:23:39 -04:00
Tom Rothamel f855f8367c Merge pull request #5401 from CensoredUsername/screenlang-v1-rpyc-loading-support
Allow ren'py 8 to load .rpyc files using old-style screens.
2024-04-16 21:21:31 -04:00
Tom Rothamel 4b4f993886 Make math match. 2024-04-15 22:38:57 -04:00
Tom Rothamel 7595c32728 web filter: Get all filters working in browser. 2024-04-15 22:06:47 -04:00
Tom Rothamel cc2729257d Restrict layer names to image component names.
To fix some syntax issues. Fixes #5464.
2024-04-14 23:14:25 -04:00
Tom Rothamel c5c1b8af92 Disable debug sound during error handling.
Because it can really interfere with error handling.

And also disable it by default.
2024-04-14 22:42:46 -04:00
Tom Rothamel 6b8295a122 web filter: More work.
Filter replacement is in, as are Null and Crossfade.
2024-04-14 02:33:31 -04:00
Tom Rothamel 87dd502244 web filter: Basic infrastructure for web audio filters.
This handles uploading filters to the web audio system, identified by
numeric ids. It can also then plumb those filters in to the rest of
the system, allowing them to be used to filter audio.

Finally this adds the Biquad filter.
2024-04-13 22:02:59 -04:00
Tom Rothamel 1c7a665312 Load _audio_filter.js.
This file will contain the JS audio filters.
2024-04-13 20:32:57 -04:00
Tom Rothamel 7b24aaf5de emscripten: Fix compatibility. 2024-04-13 20:28:36 -04:00
Tom Rothamel b2ef8d5f33 Add the fps transform property.
This quantizes time inside the transform to a particular number of
frames per second. This can be used to simulate a
lower frame rate.

Per #5463.
2024-04-12 22:54:48 -04:00
Tom Rothamel 3bb93db2c4 filter: Call a deallocate function when an audio filter is deallocated.
When webaudio filters are a thing, this will let those filters
be deallocated when they are no longer needed.
2024-04-11 23:53:47 -04:00
Ren'Py Bot bad814b135 Merge branch 'fix' 2024-04-11 04:30:55 -04:00
Tom Rothamel 51393042b4 Fix downloader instructions.
Fixes #5421.
2024-04-11 01:19:49 -04:00
Tom Rothamel f4067af182 Under navigation, the TODOs button now has a count of TODOs next to it.
Fixes #5445
2024-04-10 22:17:50 -04:00
Tom Rothamel a560520af9 Document exec.py. 2024-04-09 22:09:42 -04:00
Gouvernathor 8d1b73a606 doc: Add missing parameters in display_menu signature
forgotten in e576d4d47a
2024-04-09 11:44:43 +02:00
Tom Rothamel 9e59ae470f Implement exec.py.
This change causes Ren'Py to scan for a file named exec.py, and if
found, run it.

This is intended to enable certain kinds of tools, like #5455, and
probably a bunch I haven't thought of, like debuggers.

Security:

I don't think this has security implications. It requires writing
exec.py into config.basedir. If you can do that, you can write
renpy.sh or renpy.exe. There's also a good chance you'd have
permissions to write into game/ or lib/.

So, it's basically letting you do something you could do anyway,
without restarting the game.
2024-04-08 22:22:25 -04:00
Ren'Py Bot 836b42bd78 Merge branch 'fix' 2024-04-07 22:29:18 -04:00
Tom Rothamel 10c02a4caf Do not end an interpolation expression inside brackers or parens.
This fixes an issue I caught myself where trying to slice inside an
interpolation would cause an error, because:

"[l[:100]]"

would be parsed as an expression of l[ and a format string of
:100], which is wrong.
2024-04-07 22:21:30 -04:00
Ren'Py Bot 6416aea8aa Merge branch 'fix' 2024-04-07 04:30:55 -04:00
Tom Rothamel 0ab547dd34 Document fixes. 2024-04-07 00:37:53 -04:00
Tom Rothamel f9ccc4b2e0 Generate string translations from _ren.py files.
Fixes #5458.
2024-04-06 22:15:05 -04:00
Tom Rothamel 1e5845b5b6 Typecheck achievement names. 2024-04-06 21:26:56 -04:00
Tom Rothamel d932e09cd4 Clean invalid achievement names out of persistent._achievements.
Fixes #5457.
2024-04-06 21:20:05 -04:00
Ren'Py Bot 0fda6fe389 Merge branch 'fix' 2024-04-05 04:30:55 -04:00
Tom Rothamel bc2c137c18 doc: Replace eileen mad with eileen concerned.
Fixes #5454.
2024-04-05 01:03:12 -04:00
Tom Rothamel e07a7b231d doc: Replace eileen mad with eileen concerned.
Fixes #5454.
2024-04-05 01:02:29 -04:00
Tom Rothamel c2c5e41948 fetch: Accept headers.
Fixes #5452.
2024-04-04 23:38:22 -04:00
Tom Rothamel 1357cd3990 Merge branch 'fix' 2024-04-04 02:45:19 -04:00
Tom Rothamel af2e9e2b0a Mark RPY nodes as weakly reachable.
Fixes #5447.
2024-04-02 23:05:14 -04:00
Tom Rothamel 5c5475a1fa py2: Fix weakref pickling.
NoneType isn't a function in Python 2, so one is provided.

Fixes #5446.
2024-04-02 22:28:38 -04:00
Tom Rothamel 86aa7722a1 filter: Add __repr__ and .constructor()
The constructor function returns a JS/Python function that
creates a filter.
2024-04-01 18:38:55 -04:00
Gouvernathor ad5f042de9 Show the error when linting cds's next 2024-04-01 22:20:07 +02:00
Elckarow 1c29911877 check for warp_function as well 2024-03-31 10:17:35 -04:00
Tom Rothamel 27b2fb08b8 Merge pull request #5433 from Elckarow/fit-warp-interp
fix `warp` interpolation
2024-03-31 10:10:02 -04:00
Tom Rothamel f88f1013dc Add u_drawable_size.
A new standard uniform that gives the viewport's drawable size.
2024-03-30 22:37:39 -04:00
Tom Rothamel 8051c69b8e gl2: Log the shader source when an error happens. 2024-03-30 22:26:49 -04:00
Elckarow 044c608354 fix nvl hide 2024-03-30 00:34:27 -04:00
Tom Rothamel bc9fb905ed Merge pull request #5426 from Elckarow/fix-nvl-hide
Fix nvl hide
2024-03-30 00:31:09 -04:00
Tom Rothamel 83d157e384 Merge pull request #5437 from qTich/feature/loader-loadable
add: `tl` keyword into `renpy.loadable` method
2024-03-30 00:30:31 -04:00
Tom Rothamel 69b8e0a945 doc: Filter reuse. 2024-03-29 00:36:58 -04:00
Tom Rothamel 883b6ad0cb filter: Add some bounds checks. 2024-03-28 21:42:58 -04:00
Tom Rothamel 2f8325a773 Disable sound in the launcher.
Per #5429.
2024-03-27 23:10:12 -04:00
Tom Rothamel 79ec01fe1a filter: Pad channels with silence.
This ensures that Delay, Comb, and Reverb filters generally have
time to complete.
2024-03-27 00:44:48 -04:00
Tom Rothamel 231dbeb6b9 filter: Raise the reverb lowpass cutoff. 2024-03-26 22:44:00 -04:00
Tom Rothamel f0e5f5b8ca doc: Audio filters. 2024-03-26 02:08:53 -04:00
Tom Rothamel 1c9c718220 doc gen: Make the keywords more diffable. 2024-03-26 00:15:57 -04:00
Tom Rothamel 328062e089 doc: Music functions. 2024-03-25 22:44:53 -04:00
Tichq 93ee54f74f add: tl keyword into renpy.loadable method 2024-03-26 02:09:30 +03:00
Elckarow 881aeacc69 check for warp_function as well 2024-03-24 23:16:46 +01:00
Tom Rothamel 7ff7e6edf4 filter: Documentation for filters. 2024-03-24 13:59:42 -04:00
Tom Rothamel 75fd6f115f filter: Add __reduce__ methods to AudioFilter classes.
This allows the filters to be saved and restored.
2024-03-24 12:57:56 -04:00
Tom Rothamel 962547cd12 filter: Remove check_subchannels.
This isn't needed, as all of the filters take the same number of
subchannels (right now, left and right).
2024-03-24 12:35:25 -04:00
Tom Rothamel eb9990d424 filter: Allow each channel to have a separate delay. 2024-03-23 23:19:24 -04:00
Tom Rothamel b81050babb filter: Improve the Reverb. 2024-03-22 23:54:45 -04:00
Tom Rothamel fe900d1817 filter: Improve Comb, add WetDry.
Comb can now give the audio with or without the dry audio. The
WetDry audio makes it possible to specify the wet and dry mix.
2024-03-22 23:31:56 -04:00
Tom Rothamel b22559954c filter: Untuned reverb.
Based on https://itnext.io/algorithmic-reverb-and-web-audio-api-e1ccec94621a.
2024-03-22 03:07:34 -04:00
Tom Rothamel 363777cdc8 filter: Replace gain with multiplier.
More algorithms seem to come with multipliers, and gain can
be implemented using a multiplier.
2024-03-22 03:07:34 -04:00
Tom Rothamel d1ec960bda filter: Initial take on a comb filter. 2024-03-22 03:07:34 -04:00
Tom Rothamel f917d63e31 Merge pull request #5427 from qTich/feature/set_audio_filter-props
add: `duration` parameter & allow filter to be set to `None` as can be done directly.
2024-03-21 17:16:19 -04:00
Tichq 86b4e20dfb add: duration parameter & allow filter to be set to None as can be done directly. 2024-03-21 16:00:24 +03:00
Tom Rothamel 7b3fb20ae6 filter: Process audio in chunks.
To allow .01s delays.
2024-03-20 20:25:19 -04:00
Tom Rothamel fc3b991c88 filter: Gain should take gain in db. 2024-03-20 02:07:36 -04:00
Tom Rothamel a8d77bf318 filter: Fix various issues with filters. 2024-03-20 02:04:19 -04:00
Tom Rothamel 26b115106b filter: Implement the Delay filter.
with some fixes for other filters.
2024-03-20 00:15:18 -04:00
Tom Rothamel ebe5e8ee14 filter: Drop the number of subchannels to 2.
Until we support more otherwise.
2024-03-20 00:15:18 -04:00
Elckarow 5f02188e4c fix nvl hide 2024-03-19 14:57:32 +01:00
Ren'Py Bot 6aedd4c58f Merge branch 'fix' 2024-03-19 04:30:05 -04:00
minger0 184be0b5ec Add to web.rst the details where to find the generated web files 2024-03-18 14:14:26 -04:00
Tom Rothamel 78af5e8f5d Merge pull request #5423 from minger0/patch-1
Add to web.rst the details where to find the generated web files
2024-03-18 14:13:50 -04:00
Tom Rothamel 51841c8687 filter: Mix and Gain filters. 2024-03-18 01:53:09 -04:00
Tom Rothamel c36330de21 filter: Add Null()
This simply copies input to output.

By adding this, it's now possible to be sure that (in filter.pyx,
_not_ renpysound), an AudioFilter will never be None. This in turns
removes a lot of special casing.
2024-03-18 01:37:36 -04:00
Tom Rothamel 585683f653 filter: Add FilterList.
This encapsulates multiple filters into a single object that
can be iterated with and without the GIL.
2024-03-18 01:10:56 -04:00
Tom Rothamel 503007274d filter: Crossfade between filters.
This is similar to the way music fades out by default - by using
one frame to crossfade the audio filter, leveles change relatively
slowly and a pop is avoided.
2024-03-18 00:54:40 -04:00
Tom Rothamel 0a6bd6c93e filter: Rename Sequence. 2024-03-17 23:30:07 -04:00
Tom Rothamel 0af51330b5 filter: Document and rename Biquad, remove Lowpass. 2024-03-17 23:29:30 -04:00
Tom Rothamel 8e64c73887 filter: Implement the biquad filter. 2024-03-17 17:01:30 -04:00
Tom Rothamel 2d2867ef21 filter: Pass the sample rate to the filter. 2024-03-16 22:19:06 -04:00
minger0 2c945dc13e Add to web.rst the details where to find the generated web files 2024-03-16 22:02:12 +01:00
Tom Rothamel b29ef94141 filter: Add a function to expose the audio sample rate. 2024-03-16 02:07:57 -04:00
Tom Rothamel 42e3b2600c filter: Include filter in the build process. 2024-03-15 17:08:32 -04:00
Tom Rothamel 6e532f1b08 filter: Add set_audio_filter(replace=True)
To give the option of effects where the filter is replaced
while music is playing.
2024-03-15 03:01:36 -04:00
Tom Rothamel e0718d9143 filter: Low-level public API. 2024-03-15 02:15:03 -04:00
Tom Rothamel 554b019218 filter: Work to support filter composition.
* SequenceFilter is a filter that takes multiple filters as
  children, and pipelines them in sequence.
* to_audio_filter turns lists into SequenceFilters, and typechecks.
* The check_subchannels methods make sure that audio filters are
  compatible.
2024-03-15 01:46:38 -04:00
Tom Rothamel 552e555204 filter: Add filter.pyx to the import system. 2024-03-14 23:41:14 -04:00
Tom Rothamel d25bbaa01c filter: Store and use the audio filter. 2024-03-14 01:21:48 -04:00
Tom Rothamel aa0925d1db filter: Basic audio filtering.
This converts the sound to float, and sends it to the audio filter
before mixing. This also includes the initial implementation of the
AudioFilters, using SoundBuffers to store the audio.
2024-03-13 02:04:53 -04:00
Tom Rothamel 44145febf4 Add an empty renpy.audio.filter module. 2024-03-12 01:29:07 -04:00
Tom Rothamel dbdb439ccb Fix the one non-deprecation warning. 2024-03-12 01:03:37 -04:00
Tom Rothamel 457ad4ddb5 Add a way of hiding ffmpeg deprecations.
While we're stuck on an old version that supports Win7.
2024-03-12 00:00:02 -04:00
Tom Rothamel 229b80a76c filter: Accept audio_filter as an argument to renpysound.play.
And renpysound.queue, and propagate it through the system. This
lets an audiofilter defined in Python and Cython be available to
the C.
2024-03-11 23:16:47 -04:00
Tom Rothamel dd5475bd5f Merge pull request #5411 from qTich/fix/sync-fetch
fix: `FetchError` case & check on `renpy.emscripten` before import `requests`
2024-03-11 10:52:31 -04:00
Tichq 9ad6f8c3ed fix: FetchError case & check on renpy.emscripten before import requests 2024-03-11 17:06:19 +03:00
CensoredUsername a61595021e Allow ren'py 8 to load .rpyc files using old-style screens.
Ren'py 8 still has all the code needed to support these files, but
as the ast module of python has changed between 2.7 and 3.9 it becamse
impossible to even load these files as the unpickling process would error
due to unknown classes. This means nearly any ren'py 6.17 game cannot be ported
over without a recompile.

This commit fixes this by intercepting the construction of these classes
using pre-existing mechanisms in renpy.compat.pickle. When not needed this
adds only a single equality check to the critical path of unpickling files.
2024-03-11 12:40:17 +01:00
Tom Rothamel 96e77332a2 Move to F32 audio.
We'll be doing audio processing in F32 anyway, so if conversion is
necessary, let's let SDL do it. And if it's not, we have extra
headroom.
2024-03-10 21:10:42 -04:00
Tom Rothamel 0e8e8944fa Merge branch 'fix' 2024-03-10 18:23:00 -04:00
Tom Rothamel 83aecea50b Revert "Remove duplicate say-related functions from 00library."
This reverts commit 122dbf2619.

Fixes #5409.
2024-03-10 17:04:58 -04:00
Ren'Py Bot b7f4812bee Merge branch 'fix' 2024-03-10 04:30:05 -04:00
shawna-p 744b503e84 Add box_align and justify for boxes 2024-03-09 20:15:37 -05:00
Tom Rothamel 32a372a56e Merge pull request #5398 from DipeshAggarwal/fix
Update transistions.rst and atl.rst
2024-03-09 15:42:01 -05:00
Bas Couwenberg 11c4a4e7f1 Fix 'if' typo
Replace 'inf' with 'if'.
2024-03-09 15:39:34 -05:00
Tom Rothamel 44a43abd34 Merge pull request #5402 from sebastic/patch-1
Fix 'if' typo
2024-03-09 15:38:54 -05:00
Bas Couwenberg 457aa55941 Fix 'if' typo
Replace 'inf' with 'if'.
2024-03-09 13:52:01 +01:00
Tom Rothamel c9bde1dd9e Fix bad call. 2024-03-08 22:23:34 -05:00
Tom Rothamel ae298fd2a8 Use proxies everywhere else.
Fixes #5400.
2024-03-08 22:01:34 -05:00
Tom Rothamel b42e1954e4 Rewrite the downloader in terms of requests.
This can't use renpy.fetch, as its purpose is to report progress.
2024-03-08 21:43:16 -05:00
Tom Rothamel e9b77344c2 sync: Rewrite in terms of renpy.fetch. 2024-03-08 21:27:09 -05:00
Tom Rothamel 784fbff0e0 Use the proxies in the updater. 2024-03-08 20:37:02 -05:00
Tom Rothamel 3d6c00dc64 Make the list of proxies available in renpy.fetch. 2024-03-08 20:23:05 -05:00
Tom Rothamel 6b5c555c99 Fix incorrect use of builtins. 2024-03-07 21:46:47 -05:00
Tom Rothamel 5abad0df54 Add the min and max arguments to BarValues.
So one can write FieldValue(persistent, "option", min=1.0, max=5.0)
rather than FieldValue(persistent, "option", range=4.0, offset=1.0),
which is a bit harder to read.
2024-03-07 20:49:41 -05:00
Dipesh Aggarwal 928387e2d8 Update atl.rst 2024-03-07 17:27:30 +05:30
Dipesh Aggarwal cb8b5d3de8 Update transitions.rst
Fix a broken ref to dialogue-window-management
2024-03-07 17:09:08 +05:30
Tom Rothamel ce58c4e4b1 Add keyboard_focus_insets.
The keyboard_focus_insets style property makes it possible to
have keyboard focus work with overlapping buttons, by artificially reducing
the size of the buttons to remove the overlap, when determining keyboard focus.

Closes #4620.
2024-03-06 21:51:49 -05:00
Tom Rothamel 18d478545c Merge branch 'fix' 2024-03-06 01:29:17 -05:00
Dipesh Aggarwal c8b76750c3 Update template_projects.rst
config.build_name doesn't exist. Replaced it with build.name
2024-03-06 01:27:07 -05:00
Dipesh Aggarwal 754d50c345 Update changelog.rst
Fix link to the vertical property and remove unncessary ` after renpy.fetch
2024-03-06 01:26:58 -05:00
Tom Rothamel 5564ca3bc0 Merge pull request #5392 from AbdulGoodLooks/patch-3
Fix typos in changelog.rst
2024-03-06 01:23:24 -05:00
Abdul f774d14e04 Fix typos in changelog.rst
posssible -> possible
gtlphs -> glyphs
2024-03-05 22:09:36 +00:00
Dipesh Aggarwal d836d94bac Update template_projects.rst
config.build_name doesn't exist. Replaced it with build.name
2024-03-06 00:03:36 +05:30
Dipesh Aggarwal e156bae357 Update changelog.rst
Fix link to the vertical property and remove unncessary ` after renpy.fetch
2024-03-05 23:58:25 +05:30
Ren'Py Bot d60a00d118 Merge branch 'fix' 2024-03-05 04:30:05 -05:00
Tom Rothamel e0fd979c54 Bump version. 2024-03-05 01:39:20 -05:00
Tom Rothamel 60eaa0877b doc: Fix incorrect caveat. 2024-03-04 22:45:05 -05:00
Tom Rothamel 1a30d4dd8e doc: Credits and sponsors. 2024-03-04 21:13:46 -05:00
Tom Rothamel dcbfe5ce0d doc: Document changes from renpy-build. 2024-03-04 21:03:04 -05:00
Tichq 85b71f2295 fix: nvl_hide transition 2024-03-04 20:59:39 -05:00
Tom Rothamel 1ee2ee468f Undocument gl_powersave = "auto".
It hasn't been supported for a while.

Fixes #5387.
2024-03-04 20:57:41 -05:00
Tom Rothamel b239050801 Merge pull request #5382 from mal/snap-back-fix
Avoid trying to snap when not snapping
2024-03-04 20:54:28 -05:00
Tom Rothamel b7abc2bbc9 doc: Changes. 2024-03-04 20:53:39 -05:00
Ren'Py Bot f3477da262 Merge branch 'fix' 2024-03-04 04:30:05 -05:00
Tom Rothamel 51b5df3ea6 Documentation. 2024-03-04 00:53:13 -05:00
Tom Rothamel 8816700e78 font: Avoid translating the rotated glyph. 2024-03-03 21:18:14 -05:00
Tom Rothamel b29b132245 font: Fix the rotation of glyphs when computing bounds. 2024-03-03 20:38:17 -05:00
Tom Rothamel bc561be9fe console: Add a warning if a represention is shortened.
Fixes #5388.
2024-03-02 21:15:31 -05:00
Ren'Py Bot c468719abb Merge branch 'fix' 2024-03-02 04:30:05 -05:00
Tom Rothamel c049a5cff2 text: Get text metrics through harfbuzz.
This makes it much more straightforward to get the vertical metrics,
when those are required.

Harfbuzz seems to place underlines a bit differently, but since it
doesn't look bad, this is acceptable.
2024-03-02 02:59:07 -05:00
Tom Rothamel 74cd45f434 text: Improve some terminology.
Most notably, x_offset was used for both harfbuzz's offsets, and
for the amount that Ren'Py adjusted text to match drawable to
virtual layout.

Also make clear that the names refer to horizontal text, and
are reversed for vertical text.
2024-03-01 22:47:53 -05:00
Ren'Py Bot 7868dbd4a7 Merge branch 'fix' 2024-03-01 04:30:05 -05:00
Tom Rothamel 123b3bfa1d Add robustness to shader errors being in any encoding. 2024-02-29 22:30:34 -05:00
Tom Rothamel f3f67cab04 Correct underline and strikeout when glyph.advance is non-integer.
Fixes #5332.
2024-02-29 21:08:36 -05:00
Tom Rothamel e150ef680a Fix bad revert-reversion.
Fixes #5384.
2024-02-27 22:13:42 -05:00
Ren'Py Bot 74d69259e8 Merge branch 'fix' 2024-02-27 04:30:56 -05:00
do10HM c8175ea75a Fix typo in code example 2024-02-26 20:42:19 -05:00
Tom Rothamel 5bd001c50b Merge pull request #5383 from do10HM/patch-1
Fix typo in code example
2024-02-26 20:41:50 -05:00
Tom Rothamel 1754fdd458 lint: Avoid erroring out due to incomplete images.
It's possible to have an an image (in this case, a layered image)
that isn't complete at runtime, but is at runtime. These shouldn't
cause errors when unknown attributes are used - that's the creator's
problem.
2024-02-26 20:39:58 -05:00
do10HM a7ae398908 Fix typo in code example 2024-02-26 17:14:09 -08:00
Mal Graty 8a7daec3bc drag: Avoid trying to snap when not snapping 2024-02-26 18:09:32 +00:00
Tom Rothamel 48c0012f56 Allow the user to filter out translations when navigating by file.
Fixes #3567.
2024-02-25 22:26:43 -05:00
Ren'Py Bot 8f56b41c02 Merge branch 'fix' 2024-02-25 04:30:56 -05:00
Tom Rothamel 097e680064 doc gen: Generate documetation for cython w/o :args:.
Per discussion on #5356.
2024-02-24 21:52:55 -05:00
Ren'Py Bot 4c756b2238 Merge branch 'fix' 2024-02-24 04:30:56 -05:00
ImJustAQ d57ea734cb Fix typos 2024-02-23 20:53:04 -05:00
Tom Rothamel 2744a40248 Merge pull request #5380 from ImJustAQ/master
Fix typos n stuff
2024-02-23 20:52:32 -05:00
Tom Rothamel 5a4a320f49 Remove symlinks when opening files in the editor.
Fixes #5379.
2024-02-23 20:41:55 -05:00
ImJustAQ 40dd9c4a42 Fix typos 2024-02-23 11:47:49 -03:00
Tom Rothamel f4f18d8da5 Make synchro_start the default.
In response to vn;conf discussion.
2024-02-22 23:26:17 -05:00
Tom Rothamel 44db8893ab Fix use of incorrect class. 2024-02-22 19:51:38 -05:00
Tom Rothamel fa7c68c18e Rep SplineMatrix when it could be useful. 2024-02-21 22:55:02 -05:00
Tom Rothamel 6f741be169 Merge branch 'fix' 2024-02-21 22:37:56 -05:00
Tom Rothamel 4361fff535 Add SplineMatrix.
This is a class that lets the creator use a spline to interpolate
between ColorMatrix-es and TransformMatrix-es.

Fixes #5376.
2024-02-21 22:37:45 -05:00
Tom Rothamel 3898c1ed32 atl: Warn the user when a spline is given the wrong type.
Fixes #5367.
2024-02-21 21:09:29 -05:00
Ren'Py Bot 1199e7defe Merge branch 'fix' 2024-02-20 04:30:56 -05:00
Tom Rothamel abbbd7bfaf Actually use the renios interface package.
Not just import it.
2024-02-20 01:53:23 -05:00
Tom Rothamel 233fbf4401 Fix bad merge. 2024-02-19 21:13:04 -05:00
Ren'Py Bot 5694fee81b Merge branch 'fix' 2024-02-19 21:12:18 -05:00
Tom Rothamel 2dc533170d Use a renios-specific text-mode interface object.
Fixes #5372.
2024-02-19 20:54:45 -05:00
Tom Rothamel 107cabeadd Merge branch 'fix' 2024-02-19 19:51:39 -05:00
Tom Rothamel 6226014005 Allow weakrefs to be pickled.
Or rather, allow them to be pickled, but then broken during pickling.

Fixes #5365.
2024-02-19 02:05:54 -05:00
Tom Rothamel e596f42338 launchjer: Only delete template files that exist.
Fixes #5368.
2024-02-19 01:55:36 -05:00
Tom Rothamel f4b3f14f13 Allow blur == 0, and clamp blur to >= 0.
Fixes #5369.
2024-02-18 22:10:02 -05:00
Tom Rothamel 8b45464802 Handle at transform: with 2 tokens of lookahead. 2024-02-17 23:59:54 -05:00
Tom Rothamel 1601456255 Disallow with from being part of an image name. 2024-02-17 23:23:28 -05:00
Tom Rothamel 72adb7f78d Revert "Revert "Document image name specific keywords.""
This reverts commit c40d1cd68c.
2024-02-17 23:21:31 -05:00
Tom Rothamel 5e4617df86 Revert "Revert "Relax what Ren'Py considers to be a keyword.""
This reverts commit d339e17f39.
2024-02-17 23:21:21 -05:00
Tom Rothamel d339e17f39 Revert "Relax what Ren'Py considers to be a keyword."
This reverts commit e29854e0b4.
2024-02-17 23:20:18 -05:00
Tom Rothamel c40d1cd68c Revert "Document image name specific keywords."
This reverts commit 6a9a0c5d59.
2024-02-17 23:20:18 -05:00
Tom Rothamel 14595ec106 Revert "Relax what Ren'Py considers to be a keyword."
This reverts commit e29854e0b4.
2024-02-17 23:19:06 -05:00
Tom Rothamel 4d3b8dd790 Revert "Document image name specific keywords."
This reverts commit 6a9a0c5d59.
2024-02-17 23:18:56 -05:00
Ren'Py Bot 65ad9fe72b Merge branch 'fix' 2024-02-17 04:30:56 -05:00
Tom Rothamel 6a9a0c5d59 Document image name specific keywords. 2024-02-16 22:16:48 -05:00
Tom Rothamel e29854e0b4 Relax what Ren'Py considers to be a keyword.
Names that Ren'Py uses in other places (like image) are illegal
becase those names are keywords, when there's no need to be. So
this removes most keywords, and makes other words only keywords
when used in image specifiers.

This is largely informed by the way the language has been evolving
to mostly use Python names as keywords, and also by the way Python
now has some soft keywords.

Per #5366.
2024-02-16 22:08:11 -05:00
Ren'Py Bot 279e4d8789 Merge branch 'fix' 2024-02-16 04:30:56 -05:00
Tom Rothamel cf3163d37b Adding a new focus should cause the focus to update.
Fixes #5358.
2024-02-15 22:48:50 -05:00
Tom Rothamel 9a6b31eba9 Merge pull request #5362 from qTich/fix/nvl_hide
fix: `nvl_hide` transition
2024-02-15 19:22:15 -05:00
Tichq 88940b7c9d fix: nvl_hide transition 2024-02-16 01:50:04 +03:00
Ren'Py Bot a168314f57 Merge branch 'fix' 2024-02-14 01:46:18 -05:00
Tom Rothamel 609930bedb Mark newly created transforms as unique.
In the various layer transform functions. This is a speedup, and also
a somewhat hacky fix - as it means the transform will be used, rather
than copied, and hence the state available to be propagated.

Fixes #5358.
2024-02-14 01:46:05 -05:00
Tom Rothamel d779f385d9 When processing at-lists, check for ATL after transforms. 2024-02-14 01:45:57 -05:00
Tom Rothamel 322291286a Mark newly created transforms as unique.
In the various layer transform functions. This is a speedup, and also
a somewhat hacky fix - as it means the transform will be used, rather
than copied, and hence the state available to be propagated.

Fixes #5358.
2024-02-14 01:44:21 -05:00
Tom Rothamel 7bf86d6851 When processing at-lists, check for ATL after transforms. 2024-02-14 01:06:17 -05:00
Tom Rothamel f75ddca122 Merge branch 'fix' 2024-02-13 21:53:31 -05:00
Dipesh Aggarwal 8ba903c319 Update transitions.rst 2024-02-13 10:05:50 -05:00
Tom Rothamel 55b20e23a5 Merge pull request #5353 from DipeshAggarwal/patch-2
Fix broken link to dialogue-window-management in sphinx/source/transitions.rst
2024-02-13 10:03:21 -05:00
Dipesh Aggarwal 44905b89d3 Update transitions.rst 2024-02-13 18:22:13 +05:30
Dipesh Aggarwal 3cdb662d2b Update transitions.rst 2024-02-13 18:16:50 +05:30
Tom Rothamel d49f402ad9 Hide transient replaced text with "replaced", not "hide".
Fixes #5351.
2024-02-12 22:47:12 -05:00
Tom Rothamel b04e8c6838 Add an API to change the event used to hide a transient displayable. 2024-02-12 22:46:58 -05:00
Tom Rothamel 9ae3d31d53 Remove debug print. 2024-02-11 23:13:17 -05:00
Tom Rothamel 10cc613cc7 Merge branch 'fix' 2024-02-11 22:49:19 -05:00
Tom Rothamel 40a8869842 Use the new texture functions in Model. 2024-02-11 14:17:09 -05:00
Tom Rothamel 713d56021c Add renpy.display.im.render_for_texture.
An internal API that's used to grab a GL2Texture, if possible, and
a Render if not.
2024-02-10 23:20:01 -05:00
Abdul 51caec89d1 Fix typos 2024-02-10 15:34:24 -05:00
Abdul 21ebaaa633 Fix typos 2024-02-10 15:33:55 -05:00
Tom Rothamel 825b1192d4 Merge pull request #5347 from AbdulGoodLooks/patch-2
Fix typos
2024-02-10 15:27:24 -05:00
Tom Rothamel 45954a6eed Merge pull request #5346 from AbdulGoodLooks/patch-1
Fix typos
2024-02-10 15:27:09 -05:00
Tom Rothamel 7072ca6d6e fetch: Allow fetch to take params.
To make it easier to just pass GET parameters to a website, without
having to remember the right way to encode them.
2024-02-10 15:26:12 -05:00
Tom Rothamel 3d1d42f856 Make renpy.fetch work in more places.
It now works:

* During the init phase.
* Inside an interaction.
* And as before, outside an interaction.
2024-02-10 15:26:03 -05:00
Ren'Py Bot 15f833cd88 Merge branch 'fix' 2024-02-10 04:30:56 -05:00
Tom Rothamel 634ff223a0 doc: Recent changes. 2024-02-09 23:32:36 -05:00
Tom Rothamel 6b379eb1a7 live2d: Automatically adjust config.max_texture_size.
To prevent live2d textures from being loaded small.
2024-02-09 22:22:18 -05:00
Tom Rothamel 43dcd36d45 live2d: Directly use unoptimized textures.
Unoptimized means that we don't have transparent pixels cropped
out. This is the format live2d expects, and so using it will
ensure that the texture can be used directly avoiding a
render-to-texture.
2024-02-09 22:22:12 -05:00
Tom Rothamel 5e14531909 Rename config.fbo_size to config.max_texture_size, and doc.
Some games want to use very large textures in live2d, so this needs
to be available.
2024-02-09 22:16:17 -05:00
Tom Rothamel e776ed3746 live2d: Automatically adjust config.max_texture_size.
To prevent live2d textures from being loaded small.
2024-02-09 22:15:24 -05:00
Tom Rothamel 20022c7ff6 Rename config.fbo_size to config.max_texture_size, and doc.
Some games want to use very large textures in live2d, so this needs
to be available.
2024-02-09 22:14:41 -05:00
Tom Rothamel ef0b676972 Revert "live2d: Grow the FBO to fit all textures."
This reverts commit 476ef5cd74.
2024-02-09 18:43:00 -05:00
Tom Rothamel 83fd684140 Revert "Ensure that FBO resizing takes place in the main thread."
This reverts commit 2ee6001306.
2024-02-09 18:42:50 -05:00
Tom Rothamel c548e82728 Revert "Fix failure to start."
This reverts commit 9133530f8d.
2024-02-09 18:42:38 -05:00
Abdul 4a936c6199 Fix typos 2024-02-08 23:39:55 +00:00
Abdul 07f5a1193f Fix typos 2024-02-08 23:28:53 +00:00
Tom Rothamel 9133530f8d Fix failure to start. 2024-02-07 23:31:15 -05:00
Tom Rothamel 2ee6001306 Ensure that FBO resizing takes place in the main thread. 2024-02-07 02:37:58 -05:00
Tom Rothamel f5aa3dbd34 live2d: Directly use unoptimized textures.
Unoptimized means that we don't have transparent pixels cropped
out. This is the format live2d expects, and so using it will
ensure that the texture can be used directly avoiding a
render-to-texture.
2024-02-07 02:25:04 -05:00
Tom Rothamel 476ef5cd74 live2d: Grow the FBO to fit all textures.
This ensures that Ren'Py will be able to load all Live2D textures
that the game uses at full resolution, provided the system supports
that.

Fixes #5293.
2024-02-06 22:18:04 -05:00
Ren'Py Bot 29ec8a9bf8 Merge branch 'fix' 2024-02-06 04:30:56 -05:00
Tom Rothamel 84eb4303f9 Allow template games to work with missing .rpy files.
Fixes #5342.
2024-02-05 21:36:52 -05:00
Tom Rothamel fb2e9d49b5 Fix the documented names of build.time and build.info. 2024-02-05 18:31:40 -05:00
Tom Rothamel 4cfc9fbc65 Merge pull request #5339 from renpy/import-urllib
Better urllib import
2024-02-05 09:48:03 -05:00
Gouvernathor b047e69c86 Better urllib import 2024-02-05 11:19:40 +01:00
Tom Rothamel d6a687804e fetch: Allow fetch to take params.
To make it easier to just pass GET parameters to a website, without
having to remember the right way to encode them.
2024-02-04 22:36:45 -05:00
Tom Rothamel ae8af536d8 Make renpy.fetch work in more places.
It now works:

* During the init phase.
* Inside an interaction.
* And as before, outside an interaction.
2024-02-04 22:01:54 -05:00
Tom Rothamel 416e7608da Make the secret progress screen easier on my old eyes. 2024-02-03 23:49:02 -05:00
Ren'Py Bot c1db32003f Merge branch 'fix' 2024-02-03 12:10:00 -05:00
Tom Rothamel 9e922b23ea update: Include the current version when fetching the channels URL.
This will let the server be able to choose to offer a different
set of downloads based on what version of Ren'Py is in use.
2024-02-03 12:09:34 -05:00
Gouvernathor dd740a8b95 Fix ukr translation
fixes #5333
See c2c094fbf6 for the regex
2024-02-03 18:08:30 +01:00
Tom Rothamel 342af0cbdd update: Include the current version when fetching the channels URL.
This will let the server be able to choose to offer a different
set of downloads based on what version of Ren'Py is in use.
2024-02-03 12:06:19 -05:00
Tom Rothamel b5345274b0 py2: Fix syntax error in susbtitutions. 2024-02-02 20:23:47 -05:00
Ren'Py Bot 29c29b24f3 Merge branch 'fix' 2024-02-02 04:30:56 -05:00
Tom Rothamel 8369fe8127 Merge pull request #5331 from renpy/opti-substitute
Fix optimization of string substitution
2024-02-01 19:00:36 -05:00
Tom Rothamel fc89fc4c05 update, py2: Monkeypatch os.makedirs, so 7.7 can update.
This lets 7.7 work despite calling os.makedirs with exist_ok=True.
2024-02-01 18:52:13 -05:00
Tom Rothamel 50f912e9ca update, py2: Make the updater py2 compatible.
By removing the use of exist_ok in os.makedirs.
2024-02-01 18:23:14 -05:00
Gouvernathor 2e0c0667bc Fix optimization of string substitution 2024-02-01 22:52:45 +01:00
iivusly 96ccfe1028 Update chromeos.rst spelling mistakes 2024-02-01 13:18:33 -05:00
Tom Rothamel e310687ad2 Merge pull request #5328 from iivusly/patch-1
Update chromeos.rst spelling mistakes
2024-02-01 13:18:09 -05:00
iivusly e2f028fe7a Update chromeos.rst spelling mistakes 2024-02-01 09:16:59 -08:00
Tom Rothamel 9619ae80bc Merge branch 'fix' 2024-02-01 00:24:03 -05:00
Tom Rothamel fefa4c07ed Document the updater changes. 2024-01-31 23:39:03 -05:00
Tom Rothamel 559343a591 update: Only accept identity encoding.
The streaming downloader can't handle non-identity encodings, and
the rpu format won't benefit from it anyway.

This also adds a timeout.
2024-01-31 23:11:33 -05:00
Tom Rothamel 56b07a6ab0 distribute: Write update.ecdsa in binary mode.
This fixes a problem on Windows where the file was being signed
in binary mode, but written in text mode, preventing the update
from proceeding.
2024-01-31 22:24:01 -05:00
Tom Rothamel f3f69614c1 distribute: Write update.ecdsa in binary mode.
This fixes a problem on Windows where the file was being signed
in binary mode, but written in text mode, preventing the update
from proceeding.
2024-01-31 22:16:13 -05:00
Gouvernathor 69108223cb Merge branch 'master' into at-partial 2024-01-31 18:39:17 +01:00
Gouvernathor 406693c920 Update incompat for new version (and add link) 2024-01-31 18:10:21 +01:00
Tom Rothamel 2bed8513f7 Allow input to take an action.
This makes it easier to call a function on enter, without needing
to write a custome Input value.

Fixes #4936.
2024-01-30 21:22:27 -05:00
Tom Rothamel 40ff25241f Merge branch 'fix' 2024-01-29 23:59:20 -05:00
Tom Rothamel 272f0819fb Add _scene_show_hide_transition to the list of non-builtins.
Fixes #5321.
2024-01-29 22:52:05 -05:00
Tom Rothamel c3f38087ab Remove the build cache.
This was only used for building Ren'Py, and mostly used because
building atom took forever. With RPU updates, this causes problems,
so I'm removing it.

Fixes #5315.
2024-01-29 08:56:31 -05:00
Ren'Py Bot c5a143cce4 Merge branch 'fix' 2024-01-29 00:29:27 -05:00
Alexandre Detiste 9f9a9106c7 typo (#5317)
Co-authored-by: a-detiste
2024-01-28 22:55:39 +01:00
Gouvernathor 0bad2e675c Partially redo 8d5b1b5 and remove dualangle_or_float_or_none
None as an anchorangle wasn't supported (it fails at the setter phase in an expectable way).
The use in atl.py was simplified before, then undone for reasons of git revert only.
2024-01-28 22:54:35 +01:00
Tom Rothamel 75b49e7f24 doc: Typo in changelog. 2024-01-28 11:06:30 -05:00
Ren'Py Bot 7228e76a01 Merge branch 'fix' 2024-01-28 04:30:06 -05:00
Tom Rothamel 318fd0e96e Update fix branch, start new master branch. 2024-01-27 22:21:15 -05:00
Tom Rothamel 259fa14f8c Deal with transparent animated presplashes.
Fixes #5313.
2024-01-27 00:33:52 -05:00
Tom Rothamel 0a5cadc008 Merge pull request #5312 from mal/fix-rollback-a-little-more
Ensure that all checkpoints are tracked
2024-01-26 19:25:06 -05:00
Mal Graty d684670e6a rb: Ensure that all checkpoints are tracked
Once the hard_rollback_limit is exceeded, hard checkpoints are added to
the number of blocked checkpoints, ensuring that when totalled limit and
block counts total the number of hard checkpoints currently in the log.

Now that the entire log is counted, it makes it safe to count hard
checkpoints out of the log, first from the blocked count, and then from
the limit count, never dropping below zero.
2024-01-27 00:13:20 +00:00
Andy_kl 951e59b1f5 lint: Fix language statisitcs count for TranslateSay nodes. 2024-01-26 21:33:48 +04:00
Mal Graty 5aff29acaf Fix compat for transitions_use_child_placement
Fixes #5309.
2024-01-26 11:39:36 +00:00
Tom Rothamel 12759d454e Fix circular import. 2024-01-25 23:01:49 -05:00
Tom Rothamel b2720b81b7 On read, simplify the position type to int, absolute, or float.
If possible (when not mixing types).
2024-01-25 22:56:24 -05:00
Tom Rothamel 181247a8c0 Fix crop_relative False.
Fixes #5307.
2024-01-25 22:25:51 -05:00
Tom Rothamel 14355c457f Always call absolute.compute_raw.
Fixes #5306.
2024-01-25 18:22:58 -05:00
Tom Rothamel cf6312c40d Pass Live2D style properites to a copied displayable.
Fixes #5302.
2024-01-25 00:45:40 -05:00
Tom Rothamel 825b3bd665 Prevent divide by 0 if euler-slerping similar angles.
Prevents #5305, assuming it's just bad luck.
2024-01-24 23:11:51 -05:00
Tom Rothamel 2e7af86757 Merge pull request #5304 from mal/translate-say-predict
Fully prep for prediction in TranslateSay
2024-01-24 19:36:01 -05:00
Mal Graty ab6f4a78a4 Fully prep for prediction in TranslateSay
By calling up to the Say class which holds the logic for dealing with
say attributes and other aspects of Say statements which we need to
proxy though.
2024-01-24 21:27:50 +00:00
Tom Rothamel c74871a414 Merge pull request #5283 from Elckarow/Elckarow-doc-periodic-callbacks
doc `periodic_callbacks` rather than `periodic_callback`
2024-01-23 21:22:54 -05:00
Tom Rothamel 4b7183188d Merge pull request #5300 from mal/translate-say-scry
Fix TranslateSay scrying
2024-01-23 13:09:05 -05:00
Mal Graty 7d2ab0d5cc Scry correctly from TranslateSay nodes 2024-01-23 17:47:03 +00:00
Mal Graty df9491fc05 Let TranslateSay node recognise themselves 2024-01-23 17:38:31 +00:00
Tom Rothamel 3a3d271404 rapt: Defer onPause ending until save is finished.
This will hopefully fix #5292, which might have been caused by onPause
ending while the save was still happening.
2024-01-23 02:37:23 -05:00
Tom Rothamel 77e4e90061 rapt: Use finishAndRemoveTask to end the process.
As we do in core.py.
2024-01-23 02:35:39 -05:00
Tom Rothamel 8f33273c36 Forcibly terminate Ren'Py on Android.
This prevents crashes in cleanup code that runs after Python exits.

Fixes #5280.
2024-01-22 22:23:45 -05:00
Tom Rothamel a007bfca59 Get the translation ids of TranslateSay statments.
Fixes #5298
2024-01-22 01:22:35 -05:00
Tom Rothamel 01e6522090 Prevent a crash when the projects directory isn't set.
Fixes #5299.
2024-01-22 00:50:28 -05:00
Tom Rothamel 8f5ea6c785 Minor fixes.
* Fix incorrect variable name in documentation.
* Fix valid-but-wrong indentation.
2024-01-21 18:28:45 -05:00
Tom Rothamel c771322c31 Add some debugging to going to sleep on Android and iOS. 2024-01-20 22:47:32 -05:00
Tom Rothamel 4706495e17 Avoid including a screenshot with the android saves.
This prevents things from blocking if it's no longer possible to
draw.
2024-01-20 01:36:29 -05:00
Tom Rothamel 287b9a227b Fix backwards compatibility of ParameterInfo. 2024-01-19 23:16:15 -05:00
Tom Rothamel 18937ddba0 Fix looking up SayTranslations in the None language.
Fixes #5281.
2024-01-19 01:13:41 -05:00
Tom Rothamel c4674da478 Document arc and ellipse aren't implemented.
In Render.canvas.

Per #5291.
2024-01-18 23:11:57 -05:00
Tom Rothamel 01c9d148a1 Allow Ren'Py to install Cubism 5.
It's not supported yet, but this will allow it when it's the main
version.

Fixes #5287.
2024-01-18 22:55:56 -05:00
Tom Rothamel ddbe005427 Merge pull request #5290 from mal/keep-rollback-sync
Prevent negative rollback counters
2024-01-18 22:29:09 -05:00
Mal Graty 96efe0277d Prevent negative rollback counters
As we pop from the end of the log we decrement the limit until it is
exhausted, before continuing to decrement the block count as further
entries are popped in an effort to find a place to end rollback.
2024-01-19 00:21:52 +00:00
Lent1 cd5ee3ec6f Allow specifying a package when building android from cli 2024-01-18 10:41:47 +01:00
Elckarow 89b85b6a24 Update config.rst 2024-01-18 03:31:24 +01:00
Tom Rothamel 72febe4b1b Use the region to decide simplified vs traditional Chinese.
Simplifed for PRC and Singapore, Traditional for Hong Kong,
Taiwan, and Macao. (Based on some googling.)

Fixes #5282.
2024-01-17 19:26:20 -05:00
Tom Rothamel e91f753b16 Properly compute the inverse of the live2d scaling matrix.
Fixes #5278.
2024-01-17 01:07:02 -05:00
Ren'Py Bot 4a9acf6f7a Merge branch 'fix' 2024-01-16 04:30:57 -05:00
Tom Rothamel 60322da470 Use the local version of layers.
Fixes an issue that would prevent transitions (especially the move
transition) from terminating.
2024-01-16 02:25:34 -05:00
Tom Rothamel c53ea5e6a8 Mild improvements to #5270. 2024-01-16 01:13:09 -05:00
Tom Rothamel 8481aea8f1 Prioritize fullscreen movies over movies in displayables.
Because the former will be shown, and the latter will not.
2024-01-15 22:37:51 -05:00
Tom Rothamel f1222ae358 Merge pull request #5129 from renpy/pause-predict
doc: Clarify renpy.pause's parameters
2024-01-15 21:12:52 -05:00
Tom Rothamel 8aadaf5fb3 Merge pull request #5270 from mal/limit-transform-event-propagation
Filter events propagated through containers
2024-01-15 21:07:04 -05:00
Tom Rothamel 2f3e8193aa Change the type of offset to absolute. 2024-01-15 21:03:46 -05:00
Tom Rothamel 941ff812ef Merge pull request #5275 from mal/fix-spline-interpolation-types
Retain correct types during spline interpolation
2024-01-15 20:55:10 -05:00
Tom Rothamel 269c50c815 Merge pull request #5273 from mal/lint-font-none
lint: Allow emoji_font to be None
2024-01-15 20:16:21 -05:00
Tom Rothamel 270f0f36be webaudio: Fix unpause.
Fixes #5276.
2024-01-15 20:12:39 -05:00
Mal Graty 5f8485a6da Cheat align types to allow spline interpolation 2024-01-15 23:01:07 +00:00
Mal Graty 9e28e89272 Retain correct types during spline interpolation 2024-01-15 23:01:07 +00:00
Mal Graty 89ab6bc81f Revert "Simplify ALIASES and nuke dualangle_or_float_or_none"
This reverts commit 8d5b1b55c0.
2024-01-15 23:01:07 +00:00
Mal Graty 0ed5eeec9e lint: Allow emoji_font to be None 2024-01-15 21:41:17 +00:00
Mal Graty 225d4fa337 Filter events propagated through containers 2024-01-15 20:36:13 +00:00
Gouvernathor aa006323eb doc: fix typo in e19a29f #5268 2024-01-15 20:49:59 +01:00
Lent1 98118b0d97 Allow clearing config.log at startup 2024-01-15 10:58:17 +01:00
Tom Rothamel eeedd53371 Force MultiBox to adjust times.
Fixes #5266.
2024-01-14 19:40:51 -05:00
Tom Rothamel cb21214076 Return a correct value from get_change.
Fixes #5266.
2024-01-14 18:53:44 -05:00
Gouvernathor 0d9f0a2267 doc: typos incompat
the first one is a common mistake (it sounds the same in czech)
2024-01-14 19:26:26 +01:00
Gouvernathor 0378e32950 py3 todo 2024-01-14 19:21:15 +01:00
Tom Rothamel 4ffb254e1c Include downloader in docs. 2024-01-14 11:53:46 -05:00
Tom Rothamel 5f77630b7e doc: Credits, changelog, deprecations. 2024-01-14 11:50:18 -05:00
Tom Rothamel c1f906fcba Fix an issue computing store changes.
It would trigger if there were previous changes, but no new changes.

The traceback is in a comment in #5263, but it doesn't fix the main
issue.
2024-01-14 10:45:27 -05:00
Gouvernathor 83199bb4b1 Internal doc and spurious import 2024-01-14 13:46:28 +01:00
Gouvernathor 13728673a1 doc: incompat 2024-01-14 13:23:17 +01:00
Tom Rothamel 46cc847ca2 doc: Sponsors. 2024-01-14 02:17:01 -05:00
Tom Rothamel 38d90a1ef0 Generate file: urls; Remove the schinese specific URL.
Use urllib functions to ensure file urls are quoted properly.

Remove the schinese url, because it can overwrite the main URL, and
it'll be rarely used now.
2024-01-14 01:06:54 -05:00
Gouvernathor fc45b09ed3 Make the doc URLs local when it's available (#5082)
Rather than using the web copy.

---------

Co-authored-by: Tom Rothamel <pytom@bishoujo.us>
2024-01-13 23:51:26 -05:00
Tom Rothamel 63cb631d52 Retain_after_load should disable greedy rollback.
To prevent non-retain_after_load rollbackness from overwriting
retained data.
2024-01-13 18:22:12 -05:00
Gouvernathor b1ffb3faec Merge branch 'master' into at-partial 2024-01-13 21:55:23 +01:00
Tom Rothamel 03bddfe289 Doc fix. 2024-01-13 15:45:53 -05:00
Gouvernathor 0959631c44 doc: update pause 2024-01-13 21:45:44 +01:00
Tom Rothamel f695788eb8 Remove debug print. 2024-01-13 15:17:58 -05:00
Tom Rothamel 966613f7db Add config.layer_transforms.
The new config.layer_transforms variable allows you to supply
a list of transforms that will be applied to all layers, or to the
combination of all layers in config.layers.

The intent is to prevent people from having to repeat transforms
in camera statements.

Fixes #4562.
2024-01-13 14:58:11 -05:00
Tom Rothamel e576d4d47a renpy.display_menu should take layer as an argument, not from scope.
This is my go at improving #5261, which improves on #4848.

Closes #5261.
2024-01-12 23:39:04 -05:00
Tom Rothamel 9f5b3ffb4b Merge pull request #4848 from renpy/nvl-menu-layer
Enable the _layer parameter for the menu statement and add config.nvl_choice_layer
2024-01-12 21:43:54 -05:00
Tom Rothamel 44d62b4b3e Merge pull request #4924 from mal/alpha-mask-shader
Implement AlphaMask using shader
2024-01-12 21:42:43 -05:00
Tom Rothamel fd96903e03 live2d: Fix create common.
Fixes #5256.
2024-01-12 21:34:49 -05:00
Andy_kl 6b3bde2f15 Update Russian translation. 2024-01-13 01:09:15 +04:00
Tom Rothamel bad18bbd36 doc: Include websockets in the changelog. 2024-01-12 01:01:57 -05:00
Tom Rothamel 398d1aa4b0 doc: Changelog. 2024-01-11 00:19:31 -05:00
Tom Rothamel 29c22ba0aa Changelog and fix translations. 2024-01-10 23:46:54 -05:00
Tom Rothamel 461b9ed8de doc: Changelog. 2024-01-10 23:43:35 -05:00
Tom Rothamel 45c8af418a Merge pull request #5209 from symegac/master
Danish translation of the launcher and The Question
2024-01-10 23:43:19 -05:00
Tom Rothamel ad43a1e39d Document the Android downloader. 2024-01-10 22:37:36 -05:00
Tom Rothamel 9a1a3b8235 Add the dependencies for chromeos. 2024-01-10 21:50:06 -05:00
Tom Rothamel 537569477e Further translation fixes. 2024-01-10 10:27:38 -05:00
Tom Rothamel dbecaefad6 Swap release names. 2024-01-10 10:14:50 -05:00
Tom Rothamel 4b9b22c009 Add names for 8.2 and 7.7. 2024-01-09 23:25:15 -05:00
Tom Rothamel cc7cde5100 Fix translations. 2024-01-09 23:24:35 -05:00
Tom Rothamel 077bebea95 Update piglatin translation. 2024-01-09 23:23:03 -05:00
Tom Rothamel 6f5558c160 Correct for translation change. 2024-01-09 23:09:16 -05:00
Tom Rothamel 360dd86310 Remove mention of rollback side in the help screen.
Fixes #5254.
2024-01-09 22:47:26 -05:00
Tom Rothamel d26c052da5 Merge pull request #5252 from renpy/fix-polar-anchor
Fix polar anchor and some ATL docs improvements
2024-01-09 22:43:30 -05:00
Gouvernathor ecd1e59b41 Do the same with align's getter 2024-01-10 00:14:14 +01:00
Gouvernathor 232ad293a2 Recommend not using the weird behavior 2024-01-09 20:44:48 +01:00
Gouvernathor 2e79eb49ce Make the xycenter getters more honest 2024-01-09 20:05:36 +01:00
Tom Rothamel 6845c59738 Merge pull request #5251 from mal/web-cli
Add CLI for web builds
2024-01-09 01:47:18 -05:00
Gouvernathor 546942640a More documentation tweaks 2024-01-09 00:32:09 +01:00
Mal Graty af6721c5ef launcher: Add CLI for web builds 2024-01-08 23:12:57 +00:00
Gouvernathor 2184e27214 Doc pass on polars 2024-01-08 23:25:07 +01:00
Gouvernathor cc14f31b64 Simplify get_xycenter to nonexistence 2024-01-08 23:20:21 +01:00
Gouvernathor 6830882bbe Remove never-read variables 2024-01-08 22:54:49 +01:00
Gouvernathor ef8a1b6ee3 Add anchor polar to the condition and kick xaround 2024-01-08 22:49:52 +01:00
symegac f291cd8bd2 Updated translation of The Question 2024-01-08 16:44:17 +01:00
symegac c2711b26f7 Updated translation of launcher 2024-01-08 16:43:12 +01:00
symegac 8ad22f6a0a Merge branch 'renpy:master' into master 2024-01-08 16:41:51 +01:00
Tom Rothamel 3e659a58e3 doc: Rewrite the documentation for get_side_image. 2024-01-08 02:37:03 -05:00
Tom Rothamel f294b9e936 Merge pull request #5250 from renpy/3994-misc
Misc lints
2024-01-08 00:48:14 -05:00
Tom Rothamel 22e1e892a1 Merge pull request #5249 from renpy/doc-file
Use the :file: role a lot
2024-01-08 00:47:11 -05:00
Tom Rothamel dccb7b2af4 Merge pull request #5248 from renpy/cleanup-dualangle-and-aliases
Simplify renpy.transform.ALIASES and nuke dualangle_or_float_or_none
2024-01-08 00:47:04 -05:00
Tom Rothamel c068640633 Force _side_image_attributes to non-None.
The last commit is the real fix, but this fixes #5027, fixes #5242.
2024-01-07 22:38:05 -05:00
Tom Rothamel 251b4f7e88 Fix an interaction between RollbackLog.complete and Context.make_dynamic.
In the case where:

* A new Rollback begins.
* A variable has it's value changed.
* A new context is created, with rollback disabled.
* The variable is made dynamic.
* The variable is set back to it's original value.
* A Rollback is completed.

It would be possible to have a variable that was set and not rolled
back. To fix this, the Rollback is completed on entering a context,
and a rollback can be completed multiple times.

This manifested on _side_image_attributes, so this adresses #5242
and #5207.
2024-01-07 22:34:36 -05:00
Gouvernathor d2aa3b9fbc Hotfix polar anchor 2024-01-08 01:18:40 +01:00
Gouvernathor 239b8c0022 Moar (and whitespace)
I didn't do them all, but still quite a number
2024-01-08 00:41:56 +01:00
Gouvernathor c1c5cc4cf7 Merge branch 'master' into doc-file 2024-01-07 23:20:29 +01:00
Gouvernathor 8d5b1b55c0 Simplify ALIASES and nuke dualangle_or_float_or_none
DualAngle.from_any is already dualangle_or_float, and anchorangles (if not None) cannot be a tuple of None, it can only be a tuple of float (from older versions of renpy) or DualAngle
ALIASES's values were never read, because the only read values of PROPERTIES are those also present in diff2_properties or diff4_properties, both of which are only populated by add_property
2024-01-07 21:42:18 +01:00
Tom Rothamel f3652281a2 doc: Fix missing word. 2024-01-07 14:28:08 -05:00
Tom Rothamel 3504ae1bd8 bubble: Document how transforms work with the bubble screen. 2024-01-07 01:49:36 -05:00
Tom Rothamel 564cc0e0cd Screen hide and replace events run to completion.
Even if the same screen is shown again. This makes it possible to use
transform events with screens that may be shown again immediately,
like the say or bubble screens.
2024-01-06 23:51:58 -05:00
Tom Rothamel 582e467f22 Fix out-of-date comment. 2024-01-06 21:35:46 -05:00
Tom Rothamel 5d54d6f2d8 It helps to save before committing. 2024-01-06 21:29:12 -05:00
Tom Rothamel 8b4fdf015a Supply the "replace" (rather than "show") event to say screens after {w}.
This makes it possible for screens (like the bubble screen) to
have one transition on initial show, and another on clicks through
{w}.

Fixes #4735.
2024-01-06 21:26:10 -05:00
Tom Rothamel 6a651ff299 Fix modal and tts not working properly together.
The issue was that tts would read the modal screen and everything
below it, not above it. (This had to do with the change in order
for layers a while back.)
2024-01-06 19:25:26 -05:00
Tom Rothamel 423b8baf92 Improve the tts-accessibility of the accessibility menu.
Fixes #4499.
2024-01-06 19:10:52 -05:00
Tom Rothamel e19a29f20a Pass transform events to children of containers.
This makes it possible of the children of containers to respond
to a button changing state differenty. Fixes #4578.
2024-01-06 18:47:34 -05:00
Tom Rothamel 7dc7184fdb Document that MouseMove may not work.
Closes #4023.
2024-01-06 18:25:26 -05:00
Tom Rothamel e1ed5ad6f1 Repeat MouseMove over 4/60ths of a second.
In case a mousemove on button release overrides it.
2024-01-06 18:24:07 -05:00
Tom Rothamel 01ffb18b4f Clean up, change, and changelog #5245. 2024-01-05 23:36:14 -05:00
Tom Rothamel e4b78f47d1 Merge pull request #5245 from Neyunse/continue
action Continue(): re-PR
2024-01-05 23:16:57 -05:00
KagariSoft-Dev 2dad3acf35 restore: the Update the ShowMenu doc entry 2024-01-06 01:01:53 -03:00
KagariSoft-Dev 565a2da69e restore doc: Fix gui documentation typo. 2024-01-06 01:01:02 -03:00
KagariSoft-Dev f127d3eda6 minor fix 2024-01-06 00:49:31 -03:00
KagariSoft-Dev 2773c0dbed fixed year 2024-01-06 00:48:41 -03:00
ねゆんせ 02fc331a2c action Continue(): re-PR 2024-01-06 00:38:21 -03:00
Tom Rothamel 69d3a85597 Add ruby_line_leading.
This allow lines with ruby to get additional leading, while
non-ruby lines do not.

Fixes #4997.
2024-01-05 01:48:08 -05:00
Tom Rothamel 113a60faa5 Update the copyright for 2024. 2024-01-05 00:31:12 -05:00
Tom Rothamel d37242fd38 Fix spanish translation. 2024-01-05 00:29:51 -05:00
Tom Rothamel bf0993097a Only predict_show a screen by name when not transient.
This fixes #4999 while trying to keep #4834 fixed. There is a
very minor behavior changes here:

When a screen has been called, renpy.showing will not return
true for a screen's name if the screen has a tag.

This seems fine, because renpy.showing is only documented to work
with tags, not names - working with screens by name has been the
job of renpy.get_screen. So it's only a change to undocumented
behavior.
2024-01-05 00:08:00 -05:00
Tom Rothamel ee06cbca48 Always pass the tag to predict_show, not the image/screen name.
This was always the case for normal images, but screens pass the
screen name as name. This could cause a problem (#4999), where
a transient screen going away would leave the tag (but see the next
commit.)
2024-01-05 00:02:13 -05:00
Tom Rothamel b0a7b3a6d8 Merge pull request #5243 from Moshibit/master
Update Spanish trasnlation
2024-01-04 22:06:51 -05:00
Tom Rothamel 926ca22963 web: Remove logging print. 2024-01-04 21:51:51 -05:00
Gouvernathor 62d6e50a9e doc: tweaks, typos, whitespace, use the exc and file roles
fixes #5227
2024-01-05 00:14:06 +01:00
Moshibit 1fd3aa2c5d Update launcher.rpy 2024-01-04 12:32:09 -06:00
Moshibit 702c6e1f75 Update screens.rpy 2024-01-04 12:12:40 -06:00
Moshibit 3b83d45544 Update developer.rpy 2024-01-04 11:56:44 -06:00
Moshibit c912a451ae Update common.rpy 2024-01-04 11:53:26 -06:00
Tom Rothamel 45d952fc4e Make _vol public. 2024-01-03 19:26:20 -05:00
Tom Rothamel 6b87244193 Add a fallback mode for f-string style interpolations.
This is intended to allow creators to migrate their games
piecemeal.

Per #5236.
2024-01-03 01:15:29 -05:00
Tom Rothamel 840f0e8de9 Acclelerate the most common formatting case.
A simple variable, which is just looked up and doesn't need
to be evaled all the time.
2024-01-03 00:51:12 -05:00
Tom Rothamel 9df57291d6 Add the ability to reset preferences.
Fixes #5000.
2024-01-03 00:19:34 -05:00
Tom Rothamel 0273af7c4f Run default persistent.var = ... statements on persistent._clear.
This adds support for re-running default statements in the special
namespaces, and then enables that for persistent. It also adds a
call to renpy.execute_default_statement in persistent._clear.

Per #5000.
2024-01-02 23:48:31 -05:00
Tom Rothamel 9c6bf97f21 Merge pull request #5240 from qTich/fix/translatesay-predict
fix: `TranslateSay.predict`
2024-01-02 22:30:02 -05:00
Tichq 2160e8d31f fix: TranslateSay.predict 2024-01-03 05:57:06 +03:00
Gouvernathor 0b1c017150 doc: fixes and markup improvements 2024-01-02 23:45:03 +01:00
Gouvernathor 631618d4d8 Merge branch 'master' into at-partial 2024-01-02 10:48:31 +01:00
Mal Graty d1452e50c3 Treat string interpolations as Python expressions (#5036)
* Move away from Formatter for string interpolation

As we were already overriding the C parser, the only advantage we were
taking advantage of was the C field name parser. We continue to use this
but by moving away from the string.Formatter template we can ignore
a bunch of things that we aren't interested in (such as which fields
from the supplied scope were used).

* Whitespace

* Manage conversion flags with sets

* Update interpolation parser to support expressions

This change allows strings and nested brackets, braces, and parens to be
within an interpolation without breaking out. It also allows conversions
to be specified before the format (in line with Python), with graceful
fallback to ensure existing interpolations continue to work as intended.

* Treat interpolation as Python expressions

* Add support for debug interpolations

This apes fstring functionality where a trailing = symbol is used to
denote that the expression part of an interpolation should be included
with the output and, when no conversion or format are specified, imply
the result should be run through repr.

* Update interpolation documentation for expressions

* Add interpolation expressions to changelog
2024-01-01 23:34:44 -05:00
Gouvernathor 583034a53a Better document conflicting properties (#5235)
doc: better document conflicting properties
2024-01-01 21:12:49 -05:00
Ren'Py Bot c2daeca774 Merge branch 'fix' 2024-01-01 20:17:55 -05:00
Tom Rothamel fb15ba501e Merge remote-tracking branch 'origin/publish-position'
Fixes #5234.
2024-01-01 20:17:02 -05:00
Tom Rothamel 30dd810b3a Merge remote-tracking branch 'origin/movetrans-warpers' (#4998) 2024-01-01 20:15:34 -05:00
Gouvernathor ba8f13af9c Publish the position type in the default store 2024-01-02 02:05:33 +01:00
Gouvernathor 82ccd35d48 Adapt the spline interpolation to the mixed position type (#5233)
* Patch and adapt interpolate_spline with mixed position type

* Tweak the code
2024-01-01 20:05:15 -05:00
Gouvernathor 147073eaf1 Various improvements around warpers (#4995)
* doc: clarify MoveTransition and add examples

* doc: various things loosely related to warpers
2024-01-01 19:57:35 -05:00
Tom Rothamel 9c272b9d45 atl: A few more documentaiton changes. 2024-01-01 18:34:00 -05:00
Tom Rothamel 4a53c80c3c atl: Organize the transition proprties. 2024-01-01 18:25:22 -05:00
Gouvernathor 851471373f Dual-angle fix for polar transform properties under the new position type (#5179)
* Change the type of xanchoraround and yanchoraround

* Try to implement anchoraround

* Avoid calling position_or_none at all

type(spline[-1]) comes from before 5123
It should work until a deeper examination completely clears the issue.

* DualAngle solution to the mixed-types polar anchor system

* Factorize the common end part of the setters

* Factorize the common first part of the getters

* Allow the common first part to be cached/skipped

* Hasten set_anchorradius without slowing down set_anchorangle

* Kick out the former helper functions

* Inner documentation

* Convert polar pos to using absolute and positions without double angles

Basically reuse the architecture from polar anchor, but convert everything to absolute as soon as possible and avoid duplicating everything (including the angle) between an absolute and a relative metric.
I think the issue could have been solved by removing the "divisor" thing and have absolutes always returned, but I'm not sure.
To be tested, maybe the divisor thing was necessary for interpolations of pos inside a container of interpolated size.

* Simplify calculations when the polar vector is 0

The exact same skip can't be done for anchor, because the two radii are independent and the get_anchorradius calculates them both
2024-01-01 17:09:26 -05:00
Tom Rothamel 8d170c45ab Allow webinput in fullscreen mode.
Fixes #5231.
2024-01-01 16:29:23 -05:00
Tichq ca7641be56 feature: search control before initialization (#5222)
feature: search control before initialization

Currently, the search can be modified, but the initial initialization of the archives is done with the initial paths.
2024-01-01 11:11:11 -05:00
Ren'Py Bot 5a562cc660 Merge branch 'fix' 2024-01-01 04:30:56 -05:00
Tom Rothamel 95bb3a108d web: Enable the anisotropy extension for webgl.
Fixes #5230.
2024-01-01 01:12:21 -05:00
Tom Rothamel 5db965a709 Resume the audio context when it's not running.
Most notably, when it goes into the "interrupted" state after
an iOS devices goes to sleep.

Fixes #5027.
2024-01-01 00:05:26 -05:00
Tom Rothamel 8b5cff47c4 Remove last PY2 check. 2023-12-31 22:24:19 -05:00
Tom Rothamel 5b1c251f3f Enable the new fullscreen api on python2. 2023-12-31 22:08:43 -05:00
Tom Rothamel 540a853d38 Re-enable fullscreen in safari.
The new approach seems to work well in Safari too.

Fixes #4988.
2023-12-31 21:52:35 -05:00
Tom Rothamel 6d4a104b8d web: Use renpy-specific fullscreen api.
This fixes issues with fullscreen, especially on mobile platforms
where the device can rotate while fullscreen is enabled. At the
same time, Ren'Py has been handling web-resize well.

So, we simply requestFullscreen on the html element, and let it
bring the window fullscreen, resizing the canvas as it does so.
2023-12-31 21:43:57 -05:00
Tom Rothamel 0d3e9c9358 Always enable the console in the question.
I use it a lot as a test game, so it makes sense to keep the
console available.

Also, cheat modes.
2023-12-31 21:43:22 -05:00
Tom Rothamel 2e73149782 Document that presplash webps can be animated.
Per #5004.
2023-12-31 16:40:37 -05:00
Tom Rothamel d3af25da6c Stop the music on load or rollback whenever the loop changes.
Fixes #4787.
2023-12-31 16:36:06 -05:00
Tom Rothamel 8412929688 Transitions use child placements.
Fixes #4867.
2023-12-31 15:54:02 -05:00
Tom Rothamel 4a8a991913 Fix typo. 2023-12-31 15:53:54 -05:00
Tom Rothamel 9b621e8b1f Allow inputs inside buttons to get KEY* events.
These were suppressed to help out Keymap (the key statement), but
doing su suppressed the events for Input as well.

Fixes #5205.
2023-12-31 12:18:04 -05:00
kyouryuukunn ada4635073 Merge pull request #5228 from kyouryuukunn/translate_japanese_231231
translate japanese 231231
2023-12-31 17:58:03 +09:00
kyouryuukunn 90840d3ccb translate japanese 231231 2023-12-31 17:41:29 +09:00
the66F95 2f38077f67 let a viewport/vpgrid respect the force_step argument of a used ui.adjustment (#4841) 2023-12-30 20:00:51 -05:00
Tom Rothamel 18eb94c673 Document command line tools.
Fixes #4257.
2023-12-30 11:14:58 -05:00
Tom Rothamel 81f932631c Scroll actions should only be sensitive if scrolling is possible.
Fixes #2702.
2023-12-30 00:24:21 -05:00
Tom Rothamel 40671c36e5 Allow an adjustment to restart the interaction when reaching limits.
This is required to support the next commit.
2023-12-30 00:23:46 -05:00
Tom Rothamel 73d96cf91b Incrementally maintain the image cache size.
Per #3381.
2023-12-29 23:12:13 -05:00
Tom Rothamel 83ef97dd53 Remove the pin cache.
Per #3381.
2023-12-29 22:32:59 -05:00
Tom Rothamel 45a3c60999 Allow inputs inside buttons to get KEY* events.
These were suppressed to help out Keymap (the key statement), but
doing su suppressed the events for Input as well.

Fixes #5205.
2023-12-29 00:14:32 -05:00
Tom Rothamel 42751a1fd9 Merge pull request #5210 from qTich/fix/android-load-archives
fix: loading sequence
2023-12-28 22:05:16 -05:00
symegac 7007b2a292 Merge branch 'renpy:master' into master 2023-12-28 23:16:36 +01:00
Ren'Py Bot f244d521be Merge branch 'fix' 2023-12-28 04:30:08 -05:00
Tom Rothamel 94d1b573e1 ffmedia: Return AVERROR_EOF for end of file.
Fixes #5207.
2023-12-28 02:14:21 -05:00
Tom Rothamel 9d0c347c0f ffmedia: Return AVERROR_EOF for end of file.
Fixes #5207.
2023-12-28 02:09:22 -05:00
Tom Rothamel d2f2022558 Do not encode source before compiling or returning.
Fixes #5213.
2023-12-27 23:25:58 -05:00
Tom Rothamel a90d563648 Merge pull request #5216 from renpy/fix-oldgame-merge
Fix incorrect old-game proccessing if file directory was Windows-styled path.
2023-12-27 22:04:31 -05:00
Andy_kl 59dbb7ac50 Fix incorrect old-game proccessing if file directory was Windows-styled path. 2023-12-27 23:54:27 +04:00
Tom Rothamel 03082f4ab5 doc: Add seealso. 2023-12-27 01:12:19 -05:00
Tom Rothamel cbf2d8fab0 Fix the sense of the defer_tl_scripts test.
Fixes #5211.
2023-12-26 22:03:40 -05:00
Tichq 1206508a2e fix: loading sequence
Loading the file from the archive inside `config.searchpath` on Android will be ignored, as the file is most likely also contained in `apk`.
2023-12-26 15:43:25 +03:00
symegac cbd2576e71 Fixed wording 2023-12-26 04:49:11 +01:00
symegac 7c1e71beb9 Fixed another small typo 2023-12-26 04:14:27 +01:00
symegac 2de93067c7 Fixed small typo 2023-12-26 04:10:31 +01:00
symegac ab5aa1a0e0 Removed stray comment and added period 2023-12-26 04:06:45 +01:00
symegac c67480b6d9 Added Danish translation of the launcher 2023-12-26 04:04:20 +01:00
symegac b9fb74bbc5 Removed TODO note 2023-12-26 03:55:12 +01:00
symegac 3aa3a3edb4 Added Danish to prefs and reordered langs 2023-12-26 03:51:38 +01:00
symegac b7e7a501f1 Added Danish translation 2023-12-26 03:49:45 +01:00
Tom Rothamel 71c52e96f4 Remove use of renpy.file (in favor of renpy.open_file).
Fixes #5201.
2023-12-25 00:00:57 -05:00
Tom Rothamel 97528f2b55 doc: That rapt requires JDK 21. 2023-12-25 00:00:34 -05:00
Tom Rothamel 9a60c796d6 rapt: Update translations. 2023-12-24 09:34:07 -05:00
Tom Rothamel eb7816f508 Merge pull request #5196 from kyouryuukunn/fix_warp_to_line
fix warp_to_line behavior
2023-12-23 22:09:51 -05:00
Tom Rothamel 94c5e4fa5f Remove uses of gui.button_text_properties.
Which duplicates gui.text_properties.

Fixes #5197.
2023-12-23 16:39:11 -05:00
kyouryuukunn ce791bdcf4 fix warp_to_line behavior 2023-12-23 18:01:12 +09:00
Tom Rothamel 0e616a52e3 Merge pull request #5191 from mal/improve-rollback-tracking
Track hard checkpoints that have been blocked
2023-12-23 00:18:42 -05:00
Tom Rothamel 0387f19dae Ignore the warp command line argument after it's been run once.
Fixes #5194.
2023-12-22 22:46:14 -05:00
Mal Graty cdd19ea7c4 Upgrade rollback blocks gracefully
Recalculates rollback_limit and rollback_block to ensure both values are
sane and reflect the current state of the log.
2023-12-22 11:26:40 +00:00
Mal Graty 89895ea29d Track hard checkpoints that have been blocked
This is necessary so they can be counted out as the log is truncated,
keeping rollback_limit accurate. This results in correct reporting from
renpy.can_rollback in the scenario where config.rollback_length has been
exceeded.
2023-12-22 11:26:40 +00:00
Tom Rothamel 8115ef96fb Merge pull request #5192 from qTich/fix/webaudio-broken-file
fix: filename after implementation `RWopsIO`
2023-12-22 01:14:37 -05:00
Tom Rothamel 519a0c56a4 doc: Android. 2023-12-21 23:23:50 -05:00
Tom Rothamel 2c6fba5fda rapt: Supply the version to the build process.
Fixes #5188.
2023-12-21 23:16:13 -05:00
Tichq f72f0e9a22 use: config.debug_sound in webaudio 2023-12-22 04:47:19 +03:00
Tichq 369471fd23 fix: filename after implementation RWopsIO 2023-12-22 04:40:09 +03:00
Tom Rothamel 2a62b88aeb Reduce the rollback length when the rollback log is popped.
Fixes #5041.
2023-12-21 00:45:51 -05:00
Tom Rothamel abe63137e7 Add back line removed incorrectly. 2023-12-21 00:45:34 -05:00
Tom Rothamel d847636c51 Clear out pending events on start.
Particularly, the start after a shift+R reload, where keyboard
events during the reload could be queued up.

Fixes #5187.
2023-12-20 22:47:31 -05:00
Tom Rothamel 7123215f9c Document renpy.register_statement's translation a argument. 2023-12-19 20:58:29 -05:00
Tom Rothamel 08261082c3 doc: TranslateSay. 2023-12-19 01:11:20 -05:00
Tom Rothamel c9ca6e6339 translatesay: Support generating translations. 2023-12-19 01:11:20 -05:00
Tom Rothamel 1045a85b97 translatesay: Lint support. 2023-12-19 01:11:20 -05:00
Tom Rothamel 2f11472982 translatesay: Minor fixes. 2023-12-19 01:11:20 -05:00
Tom Rothamel b580aef310 translatesay: Eliminate many EndTranslates. 2023-12-19 01:11:20 -05:00
Tom Rothamel c92757e769 translatesay: Replace Translate and Say with a single statement. 2023-12-19 01:11:20 -05:00
Ren'Py Bot 626351486e Merge branch 'fix' 2023-12-18 04:30:08 -05:00
Tom Rothamel fd65876e75 Do not call statement_callbacks on translate statements.
Most are internally generated, and so don't really feel like
they should trigger a callback.
2023-12-18 00:27:58 -05:00
Tom Rothamel 492d1a3b55 Add interning.
This interns certain common strings to save memory. Interned are
Lexer.names (which will get things like image attributes), and
simple cases of Say.who.

Per #3759.
2023-12-17 23:54:28 -05:00
Tom Rothamel 36568b72ea Avoid stripping PyExprs in Say. 2023-12-17 22:44:57 -05:00
Tom Rothamel c9278e6aad Merge pull request #5150 from renpy/lint-check_conflicting_properties
Lint check_conflicting_properties
2023-12-17 22:05:54 -05:00
Tom Rothamel 213a74cd90 Merge branch 'fix' into lint-check_conflicting_properties 2023-12-17 22:05:11 -05:00
Tom Rothamel 8187836d7f Allow shift+D to close the developer menu.
Close #5185.
2023-12-16 23:13:45 -05:00
Tom Rothamel a9520b96a1 doc: Template projects.
Finishes a sequence of commits that can close #3877.
2023-12-16 02:06:37 -05:00
Tom Rothamel 2cfef37844 Show template projects in the launcher.
And don't scan for templates in the old location.
2023-12-16 01:53:24 -05:00
Tom Rothamel 91859af328 Add creating a project from a template to the launcher. 2023-12-16 01:46:04 -05:00
Tom Rothamel 4fa61874eb Copy all files, not just generated ones. 2023-12-16 00:11:59 -05:00
Tom Rothamel 7de37450d4 launcher: Add the ability to make a new project from a template.
This reuses portions of the gui mechanism, but only updates the
most basic information, like the title and save directory, as
well as the translation-relate information.
2023-12-15 23:41:57 -05:00
Tom Rothamel 2b1888e0af launcher: Remove the ability to create legacy projects. 2023-12-15 22:32:12 -05:00
Tom Rothamel af4cf6509a Make new types unique. 2023-12-14 18:39:56 -05:00
Tom Rothamel f651702f0e Documentation can't be generated on python 2. 2023-12-14 18:38:24 -05:00
Tom Rothamel 30fe36010c Remove debug print. 2023-12-14 18:38:14 -05:00
Tom Rothamel 96e6975e9f Add a new defaultdict class.
This is similar to Python's collections.defaultdict, except it
participates in rollback.
2023-12-14 01:38:53 -05:00
Tom Rothamel 00ad151a23 Add the MultiRevertable class.
This makes it possible to have a class that is a child of
dict, det, or list, and is still a revertable object.

Per #4498.
2023-12-14 01:17:50 -05:00
Tom Rothamel dad92c5821 Improve the contrast of newly-generated games.
Fixes #5172.
2023-12-14 00:28:14 -05:00
Tom Rothamel 79f1d9f651 Restore accesibility to shift+A only.
Fixes #5177.
2023-12-13 21:21:18 -05:00
Tom Rothamel aeb3d4fb94 Draggable viewports aren't focusable.
A focusable viewport will steal focus from its children, which
is a problem for keyboard and gamepad nav. So now we have
grabbble-only viewportsm which fix the problem.

Fixes #5173.
2023-12-13 21:19:06 -05:00
Tom Rothamel 84d4aebc92 Allow displayables to be grabbed but not focusable.
This is meant for viewports, which can grab focus when dragged,
but shouldn't be focusable otherwise.
2023-12-13 21:13:19 -05:00
Tom Rothamel 9556e9615e ssh: Add to the no-ssh statements. 2023-12-13 02:15:06 -05:00
Gouvernathor 8545260133 doc: fix seealso 2023-12-12 08:32:20 +01:00
Tom Rothamel f2d911fe7c ssh: Document. 2023-12-11 23:33:48 -05:00
Tom Rothamel 17701d3827 Merge pull request #5168 from renpy/fix-5165
Fix #5165
2023-12-11 22:08:24 -05:00
Tom Rothamel d0fd529ad4 Revert "Avoid ever deleting the pixel buffer."
This reverts commit 355fc4f0af.
2023-12-11 22:04:16 -05:00
Tom Rothamel 7c0fb49df2 ssh: Do not do ssh transitions when in a menu or common. 2023-12-11 22:04:16 -05:00
Tom Rothamel 5733c0b81b Merge pull request #5167 from mal/constant-store-definitions
Move constant definitions into individual stores
2023-12-11 21:40:33 -05:00
Tom Rothamel 8c0470a1b5 Merge pull request #5169 from qTich/fix/tts-hover-alt
fix: based on `Style` defined as `_hover_alt`
2023-12-11 21:40:14 -05:00
Tichq 48e8a0f89e fix: based on Style defined as _hover_alt 2023-12-12 05:15:30 +03:00
Gouvernathor 8b3375c7e5 Fix various issues 2023-12-11 20:26:24 +01:00
Mal Graty a3a408ccd1 Move constant definitions into individual stores
Makes it much more obvious which stores are constant when reading the
code that defines those stores.
2023-12-11 18:54:35 +00:00
Tom Rothamel d22f24fa82 Merge pull request #5165 from jsfehler/docs_sdl2
Tweak get_sdl_dll() documentation
2023-12-11 11:30:56 -05:00
Tom Rothamel 573ebd183e Merge pull request #5164 from jsfehler/changlog_tyops
Fix tyops in the changlog
2023-12-11 11:30:33 -05:00
Joshua Fehler e1df1ba894 Tweak get_sdl_dll() documentation 2023-12-11 10:32:24 -05:00
Joshua Fehler 495b19fabc Fix tyops in the changlog 2023-12-11 09:28:43 -05:00
Tom Rothamel 0c0e9b50cd ssh: Do not do ssh after rollback. 2023-12-11 01:22:26 -05:00
Tom Rothamel 3260643769 Add _scene_show_hide_transition.
This is a transition that is run between the scene show and hide
statements, and other statements, if there is not intervening
with statement. This allows transitions to be created to run
when images are shown.

Per #2064, needs to be documented.
2023-12-11 01:15:13 -05:00
Tom Rothamel e2023d28d4 Add config.pass_controller events, document config.pass_joystick_events. 2023-12-10 22:13:01 -05:00
Tom Rothamel 2c99d91ed4 Disable fullscreen on Safari.
This is due to several problems that don't seem to occur on other
browsers. While the visibility problems were patched away, once
we went fullscreen, it was impossible to show anything else, like
the web_input textbox.

After a weekend working on it, no luck - so Fullscreen is disabled.

Fixes #5038.
2023-12-10 21:06:02 -05:00
Tom Rothamel 81de185a88 Bind to 127.0.0.1. 2023-12-10 20:03:35 -05:00
Tom Rothamel 25ec9105bb Browser shouldn't start in fullscreen by default. 2023-12-10 20:00:04 -05:00
Gouvernathor e8c9d6af2b Fix the last part 2023-12-10 19:30:24 -05:00
Gouvernathor 77c3f22aca Refix
otherwise each pass almost-systematically nullifies the preceding ones
2023-12-10 19:43:18 +01:00
Gouvernathor 313d924611 Fix 2023-12-10 13:06:19 +01:00
Asriel Senna a2c2d2e4e3 Future and alternates 2023-12-10 12:59:13 +01:00
Asriel Senna e64a56a00f First trial
The name is quater, Gamma-quater
The commented lines only waste execution time until all kinds of parameters are allowed, but they are intended to be included when all parameters are.
2023-12-10 07:52:03 +01:00
Tom Rothamel 7cede5ff44 Make it possible to bind the webserver publically.
To make testing easier.
2023-12-09 23:31:38 -05:00
Asriel Senna c9a2699c2c Better error message 2023-12-10 04:32:54 +01:00
Asriel Senna 8d9be62187 Add evaluated parameters 2023-12-10 04:29:25 +01:00
Asriel Senna f33a47d4be Free repr 2023-12-10 04:26:21 +01:00
Mal Graty 8014d196f8 Clean up redundant conditional
The child is already ensured to be a drag at the top of the method, no
need to check again.
2023-12-09 18:32:39 +00:00
Asriel Senna 6310d34dd8 Enable scoped evaluation for apply_defaults 2023-12-09 18:19:17 +01:00
Asriel Senna adfe76b6fb Make apply_defaults optional in apply 2023-12-09 18:18:52 +01:00
Tom Rothamel b6c39be680 Avoid unnecessary recompilation of PyExprs.
Specifically, PyExprs loaded from .rpyc files that are only loaded
for the purpose of being upgraded from a .rpy file.
2023-12-09 01:11:31 -05:00
Tom Rothamel 0c6f3bd521 Lint formatting changes.
* Make the per-character stats optional, but use the complete
  version when there.

* Make the problem lists less humanized, and easier to scan by
  lining things up vertically.
2023-12-08 22:51:12 -05:00
Tom Rothamel f06b15023f Include Python warnings in lint. 2023-12-08 01:54:56 -05:00
Tom Rothamel 1082fe614e Store warning info in the bytecode cache. 2023-12-08 01:32:33 -05:00
Tom Rothamel badbd49bff Move parameter and argument handling into its own module. 2023-12-07 23:08:28 -05:00
Tom Rothamel dc6967b44b Remove the privating.
(Not needed in a class that's not intended to be inherited from, and
sends the wrong message.)
2023-12-07 22:41:14 -05:00
Tom Rothamel d30eae0ea9 Merge pull request #5160 from renpy/fix-5159
Fix interpolation of move transitions wrt the position type
2023-12-07 19:30:08 -05:00
Gouvernathor a0517be533 Cleanup 2023-12-08 00:33:11 +01:00
Gouvernathor 61b50b15b1 Fix last 2023-12-07 16:22:41 +01:00
Ren'Py Bot 990ec9f1fe Merge branch 'fix' 2023-12-07 04:30:08 -05:00
Tom Rothamel c54180ac8d Add the ability to force Python to be compiled.
Eventually leading to warnings being emitted.
2023-12-07 01:42:56 -05:00
Tom Rothamel e784f2733f Remove debug print. 2023-12-07 01:41:53 -05:00
Tom Rothamel fa7876055e Merge pull request #5062 from mal/fix-mouse-rel
Update rel values of combined mouse events
2023-12-06 22:29:55 -05:00
Tom Rothamel 84860185c5 Merge pull request #5084 from renpy/doc-dynamic-stores
Document that renpy.dynamic supports variables in stores
2023-12-06 22:25:27 -05:00
Gouvernathor 0471807ede Standalone parameterinfo (#5099)
* Convert ParameterInfo to an inspect subclass, adapt parsing

* Prettier repr for screens

Include the (pretty !) signature in the repr.
The default values are not themselves but the strings evaling to them - but who cares

* Monkeypatch ATL just enough for it to work

use .items() bc it's now a dict, access the default value the new way, and account for Parameter.empty

* Reimplement apply in a much better way

The default values are now evaluated lazily, only when needed, which is both faster and closer to the previous behavior.
The implementation of ignore_errors is not as good, but that should get improved soon.
Performances of the apply call on autorange goes from 50k-.30 to 100k-.32, which is almost a 2x speedup
The legacy apply call is at 100k-.23, we're dragging 40% slower but closing

* Copy and tweak Signature._bind to further improve perfs

apply call's autorange is now 100k-.29, so 26% slower than the former implem
we now manage the _ignore_extra_kwargs special kwarg behavior, forgotten until now
Having all the different raised exceptions now opens the door to ignoring errors all we like

* Realy implement ignore_errors

* Hasten legacy constructor and use empty uniformly

There are pros and cons of using empty or None, only one should be used (especially since now we control unpickling and binding) but let's decide that later

* Fix ignore_errors

* Simplify None barrier and avoid kwargs mutations

* Break free from inspect, make compat for py2, tweak stuff

* Rename the class to prevent unpickling on older versions

* Rephrase signature parsing errors

* Fix : allow defaulted and required kw-only in any order

and comments

* Simplify some code now that Parameter.empty is None

* Improve pyanalysis

extrapos and extrakw are now part of the list (actually dict keys) parameters
while that code would not yield exceptions, it added the same names twice which is a waste of time

* Fix and improve lint parameters check

p[0] gave the first letter of each parameter name, which invalidated the whole test
also, as with previous, extrakw and extrapos are part of the normal list of parameters

And as a bonus, separate the check for renpy and for python internals, making the report more understandable

* Mark ATL transform as needing reform

the only remaining use of extrapos and extrakw after which the properties can be removed from the Signature class

* Fix signature equality

dict equality didn't test ordering

* Hasten Signature equality

Theoretically signatures with different kw-only orderings should be considered equivalent,
but their repr is different, and no part of renpy optimizes over that
and our Signature is not hashable, so who cares, this is faster

* Patch dict ordering for py2

Otherwise a signature pickled in py3 and resurrected in py2 would have arbitrary ordering

* Todo for the future

* Remove unnecessary method

* Only report the first pos-only parameter

showing all of them in a row was bulky on the report

* Print the invalid parameters
2023-12-06 22:24:55 -05:00
Gouvernathor be3c6a0927 Fix interpolation of move transitions wrt the position type 2023-12-06 14:44:27 +01:00
Tom Rothamel d2d991a652 Document deferred translation loading. 2023-12-06 01:48:46 -05:00
Tom Rothamel 15d3719d9b Add the ability to defer the loading of translation scripts.
This speeds up the start of games with large numbers of
translations, by deferring the loading of a game's
translation scripts until the language is selected.

The downside is that these scripts are loaded out of order, but
that seems like a small price to pay for the speed boost that
can be provided.
2023-12-06 01:21:35 -05:00
Tom Rothamel 099b90feb5 Change sample code to work. 2023-12-06 01:06:33 -05:00
Tom Rothamel 064d4066c2 Allow presplash functions to be called at any time.
This simplifies scripts that may optionally call the
presplash.
2023-12-06 01:05:08 -05:00
Tom Rothamel f9a948293e Re-add support for split data in archived files.
These were used in older games to make unpacking a .rpa
harder. They're still not useful, but are necessary to play
older games in modern Ren'Py.
2023-12-05 02:31:19 -05:00
Tom Rothamel 6b1233923e Create RWopsIO directly from buffers. 2023-12-04 23:37:48 -05:00
Tom Rothamel 13cfd68491 Make the loader use RWopsIO. 2023-12-04 04:11:29 -05:00
shawna-p e0a826f06b Drag & Drop fixes and expansions (#4972)
* Fix the start x/y

* Keep the grab x/y accessible in the drop/dragged callbacks

* Can also fetch drags by name

* Documentation

* Clicked callback passes the Drag

* Can reset last_drop at the start

* Fix a typo for the drag docs

* Snap takes a warper

* More documentation

* Disallow dropping while drag is snapping

* Fixes for getting a drag by name

* Convert callable to a run call

* Add snapped callback

* Add the snapped property

* Document last_drop

* Update description

---------

Co-authored-by: Tom Rothamel <pytom@bishoujo.us>
2023-12-03 13:33:29 -05:00
Tom Rothamel 805662251e drag: Use weakrefs to refer to the DragGroup.
This prevents a reference cycle, and in doing so prevents the
garbage collector from having to run.
2023-12-03 01:08:46 -05:00
Tom Rothamel 72744a77dc drag: Add drags to a DragGroup at the top of the stack.
Fixes #5104.
2023-12-02 23:39:26 -05:00
Tom Rothamel cb67bd0e28 drag: Reset drag_move when a drag ends.
Fixes #5116.
2023-12-02 21:50:25 -05:00
Tom Rothamel 04d5381c26 Optimize is_pixel_opaque to consider Render transparency.
This is a performance improvement to focus_mask, especially in
the case where where the bounding of non-transparenty pixels is
small relative to the size of the imagebutton. In that case, the
GPU is only invoked when inside the bounding box.

This prevents expensive round trips to the GPU when we're sure
those operations will be unproductive.

Per #3612.
2023-12-02 16:28:48 -05:00
Tom Rothamel e4530d2791 Ensure that non-gl2 renderers can still be activated. 2023-12-02 16:25:48 -05:00
Tom Rothamel 13908eed30 Disable config.gl2.
This is inspired by #5152, where a large number of crashes were
caused by an issue that was fixed in GL2.

The only reason to keep GL1 in is that we promised another release
with it, but it doesn't need to be easy to use.
2023-12-02 10:58:41 -05:00
Tom Rothamel 5fb402c2d5 doc-gen: Improve scrolling.
Fixes #5153.
2023-12-01 22:08:20 -05:00
Tom Rothamel 4d67a6d93e Make "Image Attributes" list images on all layers
Fixes #5157.
2023-12-01 21:10:47 -05:00
Tom Rothamel fd62945a2a Only report label call errors in developer mode.
The rationale is that if there is nothing that can be done
about the errors, we're not helping the player by forcing
a crash.
2023-12-01 20:25:48 -05:00
Tom Rothamel 8b38433829 Merge pull request #5155 from AbdulGoodLooks/patch-2
Fix typo
2023-11-30 23:54:30 -05:00
Tom Rothamel 355fc4f0af Avoid ever deleting the pixel buffer.
This is an attempt to fix #5152, a crash in glTexImage2D.
2023-11-30 22:48:36 -05:00
Abdul cf0f979c62 Fix typo 2023-11-30 22:33:52 +00:00
Ren'Py Bot fade20a4f1 Merge branch 'fix' 2023-11-30 04:30:08 -05:00
Tom Rothamel f88267da29 py2: Add support for py2 to the position class. 2023-11-29 21:43:30 -05:00
Mal Graty 261ac30727 Merge pull request #5151 from the66F95/_enter_menu()
typo in _enter_menu()
2023-11-29 21:19:42 +00:00
the66F95 e33999e373 typo in _enter_menu()
might fix issue #5131, idk.
2023-11-29 20:54:23 +00:00
Gouvernathor b3ab78b557 Lint check_conflicting_properties 2023-11-29 21:27:26 +01:00
Ren'Py Bot 34702cec5f Merge branch 'fix' 2023-11-29 02:11:13 -05:00
Tom Rothamel 2649abec94 Improved search for the SDL dll.
This finds it on macOS, as well as the other platforms.
2023-11-29 02:10:23 -05:00
Tom Rothamel af1310f04d Improved search for the SDL dll.
This finds it on macOS, as well as the other platforms.
2023-11-29 02:04:51 -05:00
Tom Rothamel c634b5d6e4 Rename --builtins-parameters to reserved parameters. 2023-11-28 21:55:30 -05:00
Gouvernathor a36709f1c6 Better manage lint toggles V2 (#5092) 2023-11-28 21:45:09 -05:00
Gouvernathor 16e50a978e Add a general coordinate type and allow mixed-type ATL interpolation (#5123)
Add a new position type, representing the sum of an absolute position (a current int or absolute) and a relative position (a current float).

See #5013 for the rationale. Closes #5103.
2023-11-28 21:43:40 -05:00
Tom Rothamel 818c7b5daa Merge pull request #5143 from renpy/color
Allow any iterable to build a color, not just a tuple
2023-11-27 21:58:04 -05:00
Ren'Py Bot 64172bd4f2 Merge branch 'fix' 2023-11-27 04:30:08 -05:00
Tom Rothamel 524508470c doc: Fix libjpeg_turbo license.
Fixes #5147.
2023-11-27 00:48:14 -05:00
Tom Rothamel 479e9b1d4a doc: Fix bad indentation. 2023-11-26 19:30:46 -05:00
Tom Rothamel 5c52c076c4 Enable anistropy on gles.
Per #5146.
2023-11-26 18:15:46 -05:00
Tom Rothamel 02fa5ad2bf Merge pull request #5144 from mal/restore-c-conversion
Restore intended behaviour for c in conversion
2023-11-26 16:15:02 -05:00
Ren'Py Bot 53b85f2084 Merge branch 'fix' 2023-11-26 04:30:08 -05:00
Tom Rothamel 00cf974dfa Merge pull request #4799 from renpy/police-atl-params
Forbid pos-only and required kw-only parameters in ATL
2023-11-25 22:56:31 -05:00
Tom Rothamel 719ca310c9 Move the scene lists into a single file.
This simplifies core.py, making pylance analysis go faster.
2023-11-25 22:20:55 -05:00
Gouvernathor bb9c544334 doc: Add links between the two tooltips locations
The new scpref role only exists in master
2023-11-26 04:15:30 +01:00
Tom Rothamel d6b60995cc Do not parse name==... as a keyword argument.
Thanks to reflexbound on discord for pointing this out.
2023-11-25 21:09:14 -05:00
Tom Rothamel eb746dd991 Do not parse name==... as a keyword argument.
Thanks to reflexbound on discord for pointing this out.
2023-11-25 21:08:01 -05:00
Mal Graty f2441a6185 Restore intended behaviour for c in conversion
The change to str.capitalize over str.upper was to cover the case of
digraphs such as "nj" (see pydoc ref). However the remainder of the
string should remain untouched per our docs, with full str.capitalize
parity being achieved by combining the l and c conversions.

Use of capitalize does swap one quirk with another: Previously "NJ", "Nj",
and "nj" would all become "NJ"; now they will all become "Nj". The
potential down casing of the constituent J of the upper case form ends
up being a better trade off than the up casing of the J from the two
latter forms, especially within the context of the c conversion.

ref: https://docs.python.org/3/library/stdtypes.html#str.capitalize
2023-11-24 12:01:19 +00:00
Tom Rothamel cd3b7e2ec8 Change futured_files to file_compiler flags, make defaultdict. 2023-11-24 00:46:40 -05:00
Tom Rothamel b2ff055420 Merge pull request #4716 from renpy/rpy-python
Repeal the annotations future and expand the `rpy python` statement
2023-11-24 00:39:33 -05:00
Tom Rothamel 678e06ff3e Merge branch 'master' into rpy-python 2023-11-24 00:38:26 -05:00
Tom Rothamel e4520b9569 Merge pull request #4561 from Ayowel/fix/ios_create_project
Ensure ios_create uses the target project's information
2023-11-24 00:27:12 -05:00
Tom Rothamel 4c84e878e7 Merge pull request #4495 from jsfehler/docs-stylepreference
docs: Add note for StylePreference about update event getting called
2023-11-24 00:21:55 -05:00
Tom Rothamel 8396e98a43 Make the c conversion use str.capitalize.
Per #3534, closes #3534.
2023-11-24 00:12:47 -05:00
Tom Rothamel c692b098cb Use only the hover image for a hotspot's focus mask.
Fixes #5142, taking h3llra1ser's solution.
2023-11-23 21:18:16 -05:00
Tom Rothamel fe0b544df0 Use the full desktop layout when selecting window position.
This might  be a bit paranoid, but I want to be 100% sure that
the window is on a screen.
2023-11-23 00:45:45 -05:00
Gouvernathor 04a3ef76f2 Raise errors when passing an invalid color parameter 2023-11-23 00:13:11 +01:00
Gouvernathor 8130b65469 Allow Color to take any iterable
also quickens it
2023-11-23 00:09:24 +01:00
Tom Rothamel 389f6cb76c Reclaim some of the empty space in the launcher.
Some of the screens are getting packed, especially when
translations may increase the space. So remove some of the
padding around things.
2023-11-22 17:46:06 -05:00
Tom Rothamel f30cb45ca6 Make restoring the window position a preference. 2023-11-22 17:40:30 -05:00
Tom Rothamel 93e7464a54 doc: Changelog accessibility work. 2023-11-22 01:10:14 -05:00
Tom Rothamel 07b614baa7 Add extra_alt.
This is text that's spoken when the ? key is pressed and
self-voicing is enabled.
2023-11-22 01:07:06 -05:00
Tom Rothamel 00c03b137f alt: Add the group_alt property.
This specifies a group prefix that is spoken the first time a
displayable with the first group prefix is spoke, but won't
be spoken again until a displayable with a different group
prefix is spoken.
2023-11-22 00:37:51 -05:00
Tom Rothamel a04d0a7bae More revisions to wording. 2023-11-21 21:50:05 -05:00
Gouvernathor f79df3b605 Guarantee that invoke_in_main_thread calls are sequential (#5130)
doc: Guarantee that invoke_in_main_thread is sequential
2023-11-20 23:11:34 -05:00
the66F95 daf72a1a99 Fix incorrect variable use involving temporary attributes. (#5136) 2023-11-20 22:16:24 -05:00
Tom Rothamel 9e86457e1a Add the renpy.{get,set}_screen_variable methods.
Providing ways for actions to access screen variables, when
required.

Per #5135.
2023-11-20 20:30:51 -05:00
Tom Rothamel 4b209bc6b4 doc: Fix changelog. 2023-11-20 01:51:49 -05:00
Tom Rothamel 8f023aa580 Merge branch 'fix' 2023-11-20 01:50:08 -05:00
Tom Rothamel 0c7dc2405a tts: The selected_alt property shouldn't say "selected".
Previously, if selected_alt was set for a button, Ren'Py would
say "<whatever> selected." Now it will only say that if selected_alt
is the same as hover_alt.
2023-11-20 01:48:19 -05:00
Tom Rothamel 99e00e43eb doc: The alt attribute of Buttons and BarValues.
Per #5054.
2023-11-20 00:40:12 -05:00
Kassy 71878bafb7 New detection for iPad
Since iOS 13, Safari uses the desktop mode by default on iPad which removes
the "iPad" string from the User-Agent header. The new detection looks for
an Apple product with touch enabled (there is no MacOS product with touch
screens AFAIK).
2023-11-20 00:24:18 -05:00
Tom Rothamel 85c8a114c2 Ensure the current screen is set properly during transform events.
Fixes an issue with:

     screen some_on:
          default A = None
          on "show" action SomeAction("A")
          text "[A]" xalign .0 yalign .2

     init python:
          class SomeAction(Action):
               serial = 0
               def __init__(self, name):
                    self.name = name
               def __call__(self):
                    renpy.notify(f"{renpy.current_screen()=}")
                    renpy.run(SetScreenVariable(self.name, self.serial))
                    SomeAction.serial += 1
2023-11-20 00:22:00 -05:00
Tom Rothamel 9dec43ce2d webaudio: Add some defensive coding against file being None.
Tries to fix #5134.
2023-11-20 00:21:37 -05:00
Tom Rothamel 03b12abe76 Fix an issue detecting maximization on Linux.
Or more specifically, non-maximization - the test would occur
only when the window was resized, and on Linux that can happen
before the maximize flag is removed.
2023-11-20 00:21:24 -05:00
Tom Rothamel 6f8ca11f5f Add a few ways to disable window positioning. 2023-11-20 00:20:37 -05:00
Tom Rothamel 534af32307 Store the window's position in preferences.
And restore it when the game restarts, assuming the display
configuration remains the same.

This also trusts the stored window size when the display
configuration remains the same - on the grounds that if it worked
in the past, it'll work in the future.
2023-11-19 23:53:14 -05:00
Tom Rothamel dcc18305ea Fix an issue detecting maximization on Linux.
Or more specifically, non-maximization - the test would occur
only when the window was resized, and on Linux that can happen
before the maximize flag is removed.
2023-11-19 22:40:16 -05:00
Tom Rothamel f68c6954ca webaudio: Add some defensive coding against file being None.
Tries to fix #5134.
2023-11-19 20:51:55 -05:00
Tom Rothamel 57effd15c5 text: Introduce split ignore.
Text that's marked with SPLIT_IGNORE (the unicode
CL and CP classes) is text that isn't considered for the
purpose of the linebreaking algorithm. These characters tend to
be CJK punctuation and close parenthesis.

SPLIT_IGNORE text doesn't have it's size taken into account when at
the end of a line. This keeps the layout the same visual width, rather
than breaking a character and it's punctuation on the next line.

Fixes #3356, except for ー , though renpy.language_tailor could be
used to change the break class of that character if desired.
2023-11-19 00:56:12 -05:00
Gouvernathor 8e270b8d29 doc: Clarify renpy.pause's parameters 2023-11-18 23:46:00 +01:00
Tom Rothamel 332dfb510b Optimize transform when alpha == 0.
When alpha is 0, the child isn't visible. So don't bother to
draw it.
2023-11-18 00:26:02 -05:00
Tom Rothamel f573db70c2 Ensure the current screen is set properly during transform events.
Fixes an issue with:

     screen some_on:
          default A = None
          on "show" action SomeAction("A")
          text "[A]" xalign .0 yalign .2

     init python:
          class SomeAction(Action):
               serial = 0
               def __init__(self, name):
                    self.name = name
               def __call__(self):
                    renpy.notify(f"{renpy.current_screen()=}")
                    renpy.run(SetScreenVariable(self.name, self.serial))
                    SomeAction.serial += 1
2023-11-17 21:21:50 -05:00
Tom Rothamel fd437c423c Clean up log.txt a bit. 2023-11-17 00:48:35 -05:00
Tom Rothamel 270b4bbb07 Include the game name, version, and build time in logs.
Originally from #3911.
2023-11-17 00:42:36 -05:00
Tom Rothamel 3836adf7b0 build: Combine build.time and build.info into cache/build_info.json
As a way of addressing #3911. The approach there is better, so
going with it.
2023-11-17 00:26:08 -05:00
Tom Rothamel da6ce04df2 Politely berate people for still using Atom.
Per #5077.
2023-11-16 22:44:14 -05:00
Tom Rothamel c916fe311f rt: Remove guisupport when making a test game. 2023-11-16 22:28:11 -05:00
Tom Rothamel a3986b6d23 Merge pull request #5078 from renpy/cancel-atom
Stop proposing Atom as integrated editor
2023-11-16 21:32:40 -05:00
Tom Rothamel b81d985fb2 Rename function. 2023-11-16 01:35:58 -05:00
Tom Rothamel e5fcf87c8f Add build.time. 2023-11-16 01:35:10 -05:00
Tom Rothamel ea3bb8c741 Add build.info.
This lets the creator store information about the build that's
read back.
2023-11-16 01:35:10 -05:00
Tom Rothamel 4015cd7c53 Merge pull request #5121 from tessus/fix/macox-launch-error
fix(arguments): ignore -psn_0 argument on macOS
2023-11-15 22:55:36 -05:00
Tom Rothamel a50b13afa5 Merge pull request #5115 from Kassy2048/fix_5089
Differentiate between adv and nvl menus for window auto hide
2023-11-15 00:05:55 -05:00
Tom Rothamel e7db3adbab doc: Movie image/group interaction.
Fixes #5088.
2023-11-14 23:56:14 -05:00
Tom Rothamel 1fa2bb5240 controller: Make B access the game menu.
Fixes #5019
2023-11-14 21:56:41 -05:00
Helmut K. C. Tessarek e885029180 fix(arguments): ignore -psn_0 argument on macOS
On macOS a file with the quarantine flag will cause an error on game start:

```
error: unrecognized arguments: -psn_0_some_number_here
```

Unfortunately the end user has no control over how the renpy engine is packaged
and/or embedded. Thus let's ignore this argument.
2023-11-14 13:38:16 +01:00
Tom Rothamel 3811005556 Actually cache the keymap entries we compile. 2023-11-14 00:51:12 -05:00
Tom Rothamel 1720565972 Make sure #5114 is compatable with older saves. 2023-11-13 21:33:03 -05:00
Tom Rothamel 80bed537a9 Merge pull request #5114 from shawna-p/nearrect-updates
NearRect Updates
2023-11-13 21:29:57 -05:00
Ren'Py Bot 662bac0343 Merge branch 'fix' 2023-11-13 21:28:54 -05:00
Tom Rothamel eca0051a70 Merge pull request #5119 from mal/py2-sync
py2: Alternate timestamp calculation in sync
2023-11-13 21:04:23 -05:00
Mal Graty 03774c911f py2: Alternate timestamp calculation in sync 2023-11-13 23:55:53 +00:00
Ren'Py Bot 22b93bc017 Merge branch 'fix' 2023-11-13 04:30:08 -05:00
Tom Rothamel 9ff386d1d9 Precompile the keymap, makesure gamepad binding exist.
This should speed things up ever so slightly in rare cases, and
fixes #5101.
2023-11-13 01:20:37 -05:00
Tom Rothamel f3e85d6a24 Add missing colon. 2023-11-13 01:08:43 -05:00
Tom Rothamel ba25120c6c doc: That config.say_layer should be in config.context_clear_layers.
Fixes #5071.
2023-11-13 00:19:22 -05:00
Tom Rothamel 2edfdc4ca9 Make it possible to customize the sync overlay through styles.
Fixes #5112.
2023-11-13 00:14:58 -05:00
Tom Rothamel f33834a058 Range-check inertial-warper. 2023-11-12 21:02:40 -05:00
Kassy ca1ee922d5 Differentiate between adv and nvl menus for window auto hide 2023-11-12 21:14:11 +01:00
shawna-p 5294d389c5 Rename property, add to screen language 2023-11-12 13:07:48 -05:00
shawna-p fdfcde9f97 Add more preferred sides 2023-11-12 13:02:05 -05:00
Tom Rothamel 521db6b3ad Add config.save_persistent.
A way to prevent persistent from being saved.
2023-11-12 02:24:38 -05:00
Tom Rothamel 349ac2d40a Add config.save.
Which lets us disable the say system.
2023-11-12 02:21:31 -05:00
Tom Rothamel d8df2a44ee presplash: Allow 1-bit transparency. 2023-11-11 21:24:12 -05:00
Tom Rothamel 2d2e0e0b15 Merge pull request #5109 from mal/persistent-safety-encapsulation
Centralise safety features for persistent data
2023-11-10 18:14:54 -05:00
Mal Graty 51a02f5a7d Centralise safety features for persistent data
Also guard their installation with the early_developer flag to avoid
impacting production games.
2023-11-10 13:24:08 +00:00
Asriel Senna b1dda7b7a0 Doc typo 2023-11-10 10:07:47 +01:00
Asriel Senna 7a9e363fea Save some time on persistent_dumps 2023-11-10 10:06:12 +01:00
Tom Rothamel e1ee5e2a08 Merge pull request #4606 from renpy/list-operators
Bring list operator dunders in accordance with the datamodel
2023-11-10 01:41:45 -05:00
Tom Rothamel c260995ccd Merge pull request #4545 from renpy/persistent-safety
Add a type check on data saved in persistent
2023-11-10 01:40:21 -05:00
Tom Rothamel 252daadee9 doc: Fix gui documentation typo.
Fixes #5106.
2023-11-09 23:33:44 -05:00
Tom Rothamel c9c9a14957 Add renpy.invoke_in_main_thread.
This is a way for a Python thread to run things in the main
Ren'Py thread.

Per #5015
2023-11-09 23:31:03 -05:00
Tom Rothamel e7eb021eab dl: Minor cleanups.
* Do not distribute the alternate base directory.
* Improvements to the downloader screen.
2023-11-08 02:29:04 -05:00
Tom Rothamel 96d9d38890 dl: Add functions and screen for game downloading.
The culmination of the altbase and updater work - the ability to
download and install a game update from the server, and install
it onto a device.
2023-11-08 02:01:56 -05:00
Tom Rothamel 318eb7a7bd update: Make cancelling optional.
Since it doesn't make sense to cancel an altbase update.
2023-11-07 01:18:08 -05:00
Tom Rothamel 94f8dc9c13 updater: Several changes to support altbase.
* Allow an utter restart at the end of an update.
* Allow the update to restart without prompting.
* Allow the screen to be customized.
2023-11-06 01:27:31 -05:00
Tom Rothamel 45990477e5 rpu: Fix issues with multiple variants.
The problem was that segements weren't being handled properly,
which meant that the created update was corrupt.

Also, remove test harness that hasn't been used in a while.
2023-11-06 01:24:11 -05:00
Tom Rothamel 799b05de51 altbase: Allow the altbase to change during renpy.utter_restart. 2023-11-05 19:13:59 -05:00
Tom Rothamel c981c054cb doc: Fix typo. 2023-11-05 18:07:32 -05:00
Tom Rothamel 2458691fe1 doc: Fix errors. 2023-11-05 17:03:01 -05:00
Tom Rothamel 5a982ee902 altbase: Add the game-only update for mobile.
This is the data that needs to be installed by the updater into
the alternate base directory, and now it's being generated by the
build process.
2023-11-04 22:30:16 -04:00
Tom Rothamel b267552a04 rpu: Create a single set of RPUs.
With all the data shared between them. Mostly for disk space
reasons - it doesn't make a ton of sense to have a separate
set for each variant.
2023-11-04 21:37:20 -04:00
Ren'Py Bot 179c513abb Merge branch 'fix' 2023-11-04 04:30:01 -04:00
Tom Rothamel 7e268785d7 launcher: Make the rpu format a preference.
It should be the default where it's available, but we'll have a
preference for a release or two, so that we can test the updater.
2023-11-03 23:58:08 -04:00
Tom Rothamel 925769f0cd update: Document the new updater. 2023-11-03 23:34:24 -04:00
Tom Rothamel 631ac0916e update: Transfer progress to the public Updater object. 2023-11-03 23:33:55 -04:00
Tom Rothamel acf690fdec Document gui.system_font.
Fixes #5097.
2023-11-03 22:06:45 -04:00
Tom Rothamel 827fa05a7a Document gui.system_font.
Fixes #5097.
2023-11-03 22:05:57 -04:00
Mal Graty b850ed8c92 Merge pull request #5096 from brainos233/fix-lint-unclosed-tags
Fix incorrect parameter for unclosed text tags
2023-11-03 06:21:51 +00:00
Tom Rothamel d690b71c6f Add some boilerplate to projects.txt. 2023-11-03 01:15:56 -04:00
Tom Rothamel 033149c173 Merge pull request #3695 from renpy/open-projects-txt
Open/create projects.txt from the launcher preferences
2023-11-03 01:09:41 -04:00
Brainos 913a3c9239 Fix incorrect parameter for unclosed text tags 2023-11-03 12:31:40 +08:00
Tom Rothamel 629f3ffd3c Allow comments in projects.txt. 2023-11-02 23:43:37 -04:00
Tom Rothamel f99fed20e6 Merge pull request #5086 from qTich/fix/fetch-timeout
fix: `fetch_emscripten` timeout loop
2023-11-02 22:52:04 -04:00
Tom Rothamel 0dd65f3258 Merge pull request #5093 from renpy/lint-unclosed-tags
Allow linting unclosed tags
2023-11-02 22:51:49 -04:00
Ren'Py Bot 90ea141628 Merge branch 'fix' 2023-11-02 04:30:07 -04:00
Tom Rothamel c6659c7e54 Use the correct name for the old update format.
Fixes #5095.
2023-11-02 00:35:03 -04:00
Tom Rothamel 6a839b5829 Produce a better error when an inputvalue is None. 2023-11-01 23:02:48 -04:00
Gouvernathor d4914072ae Better writing 2023-11-01 13:56:29 +01:00
Gouvernathor 8bafe2a4a7 Readd checking for unclosed text tags, toggled by lint 2023-11-01 13:54:47 +01:00
Ren'Py Bot 2968a188a8 Merge branch 'fix' 2023-11-01 04:30:07 -04:00
Tom Rothamel a40cc67779 doc: Fix build. 2023-11-01 02:07:00 -04:00
Tom Rothamel ef44609fdd Undocument the long-obsolete config.missing_background. 2023-10-31 23:36:43 -04:00
Tichq 9d6249ca70 fix: fetch_emscripten timeout loop 2023-10-31 14:43:11 +03:00
Ren'Py Bot 305ab54c5d Merge branch 'fix' 2023-10-31 04:30:07 -04:00
Tom Rothamel 8f5f61bd47 Conform webaudio results with desktop audio.
For the get_pos and get_duration functions.

Per #5065.
2023-10-31 00:46:10 -04:00
Asriel Senna adc3af84ad Document that renpy.dynamic supports variables in stores 2023-10-31 01:14:27 +01:00
Asriel Senna 134fe7ffec Remove debug print 2023-10-31 00:57:52 +01:00
Tom Rothamel 8b79a3663c doc: Changelog the last few merges. 2023-10-30 17:56:30 -04:00
Elckarow fdf38adc83 sl2: copy_properties method for custom statements (#4839)
This takes the properties from another screen language statement.
2023-10-30 17:51:42 -04:00
Denys 921feb4ada Update Ukrainian translation. (#4996) 2023-10-30 17:50:14 -04:00
Gouvernathor f367e996aa Rework Inputvalues (#5080)
Add LocalVariableValue, factorize a bunch of code, use the same doc-generating model as with bar values.
2023-10-30 17:48:53 -04:00
Tom Rothamel c0c182d200 Merge pull request #5081 from renpy/language-basics
Rework the language basics page
2023-10-30 17:47:50 -04:00
Tom Rothamel a5fec5a7a5 rpy: Add a path if range queries are failing entirely. 2023-10-30 02:26:35 -04:00
Gouvernathor 0f668f2810 More tweaks 2023-10-30 00:57:00 +01:00
Asriel Senna 5cba186326 Chitespace, docstrings and unused ref anchors 2023-10-30 00:44:57 +01:00
Asriel Senna 74631fe701 Rework the language basics page 2023-10-30 00:44:26 +01:00
Tom Rothamel 13eeb9d0c0 update: Move prompt confirm to later in the update process.
Specifically, until after the update method has been selected, and
for rpu, after the files have been scanned and the size of the
download is known.

This will (shortly) let us give the user information about
download and disk size.
2023-10-29 14:55:39 -04:00
Tom Rothamel 1066157585 update: Call the old update format "zsync". 2023-10-29 12:25:22 -04:00
Tom Rothamel 7742627373 update: Add support for updating an empty directory.
That is, taking an empty alternate base directory and turning it
into a working game.
2023-10-28 22:34:27 -04:00
Tom Rothamel 95102a6b71 rpu: Add support for determining the download and disk size.
And pausing to prompt the user once that's known.
2023-10-28 22:30:14 -04:00
Gouvernathor d7080311f5 Mark editors as deprecated to stop showing them in the list 2023-10-29 00:28:13 +02:00
Gouvernathor 3aa02b7db6 Mark Atom as obsolete and hide it when not installed 2023-10-29 00:11:24 +02:00
Tom Rothamel acac446c8b py2: Fix. 2023-10-28 13:35:41 -04:00
Tom Rothamel 9fc8e43f17 Merge branch 'fix' 2023-10-28 01:10:03 -04:00
Tom Rothamel 6d6003f4e0 sl2: Fix issue with transcludes and custom statements.
Fixes #5074.
2023-10-28 00:53:25 -04:00
Tom Rothamel 7ff1b3b5c5 Merge pull request #5057 from renpy/lint-toggles
Add lint toggles
2023-10-27 00:50:42 -04:00
Tom Rothamel 4fd318880e doc: LocalVariableValue 2023-10-27 00:48:56 -04:00
Gouvernathor 6cd57b192a Factorize and improve some Barvalue subclasses (#5064)
* factorize the most common BarValue subclasses, using the same recipe (but in a much simpler way) as in Action mixins #4473, which considerably shortens the code and avoids code duplication
* fix the kind parameter of FieldValue and VariableValue - it was saved but never passed to _get_field and _set_field
* fix some subclasses doc entries that weren't appropriately worded, some which set variables mentioned "fields"
* implement LocalVariableValue, supersede and fix add the LocalVariableValue action #5055, and allow it to have adequately-worded exceptions


Co-authored-by: Mal Graty <mal.graty@googlemail.com>
2023-10-27 00:47:21 -04:00
Tom Rothamel 8c6aab0bc6 Revert "add the LocalVariableValue action (#5055)"
This reverts commit 2451b3f0da.
2023-10-27 00:46:14 -04:00
Elckarow 2451b3f0da add the LocalVariableValue action (#5055) 2023-10-27 00:42:27 -04:00
Gouvernathor daea1375c3 Various tweaks and updates (#5069)
* Simplify currying in exports

* Unused import

* Docstrings, whitespace and exceptions

The docstrings were obsolete (not only buttons and hotspots take actions now, and they are now the core of screen language so nobody ignores what they are)
and the information that they can be subclassed is much more important in my view
Also these exceptions are better

* utflf
2023-10-27 00:41:32 -04:00
Tom Rothamel ada2b860f6 Merge pull request #5070 from qTich/fix/web-input-prompt
fix: translate `prompt` when used `web_input`
2023-10-27 00:41:09 -04:00
Tom Rothamel 6758447cad Merge pull request #5073 from renpy/pass-layeredimage
Re-add the pass keyword to the layeredimage language
2023-10-27 00:40:53 -04:00
Tom Rothamel 035d6e7b30 doc: Fetch. 2023-10-27 00:06:32 -04:00
Tom Rothamel 0675f6ce44 fetch: Fix fetching on the web platform. 2023-10-26 23:25:56 -04:00
Gouvernathor c7317c076b Re-add the pass keyword to the layeredimage language 2023-10-27 03:50:17 +02:00
Tom Rothamel 6bd420b421 fetch: Add the renpy.fetch function.
This is a single function that can fetch data from a web server,
optionally taking binary data or json as input, and returning its
result as bytes, text, or json-decoded data.
2023-10-26 00:59:19 -04:00
Tichq c1f2db72b5 fix: translate prompt when used web_input 2023-10-26 03:14:12 +03:00
Tom Rothamel f87917e399 Changes to android APK loading.
* Remove support for Expansion APKs. These have been obsolete for
  some time.

* Only use the APK for game files if an alternate base directory is
  not in use.
2023-10-25 19:52:33 -04:00
Gouvernathor 6bc50d6454 Make the doc generation of the mixined actions conditional 2023-10-25 19:44:55 +02:00
Tom Rothamel a2bfa02de1 doc: Fix caps on one line. 2023-10-25 09:38:10 -04:00
Gouvernathor a3ad875263 doc: fax the fox 2023-10-25 14:01:20 +02:00
Tom Rothamel 80d3075bf0 id: Force the director into lines mode after a reload.
Fixes #5028.
2023-10-25 01:08:44 -04:00
Tom Rothamel 0b213cc7db doc: Edits to the data accessor changelog. 2023-10-24 23:34:39 -04:00
Tom Rothamel 23fc2f66c9 Merge pull request #5067 from renpy/changelog-mixins
Changelog mixins
2023-10-24 20:40:20 -04:00
Ren'Py Bot 19498d5bce Merge branch 'fix' 2023-10-24 04:30:07 -04:00
Tom Rothamel 7f37382012 Avoid distributing web-icon.png in other formats. 2023-10-23 22:58:51 -04:00
Kassy 7fcad404b6 Web icon fix (#5018)
* Fix web icon name

The code looks for "web-icon.png" but the comment and function names
referred to "pwa_icon.png".

* Document the web icon customization
2023-10-23 22:58:20 -04:00
Tom Rothamel d8ad7d1672 Create checkpoints when hard skipping.
Fixes #5025.
2023-10-23 22:04:38 -04:00
Tom Rothamel e4b550b8c3 Create checkpoints when hard skipping.
Fixes #5025.
2023-10-23 22:04:01 -04:00
Gouvernathor 67bdb9ab03 Changelog mixins 2023-10-23 10:44:58 +02:00
Gouvernathor 6f44533bbe Mixin-Based Data Actions
This change replaces the implementation of the data actions with mixins, one for accessing the data and one for changing it. Doing so simplifies and regularizes the implementation, and makes it possible to add new types of data actions, like the Cycle and Increment actions added here.
2023-10-22 22:47:11 -04:00
Tom Rothamel d084b624b9 Merge branch 'fix' 2023-10-22 22:34:16 -04:00
Tom Rothamel 06d3a90bd7 Include checkpointing_suspended in the rollback objects.
It's possible (and had been for some time) to rollback into a spot
where checkpointing was suspended - but checkpointing would be re-enabled,
meaning that checkpoint_suspended would be forgotten.
2023-10-22 22:27:18 -04:00
Tom Rothamel 5e64403699 Fix issues with greedy rollback by default.
Fixes #5040, which was caused by the interaction of greedy rollbacl
and suspended rollback.

Fixes #5035, which was just never actually looking at the _greedy_rollback
variable.
2023-10-22 22:12:55 -04:00
Tom Rothamel d8954aa732 doc: Change links to Chinese documentation. 2023-10-21 01:52:15 -04:00
Tom Rothamel 669b07afef Add support for an alternate base directory.
This is a directory that is checked for update/version.json. If that
file exists and has versions that match the current engine, it is
used as the base directory instead of what the engine provides.

The main reason for this is to support Android games larger than
2GB, by letting those games download content.
2023-10-21 01:45:26 -04:00
Tom Rothamel e2bc3fb55c rpu: Write a version.json file into the update directory.
This file only exists if the update has finished successfully,
and contains the version information from updates.json.

It's intended to be used ot ensure that an alternate base
directory works with Ren'Py.
2023-10-20 23:24:07 -04:00
Tom Rothamel 088b1572ef rpy: Search for Ren'Py's update.pem in the base directory. 2023-10-20 00:31:30 -04:00
Gouvernathor a30f562d38 Resolve type issues 2023-10-19 21:23:42 +02:00
Ren'Py Bot 4768a012db Merge branch 'fix' 2023-10-19 04:30:07 -04:00
Tom Rothamel c7d8bd1dc9 rpu: Allow an update to be signed by multiple keys.
This provides a way to migrate old versions to a new key.
2023-10-19 01:27:07 -04:00
Tom Rothamel be226363e8 rpu: Include update information in all mutable formats. 2023-10-19 01:11:07 -04:00
Tom Rothamel 267a807146 rpu: Verify ECDSA signatures. 2023-10-19 00:53:17 -04:00
Tom Rothamel 34468cf57d Ignore update.pem. 2023-10-19 00:13:25 -04:00
Tom Rothamel 172f9f926e rpu: Create the updates.ecdsa file. 2023-10-19 00:06:14 -04:00
Tom Rothamel f6afced012 rpu: Include a verifying key with the built project. 2023-10-18 23:33:04 -04:00
Tom Rothamel 00cd7e4ada rpu: Generate update.pem when updates are enabled. 2023-10-18 23:13:52 -04:00
Tom Rothamel 9f4ab7d761 Always oversample SVGs.
Work to support placeholders lead to problems with SVG scaling
when the window scaled. This is resolved by scaling up the
placeholder, if required.

Fixes #5063.
2023-10-18 21:49:46 -04:00
Mal Graty 3102176697 mouse: Update rel values of combined events
Underlying mouse movement events may be merged or dropped by Ren'Py for
performance reasons. As a result, the relative movement would only be
that of the most recent mouse event, rather than an accurate measure of
movement since the last (published) event.

Instead of dropping mouse motion events outright, this change instead
opts to consume them in a tight loop accumulating their relative values.
Combined with accumulation during merges, this allows published events
to give an accurate picture of the relative movement.
2023-10-18 16:42:06 +01:00
Tom Rothamel 9ac420c259 id: Add lines explaining how to customize the director.
Fixes #5029.
2023-10-17 22:16:38 -04:00
Gouvernathor 8d009d2429 Merge branch 'master' into police-atl-params 2023-10-18 00:43:31 +02:00
Tom Rothamel 6c548d30ad Tweak the wording of the namespace error. 2023-10-17 00:02:26 -04:00
Tom Rothamel 615c6a728d Merge pull request #5059 from renpy/store.store
Prevent creation of a "store" substore
2023-10-17 00:01:12 -04:00
Gouvernathor bb8c508837 Prevent creation of a "store" substore 2023-10-16 18:45:43 +02:00
Tom Rothamel 30833f1f5f Allow renpy.utter_restart(True) to work on mobile. 2023-10-16 00:48:16 -04:00
Tom Rothamel 57bf18c705 rpu: Support for adding DLC. 2023-10-16 00:48:01 -04:00
Tom Rothamel e30855cb93 rpu: In the launcher, allow the website to pick rpu/zsync.
This makes it possible to deploy rpu, but have a fallback if
problems are reported.
2023-10-15 21:01:36 -04:00
Tom Rothamel ed0f536853 Merge branch 'fix' 2023-10-15 20:54:08 -04:00
Tom Rothamel e4f601310b Fix an issue with projects.txt.
Specifically, /path/to/mygame/ would produce a game with an
empty name, rather than mygame.
2023-10-15 20:54:00 -04:00
Tom Rothamel b92107dd02 rpu: Fix multi-part downloading. 2023-10-15 20:38:02 -04:00
Tom Rothamel 19c5e806b1 rpu: Add progress and logging to the updater. 2023-10-15 19:39:33 -04:00
Tom Rothamel f6d9762c5c rpu: Integrate rpu with the existing updater. 2023-10-15 15:58:01 -04:00
Ren'Py Bot 8b679cca71 Merge branch 'fix' 2023-10-15 04:30:07 -04:00
Tom Rothamel 34fe132e55 rpu: Use an environment variable to enable RPU. 2023-10-14 23:40:12 -04:00
Gouvernathor 0036bc3fe9 Optional plural 2023-10-15 03:52:22 +02:00
Gouvernathor d321d1ff51 Implement character char and word counts
fixes #5001
2023-10-15 03:46:44 +02:00
Gouvernathor a98d15eed4 Toggle the builtins-in-parameters check
disabled by default
2023-10-15 03:22:40 +02:00
Gouvernathor 57dba01448 Merge branch 'lint-parameter-names' into lint-toggles 2023-10-15 03:19:14 +02:00
Gouvernathor 3532b589d5 Implement lint options and make orphan tl check optional 2023-10-15 03:15:31 +02:00
Gouvernathor 51cc42a901 Base GUI entries for lint toggles 2023-10-15 02:33:51 +02:00
Gouvernathor e09b87dffe typos 2023-10-15 02:27:13 +02:00
Gouvernathor c5752398b9 doc: extend new im wording to the displayables page 2023-10-15 02:23:44 +02:00
Ren'Py Bot d5fe9c9a11 Merge branch 'fix' 2023-10-14 04:30:07 -04:00
Tom Rothamel b8ca91a62a bubble: Make available outside the overlay.
Fixes #5052.
2023-10-13 23:47:56 -04:00
Tom Rothamel 5aec41f9e1 bubble: Make available outside the overlay.
Fixes #5052.
2023-10-13 23:47:03 -04:00
Tom Rothamel b1d1db1075 doc: Finish documenting shaper. 2023-10-13 08:35:35 -04:00
Tom Rothamel 2708eda3d3 py2: Make generating rpus work with py2. 2023-10-13 08:35:35 -04:00
Ren'Py Bot ad83e0354e Merge branch 'fix' 2023-10-12 04:30:07 -04:00
Tom Rothamel 1c823a4e7c rpu: Support compressed segments. 2023-10-12 00:23:52 -04:00
Tom Rothamel 11186c86ae rpu: Allow rpus to be created in parallel. 2023-10-11 22:44:08 -04:00
Tom Rothamel 6014bfa007 Use the correct variable to configure the package formats. 2023-10-11 22:44:08 -04:00
Gouvernathor ef0d2db11d Fix translation 2023-10-11 18:23:50 +02:00
Ren'Py Bot 7dd1db50d2 Merge branch 'fix' 2023-10-11 04:30:07 -04:00
Tom Rothamel c8413912d2 Add a "Skip splashscreen" preference to the launcher.
This sets RENPY_SKIP_SPLASHSCREEN, which causes Ren'Py to
skip the splashscreen label.
2023-10-10 22:34:30 -04:00
Tom Rothamel 969b2ccecf SyntaxError: Invalid syntax. 2023-10-10 21:22:01 -04:00
Tom Rothamel 228c72f6c1 rpu: Create FileLists from the current.json file. 2023-10-10 20:40:44 -04:00
Tom Rothamel ad9af51510 rpu: Enable building rpus for the SDK. 2023-10-10 20:40:44 -04:00
Tom Rothamel 45faa71da8 Merge pull request #5045 from mal/layer-clip-docs
Clarify clipping behaviour as it relates to layers and Layer
2023-10-10 20:07:45 -04:00
Tom Rothamel e530c78cc0 Merge pull request #5050 from renpy/im-directives
Add warnings and deprecated sections for image manipulators
2023-10-10 20:07:27 -04:00
Gouvernathor c3a26654f7 Update the transform property 2023-10-11 00:52:20 +02:00
Gouvernathor 14710606ef doc: heavy-handed use of the deprecated directive 2023-10-11 00:41:13 +02:00
Gouvernathor 72cb9e3929 doc: Add warnings to the im page 2023-10-11 00:38:55 +02:00
Ren'Py Bot 9c3b082260 Merge branch 'fix' 2023-10-10 04:30:07 -04:00
Mal Graty 46cfe60086 doc: Signature for Layer displayable 2023-10-09 14:06:35 +01:00
Mal Graty 588d1e1137 doc: Warn of layer_clipping precedence in Layer 2023-10-09 14:04:14 +01:00
Mal Graty 15a12efd61 doc: Clarify behaviour there's no layer_clipping 2023-10-09 14:04:14 +01:00
Gouvernathor b0434ea1d9 doc: Update a link that was a teensy bit outdated 2023-10-09 14:58:47 +02:00
Tom Rothamel 96b44cdcb2 Add Show Filename and Line
A new option in the developer menu that shows the filename and line,
and lets you click to edit.
2023-10-08 21:58:44 -04:00
Tom Rothamel 1fde5f985a Add the EditFile action.
This opens the filename and line in a text editor,
if possible.
2023-10-08 21:54:43 -04:00
Tom Rothamel 34dcdc7f0e rpu: Include rpu update information in update.json. 2023-10-07 15:47:49 -04:00
Tom Rothamel 2238b460a7 rpu: Provide progress when making the update.
This was required because previously, only writing the files
made progress.
2023-10-07 10:37:47 -04:00
Tom Rothamel ff8ba2d10c rpu: Start integration with distribute.
This can now create the rpu files for a game.
2023-10-06 23:58:30 -04:00
Tom Rothamel 5e3495c333 rpu: Soft limit to 50MB.
While a big file will let the .rpy get bigger, this makes sure that
two files won't be downloaded when one will do.
2023-10-06 23:23:02 -04:00
Tom Rothamel 79945d9649 rpu: Prepare to generate updates.
* Add FileList.add_file and FileList.add_directory.
* Prepend the rpus with the name of the list that creates them.
* Delete obsolete rpus.
2023-10-06 22:57:23 -04:00
Tom Rothamel 254fa8c4ee Add missing encoding field to StdioRedirector.
Fixes a crash in compileall.
2023-10-06 22:56:32 -04:00
Tom Rothamel 14b596e15a Change the Sphinx search role.
Fixes #5037.
2023-10-05 21:59:56 -04:00
Tom Rothamel f33aef4711 Use premultiplied alpha for underline and strikethrough.
Fixes #5033.
2023-10-04 23:17:56 -04:00
Tom Rothamel 7d86e8509a rpu: Move to the renpy.update module. 2023-10-04 22:20:35 -04:00
Tom Rothamel dd26bbf859 rpu: Combine filetypes and util into a single common file. 2023-10-04 01:08:59 -04:00
Tom Rothamel cde1f301d2 rpu: Manage the executable bit.
Also, remove mtime from the json files.
2023-10-03 22:06:23 -04:00
Tom Rothamel 2d8e7d3a1a rpu: Create empty new files. 2023-10-02 23:24:08 -04:00
Tom Rothamel 1c2b3ed231 rpu: Delete files when not necessary, or at the end. 2023-10-02 23:14:43 -04:00
Tom Rothamel 021aa22a80 rpu: Add logging and deletion infrastructure. 2023-10-01 22:50:44 -04:00
Tom Rothamel e548ed13b2 rpu: Add support for reporting progress. 2023-10-01 01:21:03 -04:00
Tom Rothamel b1cf7eb64e Merge pull request #5020 from qTich/fix/pad_enabled
fix: `pad_enabled` instance type,, since can contains `all`
2023-09-30 19:42:55 -04:00
Tom Rothamel 86e9454b79 Merge pull request #5024 from Kassy2048/ipad-detect
New detection for iPad
2023-09-30 19:42:31 -04:00
Kassy f7d2434dff New detection for iPad
Since iOS 13, Safari uses the desktop mode by default on iPad which removes
the "iPad" string from the User-Agent header. The new detection looks for
an Apple product with touch enabled (there is no MacOS product with touch
screens AFAIK).
2023-10-01 01:36:00 +02:00
Tichq 07c96e8872 fix: pad_enabled instance type,, since can contains all 2023-09-30 11:50:27 +03:00
Tom Rothamel 0f51948f80 Search the interpolate namespace for variables during interpolation. 2023-09-29 22:04:43 -04:00
Ren'Py Bot 8448808c67 Merge branch 'fix' 2023-09-29 04:30:08 -04:00
Tom Rothamel 8da08dd187 Restore a (now simpler) render_movie.
Since this function is used to show cutscenes.

Fixes #5015.
2023-09-28 21:16:07 -04:00
Tom Rothamel eedc86f20e rpu: Use range downloads to get block files. 2023-09-28 01:25:10 -04:00
Tom Rothamel ccb978f454 rpu: Add a progress callback to the downloader. 2023-09-28 00:16:26 -04:00
Tom Rothamel 33830fd6b4 rpu: Start work on range download library. 2023-09-27 23:45:33 -04:00
Tom Rothamel 615c624a70 Revert "Call functions when interpolating."
This reverts commit 4d8d065c89.
2023-09-27 22:00:14 -04:00
Gouvernathor 66f17ae6dd Avoid using non-f-string interpolation syntax 2023-09-27 23:34:01 +02:00
Ren'Py Bot 7bf7303f85 Merge branch 'fix' 2023-09-27 04:30:08 -04:00
Tom Rothamel 4d8d065c89 Call functions when interpolating.
This will make it possible to have accessors when interpolating.

Fixes #5009.
2023-09-27 01:46:24 -04:00
Tom Rothamel fc111cc0ab Merge pull request #5007 from renpy/custom-text-tags
Custom text tags
2023-09-26 21:32:44 -04:00
Gouvernathor b535e2b63c Disown dynamic ctt, add warning markup, remove useless label 2023-09-27 00:28:39 +02:00
Tom Rothamel fb294567fe rpu: Execute the plan.
This involves copying data from the source files, including block
files that are on disk, into the target files, and then renaming
those files when done.
2023-09-26 02:26:00 -04:00
Tom Rothamel b2893b5ea8 rpu: Create plan.
The plan decides where to get data from, and write it to.
2023-09-25 23:58:33 -04:00
Tom Rothamel 5853d63076 Make sure the .rpa padding is taken fron a local file.
This will prevent a block file from being downloaded just to gain
access to the .rpa padding.
2023-09-25 22:39:23 -04:00
Tom Rothamel bd7cd2a0c6 rpu: Consider .new.rpu files as sources for update data.
So as to recover from a failed update.
2023-09-24 09:34:41 -04:00
Tom Rothamel 9d42e5c667 rpu: Log the initial evaluation of files. 2023-09-24 01:51:20 -04:00
Tom Rothamel ab9ee40e1a rpy: Add the ability to unserialize the file types. 2023-09-24 01:51:20 -04:00
Gouvernathor bcab87be37 Remove warper code duplication
we can't remove the name assignments because the compat system uses it - I could change that too but let's not touch compat
also remove unused variable
2023-09-24 04:00:35 +02:00
Ren'Py Bot 0aa28b6804 Merge branch 'fix' 2023-09-23 04:30:07 -04:00
Tom Rothamel 0891fff309 rpu: Generate the block files and index.
The block files contain the deduplicated segments, while the
index stores where segments are in the destination files and
the block files.
2023-09-23 01:37:30 -04:00
Tom Rothamel ca37ebacd1 rpu: Add support for scanning a .rpa file. 2023-09-22 23:29:34 -04:00
Tom Rothamel 51aff5d94d rpu: Initial work, scanning directoriues to create files. 2023-09-22 22:22:36 -04:00
Gouvernathor 7ff6acc36c french translations 2023-09-23 01:44:00 +02:00
Denys cda1c18e03 Update Ukrainian translations (#4993) 2023-09-23 00:46:53 +02:00
Denys 7f615dcddc Update error.rpy (#4992) 2023-09-22 16:43:52 +02:00
Denys 1a182d529c Update error.rpy 2023-09-22 14:58:43 +01:00
Ren'Py Bot 646a7535b0 Merge branch 'fix' 2023-09-22 04:30:08 -04:00
Tom Rothamel 4600339cf7 Update the .gitignore. 2023-09-21 22:58:44 -04:00
Tom Rothamel 03fdf2801e Simplify how Movie's size argument works.
Previously it had been its own code path, but now the movie
is rendered normally and then resized. Fixes #4983.
2023-09-21 22:45:29 -04:00
Ren'Py Bot e427b4e910 Merge branch 'fix' 2023-09-21 04:30:08 -04:00
Gouvernathor 0826778a5e Add a warning when creating new projects in renpy 7
not disabled, because it still makes sense for test purposes or to update default files
2023-09-21 04:30:07 -04:00
Gouvernathor 5050ee20ee doc typo 2023-09-21 04:30:07 -04:00
Tom Rothamel b4cf19cb0c Filter out the _sustain tag when choosing live2d attributes.
Fixes #4984.
2023-09-20 23:06:25 -04:00
Tom Rothamel dee35cfc66 Allow the DPI of SVG images to be selected.
With a new DPI parameter to Image. Fixes #4832.
2023-09-19 22:53:58 -04:00
Gouvernathor 325175f3c3 Better detect when the console should expect a new line before executing the block (#4834)
* Make blocks with comments open a newline in the console

* Support decorators in the console

* Support ending lines with \ in the console
2023-09-19 21:59:28 -04:00
Tom Rothamel 787f09929b Merge pull request #4691 from renpy/warn-new-renpy7
Add a warning when creating new projects in renpy 7
2023-09-19 21:51:14 -04:00
Vladya c5f9ddeae8 "Backslash in filename" fix
Fixes "Backslash in filename" error, when using method from pkgutil.get_data and similar.
2023-09-19 21:49:11 -04:00
Tom Rothamel c43c34c943 Merge pull request #4966 from NyashniyVladya/patch-1
RenpyImporter.get_data fix
2023-09-19 21:47:35 -04:00
Gouvernathor ce07691bbc doc typo 2023-09-19 16:12:41 +02:00
brainos233 9e76a31da1 doc: add missing reference end-string (#4978) 2023-09-19 16:12:16 +02:00
Gouvernathor 90701d03c1 doc typo 2023-09-19 16:10:28 +02:00
Ren'Py Bot 0256f2bba7 Merge branch 'fix' 2023-09-19 04:30:56 -04:00
Tom Rothamel a12d9c544e Bump fix branch versions. 2023-09-19 00:12:40 -04:00
Tom Rothamel 8bb5291324 doc: Update sponsor doc. 2023-09-18 22:27:29 -04:00
Tom Rothamel 186b082e3c Finish changelog. 2023-09-18 22:24:59 -04:00
Tom Rothamel 4dd40736a1 live2d: Install 32-bit windows library.
Fixes #4953.
2023-09-18 22:22:08 -04:00
Tom Rothamel 8c3741e6f9 Fix a truly ancient translation bug. 2023-09-18 18:34:41 -04:00
Gouvernathor 6e7f28f574 Update the ShowMenu doc entry (#4967)
better apparent signature, better documenting how args and kwargs work
2023-09-18 18:22:46 -04:00
Gouvernathor fa24e47d29 Update the ShowMenu doc entry (#4967)
better apparent signature, better documenting how args and kwargs work
2023-09-18 18:22:12 -04:00
Ren'Py Bot 12acbfc963 Merge branch 'fix' 2023-09-18 04:30:45 -04:00
Tom Rothamel 8e1945a628 Mark a context as non interacting when it's copied for rollback.
This is an attempt at fixing a stack trace that ended wit:

  File "C:\renpy\renpy\ui.py", line 299, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "C:\renpy\renpy\display\core.py", line 3556, in interact
    raise Exception("Cannot start an interaction in the middle of an interaction, without creating a new context.")
Exception: Cannot start an interaction in the middle of an interaction, without creating a new context.

After an autoreload.
2023-09-17 22:57:02 -04:00
Ren'Py Bot fdae52f6ad Merge branch 'fix' 2023-09-17 04:30:56 -04:00
Tom Rothamel 4b47d59b3b steam: Make the steam deck keyboard a lot less complicated.
This disables:

* Automatic showing the keyboard if the player dismisses it.
* Shifting the screen to where the keyboard is,.

And it changes the keyboard area to the top of the screen.

The goal of this is to work around recently-introduced issues with
Steam Deck keyboard handling.
2023-09-16 23:45:59 -04:00
Tom Rothamel 9cde14fa6d steam: Make the steam deck keyboard a lot less complicated.
This disables:

* Automatic showing the keyboard if the player dismisses it.
* Shifting the screen to where the keyboard is,.

And it changes the keyboard area to the top of the screen.

The goal of this is to work around recently-introduced issues with
Steam Deck keyboard handling.
2023-09-16 23:41:57 -04:00
Tom Rothamel a98fa5f7fe hb: Changelog. 2023-09-16 20:07:15 -04:00
Tom Rothamel bf0bc1d837 Update to Emoji 15.1. 2023-09-16 18:44:36 -04:00
Tom Rothamel db24c1eb3a hb: Document variable fonts. 2023-09-16 00:59:20 -04:00
Tom Rothamel c8a88bb17e hb: Fix minor issue with variable fonts and text tags. 2023-09-16 00:41:33 -04:00
Tom Rothamel 9c73cff8ce hb: Add renpy.variable_font_info().
A function that returns information about a variable font, so
that the creator knows how Ren'Py understands their font.
2023-09-15 01:11:22 -04:00
Ren'Py Bot 5a4b14009e Merge branch 'fix' 2023-09-14 23:23:49 -04:00
Tom Rothamel a4cb1a123e Avoid calling interface.timeout when the interface isn't ready.
Fixes #4968.
2023-09-14 18:15:42 -04:00
Tom Rothamel 057f69602b Avoid nicing distribute. 2023-09-14 17:57:59 -04:00
Ren'Py Bot 2040da88db Merge branch 'fix' 2023-09-14 04:30:56 -04:00
Tom Rothamel 82de5b7af0 Revert "Enable or disable text input as required."
This reverts commit a65cecfc18.

Bug #4784 is implicated in this, but there's a new fix
in the form of an SDL patch.
2023-09-14 01:10:15 -04:00
Tom Rothamel a688409eb9 hb: Implement the axis: and instance text tags.
These let the user set an axis or an instance of a variable
font.
2023-09-13 09:08:15 -04:00
Tom Rothamel 2ec1cb0cdc hb: Make font variations case insensitive. 2023-09-13 08:20:37 -04:00
Tom Rothamel a73082df6f hb: Add styles to support variable fonts. 2023-09-13 01:21:17 -04:00
Tom Rothamel e33888949a hb: Construct the harfbuzz face after the variable font stuff is set.
This fixes issues where some data appears to remain cached.
2023-09-13 01:15:48 -04:00
Tom Rothamel 6422153ce1 hb: Allow instances and axis values of variable fonts to be specified. 2023-09-12 23:32:46 -04:00
Tom Rothamel 9d1263d7c3 hb: Add the first support for font instances and variations. 2023-09-12 00:38:35 -04:00
Tom Rothamel 608cbab10c Use the correct key. 2023-09-11 21:16:02 -04:00
Tom Rothamel 2b08c40a4a Add config.font_hinting.
This is a single variable that allows all uses of a font to
have the same hinting, which styles can override.
2023-09-10 22:06:56 -04:00
Vladya bd01358481 "Backslash in filename" fix
Fixes "Backslash in filename" error, when using method from pkgutil.get_data and similar.
2023-09-10 23:30:12 +03:00
Tom Rothamel 1e518437dd Revert to using the "auto" hinter.
With renpy/renpy-build@ebe6d6a01a,
the autohinter looks quite good on Latin and non-Latin languages,
so we should continue to prefer it.
2023-09-10 00:54:04 -04:00
Tom Rothamel 2096c691ce Implement the auto-light hinting mode.
This isn't going to be the default, but it is available if creators
want it.
2023-09-10 00:46:17 -04:00
Tom Rothamel 6b4eadf0fd Merge branch 'fix' 2023-09-09 21:52:51 -04:00
Tom Rothamel fc8ac8344d Allow a checkpoint to become a checkpoint.
A checkpoint is created when a failed rollback happens, and probably
also when saving. When that statement finishes, we'd want the
checkpoint to become hard.

Fixes #4963.
2023-09-09 20:47:12 -04:00
Ren'Py Bot f6d8afdad6 Merge branch 'fix' 2023-09-09 04:30:55 -04:00
Tom Rothamel 420564557f Force the gl2 renderer to be used on macOS.
This is because there are major macOS-relevant fixes to the renderer,
such as the fix for #4155, that don't make sense to backport to the
gl renderer.
2023-09-08 22:32:17 -04:00
Ren'Py Bot a8cab927bb Merge branch 'fix' 2023-09-08 04:30:56 -04:00
Tom Rothamel 81ee1d994e Fix "attempted relative import with no known parent package"
By setting __package__ correctly. Fixes #4961.
2023-09-08 01:29:30 -04:00
Tom Rothamel 52c1e64b6f steam: Force the window to be the top of screen.
The previous code could - and would - put the text onto the bottom
half of the screen, which popped the textbox up on the top half,
which looked terrible. By forcing the location, the end result
looks much nicer.

Fixes #4959.
2023-09-07 23:24:33 -04:00
Gouvernathor 3ef755d5d4 Merge branch 'fix' 2023-09-06 21:34:15 +02:00
Gouvernathor e719dd8d47 doc: fixes
fixes #4956 and something that was only fixed on master
2023-09-06 21:33:00 +02:00
Gouvernathor ab3f1242d7 Merge branch 'fix' 2023-09-06 11:21:04 +02:00
Gouvernathor 8df82cbac0 doc: fixes and improvements on the midnight commit 2023-09-06 11:20:34 +02:00
Gouvernathor 13c557b5a2 doc: remove duplication 2023-09-06 10:57:11 +02:00
Ren'Py Bot 44e32ddffb Merge branch 'fix' 2023-09-06 04:30:56 -04:00
Tom Rothamel 852b489529 Bump versions. 2023-09-06 00:46:03 -04:00
Tom Rothamel 3ff08b9c03 Produce a valid-ish version for pygame_sdl2. 2023-09-06 00:46:03 -04:00
Tom Rothamel 67c2469d37 doc: Changelog. 2023-09-06 00:46:03 -04:00
Tom Rothamel 60745892c1 Bump versions. 2023-09-06 00:44:45 -04:00
Tom Rothamel d511804be3 Produce a valid-ish version for pygame_sdl2. 2023-09-05 22:06:47 -04:00
Tom Rothamel 487c60da2d doc: Changelog. 2023-09-05 21:13:50 -04:00
Ren'Py Bot 96c63ea9e2 Merge branch 'fix' 2023-09-05 04:30:56 -04:00
Tom Rothamel 2eca653f47 doc: Credits. 2023-09-05 01:39:02 -04:00
Tom Rothamel 6f8378f5b4 doc: Update sponsors. 2023-09-04 20:35:16 -04:00
Ren'Py Bot 232eda7c98 Merge branch 'fix' 2023-09-03 20:24:29 -04:00
Tom Rothamel b6fc8496f4 doc: Some changes to the context documentation. 2023-09-03 19:40:17 -04:00
Tom Rothamel 8a2634b206 Merge pull request #4896 from renpy/doc-context
Document what a context is
2023-09-03 19:36:04 -04:00
Tom Rothamel 3521d54e0a Call invalidate when adding one displayable to another.
Per #4939.
2023-09-03 19:34:16 -04:00
Ren'Py Bot 6c1f1c8138 Merge branch 'fix' 2023-09-02 18:08:22 -04:00
Tom Rothamel 24c0616158 py2: Fix the type of __package__. 2023-09-02 18:07:56 -04:00
Ren'Py Bot 1102904380 Merge branch 'fix' 2023-09-02 04:30:37 -04:00
Tom Rothamel 2d690bd7cb Implement more of PEP 302.
Fixes #4948. Per #4644.
2023-09-01 23:37:34 -04:00
Tom Rothamel 3ec2ad0a7b Make __file__ and __path__ full paths.
Per #4948.
2023-09-01 22:43:24 -04:00
Ren'Py Bot d3d33f31bb Merge branch 'fix' 2023-08-31 19:10:28 -04:00
Tom Rothamel 78dfdd024b Fix debug output-related crash introduced by 991fbf107a. 2023-08-31 18:30:12 -04:00
Ren'Py Bot 517e12d3e5 Merge branch 'fix' 2023-08-31 04:30:38 -04:00
the66F95 1b26542f0c Update 00inputvalues.rpy
restores the previous behavior to be able to deactivate InputValue objects via "Enter".
for example, the current behavior can be seen in any project using the button that wraps the FilePageNameInputValue object.
2023-08-31 00:43:51 -04:00
Tom Rothamel 29e84de69c Merge pull request #4946 from the66F95/_InputValueAction
Update 00inputvalues.rpy
2023-08-31 00:41:17 -04:00
Tom Rothamel 991fbf107a distribute: Match directories as both files and directories.
The goal is to allow **.app to be ignored on mac.

Fixes #4945.
2023-08-31 00:14:58 -04:00
Tom Rothamel 041a4c4d07 Respect the parameter to GamepadExists. 2023-08-30 21:55:50 -04:00
the66F95 e8de3df9c4 Update 00inputvalues.rpy
restores the previous behavior to be able to deactivate InputValue objects via "Enter".
for example, the current behavior can be seen in any project using the button that wraps the FilePageNameInputValue object.
2023-08-31 02:00:25 +02:00
Ren'Py Bot f0ba1ac5a1 Merge branch 'fix' 2023-08-30 04:30:38 -04:00
Tom Rothamel 6931b5f06d Make GamepadExists respect config.developer.
Fixes #4940.
2023-08-30 00:35:47 -04:00
Tom Rothamel 2850cea6c0 vscode: Add styles. 2023-08-29 22:58:24 -04:00
Tom Rothamel e364ca4173 Find variables before wrapping a comprehension.
If we do it in the other order, variables that are wrapped
show up as set, which means they won't be wrapped in an outer
comprehension, causing problems.

Fixes #4943.
2023-08-29 22:58:24 -04:00
Gouvernathor c6cc1dc5f6 Fix translation typo 2023-08-29 23:02:52 +02:00
Ren'Py Bot 12dbf12f44 Merge branch 'fix' 2023-08-29 04:30:37 -04:00
Tom Rothamel 9c7b8a6398 Fix issues with ATL deep compare.
* The blocks weren't compiled before compare.
* Dicts weren't handled.
* Errors weren't handled.

Fixes #4942.
2023-08-29 01:17:49 -04:00
Ren'Py Bot 18d3f48686 Merge branch 'fix' 2023-08-28 04:30:38 -04:00
Tom Rothamel 78c71f0a0f Do not change the style prefix of a viewport and it's children.
... when the viewport is focused or unfocused. The viewport being
focused occurs during drag operations, which should generally
be invisible to the user, so it's not required.

Re-rendering the children of the viewport is also a performance
problem, and so this prevents that from happening.

Fixes #4838.
2023-08-28 01:03:25 -04:00
Ren'Py Bot 86d0e1e275 Merge branch 'fix' 2023-08-27 04:30:37 -04:00
Tom Rothamel 935173fcf5 Create pax-format tar files.
These files support utf-8, so more files.
2023-08-27 00:34:46 -04:00
Tom Rothamel 05e72cbe27 Perform a greedy rollback after load.
This is the same rollback that is used during a normal rollback,
and re-runs statements before the rollback.

Fixes #4872.
2023-08-26 23:51:05 -04:00
Tom Rothamel 3dd1d32ef4 hbfont: Eliminate type mixing.
And remove a warning on build.
2023-08-26 01:14:29 -04:00
Tom Rothamel 73725e2131 The new CopyToClipboard action copies text to the clipboard.
Fixes #4868.
2023-08-25 21:59:31 -04:00
Ren'Py Bot c29b180647 Merge branch 'fix' 2023-08-25 04:30:38 -04:00
Tom Rothamel 65e2d27efb doc: The most common use of renpy.set_return_stack.
Fixes #4909.
2023-08-24 21:21:17 -04:00
Tichq 7045295eee fix: missed changes in beceb10166 (#4931) 2023-08-24 10:33:22 +02:00
Ren'Py Bot 3d1ab26448 Merge branch 'fix' 2023-08-23 04:30:37 -04:00
the66F95 eeb6958174 respect "renpy.store.__autosave"
respect the renpy.store._autosave value when calling renpy.loadsave.force_autosave() directly.
could be annoying if you have a choice menu in a splashscreen for instance.
2023-08-22 22:24:31 -04:00
Tom Rothamel 80e2d1d3a9 Merge branch 'fix' 2023-08-22 22:18:21 -04:00
Tom Rothamel 2ccdb65cc5 Merge pull request #4927 from the66F95/autosave
respect "renpy.store._autosave"
2023-08-22 21:03:30 -04:00
the66F95 6135979a7c respect "renpy.store.__autosave"
respect the renpy.store._autosave value when calling renpy.loadsave.force_autosave() directly.
could be annoying if you have a choice menu in a splashscreen for instance.
2023-08-22 12:03:03 +02:00
Tom Rothamel 0a01a4af64 Allow an interaction to restart during viewport animation.
Fixes #4926, mostly.
2023-08-21 23:14:41 -04:00
Joseph Boyd 0afd06dd49 Revert removal of loop_only to fix if_changed loop seam issue
Fixes #4872 by restoring the `loop_only` parameter of `enqueue()` in audio.py.

After commit `b0b096b`, calling `play` on a music track with the `if_changed` parameter would *always* add it to the queue, even if the same track was already currently playing on loop. This newly queued 'loop' would always begin at the very start of the track, **ignoring any user-defined `loop` point parameters** that were added by the user to allow the track to seamlessly loop. This caused the looping track to abruptly 'restart' the next time it would normally loop whenever a player visited a label that wanted that track to play if it wasn't already looping (for example, the 'market' example in Ren'Py's audio documentation page for `if_changed`).

This change restores the `loop_only` parameter and functionality to `enqueue()` and `play()` to avoid a track from being added to the queue and potentially abruptly restarting the track if it is currently already playing on loop. To attempt to preserve the fix the change `b0b096b` accomplished for #4695, the position/logic of the `c.dequeue()` calls in `music.play()` has not been reverted to it's previous behaviour.

Documentation wise, the Audio documentation page mentions that `if_changed` queues 'an additional loop' of the currently playing track when this situation is reached, which is only an accurate description if the currently looping track does not have a user defined `loop` point (or if the loop point was 0.0). A more accurate description is that the track is queued to play again from the very beginning after the current loop is complete, discarding any user-defined `loop` points. The issue mentioned above is reproduceable using the code present in the `if_changed` section of the audio page, provided the 'market' track has a non-zero `loop` parameter.
2023-08-20 22:28:21 -04:00
Tom Rothamel 9c5b8f5ba4 Merge pull request #4914 from mithost/4872-fix
Revert removal of `loop_only` to fix `if_changed` loop seam issue
2023-08-20 22:27:14 -04:00
Tom Rothamel ec6a8f8e1a Change the example of a third-party python package.
To one that isn't already part of Ren'Py.

Fixes #4899.
2023-08-20 16:58:06 -04:00
Mal Graty 880b47cadf Implement AlphaMask using shader 2023-08-20 02:49:33 +01:00
Tom Rothamel 99090ed87a Filter PYTHON* variables when launching a project.
While renpy.exe is set up to ignore the variables, renpython isn't.
By filtering them, we can be sure that system python variables
don't break the SDK.

Fixes #4878.
2023-08-19 21:21:14 -04:00
Tom Rothamel 3793a3f9ba Filter PYTHON* variables when launching a project.
While renpy.exe is set up to ignore the variables, renpython isn't.
By filtering them, we can be sure that system python variables
don't break the SDK.

Fixes #4878.
2023-08-19 21:18:53 -04:00
Tom Rothamel 5b88d6fb32 Merge pull request #4893 from renpy/selected-sensitive-list
Sensitiveness and selectedness of action lists
2023-08-18 21:11:14 -04:00
Tom Rothamel b3beae8ab5 Merge pull request #4875 from kyouryuukunn/revert_order_of_xyzrotate_and_zpos
revert the applyment order of poi,orientation,xyzrotate and zpos
2023-08-18 21:10:53 -04:00
Tom Rothamel c8d451838b Store runtime and ctime in the json.
Fixes #4873.
2023-08-18 00:39:38 -04:00
Michael 678ac18b5f OneDrive uses virtualized file system (vault) so
we use __file__ to get the real path of the file.
2023-08-18 00:13:03 -04:00
Tom Rothamel 5cc6b34f56 Merge pull request #4891 from michaelsstuff/reny_base_fix
Edgecase with OneDrive vault
2023-08-18 00:12:27 -04:00
Tom Rothamel 4606bcce76 Merge pull request #4900 from renpy/fix-args-calls
Fix occurrences of *args following a kwarg in calls
2023-08-18 00:11:35 -04:00
Tom Rothamel d3595146b0 Merge pull request #4904 from renpy/doc-atl
Various changes to the ATL page
2023-08-18 00:10:32 -04:00
Tom Rothamel 20ecec1412 Merge pull request #4902 from shawna-p/lint-fix2
Use the say_menu_text_filter when linting
2023-08-18 00:09:18 -04:00
Tom Rothamel ebeed588fa Merge pull request #4876 from renpy/call-word
Parse argument keywords as words instead of names
2023-08-18 00:08:50 -04:00
Tom Rothamel ef08ad74b3 harfbuzz: Use advance as width.
The advance is pretty close to to glyph width, and with the
advance at the end of ruby, means ruby will be centered
properly.

Fixes #4917.
2023-08-17 21:41:35 -04:00
Ren'Py Bot 0b47bc2eea Merge branch 'fix' 2023-08-17 04:30:37 -04:00
Tom Rothamel b2a49cc60e atl: Remove variables_equal and everything required for it. 2023-08-16 23:24:45 -04:00
Tom Rothamel 468733bd75 Use deep comparison of compiled trees to determine if an ATL transform has changed.
This might be more work, but it also should be correct in all cases.

Fixes #4916.
2023-08-16 22:24:25 -04:00
Ren'Py Bot 37d216097d Merge branch 'fix' 2023-08-16 04:30:38 -04:00
Tom Rothamel a1bcd63ba9 Make _side_image_attribute and _side_image_attributes_reset context-dynamic.
This prevents a reset from happening in a menu context, and then
causing the reset to not happen in the main context, thus causing
the image to be shown at the wrong times.

Fixes #4828.
2023-08-15 22:56:32 -04:00
Tom Rothamel 16c2455370 Make _side_image_attribute and _side_image_attributes_reset context-dynamic.
This prevents a reset from happening in a menu context, and then
causing the reset to not happen in the main context, thus causing
the image to be shown at the wrong times.

Fixes #4828.
2023-08-15 22:50:16 -04:00
Joseph Boyd d30d986a51 Revert removal of loop_only to fix if_changed loop seam issue
Fixes #4872 by restoring the `loop_only` parameter of `enqueue()` in audio.py.

After commit `b0b096b`, calling `play` on a music track with the `if_changed` parameter would *always* add it to the queue, even if the same track was already currently playing on loop. This newly queued 'loop' would always begin at the very start of the track, **ignoring any user-defined `loop` point parameters** that were added by the user to allow the track to seamlessly loop. This caused the looping track to abruptly 'restart' the next time it would normally loop whenever a player visited a label that wanted that track to play if it wasn't already looping (for example, the 'market' example in Ren'Py's audio documentation page for `if_changed`).

This change restores the `loop_only` parameter and functionality to `enqueue()` and `play()` to avoid a track from being added to the queue and potentially abruptly restarting the track if it is currently already playing on loop. To attempt to preserve the fix the change `b0b096b` accomplished for #4695, the position/logic of the `c.dequeue()` calls in `music.play()` has not been reverted to it's previous behaviour.

Documentation wise, the Audio documentation page mentions that `if_changed` queues 'an additional loop' of the currently playing track when this situation is reached, which is only an accurate description if the currently looping track does not have a user defined `loop` point (or if the loop point was 0.0). A more accurate description is that the track is queued to play again from the very beginning after the current loop is complete, discarding any user-defined `loop` points. The issue mentioned above is reproduceable using the code present in the `if_changed` section of the audio page, provided the 'market' track has a non-zero `loop` parameter.
2023-08-15 12:40:45 -04:00
Tom Rothamel b5288343fc Merge branch 'fix' 2023-08-15 00:30:45 -04:00
Tom Rothamel 371b3e15fc Fix compat. 2023-08-15 00:30:04 -04:00
Tom Rothamel 589a510c33 Merge branch 'fix' 2023-08-15 00:28:56 -04:00
Tom Rothamel 85648df290 Merge the glyph changes from master to fix.
This should keep binary compatibilty when change branches.
2023-08-15 00:08:13 -04:00
Tom Rothamel 936363d243 tts: Help ensure notifications are spoken to the player.
At least, in the case where the user lets them play out, rather
than switching away.
2023-08-14 22:45:16 -04:00
Tom Rothamel 05075beed5 Tweak the order of tts so layers and screens closer to the player are spoken first. 2023-08-14 22:42:37 -04:00
Tom Rothamel b729eaed7d harfbuzz: Support computing text bounds. 2023-08-13 19:39:12 -04:00
Tom Rothamel d06bcd0dd2 harfbuzz: Supply slant information. 2023-08-12 22:34:18 -04:00
Tom Rothamel 2e34102cf5 doc: The emoji and harfbuzz changes. 2023-08-11 22:32:07 -04:00
Ren'Py Bot 3018c21828 Merge branch 'fix' 2023-08-11 04:30:38 -04:00
Tom Rothamel 457d0c6cce Remove useless line.
Fixes #4905.
2023-08-11 01:51:02 -04:00
Asriel Senna c9573e3737 doc: mention call screen as working differently wrt with 2023-08-10 22:20:05 +02:00
Gouvernathor a11a7bb2ee Various changes to the ATL page 2023-08-10 21:32:44 +02:00
Tom Rothamel e1b37142c2 harfbuzz: Enable by default on py3.
Also, enable bytecode hinting everywhere.
2023-08-10 00:54:11 -04:00
Tom Rothamel 32923dd8f8 harfbuzz: Add support for vertical text. 2023-08-09 23:48:12 -04:00
shawna-p e4bef44f2c Filter text for the lint check 2023-08-09 22:49:58 -04:00
Gouvernathor 8a151ed1b4 Fix occurrences of *args following a kwarg in calls 2023-08-09 23:18:48 +02:00
Gouvernathor 2141c0bbc9 Use the file role 2023-08-09 08:43:33 +02:00
Tom Rothamel 54b4406974 Support building without harfbuzz on Ren'Py 7 web. 2023-08-08 22:45:16 -04:00
Gouvernathor efbefe4388 Use the file role to avoid @ formatting into mail 2023-08-08 18:34:08 +02:00
Gouvernathor 7b160ea3ad Use the file role for file paths 2023-08-08 18:21:29 +02:00
Tom Rothamel 4b3561d821 harfbuzz: Build by default. 2023-08-07 23:32:22 -04:00
Ren'Py Bot fb197d90b9 Merge branch 'fix' 2023-08-07 04:30:37 -04:00
Tom Rothamel d32f5b10f5 Fix alpha premultiplication in text.
Fixes #4880.
2023-08-07 01:12:42 -04:00
Asriel Senna 446e4609a9 doc: changes
document how pop_call behaves wrt dynamic variables
linkify a variable
better explain the name_only character
2023-08-07 01:33:29 +02:00
Asriel Senna 1f9a4df252 Document what a context is 2023-08-07 01:18:21 +02:00
Gouvernathor 08eb08562f Change the documented signatures 2023-08-05 10:58:50 +02:00
Ren'Py Bot 8d3401f2ac Merge branch 'fix' 2023-08-05 04:30:37 -04:00
Gouvernathor 3370a07f18 doc: sensitiveness and selectedness of action lists 2023-08-04 22:22:08 +02:00
Gouvernathor c164c1af40 doc: fix markup and tweak phrasing 2023-08-04 17:45:50 +02:00
Michael df26c03087 OneDrive uses virtualized file system (vault) so
we use __file__ to get the real path of the file.
2023-08-04 13:18:20 +02:00
Gouvernathor db8a6f9f13 Fixes to the changelog
Duplicate entries and typos
2023-08-04 09:03:31 +02:00
Tom Rothamel 25986373d1 Merge branch 'fix' 2023-08-03 08:11:51 -04:00
Gouvernathor f067652a3b Fix store.say's documentation (#4883)
It was documented as an override of renpy.say, and while that would be useful, it's not at all what the function does
2023-08-03 08:11:20 -04:00
Tom Rothamel 122dbf2619 Remove duplicate say-related functions from 00library.
Inspired by #4883.
2023-08-03 08:08:52 -04:00
Tom Rothamel 547bef2483 Merge branch 'fix' 2023-08-01 22:23:28 -04:00
Tom Rothamel efe6609085 doc: Fix filename extension.
Fixes #4884
2023-08-01 22:22:47 -04:00
Tom Rothamel 1d43fb11dd vscode: Correct arch on Linux.
Microsoft calls it x64, not x86_64, so use that.
2023-08-01 22:01:50 -04:00
Tom Rothamel ff177d0dae harfbuzz: Allow the text shaper to be set by style.
This allows harfbuzz and non-harfbuzz text to coexist in the same
game, which is useful for testing during development. It will also
provide backwards compatibility when we change the default.
2023-08-01 22:01:15 -04:00
Moshibit 1dd5ba512c Spanish translation update for master (#4885)
This is specifically for strings added in master, it should not be copied into fix (it would work but it's pointless)
2023-08-02 03:49:20 +02:00
Tom Rothamel 3906f99ebc harfbuzz: Move to one hb_font_t per FBFont, size.
This generates sized and kerned text.
2023-07-31 22:06:19 -04:00
Tom Rothamel f89c672c13 iap: Call the backend request_review. 2023-07-30 21:07:04 -04:00
Tom Rothamel 80ea555ad6 harfbuzz: Use for glyph creation and rendering.
This is enough to generate shaped emjoi, but the text placement and
spacing is all wonky, so there's still a bunch of work to be done.
2023-07-30 19:53:21 -04:00
Tom Rothamel af7a0baa2e vscode: Correct arch on Linux.
Microsoft calls it x64, not x86_64, so use that.
2023-07-30 19:52:44 -04:00
Gouvernathor 3fa7da1384 Parse argument keywords as words instead of names 2023-07-29 17:44:01 +02:00
kyouryuukunn 014de8a873 revert the applyment order of poi,orientation,xyzrotate and zpos 2023-07-29 18:45:58 +09:00
Moshibit 89cfd03516 Spanish translation update (#4856)
* Update launcher.rpy

* Fix Spansih translation.rpy

* Update common.rpy

* Update gui.rpy

* Update launcher.rpy

* Update launcher.rpy
2023-07-26 22:31:06 -04:00
Tom Rothamel 0b937fdea6 hb: Add ability to create a font and use it to shape text. 2023-07-26 01:37:42 -04:00
Tom Rothamel 802652d579 py2: Add an encoding for the emoji trie. 2023-07-25 11:10:11 -04:00
Tom Rothamel bcd4fd4d2c harfbuzz: New font rendering module.
This will support harfbuzz, eventually. It will not support Python 2.
2023-07-25 02:06:37 -04:00
Tom Rothamel 21016cca6c Merge pull request #4863 from JamiesonC/JamiesonC-musicroom-1
MusicRoom: have queue_if_playing consider whether the currently playing track is in the playlist
2023-07-25 00:07:06 -04:00
Ren'Py Bot 1921e7c985 Merge branch 'fix' 2023-07-24 04:30:37 -04:00
Tom Rothamel 6be8d94372 Make sure each trie entry has a default. 2023-07-24 01:05:00 -04:00
Tom Rothamel 84c22334fe Merge pull request #4861 from mal/restore-lost-event-values
Restore return values from time-adjusted widgets
2023-07-23 20:46:06 -04:00
Tom Rothamel 9f286afbbb Merge pull request #4862 from brainos233/fix-emoji-font-name
Use right name of emoji font
2023-07-23 20:45:30 -04:00
Tom Rothamel e32cd6c124 Merge pull request #4866 from mal/devtools-translate-id-screen
Tool to view and copy translation identifiers
2023-07-23 20:44:32 -04:00
Mal Graty f523069468 dev: Tool to view and copy translation identifiers 2023-07-24 01:07:10 +01:00
Tom Rothamel 674d5d87dd emoji: Automatically enable the emoji font.
This divides characters into emjoi and non-emoji runs based on
the information in the emoji trie, based on the unicode standard.
2023-07-23 02:13:41 -04:00
Tom Rothamel 12b37de529 emoji: Make the emoji trie use full characters. 2023-07-22 23:19:33 -04:00
JamiesonC 562ce9734a MusicRoom: have queue_if_playing consider whether the currently playing track is in the playlist
This change ensures that a MusicRoom queues up from the first track if the currently playing track is not part of the playlist. Enables the interjection of the MusicRoom into more complex scenarios (such as hotswapping MusicRooms to effect dynamic playlist changes).
2023-07-22 13:02:31 -05:00
Brainos 148a14f939 Rename Copyright 2023-07-22 23:38:18 +08:00
Brainos fe2ad45dc0 Use right name of emoji font 2023-07-22 23:25:20 +08:00
Mal Graty 12330dead6 Restore return values from time-adjusted widgets 2023-07-22 11:45:53 +01:00
Tom Rothamel 17fb5397c8 emoji: Check the default font, create style entries. 2023-07-21 23:20:09 -04:00
Tom Rothamel 8398c3081e emoji: Add a trie of emoji characters.
The intent of this is to provide the data required to segment a
string into emoji and non-emoji characters, with varying levels
of strictness.
2023-07-21 01:44:35 -04:00
Tom Rothamel 71e8bae6d2 doc: Changelog last. 2023-07-20 22:06:17 -04:00
Gouvernathor d312de84a4 Add the renpy.confirm function. (#4583)
This is a function that takes the place of layout.yesno_screen, but isn't quite as weird.
2023-07-20 21:51:16 -04:00
Ren'Py Bot c3d1c2cee7 Merge branch 'fix' 2023-07-20 04:30:37 -04:00
Gouvernathor 0dd3895b47 doc: long-due update from set_volume to set_mixer
following the passage to log volume or something
2023-07-20 07:25:22 +02:00
Gouvernathor 8230e4186d doc: tweak the confirm screen entry
add the two new strings - the confirm_token one is long and should be used for tests by creators - but be careful if others are added in the future
layout of the list has been tested
2023-07-20 06:17:16 +02:00
Gouvernathor 8e4e8b0e23 doc: tweaks to the Replay section
rename scene to sequence because scene is something else in renpy
don't imply that the game menu or the main menu are the only places from which you can call a replay
fix indenting in the code block, and remove the padding at the start
mistake in a function's documentation
some other stuff
2023-07-20 05:48:21 +02:00
Tom Rothamel 49eab5ffa9 Fix pickling issue.
Python 2 had a weird type for staticmethods, one that
couldn't be pickled. So we wrap compute_raw on Python 2.
2023-07-19 02:22:14 -04:00
Tom Rothamel 8a7fcd95ce Fix incorrect property. 2023-07-19 02:21:59 -04:00
Tom Rothamel d1ad17256b Prefix Ren'Py Sync styles with "sync".
Fixes #4847.
2023-07-18 23:22:12 -04:00
Tom Rothamel 4035fc9621 launcher: Detect and abort distributing the tutorial.
The tutrorial expects to be part of Ren'Py - the example system
may not work if it's being run outside of Ren'Py. This detects
attempts to distribute the tutorial on its own, and aborts the
process.
2023-07-18 23:17:46 -04:00
Tom Rothamel 3dab93666d Add from to calls for the Ren'Py tutorial. 2023-07-18 23:15:25 -04:00
Tom Rothamel ff64ab49f1 Allow loading premultiplied textures.
This is to support the changes to text that produced premultiplied
surfaces, rather than non-premultiplied surfaces. This was necessary
to display emoji properly, and also speeds up the case of normal
text rendering, at least on gl2.

This also removes some old paths that worked with GL_BGRA, which
we aren't using.
2023-07-18 01:25:52 -04:00
Tom Rothamel 15657da6dc Generate premultiplied alpha when rendering text.
This will allow us to skip the alpha premultiply step.
2023-07-17 23:32:59 -04:00
Tom Rothamel 872d4694db emoji: Add support for displaying BGRA glyphs. 2023-07-17 22:39:47 -04:00
Gouvernathor 25270211c1 Enable _layer for menu and config.nvl_choice_layer 2023-07-17 17:18:34 +02:00
Tom Rothamel 617c7e5367 emoji: Expose the BRGA data to the rest of the font system. 2023-07-16 21:42:20 -04:00
Tom Rothamel e1aff07997 Merge pull request #4844 from renpy/absolute-compute
Absolute compute
2023-07-15 20:46:59 -04:00
Gouvernathor 02e365584e doc: move last to dedicated doc section 2023-07-15 05:45:24 +02:00
Tom Rothamel ec8104ae6b Add renpy.reset_all_contexts().
This replaces all contexts with a single context that continues at
the next statement, to allow a game to clean up after load and
error.

Fixes #4476.
2023-07-14 23:36:41 -04:00
Ren'Py Bot df114f794e Merge branch 'fix' 2023-07-14 04:30:37 -04:00
Abdul 7a801523e4 Fixed Typo in dialogue.rst
Fixed minor typo in dialogue.rst
2023-07-13 23:08:16 -04:00
Tom Rothamel 3a897f0fee Merge pull request #4837 from AbdulGoodLooks/patch-1
Fixed Typo in dialogue.rst
2023-07-13 23:07:06 -04:00
Tom Rothamel a5343eb0fa Merge pull request #4843 from renpy/absolute-slots
Fix absolute.slots to __slots__
2023-07-13 18:26:58 -04:00
Gouvernathor beceb10166 Use conpute_raw uniformly 2023-07-13 22:13:26 +02:00
Gouvernathor c687c175fe Add absolute.compute and absolute.compute_raw 2023-07-13 19:27:24 +02:00
Gouvernathor 1032b4f990 Fix slots to __slots__
Mistake done in 690f249 and not seen by me in #4680.
I tested a save-load cycle on an instance of absolute before and after this very fix, it passed without problem. But if someone added arbitrary attributes on an absolute instance, that will now fail.
2023-07-13 19:15:06 +02:00
Tom Rothamel e4bed1cbc2 Remove the androidhw and ioshw video playback methods, and config.hw_video.
These haven't been the default for many years and the players haven't
gottem any attention in that time. Removing them will simplify
the surface that needs to be maintained.
2023-07-12 23:37:13 -04:00
Gouvernathor bdcd6191bd Support position (absolute) everywhere (#4709)
This makes most places that support positions support absolute.
2023-07-12 21:30:22 -04:00
Tom Rothamel deadc4a466 Document that angle/anchorangle are clamped now. 2023-07-12 09:20:35 -04:00
Abdul 505303f51a Fixed Typo in dialogue.rst
Fixed minor typo in dialogue.rst
2023-07-12 14:08:22 +01:00
Tom Rothamel 0f84d898f2 Merge branch 'fix' 2023-07-11 23:28:33 -04:00
Tom Rothamel 6041da97c5 atl: Actually animate anchorangle.
A temporary fix until the better one in 8.2 comes in.
2023-07-11 23:10:25 -04:00
Tom Rothamel cb80aea906 transform: Clamp polar coordinates to 0 <= angle < 360.
This ensures that the angle computed by Ren'Py from cartesian
coordinates and the angle stored in last_angle are always in
the same range, rather than having potentially odd interactions.

The main use of a polar coordinate outside of the range would be-
to provide a movement through 0 (for example, moving from 350 to 370
degrees), this is now directly supported.

Fixes #4835.
2023-07-11 23:00:49 -04:00
Ren'Py Bot 850ad647cc Merge branch 'fix' 2023-07-11 04:30:37 -04:00
Tom Rothamel c02ccf8dcd Multiple fixes to choosing a directory.
Fix an issue where the default wasn't being set, and also deal
better with the user cancelling.

Fixes #3826.
2023-07-10 21:16:12 -04:00
Gouvernathor 49896ba938 doc: Disable python highlighting for math formula 2023-07-10 22:15:24 +02:00
Tom Rothamel bdec32fa5b Merge branch 'fix' 2023-07-10 01:31:51 -04:00
Tom Rothamel be36f99d4c Fix last fix. 2023-07-10 01:31:26 -04:00
Tom Rothamel c007c85490 Fix tiled frames.
Fixes a major regression in the last commit (broke the launcher).
2023-07-09 18:27:43 -04:00
Ren'Py Bot b349ab06fd Merge branch 'fix' 2023-07-09 04:30:37 -04:00
Tom Rothamel a33009b382 Ensure frames are at least one drawable pixel in size.
The same logic applies to frames as to the last commit.
2023-07-08 14:44:21 -04:00
Tom Rothamel c50c6bb23d Prevent solids from being shrunken to below one pixel.
Fixes #4824.

The justification here is that if the creator shows a solid, they
want something, not nothing shown, so we want to show at least 1px
in each direction.
2023-07-08 14:24:55 -04:00
Tom Rothamel 60ade3ae19 Enable all stores in android.json, to test the build. 2023-07-08 13:58:54 -04:00
Tom Rothamel 09d119b2d4 Add bubble.properties_callback.
This makes it possible to limit the bubble properties based
on the character that is speaking.
2023-07-05 23:20:36 -04:00
Tom Rothamel 4588c15333 Merge pull request #4823 from qTich/feature/path-to-logdir
add: `path_to_logdir`
2023-07-05 21:50:23 -04:00
Tichq b9c5317556 add: path_to_logdir 2023-07-06 01:53:03 +03:00
Ren'Py Bot e051e1a120 Merge branch 'fix' 2023-07-05 04:30:37 -04:00
Tom Rothamel ef84c65ce5 Merge pull request #4821 from renpy/layim-auto-multiple-tweak
doc: readd information that went missing during the rewrite
2023-07-04 23:32:30 -04:00
Gouvernathor d3fe5cd6bb doc: readd information that went missing during the rewrite 2023-07-05 05:12:15 +02:00
Tom Rothamel 5073076bb5 Merge branch 'fix' 2023-07-04 20:58:04 -04:00
Tom Rothamel c0248b5af0 Avoid deleting .rpyc files corresponding to _ren.py files that exist.
Fixes #4815/
2023-07-04 20:55:01 -04:00
Abdul 0e4fca9c2f Update screens.rst
Fixed minor typo
2023-07-04 20:20:52 -04:00
Tom Rothamel f35e340c16 Merge pull request #4809 from renpy/last_say-tweaks
Tweaks to renpy.last_say
2023-07-04 19:13:42 -04:00
Tom Rothamel b4dc241e08 Merge pull request #4820 from renpy/layeredimage.predict_all
Update layeredimage.predict_all to None
2023-07-04 19:11:58 -04:00
Tom Rothamel d1c1c0f1ff Merge pull request #4818 from AbdulGoodLooks/patch-1
Fixed typo in documentation
2023-07-04 19:11:36 -04:00
Gouvernathor f45b13a101 Update layeredimage.predict_all to None 2023-07-04 18:07:58 +02:00
Abdul 3d26079aff Update screens.rst
Fixed minor typo
2023-07-04 14:53:51 +01:00
Tom Rothamel 4f152e93ab Move Displayable into its own module (renpy.display.displayable).
Mostly to make the file easier to manage as work begins on
clone.
2023-07-03 19:35:11 -04:00
Tom Rothamel 5fd0d17e0b Merge pull request #4813 from renpy/update-operators-list
Update the list of operators in the lexer
2023-07-03 17:56:42 -04:00
Gouvernathor 0dd9c81e8c Update the list of operators 2023-07-03 18:39:51 +02:00
Gouvernathor fcaa02f21a doc: Advise using ATL transitions to customize the punches 2023-07-03 17:09:20 +02:00
Tom Rothamel b3a0c8f47c Fix typo. 2023-07-03 10:30:16 -04:00
Tom Rothamel ca8977ae7c Document the Ren'Py updater doesn't support mac apps.
Fixes #4803.
2023-07-03 10:30:16 -04:00
Gouvernathor 045932fed6 Copy the warning to similar functions 2023-07-03 04:16:49 +02:00
Gouvernathor 4c1570fdae Tweak renpy.last_say and its doc
The character is evaluated at each query, so that if the LastSay object is saved, it will point to an up-to-date Character object
2023-07-03 04:16:31 +02:00
Tom Rothamel c7c499c6c8 Merge pull request #4745 from mal/multipart-translations
Detect multipart strings marked for translation
2023-07-02 21:47:04 -04:00
Mal Graty 7459dea76c Detect multipart strings marked for translation 2023-07-03 02:35:45 +01:00
Tom Rothamel 0f30d74045 Merge pull request #4808 from mal/fix-pause-roll-forward
Allow control exceptions as pause roll forward
2023-07-02 21:07:43 -04:00
Mal Graty 1c9cff6be3 Allow control exceptions as pause roll forward 2023-07-02 18:22:35 +01:00
Tom Rothamel 2880e63082 doc: Link and changeloy renpy.last_say. 2023-07-02 00:13:58 -04:00
Tom Rothamel 55d16830c9 iap: Add support for reviewing on the Apple App Store. 2023-07-02 00:06:45 -04:00
Tom Rothamel 5422467e02 iap: Add support for requesting a review on Google Play. 2023-07-01 23:18:37 -04:00
Gouvernathor 9189178a5f doc: fix attributes listing 2023-07-02 04:07:03 +02:00
Lezalith 494bb54620 Add renpy.last_say function. (#4749)
This is a function that returns information about the last dialogue line.
2023-07-01 22:03:56 -04:00
Gouvernathor d0e925156b Enable jump/call expression to local labels (#4797)
* Enable jump/call expression to local labels

* Use a separate slot to store the local global label

* Document passing .local_label, and changelog
2023-07-01 21:59:44 -04:00
Moshibit 7a96e8ad82 Spanish translation update (#4805)
* Update launcher.rpy

* Fix Spansih translation.rpy

* Update common.rpy

* Update gui.rpy

* Update launcher.rpy
2023-07-01 10:17:02 -04:00
Tom Rothamel 4d0d262a76 Report deferred errors in load_script.
Fixes #4798.
2023-07-01 01:21:19 -04:00
Tom Rothamel 3dad9048f0 Document the Ren'Py updater doesn't support mac apps.
Fixes #4803.
2023-06-30 22:33:54 -04:00
Gouvernathor f317cd6a00 Remove debug print 2023-06-30 19:54:37 +02:00
Gouvernathor c19456c4f7 Verbot pos-only and required kw-only parameters in ATL 2023-06-30 19:32:35 +02:00
Tom Rothamel 10ecb3f05b doc: Remove a warning about macOS 10.9.
Which is no longer supported.
2023-06-29 23:30:33 -04:00
Tom Rothamel 648f2835ac doc: Remove a warning about macOS 10.9.
Which is no longer supported.
2023-06-29 23:30:05 -04:00
Tom Rothamel 23adb33f71 Merge pull request #4794 from renpy/doc-screen-properties
Add the screen property directive
2023-06-29 21:27:37 -04:00
Tom Rothamel d62b8b8dfc Merge pull request #4777 from renpy/itch_channels
Convert build.itch_channels to a true dict
2023-06-29 21:09:04 -04:00
Tom Rothamel 5e03d9eb29 Merge pull request #4778 from mal/fix-drag-drop-db0
Prevent rare divide by zero in drag/drop
2023-06-29 21:08:36 -04:00
Gouvernathor eef91dcda8 doc typo
what f976f31 was meant to do
2023-06-30 02:30:21 +02:00
Gouvernathor 29324f6092 Add the screen property directive 2023-06-30 02:08:11 +02:00
Gouvernathor b224df24dc doc: fix bullet point list 2023-06-30 01:50:15 +02:00
Gouvernathor 446a1d74e7 doc: follow-up last 2023-06-30 01:47:56 +02:00
Gouvernathor 5b7bd98219 doc: fix missing ref 2023-06-30 01:45:05 +02:00
Gouvernathor c42b975be3 doc: use the tt reference role and avoid wasting a label 2023-06-30 01:42:18 +02:00
Tom Rothamel 9207334808 Report empty ATL blocks as an error.
Fixes #4792. Deferring to a major release because it's a very
unlikely issue, and may require script changes.
2023-06-28 21:38:44 -04:00
Gouvernathor f976f31e7a doc typo 2023-06-28 23:27:35 +02:00
Gouvernathor 3017331aa9 doc: spacing in an example 2023-06-28 23:14:54 +02:00
Gouvernathor 3601c782f9 Merge branch 'master' into rpy-python 2023-06-28 14:37:08 +02:00
Ren'Py Bot 34d4eb57a4 Merge branch 'fix' 2023-06-28 04:30:37 -04:00
Tom Rothamel c7d7cc23b1 doc: Changelog last. 2023-06-27 23:21:38 -04:00
Tom Rothamel a65cecfc18 Enable or disable text input as required.
This prevents the input method from always being active, to consume
and consuming keyboard bindings.

Fixes #4784.
2023-06-27 22:47:51 -04:00
Ren'Py Bot e8323f4cad Merge branch 'fix' 2023-06-27 01:08:00 -04:00
Tom Rothamel 4284d45069 Better error handling when cancelling directory selecton.
Fixes #4779.
2023-06-27 01:07:55 -04:00
Tom Rothamel 9d9085d379 Reset the compile and warp arguments when reloading.
Fixes #4780.
2023-06-26 23:17:55 -04:00
Tom Rothamel cb0cf2bf5e Add the fact that we're reloading to renpy.session. 2023-06-26 23:07:38 -04:00
Tom Rothamel 2c4194e754 rapt: Remove missing JDK options.
Since we no longer search for the JDK on windows until we install
the SDK.
2023-06-26 23:04:26 -04:00
Ren'Py Bot ac2534a87f Merge branch 'fix' 2023-06-26 04:30:37 -04:00
Tom Rothamel 9c442bb694 Merge pull request #4782 from Kassy2048/fix-web-fullscreen
Fix fullscreen Web
2023-06-25 21:47:10 -04:00
Kassy 20d7ecf868 Alias Window mode to non-Fullscreen mode on Web
There is no good way to resize the browser window size and
it's not really desirable to resize it anyway. These
changes should partially fix the issues reported in #4760.
2023-06-26 02:48:42 +02:00
Ren'Py Bot bb4e4da909 Merge branch 'fix' 2023-06-25 04:30:37 -04:00
Gouvernathor b467514c39 add incompat entry 2023-06-25 03:57:13 +02:00
Mal Graty e51642ff3f Prevent rare divide by zero in drag/drop
Encountered in rare rollback scenarios where self.st would correctly
reflect the drag was complete, but the render st was zero, resulting in
self.st and self.target_st being equal resulting in the divide by zero.
2023-06-24 16:27:10 +01:00
Gouvernathor 8556d563c9 Convert build.itch_channels to a true dict, and light compat 2023-06-24 15:20:27 +02:00
Gouvernathor a370643f40 Fix absolute.__rdivmod__
fixes #4772
2023-06-24 13:43:03 +02:00
Gouvernathor e56fbd90f1 fix Camera AST node 2023-06-23 21:56:03 +02:00
Gouvernathor 15ec88c900 Update exception text 2023-06-23 21:44:44 +02:00
Gouvernathor 7eeadcfde1 Typos in incompatible.rst
per previous commit
2023-06-23 13:13:08 +02:00
Gouvernathor 061a8c9194 Typos in changelog.rst
per https://github.com/renpy/renpy/pull/4564#issuecomment-1520347974
I didn't test the right-to-left/bottom-to-top thing
2023-06-23 13:10:31 +02:00
Ren'Py Bot 584b13ff67 Merge branch 'fix' 2023-06-23 04:30:37 -04:00
Tom Rothamel d309f3fb93 Add gui.history_spacing.
This variable allows the creator to customize the space between
history entries.

Fixes #4766.
2023-06-23 01:00:07 -04:00
Tom Rothamel 5505c01d0a Changes to box_reverse.
Per #4765.
2023-06-23 00:41:56 -04:00
Daniel Brookman b423982a28 Correct var in GUI Customization Guide
"gui.choice_text_hover_color" doesn't point to choice_button, so
changing it won't do anything.
2023-06-22 23:28:29 -04:00
Ren'Py Bot 86afb06388 Merge branch 'fix' 2023-06-22 23:27:45 -04:00
Tom Rothamel 0e74637c87 Merge pull request #4767 from dbrookman/doc_choice_button_text_hover
Correct var in GUI Customization Guide
2023-06-22 23:27:32 -04:00
Tom Rothamel 6ca4fc2ae1 Fix image component sorting in the directory.
Make sure each component is a string, but pad out numbers so the
sorting is better (ie, c2 should sort before c12.).

Fixes #4769.
2023-06-22 23:19:54 -04:00
Daniel Brookman 6710dbbde8 Correct var in GUI Customization Guide
"gui.choice_text_hover_color" doesn't point to choice_button, so
changing it won't do anything.
2023-06-22 14:55:41 -04:00
Gouvernathor fb03b82f4c doc: tweaks for timed nw 2023-06-22 13:12:30 +02:00
Tom Rothamel 360277f0fe Document that loadable doesn't search images.
Fixes #4712.
2023-06-22 01:14:39 -04:00
Tom Rothamel 14a09d2cc6 The {nw} text tag takes a number of seconds before the line is dismissed.
Fixes #4763.
2023-06-21 23:07:15 -04:00
Ren'Py Bot 822f1a4da6 Merge branch 'fix' 2023-06-21 04:30:37 -04:00
Tom Rothamel 607c1ac64d A better error message if config.version has a bad character.
Fixes #4758.
2023-06-20 23:52:36 -04:00
Tom Rothamel eb0d4948d0 End an animation immediately if time resets. 2023-06-19 22:21:18 -04:00
Ren'Py Bot bd3d5f9dde Merge branch 'fix' 2023-06-18 23:29:40 -04:00
Tom Rothamel 2c91ada1a6 Restore/improve the handling of mouse events.
* It's now possible to bind a mousedown event to skip, and other
  functions that care about keyup/keydown pairs.

* Mouseup events that are are bound to keyup are ignored.

Fixes #4755.
2023-06-18 22:46:33 -04:00
Tom Rothamel 46b0a05849 Merge pull request #4753 from renpy/tweak-4750
Tweak 1a62894
2023-06-18 14:13:41 -04:00
Gouvernathor 6a663830f8 linkify, tweak phrasings and code 2023-06-18 17:45:03 +02:00
Ren'Py Bot 9a23172671 Merge branch 'fix' 2023-06-18 02:08:44 -04:00
Tom Rothamel 1a62894650 Document the limits to MoveTransition, check for errors. 2023-06-18 02:08:36 -04:00
Tom Rothamel 22b3106504 Merge pull request #4751 from renpy/move-transitions-doc-tweaks
Tweak docstrings for transitions
2023-06-18 00:55:20 -04:00
Gouvernathor 9a1c783895 doc: clarify MultipleTransition API
avoiding rapid unscheduled disassembly of creators' keyboards
2023-06-18 03:14:05 +02:00
Gouvernathor d793750adb doc: tweak docstrings for move transitions
add links, and clarity
2023-06-18 02:33:42 +02:00
Gouvernathor 74b476f8c1 doc: hide Dissolve's alpha parameter
Documented as ignored and kw-only, might as well not exist at all
The other classes in this file had the same done to them, this one was probably forgotten
2023-06-18 01:56:11 +02:00
Gouvernathor b687ed1315 Do not ignore unknown futures
errors should not be pass silently, unless explicitly silenced
2023-06-17 21:31:07 +02:00
Gouvernathor 06d6d4b1ef doc: typo 2023-06-17 19:52:33 +02:00
Gouvernathor c682e99213 Merge branch 'master' into rpy-python 2023-06-17 16:25:41 +02:00
Tom Rothamel 8fe9b7ad89 Add the keep_last_frame parameter to Movie.
This keeps the last frame after the movie ends.

Fixes #4732.
2023-06-17 01:12:37 -04:00
Ren'Py Bot c6456618e4 Merge branch 'fix' 2023-06-16 23:47:53 -04:00
Tom Rothamel 9dc7aa1603 Merge pull request #4722 from Kassy2048/fix_7.6_web
Fix for 7.6 web
2023-06-16 23:31:41 -04:00
Tom Rothamel 98fd979c82 Fix downloads of dlc into the nightly builds. 2023-06-16 23:29:56 -04:00
Tom Rothamel 9723a2b7f8 Merge pull request #4738 from renpy/movie-doc
Tweak the Movie callable documentation
2023-06-16 20:27:16 -04:00
Tom Rothamel 77b1ad7fb1 Merge pull request #4747 from Lezalith/master
Czech Translation of The Question
2023-06-16 20:10:48 -04:00
Lezalith b9bcff650b Czech Language button in Preferences screen. 2023-06-17 02:07:58 +02:00
Lezalith fcc3d2a1b6 The Question czech translation files. 2023-06-17 02:07:29 +02:00
Ren'Py Bot 728f217eb7 Merge branch 'fix' 2023-06-16 04:30:37 -04:00
Tom Rothamel 917ac66cae movie: Ensure the channels exist in any function that can use them.
Fixes #4723.
2023-06-15 22:09:19 -04:00
Mal Graty 30c2a2a269 Avoid cropping widgets during a dissolve (#4717) 2023-06-15 21:17:38 -04:00
Morgan Willcock 79a1890539 Fix changelog entry for 'rpy python' (#4720) 2023-06-15 21:16:48 -04:00
Morgan Willcock ebb9358d87 Fix changelog entry for 'rpy python' (#4720) 2023-06-15 21:15:54 -04:00
Ren'Py Bot 3f5df973bf Merge branch 'fix' 2023-06-15 04:30:37 -04:00
Tom Rothamel e17ef3d265 Merge Ukrainian translation.
By @GVeydzher on twitter.
2023-06-14 22:26:25 -04:00
Ren'Py Bot fb4264f3ee Merge branch 'fix' 2023-06-14 01:38:06 -04:00
Tom Rothamel d72de4ab68 Preserve time when upgrading a save to have a token.
Fixes #4736.
2023-06-14 01:27:45 -04:00
Tom Rothamel a069545bcd retain: Document retained bubbles. 2023-06-13 23:32:08 -04:00
Asriel Senna 79d3951fad doc: reorder parameters to fit their description 2023-06-13 17:30:48 +02:00
Asriel Senna 97fc57d912 Undocument the fps parameter 2023-06-13 17:29:26 +02:00
Tom Rothamel 6ed04f3d5e Merge branch 'fix' 2023-06-13 00:54:35 -04:00
Tom Rothamel 8de1dccf43 Report an error if init is used with a directive, not a statement.
Fixes #4713.
2023-06-12 23:57:24 -04:00
Tom Rothamel 8ec26b7b66 Report parse errors in editor when run from the launcher.
This prevents parse errors from passing hidden when the game
is recompiled during distribution.
2023-06-12 22:35:50 -04:00
Tom Rothamel 1f05d93ea6 bubble, retain: Implement clearing retained bubbles.
This was implemented with a new button in the bubble editor, that
the user can click to clear out all buttons on the screen apart
from the current bubble.
2023-06-12 01:33:40 -04:00
Tom Rothamel c3a2d4745d retain: When retain is in use, each bubble has its own location. 2023-06-11 00:36:05 -04:00
Kassy 6ce1cda92b Fix crash on Web2 because pydoc is not shipped 2023-06-10 23:40:45 +02:00
Kassy 3070a40fce Fix crash on Web2 because WebInput is not implemented 2023-06-10 23:39:58 +02:00
Kassy 0176e42268 Fix crash on Web2 because subprocess.Popen is not implemented 2023-06-10 23:39:34 +02:00
Tom Rothamel afb9729ecf retain: Initial implementation of retained dialogue.
This is intended for used with speech bubbles, but might be useful
in other place. It's a mode where each say statement shows a new
screen, until the screens are cleared by the (to be added)
clear statement.
2023-06-09 20:36:30 -04:00
Gouvernathor 814fa97059 Allow multiple future flags in the same rpy statement
the get_code method of the ast node will print several lines instead of one, but I think it's fine - the node makes no sense in a translation
2023-06-09 14:04:33 +02:00
Gouvernathor 1f47a40a0e Simplify parser code 2023-06-09 13:54:48 +02:00
Gouvernathor 73a02a0c0c typo 2023-06-09 13:52:49 +02:00
Tom Rothamel d079dda223 Update piglatin translation. 2023-06-09 00:22:11 -04:00
Tom Rothamel 87b2291f99 Improved translation generation.
* Better filtering of braces, especially nested braces.
* Do not piglatin-ify numbers.
2023-06-09 00:22:11 -04:00
Tom Rothamel 6e7d650f51 doc: Match the fix branch. 2023-06-08 22:09:30 -04:00
Gouvernathor 5e9989d0a1 Changelog rpy python and the end of stringified annotations 2023-06-09 03:31:40 +02:00
Gouvernathor 65dce66eef Generalize the rpy python statement to explicit __future__s 2023-06-09 03:00:04 +02:00
Gouvernathor c2c094fbf6 Fix bad automatic comment translation
old ["']##[^\n]+?["']\n\s*(?:# Automatic translation\.\n\s*)?new ["']#?[^#]
updated gift for posterity (see d037830)
2023-06-08 20:56:59 +02:00
Gouvernathor 22cf8d3166 doc: tweaks 2023-06-08 17:28:15 +02:00
Tom Rothamel bb0b7f807f Bump version. 2023-06-08 01:50:27 -04:00
Tom Rothamel 08667dedf1 Re-generate the vc version in add.py.
So the correct version is used for releases.
2023-06-07 22:03:59 -04:00
Tom Rothamel cd5a9b2830 doc: Credits. 2023-06-07 20:57:56 -04:00
Tom Rothamel 4579dbab15 Clean up the fix-branch changelog. 2023-06-07 20:43:11 -04:00
Tom Rothamel 10a9521a19 docgen: Set the search z-index to 1. 2023-06-07 20:38:19 -04:00
Gouvernathor bcc0d211e1 Extend the system cursor preference to config.mouse_displayable (#4706)
* Make the system_cursor preference disable mouse_displayable

* doc: new "system_cursor" behavior

* changelog system_cursor
2023-06-07 20:37:48 -04:00
Tom Rothamel a33f891d65 docgen: Set the search z-index to 1. 2023-06-07 19:55:48 -04:00
Gouvernathor 9b1f23fe4d Extend the system cursor preference to config.mouse_displayable (#4706)
* Make the system_cursor preference disable mouse_displayable

* doc: new "system_cursor" behavior

* changelog system_cursor
2023-06-07 19:55:32 -04:00
Ren'Py Bot bb6ca17bc3 Merge branch 'fix' 2023-06-07 02:17:36 -04:00
Tom Rothamel 7e8ed2dcf7 doc: Update sponsors. 2023-06-07 02:07:15 -04:00
Tom Rothamel 3893bcbc7a doc: Credits. 2023-06-07 01:16:44 -04:00
Ren'Py Bot f33ab6b095 Merge branch 'fix' 2023-06-07 01:06:44 -04:00
Tom Rothamel b0b096bf16 audio: if_changed handles tight looping.
Subject to how if_changed works, as it does queue up a new
loop.

Fixes #4695.
2023-06-07 01:05:22 -04:00
Gouvernathor 7df26f34ed Fix mouse_move documentation (#4700)
* docstring spaces

* doc: fix inconsistencies about the mouse_move preference
2023-06-06 23:58:49 -04:00
Tom Rothamel 454ba1360d Ensure that scrollable bars have the sensitive style.
Fixes #4690.
2023-06-06 23:57:11 -04:00
Tom Rothamel 5116fdaa47 Check atl state for validity where it might have changed.
Fixes #4701.
2023-06-06 21:45:14 -04:00
Ren'Py Bot 26d4b1af50 Merge branch 'fix' 2023-06-06 04:30:56 -04:00
Tom Rothamel 9d1b8c0e29 atl: Run ATL transforms in the animation timebase.
This fixes #4696 while keeping #4634 and #4167 fixed.
2023-06-06 01:15:50 -04:00
Tom Rothamel e740a83764 doc: Changelog. 2023-06-05 23:25:24 -04:00
Ren'Py Bot 25e2dba5b3 Merge branch 'fix' 2023-06-05 04:30:56 -04:00
Gouvernathor b8c4565a38 Dereference utter_restart and move reload-related functions to the reload section (#4657)
doc: deref utter_restart and move reload-related functions
2023-06-05 00:40:03 -04:00
Tom Rothamel 36a2e32401 web: Fix audio end time.
It takes a duration, not the end time itself.

Fixes #4694.
2023-06-05 00:38:12 -04:00
Tom Rothamel b586355a8e Ensure that objects reachable from Context rollback.
Fixes #4687, and a class of potential related problems, by
auditing things that are reachable through Context.
2023-06-04 18:24:02 -04:00
Gouvernathor 1a375c525c Add a warning when creating new projects in renpy 7
not disabled, because it still makes sense for test purposes or to update default files
2023-06-04 11:45:22 +02:00
Ren'Py Bot dd1c162271 Merge branch 'fix' 2023-06-04 04:30:56 -04:00
Tom Rothamel 7171b21fb4 doc: That dropping doesn't respect the alpha channel.
Closes #4686.
2023-06-03 22:11:01 -04:00
Tom Rothamel 30aba15be2 Accept the vscode plugin style changes. 2023-06-03 22:10:25 -04:00
Tom Rothamel 007aa19291 live2d: Determine if _sustain is required after attribute_filter.
As it's possible attribute_filter will introduce a motion that
makes sustain pointless.

Fixes #4660.
2023-06-03 21:36:53 -04:00
Tom Rothamel 7e6560b766 live2d: _choose_attributes should enforce required attributes.
If it can't find all of the required attributes, then it should
not allow the displayable to be shown.

Fixes the first part of #4660.
2023-06-03 20:55:48 -04:00
Tom Rothamel dd2b26807d doc: Changelog e29fdf8cbf. 2023-06-02 23:29:53 -04:00
Ren'Py Bot e6d5b8eef6 Merge branch 'fix' 2023-06-02 23:28:42 -04:00
Tom Rothamel 206431c210 Add links to 8.1.1 and 7.6.1. 2023-06-02 23:22:46 -04:00
Tom Rothamel 61c9ebffa9 Propagate times to ATL transitions, but not other state.
This tries to fix #4634 without breaking #4167, by recognizing
when a transition has started and propagating the adjusted times
into it, but not the state.

This can probably fail, as events and choices won't be propagated,
but those should be rare in transitions, ideally.
2023-06-02 23:01:32 -04:00
Ren'Py Bot f79c052ace Merge branch 'fix' 2023-06-01 22:52:41 -04:00
Tom Rothamel e29fdf8cbf Prevent autoreloading while the git index lock is present.
Fixes #3689.
2023-06-01 22:42:50 -04:00
Moshibit 544cf07739 Fix Spanish tranlation (#4684)
* Update launcher.rpy

* Fix Spansih translation.rpy
2023-06-01 22:26:16 -04:00
Moshibit a88e2a3980 Fix Spanish tranlation (#4684)
* Update launcher.rpy

* Fix Spansih translation.rpy
2023-06-01 22:25:22 -04:00
Ren'Py Bot 1251ce7e36 Merge branch 'fix' 2023-06-01 04:30:56 -04:00
Gouvernathor 360dc4fdbb Make absolute a float again (#4680)
Multiple advantages over the wrapper-class implementation : lighter in memory, don't wrap methods that don't need too, don't spend time converting their parameters, avoid a two-version pickling and unpickling mechanism (with slots), shorter code with less warning silencing.
2023-06-01 00:31:00 -04:00
Tom Rothamel 3396feff33 Rewrite absolute to not inherit from float.
This replaces absolute with a class that contains a float, and
behaves like a float in most circumstances. However, when an
operation is performed on it that would create a float, an
absolute is returned instead.

This is meant to address #4666 and a class of potential issues
that could be similar to it, where absolutes that are operated
on could become a float, and cause layout issues.

I need to think if this is something that should got into the
fix branch, as it's a major change.
2023-06-01 00:31:00 -04:00
Tom Rothamel 7cf287c4f4 docgen: Fix the location of the searchbox.
Fixes #4682.
2023-05-31 23:51:08 -04:00
Tom Rothamel 732b98f7a2 Document that YUV444 is slow.
Per discussion in #4646.
2023-05-31 22:45:17 -04:00
Tom Rothamel 838ce5a82b Fix non-full playback of videos.
Fixes #4646.
2023-05-31 22:41:54 -04:00
Gouvernathor c7083584df Make absolute a float again (#4680)
Multiple advantages over the wrapper-class implementation : lighter in memory, don't wrap methods that don't need too, don't spend time converting their parameters, avoid a two-version pickling and unpickling mechanism (with slots), shorter code with less warning silencing.
2023-05-31 01:31:02 -04:00
Ren'Py Bot b6f1be507b Merge branch 'fix' 2023-05-30 04:30:56 -04:00
Tom Rothamel 690f249481 Rewrite absolute to not inherit from float.
This replaces absolute with a class that contains a float, and
behaves like a float in most circumstances. However, when an
operation is performed on it that would create a float, an
absolute is returned instead.

This is meant to address #4666 and a class of potential issues
that could be similar to it, where absolutes that are operated
on could become a float, and cause layout issues.

I need to think if this is something that should got into the
fix branch, as it's a major change.
2023-05-30 02:01:39 -04:00
midgethetree 13cd7d0ebc fix fonts linting (#4679)
Fixes an issue where fonts located in the fonts/ directory and referenced in .rpy files with just their filename and not the fonts/ prefix would be falsely claimed to be unloadable by the linter despite working just fine in-game. Also fixes the converse issue, where fonts located in images/ directory and referenced without the images/ prefix weren't caught by the linter despite the game crashing when actually attempting to load them.
2023-05-30 00:48:09 -04:00
midgethetree dfc29bb646 fix fonts linting (#4679)
Fixes an issue where fonts located in the fonts/ directory and referenced in .rpy files with just their filename and not the fonts/ prefix would be falsely claimed to be unloadable by the linter despite working just fine in-game. Also fixes the converse issue, where fonts located in images/ directory and referenced without the images/ prefix weren't caught by the linter despite the game crashing when actually attempting to load them.
2023-05-30 00:31:11 -04:00
Tom Rothamel a14b4c3ddc Avoid including the 311 bytecode in the launcher.
As it's not needed there.

Per #4677.
2023-05-29 21:57:16 -04:00
Ren'Py Bot d94c3ef043 Merge branch 'fix' 2023-05-29 12:27:46 -04:00
brainos233 917292b443 fix: launcher\game\tl\schinese\options.rpy (#4676) 2023-05-29 18:16:05 +02:00
Tom Rothamel e02ce6579f docgen: Fix a style issue. 2023-05-29 12:15:15 -04:00
brainos233 d8322a6db7 fix: launcher\game\tl\schinese\options.rpy (#4676) 2023-05-29 18:14:36 +02:00
Tom Rothamel 5201ff3e10 sl2: Better analyze imagemaps.
The issue was that:

    imagemap:
        if cond:
            idle "idle_true"
            hover "hover_true"
        else:
            idle "idle_false"
            hover "hover_false"

        hotspot (0, 0, 100, 100) action Jump("test")

Didn't depend on cond, which meant that the hotspot
would not change when the imagemap was updated.

Test: xagrim-imagemap.
2023-05-29 11:58:23 -04:00
Gouvernathor 64ac9c1a99 BOM and UTF-LF 2023-05-29 12:57:11 +02:00
zedraxlo ff426586b8 SChinese translation update (#4675) 2023-05-29 12:56:53 +02:00
Gouvernathor f3f703b426 BOM and UTF-LF 2023-05-29 12:53:55 +02:00
zedraxlo ac39001a61 SChinese translation update (#4675) 2023-05-29 12:40:58 +02:00
Ren'Py Bot cfd1721d71 Merge branch 'fix' 2023-05-29 04:30:56 -04:00
Tom Rothamel 0cd32aa9a4 (Mostly) revert changes to afm_enable preference handling.
This is a bit special, as it define if afm_enable is used or not.
Since this is baked in to older games, restore the previous values,
but let the default statement override them, which was the goal of
the previous commit.
2023-05-29 02:08:40 -04:00
Ren'Py Bot e33cc4c43c Merge branch 'fix' 2023-05-28 23:07:07 -04:00
Tom Rothamel 9c9c36a723 rapt: Document the key changes. 2023-05-28 23:06:41 -04:00
Morgan Willcock 3762c42604 doc: Fix interpolation example block (#4674)
Corrects the indentation so that the code is valid.

One of the affected lines had a typo ('thje' instead of 'the'), which
is now corrected.
2023-05-28 23:25:59 +02:00
Ren'Py Bot 389e882505 Merge branch 'fix' 2023-05-27 00:38:16 -04:00
Tom Rothamel 75832ccd22 Avoid having preference defaults by default.
The older config.default_.... variables could force a preference
to take on a value, even if the creator used default to set the
preference.

This changres a few of the defaults in preferences.py, and removes
the need for config.default_... variables.

Fixes #4667.
2023-05-26 22:13:45 -04:00
Ren'Py Bot fe2d76bdd3 Merge branch 'fix' 2023-05-25 01:40:53 -04:00
Tom Rothamel 26af404433 Fix typo in nosave list.
Fixes #4664.
2023-05-25 01:40:10 -04:00
Tom Rothamel 8209e61d75 Fix problem with non-resiable windows on macOS.
Apparently, when a window is not resizable on macOS, the MAXIMIZED
flag is always set. Since the window can't actually be maximized,
ignore it.

Fixes #4659.
2023-05-25 00:30:39 -04:00
Tom Rothamel 09ee1cb52f Deal with mac reporting fullscreen windows as maximized.
This can cause a problem when changing modes.

Per #4659.
2023-05-25 00:30:39 -04:00
Ren'Py Bot b152e0b00a Merge branch 'fix' 2023-05-23 13:34:03 -04:00
Gouvernathor 75d0f4dc64 Encode the save directory as bytes on py2 2023-05-23 13:33:57 -04:00
Ren'Py Bot df982c1b4c Merge branch 'fix' 2023-05-23 04:30:46 -04:00
Tom Rothamel bb526f6ae3 doc: Fix doc problem with ui.interact. 2023-05-23 01:51:00 -04:00
Gouvernathor 110e6340e4 doc: remove double variable entry
the second one, which was fixed a week ago (1436e3e), is slightly better phrased
2023-05-22 17:19:43 +02:00
Gouvernathor 166e81b2e5 Revert "doc: move reload-related functions to the dedicated section"
This reverts commit 078ffb9e5a.
2023-05-22 17:02:11 +02:00
Ren'Py Bot a851c97c85 Merge branch 'fix' 2023-05-22 10:51:36 -04:00
Moshibit 217d0e85f8 Update launcher.rpy 2023-05-22 10:51:23 -04:00
Moshibit 09a29a941c Update launcher.rpy 2023-05-22 10:43:06 -04:00
Gouvernathor 078ffb9e5a doc: move reload-related functions to the dedicated section 2023-05-22 16:34:23 +02:00
Ren'Py Bot f9233742a2 Merge branch 'fix' 2023-05-22 01:51:15 -04:00
Tom Rothamel a2adf917aa The window icon is an image.
Fixes #4651.
2023-05-22 01:51:15 -04:00
Gouvernathor 41d0b41518 actual translation 2023-05-22 01:51:15 -04:00
Gouvernathor aded4dd05e french translations 2023-05-22 01:51:15 -04:00
Tom Rothamel 412c56e76b The window icon is an image.
Fixes #4651.
2023-05-22 01:48:41 -04:00
Gouvernathor 15024f32a8 quicken PY3 case 2023-05-21 16:30:29 +02:00
Gouvernathor cdee6e388c actual translation 2023-05-21 16:27:29 +02:00
Gouvernathor 1a820b67a7 french translations 2023-05-21 15:50:29 +02:00
Tom Rothamel 8c21f14bf7 autotl: Better handling of lines beginning with ##. 2023-05-21 01:48:34 -04:00
Tom Rothamel 1660375bde autotl: The description of the nightly fix build. 2023-05-21 01:47:22 -04:00
Tom Rothamel c9ec07f566 Add infrastructure for single-string translations.
This is intended to allow important strings to be automatically
translated while we work on improving the quality of automatic
translations.
2023-05-21 01:47:02 -04:00
Tom Rothamel 19316303b7 Add strings describing the nightly branch. 2023-05-21 00:18:50 -04:00
Tom Rothamel e46d664aed Diagnose issues with a class no longer inheriting from object. 2023-05-20 23:31:49 -04:00
Tom Rothamel ccaf664e3c Allow error handling to deal with exceptions in rollback.
Previously, the exception would occur with the context stack
already altered. As the exception was handled, contexts could
be removed from the stack, leading to a case where there was
no context - which causes crashes.
2023-05-20 22:53:21 -04:00
Tom Rothamel 572ebcc3a8 Make sure Execution.__repr__ always produces a result. 2023-05-20 22:51:35 -04:00
Tom Rothamel 8f5c2526f0 Properly quote replacement text.
Fixes #4631.
2023-05-20 02:32:05 -04:00
Tom Rothamel d93745e2e1 Delete .pyo and .pyc files when reloading a module.
This can fix a problem on Python 2, where a .pyo file would be
loaded in preference to an updated .py file, even if the .py file
was created the first time around.
2023-05-19 23:27:50 -04:00
Tom Rothamel 4f8f3155ef Take the version out of the newly-generation dict. 2023-05-19 00:51:39 -04:00
Tom Rothamel deb4a2c9eb Merge pull request #4645 from brainos233/docs-build-packages
Docs: Fix missing "renpy" list in Packages example
2023-05-18 11:15:51 -04:00
Tom Rothamel 4d26440cbb Remove pyo and pyc files to make sure a reload occurrs. 2023-05-18 04:17:43 -04:00
Brainos cf98746660 Docs: Fix missing "renpy" list in Packages example 2023-05-18 15:47:29 +08:00
Ren'Py Bot 824828f5c8 Merge branch 'fix' 2023-05-17 02:25:34 -04:00
Tom Rothamel 59e427512c fix: Fix text tag issues with the Korean (and maybe Vietnamese) translations.
Fixes #4643.
2023-05-17 01:44:08 -04:00
Tom Rothamel 09c1a84169 Scry fixes.
- Return None of there is no current statement.
- Deal with a scry of None in character.
- Improve documentation.

Fixes #4640.
2023-05-17 01:29:18 -04:00
Tom Rothamel b254c23882 Include libydrogen in the source distribution.
Fixes #4638.
2023-05-17 01:23:01 -04:00
Tom Rothamel da7655642f Include libydrogen in the source distribution.
Fixes #4638.
2023-05-17 01:19:50 -04:00
Tom Rothamel 5c7efe99e6 Merge branch 'fix' 2023-05-17 00:58:53 -04:00
Tom Rothamel 17e743d346 Determine the version if vc_version.py does not exist.
This is likely to only happen if a git checkout exists. In that
case, we determine what branch we're on, and use that to
initialize the version information.
2023-05-17 00:54:34 -04:00
Tom Rothamel 2c898e4581 Merge branch 'fix' 2023-05-17 00:07:05 -04:00
Gouvernathor 1638a89023 Fix incorrect variable name
That was preventing renpy boot when vc_version is not present
Also, differenciate versions not yet named, "tbd", and versions not identified
2023-05-17 04:49:54 +02:00
Gouvernathor 1436e3e4f1 doc: role issues and involuntary comments 2023-05-17 04:10:16 +02:00
Gouvernathor d037830d38 Fix bad automatic comment translations
old ["']##[^\n]+?["']\n\s*(?:# Automatic translation\.\n\s*)?new ["'][^#]
(a gift to posterity)
The machine translate script should remove any prepending "## ", translate the rest, and then prepend it again to the result. Otherwise deepl thinks it's a word.
fixes #4633
2023-05-16 10:36:23 -04:00
Tom Rothamel d8cfb32514 distribute: Changes to support nightly builds.
* The --nightly flag to mark a version as nightly.
* The --print-version flag, to print the computed version.

This will allow distribute to supply version information to the
nightly build process.
2023-05-16 10:36:03 -04:00
Tom Rothamel adddcd6a11 distribute: Changes to support nightly builds.
* The --nightly flag to mark a version as nightly.
* The --print-version flag, to print the computed version.

This will allow distribute to supply version information to the
nightly build process.
2023-05-16 10:15:51 -04:00
Gouvernathor 8c511bcd72 Fix bad automatic comment translations
old ["']##[^\n]+?["']\n\s*(?:# Automatic translation\.\n\s*)?new ["'][^#]
(a gift to posterity)
The machine translate script should remove any prepending "## ", translate the rest, and then prepend it again to the result. Otherwise deepl thinks it's a word.
fixes #4633
2023-05-15 15:46:11 +02:00
Tom Rothamel 06acc1984a Use the runtime python to generate the version information. 2023-05-15 08:52:20 -04:00
Tom Rothamel 14c06dd2e4 Add py2 before py3.
Useful in the github case, to ensure Ren'Py 8 is uploaded last,
and hence is at the top of the list of downloads at github.
2023-05-15 02:40:13 -04:00
Tom Rothamel 516fceb2ab Store the version in vc_version, generate it from the branch. 2023-05-15 02:39:23 -04:00
Tom Rothamel 17b2be083a doc: Update sponsors. 2023-05-13 17:13:31 -04:00
Tom Rothamel 21caff9610 Update keywords. 2023-05-13 17:13:21 -04:00
Gouvernathor 0fa9b581ef Tweak in list.clear implem
20% tested performance boost, even higher for linger lists
2023-05-06 13:53:46 +02:00
Gouvernathor 483ec6dc0d Quicken list dunders
Exact typechecks are quicker than instance checks.

Since it's direct list methods we're wrapping (and not super calls for example), the return value is either NotImplemented or a list.
No need to complicate things further than that.
2023-05-06 03:36:50 +02:00
Ayowel dd33c939ab Ensure ios_create uses the target project's information 2023-04-23 22:40:25 +02:00
Asriel Senna 6ad43c2b8b Add a type check on data saved in persistent 2023-04-21 00:08:28 +02:00
jsfehler 62232d6cfa docs: Add note for StylePreference about update event getting called 2023-04-01 15:01:24 -04:00
Gouvernathor ed5ea70d5f Rephrase and optimize multiline statement 2022-10-26 20:19:51 +02:00
Gouvernathor cd196c0de6 Avoid reimport 2022-10-26 20:19:32 +02:00
Gouvernathor 5f2fc62b0e Clarify return value 2022-10-26 20:18:57 +02:00
Gouvernathor c12854026f Indent fix 2022-10-26 20:18:23 +02:00
Gouvernathor 553ada3b04 Lint parameters shadowing builtin names 2022-08-18 22:38:43 +02:00
Gouvernathor 0b1edb13de Update preferences.rpy 2022-06-23 16:46:51 +02:00
751 changed files with 81129 additions and 32680 deletions
+48 -1
View File
@@ -13,7 +13,6 @@ ehthumbs_vista.db
# Python related files.
*.pyc
*.pyo
*.pyi
*.egg-info
# Editor/tool files.
@@ -103,6 +102,9 @@ cache/
# Pygame_sdl2.
/pygame_sdl2
# Updater.
update.pem
# Steam.
steam_appid.txt
/steamapi.py
@@ -127,3 +129,48 @@ CubismSdkForNative-4-*.zip
# Works in progress, throwaway scripts, etc.
/scratch
/*-dists
/c
/cg
/.vscode/launch.json
/.vscode/tasks.json
# Pyi Files (generated by scripts/generate_pyi.py)
renpy/audio/filter.pyi
renpy/audio/renpysound.pyi
renpy/display/accelerator.pyi
renpy/display/matrix.pyi
renpy/display/quaternion.pyi
renpy/display/render.pyi
renpy/encryption.pyi
renpy/gl2/gl2draw.pyi
renpy/gl2/gl2mesh.pyi
renpy/gl2/gl2mesh2.pyi
renpy/gl2/gl2mesh3.pyi
renpy/gl2/gl2model.pyi
renpy/gl2/gl2polygon.pyi
renpy/gl2/gl2shader.pyi
renpy/gl2/gl2texture.pyi
renpy/gl2/live2dmodel.pyi
renpy/lexersupport.pyi
renpy/pydict.pyi
renpy/style.pyi
renpy/style.pyi
renpy/styledata/style_activate_functions.pyi
renpy/styledata/style_functions.pyi
renpy/styledata/style_hover_functions.pyi
renpy/styledata/style_idle_functions.pyi
renpy/styledata/style_insensitive_functions.pyi
renpy/styledata/style_selected_activate_functions.pyi
renpy/styledata/style_selected_functions.pyi
renpy/styledata/style_selected_hover_functions.pyi
renpy/styledata/style_selected_idle_functions.pyi
renpy/styledata/style_selected_insensitive_functions.pyi
renpy/styledata/styleclass.pyi
renpy/styledata/stylesets.pyi
renpy/text/ftfont.pyi
renpy/text/hbfont.pyi
renpy/text/textsupport.pyi
renpy/text/texwrap.pyi
renpy/uguu/gl.pyi
renpy/uguu/uguu.pyi
+240 -15
View File
@@ -1,23 +1,22 @@
{
"files.watcherExclude": {
"**/renpy/0old/**" : true,
"**/renpy/atom/**" : true,
"**/renpy/cubism/**" : true,
"**/renpy/dists/**" : true,
"**/renpy/dl/**" : true,
"**/renpy/doc/**" : true,
"**/renpy/doc-web/**" : true,
"**/renpy/jedit/**" : true,
"**/renpy/renpy*.app/**" : true,
"**/renpy/tmp/**" : true,
"**/renpy/web/**" : true,
"**/renpy/0old/**": true,
"**/renpy/atom/**": true,
"**/renpy/cubism/**": true,
"**/renpy/dists/**": true,
"**/renpy/dl/**": true,
"**/renpy/doc/**": true,
"**/renpy/doc-web/**": true,
"**/renpy/jedit/**": true,
"**/renpy/renpy*.app/**": true,
"**/renpy/tmp/**": true,
"**/renpy/web/**": true
},
"files.exclude": {
"0old": true,
"**-dists": true,
"**/*.pyc": true,
"**/*.pyo": true,
"renpy/**/*.pyi": true,
"**/*.rpmc": true,
"**/*.rpyc": true,
"**/__pycache__": true,
@@ -36,12 +35,51 @@
"renpy*.app": true,
"renpy*.exe": true,
"tmp": true,
"vscode": true,
"web": true,
"web2": true,
"web3": true,
"**/*.rpa": true,
"**/*.rpymc": true,
"**/cache/": true
"**/cache/": true,
"renpy/audio/filter.pyi": true,
"renpy/audio/renpysound.pyi": true,
"renpy/display/accelerator.pyi": true,
"renpy/display/matrix.pyi": true,
"renpy/display/quaternion.pyi": true,
"renpy/display/render.pyi": true,
"renpy/encryption.pyi": true,
"renpy/gl2/gl2draw.pyi": true,
"renpy/gl2/gl2mesh.pyi": true,
"renpy/gl2/gl2mesh2.pyi": true,
"renpy/gl2/gl2mesh3.pyi": true,
"renpy/gl2/gl2model.pyi": true,
"renpy/gl2/gl2polygon.pyi": true,
"renpy/gl2/gl2shader.pyi": true,
"renpy/gl2/gl2texture.pyi": true,
"renpy/gl2/live2dmodel.pyi": true,
"renpy/lexersupport.pyi": true,
"renpy/pydict.pyi": true,
"renpy/style.pyi": true,
"renpy/styledata/style_activate_functions.pyi": true,
"renpy/styledata/style_functions.pyi": true,
"renpy/styledata/style_hover_functions.pyi": true,
"renpy/styledata/style_idle_functions.pyi": true,
"renpy/styledata/style_insensitive_functions.pyi": true,
"renpy/styledata/style_selected_activate_functions.pyi": true,
"renpy/styledata/style_selected_functions.pyi": true,
"renpy/styledata/style_selected_hover_functions.pyi": true,
"renpy/styledata/style_selected_idle_functions.pyi": true,
"renpy/styledata/style_selected_insensitive_functions.pyi": true,
"renpy/styledata/styleclass.pyi": true,
"renpy/styledata/stylesets.pyi": true,
"renpy/text/ftfont.pyi": true,
"renpy/text/hbfont.pyi": true,
"renpy/text/textsupport.pyi": true,
"renpy/text/texwrap.pyi": true,
"renpy/uguu/gl.pyi": true,
"renpy/uguu/uguu.pyi": true
},
"python.languageServer": "Pylance",
"python.analysis.typeCheckingMode": "basic",
"python.analysis.diagnosticMode": "workspace",
@@ -56,4 +94,191 @@
"renpy.warnOnInvalidVariableNames": "Disabled",
"renpy.warnOnInvalidFilenameIssues": "Disabled",
"renpy.warnOnIndentationAndSpacingIssues": "Disabled",
}
"editor.tokenColorCustomizations": {
"[*Light*]": {
"textMateRules": [
{
"scope": "ref.matchtext",
"settings": {
"foreground": "#000"
}
}
]
},
"[*Dark*]": {
"textMateRules": [
{
"scope": "ref.matchtext",
"settings": {
"foreground": "#fff"
}
}
]
},
"textMateRules": [
{
"scope": "renpy.meta.plain",
"settings": {
"fontStyle": ""
}
},
{
"scope": "renpy.meta.i",
"settings": {
"fontStyle": "italic"
}
},
{
"scope": "renpy.meta.b",
"settings": {
"fontStyle": "bold"
}
},
{
"scope": [
"renpy.meta.u",
"renpy.meta.a"
],
"settings": {
"fontStyle": "underline"
}
},
{
"scope": "renpy.meta.s",
"settings": {
"fontStyle": "strikethrough"
}
},
{
"scope": "renpy.meta.i renpy.meta.b",
"settings": {
"fontStyle": "italic bold"
}
},
{
"scope": "renpy.meta.i renpy.meta.u",
"settings": {
"fontStyle": "italic underline"
}
},
{
"scope": "renpy.meta.i renpy.meta.s",
"settings": {
"fontStyle": "italic strikethrough"
}
},
{
"scope": "renpy.meta.b renpy.meta.u",
"settings": {
"fontStyle": "bold underline"
}
},
{
"scope": "renpy.meta.b renpy.meta.s",
"settings": {
"fontStyle": "bold strikethrough"
}
},
{
"scope": "renpy.meta.u renpy.meta.s",
"settings": {
"fontStyle": "underline strikethrough"
}
},
{
"scope": "renpy.meta.i renpy.meta.b renpy.meta.u",
"settings": {
"fontStyle": "italic bold underline"
}
},
{
"scope": "renpy.meta.i renpy.meta.b renpy.meta.s",
"settings": {
"fontStyle": "italic bold strikethrough"
}
},
{
"scope": "renpy.meta.i renpy.meta.u renpy.meta.s",
"settings": {
"fontStyle": "italic underline strikethrough"
}
},
{
"scope": "renpy.meta.b renpy.meta.u renpy.meta.s",
"settings": {
"fontStyle": "bold underline strikethrough"
}
},
{
"scope": "renpy.meta.i renpy.meta.b renpy.meta.u renpy.meta.s",
"settings": {
"fontStyle": "italic bold underline strikethrough"
}
},
{
"scope": "renpy.meta.color.text",
"settings": {
"foreground": "#ffffff"
}
},
{
"scope": "renpy.meta.color.#f00",
"settings": {
"foreground": "#f00"
}
},
{
"scope": "text.notes.info",
"settings": {
"foreground": "#17a2b8",
"fontStyle": "bold"
}
},
{
"scope": "text.notes.success",
"settings": {
"foreground": "#28a745",
"fontStyle": "bold"
}
},
{
"scope": "text.notes.warning",
"settings": {
"foreground": "#ffc107",
"fontStyle": "bold"
}
},
{
"scope": "text.notes.danger",
"settings": {
"foreground": "#dc3545",
"fontStyle": "bold"
}
},
{
"scope": "renpy.meta.color.#fff",
"settings": {
"foreground": "#fff"
}
},
{
"scope": "renpy.meta.color.#fcc",
"settings": {
"foreground": "#fcc"
}
},
{
"scope": "renpy.meta.color.#cfc",
"settings": {
"foreground": "#cfc"
}
},
{
"scope": "renpy.meta.color.#c00",
"settings": {
"foreground": "#c00"
}
}
]
}
}
+12
View File
@@ -0,0 +1,12 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "run.sh --build",
"type": "shell",
"command": "/home/tom/ab/renpy/run.sh --build",
}
]
}
+44 -19
View File
@@ -4,8 +4,29 @@ The Ren'Py Visual Novel Engine
https://www.renpy.org
Ren'Py development takes place on the ``master`` branch, and occasionally
on feature branches.
Branches
========
The following branches are the most interesting.
``fix``
The fix branch is used for fixes to the current version of Ren'Py that do
not require dangerous changes. The fix branch is also the source of the
documentation on https://www.renpy.org/. This branch is automatically
merged into master on a regular basis.
Pull requests that contain fixes or documentation improvements should be
made to the fix branch. When a release is made, the master branch is
copied to the fix branch.
``master``
The master branch is where the main focus of development is. This branch
will eventually become the next release of Ren'Py.
Pull requests that contain new features, that require incompatible changes,
or major changes to Ren'Py's internals should be targeted at the master
branch.
Getting Started
@@ -37,7 +58,7 @@ renpy.app, or renpy.exe, as appropriate for your platform.
If the current nightly build doesn't work, please wait 24 hours for a new
build to occur. If that build still doesn't work, contact Tom (`pytom at bishoujo.us`,
or @renpytom on twitter) to find out what's wrong.
or @renpytom on Twitter/X) to find out what's wrong.
The ``doc`` symlink will dangle until documentation is built, as described
below.
@@ -49,9 +70,9 @@ Building the modules requires you have the many dependencies installed on
your system. On Ubuntu and Debian, these dependencies can be installed with
the command::
sudo apt install virtualenvwrapper python3-dev libavcodec-dev libavformat-dev \
libswresample-dev libswscale-dev libfreetype6-dev libfribidi-dev libsdl2-dev \
libsdl2-image-dev libsdl2-gfx-dev libsdl2-mixer-dev libsdl2-ttf-dev libjpeg-dev
sudo apt install virtualenvwrapper python3-dev libassimp-dev libavcodec-dev libavformat-dev \
libswresample-dev libswscale-dev libharfbuzz-dev libfreetype6-dev libfribidi-dev libsdl2-dev \
libsdl2-image-dev libsdl2-gfx-dev libsdl2-mixer-dev libsdl2-ttf-dev libjpeg-dev pkg-config
Ren'Py requires SDL_image 2.6 or greater. If your distribution doesn't include
that version, you'll need to download it from:
@@ -71,29 +92,18 @@ To return to this virtualenv later, run::
After activating the virtualenv, install additional dependencies::
pip install -U cython future six typing pefile requests ecdsa
pip install -U setuptools cython future six typing pefile requests ecdsa
Then, install pygame_sdl2 by running the following commands::
git clone https://www.github.com/renpy/pygame_sdl2
pushd pygame_sdl2
python setup.py install
python setup.py install_headers
popd
Next, set RENPY_DEPS_INSTALL To a \:-separated (\;-separated on Windows)
list of paths containing the dependencies, and RENPY_CYTHON to the name
of the cython command::
Finally, use setup.py to compile extension modules that support Ren'Py::
export RENPY_DEPS_INSTALL="/usr:/usr/lib/$(gcc -dumpmachine)/"
export RENPY_CYTHON=cython
Finally, use setup.py in the Ren'Py ``module`` directory to compile and
install the modules that support Ren'Py::
pushd module
python setup.py install
popd
Ren'Py will be installed into the activated virtualenv. It can then be run
using the command::
@@ -101,6 +111,21 @@ using the command::
python renpy.py
Other Platforms
---------------
Where supported, Ren'Py will attempt to find include directories and library paths
using pkg-config. If pkg-config is not present, include and library paths can be
specified using CFLAGS and LDFLAGS.
If RENPY_CFLAGS is present in the environment and CFLAGS is not, setup.py
will set CFLAGS to RENPY_CFLAGS. The same is true for RENPY_LDFLAGS,
RENPY_CC, RENPY_CXX, and RENPY_LD.
Setup.py does not support cross-compiling. See https://github.com/renpy/renpy-build
for software that cross-compiles Ren'Py for many platforms.
Documentation
=============
+9 -1
View File
@@ -53,4 +53,12 @@ The quality is not perfect, but it should make sense to any developer
fluent in Finnish but not English. Adjustments will be made if better
translations are suggested.
* Lari Liuhamo (Diapolo10) <lari.liuhamo+github116504@gmail.com>
* Lari Liuhamo (Diapolo10) <lari.liuhamo+github116504@gmail.com>
Ukrainian
---------
Translation to Ukrainian language. Most of translations provided by Veydzher.
Feel free to report me any mistakes, fixes or improvements.
* Veydzher <veydzherdgswift008@gmail.com>
+12 -5
View File
@@ -8,18 +8,25 @@ import sys
from renpy import version_tuple # @UnresolvedImport
branch = os.popen("git branch --show-current").read().strip()
SOURCE = [
"/home/tom/ab/renpy",
"/home/tom/ab/renpy-build",
"/home/tom/ab/renpy-build-" + branch,
"/home/tom/ab/pygame_sdl2",
"/home/tom/ab/renpy-build/renpyweb",
]
version = ".".join(str(i) for i in version_tuple)
short_version = ".".join(str(i) for i in version_tuple[:-1])
major = short_version.split(".")[0]
from renpy.versions import generate_vc_version
version = generate_vc_version()["version"]
short_version = version.rpartition(".")[0]
major = version.partition(".")[0]
print("Version", version)
if major == '7':
SOURCE.append("/home/tom/ab/renpy-build-fix/renpyweb")
ap = argparse.ArgumentParser()
ap.add_argument("--release", action="store_true")
+28 -44
View File
@@ -94,6 +94,8 @@ def main():
ap.add_argument("--vc-version-only", action="store_true")
ap.add_argument("--link-directories", action="store_true")
ap.add_argument("--append-version", action="store_true")
ap.add_argument("--nightly", action="store_true")
ap.add_argument("--print-version", action="store_true")
args = ap.parse_args()
@@ -101,71 +103,53 @@ def main():
link_directory("renios")
link_directory("web")
if args.link_directories:
import renpy.versions
renpy.versions.generate_vc_version(nightly=args.nightly)
if args.link_directories or args.vc_version_only:
return
if not os.path.abspath(sys.executable).startswith(ROOT + "/lib"):
raise Exception("Distribute must be run with the python in lib/.")
if args.sign:
os.environ["RENPY_MAC_IDENTITY"] = "Developer ID Application: Tom Rothamel (XHTE5H7Z79)"
if PY2 and not sys.flags.optimize:
raise Exception("Not running with python optimization.")
if not os.path.abspath(sys.executable).startswith(ROOT + "/lib"):
raise Exception("Distribute must be run with the python in lib/.")
# Revision updating is done early, so we can do it even if the rest
# of the program fails.
# Determine the version. We grab the current revision, and if any
# file has changed, bump it by 1.
import renpy
if args.version is None:
args.version = ".".join(str(i) for i in renpy.version_tuple[:-1])
try:
s = subprocess.check_output([ "git", "describe", "--tags", "--dirty", ]).decode("utf-8").strip()
parts = s.strip().split("-")
dirty = "dirty" in parts
vc_version_base = os.path.splitext(renpy.vc_version.__file__)[0]
commits_per_day = collections.defaultdict(int)
# Delete the .pyc and .pyo files, as reload can choose one of them instead
# of the new .py file.
for fn in [ vc_version_base + ".pyc", vc_version_base + ".pyo" ]:
if os.path.exists(fn):
os.unlink(fn)
for i in subprocess.check_output([ "git", "log", "-99", "--pretty=%cd", "--date=format:%Y%m%d" ]).decode("utf-8").split():
commits_per_day[i[2:]] += 1
if dirty:
key = time.strftime("%Y%m%d")[2:]
vc_version = "{}{:02d}".format(key, commits_per_day[key] + 1)
else:
key = max(commits_per_day.keys())
vc_version = "{}{:02d}".format(key, commits_per_day[key])
reload(renpy.vc_version)
except Exception:
vc_version = 0
import renpy.vc_version
with open("renpy/vc_version.py", "w") as f:
import socket
official = socket.gethostname() == "eileen"
nightly = args.version and "nightly" in args.version
# A normal reload is fine, as renpy/__init__.py won't change.
reload(renpy)
f.write("vc_version = {}\n".format(vc_version))
f.write("official = {}\n".format(official))
f.write("nightly = {}\n".format(nightly))
if args.vc_version_only:
if args.print_version:
print(renpy.version_only)
return
try:
reload(sys.modules['renpy.vc_version']) # @UndefinedVariable
except Exception:
import renpy.vc_version # @UnusedImport
reload(sys.modules['renpy'])
if args.version is None:
if args.nightly:
args.version = renpy.version_only
else:
args.version = ".".join(str(i) for i in renpy.version_tuple[:-1])
if args.append_version:
args.version += "-" + renpy.version_only
# Check that the versions match.
full_version = renpy.version_only # @UndefinedVariable
if "-" not in args.version \
and not full_version.startswith(args.version):
raise Exception("The command-line and Ren'Py versions do not match.")
@@ -268,7 +252,7 @@ def main():
"-q",
"egg_info",
"--tag-build",
"-for-renpy-" + args.version,
"+renpy" + args.version.replace("+", "-"),
"sdist",
"-d",
os.path.abspath(destination)
+5
View File
@@ -0,0 +1,5 @@
*.c
*.so
*.egg-info
*.html
build
+1
View File
@@ -0,0 +1 @@
../../renpy/cslots.pyx
+8
View File
@@ -0,0 +1,8 @@
from setuptools import setup, Extension
setup(
name="cslots",
version="1.0.0",
ext_modules=[
Extension("cslots", [ "cslots.pyx" ]),
])
+7
View File
@@ -0,0 +1,7 @@
#!/bin/bash
set -e
cython -a cslots.pyx
pip install -e .
python3 -m pytest
+262
View File
@@ -0,0 +1,262 @@
import sys
import pickle
from cslots import Object, Slot, IntegerSlot
class C1(Object):
str1 : str|None = None
int1 : int = 0
def __init__(self, str1=None, int1=1):
self.str1 = str1
self.int1 = int1
class C2(C1):
str2 : str|None = None
int2 : int = 0
def __init__(self, str1=None, int1=0, str2=None, int2=0):
self.str1 = str1
self.int1 = int1
self.str2 = str2
self.int2 = int2
def test_slot_count():
assert C1._cslot_count == 2
assert C2._cslot_count == 4
def test_slots():
o = C2()
assert o.str1 is None
assert o.int1 == 0
assert o.str2 is None
assert o.int2 == 0
o.str1 = "hello"
o.int1 = 42
o.str2 = "world"
o.int2 = 43
assert o.str1 == "hello"
assert o.int1 == 42
assert o.str2 == "world"
assert o.int2 == 43
o.str1 = None
o.int1 = 0
o.str2 = None
o.int2 = 0
assert o.str1 is None
assert o.int1 == 0
assert o.str2 is None
assert o.int2 == 0
def test_compress():
def expect_size(o, values, indexes):
assert sys.getsizeof(o) == 32 + 8 * values + indexes
o = C2()
o.str1 = "hello"
o.int1 = 42
o.str2 = "world"
o.int2 = 43
expect_size(o, 4, 4)
o._compress()
assert o.str1 == "hello"
assert o.int1 == 42
assert o.str2 == "world"
assert o.int2 == 43
expect_size(o, 4, 4)
o = C2()
o.str2 = "world"
o.int2 = 43
o._compress()
assert o.str1 is None
assert o.int1 == 0
assert o.str2 == "world"
assert o.int2 == 43
expect_size(o, 2, 4)
o = C2()
o.str1 = "hello"
o._compress()
assert o.str1 == "hello"
assert o.int1 == 0
assert o.str2 is None
assert o.int2 == 0
expect_size(o, 1, 1)
def test_decompress():
def expect_size(o, values, indexes):
assert sys.getsizeof(o) == 32 + 8 * values + indexes
o = C2()
o.str1 = "hello"
o.int1 = 42
o.str2 = "world"
o.int2 = 43
expect_size(o, 4, 4)
o._compress()
o._decompress()
assert o.str1 == "hello"
assert o.int1 == 42
assert o.str2 == "world"
assert o.int2 == 43
expect_size(o, 4, 4)
o = C2()
o.str2 = "world"
o.int2 = 43
o._compress()
o._decompress()
assert o.str1 is None
assert o.int1 == 0
assert o.str2 == "world"
assert o.int2 == 43
expect_size(o, 4, 4)
o = C2()
o.str1 = "hello"
o._compress()
o._decompress()
assert o.str1 == "hello"
assert o.int1 == 0
assert o.str2 is None
assert o.int2 == 0
expect_size(o, 4, 4)
def test_kill():
o = C2()
o.str1 = "hello"
o.int1 = 42
o.str2 = "world"
o.int2 = 43
o._kill()
assert o.str1 is None
assert o.int1 == 0
assert o.str2 is None
assert o.int2 == 0
o = C2()
o.str2 = "world"
o.int2 = 43
o._compress()
o._kill()
assert o.str1 is None
assert o.int1 == 0
assert o.str2 is None
assert o.int2 == 0
def test_pickle():
o = C2()
o.str1 = "hello"
o.int1 = 42
o.str2 = "world"
o.int2 = 43
o = pickle.loads(pickle.dumps(o))
assert o.str1 == "hello"
assert o.int1 == 42
assert o.str2 == "world"
assert o.int2 == 43
o = C2()
o.str2 = "world"
o.int2 = 43
o = pickle.loads(pickle.dumps(o))
assert o.str1 is None
assert o.int1 == 0
assert o.str2 == "world"
assert o.int2 == 43
o = C2()
o.str1 = "hello"
o = pickle.loads(pickle.dumps(o))
assert o.str1 == "hello"
assert o.int1 == 0
assert o.str2 is None
assert o.int2 == 0
def test_pickle_compressed():
o = C2()
o.str1 = "hello"
o.int1 = 42
o.str2 = "world"
o.int2 = 43
o._compress()
o = pickle.loads(pickle.dumps(o))
assert o.str1 == "hello"
assert o.int1 == 42
assert o.str2 == "world"
assert o.int2 == 43
o = C2()
o.str2 = "world"
o.int2 = 43
o._compress()
o = pickle.loads(pickle.dumps(o))
assert o.str1 is None
assert o.int1 == 0
assert o.str2 == "world"
assert o.int2 == 43
o = C2()
o.str1 = "hello"
o._compress()
o = pickle.loads(pickle.dumps(o))
assert o.str1 == "hello"
assert o.int1 == 0
assert o.str2 is None
assert o.int2 == 0
+4 -1
View File
@@ -328,7 +328,7 @@ define gui.vbar_borders = Borders(gui.scale(4), gui.scale(4), gui.scale(4), gui.
define gui.vscrollbar_borders = Borders(gui.scale(4), gui.scale(4), gui.scale(4), gui.scale(4))
define gui.vslider_borders = Borders(gui.scale(4), gui.scale(4), gui.scale(4), gui.scale(4))
## What to do with unscrollable scrollbars in the gui. "hide" hides them, while
## What to do with unscrollable scrollbars in the game menu. "hide" hides them, while
## None shows them.
define gui.unscrollable = "hide"
@@ -344,6 +344,9 @@ define config.history_length = 250
## at the cost of performance.
define gui.history_height = gui.scale(140)
## Additional space to add between history screen entries.
define gui.history_spacing = 0
## The position, width, and alignment of the label giving the name of the
## speaking character.
define gui.history_name_xpos = gui.scale(155)
+1
View File
@@ -0,0 +1 @@
## When this file exists, Ren'Py will load files in game/libs before other files in game.
+29 -23
View File
@@ -96,7 +96,6 @@ style frame:
## https://www.renpy.org/doc/html/screen_special.html#say
screen say(who, what):
style_prefix "say"
window:
id "window"
@@ -228,7 +227,7 @@ style choice_button is default:
properties gui.button_properties("choice_button")
style choice_button_text is default:
properties gui.button_text_properties("choice_button")
properties gui.text_properties("choice_button")
## Quick Menu screen ###########################################################
@@ -245,9 +244,7 @@ screen quick_menu():
hbox:
style_prefix "quick"
xalign 0.5
yalign 1.0
style "quick_menu"
textbutton _("Back") action Rollback()
textbutton _("History") action ShowMenu('history')
@@ -266,14 +263,19 @@ init python:
default quick_menu = True
style quick_menu is hbox
style quick_button is default
style quick_button_text is button_text
style quick_menu:
xalign 0.5
yalign 1.0
style quick_button:
properties gui.button_properties("quick_button")
style quick_button_text:
properties gui.button_text_properties("quick_button")
properties gui.text_properties("quick_button")
################################################################################
@@ -338,7 +340,7 @@ style navigation_button:
properties gui.button_properties("navigation_button")
style navigation_button_text:
properties gui.button_text_properties("navigation_button")
properties gui.text_properties("navigation_button")
## Main Menu screen ############################################################
@@ -412,7 +414,7 @@ style main_menu_version:
## This screen is intended to be used with one or more children, which are
## transcluded (placed) inside it.
screen game_menu(title, scroll=None, yinitial=0.0):
screen game_menu(title, scroll=None, yinitial=0.0, spacing=0):
style_prefix "game_menu"
@@ -445,6 +447,8 @@ screen game_menu(title, scroll=None, yinitial=0.0):
side_yfill True
vbox:
spacing spacing
transclude
elif scroll == "vpgrid":
@@ -460,6 +464,8 @@ screen game_menu(title, scroll=None, yinitial=0.0):
side_yfill True
spacing spacing
transclude
else:
@@ -658,6 +664,7 @@ screen file_slots(title):
spacing gui.page_spacing
textbutton _("<") action FilePagePrevious()
key "save_page_prev" action FilePagePrevious()
if config.has_autosave:
textbutton _("{#auto_page}A") action FilePage("auto")
@@ -670,6 +677,7 @@ screen file_slots(title):
textbutton "[page]" action FilePage(page)
textbutton _(">") action FilePageNext()
key "save_page_next" action FilePageNext()
if config.has_sync:
if CurrentScreenName() == "save":
@@ -695,6 +703,7 @@ style slot_name_text is slot_button_text
style page_label:
xpadding gui.scale(50)
ypadding gui.scale(3)
xalign 0.5
style page_label_text:
textalign 0.5
@@ -705,13 +714,13 @@ style page_button:
properties gui.button_properties("page_button")
style page_button_text:
properties gui.button_text_properties("page_button")
properties gui.text_properties("page_button")
style slot_button:
properties gui.button_properties("slot_button")
style slot_button_text:
properties gui.button_text_properties("slot_button")
properties gui.text_properties("slot_button")
## Preferences screen ##########################################################
@@ -846,7 +855,7 @@ style radio_button:
foreground "gui/button/radio_[prefix_]foreground.png"
style radio_button_text:
properties gui.button_text_properties("radio_button")
properties gui.text_properties("radio_button")
style check_vbox:
spacing gui.pref_button_spacing
@@ -856,7 +865,7 @@ style check_button:
foreground "gui/button/check_[prefix_]foreground.png"
style check_button_text:
properties gui.button_text_properties("check_button")
properties gui.text_properties("check_button")
style slider_slider:
xsize gui.scale(350)
@@ -867,7 +876,7 @@ style slider_button:
left_margin gui.scale(10)
style slider_button_text:
properties gui.button_text_properties("slider_button")
properties gui.text_properties("slider_button")
style slider_vbox:
xsize gui.scale(450)
@@ -888,7 +897,7 @@ screen history():
## Avoid predicting this screen, as it can be very large.
predict False
use game_menu(_("History"), scroll=("vpgrid" if gui.history_height else "viewport"), yinitial=1.0):
use game_menu(_("History"), scroll=("vpgrid" if gui.history_height else "viewport"), yinitial=1.0, spacing=gui.history_spacing):
style_prefix "history"
@@ -1064,7 +1073,7 @@ screen mouse_help():
text _("Accesses the game menu.")
hbox:
label _("Mouse Wheel Up\nClick Rollback Side")
label _("Mouse Wheel Up")
text _("Rolls back to earlier dialogue.")
hbox:
@@ -1086,13 +1095,12 @@ screen gamepad_help():
label _("Right Shoulder")
text _("Rolls forward to later dialogue.")
hbox:
label _("D-Pad, Sticks")
text _("Navigate the interface.")
hbox:
label _("Start, Guide")
label _("Start, Guide, B/Right Button")
text _("Accesses the game menu.")
hbox:
@@ -1113,7 +1121,7 @@ style help_button:
xmargin gui.scale(8)
style help_button_text:
properties gui.button_text_properties("help_button")
properties gui.text_properties("help_button")
style help_label:
xsize gui.scale(250)
@@ -1191,7 +1199,7 @@ style confirm_button:
properties gui.button_properties("confirm_button")
style confirm_button_text:
properties gui.button_text_properties("confirm_button")
properties gui.text_properties("confirm_button")
## Skip indicator screen #######################################################
@@ -1404,7 +1412,7 @@ style nvl_button:
xanchor gui.nvl_button_xalign
style nvl_button_text:
properties gui.button_text_properties("nvl_button")
properties gui.text_properties("nvl_button")
## Bubble screen ###############################################################
@@ -1515,11 +1523,9 @@ screen quick_menu():
if quick_menu:
hbox:
style "quick_menu"
style_prefix "quick"
xalign 0.5
yalign 1.0
textbutton _("Back") action Rollback()
textbutton _("Skip") action Skip() alternate Skip(fast=True, confirm=True)
textbutton _("Auto") action Preference("auto-forward", "toggle")
+9 -5
View File
@@ -8,14 +8,14 @@ class Editor(renpy.editor.Editor):
has_projects = True
system = __file__.endswith(" (System).edit.py")
def get_code(self):
"""
Returns the path to the code executable.
"""
system = __file__.endswith(" (System).edit.py")
if system:
if self.system:
if "RENPY_VSCODE" in os.environ:
return os.environ["RENPY_VSCODE"]
@@ -42,7 +42,7 @@ class Editor(renpy.editor.Editor):
elif renpy.arch == "armv7l":
arch = "arm"
else:
arch = "x86_64"
arch = "x64"
code = os.path.join(RENPY_VSCODE, "VSCode-linux-" + arch, "bin", "code")
else:
@@ -65,7 +65,11 @@ class Editor(renpy.editor.Editor):
self.args.reverse()
code = self.get_code()
args = [ code, "-g" ] + self.args
if self.system or not renpy.linux:
args = [ code, "-g" ] + self.args
else:
args = [ code, "--no-sandbox", "-g" ] + self.args
args = [ renpy.exports.fsencode(i) for i in args ]
if renpy.windows:
+9 -5
View File
@@ -8,14 +8,14 @@ class Editor(renpy.editor.Editor):
has_projects = True
system = __file__.endswith(" (System).edit.py")
def get_code(self):
"""
Returns the path to the code executable.
"""
system = __file__.endswith(" (System).edit.py")
if system:
if self.system:
if "RENPY_VSCODE" in os.environ:
return os.environ["RENPY_VSCODE"]
@@ -42,7 +42,7 @@ class Editor(renpy.editor.Editor):
elif renpy.arch == "armv7l":
arch = "arm"
else:
arch = "x86_64"
arch = "x64"
code = os.path.join(RENPY_VSCODE, "VSCode-linux-" + arch, "bin", "code")
else:
@@ -65,7 +65,11 @@ class Editor(renpy.editor.Editor):
self.args.reverse()
code = self.get_code()
args = [ code, "-g" ] + self.args
if self.system or not renpy.linux:
args = [ code, "-g" ] + self.args
else:
args = [ code, "--no-sandbox", "-g" ] + self.args
args = [ renpy.exports.fsencode(i) for i in args ]
if renpy.windows:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
+27 -11
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -31,10 +31,9 @@ init python:
ANDROID_NO_BUNDLE = 6
ANDROID_OK = 7
JDK_REQUIREMENT=8
JDK_REQUIREMENT = 42
NO_RAPT_TEXT = _("To build Android packages, please download RAPT, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher.")
NO_JDK_TEXT = _("A 64-bit/x64 Java [JDK_REQUIREMENT] Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=https://www.renpy.org/jdk/[JDK_REQUIREMENT]}download and install the JDK{/a}, then restart the Ren'Py launcher.")
NO_SDK_TEXT = _("RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this.")
NO_KEY_TEXT = _("RAPT has been installed, but a key hasn't been configured. Please generate new keys, or copy android.keystore and bundle.keystore to the base directory.")
NO_CONFIG_TEXT = _("The current project has not been configured. Use \"Configure\" to configure it before building.")
@@ -99,9 +98,12 @@ init python:
rapt.plat.renpy = True
rapt.plat.translate = __
JDK_REQUIREMENT = rapt.plat.jdk_requirement
else:
rapt = None
def AndroidState():
"""
Determines the state of the android install, and returns it.
@@ -109,8 +111,6 @@ init python:
if RAPT_PATH is None:
return ANDROID_NO_RAPT
if renpy.windows and not "JAVA_HOME" in os.environ:
return ANDROID_NO_JDK
if not os.path.exists(rapt.plat.adb):
return ANDROID_NO_SDK
if not rapt.keys.keys_exist(project.current.path):
@@ -133,8 +133,6 @@ init python:
if state == ANDROID_NO_RAPT:
return NO_RAPT_TEXT
if state == ANDROID_NO_JDK:
return NO_JDK_TEXT
if state == ANDROID_NO_SDK:
return NO_SDK_TEXT
if state == ANDROID_NO_KEY:
@@ -200,7 +198,7 @@ init python:
c.save(p.path)
def android_build(p=None, gui=True, bundle=False, install=False, launch=False, destination=None, opendir=False):
def android_build(p=None, gui=True, bundle=False, install=False, launch=False, destination=None, opendir=False, packages=None):
"""
This actually builds the package.
"""
@@ -222,9 +220,12 @@ init python:
reporter = distribute.TextReporter()
rapt_interface = rapt.interface.Interface()
if not packages:
packages = ['android']
distribute.Distributor(p,
reporter=reporter,
packages=[ 'android' ],
packages=packages,
build_update=False,
noarchive=True,
packagedest=dist,
@@ -280,7 +281,16 @@ init python:
with interface.nolinks():
rapt.build.build(rapt_interface, dist, p.path, bundle=bundle, install=install, launch=launch, finished=finished, permissions=p.dump['build']['android_permissions'])
rapt.build.build(
rapt_interface,
dist,
p.path,
bundle=bundle,
install=install,
launch=launch,
finished=finished,
permissions=p.dump['build']['android_permissions'],
version=p.dump['build']['version'])
def android_build_argument(cmd):
@@ -704,6 +714,7 @@ init python:
ap.add_argument("--install", action="store_true", help="Installs the app on a device.")
ap.add_argument("--launch", action="store_true", help="Launches the app after build and install complete. Implies --install.")
ap.add_argument("--destination", "--dest", default=None, action="store", help="The directory where the packaged files should be placed.")
ap.add_argument("--package", action="append", help="If given, a package to build. Defaults to building the 'android' package.")
args = ap.parse_args()
@@ -712,7 +723,12 @@ init python:
p = project.Project(args.android_project)
android_build(p=p, gui=False, bundle=args.bundle, install=args.install, launch=args.launch, destination=args.destination)
if args.package:
packages = args.package
else:
packages = None
android_build(p=p, gui=False, bundle=args.bundle, install=args.install, launch=args.launch, destination=args.destination, packages=packages)
return False
+3 -10
View File
@@ -1,4 +1,4 @@
# This file contains strings used by RAPT, so the Ren'Py translation framework
# can find them. It's automatically generated by rapt/update_translations.py, and
# hence should not be changed by hand.
@@ -27,8 +27,6 @@ init python hide:
__("The package name may not contain two dots in a row, or begin or end with a dot.")
__("Each part of the package name must start with a letter, and contain only letters, numbers, and underscores.")
__("{} is a Java keyword, and can't be used as part of a package name.")
__("What is the application's version?\n\nThis should be the human-readable version that you would present to a person. It must contain only numbers and dots.")
__("The version number must contain only numbers and dots.")
__("How much RAM (in GB) do you want to allocate to Gradle?\nThis must be a positive integer number.")
__("The RAM size must contain only numbers and be positive.")
__("How would you like your application to be displayed?")
@@ -45,8 +43,8 @@ init python hide:
__("No. This may require manual updates when Ren'Py or the project configuration changes.")
__("Unknown configuration variable: {}")
__("I'm compiling a short test program, to see if you have a working JDK on your system.")
__("I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Please make sure you installed the 'JavaSoft (Oracle) registry keys'.\n\nWithout a working JDK, I can't continue.")
__("The version of Java on your computer does not appear to be JDK 8, which is the only version supported by the Android SDK. If you need to install JDK 8, you can download it from:\n\n{a=https://adoptium.net/?variant=openjdk8}https://adoptium.net/?variant=openjdk8{/a}\n\nYou can also set the JAVA_HOME environment variable to use a different version of Java.")
__("I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\n{a=https://adoptium.net}https://adoptium.net/{/a}\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Please install JDK [JDK_REQUIREMENT], and add it to your PATH.\n\nWithout a working JDK, I can't continue.")
__("The version of Java on your computer does not appear to be JDK [JDK_REQUIREMENT], which is required to build Android apps. If you need to install a newer JDK, you can download it from:\n\n{a=https://adoptium.net/}https://adoptium.net/{/a}, and add it to your PATH.\n\nYou can also set the JAVA_HOME environment variable to use a different version of Java.")
__("The JDK is present and working. Good!")
__("The Android SDK has already been unpacked.")
__("Do you accept the Android SDK Terms and Conditions?")
@@ -61,14 +59,9 @@ init python hide:
__("It looks like you're ready to start packaging games.")
__("Please enter your name or the name of your organization.")
__("I found an android.keystore file in the rapt directory. Do you want to use this file?")
__("I can create an application signing key for you. This key is required to create Universal APK for sideloading and stores other than Google Play.\n\nDo you want to create a key?")
__("I will create the key in the android.keystore file.\n\nYou need to back this file up. If you lose it, you will not be able to upgrade your application.\n\nYou also need to keep the key safe. If evil people get this file, they could make fake versions of your application, and potentially steal your users' data.\n\nWill you make a backup of android.keystore, and keep it in a safe place?")
__("\n\nSaying 'No' will prevent key creation.")
__("Could not create android.keystore. Is keytool in your path?")
__("I've finished creating android.keystore. Please back it up, and keep it in a safe place.")
__("I found a bundle.keystore file in the rapt directory. Do you want to use this file?")
__("I can create a bundle signing key for you. This key is required to build an Android App Bundle (AAB) for upload to Google Play.\n\nDo you want to create a key?")
__("I will create the key in the bundle.keystore file.\n\nYou need to back this file up. If you lose it, you will not be able to upgrade your application.\n\nYou also need to keep the key safe. If evil people get this file, they could make fake versions of your application, and potentially steal your users' data.\n\nWill you make a backup of bundle.keystore, and keep it in a safe place?")
__("\n\nSaying 'No' will prevent key creation.")
__("Could not create bundle.keystore. Is keytool in your path?")
__("I've opened the directory containing android.keystore and bundle.keystore. Please back them up, and keep them in a safe place.")
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
+5 -15
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -76,24 +76,14 @@ class BinFile(object):
self.addr = addr
def tostring(self):
if PY2:
return self.a.tostring() # type: ignore
else:
return self.a.tobytes()
return self.a.tobytes()
def substring(self, start, len): # @ReservedAssignment
if PY2:
return self.a[start:start + len].tostring() # type: ignore
else:
return self.a[start:start + len].tobytes()
return self.a[start:start + len].tobytes()
def __init__(self, data):
self.a = array.array('B')
if PY2:
self.a.fromstring(data) # type: ignore
else:
self.a.frombytes(data)
self.a.frombytes(data)
##############################################################################
# These functions parse data out of the file. In these functions, offset is
@@ -396,7 +386,7 @@ def change_icons(oldexe, icofn):
#Image size is the memory size of all sections + all headers, padded to memory alignment.
#There's alread a header size, and this isn't changing headers, so just add.
#There's already a header size, and this isn't changing headers, so just add.
#imageSize = pe.OPTIONAL_HEADER.ImageBase + pe.OPTIONAL_HEADER.SizeOfHeaders
imageSize = pe.OPTIONAL_HEADER.SizeOfHeaders
for s in pe.sections:
+20 -22
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -41,7 +41,7 @@ init python:
except Exception:
return False
def choose_directory(path):
def choose_directory(default_path):
"""
Pops up a directory chooser.
@@ -54,33 +54,31 @@ init python:
rather than user choice.
"""
if path:
default_path = path
path = None
else:
try:
default_path = os.path.dirname(os.path.abspath(config.renpy_base))
except Exception:
default_path = os.path.abspath(config.renpy_base)
if _renpytfd:
path = _renpytfd.selectFolderDialog(__("Select Projects Directory"), default_path)
else:
path = None
is_default = False
if default_path is None:
try:
default_path = os.path.dirname(os.path.abspath(config.renpy_base))
except Exception:
default_path = os.path.abspath(config.renpy_base)
# Path being None or "" means nothing was selected.
if not path:
path = default_path
is_default = True
if default_path is None or not os.path.isdir(default_path) or not directory_is_writable(default_path):
interface.error(_("No directory was selected, but one is required."))
return default_path, True
# Apply more thorough checks to an explicit path.
path = renpy.fsdecode(path)
if (not os.path.isdir(path)) or (not directory_is_writable(path)):
interface.error(_("The selected projects directory is not writable."))
path = default_path
is_default = True
if not os.path.isdir(path):
interface.error(_("The selected directory does not exist."))
elif not directory_is_writable(path):
interface.error(_("The selected directory is not writable."))
if is_default and (not directory_is_writable(path)):
path = os.path.expanduser("~")
return path, is_default
return path, False
+5 -6
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -24,7 +24,6 @@ init python:
import codecs
import re
import sys
import future.utils
def theme_names():
"""
@@ -98,7 +97,7 @@ init python:
return
renpy.style.restore(style_backup)
future.utils.exec_(theme_data.THEME[theme][scheme], globals(), globals())
exec(theme_data.THEME[theme][scheme], globals(), globals())
# Rebuild the style cache.
renpy.style.rebuild(False)
@@ -168,8 +167,8 @@ init python:
def list_logical_lines(filename):
"""
This reads in filename, and turns it into a list of logical
lines.
This reads in filename, and turns it into a list of logical
lines.
"""
f = codecs.open(filename, "rb", "utf-8")
@@ -188,7 +187,7 @@ init python:
# The line that we're building up.
line = ""
# The number of open parenthesis there are right now.
# The number of open parenthesis there are right now.
parendepth = 0
# Looping over the characters in a single logical line.
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
+196 -138
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -61,7 +61,9 @@ init python in distribute:
minor=sys.version_info.minor,
)
# Going from 7.4 to 7.5 or 8.0, the library directory changed.
# * Going from 7.4 to 7.5 or 8.0, the library directory changed.
# * 7.7 called os.makedirs with exist_ok=True, even on Python 2.
# * 8.2 wouldn't save the DLC state.
RENPY_PATCH = py("""\
def change_renpy_executable():
import sys, os, renpy, site
@@ -70,6 +72,35 @@ def change_renpy_executable():
sys.renpy_executable = os.path.join(renpy.config.renpy_base, "lib", "py{major}-" + site.RENPY_PLATFORM, os.path.basename(sys.renpy_executable))
change_renpy_executable()
if sys.version_info.major == 2:
os.old_makedirs = getattr(os, "old_makedirs", os.makedirs)
def makedirs(name, mode=0o777, exist_ok=False):
if exist_ok and os.path.exists(name):
return
os.old_makedirs(name, mode)
os.makedirs = makedirs
def fix_dlc(name, fn):
import sys, os
if not os.path.exists(os.path.join(config.renpy_base, fn)):
return
u = sys._getframe(2).f_locals["self"]
if name in u.current_state:
return
u.add_dlc_state(name)
fix_dlc("steam", "lib/py3-linux-x86_64/libsteam_api.so")
fix_dlc("steam", "lib/py2-linux-x86_64/libsteam_api.so")
fix_dlc("web", "web")
fix_dlc("rapt", "rapt")
fix_dlc("renios", "renios")
""")
match_cache = { }
@@ -401,10 +432,7 @@ change_renpy_executable()
for f in sorted(self, key=lambda a : a.name):
f.hash(sha, distributor)
if PY2:
return sha.hexdigest().decode("utf-8")
else:
return sha.hexdigest()
return sha.hexdigest()
def split_by_prefix(self, prefix):
"""
@@ -489,10 +517,6 @@ change_renpy_executable()
# A map from a package to a unique update version hash.
self.update_versions = { }
# Map from destination file with extension to (that file's hash,
# hash of the file list)
self.build_cache = { }
# A map from file to its hash.
self.hash_cache = { }
@@ -524,10 +548,18 @@ change_renpy_executable()
# dictionaries.
data = project.data
# Reset the RPU update builder.
RPUPackage.reset()
if scan:
self.reporter.info(_("Scanning project files..."))
project.update_dump(force=True, gui=False, compile=project.data['force_recompile'])
if project.data['tutorial']:
self.reporter.info(_("Building distributions failed:\n\nThe project is the Ren'Py Tutorial, which can't be distributed outside of Ren'Py. Consider using The Question as a test project."), pause=True)
self.log.close()
return
if project.data['force_recompile']:
import compileall
@@ -551,7 +583,10 @@ change_renpy_executable()
self.pretty_version = build['version']
if (" " in self.base_name) or (":" in self.base_name) or (";" in self.base_name):
reporter.info(_("Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."), pause=True)
reporter.info(
_("Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."),
submessage=_("This may be derived from build.name and config.version or build.version."),
pause=True)
self.log.close()
return
@@ -569,13 +604,14 @@ change_renpy_executable()
except Exception:
pass
self.load_build_cache()
self.packagedest = packagedest
self.include_update = build['include_update']
self.build_update = self.include_update and build_update
if self.include_update:
self.make_key_pem()
# The various executables, which change names based on self.executable_name.
self.app = self.executable_name + ".app"
self.exe = self.executable_name + ".exe"
@@ -622,7 +658,6 @@ change_renpy_executable()
# Build the mac app and windows exes.
self.add_mac_files()
self.add_windows_files()
self.add_main_py()
# Add the main.py.
self.add_main_py()
@@ -673,20 +708,18 @@ change_renpy_executable()
dlc=p["dlc"])
if self.build_update and p["update"]:
self.make_package(
p["name"],
"update",
p["file_lists"],
dlc=p["dlc"])
for update_format in self.list_update_formats():
self.make_package(
p["name"],
update_format,
p["file_lists"],
dlc=p["dlc"])
wait_parallel_threads()
if self.build_update:
self.finish_updates(build_packages)
if not packagedest:
self.save_build_cache()
# Finish up.
self.log.close()
@@ -696,6 +729,23 @@ change_renpy_executable()
if open_directory:
renpy.run(store.OpenDirectory(self.destination, absolute=True))
def list_update_formats(self):
"""
Returns a list of update formats to build.
"""
rv = [ ]
for update_format in self.build["update_formats"]:
if update_format == "rpu":
rv.append("rpu")
elif update_format == "zsync":
rv.append("update")
else:
raise Exception("Unknown update format: " + update_format)
return rv
def scan_and_classify(self, directory, patterns):
"""
Walks through the `directory`, finds files and directories that
@@ -720,29 +770,37 @@ change_renpy_executable()
is_dir = os.path.isdir(path)
if is_dir:
match_name = name + "/"
match_names = [ name + "/", name ]
else:
match_name = name
match_names = [ name ]
for pattern, file_list in patterns:
if match(match_name, pattern):
matched = False
# When we have ('test/**', None), avoid excluding test.
if (not file_list) and is_dir:
new_pattern = pattern.rstrip("*")
if (pattern != new_pattern) and match(match_name, new_pattern):
continue
for match_name in match_names:
if match(match_name, pattern):
# When we have ('test/**', None), avoid excluding test.
if (not file_list) and is_dir:
new_pattern = pattern.rstrip("*")
if (pattern != new_pattern) and match(match_name, new_pattern):
continue
matched = True
break
if matched:
break
else:
print(str(match_name), "doesn't match anything.", file=self.log)
print(str(match_names[0]), "doesn't match anything.", file=self.log)
pattern = None
file_list = None
print(str(match_name), "matches", str(pattern), "(" + str(file_list) + ").", file=self.log)
print(str(match_names[0]), "matches", str(pattern), "(" + str(file_list) + ").", file=self.log)
if file_list is None:
return
@@ -836,7 +894,7 @@ change_renpy_executable()
if not os.path.exists(path):
raise Exception("{} does not exist.".format(path))
if isinstance(file_list, basestring):
if isinstance(file_list, str):
file_list = file_list.split()
f = File(name, path, False, executable)
@@ -849,7 +907,7 @@ change_renpy_executable()
Adds an empty directory to the file lists.
"""
if isinstance(file_list, basestring):
if isinstance(file_list, str):
file_list = file_list.split()
f = File(name, None, True, False)
@@ -885,6 +943,15 @@ change_renpy_executable()
arcfn = arcname + ".rpa"
arcpath = self.temp_filename(arcfn)
# Create new directories leading to the new archive file relative to the tmp root
# if the archive's name indicates it should be in a subdirectory
arc_relpath = os.path.relpath(arcpath, self.project.tmp)
arc_subdir = os.path.dirname(arc_relpath)
if arc_subdir:
abs_subdir = os.path.join(self.project.tmp, arc_subdir)
os.makedirs(abs_subdir, exist_ok=True)
af = archiver.Archive(arcpath)
fll = len(self.file_lists[arcname])
@@ -923,10 +990,20 @@ change_renpy_executable()
script_version_txt = self.temp_filename("script_version.txt")
with open(script_version_txt, "w") as f:
f.write(unicode(repr(renpy.renpy.version_tuple[:-1])))
f.write(repr(renpy.renpy.version_tuple[:-1]))
self.add_file("all", "game/script_version.txt", script_version_txt)
if self.build["info"]:
build_info_json = self.temp_filename("build_info.json")
with open(build_info_json, "w") as f:
json.dump(self.build["info"], f)
self.add_file("all", "game/cache/build_info.json", build_info_json)
def add_file_list_hash(self, list_name):
"""
Hashes a file list, then adds that file to the Ren'Py distribution.
@@ -1003,11 +1080,8 @@ change_renpy_executable()
rv = self.temp_filename("Info.plist")
if PY2:
plistlib.writePlist(plist, rv)
else:
with open(rv, "wb") as f:
plistlib.dump(plist, f)
with open(rv, "wb") as f:
plistlib.dump(plist, f)
return rv
@@ -1028,12 +1102,14 @@ change_renpy_executable()
prefix = py("lib/py{major}-")
if os.path.exists(linux_i686):
i686fn = os.path.join(config.renpy_base, prefix + "linux-i686/renpy")
if os.path.exists(i686fn):
self.add_file(
linux_i686,
prefix + "linux-i686/" + self.executable_name,
os.path.join(config.renpy_base, prefix + "linux-i686/renpy"),
i686fn,
True)
self.add_file(
@@ -1042,16 +1118,6 @@ change_renpy_executable()
os.path.join(config.renpy_base, prefix + "linux-x86_64/renpy"),
True)
armfn = os.path.join(config.renpy_base, prefix + "linux-armv7l/renpy")
if os.path.exists(armfn):
self.add_file(
raspi,
prefix + "linux-armv7l/" + self.executable_name,
armfn,
True)
aarch64fn = os.path.join(config.renpy_base, prefix + "linux-aarch64/renpy")
if os.path.exists(aarch64fn):
@@ -1154,19 +1220,8 @@ change_renpy_executable()
if os.path.exists(tmp):
self.add_file(fl, dst, tmp)
if PY2:
if self.build["include_i686"]:
write_exe("lib/py2-windows-i686/renpy.exe", self.exe32, self.exe32, windows_i686)
write_exe("lib/py2-windows-i686/pythonw.exe", "lib/py2-windows-i686/pythonw.exe", "pythonw-32.exe", windows_i686)
write_exe("lib/py2-windows-x86_64/renpy.exe", self.exe, self.exe, windows)
write_exe("lib/py2-windows-x86_64/pythonw.exe", "lib/py2-windows-x86_64/pythonw.exe", "pythonw-64.exe", windows)
else:
write_exe("lib/py3-windows-x86_64/renpy.exe", self.exe, self.exe, windows)
write_exe("lib/py3-windows-x86_64/pythonw.exe", "lib/py3-windows-x86_64/pythonw.exe", "pythonw-64.exe", windows)
write_exe("lib/py3-windows-x86_64/renpy.exe", self.exe, self.exe, windows)
write_exe("lib/py3-windows-x86_64/pythonw.exe", "lib/py3-windows-x86_64/pythonw.exe", "pythonw-64.exe", windows)
def add_main_py(self):
@@ -1409,6 +1464,7 @@ change_renpy_executable()
FORMATS = {
"update" : (".update", False, False, False),
"rpu" : ("", False, False, False),
"tar.bz2" : (".tar.bz2", False, False, True),
"zip" : (".zip", False, False, True),
@@ -1421,6 +1477,8 @@ change_renpy_executable()
"bare-tar.bz2" : (".tar.bz2", False, False, False),
"bare-zip" : (".zip", False, False, False),
"null" : ( "", True, False, False),
}
if format not in FORMATS:
@@ -1456,17 +1514,21 @@ change_renpy_executable()
update = { variant : { "version" : self.update_versions[variant], "base_name" : self.base_name, "files" : update_files, "directories" : update_directories, "xbit" : update_xbit } }
update_fn = os.path.join(self.destination, filename + ".update.json")
update_fn = self.temp_filename(filename + ".update.json")
if self.include_update and (variant not in [ 'ios', 'android', 'source']) and (not format.startswith("app-")):
with open(update_fn, "wb" if PY2 else "w") as f:
if self.include_update and not format.startswith("app-"):
with open(update_fn, "w") as f:
json.dump(update, f, indent=2)
if (not dlc) or (format == "update"):
fl.append(File("update", None, True, False))
fl.append(File("update/current.json", update_fn, False, False))
if not dlc:
fl.append(File("update/key.pem", self.temp_filename("key.pem"), False, False))
# If we're not an update file, prepend the directory.
if (not dlc) and prepend:
fl.prepend_directory(filename)
@@ -1477,19 +1539,9 @@ change_renpy_executable()
full_filename = filename + ext
path += ext
if self.build['renpy']:
fl_hash = fl.hash(self)
else:
fl_hash = '<not building renpy>'
file_hash, old_fl_hash = self.build_cache.get(full_filename, ("", ""))
if (not directory) and (old_fl_hash == fl_hash) and not(self.build['renpy'] and (variant == "sdk")):
if file_hash:
self.build_cache[full_filename] = (file_hash, fl_hash)
return
if format == "rpu":
full_filename = "rpu/" + variant + ".files.rpu"
path = self.destination + "/" + full_filename
def done():
"""
@@ -1497,22 +1549,20 @@ change_renpy_executable()
in this thread or a background thread.
"""
if self.include_update and not self.build_update and not dlc:
final_update_fn = os.path.join(self.destination, filename + ".update.json")
if self.build_update or dlc:
if os.path.exists(update_fn):
os.unlink(update_fn)
if not directory:
file_hash = hash_file(path)
else:
file_hash = ""
if file_hash:
self.build_cache[full_filename] = (file_hash, fl_hash)
shutil.copy(update_fn, final_update_fn)
if format == "tar.bz2" or format == "bare-tar.bz2":
pkg = TarPackage(path, "w:bz2")
elif format == "update":
pkg = UpdatePackage(path, filename, self.destination)
elif format == "rpu":
pkg = RPUPackage(self.destination, variant)
elif format == "null":
pkg = NullPackage()
elif format == "zip" or format == "app-zip" or format == "bare-zip":
if self.build['renpy']:
pkg = ExternalZipPackage(path)
@@ -1549,13 +1599,13 @@ change_renpy_executable()
self.reporter.progress_done()
if format == "update":
# Build the zsync file.
self.reporter.info(_("Making the [variant] update zsync file."), variant=variant)
pkg.close()
def close_progress(done, total):
self.reporter.progress(_("Finishing the [variant] [format] package."), done, total, variant=variant, format=format)
pkg.close(close_progress)
if done is not None:
done()
@@ -1576,65 +1626,72 @@ change_renpy_executable()
def add_variant(variant):
digest = self.build_cache[self.base_name + "-" + variant + ".update"][0]
sums_size = os.path.getsize(self.destination + "/" + self.base_name + "-" + variant + ".sums")
index[variant] = {
"version" : self.update_versions[variant],
"pretty_version" : self.pretty_version,
"digest" : digest,
"zsync_url" : self.base_name + "-" + variant + ".zsync",
"sums_url" : self.base_name + "-" + variant + ".sums",
"sums_size" : sums_size,
"json_url" : self.base_name + "-" + variant + ".update.json",
}
"renpy_version" : renpy.version_only,
}
fn = renpy.fsencode(os.path.join(self.destination, self.base_name + "-" + variant + ".update"))
if "zsync" in self.build["update_formats"]:
if os.path.exists(fn):
os.unlink(fn)
digest = hash_file(self.destination + "/" + self.base_name + "-" + variant + ".update")
sums_size = os.path.getsize(self.destination + "/" + self.base_name + "-" + variant + ".sums")
index[variant].update({
"digest" : digest,
"zsync_url" : self.base_name + "-" + variant + ".zsync",
"sums_url" : self.base_name + "-" + variant + ".sums",
"sums_size" : sums_size,
"json_url" : self.base_name + "-" + variant + ".update.json",
})
fn = renpy.fsencode(os.path.join(self.destination, self.base_name + "-" + variant + ".update"))
if os.path.exists(fn):
os.unlink(fn)
if "rpu" in self.build["update_formats"]:
index[variant]["rpu_url"] = "rpu/" + variant + ".files.rpu"
index[variant]["rpu_digest"] = hash_file(self.destination + "/rpu/" + variant + ".files.rpu")
for p in packages:
if p["update"]:
add_variant(p["name"])
update_data = json.dumps(index, indent=2)
if not isinstance(update_data, bytes):
update_data = update_data.encode("utf-8")
fn = renpy.fsencode(os.path.join(self.destination, "updates.json"))
with open(fn, "wb" if PY2 else "w") as f:
json.dump(index, f, indent=2)
with open(fn, "wb") as f:
f.write(update_data)
# Write the signed file.
import ecdsa
def save_build_cache(self):
if not self.build['renpy']:
return
with open(self.find_update_pem(), "rb") as f:
signing_key = ecdsa.SigningKey.from_pem(f.read())
fn = renpy.fsencode(os.path.join(self.destination, ".build_cache"))
fn = renpy.fsencode(os.path.join(self.destination, "updates.ecdsa"))
with open(fn, "wb") as f:
f.write(signing_key.sign(update_data))
with open(fn, "w", encoding="utf-8") as f:
for k, v in self.build_cache.items():
l = "\t".join([k, v[0], v[1]]) + "\n"
f.write(l)
def find_update_pem(self):
if self.build['renpy']:
return os.path.join(config.renpy_base, "update.pem")
else:
return os.path.join(self.project.path, "update.pem")
def load_build_cache(self):
if not self.build['renpy']:
return
def make_key_pem(self):
import ecdsa
fn = renpy.fsencode(os.path.join(self.destination, ".build_cache"))
with open(self.find_update_pem(), "rb") as f:
signing_key = ecdsa.SigningKey.from_pem(f.read())
if not os.path.exists(fn):
return
with open(fn, "rb") as f:
for l in f:
if not l:
continue
l = l.decode("utf-8").rstrip()
l = l.split("\t")
self.build_cache[l[0]] = (l[1], l[2])
os.unlink(fn)
key_pem = self.temp_filename("key.pem")
with open(key_pem, "wb") as f:
f.write(signing_key.verifying_key.to_pem())
def dump(self):
for k, v in sorted(self.file_lists.items()):
@@ -1730,8 +1787,9 @@ change_renpy_executable()
reporter.info(_("Recompiling all rpy files into rpyc files..."))
project.launch([ "compile", "--keep-orphan-rpyc" ], wait=True)
files = [fn + "c" for fn in project.script_files()
if fn.startswith("game/") and project.exists(fn + "c")]
files = [
fn + "c" for fn in project.script_files()
if fn.startswith("game/") and project.exists(fn + "c")]
len_files = len(files)
if not files:
+17 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -267,7 +267,23 @@ label start_update_old_game:
call update_old_game
jump build_distributions
label add_update_pem:
python hide:
interface.info("You're trying to build an update, but an update.pem file doesn't exist.\n\nThis file is used to sign updates, and will be automatically created in your projects's base directory.\n\nYou'll need to back up update.pem and keep it safe.", cancel=Jump("build_distributions"))
import ecdsa
key = ecdsa.SigningKey.generate(curve=ecdsa.NIST256p).to_pem()
with open(os.path.join(project.current.path, "update.pem"), "wb") as f:
f.write(key)
return
label start_distribute:
if project.current.dump["build"]["include_update"] and not os.path.exists(os.path.join(project.current.path, "update.pem")):
call add_update_pem
if project.current.data["add_from"]:
call add_from_common
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
+9 -27
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -21,27 +21,13 @@
init python:
import requests
import urllib.request
import os
import threading
import time
ssl_context_cache = None
def ssl_context():
"""
Returns the SSL context.
"""
global ssl_context_cache
if ssl_context_cache is None:
import ssl
import certifi
ssl_context_cache = ssl.create_default_context(purpose=ssl.Purpose.SERVER_AUTH, cafile=certifi.where())
return ssl_context_cache
class Downloader(object):
def __init__(self, url, dest):
@@ -66,14 +52,14 @@ init python:
# This is set to true by cancel() to indicate the download should be cancelled.
self.cancelled = False
# Set on succes or failure.
# Set on success or failure.
self.success = False
self.failure = None
try:
# Open the URL.
self.urlfile = urllib.request.urlopen(url, context=ssl_context())
self.urlfile = requests.get(url, stream=True, proxies=renpy.proxies, timeout=15)
t = threading.Thread(target=self.thread)
t.daemon = True
@@ -92,12 +78,7 @@ init python:
else:
length = 0
while not self.cancelled:
data = self.urlfile.read(65536)
if not data:
break
for data in self.urlfile.iter_content(1024 * 1024):
count += len(data)
self.tmpfile.write(data)
@@ -105,6 +86,9 @@ init python:
if length > 0:
self.progress = 1.0 * count / length
if self.cancelled:
break
self.tmpfile.close()
if self.cancelled:
@@ -122,7 +106,6 @@ init python:
except Exception as e:
self.failure = str(e)
def safe_unlink(self, fn):
if os.path.exists(fn):
os.unlink(fn)
@@ -164,4 +147,3 @@ init python:
def periodic(self, st):
self.adjustment.change(self.downloader.progress)
return .25
+134 -35
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -112,7 +112,7 @@ init 1 python in editor:
editor is installed or not.
"""
def __init__(self, priority, name, description=None, dlc=None, dldescription=None, error_message=None):
def __init__(self, priority, name, description=None, dlc=None, dldescription=None, error_message=None, deprecated=False):
# The priority of the editor. Lower priorities will come later
# in the list.
self.priority = priority
@@ -135,6 +135,29 @@ init 1 python in editor:
# An error message to display if the editor failed to start.
self.error_message = error_message
# If the editor is considered deprecated for use with Ren'Py.
self.deprecated = deprecated
def vscode_path():
"""
Gets the path to VS Code for this platform.
"""
if renpy.windows:
return os.path.join(config.renpy_base, "vscode/VSCode-win32-x64")
elif renpy.macintosh:
return os.path.join(config.renpy_base, "vscode/Visual Studio Code.app")
else:
if renpy.arch == "aarch64":
arch = "arm64"
elif renpy.arch == "armv7l":
arch = "arm"
else:
arch = "x64"
return os.path.join(config.renpy_base, "vscode/VSCode-linux-" + arch)
def fancy_scan_editors():
"""
Creates the list of FancyEditorInfo objects.
@@ -152,19 +175,7 @@ init 1 python in editor:
AD1 = _("A modern editor with many extensions including advanced Ren'Py integration.")
AD2 = _("A modern editor with many extensions including advanced Ren'Py integration.\n{a=jump:reinstall_vscode}Upgrade Visual Studio Code to the latest version.{/a}")
if renpy.windows:
installed = os.path.exists(os.path.join(config.renpy_base, "vscode/VSCode-win32-x64"))
elif renpy.macintosh:
installed = os.path.exists(os.path.join(config.renpy_base, "vscode/Visual Studio Code.app"))
else:
if renpy.arch == "aarch64":
arch = "arm64"
elif renpy.arch == "armv7l":
arch = "arm"
else:
arch = "x86_64"
installed = os.path.exists(os.path.join(config.renpy_base, "vscode/VSCode-linux-" + arch))
installed = os.path.exists(vscode_path())
e = FancyEditorInfo(
0,
@@ -179,7 +190,7 @@ init 1 python in editor:
fei.append(e)
# Atom.
AD = _("A modern and approachable text editor.")
AD = _("Atom is deprecated and its bugs are known for corrupting games, using another editor is recommended.")
if renpy.windows:
dlc = "atom-windows"
@@ -199,23 +210,28 @@ init 1 python in editor:
AD,
"extension:atom",
_("Up to 150 MB download required."),
None)
None,
deprecated=True,
)
e.installed = e.installed and (installed or 'RENPY_ATOM' in os.environ)
fei.append(e)
# jEdit - Only present if it exists on system.
if os.path.exists(os.path.join(config.renpy_base, "jedit")):
e = FancyEditorInfo(
2,
_("jEdit"),
_("JEdit is deprecated, using another editor is recommended."),
"jedit",
_("1.8 MB download required."),
_("This may have occurred because Java is not installed on this system."),
deprecated=True,
)
fei.append(FancyEditorInfo(
2,
_("jEdit"),
_("A mature editor that requires Java."),
"jedit",
_("1.8 MB download required."),
_("This may have occured because Java is not installed on this system."),
))
e.installed = e.installed and os.path.exists(os.path.join(config.renpy_base, "jedit"))
fei.append(e)
fei.append(FancyEditorInfo(
3,
@@ -229,9 +245,6 @@ init 1 python in editor:
_("Invokes the editor your operating system has associated with .rpy files."),
None))
for k in editors:
if k in [ "Visual Studio Code", "Visual Studio Code (System)", "Atom", "jEdit", "System Editor", "None" ]:
continue
@@ -253,7 +266,7 @@ init 1 python in editor:
# If we're in a linux distro or something, assume all editors work.
if not updater.can_update():
for i in fei:
if i.dlc and not i.dlc.startswith("extension:"):
if i.dlc and not i.dlc.startswith("extension:") and not i.deprecated:
i.installed = True
def fancy_activate_editor(default=False):
@@ -398,7 +411,7 @@ init 1 python in editor:
except Exception as e:
exception = traceback.format_exception_only(type(e), e)[-1][:-1]
renpy.invoke_in_new_context(interface.error, _("An exception occured while launching the text editor:\n[exception!q]"), error_message, exception=exception)
renpy.invoke_in_new_context(interface.error, _("An exception occurred while launching the text editor:\n[exception!q]"), error_message, exception=exception)
class EditAbsolute(Action):
def __init__(self, filename, line=None, check=False):
@@ -444,7 +457,7 @@ init 1 python in editor:
except Exception as e:
exception = traceback.format_exception_only(type(e), e)[-1][:-1]
renpy.invoke_in_new_context(interface.error, _("An exception occured while launching the text editor:\n[exception!q]"), error_message, exception=exception)
renpy.invoke_in_new_context(interface.error, _("An exception occurred while launching the text editor:\n[exception!q]"), error_message, exception=exception)
class EditAll(Action):
@@ -482,7 +495,7 @@ init 1 python in editor:
except Exception as e:
exception = traceback.format_exception_only(type(e), e)[-1][:-1]
renpy.invoke_in_new_context(interface.error, _("An exception occured while launching the text editor:\n[exception!q]"), error_message, exception=exception)
renpy.invoke_in_new_context(interface.error, _("An exception occurred while launching the text editor:\n[exception!q]"), error_message, exception=exception)
class EditProject(Action):
@@ -505,7 +518,7 @@ init 1 python in editor:
except Exception as e:
exception = traceback.format_exception_only(type(e), e)[-1][:-1]
renpy.invoke_in_new_context(interface.error, _("An exception occured while launching the text editor:\n[exception!q]"), error_message, exception=exception)
renpy.invoke_in_new_context(interface.error, _("An exception occurred while launching the text editor:\n[exception!q]"), error_message, exception=exception)
def CanEditProject():
@@ -520,6 +533,27 @@ init 1 python in editor:
return False
def check_old_vscode_extension():
"""
Check to see if the old version of the Ren'Py vscode extension is installed.
"""
extensions = os.path.join(vscode_path(), "data", "extensions")
if not os.path.isdir(extensions):
return False
for i in util.listdir(extensions):
if i.lower().startswith("renpy.language-renpy-"):
return False
for i in util.listdir(extensions):
if i.lower().startswith("luquedaniel.languague-renpy-"):
return True
return False
screen editor:
frame:
@@ -549,6 +583,9 @@ screen editor:
for fe in editor.fancy_editors:
if fe.deprecated and not fe.installed:
continue
add SPACER
textbutton fe.name action editor.SelectEditor(fe.name)
@@ -560,7 +597,10 @@ screen editor:
has vbox
if fe.description:
text fe.description style "l_small_text"
text fe.description:
style "l_small_text"
if fe.deprecated:
color ERROR_COLOR
if not fe.installed:
add HALF_SPACER
@@ -576,7 +616,66 @@ label reinstall_vscode:
jump editor_preference
label upgrade_vscode_extension:
python hide:
manifest = "vscode"
renpy.invoke_in_new_context(installer.manifest, "https://www.renpy.org/extensions/vscode/upgrade_extension.py", renpy=True)
jump post_extension_check
label editor_preference:
call screen editor
jump preferences
default persistent.ignore_obsolete_editor = set()
# This label is called when the launcher starts, to check if the editor
# is obsolete, and let them change it.
label editor_check:
if persistent.editor in persistent.ignore_obsolete_editor:
jump post_editor_check
if persistent.editor == "Atom":
$ result = interface.choice(
_("The Atom text editor is no longer supported by its developers. We suggest switching to Visual Studio Code or another editor."), [
( "select", _("Select editor now.")),
( "ignore", _("Ignore until next launch.")),
( "block", _("Do not ask again.")),
], "select")
else:
jump post_atom_check
if result == "select":
$ renpy.pop_call()
jump editor_preference
elif result == "block":
$ persistent.ignore_obsolete_editor.add(persistent.editor)
label post_atom_check:
if "luquedaniel.languague-renpy" in persistent.ignore_obsolete_editor:
jump post_extension_check
if persistent.editor != "Visual Studio Code":
jump post_extension_check
if editor.check_old_vscode_extension():
$ result = interface.choice(
_("You are using an old version of the Ren'Py Language support for Visual Studio Code. Would you like to upgrade?"), [
( "upgrade", _("Upgrade.")),
( "ignore", _("Ignore until next launch.")),
( "block", _("Do not ask again.")),
], "select")
if result == "upgrade":
jump upgrade_vscode_extension
elif result == "block":
$ persistent.ignore_obsolete_editor.add("luquedaniel.languague-renpy")
label post_extension_check:
jump post_editor_check
+23 -19
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -46,7 +46,7 @@ screen front_page:
right_margin 2
top_padding 20
bottom_padding 26
bottom_padding 13
side "t c b":
@@ -157,13 +157,11 @@ screen front_page_project:
label _("Open Directory") style "l_label_small"
frame style "l_indent":
has vbox
has grid 2 max(5, (len(p.get_renpy_launcher()["open_directory"]) + 1) // 2):
transpose True xfill True
textbutton "game" action OpenDirectory(os.path.join(p.path, "game"), absolute=True)
textbutton "base" action OpenDirectory(os.path.join(p.path, "."), absolute=True)
textbutton "images" action OpenDirectory(os.path.join(p.path, "game/images"), absolute=True)
textbutton "audio" action OpenDirectory(os.path.join(p.path, "game/audio"), absolute=True)
textbutton "gui" action OpenDirectory(os.path.join(p.path, "game/gui"), absolute=True)
for button_name, path in p.get_renpy_launcher()["open_directory"].items():
textbutton button_name action OpenDirectory(os.path.join(p.path, path), absolute=True)
vbox:
if persistent.show_edit_funcs:
@@ -173,10 +171,8 @@ screen front_page_project:
frame style "l_indent":
has vbox
textbutton "script.rpy" action editor.Edit("game/script.rpy", check=True)
textbutton "options.rpy" action editor.Edit("game/options.rpy", check=True)
textbutton "gui.rpy" action editor.Edit("game/gui.rpy", check=True)
textbutton "screens.rpy" action editor.Edit("game/screens.rpy", check=True)
for button_name, path in p.get_renpy_launcher()["edit_file"].items():
textbutton button_name action editor.Edit(path, check=True)
if editor.CanEditProject():
textbutton _("Open project") action editor.EditProject()
@@ -195,7 +191,7 @@ screen front_page_project:
has vbox
textbutton _("Navigate Script") action Jump("navigation")
textbutton _("Check Script (Lint)") action Jump("lint")
textbutton _("Check Script (Lint)") action Call("lint")
if project.current.exists("game/gui.rpy"):
textbutton _("Change/Update GUI") action Jump("change_gui")
@@ -216,7 +212,7 @@ screen front_page_project:
textbutton _("Android") action Jump("android")
textbutton _("iOS") action Jump("ios")
textbutton _("Web") + " " + _("(Beta)") action Jump("web")
textbutton _("Web") action Jump("web")
textbutton _("Generate Translations") action Jump("translate")
textbutton _("Extract Dialogue") action Jump("extract_dialogue")
@@ -227,13 +223,12 @@ label start:
show screen bottom_info
$ dmgcheck()
jump expression renpy.session.pop("launcher_start_label", "front_page")
jump expression renpy.session.pop("launcher_start_label", "before_front_page")
default persistent.has_chosen_language = False
default persistent.has_update = False
label front_page:
label before_front_page:
if (not persistent.has_chosen_language) or ("RENPY_CHOOSE_LANGUAGE" in os.environ):
@@ -244,6 +239,11 @@ label front_page:
$ persistent.has_chosen_language = True
call editor_check
label post_editor_check:
label front_page:
if persistent.daily_update_check and ((not persistent.last_update_check) or (datetime.date.today() > persistent.last_update_check)):
python hide:
persistent.last_update_check = datetime.date.today()
@@ -259,14 +259,18 @@ label lint:
interface.processing(_("Checking script for potential problems..."))
lint_fn = project.current.temp_filename("lint.txt")
project.current.launch([ 'lint', lint_fn ], wait=True)
persistent.lint_options.discard("--orphan-tl") # compat
persistent.lint_options.discard("--builtins-parameters") # compat
persistent.lint_options.discard("--words-char-count") # compat
project.current.launch([ 'lint', lint_fn, ] + list(persistent.lint_options), wait=True)
e = renpy.editor.editor
e.begin(True)
e.open(lint_fn)
e.end()
jump front_page
return
label rmpersistent:
+63 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -22,6 +22,19 @@
define gui.project_system_font = None
define gui.asian = False
# This is set in new_project before new_template_project is called,
# and provides the full path to the template project.
default gui_template_path = None
define LIBS_TXT = _("""\
The game/libs/ directory is meant for third-party libraries that ask to be
put in game/libs.
When this file (game/libs/libs.txt) is present, Ren'Py will load all files
in libs before any other file in game/, and will not consider directory names
when loading these files.
""")
init -1 python:
import gui7
@@ -448,3 +461,52 @@ label gui_generate_images:
project.current.launch([ 'gui_images' ], wait=True)
jump front_page
label new_template_project:
# Unused in new_template_project.
$ gui_size = (1920, 1080)
$ gui_color = (DARK_COLORS[0], "#000000", False)
python hide:
width, height = gui_size
accent, boring, light = gui_color
prefix = os.path.join(project_dir, "game")
template = os.path.join(gui_template_path, "game")
# Most of this isn't actually used.
p = gui7.GuiParameters(
prefix,
template,
width,
height,
accent,
boring,
light,
_preferences.language,
False,
True,
True,
project_name,
)
interface.processing(_("Creating the new project..."))
with interface.error_handling(_("creating a new project")):
gui7.generate_minimal(p)
# Activate the project.
with interface.error_handling(_("activating the new project")):
project.manager.scan()
project.Select(project.manager.get(project_name))()
call update_renpy_strings_common
python hide:
if gui.project_system_font:
with open(os.path.join(project.current.gamedir, "tl/None/common.rpym"), "ab") as f:
f.write("define gui.system_font = {!r}\r\n".format(gui.project_system_font).encode("utf-8"))
jump front_page
+62 -9
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -25,8 +25,22 @@ from gui7.parameters import GuiParameters
import renpy.arguments
import os
import shutil
def finish(p):
for dn in [ "images", "audio", "libs" ]:
fulldn = os.path.join(p.prefix, dn)
if not os.path.exists(fulldn):
os.mkdir(fulldn)
with open(os.path.join(p.prefix, "libs", "libs.txt"), "w") as f:
f.write(renpy.translation.translate_string(renpy.store.LIBS_TXT, language=p.language))
def generate_gui(p):
ImageGenerator(p).generate_all()
@@ -36,12 +50,40 @@ def generate_gui(p):
CodeGenerator(p).copy_script("script.rpy")
CodeGenerator(p).copy_files()
for dn in [ "images", "audio" ]:
finish(p)
fulldn = os.path.join(p.prefix, dn)
if not os.path.exists(fulldn):
os.mkdir(fulldn)
def generate_minimal(p):
# Copy the template over.
os.makedirs(os.path.dirname(p.prefix), 0o777)
shutil.copytree(p.template, p.prefix)
def delete(fn):
fn = os.path.join(p.prefix, fn)
if os.path.isdir(fn):
shutil.rmtree(fn)
elif os.path.exists(fn):
os.unlink(fn)
# Prune directories.
delete("cache")
delete("saves")
delete("tl")
# Prune files to be regenerated.
delete("gui.rpy")
delete("screens.rpy")
delete("options.rpy")
# Generate files.
CodeGenerator(p).generate_code("gui.rpy")
CodeGenerator(p).generate_code("screens.rpy")
CodeGenerator(p).generate_code("options.rpy")
CodeGenerator(p).copy_files()
finish(p)
def generate_gui_command():
@@ -60,7 +102,9 @@ def generate_gui_command():
ap.add_argument("--start", default=False, action="store_true", help="Starts a new project, replacing images and code.")
ap.add_argument("--replace-images", default=False, action="store_true", help="True if existing images should be overwritten.")
ap.add_argument("--replace-code", default=False, action="store_true", help="True if an existing gui.rpy file should be overwritten.")
ap.add_argument("--update-code", default=False, action="store_true", help="True if an existing gui.rpy file should be update.")
ap.add_argument("--update-code", default=False, action="store_true", help="True if an existing gui.rpy file should be updated.")
ap.add_argument("--minimal", default=False, action="store_true", help="Only update option.rpy and translations.")
args = ap.parse_args()
@@ -69,10 +113,16 @@ def generate_gui_command():
args.replace_code = True
args.update_code = True
if args.minimal:
args.replace_code = True
args.update_code = True
prefix = os.path.join(args.target, "game")
if not os.path.isdir(prefix):
ap.error("{} does not appear to be a Ren'Py game.".format(prefix))
if os.path.exists(args.target):
if not os.path.isdir(prefix):
ap.error("{} does not appear to be a Ren'Py game.".format(prefix))
template = os.path.join(args.template, "game")
@@ -94,6 +144,9 @@ def generate_gui_command():
os.path.basename(args.target),
)
generate_gui(p)
if args.minimal:
generate_minimal(p)
else:
generate_gui(p)
renpy.arguments.register_command("generate_gui", generate_gui_command)
+16 -7
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -121,8 +121,13 @@ class CodeGenerator(object):
else:
template = os.path.join(self.p.template, filename)
with codecs.open(template, "r", "utf-8") as f:
self.lines = [ i.rstrip().replace(u"\ufeff", "") for i in f ]
if not os.path.exists(template):
return False
else:
with codecs.open(template, "r", "utf-8") as f:
self.lines = [ i.rstrip().replace(u"\ufeff", "") for i in f ]
return True
def remove_scale(self):
@@ -167,7 +172,7 @@ class CodeGenerator(object):
for l in self.lines:
m = re.match('^(\s*)define (.*?) =', l)
m = re.match(r'^(\s*)define (.*?) =', l)
if m:
indent = m.group(1)
@@ -386,7 +391,9 @@ class CodeGenerator(object):
if not os.path.exists(src):
src = os.path.join(self.p.template, name)
self.load_template(src)
if not self.load_template(src):
return
self.remove_scale()
self.write_target(dst)
@@ -401,7 +408,8 @@ class CodeGenerator(object):
if not self.p.update_code:
return
self.load_template(fn)
if not self.load_template(fn):
return
if defines:
self.update_gui_defines()
@@ -422,7 +430,8 @@ class CodeGenerator(object):
if os.path.exists(target):
return
self.load_template(fn)
if not self.load_template(fn):
return
self.translate_strings()
self.translate_comments()
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
+6 -2
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -61,7 +61,11 @@ class GuiParameters(object):
self.muted_color = self.accent_color.shade(.4)
self.hover_muted_color = self.accent_color.shade(.6)
self.menu_color = self.accent_color.replace_hsv_saturation(.25).replace_value(.5)
if light:
self.menu_color = self.accent_color.replace_hsv_saturation(.25).replace_value(.75)
else:
self.menu_color = self.accent_color.replace_hsv_saturation(.25).replace_value(.25)
self.title_color = self.accent_color.replace_hsv_saturation(.5).replace_value(1.0)
if light:
Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

+4 -8
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -81,11 +81,7 @@ init python:
label install_live2d:
python hide:
if PY2:
_prefix = r"lib/py2-"
else:
_prefix = r"lib/py3-"
_prefix = r"lib/py3-"
patterns = [
(r".*/Core/dll/linux/x86_64/(libLive2DCubismCore.so)", _prefix + r"linux-x86_64/\1"),
@@ -98,7 +94,7 @@ label install_live2d:
(r".*/Core/dll/android/(x86_64/libLive2DCubismCore.so)", r"rapt/prototype/renpyandroid/src/main/jniLibs/\1"),
]
install_from_zip("Live2D Cubism SDK for Native", "CubismSdkForNative-4-*.zip", patterns)
install_from_zip("Live2D Cubism SDK for Native", "CubismSdkForNative-[45]-*.zip", patterns)
jump front_page
@@ -179,7 +175,7 @@ screen install_live2d():
style "l_indent"
has vbox
text _("The {a=https://www.live2d.com/en/download/cubism-sdk/download-native/}Cubism SDK for Native{/a} adds support for displaying Live2D models. Place CubismSdkForNative-4-{i}version{/i}.zip in the Ren'Py SDK directory, and then click Install. Distributing a game with Live2D requires you to accept a license from Live2D, Inc.")
text _("The {a=https://www.live2d.com/en/download/cubism-sdk/download-native/}Cubism SDK for Native{/a} adds support for displaying Live2D models. Place CubismSdkForNative-{i}version{/i}.zip in the Ren'Py SDK directory, and then click Install. Distributing a game with Live2D requires you to accept a license from Live2D, Inc.")
add SPACER
+8 -4
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -169,7 +169,7 @@ def _check_hash(filename, hashj):
download_file = ""
download_url = ""
def download(url, filename, hash=None):
def download(url, filename, hash=None, headers=None, requests_kwargs={}):
"""
Downloads `url` to `filename`, a tempfile.
"""
@@ -188,9 +188,13 @@ def download(url, filename, hash=None):
progress_time = time.time()
all_headers = {"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36 renpy/8'}
if headers:
all_headers.update(headers)
try:
response = requests.get(url, stream=True)
response = requests.get(url, stream=True, proxies=renpy.exports.proxies, timeout=15, headers=all_headers, **requests_kwargs)
response.raise_for_status()
total_size = int(response.headers.get('content-length', 1))
@@ -459,7 +463,7 @@ def manifest(url, renpy=False, insecure=False):
with open(_path("temp:manifest.py.sig"), "rb") as f:
sig = f.read()
key = ecdsa.VerifyingKey.from_pem(_renpy.exports.file("renpy_ecdsa_public.pem").read())
key = ecdsa.VerifyingKey.from_pem(_renpy.exports.open_file("renpy_ecdsa_public.pem").read())
if not key.verify(sig, manifest):
error(_("The manifest signature is not valid."))
+31 -27
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -22,48 +22,49 @@
################################################################################
# Interface actions.
init python in interface:
from store import OpenURL, config, Return, _preferences
from store import OpenURL, config, Return, _preferences, persistent
import store
import os.path
import contextlib
RENPY_URL = "http://www.renpy.org"
DOC_PATH = os.path.join(config.renpy_base, "doc/index.html")
DOC_PATH = os.path.join(config.renpy_base, "doc/")
DOC_URL = "http://www.renpy.org/doc/html/"
DOC_LOCAL_URL = "file:///" + DOC_PATH
LICENSE_PATH = os.path.join(config.renpy_base, "doc/license.html")
LICENSE_URL = "http://www.renpy.org/doc/html/license.html"
# If true, the launcher should not link back to renpy.org.
NO_LAUNCHER_LINKS = os.path.exists(os.path.join(config.renpy_base, "no_launcher_links.txt"))
if os.path.exists(DOC_PATH):
DOC_LOCAL_URL = "file:///" + DOC_PATH
else:
DOC_LOCAL_URL = None
if os.path.exists(LICENSE_PATH):
LICENSE_LOCAL_URL = "file:///" + LICENSE_PATH
else:
LICENSE_LOCAL_URL = None
local_doc_exists = os.path.exists(DOC_PATH)
def OpenDocumentation():
def get_doc_url(page):
"""
Returns the URL to the documentation page.
"""
if local_doc_exists and (NO_LAUNCHER_LINKS or not persistent.use_web_doc):
from urllib.parse import urljoin
from urllib.request import pathname2url
return urljoin('file:', pathname2url(DOC_PATH + page))
else:
return DOC_URL + page
def OpenDocumentation(page="index.html"):
"""
An action that opens the documentation.
"""
if DOC_LOCAL_URL is not None:
return OpenURL(DOC_LOCAL_URL)
else:
return OpenURL(DOC_URL)
return OpenURL(get_doc_url(page))
def OpenLicense():
"""
An action that opens the license.
"""
if LICENSE_LOCAL_URL is not None:
return OpenURL(LICENSE_LOCAL_URL)
else:
return OpenURL(LICENSE_URL)
return OpenDocumentation("license.html")
def get_sponsor_url():
"""
@@ -120,7 +121,10 @@ screen bottom_info:
hbox:
spacing INDENT
textbutton _("Documentation") style "l_link" action interface.OpenDocumentation()
textbutton _("Ren'Py Website") style "l_link" action OpenURL(interface.RENPY_URL)
if not interface.NO_LAUNCHER_LINKS:
textbutton _("Ren'Py Website") style "l_link" action OpenURL(interface.RENPY_URL)
textbutton _("[interface.version]") style "l_link" action Jump("about")
hbox:
@@ -136,7 +140,7 @@ screen bottom_info:
textbutton _("preferences") style "l_link" action Jump("preferences")
textbutton _("quit") style "l_link" action Quit(confirm=False)
if persistent.sponsor_message:
if persistent.sponsor_message and not interface.NO_LAUNCHER_LINKS:
textbutton _("Ren'Py Sponsor Information"):
style "l_link"
@@ -348,7 +352,7 @@ init python in interface:
def error(message, submessage=None, label="front_page", **kwargs):
"""
Indicates to the user that an error has occured.
Indicates to the user that an error has occurred.
`message`
The message to display.
@@ -404,7 +408,7 @@ init python in interface:
except Exception as e:
renpy.renpy.error.report_exception(e, editor=False)
error(_("While [what!qt], an error occured:"),
error(_("While [what!qt], an error occurred:"),
_("[exception!q]"),
what=what,
label=label,
@@ -492,7 +496,7 @@ init python in interface:
The amount of time to pause for after showing the message.
"""
common(title, store.INTERACTION_COLOR, message, submessage=None, pause=pause, show_screen=True, **kwargs)
common(title, store.INTERACTION_COLOR, message, submessage=submessage, pause=pause, show_screen=True, **kwargs)
renpy.pause(pause)
def processing(message, submessage=None, complete=None, total=None, **kwargs):
+8 -8
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -59,6 +59,7 @@ init python:
if RENIOS_PATH:
import renios.create
import renios.image
import renios.interface
def IOSState():
if not RENIOS_PATH:
@@ -123,17 +124,19 @@ init python:
return os.path.join(persistent.xcode_projects_directory, xcode_name(p.name))
def ios_create(p=None, gui=True, target=None):
project.current.update_dump(force=True, gui=gui)
if p is None:
p = project.current
p.update_dump(force=True, gui=gui)
name = project.current.dump.get("name", None)
version = project.current.dump.get("version", None)
name = p.dump.get("name", None)
version = p.dump.get("version", None)
dest = xcode_project(p, target)
if gui:
iface = MobileInterface("ios")
else:
iface = rapt.interface.Interface()
iface = renios.interface.Interface()
if os.path.exists(dest):
if not iface.yesno(_("The Xcode project already exists. Would you like to rename the old project, and replace it with a new one?")):
@@ -161,9 +164,6 @@ init python:
print("Eliminating __pycache__...")
if PY2:
return
import pathlib
import sys
+4 -4
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -50,9 +50,9 @@ init python:
pass
with interface.error_handling(_("Downloading the itch.io butler.")):
url = "https://broth.itch.ovh/butler/{}/LATEST/archive/default".format(platform)
url = "https://broth.itch.zone/butler/{}/LATEST/archive/default".format(platform)
response = requests.get(url, headers={'User-Agent' : "Renpy"})
response = requests.get(url, headers={'User-Agent' : "Renpy"}, proxies=renpy.proxies)
with open(zip, "wb") as f:
f.write(response.content)
@@ -98,7 +98,7 @@ label itch:
for fn in os.listdir(destination):
for pattern, channel in reversed(build['itch_channels']):
for pattern, channel in reversed(build['itch_channels'].items()):
if fnmatch.fnmatch(fn, pattern):
break
else:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
+3 -3
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -32,7 +32,7 @@ init -1 python:
if not renpy.loadable(fn1):
return True
hash1 = renpy.file(fn1).read().decode("utf-8")
hash1 = renpy.open_file(fn1, encoding="utf-8").read()
if not os.path.exists(fn2):
return False
@@ -91,7 +91,7 @@ init -1 python:
def log(self, msg):
with open(self.filename, "a") as f:
f.write("\n")
f.write(unicode(msg))
f.write(msg)
f.write("\n")
def info(self, prompt):
+14 -2
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -19,6 +19,9 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# Should translation files be shown in the launcher file navigation?
default persistent.show_translation_files = True
init python in navigation:
import store.interface as interface
import store.project as project
@@ -110,6 +113,9 @@ init python in navigation:
if shortfn.startswith("game/"):
shortfn = fn[5:]
if shortfn.startswith("tl/") and not persistent.show_translation_files:
continue
rv.append((shortfn, fn, None))
rv.sort()
@@ -155,6 +161,8 @@ init python in navigation:
screen navigation:
$ todo_count = len(project.current.dump.get("location", {}).get("todo", []))
frame:
style_group "l"
style "l_root"
@@ -201,7 +209,7 @@ screen navigation:
textbutton _("transforms") action navigation.ChangeKind("transform")
textbutton _("screens") action navigation.ChangeKind("screen")
textbutton _("callables") action navigation.ChangeKind("callable")
textbutton _("TODOs") action navigation.ChangeKind("todo")
textbutton (__("TODOs") + " (" + str(todo_count) + ")") action navigation.ChangeKind("todo")
add SPACER
add SEPARATOR
@@ -218,6 +226,10 @@ screen navigation:
vbox:
style_group "l_navigation"
if persistent.navigation == "file":
textbutton _("Show translation files") style "l_checkbox" action [ ToggleField(persistent, "show_translation_files"), Jump("navigation_loop") ]
add SPACER
for group_name, group in groups:
if group_name is not None:
+13 -125
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -25,34 +25,6 @@ init python:
import time
import re
def check_language_support():
language = _preferences.language
new = False
legacy = False
# Check for a translation of the words "New GUI Interface".
if (language is None) or (__("New GUI Interface") != "New GUI Interface"):
new = True
try:
if (language is None) or os.path.exists(os.path.join(config.renpy_base, "templates", language)):
legacy = True
except Exception:
pass
if new and legacy:
store.language_support = _("Both interfaces have been translated to your language.")
elif new:
store.language_support = _("Only the new GUI has been translated to your language.")
elif legacy:
store.language_support = _("Only the legacy theme interface has been translated to your language.")
else:
store.language_support = _("Neither interface has been translated to your language.")
label new_project:
@@ -63,22 +35,21 @@ label new_project:
$ interface.error(_("The projects directory could not be set. Giving up."))
python:
if persistent.legacy:
new_project_language = __("{#language name and font}")
gui_kind = "new_gui_project"
check_language_support()
# When translating this, feel free to replace [new_project_language] with the translation of your language.
interface.info(_("You will be creating an [new_project_language]{#this substitution may be localized} language project. Change the launcher language in preferences to create a project in another language."), cancel=Jump("front_page"))
gui_kind = interface.choice(
_("Which interface would you like to use? The new GUI has a modern look, supports wide screens and mobile devices, and is easier to customize. Legacy themes might be necessary to work with older example code.\n\n[language_support!t]\n\nIf in doubt, choose the new GUI, then click Continue on the bottom-right."),
[ ( 'new_gui_project', _("New GUI Interface") ), ( 'new_theme_project', _("Legacy Theme Interface")) ],
"new_gui_project",
python:
if project.manager.templates:
gui_kind, gui_template_path = interface.choice(
_("Please select a template project to use."),
[ ( ("new_gui_project", None), _("Do not use a template project.") ) ] +
[ ( ("new_template_project", p.path ), p.name) for p in project.manager.templates ],
("new_gui_project", None),
cancel=Jump("front_page"),
)
else:
new_project_language = __("{#language name and font}")
gui_kind = "new_gui_project"
# When translating this, feel free to replace [new_project_language] with the translation of your language.
interface.info(_("You will be creating an [new_project_language]{#this substitution may be localized} language project. Change the launcher language in preferences to create a project in another language."), cancel=Jump("front_page"))
)
python:
project_name = ""
@@ -108,86 +79,3 @@ label new_project:
break
jump expression gui_kind
screen select_template:
default result = project.manager.get("english")
frame:
style_group "l"
style "l_root"
window:
has vbox
label _("Choose Project Template")
hbox:
frame:
style "l_indent"
xmaximum ONETHIRD
viewport:
scrollbars "vertical"
vbox:
for p in project.manager.templates:
textbutton "[p.name!q]" action SetScreenVariable("result", p) style "l_list"
frame:
style "l_indent"
xmaximum TWOTHIRDS
text _("Please select a template to use for your new project. The template sets the default font and the user interface language. If your language is not supported, choose 'english'.")
textbutton _("Return") action Jump("front_page") style "l_left_button"
textbutton _("Continue") action Return(result) style "l_right_button"
label new_theme_project:
python hide:
if len(project.manager.templates) == 1:
template = project.manager.templates[0]
else:
template = renpy.call_screen("select_template")
template_path = template.path
with interface.error_handling(_("creating a new project")):
shutil.copytree(template_path, project_dir, symlinks=False)
# Delete the tmp directory, if it exists.
if os.path.isdir(os.path.join(project_dir, "tmp")):
shutil.rmtree(os.path.join(project_dir, "tmp"))
# Delete project.json, which must exist.
os.unlink(os.path.join(project_dir, "project.json"))
# Change the save directory in options.rpy
fn = os.path.join(project_dir, "game/options.rpy")
with open(fn, "rb") as f:
options = f.read().decode("utf-8")
options = options.replace("PROJECT_NAME", project_name)
options = options.replace("UNIQUE", str(int(time.time())))
with open(fn, "wb") as f:
f.write(options.encode("utf-8"))
font = template.data.get("font", None)
if font is not None:
src = os.path.join(config.gamedir, "fonts", font)
dst = os.path.join(project_dir, "game", "tl", "None", font)
shutil.copy(src, dst)
# Activate the project.
with interface.error_handling(_("activating the new project")):
project.manager.scan()
project.Select(project.manager.get(project_name))()
call choose_theme_callable
jump front_page
+40 -33
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -184,9 +184,17 @@ init -1 python hide:
#####################
# More customizations can go here.
config.sound = False
config.has_sound = False
config.has_music = False
config.has_voice = False
config.force_sound = False
config.quit_action = Quit(confirm=False)
config.window_icon = "images/logo.png"
if renpy.macintosh:
config.window_icon = "images/window-icon-mac.png"
else:
config.window_icon = "images/window-icon.png"
config.has_autosave = False
config.log_enable = False
config.mouse_hide_time = None
@@ -242,10 +250,12 @@ init python:
# allows the updater to run.
build.include_update = True
# Build both kinds of updates.
build.update_formats = [ "zsync", "rpu" ]
# Allow empty directories, so we can distribute the images directory.
build.exclude_empty_directories = False
# Mac signing options.
import os
build.mac_identity = os.environ.get("RENPY_MAC_IDENTITY", None)
@@ -291,6 +301,8 @@ init python:
build.classify_renpy("**.new", None)
build.classify_renpy("**.bak", None)
build.classify_renpy("**.keystore", None)
build.classify_renpy("**/log.txt", None)
build.classify_renpy("**/traceback.txt", None)
build.classify_renpy("**/errors.txt", None)
@@ -310,7 +322,7 @@ init python:
"""
if py is True:
py = 'pyo' if PY2 else 'pycache'
py = 'pycache'
if py == 'pycache':
build.classify_renpy(pattern + "/**__pycache__/", binary)
@@ -334,18 +346,20 @@ init python:
build.classify_renpy(pattern + "/**.pyo", None)
build.classify_renpy(pattern + "/**.pyi", None)
build.classify_renpy(pattern + "/**.pyx", "source_only")
build.classify_renpy(pattern + "/**.pxd", "source_only")
build.classify_renpy(pattern + "/**.rpyc", binary)
build.classify_renpy(pattern + "/**.rpymc", binary)
build.classify_renpy(pattern + "/**/" + renpy.script.BYTECODE_FILE, binary)
build.classify_renpy(pattern + "/**/cache/bytecode-311.rpyb", "web")
build.classify_renpy(pattern + "/**/cache/bytecode-*.rpyb", None)
build.classify_renpy(pattern + "/**/cache/*", binary)
build.classify_renpy(pattern + "/**", source)
build.classify_renpy("renpy/gl/", None)
build.classify_renpy("renpy.py", "binary")
source_and_binary("renpy")
@@ -381,38 +395,31 @@ init python:
build.classify_renpy("sphinx/source/inc/", None)
build.classify_renpy("sphinx/source/**", "source_only")
# module.
build.classify_renpy("module/", "source")
build.classify_renpy("module/*.c", "source")
build.classify_renpy("module/gen/", None)
build.classify_renpy("module/*.h", "source")
build.classify_renpy("module/*.py*", "source")
build.classify_renpy("module/include/", "source")
build.classify_renpy("module/include/*.pxd", "source")
build.classify_renpy("module/include/*.pxi", "source")
build.classify_renpy("module/pysdlsound/", "source")
build.classify_renpy("module/pysdlsound/*.py", "source")
build.classify_renpy("module/pysdlsound/*.pyx", "source")
build.classify_renpy("module/fribidi-src/**", "source")
build.classify_renpy("module/tinyfiledialogs/**", "source")
# Build System.
build.classify_renpy("setup.py", "source_only")
build.classify_renpy("src/**", "source_only")
build.classify_renpy("scripts/", "source_only")
build.classify_renpy("scripts/setuplib.py", "source_only")
build.classify_renpy("scripts/generate_styles.py", "source_only")
# all-platforms binary.
build.classify_renpy("lib/**/libpython{}.{}.dll".format(sys.version_info.major, sys.version_info.minor), "binary")
build.classify_renpy("lib/**/libpython*.dll", None)
build.classify_renpy("lib/**/*steam_api*", "steam")
build.classify_renpy("lib/**/*Live2D*", None)
if PY2:
build.classify_renpy("lib/py2-linux-armv7l/**", "linux_arm")
build.classify_renpy("lib/py2-linux-aarch64/**", "linux_arm")
source_and_binary("lib/py2-**", "binary", "binary")
source_and_binary("lib/python2**", "binary", "binary")
build.classify_renpy("renpy2.sh", "binary")
else:
build.classify_renpy("lib/py3-linux-armv7l/**", "linux_arm")
build.classify_renpy("lib/py3-linux-aarch64/**", "linux_arm")
source_and_binary("lib/py3-**", "binary", "binary")
source_and_binary("lib/python3**", "binary", "binary", py='pyc')
build.classify_renpy("renpy3.sh", "binary")
build.classify_renpy("lib/py3-linux-armv7l", None)
build.classify_renpy("lib/py3-linux-aarch64/**", "linux_arm")
source_and_binary("lib/py3-**", "binary", "binary")
libpython = "lib/python{}.{}".format(sys.version_info.major, sys.version_info.minor)
source_and_binary(libpython, "binary", "binary", py='pyc')
build.classify_renpy("lib/python**", None)
build.classify_renpy("lib/py2-**", None)
build.classify_renpy("renpy3.sh", "binary")
build.classify_renpy("lib/", "binary")
+71 -106
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -33,108 +33,22 @@ init python in distribute:
from zipfile import crc32
# Since the long type doesn't exist on py3, define it here
if not PY2:
long = int
long = int
zlib.Z_DEFAULT_COMPRESSION = 5
if PY2:
class ZipFile(zipfile.ZipFile):
class ZipFile(zipfile.ZipFile):
def write_with_info(self, zinfo, filename):
def write_with_info(self, zinfo, filename):
"""Put the bytes from filename into the archive under the name
arcname."""
if not self.fp:
raise RuntimeError(
"Attempt to write to ZIP archive that was already closed")
if zinfo.filename.endswith("/"):
data = b''
else:
with open(filename, "rb") as f:
data = f.read()
st = os.stat(filename)
isdir = stat.S_ISDIR(st.st_mode)
zinfo.file_size = st.st_size
zinfo.flag_bits = 0x00
zinfo.header_offset = self.fp.tell() # Start of header bytes
self._writecheck(zinfo)
self._didModify = True
if isdir:
zinfo.file_size = 0
zinfo.compress_size = 0
zinfo.CRC = 0
self.filelist.append(zinfo)
self.NameToInfo[zinfo.filename] = zinfo
self.fp.write(zinfo.FileHeader())
return
with open(filename, "rb") as fp:
# Must overwrite CRC and sizes with correct data later
zinfo.CRC = CRC = 0
zinfo.compress_size = compress_size = 0
file_size = 0
zip64 = self._allowZip64 and \
zinfo.file_size * 1.05 > zipfile.ZIP64_LIMIT
self.fp.write(zinfo.FileHeader(zip64))
if zinfo.compress_type == zipfile.ZIP_DEFLATED:
cmpr = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION,
zlib.DEFLATED, -15)
else:
cmpr = None
while 1:
buf = fp.read(1024 * 1024)
if not buf:
break
file_size = file_size + len(buf)
CRC = crc32(buf, CRC) & 0xffffffff
if cmpr:
buf = cmpr.compress(buf)
compress_size = compress_size + len(buf)
self.fp.write(buf)
if cmpr:
buf = cmpr.flush()
compress_size = compress_size + len(buf)
self.fp.write(buf)
zinfo.compress_size = compress_size
else:
zinfo.compress_size = file_size
zinfo.CRC = CRC
zinfo.file_size = file_size
if not zip64 and self._allowZip64:
if file_size > zipfile.ZIP64_LIMIT:
raise RuntimeError('File size has increased during compressing')
if compress_size > zipfile.ZIP64_LIMIT:
raise RuntimeError('Compressed size larger than uncompressed size')
# Seek backwards and write CRC and file sizes
position = self.fp.tell() # Preserve current position in file
self.fp.seek(zinfo.header_offset, 0)
self.fp.write(zinfo.FileHeader(zip64))
self.fp.seek(position, 0)
self.filelist.append(zinfo)
self.NameToInfo[zinfo.filename] = zinfo
else:
class ZipFile(zipfile.ZipFile):
def write_with_info(self, zinfo, filename):
if zinfo.filename.endswith("/"):
data = b''
else:
with open(filename, "rb") as f:
data = f.read()
self.writestr(zinfo, data)
self.writestr(zinfo, data)
class ZipPackage(object):
@@ -195,7 +109,7 @@ init python in distribute:
self.zipfile.write_with_info(zi, path)
def close(self):
def close(self, progress=None):
self.zipfile.close()
@@ -207,7 +121,7 @@ init python in distribute:
If true, times will be forced to the epoch.
"""
self.tarfile = tarfile.open(filename, mode)
self.tarfile = tarfile.open(filename, mode, format=tarfile.PAX_FORMAT)
self.tarfile.dereference = True
self.notime = notime
@@ -243,9 +157,10 @@ init python in distribute:
def add_directory(self, name, path):
self.add_file(name, path, True)
def close(self):
def close(self, progress=None):
self.tarfile.close()
class UpdatePackage(TarPackage):
def __init__(self, filename, basename, destination):
@@ -255,7 +170,7 @@ init python in distribute:
TarPackage.__init__(self, filename, "w", notime=True)
def close(self):
def close(self, progress=None):
TarPackage.close(self)
cmd = [
@@ -283,7 +198,6 @@ init python in distribute:
sums.write(struct.pack("<I", zlib.adler32(data) & 0xffffffff))
class DirectoryPackage(object):
def mkdir(self, path):
@@ -315,9 +229,10 @@ init python in distribute:
fn = os.path.join(self.path, name)
self.mkdir(fn)
def close(self):
def close(self, progress=None):
return
class ExternalZipPackage(object):
def __init__(self, path):
@@ -331,7 +246,7 @@ init python in distribute:
def add_directory(self, name, path):
self.dp.add_directory(name, path)
def close(self):
def close(self, progress=None):
self.dp.close()
if os.path.exists(self.path):
@@ -350,17 +265,65 @@ init python in distribute:
shutil.rmtree(self.directory)
class DMGPackage(DirectoryPackage):
def __init__(self, path, make_dmg):
self.make_dmg = make_dmg
DirectoryPackage.__init__(self, path)
def close(self):
def close(self, progress=None):
DirectoryPackage.close(self)
self.make_dmg()
class RPUPackage(object):
generator = None
def __init__(self, directory, variant):
import renpy.update.common
self.directory = directory + "/rpu"
self.variant = variant
self.file_list = renpy.update.common.FileList()
if not os.path.exists(self.directory):
os.mkdir(self.directory)
def add_file(self, name, path, xbit):
self.file_list.add_file(name, path, xbit)
def add_directory(self, name, _path):
self.file_list.add_directory(name)
def close(self, progress=None):
import renpy.update.generate
if RPUPackage.generator is None:
RPUPackage.generator = renpy.update.generate.BlockGenerator(self.directory)
RPUPackage.generator.generate(self.variant, self.file_list, progress)
@staticmethod
def reset():
RPUPackage.generator = None
class NullPackage(object):
"""
A package format that doesn't create an output file,
only updates.
"""
def add_file(self, name, path, xbit):
return
def add_directory(self, name, _path):
return
def close(self, progress=None):
return
parallel_threads = [ ]
class ParallelPackage(object):
@@ -378,7 +341,7 @@ init python in distribute:
def add_directory(self, name, path):
self.worklist.append((True, name, path, True))
def close(self):
def close(self, progress=None):
t = threading.Thread(target=self.run)
t.start()
@@ -421,3 +384,5 @@ init python in distribute:
for i in parallel_threads:
if i.done:
i.done()
parallel_threads.clear()
+109 -28
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -19,15 +19,14 @@
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
default persistent.show_edit_funcs = True
default persistent.windows_console = False
default persistent.lint_options = set()
default persistent.use_web_doc = False
init python:
from math import ceil
if persistent.show_edit_funcs is None:
persistent.show_edit_funcs = True
if persistent.windows_console is None:
persistent.windows_console = False
def scan_translations(piglatin=True):
languages = renpy.known_languages()
@@ -48,14 +47,30 @@ init python:
bound = ceil(len(rv)/3.)
return (rv[:bound], rv[bound:2*bound], rv[2*bound:])
show_legacy = os.path.exists(os.path.join(config.renpy_base, "templates", "english", "game", "script.rpy"))
class RestartAtPreferences(Action):
def __call__(self):
renpy.session["launcher_start_label"] = "preferences"
renpy.utter_restart()
default persistent.legacy = False
class EnsureProjectsTxt(Action):
"""
Ensures the projects.txt file exists before it's opened.
"""
def __call__(self):
fn = os.path.join(project.manager.projects_directory, "projects.txt")
if os.path.exists(fn):
return
with open(fn, "w") as f:
f.write("""\
# This file can be used to add projects not in the projects directory
# by listing the full path to each project, one per line.
""")
default persistent.force_new_tutorial = False
default persistent.sponsor_message = True
default persistent.daily_update_check = True
@@ -64,6 +79,12 @@ default persistent.daily_update_check_once = False
# Keep the default update check from triggering until tomorrow.
default persistent.last_update_check = datetime.date.today()
# Should we try to skip the splashscreen?
default persistent.skip_splashscreen = False
# Should we prefer rpu updates?
default persistent.prefer_rpu = True
init python:
if not persistent.daily_update_check_once:
persistent.daily_update_check_once = True
@@ -71,6 +92,14 @@ init python:
default preference_tab = "general"
define preference_tabs = (
("general", _("General")),
("options", _("Options")),
("theme", _("Theme")),
("install", _("Install Libraries")),
("actions", _("Actions")),
("lint", _("Lint")),
)
screen preferences():
@@ -98,17 +127,12 @@ screen preferences():
has vbox
# Projects directory selection.
add SEPARATOR2
add HALF_SPACER
textbutton _("General") action SetVariable("preference_tab", "general") style "l_list"
textbutton _("Options") action SetVariable("preference_tab", "options") style "l_list"
textbutton _("Theme") action SetVariable("preference_tab", "theme") style "l_list"
textbutton _("Install Libraries") action SetVariable("preference_tab", "install") style "l_list"
textbutton _("Actions") action SetVariable("preference_tab", "actions") style "l_list"
for i, l in preference_tabs:
textbutton l action SetVariable("preference_tab", i) style "l_list"
if preference_tab == "general":
@@ -119,7 +143,6 @@ screen preferences():
has vbox
# Projects directory selection.
add SEPARATOR2
@@ -157,10 +180,7 @@ screen preferences():
add HALF_SPACER
frame style "l_indent":
if persistent.editor:
textbutton persistent.editor action Jump("editor_preference") alt _("Text editor: [text]")
else:
textbutton _("Not Set") action Jump("editor_preference") alt _("Text editor: [text]")
textbutton (persistent.editor or _("Not Set")) action Jump("editor_preference") alt _("Text editor: [text]")
add SPACER
@@ -207,6 +227,22 @@ screen preferences():
add SPACER
add SEPARATOR2
frame:
style "l_indent"
has vbox
text _("Game Options:")
add HALF_SPACER
if renpy.windows:
textbutton _("Console output") style "l_checkbox" action ToggleField(persistent, "windows_console")
textbutton _("Skip splashscreen") style "l_checkbox" action ToggleField(persistent, "skip_splashscreen")
add SPACER
add SEPARATOR2
frame:
style "l_indent"
has vbox
@@ -218,14 +254,16 @@ screen preferences():
textbutton _("Show edit file section") style "l_checkbox" action ToggleField(persistent, "show_edit_funcs")
textbutton _("Large fonts") style "l_checkbox" action [ ToggleField(persistent, "large_print"), renpy.utter_restart ]
if renpy.windows:
textbutton _("Console output") style "l_checkbox" action ToggleField(persistent, "windows_console")
if interface.local_doc_exists:
textbutton _("Prefer the web documentation") style "l_checkbox" action ToggleField(persistent, "use_web_doc")
textbutton _("Sponsor message") style "l_checkbox" action ToggleField(persistent, "sponsor_message")
textbutton _("Restore window position") style "l_checkbox" action Preference("restore window position", "toggle")
if ability.can_update:
textbutton _("Daily check for update") style "l_checkbox" action [ToggleField(persistent, "daily_update_check"), SetField(persistent, "last_update_check", None)] selected persistent.daily_update_check
textbutton _("Prefer RPU updates") style "l_checkbox" action ToggleField(persistent, "prefer_rpu")
elif preference_tab == "theme":
@@ -236,7 +274,6 @@ screen preferences():
has vbox
# Projects directory selection.
add SEPARATOR2
frame:
@@ -253,7 +290,9 @@ screen preferences():
add SPACER
text _("Information about creating a custom theme can be found {a=https://www.renpy.org/doc/html/skins.html}in the Ren'Py Documentation{/a}.")
$ skins_url = interface.get_doc_url("skins.html")
text _("Information about creating a custom theme can be found {a=[skins_url]}in the Ren'Py Documentation{/a}.")
elif preference_tab == "install":
@@ -276,7 +315,6 @@ screen preferences():
use install_preferences
elif preference_tab == "actions":
frame:
@@ -297,9 +335,52 @@ screen preferences():
add HALF_SPACER
textbutton _("Open launcher project") style "l_nonbox" action [ project.Select("launcher"), Jump("front_page") ]
textbutton _("Open projects.txt"):
style "l_nonbox"
if project.manager.projects_directory:
action [
EnsureProjectsTxt(),
editor.EditAbsolute(os.path.join(project.manager.projects_directory, "projects.txt"))
]
textbutton _("Reset window size") style "l_nonbox" action Preference("display", 1.0)
textbutton _("Clean temporary files") style "l_nonbox" action Jump("clean_tmp")
elif preference_tab == "lint":
frame:
style "l_indent"
xmaximum TWOTHIRDS
xfill True
has vbox
add SEPARATOR2
frame:
style "l_indent"
has vbox
text _("Lint toggles:")
add HALF_SPACER
textbutton _("Check for orphan/obsolete translations"):
style "l_checkbox"
action InvertSelected(ToggleSetMembership(persistent.lint_options, "--no-orphan-tl"))
textbutton _("Check parameters shadowing reserved names"):
style "l_checkbox"
action ToggleSetMembership(persistent.lint_options, "--reserved-parameters")
textbutton _("Print block, word, and character counts by speaking character."):
style "l_checkbox"
action ToggleSetMembership(persistent.lint_options, "--by-character")
textbutton _("Unclosed text tags"):
style "l_checkbox"
action ToggleSetMembership(persistent.lint_options, "--check-unclosed-tags")
textbutton _("Show all unreachable blocks and orphaned translations."):
style "l_checkbox"
action ToggleSetMembership(persistent.lint_options, "--all-problems")
textbutton _("Return") action Jump("front_page") style "l_left_button"
+68 -17
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -55,12 +55,12 @@ init python in project:
def __init__(self, path, name=None):
if name is None:
name = os.path.basename(path)
while path.endswith("/"):
path = path[:-1]
if name is None:
name = os.path.basename(path)
if not os.path.exists(path):
raise Exception("{} does not exist.".format(path))
@@ -92,6 +92,10 @@ init python in project:
# The mtime of the last dump file loaded.
self.dump_mtime = 0
# A processed version of data['renpy_launcher'] with missing files
# and directories removed.
self.renpy_launcher = None
def get_dump_filename(self):
if os.path.exists(os.path.join(self.gamedir, "saves")):
@@ -116,7 +120,7 @@ init python in project:
try:
with open(os.path.join(self.path, "project.json"), "w") as f:
json.dump(self.data, f)
json.dump(self.data, f, indent=2)
except Exception:
self.load_data()
@@ -128,6 +132,7 @@ init python in project:
data.setdefault("add_from", True)
data.setdefault("force_recompile", True)
data.setdefault("android_build", "Release")
data.setdefault("tutorial", False)
if "renamed_all" not in data:
dp = data["packages"]
@@ -155,6 +160,43 @@ init python in project:
data["renamed_steam"] = True
def get_renpy_launcher(self):
if self.renpy_launcher is not None:
return self.renpy_launcher
rv = { }
default_values = {
"open_directory":
{
"game": "game",
"base": ".",
"images": "game/images",
"audio": "game/audio",
"gui": "game/gui",
"libs": "game/libs",
"mods": "game/mods",
},
"edit_file":
{
"script.rpy": "game/script.rpy",
"options.rpy": "game/options.rpy",
"gui.rpy": "game/gui.rpy",
"screens.rpy": "game/screens.rpy"
}
}
for k, default_d in default_values.items():
d = self.data.get("renpy_launcher", {}).get(k, default_d)
rv[k] = { name : path for name, path in d.items() if os.path.exists(os.path.join(self.path, path)) }
self.renpy_launcher = rv
return rv
def make_tmp(self):
"""
Makes the project's temporary directory, if it doesn't exist
@@ -259,8 +301,16 @@ init python in project:
environ = dict(os.environ)
environ["RENPY_LAUNCHER_LANGUAGE"] = _preferences.language or "english"
if persistent.skip_splashscreen:
environ["RENPY_SKIP_SPLASHSCREEN"] = "1"
environ.update(env)
# Filter out system PYTHON* environment variables.
if hasattr(sys, "renpy_executable"):
environ = { k : v for k, v in environ.items() if not k.startswith("PYTHON") }
encoded_environ = { }
for k, v in environ.items():
@@ -343,12 +393,6 @@ init python in project:
line = line[:1024]
if PY2:
try:
line = line.decode("utf-8")
except Exception:
continue
m = re.search(r"#\s*TODO(\s*:\s*|\s+)(.*)", line, re.I)
if m is None:
@@ -479,14 +523,11 @@ init python in project:
if self.projects_directory is not None:
self.scan_directory(self.projects_directory)
self.scan_directory(config.renpy_base)
self.scan_directory(os.path.join(config.renpy_base, "templates"))
self.projects.sort(key=lambda p : p.name.lower())
self.templates.sort(key=lambda p : p.name.lower())
# Select the default project.
if persistent.active_project is not None:
p = self.get(persistent.active_project)
@@ -550,6 +591,10 @@ init python in project:
for path in f:
path = path.strip()
if path.startswith("#"):
continue
if len(path) > 0:
self.scan_directory_direct(path)
@@ -588,6 +633,7 @@ init python in project:
if project_type == "hidden":
pass
elif project_type == "template":
self.projects.append(p)
self.templates.append(p)
else:
self.projects.append(p)
@@ -661,7 +707,7 @@ init python in project:
The label to jump to when clicked.
"""
if isinstance(p, basestring):
if isinstance(p, str):
p = manager.get(p)
self.project = p
@@ -749,7 +795,7 @@ init python in project:
def __init__(self, p=None):
if p is None:
self.project = current
elif isinstance(p, basestring):
elif isinstance(p, str):
self.project = manager.get(p)
else:
self.project = p
@@ -761,7 +807,12 @@ init python in project:
blurb = LAUNCH_BLURBS[persistent.blurb % len(LAUNCH_BLURBS)]
persistent.blurb += 1
interface.interaction(_("Launching"), blurb, pause=2.5)
if persistent.skip_splashscreen:
submessage = _("Splashscreen skipped in launcher preferences.")
else:
submessage = None
interface.interaction(_("Launching"), blurb, submessage=submessage, pause=2.5)
def __call__(self):
+3 -3
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
@@ -355,8 +355,8 @@ style l_left_button_text is l_right_button_text
style l_root is l_default:
background BACKGROUND
xpadding 10
top_padding 64
bottom_padding 128
top_padding 32
bottom_padding 120
# An inner window.
style l_window is l_default:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2023 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2025 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
+5 -5
View File
@@ -364,7 +364,7 @@
new "{b}نقترح.{/b} محرر نص له واجهة سهلة الاستعمال ويعين على كتابة النصوص البرمجية يفضل برنامج يحتوي على مدقق لغوي. Editraحالياً لا يدعم اللغات الأجنبية مثل اللغه الكورية و الصينية و اليابانية. على نظام لينوكس, Editra يحتاج wxPython."
# editor.rpy:167
old "This may have occured because wxPython is not installed on this system."
old "This may have occurred because wxPython is not installed on this system."
new "قد يكون سبب ذلك ان wxPython غير موجود في نظام التشغيل لديك"
# editor.rpy:169
@@ -380,7 +380,7 @@
new "مطلوب تحميل ملف بحجم 1.8 ميغا بايت."
# editor.rpy:182
old "This may have occured because Java is not installed on this system."
old "This may have occurred because Java is not installed on this system."
new "قد يكون السبب ان الجافا غير موجوده على هذا الجهاز."
# editor.rpy:191
@@ -392,7 +392,7 @@
new "يمنع رينباي من فتح اي محرر نصوص"
# editor.rpy:359
old "An exception occured while launching the text editor:\n[exception!q]"
old "An exception occurred while launching the text editor:\n[exception!q]"
new "حصل استثناء اثناء فتح المحرر: \n[exception!q]"
# editor.rpy:457
@@ -608,7 +608,7 @@
new "خطأ"
# interface.rpy:356
old "While [what!qt], an error occured:"
old "While [what!qt], an error occurred:"
new "حصل خطأ أثناء [what!qt]"
# interface.rpy:356
@@ -1136,7 +1136,7 @@
new "أحدث نسخة طازجة من رينباي التجريبي, قد يحتوي على آخر مستجدات رينباي و قد لا يعمل مطلقاً"
# updater.rpy:152
old "An error has occured:"
old "An error has occurred:"
new "حصل خطأ:"
# updater.rpy:154
+2 -2
View File
@@ -494,8 +494,8 @@ translate arabic strings:
new "النقر بالزر الأيمن"
# screens.rpy:1062
old "Mouse Wheel Up\nClick Rollback Side"
new "تحريك عجلة الفأرة لأعلى\nClick Rollback Side"
old "Mouse Wheel Up"
new "تحريك عجلة الفأرة لأعلى"
# screens.rpy:1066
old "Mouse Wheel Down"
+978
View File
@@ -0,0 +1,978 @@
translate danish strings:
# renpy/common/00accessibility.rpy:28
old "Self-voicing disabled."
new "Automatisk oplæsning deaktiveret."
# renpy/common/00accessibility.rpy:29
old "Clipboard voicing enabled. "
new "Oplæsning af udklipsholder aktiveret."
# renpy/common/00accessibility.rpy:30
old "Self-voicing enabled. "
new "Automatisk oplæsning aktiveret."
# renpy/common/00accessibility.rpy:32
old "bar"
new "bjælke"
# renpy/common/00accessibility.rpy:33
old "selected"
new "valgt"
# renpy/common/00accessibility.rpy:34
old "viewport"
new "visningsport"
# renpy/common/00accessibility.rpy:35
old "horizontal scroll"
new "vandret rulning"
# renpy/common/00accessibility.rpy:36
old "vertical scroll"
new "lodret rulning"
# renpy/common/00accessibility.rpy:37
old "activate"
new "aktivér"
# renpy/common/00accessibility.rpy:38
old "deactivate"
new "deaktiver"
# renpy/common/00accessibility.rpy:39
old "increase"
new "øg"
# renpy/common/00accessibility.rpy:40
old "decrease"
new "sænk"
# renpy/common/00accessibility.rpy:138
old "Font Override"
new "Tilsidesættelse af skrifttype"
# renpy/common/00accessibility.rpy:142
old "Default"
new "Standard"
# renpy/common/00accessibility.rpy:146
old "DejaVu Sans"
new "DejaVu Sans"
# renpy/common/00accessibility.rpy:150
old "Opendyslexic"
new "Opendyslexic"
# renpy/common/00accessibility.rpy:156
old "Text Size Scaling"
new "Skalering af skriftstørrelse"
# renpy/common/00accessibility.rpy:162
old "Reset"
new "Nulstil"
# renpy/common/00accessibility.rpy:168
old "Line Spacing Scaling"
new "Skalering af linjeafstand"
# renpy/common/00accessibility.rpy:180
old "High Contrast Text"
new "Tekst med høj kontrast"
# renpy/common/00accessibility.rpy:182
old "Enable"
new "Slå til"
# renpy/common/00accessibility.rpy:186
old "Disable"
new "Slå fra"
# renpy/common/00accessibility.rpy:193
old "Self-Voicing"
new "Automatisk oplæsning"
# renpy/common/00accessibility.rpy:197
old "Off"
new "Fra"
# renpy/common/00accessibility.rpy:201
old "Text-to-speech"
new "Tekst til tale"
# renpy/common/00accessibility.rpy:205
old "Clipboard"
new "Udklipsholder"
# renpy/common/00accessibility.rpy:209
old "Debug"
new "Fejlsøgning"
# renpy/common/00accessibility.rpy:223
old "Self-Voicing Volume Drop"
new "Lydstyrkesænkning ved automatisk oplæsning"
# renpy/common/00accessibility.rpy:234
old "The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was."
new "Indstillingerne i denne menu er tiltænkt at forbedre tilgængelighed. De virker muligvis ikke med alle spil, og visse kombinationer af indstillinger gør muligvis spillet uspilleligt. Dette er ikke et problem med spillet eller spilmotoren. Prøv at bevare den originale skriftstørrelse for at opnå det bedste resultat væd ændring af skrifttype."
# renpy/common/00action_file.rpy:26
old "{#weekday}Monday"
new "{#weekday}mandag"
# renpy/common/00action_file.rpy:26
old "{#weekday}Tuesday"
new "{#weekday}tirsdag"
# renpy/common/00action_file.rpy:26
old "{#weekday}Wednesday"
new "{#weekday}onsdag"
# renpy/common/00action_file.rpy:26
old "{#weekday}Thursday"
new "{#weekday}torsdag"
# renpy/common/00action_file.rpy:26
old "{#weekday}Friday"
new "{#weekday}fredag"
# renpy/common/00action_file.rpy:26
old "{#weekday}Saturday"
new "{#weekday}lørdag"
# renpy/common/00action_file.rpy:26
old "{#weekday}Sunday"
new "{#weekday}søndag"
# renpy/common/00action_file.rpy:37
old "{#weekday_short}Mon"
new "{#weekday_short}man"
# renpy/common/00action_file.rpy:37
old "{#weekday_short}Tue"
new "{#weekday_short}tir"
# renpy/common/00action_file.rpy:37
old "{#weekday_short}Wed"
new "{#weekday_short}ons"
# renpy/common/00action_file.rpy:37
old "{#weekday_short}Thu"
new "{#weekday_short}tor"
# renpy/common/00action_file.rpy:37
old "{#weekday_short}Fri"
new "{#weekday_short}fre"
# renpy/common/00action_file.rpy:37
old "{#weekday_short}Sat"
new "{#weekday_short}lør"
# renpy/common/00action_file.rpy:37
old "{#weekday_short}Sun"
new "{#weekday_short}søn"
# renpy/common/00action_file.rpy:47
old "{#month}January"
new "{#month}januar"
# renpy/common/00action_file.rpy:47
old "{#month}February"
new "{#month}februar"
# renpy/common/00action_file.rpy:47
old "{#month}March"
new "{#month}marts"
# renpy/common/00action_file.rpy:47
old "{#month}April"
new "{#month}april"
# renpy/common/00action_file.rpy:47
old "{#month}May"
new "{#month}maj"
# renpy/common/00action_file.rpy:47
old "{#month}June"
new "{#month}juni"
# renpy/common/00action_file.rpy:47
old "{#month}July"
new "{#month}juli"
# renpy/common/00action_file.rpy:47
old "{#month}August"
new "{#month}august"
# renpy/common/00action_file.rpy:47
old "{#month}September"
new "{#month}september"
# renpy/common/00action_file.rpy:47
old "{#month}October"
new "{#month}oktober"
# renpy/common/00action_file.rpy:47
old "{#month}November"
new "{#month}november"
# renpy/common/00action_file.rpy:47
old "{#month}December"
new "{#month}december"
# renpy/common/00action_file.rpy:63
old "{#month_short}Jan"
new "{#month_short}jan"
# renpy/common/00action_file.rpy:63
old "{#month_short}Feb"
new "{#month_short}feb"
# renpy/common/00action_file.rpy:63
old "{#month_short}Mar"
new "{#month_short}mar"
# renpy/common/00action_file.rpy:63
old "{#month_short}Apr"
new "{#month_short}apr"
# renpy/common/00action_file.rpy:63
old "{#month_short}May"
new "{#month_short}maj"
# renpy/common/00action_file.rpy:63
old "{#month_short}Jun"
new "{#month_short}jun"
# renpy/common/00action_file.rpy:63
old "{#month_short}Jul"
new "{#month_short}jul"
# renpy/common/00action_file.rpy:63
old "{#month_short}Aug"
new "{#month_short}aug"
# renpy/common/00action_file.rpy:63
old "{#month_short}Sep"
new "{#month_short}sep"
# renpy/common/00action_file.rpy:63
old "{#month_short}Oct"
new "{#month_short}okt"
# renpy/common/00action_file.rpy:63
old "{#month_short}Nov"
new "{#month_short}nov"
# renpy/common/00action_file.rpy:63
old "{#month_short}Dec"
new "{#month_short}dec"
# renpy/common/00action_file.rpy:258
old "%b %d, %H:%M"
new "%d. %b, %H:%M"
# renpy/common/00action_file.rpy:378
old "Save slot %s: [text]"
new "Gem plads %s: [text]"
# renpy/common/00action_file.rpy:461
old "Load slot %s: [text]"
new "Indlæs plads %s: [text]"
# renpy/common/00action_file.rpy:514
old "Delete slot [text]"
new "Slet plads [text]"
# renpy/common/00action_file.rpy:593
old "File page auto"
new "Filside auto"
# renpy/common/00action_file.rpy:595
old "File page quick"
new "Filside hurtig"
# renpy/common/00action_file.rpy:597
old "File page [text]"
new "Filside [text]"
# renpy/common/00action_file.rpy:796
old "Next file page."
new "Næste filside."
# renpy/common/00action_file.rpy:868
old "Previous file page."
new "Forrige filside."
# renpy/common/00action_file.rpy:929
old "Quick save complete."
new "Hurtiggemning fuldført."
# renpy/common/00action_file.rpy:944
old "Quick save."
new "Hurtiggem."
# renpy/common/00action_file.rpy:963
old "Quick load."
new "Hurtigindlæs."
# renpy/common/00action_other.rpy:383
old "Language [text]"
new "Sprog [text]"
# renpy/common/00action_other.rpy:724
old "Open [text] directory."
new "Åbn mappen [text]."
# renpy/common/00director.rpy:705
old "The interactive director is not enabled here."
new "Det interaktive instruktionsværktøj er ikke aktiveret her."
# renpy/common/00director.rpy:1504
old "⬆"
new "⬆"
# renpy/common/00director.rpy:1510
old "⬇"
new "⬇"
# renpy/common/00director.rpy:1574
old "Done"
new "Færdig"
# renpy/common/00director.rpy:1584
old "(statement)"
new "(sætning)"
# renpy/common/00director.rpy:1585
old "(tag)"
new "(mærke)"
# renpy/common/00director.rpy:1586
old "(attributes)"
new "(attributter)"
# renpy/common/00director.rpy:1587
old "(transform)"
new "(transformation)"
# renpy/common/00director.rpy:1612
old "(transition)"
new "(overgang)"
# renpy/common/00director.rpy:1624
old "(channel)"
new "(kanal)"
# renpy/common/00director.rpy:1625
old "(filename)"
new "(filnavn)"
# renpy/common/00director.rpy:1654
old "Change"
new "Ændr"
# renpy/common/00director.rpy:1656
old "Add"
new "Tilføj"
# renpy/common/00director.rpy:1659
old "Cancel"
new "Annuller"
# renpy/common/00director.rpy:1662
old "Remove"
new "Fjern"
# renpy/common/00director.rpy:1697
old "Statement:"
new "Sætning:"
# renpy/common/00director.rpy:1718
old "Tag:"
new "Mærke:"
# renpy/common/00director.rpy:1734
old "Attributes:"
new "Attributter:"
# renpy/common/00director.rpy:1745
old "Click to toggle attribute, right click to toggle negative attribute."
new "Klik for at slå attributter til/fra, højreklik for at slå negative attributter til/fra."
# renpy/common/00director.rpy:1757
old "Transforms:"
new "Transformationer:"
# renpy/common/00director.rpy:1768
old "Click to set transform, right click to add to transform list."
new "Klik for at stille transformation, højreklik for at tilføje til transformationsliste."
# renpy/common/00director.rpy:1780
old "Behind:"
new "Bagved:"
# renpy/common/00director.rpy:1789
old "Click to set, right click to add to behind list."
new "Klik for at stille, højreklik for at tilføje til bagvedliste."
# renpy/common/00director.rpy:1801
old "Transition:"
new "Overgang:"
# renpy/common/00director.rpy:1819
old "Channel:"
new "Kanal:"
# renpy/common/00director.rpy:1837
old "Audio Filename:"
new "Lydfilnavn:"
# renpy/common/00gui.rpy:446
old "Are you sure?"
new "Er du sikker?"
# renpy/common/00gui.rpy:447
old "Are you sure you want to delete this save?"
new "Vil du gerne slette denne gemmefil?"
# renpy/common/00gui.rpy:448
old "Are you sure you want to overwrite your save?"
new "Vil du gerne overskrive din gemmefil?"
# renpy/common/00gui.rpy:449
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
new "Ved indlæsning vil ugemte fremskridt gå tabt.\nVil du gerne gøre dette?"
# renpy/common/00gui.rpy:450
old "Are you sure you want to quit?"
new "Vil du gerne afslutte?"
# renpy/common/00gui.rpy:451
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
new "Vil du gerne vende tilbage til hovedmenuen?\nUgemte fremskridt vil gå tabt."
# renpy/common/00gui.rpy:452
old "Are you sure you want to end the replay?"
new "Vil du gerne afslutte genafspilningnen?"
# renpy/common/00gui.rpy:453
old "Are you sure you want to begin skipping?"
new "Vil du gerne påbegynde overspringning?"
# renpy/common/00gui.rpy:454
old "Are you sure you want to skip to the next choice?"
new "Vil du gerne springe videre til det næste valg?"
# renpy/common/00gui.rpy:455
old "Are you sure you want to skip unseen dialogue to the next choice?"
new "Vil du gerne springe over uset dialog til det næste valg?"
# renpy/common/00gui.rpy:456
old "This save was created on a different device. Maliciously constructed save files can harm your computer. Do you trust this save's creator and everyone who could have changed the file?"
new "Denne gemmefil blev oprettet på en anden enhed. Gemmefiler konstrueret med ondsindet hensigt kan skade din computer. Stoler du på den, der har oprettet gemmefilen, og på alle, der kan have ændret filen?"
# renpy/common/00gui.rpy:457
old "Do you trust the device the save was created on? You should only choose yes if you are the device's sole user."
new "Stoler du på enheden, som gemmefilen oprettedes på? Du bør kun vælge ja, hvis du er enhedens eneste bruger."
# renpy/common/00keymap.rpy:322
old "Failed to save screenshot as %s."
new "Kunne ikke gemme skærmbillede som %s."
# renpy/common/00keymap.rpy:334
old "Saved screenshot as %s."
new "Gemte skærmbillede som %s."
# renpy/common/00library.rpy:248
old "Skip Mode"
new "Overspringstilstand"
# renpy/common/00library.rpy:335
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 "Dette program indeholder gratis software under forskellige licenser, herunder MIT-licensen og GNU Lesser General Public License. En komplet liste over software, inklusiv links til fulde kildekoder, kan findes {a=https://www.renpy.org/l/license}her{/a}."
# renpy/common/00preferences.rpy:271
old "display"
new "skærmvisning"
# renpy/common/00preferences.rpy:287
old "transitions"
new "overgange"
# renpy/common/00preferences.rpy:296
old "skip transitions"
new "spring overgange over"
# renpy/common/00preferences.rpy:298
old "video sprites"
new "videosprites"
# renpy/common/00preferences.rpy:307
old "show empty window"
new "vis tomt vindue"
# renpy/common/00preferences.rpy:316
old "text speed"
new "teksthastighed"
# renpy/common/00preferences.rpy:324
old "joystick"
new "styrepind"
# renpy/common/00preferences.rpy:324
old "joystick..."
new "styrepind..."
# renpy/common/00preferences.rpy:331
old "skip"
new "spring over"
# renpy/common/00preferences.rpy:334
old "skip unseen [text]"
new "spring over uset [text]"
# renpy/common/00preferences.rpy:339
old "skip unseen text"
new "spring over uset tekst"
# renpy/common/00preferences.rpy:341
old "begin skipping"
new "påbegynd overspringning"
# renpy/common/00preferences.rpy:345
old "after choices"
new "efter valg"
# renpy/common/00preferences.rpy:352
old "skip after choices"
new "spring over efter valg"
# renpy/common/00preferences.rpy:354
old "auto-forward time"
new "auto-fremad-tid"
# renpy/common/00preferences.rpy:368
old "auto-forward"
new "auto-fremad"
# renpy/common/00preferences.rpy:375
old "Auto forward"
new "auto-fremad"
# renpy/common/00preferences.rpy:378
old "auto-forward after click"
new "auto-fremad efter klik"
# renpy/common/00preferences.rpy:387
old "automatic move"
new "automatisk bevægelse"
# renpy/common/00preferences.rpy:396
old "wait for voice"
new "vent på stemme"
# renpy/common/00preferences.rpy:405
old "voice sustain"
new "stemmebevarelse"
# renpy/common/00preferences.rpy:414
old "self voicing"
new "automatisk oplæsning"
# renpy/common/00preferences.rpy:423
old "self voicing volume drop"
new "lydstyrkesænkning ved automatisk oplæsning"
# renpy/common/00preferences.rpy:431
old "clipboard voicing"
new "oplæsning af udklipsholder"
# renpy/common/00preferences.rpy:440
old "debug voicing"
new "oplæsning af fejlsøgning"
# renpy/common/00preferences.rpy:449
old "emphasize audio"
new "fremhæv lyd"
# renpy/common/00preferences.rpy:458
old "rollback side"
new "tilbagerulningsside"
# renpy/common/00preferences.rpy:468
old "gl powersave"
new "gl-strømbesparelse"
# renpy/common/00preferences.rpy:474
old "gl framerate"
new "gl-billedhastighed"
# renpy/common/00preferences.rpy:477
old "gl tearing"
new "gl-overrivning"
# renpy/common/00preferences.rpy:480
old "font transform"
new "skrifttransformation"
# renpy/common/00preferences.rpy:483
old "font size"
new "skriftstørrelse"
# renpy/common/00preferences.rpy:491
old "font line spacing"
new "linjeafstand for skrift"
# renpy/common/00preferences.rpy:499
old "system cursor"
new "systemmarkør"
# renpy/common/00preferences.rpy:508
old "renderer menu"
new "optegningsmenu"
# renpy/common/00preferences.rpy:511
old "accessibility menu"
new "tilgængelighedsmenu"
# renpy/common/00preferences.rpy:514
old "high contrast text"
new "tekst med høj kontrast"
# renpy/common/00preferences.rpy:523
old "audio when minimized"
new "lyd ved minimeret tilstand"
# renpy/common/00preferences.rpy:532
old "audio when unfocused"
new "lyd ved ufokuseret tilstand"
# renpy/common/00preferences.rpy:541
old "web cache preload"
new "forudindlæsning af webcache"
# renpy/common/00preferences.rpy:556
old "voice after game menu"
new "stemme efter spilmenu"
# renpy/common/00preferences.rpy:575
old "main volume"
new "primær lydstyrke"
# renpy/common/00preferences.rpy:576
old "music volume"
new "musiklydstyrke"
# renpy/common/00preferences.rpy:577
old "sound volume"
new "lydeffektlydstyrke"
# renpy/common/00preferences.rpy:578
old "voice volume"
new "stemmelydstyrke"
# renpy/common/00preferences.rpy:579
old "mute main"
new "slå primær lyd fra"
# renpy/common/00preferences.rpy:580
old "mute music"
new "slå musik fra"
# renpy/common/00preferences.rpy:581
old "mute sound"
new "slå lydeffekter fra"
# renpy/common/00preferences.rpy:582
old "mute voice"
new "slå stemmer fra"
# renpy/common/00preferences.rpy:583
old "mute all"
new "slå alle fra"
# renpy/common/00preferences.rpy:657
old "Clipboard voicing enabled. Press 'shift+C' to disable."
new "Oplæsning af udklipsholder aktiveret. Tryk på 'shift+C' for at deaktivere."
# renpy/common/00preferences.rpy:659
old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
new "Automatisk oplæsning ville sige \"[renpy.display.tts.last]\". Tryk på 'alt+shift+V' for at deaktivere."
# renpy/common/00preferences.rpy:661
old "Self-voicing enabled. Press 'v' to disable."
new "Automatisk oplæsning aktiveret. Tryk på 'v' for at deaktivere."
# renpy/common/00speechbubble.rpy:344
old "Speech Bubble Editor"
new "Talebobleredigering"
# renpy/common/00speechbubble.rpy:349
old "(hide)"
new "(skjul)"
# renpy/common/00sync.rpy:70
old "Sync downloaded."
new "Synkronisering hentet."
# renpy/common/00sync.rpy:190
old "Could not connect to the Ren'Py Sync server."
new "Kunne ikke oprette forbindelse til Ren'Py Sync-serveren."
# renpy/common/00sync.rpy:192
old "The Ren'Py Sync server timed out."
new "Der opstod et forbindelsestimeout til Ren'Py Sync-serveren."
# renpy/common/00sync.rpy:194
old "An unknown error occurred while connecting to the Ren'Py Sync server."
new "En ukendt fejl opstod under forbindelse til Ren'Py Sync-serveren."
# renpy/common/00sync.rpy:267
old "The Ren'Py Sync server does not have a copy of this sync. The sync ID may be invalid, or it may have timed out."
new "Ren'Py Sync-serveren har ikke en kopi af denne synkronisering. Synkroniserings-id'er er muligvis ugyldig eller udløbet."
# renpy/common/00sync.rpy:412
old "Please enter the sync ID you generated.\nNever enter a sync ID you didn't create yourself."
new "Indtast venligst dit genererede synkroniserings-id.\nIndtast aldrig et synkroniserings-id, som du ikke selv har oprettet."
# renpy/common/00sync.rpy:431
old "The sync ID is not in the correct format."
new "Synkroniserings-id'et er ikke i det korrekte format."
# renpy/common/00sync.rpy:451
old "The sync could not be decrypted."
new "Synkroniseringen kunne ikke afkodes."
# renpy/common/00sync.rpy:474
old "The sync belongs to a different game."
new "Synkroniseringen tilhører et andet spil."
# renpy/common/00sync.rpy:479
old "The sync contains a file with an invalid name."
new "Synkroniseringen indeholder en fil med et ugyldigt navn."
# renpy/common/00sync.rpy:532
old "This will upload your saves to the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nDo you want to continue?"
new "Dette sender dine gemmefiler til {a=https://sync.renpy.org}Ren'Py Sync-serveren{/a}.\nVil du gerne fortsætte?"
# renpy/common/00sync.rpy:561
old "Enter Sync ID"
new "Indtast Synkroniserings-id"
# renpy/common/00sync.rpy:572
old "This will contact the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}."
new "Dette kontakter {a=https://sync.renpy.org}Ren'Py Sync-serveren{/a}."
# renpy/common/00sync.rpy:599
old "Sync Success"
new "Synkronisering lykkedes"
# renpy/common/00sync.rpy:602
old "The Sync ID is:"
new "Synkroniserings-id'et er:"
# renpy/common/00sync.rpy:608
old "You can use this ID to download your save on another device.\nThis sync will expire in an hour.\nRen'Py Sync is supported by {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}."
new "Du kan bruge dette id til at hente din gemmefil på en anden enhed.\nDenne synkronisering udløber om en time.\nRen'Py Sync støttes af {a=https://www.renpy.org/sponsors.html}Ren'Pys sponsorer{/a}."
# renpy/common/00sync.rpy:612
old "Continue"
new "Fortsæt"
# renpy/common/00sync.rpy:634
old "Sync Error"
new "Synkroniseringsfejl"
# renpy/common/00iap.rpy:219
old "Contacting App Store\nPlease Wait..."
new "Kontakter App Store\nVent venligst..."
# renpy/common/00updater.rpy:419
old "The Ren'Py Updater is not supported on mobile devices."
new "Ren'Py-opdateringsprogrammet understøttes ikke på mobilenheder."
# renpy/common/00updater.rpy:548
old "An error is being simulated."
new "En fejl simuleres."
# renpy/common/00updater.rpy:738
old "Either this project does not support updating, or the update status file was deleted."
new "Enten understøtter dette projekt ikke opdatering, eller også er opdateringsstatusfilen blevet slettet."
# renpy/common/00updater.rpy:752
old "This account does not have permission to perform an update."
new "Denne bruger har ikke tilladelse til at udføre en opdatering."
# renpy/common/00updater.rpy:755
old "This account does not have permission to write the update log."
new "Denne bruger har ikke tilladelse til at skrive opdateringsloggen."
# renpy/common/00updater.rpy:783
old "Could not verify update signature."
new "Kunne ikke efterprøve opdateringssignaturen."
# renpy/common/00updater.rpy:1084
old "The update file was not downloaded."
new "Opdateringsfilen blev ikke hentet."
# renpy/common/00updater.rpy:1102
old "The update file does not have the correct digest - it may have been corrupted."
new "Opdateringsfilen har ikke det korrekte fingeraftryk - den er muligvis blevet korrupteret."
# renpy/common/00updater.rpy:1252
old "While unpacking {}, unknown type {}."
new "Under udpakning {}, ukendt type {}"
# renpy/common/00updater.rpy:1624
old "Updater"
new "Opdateringsprogram"
# renpy/common/00updater.rpy:1635
old "This program is up to date."
new "Dette program er ajour."
# renpy/common/00updater.rpy:1637
old "[u.version] is available. Do you want to install it?"
new "[u.version] er tilgængelig. Vil du gerne installere denne?"
# renpy/common/00updater.rpy:1639
old "Preparing to download the updates."
new "Forbereder hentning af opdateringerne."
# renpy/common/00updater.rpy:1641
old "Downloading the updates."
new "Henter opdateringerne."
# renpy/common/00updater.rpy:1643
old "Unpacking the updates."
new "Udpakker opdateringerne."
# renpy/common/00updater.rpy:1647
old "The updates have been installed. The program will restart."
new "Opdateringer er blevet installeret. Programmet genstarter."
# renpy/common/00updater.rpy:1649
old "The updates have been installed."
new "Opdateringerne er blevet installeret."
# renpy/common/00updater.rpy:1651
old "The updates were cancelled."
new "Opdateringerne blev annulleret."
# renpy/common/00gallery.rpy:627
old "Image [index] of [count] locked."
new "Billede [index] af [count] låst."
# renpy/common/00gallery.rpy:647
old "prev"
new "forrige"
# renpy/common/00gallery.rpy:648
old "next"
new "næste"
# renpy/common/00gallery.rpy:649
old "slideshow"
new "diasshow"
# renpy/common/00gallery.rpy:650
old "return"
new "tilbage"
# renpy/common/00director.rpy:1776
old "Customize director.transforms to add more transforms."
new "Tilpas director.transforms for at tilføje flere transformationer."
# renpy/common/00director.rpy:1821
old "Click to set."
new "Klik for at stille."
# renpy/common/00director.rpy:1822
old "Customize director.transitions to add more transitions."
new "Tilpas director.transitions for at tilføje flere overgange."
# renpy/common/00director.rpy:1845
old "Customize director.audio_channels to add more channels."
new "Tilpas director.audio_channels for at tilføje flere kanaler."
# renpy/common/00preferences.rpy:573
old "restore window position"
new "gendan vinduesplacering"
# renpy/common/00speechbubble.rpy:408
old "(clear retained bubbles)"
new "(opryd bibeholdte bobler)"
# renpy/common/00updater.rpy:504
old "No update methods found."
new "Ingen opdateringsmetoder fundet."
# renpy/common/00updater.rpy:551
old "Could not download file list: "
new "Kunne ikke hente filliste:"
# renpy/common/00updater.rpy:554
old "File list digest does not match."
new "Fillistens fingeraftryk matcher ikke."
# renpy/common/00updater.rpy:2072
old "Preparing to download the game data."
new "Forbereder hentning af spildataene."
# renpy/common/00updater.rpy:2074
old "Downloading the game data."
new "Henter spildataene."
# renpy/common/00updater.rpy:2076
old "The game data has been downloaded."
new "Spildataene er blevet hentet."
# renpy/common/00updater.rpy:2078
old "An error occurred when trying to download game data:"
new "En fejl opstod under forsøg på hentning af spildata:"
# renpy/common/00updater.rpy:2083
old "This game cannot be run until the game data has been downloaded."
new "Dette spil kan ikke køres, indtil spildataene er blevet hentet."
# renpy/common/00updater.rpy:2090
old "Retry"
new "Prøv igen"
# renpy/common/00accessibility.rpy:120
old "Accessibility Menu. Use up and down arrows to navigate, and enter to activate buttons and bars."
new "Tilgængelighedsmenu. Brug op- og ned-piletasterne til at navigere og retur til at aktivere knapper og bjælker."
# renpy/common/00gui.rpy:454
old "Are you sure you want to continue where you left off?"
new "Vil du gerne fortsætte fra hvor du slap?"
# renpy/common/00preferences.rpy:439
old "self voicing enable"
new "aktivér automatisk oplæsning"
# renpy/common/00preferences.rpy:441
old "self voicing disable"
new "deaktiver automatisk oplæsning"
# renpy/common/00preferences.rpy:456
old "clipboard voicing enable"
new "aktivér oplæsning af udklipsholder"
# renpy/common/00preferences.rpy:458
old "clipboard voicing disable"
new "deaktiver oplæsning af udklipsholder"
# renpy/common/00preferences.rpy:465
old "debug voicing enable"
new "aktivér oplæsning af fejlsøgning"
# renpy/common/00preferences.rpy:467
old "debug voicing disable"
new "deaktiver oplæsning af fejlsøgning"
# renpy/common/00preferences.rpy:596
old "reset"
new "nulstil"
+278
View File
@@ -0,0 +1,278 @@
translate danish strings:
# renpy/common/_developer/developer.rpym:38
old "Developer Menu"
new "Udviklermenu"
# renpy/common/_developer/developer.rpym:43
old "Interactive Director (D)"
new "Interaktivt instruktionsværktøj (D)"
# renpy/common/_developer/developer.rpym:45
old "Reload Game (Shift+R)"
new "Genindlæs spil (Shift+R)"
# renpy/common/_developer/developer.rpym:47
old "Console (Shift+O)"
new "Konsol (Shift+O)"
# renpy/common/_developer/developer.rpym:49
old "Variable Viewer"
new "Variabelviser"
# renpy/common/_developer/developer.rpym:51
old "Persistent Viewer"
new "Vedvarende data-viser"
# renpy/common/_developer/developer.rpym:53
old "Image Location Picker"
new "Billedplaceringsvælger"
# renpy/common/_developer/developer.rpym:55
old "Filename List"
new "Filnavneliste"
# renpy/common/_developer/developer.rpym:59
old "Show Image Load Log (F4)"
new "Vis billedindlæsningslog (F4)"
# renpy/common/_developer/developer.rpym:62
old "Hide Image Load Log (F4)"
new "Skjul billedindlæsningslog (F4)"
# renpy/common/_developer/developer.rpym:65
old "Image Attributes"
new "Billedattributter"
# renpy/common/_developer/developer.rpym:70
old "Speech Bubble Editor (Shift+B)"
new "Talebobleredigering (Shift+B)"
# renpy/common/_developer/developer.rpym:97
old "[name] [attributes] (hidden)"
new "[name] [attributes] (skjult)"
# renpy/common/_developer/developer.rpym:101
old "[name] [attributes]"
new "[name] [attributes]"
# renpy/common/_developer/developer.rpym:151
old "Nothing to inspect."
new "Intet at inspicere."
# renpy/common/_developer/developer.rpym:162
old "Hide deleted"
new "Skjul slettede"
# renpy/common/_developer/developer.rpym:162
old "Show deleted"
new "Vis slettede"
# renpy/common/_developer/developer.rpym:318
old "Rectangle copied to clipboard."
new "Rektangel kopieret til udklipsholder."
# renpy/common/_developer/developer.rpym:321
old "Position copied to clipboard."
new "Position kopieret til udklipsholder."
# renpy/common/_developer/developer.rpym:333
old "Rectangle: %r"
new "Rektangel: %r"
# renpy/common/_developer/developer.rpym:336
old "Mouse position: %r"
new "Museposition: %r"
# renpy/common/_developer/developer.rpym:341
old "Right-click or escape to quit."
new "Højreklik eller escape for at afslutte."
# renpy/common/_developer/developer.rpym:389
old "Type to filter: "
new "Skriv for at filtrere: "
# renpy/common/_developer/developer.rpym:507
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
new "Teksturer: [tex_count] ([tex_size_mb:.1f] MB)"
# renpy/common/_developer/developer.rpym:511
old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
new "Billedcache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
# renpy/common/_developer/developer.rpym:521
old "✔ "
new "✔ "
# renpy/common/_developer/developer.rpym:524
old "✘ "
new "✘ "
# renpy/common/_developer/developer.rpym:529
old "\n{color=#cfc}✔ predicted image (good){/color}\n{color=#fcc}✘ unpredicted image (bad){/color}\n{color=#fff}Drag to move.{/color}"
new "\n{color=#cfc}✔ forudset billede (godt){/color}\n{color=#fcc}✘ uforudset billede (dårligt){/color}\n{color=#fff}Træk for at flytte.{/color}"
# renpy/common/_developer/inspector.rpym:38
old "Displayable Inspector"
new "Inspektion af visbare elementer"
# renpy/common/_developer/inspector.rpym:61
old "Size"
new "Størrelse"
# renpy/common/_developer/inspector.rpym:65
old "Style"
new "Stil"
# renpy/common/_developer/inspector.rpym:71
old "Location"
new "Placering"
# renpy/common/_developer/inspector.rpym:122
old "Inspecting Styles of [displayable_name!q]"
new "Inspicerer stile for [displayable_name!q]"
# renpy/common/_developer/inspector.rpym:139
old "displayable:"
new "visbart element:"
# renpy/common/_developer/inspector.rpym:145
old " (no properties affect the displayable)"
new " (ingen egenskaber påvirker det visbare element)"
# renpy/common/_developer/inspector.rpym:147
old " (default properties omitted)"
new " (standardegenskaber udeladt)"
# renpy/common/_developer/inspector.rpym:185
old "<repr() failed>"
new "<repr() mislykkedes>"
# renpy/common/00console.rpy:537
old "Press <esc> to exit console. Type help for help.\n"
new "Tryk <esc> for at gå ud af konsol. Skriv help for hjælp.\n"
# renpy/common/00console.rpy:541
old "Ren'Py script enabled."
new "Ren'Py-script aktiveret" #manuskripterne eller scripting?
# renpy/common/00console.rpy:543
old "Ren'Py script disabled."
new "Ren'Py-script deaktiveret." #manuskripterne eller scripting?
# renpy/common/00console.rpy:793
old "help: show this help\n help <expr>: show signature and documentation of <expr>"
new "help: vis denne hjælp\n help <udtryk>: vis signaturen og dokumentationen for <udtryk>"
# renpy/common/00console.rpy:817
old "Help may display undocumented functions. Please check that the function or\nclass you want to use is documented.\n\n"
new "Hjælp viser muligvis udokumenterede funktioner. Tjek venligst, om den funktion\neller klasse, du gerne vil bruge, er dokumenteret.\n\n"
# renpy/common/00console.rpy:826
old "commands:\n"
new "kommandoer:\n"
# renpy/common/00console.rpy:836
old " <renpy script statement>: run the statement\n"
new " <renpy-script-ordre>: kør ordren\n"
# renpy/common/00console.rpy:838
old " <python expression or statement>: run the expression or statement"
new " <python-udtryk eller -ordre>: kør udtrykket eller ordren"
# renpy/common/00console.rpy:846
old "clear: clear the console history"
new "clear: ryd konsolhistorikken"
# renpy/common/00console.rpy:850
old "exit: exit the console"
new "exit: gå ud af konsollen"
# renpy/common/00console.rpy:858
old "stack: print the return stack"
new "stack: udskriv returstakken"
# renpy/common/00console.rpy:880
old "load <slot>: loads the game from slot"
new "load <plads>: indlæser spillet fra plads"
# renpy/common/00console.rpy:893
old "save <slot>: saves the game in slot"
new "save <plads>: gemmer spillet på plads"
# renpy/common/00console.rpy:904
old "reload: reloads the game, refreshing the scripts"
new "reload: genindlæser spiller og genopfrisker manuskripterne"
# renpy/common/00console.rpy:912
old "watch <expression>: watch a python expression\n watch short: makes the representation of traced expressions short (default)\n watch long: makes the representation of traced expressions as is"
new "watch <udtryk>: hold øje med et python-udtryk\n watch short: gør repræsentationen af sporede udtryk kort (standard)\n watch long: gør repræsentationen af sporede udtryk, som den er"
# renpy/common/00console.rpy:949
old "unwatch <expression>: stop watching an expression"
new "unwatch <udtryk>: stop med at holde øje med et udtryk"
# renpy/common/00console.rpy:995
old "unwatchall: stop watching all expressions"
new "unwatchall: stop med at holde øje med alle udtryk"
# renpy/common/00console.rpy:1016
old "jump <label>: jumps to label"
new "jump <label>: springer til mærkat"
# renpy/common/00console.rpy:1032
old "short: Shorten the representation of objects on the console (default)."
new "short: Forkort repræsentationen af objekter i konsollen (standard)."
# renpy/common/00console.rpy:1036
old "long: Print the full representation of objects on the console."
new "long: Skriv den fulde repræsentationen af objekter til konsollen."
# renpy/common/00console.rpy:1040
old "escape: Enables escaping of unicode symbols in unicode strings."
new "escape: Aktiverer omdannelsen af unicode-tegn til undvigesekvenser i unicode-strenge."
# renpy/common/00console.rpy:1044
old "unescape: Disables escaping of unicode symbols in unicode strings and print it as is (default)."
new "unescape: Deaktiverer omdannelsen af unicode-tegn til undvigesekvenser i unicode-strenge og skriver dem, som de er (standard)."
# renpy/common/_developer/developer.rpym:69
old "Show Translation Identifiers"
new "Vis oversættelsesidentifikatorer"
# renpy/common/_developer/developer.rpym:72
old "Hide Translation Identifiers"
new "Skjul oversættelsesidentifikatorer"
# renpy/common/_developer/developer.rpym:81
old "Show Filename and Line"
new "Vil filnavn og linje"
# renpy/common/_developer/developer.rpym:84
old "Hide Filename and Line"
new "Skjul filnavn og linje"
# renpy/common/_developer/developer.rpym:127
old "Layer [l]:"
new "Lag [l]:"
# renpy/common/_developer/developer.rpym:131
old " [name] [attributes] (hidden)"
new " [name] [attributes] (skjult)"
# renpy/common/_developer/developer.rpym:135
old " [name] [attributes]"
new " [name] [attributes]"
# renpy/common/_developer/developer.rpym:606
old "\n{color=#fff}Copied to clipboard.{/color}"
new "\n{color=#fff}Kopieret til udklipsholder.{/color}"
# renpy/common/_developer/developer.rpym:612
old "\n{color=#fff}Click to copy.\nDrag to move.{/color}"
new "\n{color=#fff}Klik for at kopiere.\nTræk for at flytte.{/color}"
# renpy/common/_developer/developer.rpym:657
old "Click to open in editor."
new "Klik for at åbne i tekstbehandler."
+202
View File
@@ -0,0 +1,202 @@
translate danish strings:
# renpy/common/00gltest.rpy:89
old "Renderer"
new "Optegner"
# renpy/common/00gltest.rpy:93
old "Automatically Choose"
new "Vælg automatisk"
# renpy/common/00gltest.rpy:100
old "Force GL Renderer"
new "Påtving GL-optegner"
# renpy/common/00gltest.rpy:105
old "Force ANGLE Renderer"
new "Påtving ANGLE-optegner"
# renpy/common/00gltest.rpy:110
old "Force GLES Renderer"
new "Påtving GLES-optegner"
# renpy/common/00gltest.rpy:116
old "Force GL2 Renderer"
new "Påtving GL2-optegner"
# renpy/common/00gltest.rpy:121
old "Force ANGLE2 Renderer"
new "Påtving ANGLE2-optegner"
# renpy/common/00gltest.rpy:126
old "Force GLES2 Renderer"
new "Påtving GLES2-optegner"
# renpy/common/00gltest.rpy:136
old "Enable (No Blocklist)"
new "Aktivér (ingen blocklist)"
# renpy/common/00gltest.rpy:159
old "Powersave"
new "Strømsparing"
# renpy/common/00gltest.rpy:173
old "Framerate"
new "Billedhastighed"
# renpy/common/00gltest.rpy:177
old "Screen"
new "Skærm"
# renpy/common/00gltest.rpy:181
old "60"
new "60"
# renpy/common/00gltest.rpy:185
old "30"
new "30"
# renpy/common/00gltest.rpy:191
old "Tearing"
new "Tearing (overrivning)"
# renpy/common/00gltest.rpy:207
old "Changes will take effect the next time this program is run."
new "Ændringer træder i kraft, næste gang dette program køres."
# renpy/common/00gltest.rpy:242
old "Performance Warning"
new "Ydeevneadvarsel"
# renpy/common/00gltest.rpy:247
old "This computer is using software rendering."
new "Denne computer bruger softwareoptegning."
# renpy/common/00gltest.rpy:249
old "This game requires use of GL2 that can't be initialised."
new "Dette spil kræver brugen af GL2, som ikke kan initialiseres."
# renpy/common/00gltest.rpy:251
old "This computer has a problem displaying graphics: [problem]."
new "Denne computer har et problem med visning af grafik: [problem]."
# renpy/common/00gltest.rpy:255
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display."
new "Dens grafikdrivere er muligvis forældede eller fungerer ikke korrekt. Dette kan føre til langsom eller ukorrkekt grafikvisning."
# renpy/common/00gltest.rpy:259
old "The {a=edit:1:log.txt}log.txt{/a} file may contain information to help you determine what is wrong with your computer."
new "Filen {a=edit:1:log.txt}log.txt{/a} indeholder muligvis information, der kan hjælpe dig med at bestemme, hvad der er galt med din computer."
# renpy/common/00gltest.rpy:264
old "More details on how to fix this can be found in the {a=[url]}documentation{/a}."
new "Flere detaljer om, hvordan du fikser dette, kan findes i {a=[url]}dokumentationen{/a}."
# renpy/common/00gltest.rpy:269
old "Continue, Show this warning again"
new "Fortsæt, og vis denne advarsel igen"
# renpy/common/00gltest.rpy:273
old "Continue, Don't show warning again"
new "Fortsæt, og vis ikke advarsel igen"
# renpy/common/00gltest.rpy:281
old "Change render options"
new "Ændr optegningsindstillinger"
# renpy/common/00gamepad.rpy:32
old "Select Gamepad to Calibrate"
new "Vælg spillekontrol at kalibrere"
# renpy/common/00gamepad.rpy:35
old "No Gamepads Available"
new "Ingen spillekontroller tilgængelige"
# renpy/common/00gamepad.rpy:54
old "Calibrating [name] ([i]/[total])"
new "Kalibrerer [name] ([i]/[total])"
# renpy/common/00gamepad.rpy:58
old "Press or move the '[control!s]' [kind]."
new "Tryk eller bevæg '[control!s]' [kind]."
# renpy/common/00gamepad.rpy:68
old "Skip (A)"
new "Spring over (A)"
# renpy/common/00gamepad.rpy:71
old "Back (B)"
new "Tilbage (B)"
# renpy/common/_errorhandling.rpym:555
old "Open"
new "Åbn"
# renpy/common/_errorhandling.rpym:557
old "Opens the traceback.txt file in a text editor."
new "Åbner traceback.txt-filen i en tekstbehandler."
# renpy/common/_errorhandling.rpym:559
old "Copy BBCode"
new "Kopiér BBCode"
# renpy/common/_errorhandling.rpym:561
old "Copies the traceback.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/."
new "Kopierer traceback.txt-filen til udkplipsholderen som BBCode til forummer som https://lemmasoft.renai.us/."
# renpy/common/_errorhandling.rpym:563
old "Copy Markdown"
new "Kopiér Markdown"
# renpy/common/_errorhandling.rpym:565
old "Copies the traceback.txt file to the clipboard as Markdown for Discord."
new "Kopierer traceback.txt-filen til udkplipsholderen som Markdown til Discord."
# renpy/common/_errorhandling.rpym:594
old "An exception has occurred."
new "En undtagelse er opstået."
# renpy/common/_errorhandling.rpym:617
old "Rollback"
new "Tilbagerulning"
# renpy/common/_errorhandling.rpym:619
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
new "Forsøger en tilbagerulning til et forrigt tidspunkt og gør det muligt for dig at gemme eller træffe et andet valg."
# renpy/common/_errorhandling.rpym:622
old "Ignore"
new "Ignorer"
# renpy/common/_errorhandling.rpym:626
old "Ignores the exception, allowing you to continue."
new "Ignorerer undtagelsen og gør dig i stand til at fortsætte."
# renpy/common/_errorhandling.rpym:628
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
new "Ignorerer undtagelsen og gør dig i stand til at fortsætte. Dette fører ofte til yderligere fejl."
# renpy/common/_errorhandling.rpym:632
old "Reload"
new "Genindlæs"
# renpy/common/_errorhandling.rpym:634
old "Reloads the game from disk, saving and restoring game state if possible."
new "Genindlæser spillet fra disken, gemmer og gendanner spilstatussen hvis muligt."
# renpy/common/_errorhandling.rpym:637
old "Console"
new "Konsol"
# renpy/common/_errorhandling.rpym:639
old "Opens a console to allow debugging the problem."
new "Åbner en konsol for at muliggøre problemløsning."
# renpy/common/_errorhandling.rpym:652
old "Quits the game."
new "Afslutter spillet."
# renpy/common/_errorhandling.rpym:673
old "Parsing the script failed."
new "Fortolkning af manuskript mislykkedes."
+442
View File
@@ -0,0 +1,442 @@
translate danish strings:
# gui/game/gui.rpy:2
old "## Initialization"
new "## Initialisering"
# gui/game/gui.rpy:5
old "## The init offset statement causes the initialization statements in this file to run before init statements in any other file."
new "## Erklæringen init offset får initialiseringserklæringerne i denne fil til at køre før init-erklæringer i enhver anden fil."
# gui/game/gui.rpy:9
old "## Calling gui.init resets the styles to sensible default values, and sets the width and height of the game."
new "## Ved at kalde gui.init nulstilles stilene til fornuftige standardværdier, og bredden og højden af spillet indstilles."
# gui/game/gui.rpy:14
old "## Enable checks for invalid or unstable properties in screens or transforms"
new "## Aktiver tjek efter ugyldige eller ustabile egenskaber i skærme eller transformationer"
# gui/game/gui.rpy:19
old "## GUI Configuration Variables"
new "## GUI-konfigurationsvariabler"
# gui/game/gui.rpy:23
old "## Colors"
new "## Farver"
# gui/game/gui.rpy:25
old "## The colors of text in the interface."
new "## Farverne på tekst i skærmfladen."
# gui/game/gui.rpy:27
old "## An accent color used throughout the interface to label and highlight text."
new "## En accentfarve brugt gennem hele skærmfladen til at markere og fremhæve tekst."
# gui/game/gui.rpy:31
old "## The color used for a text button when it is neither selected nor hovered."
new "## Farven brugt til en tekstknap, når den hverken er valgt eller holdes henover."
# gui/game/gui.rpy:34
old "## The small color is used for small text, which needs to be brighter/darker to achieve the same effect."
new "## Small-farven bruges til lille tekst, som skal være lysere/mørkere for at opnå samme effekt."
# gui/game/gui.rpy:38
old "## The color that is used for buttons and bars that are hovered."
new "## Farven, der bruges til knapper og bjælker, hvor markøren holdes henover."
# gui/game/gui.rpy:41
old "## The color used for a text button when it is selected but not focused. A button is selected if it is the current screen or preference value."
new "## Farven, der bruges til en tekstknap, når den er valgt men ikke i fokus. En knap er valgt, hvis den er den nuværende skærm- eller præferenceværdi."
# gui/game/gui.rpy:45
old "## The color used for a text button when it cannot be selected."
new "## Farven, der bruges til en tekstknap, når den ikke kan vælges."
# gui/game/gui.rpy:48
old "## Colors used for the portions of bars that are not filled in. These are not used directly, but are used when re-generating bar image files."
new "## Farven, der bruges til de dele af bjælker, der ikke er udfyldt. Disse bruges ikke direkte, men bruges, når bjælkebilledfilerne regenereres."
# gui/game/gui.rpy:53
old "## The colors used for dialogue and menu choice text."
new "## Farverne brugt til dialogtekst og tekst i menupunkter."
# gui/game/gui.rpy:58
old "## Fonts and Font Sizes"
new "## Skrifttyper og -størrelser"
# gui/game/gui.rpy:60
old "## The font used for in-game text."
new "## Skrifttypen brugt til tekst i spillet."
# gui/game/gui.rpy:63
old "## The font used for character names."
new "## Skrifttypen brugt til figurnavne."
# gui/game/gui.rpy:66
old "## The font used for out-of-game text."
new "## Skrifttypen brugt til tekst uden for spillet."
# gui/game/gui.rpy:69
old "## The size of normal dialogue text."
new "## Størrelsen på normal dialogtekst."
# gui/game/gui.rpy:72
old "## The size of character names."
new "## Størrelsen på figurnavne."
# gui/game/gui.rpy:75
old "## The size of text in the game's user interface."
new "## Størrelsen på tekst i spillets brugerflade."
# gui/game/gui.rpy:78
old "## The size of labels in the game's user interface."
new "## Størrelsen på mærkater i spillets brugeflade."
# gui/game/gui.rpy:81
old "## The size of text on the notify screen."
new "## Størrelsen på teksten på notifikationsskærmen."
# gui/game/gui.rpy:84
old "## The size of the game's title."
new "## Størrelsen på spillets titel."
# gui/game/gui.rpy:88
old "## Main and Game Menus"
new "## Hoved- og spilmenuer"
# gui/game/gui.rpy:90
old "## The images used for the main and game menus."
new "## Billederne brugt til hoved- og spilmenuerne."
# gui/game/gui.rpy:95
old "## Dialogue"
new "## Dialog"
# gui/game/gui.rpy:97
old "## These variables control how dialogue is displayed on the screen one line at a time."
new "## Disse variabler kontrollerer, hvordan dialog vises på skærmen én linje ad gangen."
# gui/game/gui.rpy:100
old "## The height of the textbox containing dialogue."
new "## Højden af tekstboksen, der indeholder dialog."
# gui/game/gui.rpy:103
old "## The placement of the textbox vertically on the screen. 0.0 is the top, 0.5 is center, and 1.0 is the bottom."
new "## Placeringen af tekstboksen lodret på skærmen. 0.0 er i toppen, 0.5 er midti og 1.0 er i bunden."
# gui/game/gui.rpy:108
old "## The placement of the speaking character's name, relative to the textbox. These can be a whole number of pixels from the left or top, or 0.5 to center."
new "## Placeringen af den talende figurs navn relativt til tekstboksen. Disse kan være et helt antal af pixels fra venstre eller toppen, eller 0.5 for centrering."
# gui/game/gui.rpy:113
old "## The horizontal alignment of the character's name. This can be 0.0 for left-aligned, 0.5 for centered, and 1.0 for right-aligned."
new "## Den vandrette justering af figurens navn. Denne kan være 0.0 for venstrejusteret, 0.5 for centreret og 1.0 for højrejusteret."
# gui/game/gui.rpy:117
old "## The width, height, and borders of the box containing the character's name, or None to automatically size it."
new "## Bredden, højden og kanterne på boksen, der indeholder figurens navn, eller None for automatisk at indstille størrelsen."
# gui/game/gui.rpy:122
old "## The borders of the box containing the character's name, in left, top, right, bottom order."
new "## Kanterne på boksen, der indeholder figurens navn, i rækkefølgen venstre, top, højre, bund."
# gui/game/gui.rpy:126
old "## If True, the background of the namebox will be tiled, if False, the background of the namebox will be scaled."
new "## Ved True bliver navneboksens baggrund gentaget. Ved False bliver navneboksens baggrund skaleret."
# gui/game/gui.rpy:131
old "## The placement of dialogue relative to the textbox. These can be a whole number of pixels relative to the left or top side of the textbox, or 0.5 to center."
new "## Placeringen af dialogen relativt til tekstboksen. Disse kan være et heltal af pixels relativt til venstre eller øverste side af tekstboksen, eller 0.5 for at centrere."
# gui/game/gui.rpy:137
old "## The maximum width of dialogue text, in pixels."
new "## Den maksimale bredde af dialogtekst i pixels."
# gui/game/gui.rpy:140
old "## The horizontal alignment of the dialogue text. This can be 0.0 for left-aligned, 0.5 for centered, and 1.0 for right-aligned."
new "## Den vandrette justering af dialogteksten. Dette kan være 0.0 for venstrejusteret, 0.5 for centreret og 1.0 for højrejusteret."
# gui/game/gui.rpy:145
old "## Buttons"
new "## Knapper"
# gui/game/gui.rpy:147
old "## These variables, along with the image files in gui/button, control aspects of how buttons are displayed."
new "## Disse variable kontrollerer sammen med billedfilerne i gui/button aspekter af, hvordan knapper vises."
# gui/game/gui.rpy:150
old "## The width and height of a button, in pixels. If None, Ren'Py computes a size."
new "## Bredden og højden af en knap i pixels. Hvis None beregner Ren'Py en størrelse."
# gui/game/gui.rpy:154
old "## The borders on each side of the button, in left, top, right, bottom order."
new "## Kanterne på hver side af knappen i rækkefølgen venstre, top, højre, bund."
# gui/game/gui.rpy:157
old "## If True, the background image will be tiled. If False, the background image will be linearly scaled."
new "## Ved True gentages baggrundsbilledet. Ved False bliver baggrundsbilledet skaleret lineært."
# gui/game/gui.rpy:161
old "## The font used by the button."
new "## Skrifttypen brugt af knappen."
# gui/game/gui.rpy:164
old "## The size of the text used by the button."
new "## Størrelsen af tekst brugt af knappen."
# gui/game/gui.rpy:167
old "## The color of button text in various states."
new "## Farven af knappen i forskellige tilstande."
# gui/game/gui.rpy:173
old "## The horizontal alignment of the button text. (0.0 is left, 0.5 is center, 1.0 is right)."
new "## Den vandrette justering af knapteksten. (0.0 er venstre, 0.5 er midtfor, 1.0 er højre)."
# gui/game/gui.rpy:178
old "## These variables override settings for different kinds of buttons. Please see the gui documentation for the kinds of buttons available, and what each is used for."
new "## Disse variabler tilsidesætter indstillinger for forskellige typer knapper. Se venligst GUI-dokumentationen for typen af knapper, der er tilgængelige, og hvad hver af dem bruges til."
# gui/game/gui.rpy:182
old "## These customizations are used by the default interface:"
new "## Disse tilpasninger bruger af standardgrænsefladen:"
# gui/game/gui.rpy:197
old "## You can also add your own customizations, by adding properly-named variables. For example, you can uncomment the following line to set the width of a navigation button."
new "## Du kan også tilføje dine egne tilpasninger ved at tilføje variabler med det korrekte navn. For eksempel kan du afkommentere følgende linje for at angive bredden på en navigationsknap."
# gui/game/gui.rpy:204
old "## Choice Buttons"
new "## Valgmulighedsknapper"
# gui/game/gui.rpy:206
old "## Choice buttons are used in the in-game menus."
new "## Valgmulighedsknapper bruges i menuerne i spillet."
# gui/game/gui.rpy:220
old "## File Slot Buttons"
new "## Filpladsknapper"
# gui/game/gui.rpy:222
old "## A file slot button is a special kind of button. It contains a thumbnail image, and text describing the contents of the save slot. A save slot uses image files in gui/button, like the other kinds of buttons."
new "## En filpladsknap er en speciel slags knap. Den indeholder et miniaturebillede og tekst, der beskriver indholdet af gemmepladsen. En gemmeplads bruger billedfiler i gui/button ligesom de andre slags knapper."
# gui/game/gui.rpy:226
old "## The save slot button."
new "## Gemmepladsknappen."
# gui/game/gui.rpy:236
old "## The width and height of thumbnails used by the save slots."
new "## Bredden og højden af miniaturebilleder brugt af gemmepladserne."
# gui/game/gui.rpy:240
old "## The number of columns and rows in the grid of save slots."
new "## Antallet af søjler og rækker i gitteret med gemmepladser."
# gui/game/gui.rpy:245
old "## Positioning and Spacing"
new "## Positionering og afstand"
# gui/game/gui.rpy:247
old "## These variables control the positioning and spacing of various user interface elements."
new "## Disse variable kontrollerer placering af og afstanden mellem forskellige brugerfladeelementer."
# gui/game/gui.rpy:250
old "## The position of the left side of the navigation buttons, relative to the left side of the screen."
new "## Placeringen af venstre side af navigationsknapperne, relativt til venstre side af skærmen."
# gui/game/gui.rpy:254
old "## The vertical position of the skip indicator."
new "## Den lodrette placering af overspringningsindikatoren."
# gui/game/gui.rpy:257
old "## The vertical position of the notify screen."
new "## Den lodrette placering af notifikationsskærmen."
# gui/game/gui.rpy:260
old "## The spacing between menu choices."
new "## Afstanden mellem menuvalg."
# gui/game/gui.rpy:263
old "## Buttons in the navigation section of the main and game menus."
new "## Knapper i navigationssektionen af hoved- og spilmenuerne."
# gui/game/gui.rpy:266
old "## Controls the amount of spacing between preferences."
new "## Kontrollerer mængden af afstand mellem præferencer."
# gui/game/gui.rpy:269
old "## Controls the amount of spacing between preference buttons."
new "## Kontrollerer mængden af afstand mellem præferenceknapper."
# gui/game/gui.rpy:272
old "## The spacing between file page buttons."
new "## Afstanden mellem filsideknapper."
# gui/game/gui.rpy:275
old "## The spacing between file slots."
new "## Afstanden mellem filpladser."
# gui/game/gui.rpy:278
old "## The position of the main menu text."
new "## Placeringen af hovedmenuteksten."
# gui/game/gui.rpy:282
old "## Frames"
new "## Rammer"
# gui/game/gui.rpy:284
old "## These variables control the look of frames that can contain user interface components when an overlay or window is not present."
new "## Disse variable kontrollerer udseendet på rammer, der kan indeholde brugefladekomponenter, når en overlejring eller et vindue ikke er til stede."
# gui/game/gui.rpy:287
old "## Generic frames."
new "## Generiske rammer."
# gui/game/gui.rpy:290
old "## The frame that is used as part of the confirm screen."
new "## Rammen, der bruges som del af bekræftelsesskærmen."
# gui/game/gui.rpy:293
old "## The frame that is used as part of the skip screen."
new "## Rammen, der bruges som del af overspringningsskærmen."
# gui/game/gui.rpy:296
old "## The frame that is used as part of the notify screen."
new "## Rammen, der bruges som del af notifikationsskærmen."
# gui/game/gui.rpy:299
old "## Should frame backgrounds be tiled?"
new "## Bør rammebaggrunde gentages?"
# gui/game/gui.rpy:303
old "## Bars, Scrollbars, and Sliders"
new "## Bjælker, rullebjælker og skydere"
# gui/game/gui.rpy:305
old "## These control the look and size of bars, scrollbars, and sliders."
new "## Disse kontrollerer udseendet og størrelsen på bjælker, rullebjælker og skydere."
# gui/game/gui.rpy:307
old "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written screens."
new "## Standard-GUI'en bruger kun skydere og lodrette rullebjælker. Alle de andre bjælker bruges kun i skærme skrevet af spiludvikleren."
# gui/game/gui.rpy:310
old "## The height of horizontal bars, scrollbars, and sliders. The width of vertical bars, scrollbars, and sliders."
new "## Højden på vandrette bjælker, rullebjælker og skydere. Bredden på lodrette bjælker, rullebjælker og skydere."
# gui/game/gui.rpy:316
old "## True if bar images should be tiled. False if they should be linearly scaled."
new "## True, hvis bjælkebilleder skal gentages. False, hvis de skal skaleres lineært."
# gui/game/gui.rpy:321
old "## Horizontal borders."
new "## Vandrette kanter."
# gui/game/gui.rpy:326
old "## Vertical borders."
new "## Lodrette kanter."
# gui/game/gui.rpy:331
old "## What to do with unscrollable scrollbars in the gui. \"hide\" hides them, while None shows them."
new "## Hvad der skal gøres ved urullelige rullebjælker i gui'en. \"hide\" skjuler dem, mens None viser dem."
# gui/game/gui.rpy:336
old "## History"
new "## Historik"
# gui/game/gui.rpy:338
old "## The history screen displays dialogue that the player has already dismissed."
new "## Historikskærmen viser dialog, som spilleren allerede er gået videre fra."
# gui/game/gui.rpy:340
old "## The number of blocks of dialogue history Ren'Py will keep."
new "## Antallet af blokke dialoghistorik, som Ren'Py gemmer."
# gui/game/gui.rpy:343
old "## The height of a history screen entry, or None to make the height variable at the cost of performance."
new "## Højden på et historikskærmsindlæg, eller None for at gøre højden variabel på bekostning af ydeevne."
# gui/game/gui.rpy:347
old "## The position, width, and alignment of the label giving the name of the speaking character."
new "## Placeringen, bredden og justeringen af mærkatet, der angiver navnet på den talende figur."
# gui/game/gui.rpy:354
old "## The position, width, and alignment of the dialogue text."
new "## Placeringen, bredden og justeringen af dialogteksten."
# gui/game/gui.rpy:361
old "## NVL-Mode"
new "## NVL-tilstand"
# gui/game/gui.rpy:363
old "## The NVL-mode screen displays the dialogue spoken by NVL-mode characters."
new "## NVL-tilstandsskærmen viser dialogen sagt af NVL-tilstandsfigurer."
# gui/game/gui.rpy:365
old "## The borders of the background of the NVL-mode background window."
new "## Kanterne på baggrunden af baggrundsvinduet i NVL-tilstand."
# gui/game/gui.rpy:368
old "## The maximum number of NVL-mode entries Ren'Py will display. When more entries than this are to be show, the oldest entry will be removed."
new "## Det maksimale antal af NVL-tilstandsindlæg, som Ren'Py viser. Når flere indlæg end disse skal vises, bliver det ældste indlæg fjernet."
# gui/game/gui.rpy:372
old "## The height of an NVL-mode entry. Set this to None to have the entries dynamically adjust height."
new "## Højden på et NVL-tilstandsindlæg. Stil denne til None for at få indlæggene til dynamisk at justere højde."
# gui/game/gui.rpy:376
old "## The spacing between NVL-mode entries when gui.nvl_height is None, and between NVL-mode entries and an NVL-mode menu."
new "## Afstanden mellem NVL-tilstandsindlæg, når gui.nvl_height er None, og mellem NVL-tilstandsindlæg og en menu i NVL-tilstand."
# gui/game/gui.rpy:393
old "## The position, width, and alignment of nvl_thought text (the text said by the nvl_narrator character.)"
new "## Placeringen, bredden og justeringen af nvl_thought-tekst (teksten sagt af figuren nvl_narrator.)"
# gui/game/gui.rpy:400
old "## The position of nvl menu_buttons."
new "## Placeringen af nvl menu_buttons."
# gui/game/gui.rpy:405
old "## Localization"
new "## Lokalisering"
# gui/game/gui.rpy:407
old "## This controls where a line break is permitted. The default is suitable for most languages. A list of available values can be found at https://www.renpy.org/doc/html/style_properties.html#style-property-language"
new "## Dette kontrollerer, hvor et linjeskift er tilladt. Standardinstilligen er egnet til de fleste sprog. En liste over tilgængelige værdier kan findes på https://www.renpy.org/doc/html/style_properties.html#style-property-language"
# gui/game/gui.rpy:415
old "## Mobile devices"
new "## Mobilenheder"
# gui/game/gui.rpy:420
old "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
new "## Dette øger størrelsen på hurtigknapperne for at gøre dem lettere at ramme på tablets og mobiler."
# gui/game/gui.rpy:427
old "## This changes the size and spacing of various GUI elements to ensure they are easily visible on phones."
new "## Dette ændrer størrelsen på og afstanden mellem forskellige GUI-elementer for at sørge for, at de er let synlige på mobiler."
# gui/game/gui.rpy:432
old "## Font sizes."
new "## Skriftstørrelser."
# gui/game/gui.rpy:440
old "## Adjust the location of the textbox."
new "## Juster tekstboksens placering."
# gui/game/gui.rpy:446
old "## Change the size and spacing of various things."
new "## Ændr størrelsen på og afstanden mellem forskellige ting."
# gui/game/gui.rpy:460
old "## File button layout."
new "## Filknapudformning."
# gui/game/gui.rpy:464
old "## NVL-mode."
new "## NVL-tilstand."
# gui/game/gui.rpy:347
old "## Additional space to add between history screen entries."
new "## Yderligere afstand at tilføje mellem historikskærmsindlæg."
File diff suppressed because it is too large Load Diff
+26
View File
@@ -0,0 +1,26 @@
translate danish strings:
# renpy/common/_layout/classic_joystick_preferences.rpym:94
old "Joystick Mapping"
new "Styrepindskortlægning"
# renpy/common/_layout/classic_load_save.rpym:138
old "Empty Slot."
new "Tom plads."
# renpy/common/_layout/classic_load_save.rpym:170
old "a"
new "a"
# renpy/common/_layout/classic_load_save.rpym:179
old "q"
new "h"
# renpy/common/_compat/gamemenu.rpym:355
old "Previous"
new "Forrige"
# renpy/common/_compat/gamemenu.rpym:362
old "Next"
new "Næste"
+198
View File
@@ -0,0 +1,198 @@
translate danish strings:
# gui/game/options.rpy:1
old "## This file contains options that can be changed to customize your game."
new "## Denne fil indeholder indstillinger, der kan ændres for at tilpasse dit spil."
# gui/game/options.rpy:4
old "## Lines beginning with two '#' marks are comments, and you shouldn't uncomment them. Lines beginning with a single '#' mark are commented-out code, and you may want to uncomment them when appropriate."
new "## Linjer, der begynder med to '#'-tegn er kommentarer, og du bør ikke afkommentere dem. Linjer, der begynder med et enkelt '#'-tegn er udkommenteret kode, som du kan afkommentere i passende tilfælde."
# gui/game/options.rpy:10
old "## Basics"
new "## Grundlæggende"
# gui/game/options.rpy:12
old "## A human-readable name of the game. This is used to set the default window title, and shows up in the interface and error reports."
new "## Et menneskelæsbart navn på spillet. Dette bruges til at angive standardvinduestitlen, og det dukker op i grænsefladen og fejlrapporter."
# gui/game/options.rpy:15
old "## The _() surrounding the string marks it as eligible for translation."
new "## Tegnene _(), der omringer strengen, markerer det som kvalificeret til oversættelse."
# gui/game/options.rpy:17
old "Ren'Py 7 Default GUI"
new "Ren'Py 7 standard-GUI"
# gui/game/options.rpy:20
old "## Determines if the title given above is shown on the main menu screen. Set this to False to hide the title."
new "## Bestemmer, om den ovenfor givne titel vises på hovedmenuskærmen. Stil dette til False for at skjule title."
# gui/game/options.rpy:26
old "## The version of the game."
new "## Spilversionen."
# gui/game/options.rpy:31
old "## Text that is placed on the game's about screen. Place the text between the triple-quotes, and leave a blank line between paragraphs."
new "## Tekst, der placeres på spillets om-skærm. Placer teksten mellem de tredobbelte citationstegn og efterlad en tom linje mellem afsnit."
# gui/game/options.rpy:38
old "## A short name for the game used for executables and directories in the built distribution. This must be ASCII-only, and must not contain spaces, colons, or semicolons."
new "## Et kort navn til spillet, der bruges til ekskverbare filer og mapper i den fremstillede distribution. Dette må kun være ASCII, og det må ikke indeholde mellemrum, koloner eller semikoloner."
# gui/game/options.rpy:45
old "## Sounds and music"
new "## Lyde og musik"
# gui/game/options.rpy:47
old "## These three variables control, among other things, which mixers are shown to the player by default. Setting one of these to False will hide the appropriate mixer."
new "## Disse tre variabler kontrollerer blandt andet, hvilke mixere der vises til spilleren som standard. Ved at stille en af disse til False skjules den tilsvarende mixer."
# gui/game/options.rpy:56
old "## To allow the user to play a test sound on the sound or voice channel, uncomment a line below and use it to set a sample sound to play."
new "## For at gøre det muligt for brugeren at afspille en testlyd på lydeffekt- eller stemmekanalen, så afkommenter en linje nedenfor og brug den til at angive en prøvelyd at afspille."
# gui/game/options.rpy:63
old "## Uncomment the following line to set an audio file that will be played while the player is at the main menu. This file will continue playing into the game, until it is stopped or another file is played."
new "## Afkommenter følgende linje for at angive en lydfil, der afspilles, mens spilleren er i hovedmenuen. Denne fil fortsætter med at afspille inde i spillet, indtil den stoppes, eller en anden fil afspilles."
# gui/game/options.rpy:70
old "## Transitions"
new "## Overgange"
# gui/game/options.rpy:72
old "## These variables set transitions that are used when certain events occur. Each variable should be set to a transition, or None to indicate that no transition should be used."
new "## Disse variable angiver overgange, der bruges, når bestemte begivenheder opstår. Hver variabel bør sættes til en overgang, eller til None for at indikere, at ingen overgang skal bruges."
# gui/game/options.rpy:76
old "## Entering or exiting the game menu."
new "## Når man går ind i eller ud af spilmenuen."
# gui/game/options.rpy:82
old "## Between screens of the game menu."
new "## Mellem skærme i spilmenuen."
# gui/game/options.rpy:87
old "## A transition that is used after a game has been loaded."
new "## En overgang, der bruges, efter et spil er blevet indlæst."
# gui/game/options.rpy:92
old "## Used when entering the main menu after the game has ended."
new "## Bruges, når man går ind i hovedmenuen, efter spillet er sluttet."
# gui/game/options.rpy:97
old "## A variable to set the transition used when the game starts does not exist. Instead, use a with statement after showing the initial scene."
new "## Der findes ingen variabel til at angive overgangen, der bruges, når spillet startes. Brug i stedet en with-sætning efter visning af den første scene."
# gui/game/options.rpy:102
old "## Window management"
new "## Vinduesstyring"
# gui/game/options.rpy:104
old "## This controls when the dialogue window is displayed. If \"show\", it is always displayed. If \"hide\", it is only displayed when dialogue is present. If \"auto\", the window is hidden before scene statements and shown again once dialogue is displayed."
new "## Dette kontrollerer, hvornår dialogvinduet vises. Ved \"show\" vises det altid. Ved \"hide\" vises det kun, når dialog er til stede. Ved \"auto\" skjules vinduet før scene-sætninger og vises igen, når dialog vises."
# gui/game/options.rpy:109
old "## After the game has started, this can be changed with the \"window show\", \"window hide\", and \"window auto\" statements."
new "## Efter spillet er startet, kan dette ændres med sætningerne \"window show\", \"window hide\", og \"window auto\"."
# gui/game/options.rpy:115
old "## Transitions used to show and hide the dialogue window"
new "## Overgange brugt til at vise og skjule dialogvinduet"
# gui/game/options.rpy:121
old "## Preference defaults"
new "## Standardpræferencer"
# gui/game/options.rpy:123
old "## Controls the default text speed. The default, 0, is infinite, while any other number is the number of characters per second to type out."
new "## Kontrollerer standardteksthastigheden. Standarden, 0, er uendelig, mens ethvert andet tal er antallet af tegn pr. sekund, der skrives."
# gui/game/options.rpy:129
old "## The default auto-forward delay. Larger numbers lead to longer waits, with 0 to 30 being the valid range."
new "## Standardforsinkelsen for auto-fremad. Større tal fører til længere ventetider, med 0 til 30 som den gyldige rækkevidde."
# gui/game/options.rpy:135
old "## Save directory"
new "## Gemmefilmappe"
# gui/game/options.rpy:137
old "## Controls the platform-specific place Ren'Py will place the save files for this game. The save files will be placed in:"
new "## Kontrollerer det platformspecifikke sted, hvorpå Ren'Py placerer gemmefilerne for dette spil. Gemmefilerne bliver placeret i:"
# gui/game/options.rpy:140
old "## Windows: %APPDATA\\RenPy\\<config.save_directory>"
new "## Windows: %APPDATA\\RenPy\\<config.save_directory>"
# gui/game/options.rpy:142
old "## Macintosh: $HOME/Library/RenPy/<config.save_directory>"
new "## Macintosh: $HOME/Library/RenPy/<config.save_directory>"
# gui/game/options.rpy:144
old "## Linux: $HOME/.renpy/<config.save_directory>"
new "## Linux: $HOME/.renpy/<config.save_directory>"
# gui/game/options.rpy:146
old "## This generally should not be changed, and if it is, should always be a literal string, not an expression."
new "## Dette bør generelt ikke ændres, og hvis det bliver, bør det altid være en litteral streng, ikke et udtryk."
# gui/game/options.rpy:152
old "## Icon"
new "## Ikon"
# gui/game/options.rpy:154
old "## The icon displayed on the taskbar or dock."
new "## Ikonet vises på proceslinjen eller docken."
# gui/game/options.rpy:159
old "## Build configuration"
new "## Fremstillingskonfiguration"
# gui/game/options.rpy:161
old "## This section controls how Ren'Py turns your project into distribution files."
new "## Denne sektion kontrollerer, hvordan Ren'Py laver dit projekt om til distributionsfiler."
# gui/game/options.rpy:166
old "## The following functions take file patterns. File patterns are case- insensitive, and matched against the path relative to the base directory, with and without a leading /. If multiple patterns match, the first is used."
new "## De følgende funktioner tager filmønstre. I filmønstre skelnes der ikke mellem små og store bogstaver, og de matches mod filstien relativt til grundmappen med og uden et foranstående /. Hvis flere mønstre matcher, bruges det første."
# gui/game/options.rpy:171
old "## In a pattern:"
new "## I et mønster:"
# gui/game/options.rpy:173
old "## / is the directory separator."
new "## / er mappeseparatoren."
# gui/game/options.rpy:175
old "## * matches all characters, except the directory separator."
new "## * matcher alle tegn bortset fra mappeseparatoren."
# gui/game/options.rpy:177
old "## ** matches all characters, including the directory separator."
new "## ** matcher alle tegn inklusiv mappeseparatoren."
# gui/game/options.rpy:179
old "## For example, \"*.txt\" matches txt files in the base directory, \"game/**.ogg\" matches ogg files in the game directory or any of its subdirectories, and \"**.psd\" matches psd files anywhere in the project."
new "## For eksempel matcher \"*.txt\" txt-filer i grundmappen, \"game/**.ogg\" matcher ogg-filer i mappen game eller en hvilken som helst af dens undermapper, og \"**.psd\" matcher psd-filer hvor som helst i projektet."
# gui/game/options.rpy:183
old "## Classify files as None to exclude them from the built distributions."
new "## Klassificer filer som None for at ekskludere dem fra de fremstilte distributioner."
# gui/game/options.rpy:191
old "## To archive files, classify them as 'archive'."
new "## Klassificer filer som 'archive' for at arkivere dem."
# gui/game/options.rpy:196
old "## Files matching documentation patterns are duplicated in a mac app build, so they appear in both the app and the zip file."
new "## Filer, der matcher dokumentationsmønstre, duplikeres i fremstillingen af en mac-app, så de optræder både i appen og zip-filen."
# gui/game/options.rpy:203
old "## A Google Play license key is required to perform in-app purchases. It can be found in the Google Play developer console, under \"Monetize\" > \"Monetization Setup\" > \"Licensing\"."
new "## En Google Play-licensnøgle er påkrævet for at udføre in-app-betalinger. Den kan findes i Google Play-udviklerkonsollen under \"Tjen penge\" > \"Konfiguration af indtægtsgenerering\" > \"Licens\"."
# gui/game/options.rpy:210
old "## The username and project name associated with an itch.io project, separated by a slash."
new "## Brugernavnet og projektnavnen forbundet med et itch.io-projekt, adskilt med en skåstreg."
+678
View File
@@ -0,0 +1,678 @@
translate danish strings:
# gui/game/screens.rpy:9
old "## Styles"
new "## Stile"
# gui/game/screens.rpy:81
old "## In-game screens"
new "## Skærme i spillet"
# gui/game/screens.rpy:85
old "## Say screen"
new "## Dialogskærmen"
# gui/game/screens.rpy:87
old "## The say screen is used to display dialogue to the player. It takes two parameters, who and what, which are the name of the speaking character and the text to be displayed, respectively. (The who parameter can be None if no name is given.)"
new "## Dialogskærmen bruges til at vise dialog til spilleren. Den tager to parametre, who (hvem) og what (hvad), som henholdsvis er navnet på den talende figur og teksten, der skal vises. (Parametren who kan være None, hvis intet navn angives.)"
# gui/game/screens.rpy:92
old "## This screen must create a text displayable with id \"what\", as Ren'Py uses this to manage text display. It can also create displayables with id \"who\" and id \"window\" to apply style properties."
new "## Denne skærm skal oprette et visbart tekstelement med id'et \"what\", da Ren'Py bruger denne til at styre tekstvisning. Den kan også oprette visbare elementer med id'et \"who\" og id'et \"window\" for at anvende stilegenskaber."
# gui/game/screens.rpy:96
old "## https://www.renpy.org/doc/html/screen_special.html#say"
new "## https://www.renpy.org/doc/html/screen_special.html#say"
# gui/game/screens.rpy:114
old "## If there's a side image, display it above the text. Do not display on the phone variant - there's no room."
new "## Hvis der er et sidebillede, så vis det over teksten. Vis ikke på mobilvarianten - der er ikke plads."
# gui/game/screens.rpy:120
old "## Make the namebox available for styling through the Character object."
new "## Gør navneboksen tilgængelig for stilisering gennem Character-objektet."
# gui/game/screens.rpy:165
old "## Input screen"
new "## Inputskærmen"
# gui/game/screens.rpy:167
old "## This screen is used to display renpy.input. The prompt parameter is used to pass a text prompt in."
new "## Denne skærm bruges til at vise renpy.input. Promptparameteren bruges til at føre en tekstprompt ind."
# gui/game/screens.rpy:170
old "## This screen must create an input displayable with id \"input\" to accept the various input parameters."
new "## Denne skærm skal oprette et visbart inputelement med id'et \"input\" for at acceptere de forskellige inputparametre."
# gui/game/screens.rpy:173
old "## https://www.renpy.org/doc/html/screen_special.html#input"
new "## https://www.renpy.org/doc/html/screen_special.html#input"
# gui/game/screens.rpy:200
old "## Choice screen"
new "## Valgmulighedsskærmen"
# gui/game/screens.rpy:202
old "## This screen is used to display the in-game choices presented by the menu statement. The one parameter, items, is a list of objects, each with caption and action fields."
new "## Denne skærm bruges til at vise valg i spillet præsenteret af menu-sætningen. Den ene parameter, items, er en liste af objekter, hver med caption- og action-felter."
# gui/game/screens.rpy:206
old "## https://www.renpy.org/doc/html/screen_special.html#choice"
new "## https://www.renpy.org/doc/html/screen_special.html#choice"
# gui/game/screens.rpy:234
old "## Quick Menu screen"
new "## Hurtigmenuskærmen"
# gui/game/screens.rpy:236
old "## The quick menu is displayed in-game to provide easy access to the out-of-game menus."
new "## Hurtigmenuen vises i spillet for at give let adgang til menuerne uden for spillet."
# gui/game/screens.rpy:241
old "## Ensure this appears on top of other screens."
new "## Sørg for at denne vises oven på andre skærme."
# gui/game/screens.rpy:252
old "Back"
new "Tilbage"
# gui/game/screens.rpy:253
old "History"
new "Historik"
# gui/game/screens.rpy:254
old "Skip"
new "Spring over"
# gui/game/screens.rpy:255
old "Auto"
new "Auto"
# gui/game/screens.rpy:256
old "Save"
new "Gem"
# gui/game/screens.rpy:257
old "Q.Save"
new "H.gem"
# gui/game/screens.rpy:258
old "Q.Load"
new "H.indlæs"
# gui/game/screens.rpy:259
old "Prefs"
new "Præf."
# gui/game/screens.rpy:262
old "## This code ensures that the quick_menu screen is displayed in-game, whenever the player has not explicitly hidden the interface."
new "## Denne kode sørger for at quick_menu-skærmen vises i spillet, når end spilleren ikke eksplicit har skjult grænsefladen."
# gui/game/screens.rpy:280
old "## Main and Game Menu Screens"
new "## Hoved- og spilmenuskærme"
# gui/game/screens.rpy:283
old "## Navigation screen"
new "## Navigationsskærmen"
# gui/game/screens.rpy:285
old "## This screen is included in the main and game menus, and provides navigation to other menus, and to start the game."
new "## Denne skærm er inkluderet i hoved- og spilmenuerne og giver navigation til andre menuer og til at starte spillet."
# gui/game/screens.rpy:300
old "Start"
new "Start"
# gui/game/screens.rpy:308
old "Load"
new "Indlæs"
# gui/game/screens.rpy:310
old "Preferences"
new "Præferencer"
# gui/game/screens.rpy:314
old "End Replay"
new "Slut genafspilning"
# gui/game/screens.rpy:318
old "Main Menu"
new "Hovedmenu"
# gui/game/screens.rpy:320
old "About"
new "Om"
# gui/game/screens.rpy:324
old "## Help isn't necessary or relevant to mobile devices."
new "## Hjælp er ikke nødvendig eller relevant for mobilenheder."
# gui/game/screens.rpy:325
old "Help"
new "Hjælp"
# gui/game/screens.rpy:329
old "## The quit button is banned on iOS and unnecessary on Android and Web."
new "## Afslut-knappen er forbudt på iOS og unødvendig på Android og web."
# gui/game/screens.rpy:330
old "Quit"
new "Afslut"
# gui/game/screens.rpy:344
old "## Main Menu screen"
new "## Hovedmenuskærmen"
# gui/game/screens.rpy:346
old "## Used to display the main menu when Ren'Py starts."
new "## Bruges til at vise hovedmenuen, når Ren'Py starter."
# gui/game/screens.rpy:348
old "## https://www.renpy.org/doc/html/screen_special.html#main-menu"
new "## https://www.renpy.org/doc/html/screen_special.html#main-menu"
# gui/game/screens.rpy:352
old "## This ensures that any other menu screen is replaced."
new "## Dette sikrer, at andre eventuelle menuskærme erstattes."
# gui/game/screens.rpy:357
old "## This empty frame darkens the main menu."
new "## Denne tomme ramme mørkner hovedmenuen."
# gui/game/screens.rpy:361
old "## The use statement includes another screen inside this one. The actual contents of the main menu are in the navigation screen."
new "## Sætningen use inkluderer en anden skærm inde i denne. Det faktiske indhold af hovedmenuen er i navigationsskærmen."
# gui/game/screens.rpy:406
old "## Game Menu screen"
new "## Spilmenuskærmen"
# gui/game/screens.rpy:408
old "## This lays out the basic common structure of a game menu screen. It's called with the screen title, and displays the background, title, and navigation."
new "## Denne udlægger de grundlæggende fællesstrukturer for en spilmenuskærm. Den kaldes med screen-titlen og viser baggrunden, titlen og navigationen."
# gui/game/screens.rpy:411
old "## The scroll parameter can be None, or one of \"viewport\" or \"vpgrid\". This screen is intended to be used with one or more children, which are transcluded (placed) inside it."
new "## Parameteren scroll kan være None eller en af \"viewport\" eller \"vpgrid\". Denne skærm er tiltænkt at blive brugt med et eller flere børn, som transkluderes (placeres) inde i den."
# gui/game/screens.rpy:429
old "## Reserve space for the navigation section."
new "## Reserver plads til navigationssektionen"
# gui/game/screens.rpy:471
old "Return"
new "Tilbage"
# gui/game/screens.rpy:534
old "## About screen"
new "## Om-skærmen"
# gui/game/screens.rpy:536
old "## This screen gives credit and copyright information about the game and Ren'Py."
new "## Denne skærm giver kreditering og ophavsretsinformation om spillet og Ren'Py."
# gui/game/screens.rpy:539
old "## There's nothing special about this screen, and hence it also serves as an example of how to make a custom screen."
new "## Der er intet specielt ved denne skærm, og derfor fungerer den også som et eksempel, på hvordan man laver en skræddersyet skærm."
# gui/game/screens.rpy:546
old "## This use statement includes the game_menu screen inside this one. The vbox child is then included inside the viewport inside the game_menu screen."
new "## Denne use-sætning inkluderer game_menu-skærmen inde i denne. Barnet vbox inkluderes derefter inde i visningsporten inde i game_menu-skærmen."
# gui/game/screens.rpy:556
old "Version [config.version!t]\n"
new "Version [config.version!t]\n"
# gui/game/screens.rpy:558
old "## gui.about is usually set in options.rpy."
new "## gui.about indstilles sædvanligvis i options.rpy."
# gui/game/screens.rpy:562
old "Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]"
new "Lavet med {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]"
# gui/game/screens.rpy:573
old "## Load and Save screens"
new "## Indlæsnings- og gemmeskærmene"
# gui/game/screens.rpy:575
old "## These screens are responsible for letting the player save the game and load it again. Since they share nearly everything in common, both are implemented in terms of a third screen, file_slots."
new "## Disse skærme er ansvarlige for at lade spilleren gemme spillet og indlæse det igen. Siden de har næsten alting tilfælles, implementeres begge i form af en tredje skærm, file_slots."
# gui/game/screens.rpy:579
old "## https://www.renpy.org/doc/html/screen_special.html#save https://www.renpy.org/doc/html/screen_special.html#load"
new "## https://www.renpy.org/doc/html/screen_special.html#save https://www.renpy.org/doc/html/screen_special.html#load"
# gui/game/screens.rpy:598
old "Page {}"
new "Side {}"
# gui/game/screens.rpy:598
old "Automatic saves"
new "Autogemmefiler"
# gui/game/screens.rpy:598
old "Quick saves"
new "Hurtiggemmefiler"
# gui/game/screens.rpy:604
old "## This ensures the input will get the enter event before any of the buttons do."
new "## Dette sikrer, at inputtet får enter-begivenheden før nogen af knapperne gør."
# gui/game/screens.rpy:608
old "## The page name, which can be edited by clicking on a button."
new "## Sidenavnet, som kan redigeres ved at klikke på en knap."
# gui/game/screens.rpy:620
old "## The grid of file slots."
new "## Filpladsgitteret."
# gui/game/screens.rpy:640
old "{#file_time}%A, %B %d %Y, %H:%M"
new "{#file_time}%A, %d %B %Y, %H:%M"
# gui/game/screens.rpy:640
old "empty slot"
new "tom plads"
# gui/game/screens.rpy:648
old "## Buttons to access other pages."
new "## Knapper til at tilgå andre sider."
# gui/game/screens.rpy:660
old "<"
new "<"
# gui/game/screens.rpy:663
old "{#auto_page}A"
new "{#auto_page}A"
# gui/game/screens.rpy:666
old "{#quick_page}Q"
new "{#quick_page}H"
# gui/game/screens.rpy:668
old "## range(1, 10) gives the numbers from 1 to 9."
new "## range(1, 10) giver numrene fra 1 til 9."
# gui/game/screens.rpy:672
old ">"
new ">"
# gui/game/screens.rpy:676
old "Upload Sync"
new "Send synkronisering"
# gui/game/screens.rpy:680
old "Download Sync"
new "Hent synkronisering"
# gui/game/screens.rpy:717
old "## Preferences screen"
new "## Præferenceskærmen"
# gui/game/screens.rpy:719
old "## The preferences screen allows the player to configure the game to better suit themselves."
new "## Præferenceskærmen gør det muligt for spilleren at konfigurere spillet til bedre at passe vedkommende."
# gui/game/screens.rpy:722
old "## https://www.renpy.org/doc/html/screen_special.html#preferences"
new "## https://www.renpy.org/doc/html/screen_special.html#preferences"
# gui/game/screens.rpy:739
old "Display"
new "Skærmvisning"
# gui/game/screens.rpy:740
old "Window"
new "Vindue"
# gui/game/screens.rpy:741
old "Fullscreen"
new "Fuldskærm"
# gui/game/screens.rpy:746
old "Unseen Text"
new "Uset tekst"
# gui/game/screens.rpy:747
old "After Choices"
new "Efter valg"
# gui/game/screens.rpy:748
old "Transitions"
new "Overgange"
# gui/game/screens.rpy:750
old "## Additional vboxes of type \"radio_pref\" or \"check_pref\" can be added here, to add additional creator-defined preferences."
new "## Yderligere vboxe af typen \"radio_pref\" eller \"check_pref\" kan tilføjes her for at tilføje yderligere udviklerdefinerede præferencer."
# gui/game/screens.rpy:761
old "Text Speed"
new "Teksthastighed"
# gui/game/screens.rpy:765
old "Auto-Forward Time"
new "Tid for auto-fremad"
# gui/game/screens.rpy:772
old "Music Volume"
new "Musiklydstyrke"
# gui/game/screens.rpy:779
old "Sound Volume"
new "Lydeffektlydstyrke"
# gui/game/screens.rpy:785
old "Test"
new "Test"
# gui/game/screens.rpy:789
old "Voice Volume"
new "Stemmelydstyrke"
# gui/game/screens.rpy:800
old "Mute All"
new "Slå alle fra"
# gui/game/screens.rpy:876
old "## History screen"
new "## Historikskærmen"
# gui/game/screens.rpy:878
old "## This is a screen that displays the dialogue history to the player. While there isn't anything special about this screen, it does have to access the dialogue history stored in _history_list."
new "## Dette er en skærm, der viser dialoghistorikken til spilleren. Mens der ikke er noget særligt ved denne skærm, har den dog adgang til dialoghistorikken opbevaret i _history_list."
# gui/game/screens.rpy:882
old "## https://www.renpy.org/doc/html/history.html"
new "## https://www.renpy.org/doc/html/history.html"
# gui/game/screens.rpy:888
old "## Avoid predicting this screen, as it can be very large."
new "## Undgå at forudsige denne skærm, da den kan være meget stor."
# gui/game/screens.rpy:899
old "## This lays things out properly if history_height is None."
new "## Dette udlægger tingene korrekt, hvis history_height er None."
# gui/game/screens.rpy:909
old "## Take the color of the who text from the Character, if set."
new "## Tag farven fra who-teksten fra en Character, hvis den er angivet."
# gui/game/screens.rpy:918
old "The dialogue history is empty."
new "Dialoghistorikken er tom."
# gui/game/screens.rpy:921
old "## This determines what tags are allowed to be displayed on the history screen."
new "## Dette bestemmer, hvilke mærker der tillades at blive vist på historikskærmen."
# gui/game/screens.rpy:966
old "## Help screen"
new "## Hjælpeskærmen"
# gui/game/screens.rpy:968
old "## A screen that gives information about key and mouse bindings. It uses other screens (keyboard_help, mouse_help, and gamepad_help) to display the actual help."
new "## En skærm, der giver information om tastatur- og musetildelinger. Den bruger andre skærme (keyboard_help, mouse_help og gamepad_help) til at vise den faktiske hjælp."
# gui/game/screens.rpy:987
old "Keyboard"
new "Tastatur"
# gui/game/screens.rpy:988
old "Mouse"
new "Mus"
# gui/game/screens.rpy:991
old "Gamepad"
new "Spillekontrol"
# gui/game/screens.rpy:1004
old "Enter"
new "Retur"
# gui/game/screens.rpy:1005
old "Advances dialogue and activates the interface."
new "Går videre i dialog og aktiverer grænsefladen."
# gui/game/screens.rpy:1008
old "Space"
new "Mellemrum"
# gui/game/screens.rpy:1009
old "Advances dialogue without selecting choices."
new "Går videre i dialog uden at træffe valg."
# gui/game/screens.rpy:1012
old "Arrow Keys"
new "Piltaster"
# gui/game/screens.rpy:1013
old "Navigate the interface."
new "Navigerer i grænsefladen."
# gui/game/screens.rpy:1016
old "Escape"
new "Escape"
# gui/game/screens.rpy:1017
old "Accesses the game menu."
new "Tilgår spilmenuen."
# gui/game/screens.rpy:1020
old "Ctrl"
new "Ctrl"
# gui/game/screens.rpy:1021
old "Skips dialogue while held down."
new "Springer over dialog ved nedholdning."
# gui/game/screens.rpy:1024
old "Tab"
new "Tab"
# gui/game/screens.rpy:1025
old "Toggles dialogue skipping."
new "Slår dialogoverspringning til/fra."
# gui/game/screens.rpy:1028
old "Page Up"
new "Page Up"
# gui/game/screens.rpy:1029
old "Rolls back to earlier dialogue."
new "Ruller tilbage til tidligere dialog."
# gui/game/screens.rpy:1032
old "Page Down"
new "Page Down"
# gui/game/screens.rpy:1033
old "Rolls forward to later dialogue."
new "Ruller fremad til senere dialog."
# gui/game/screens.rpy:1037
old "Hides the user interface."
new "Skjuler brugerfladen."
# gui/game/screens.rpy:1041
old "Takes a screenshot."
new "Tager et skærmbillede."
# gui/game/screens.rpy:1045
old "Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}."
new "Slår assisterende {a=https://www.renpy.org/l/voicing}automatisk oplæsning{/a} til/fra."
# gui/game/screens.rpy:1049
old "Opens the accessibility menu."
new "Åbner tilgængelighedsmenuen."
# gui/game/screens.rpy:1055
old "Left Click"
new "Venstreklik"
# gui/game/screens.rpy:1059
old "Middle Click"
new "Midterklik"
# gui/game/screens.rpy:1063
old "Right Click"
new "Højreklik"
# gui/game/screens.rpy:1067
old "Mouse Wheel Up\nClick Rollback Side"
new "Musehjul op\nKlik på tilbagerulningsside"
# gui/game/screens.rpy:1071
old "Mouse Wheel Down"
new "Musehjul ned"
# gui/game/screens.rpy:1078
old "Right Trigger\nA/Bottom Button"
new "Højre aftrækker\nA/Nederste knap"
# gui/game/screens.rpy:1082
old "Left Trigger\nLeft Shoulder"
new "Venstre aftrækker\nVenstre skulderknap"
# gui/game/screens.rpy:1086
old "Right Shoulder"
new "Højre skulderknap"
# gui/game/screens.rpy:1091
old "D-Pad, Sticks"
new "Retningsknapper, Pinde"
# gui/game/screens.rpy:1095
old "Start, Guide"
new "Start, Guide"
# gui/game/screens.rpy:1098
old "Start, Guide, B/Right Button"
new "Start, Guide, B/Højre knap"
# gui/game/screens.rpy:1099
old "Y/Top Button"
new "Y/Øverste knap"
# gui/game/screens.rpy:1102
old "Calibrate"
new "Kalibrér"
# gui/game/screens.rpy:1130
old "## Additional screens"
new "## Yderligere skærme"
# gui/game/screens.rpy:1134
old "## Confirm screen"
new "## Bekræftelsesskærmen"
# gui/game/screens.rpy:1136
old "## The confirm screen is called when Ren'Py wants to ask the player a yes or no question."
new "## Bekræftelsesskærmen kaldes, når Ren'Py vil stille spilleren et ja-nej-spørgsmål."
# gui/game/screens.rpy:1139
old "## https://www.renpy.org/doc/html/screen_special.html#confirm"
new "## https://www.renpy.org/doc/html/screen_special.html#confirm"
# gui/game/screens.rpy:1143
old "## Ensure other screens do not get input while this screen is displayed."
new "## Sørg for, at andre skærme ikke får input, mens denne skærm vises."
# gui/game/screens.rpy:1167
old "Yes"
new "Ja"
# gui/game/screens.rpy:1168
old "No"
new "Nej"
# gui/game/screens.rpy:1170
old "## Right-click and escape answer \"no\"."
new "## Højreklik og undgå svaret \"no\"."
# gui/game/screens.rpy:1197
old "## Skip indicator screen"
new "## Overspringningsindikatorskærmen"
# gui/game/screens.rpy:1199
old "## The skip_indicator screen is displayed to indicate that skipping is in progress."
new "## Skærmen skip_indicator vises for at indikere, at overspringning er i gang."
# gui/game/screens.rpy:1202
old "## https://www.renpy.org/doc/html/screen_special.html#skip-indicator"
new "## https://www.renpy.org/doc/html/screen_special.html#skip-indicator"
# gui/game/screens.rpy:1214
old "Skipping"
new "Springer over"
# gui/game/screens.rpy:1221
old "## This transform is used to blink the arrows one after another."
new "## Denne transformation bruges til at blinke med pilene en efter hinanden."
# gui/game/screens.rpy:1248
old "## We have to use a font that has the BLACK RIGHT-POINTING SMALL TRIANGLE glyph in it."
new "## Vi skal bruge en skrifttype, der har tegnet BLACK RIGHT-POINTING SMALL TRIANGLE i sig."
# gui/game/screens.rpy:1253
old "## Notify screen"
new "## Notifikationsskærmen"
# gui/game/screens.rpy:1255
old "## The notify screen is used to show the player a message. (For example, when the game is quicksaved or a screenshot has been taken.)"
new "## Notifikationsskærmen bruges til at vise spilleren en besked. (For eksempel når spillet hurtiggemmes, eller når et skærmbillede er blevet taget.)"
# gui/game/screens.rpy:1258
old "## https://www.renpy.org/doc/html/screen_special.html#notify-screen"
new "## https://www.renpy.org/doc/html/screen_special.html#notify-screen"
# gui/game/screens.rpy:1292
old "## NVL screen"
new "## NVL-skærmen"
# gui/game/screens.rpy:1294
old "## This screen is used for NVL-mode dialogue and menus."
new "## Denne skærm bruges til dialog og menuer i NVL-tilstand."
# gui/game/screens.rpy:1296
old "## https://www.renpy.org/doc/html/screen_special.html#nvl"
new "## https://www.renpy.org/doc/html/screen_special.html#nvl"
# gui/game/screens.rpy:1307
old "## Displays dialogue in either a vpgrid or the vbox."
new "## Viser dialog i enten et vpgrid eller vboxen."
# gui/game/screens.rpy:1320
old "## Displays the menu, if given. The menu may be displayed incorrectly if config.narrator_menu is set to True."
new "## Viser menuen, hvis angivet. Menuen kan muligvis vises ukorrekt, hvis config.narrator_menu er sat til True."
# gui/game/screens.rpy:1350
old "## This controls the maximum number of NVL-mode entries that can be displayed at once."
new "## Dette kontrollerer det maksimale antal af NVL-tilstandsindlæg, der kan vises på én gang."
# gui/game/screens.rpy:1410
old "## Bubble screen"
new "## Talebobleskærmen"
# gui/game/screens.rpy:1412
old "## The bubble screen is used to display dialogue to the player when using speech bubbles. The bubble screen takes the same parameters as the say screen, must create a displayable with the id of \"what\", and can create displayables with the \"namebox\", \"who\", and \"window\" ids."
new "## Talebobleskærmen bruges til at vise dialog til spilleren ved brug af talebobler. Talebobleskærmen tager imod de samme parametre som dialogskærmen. Den skal oprette et visbart element med id'et \"what\", og den kan oprette visbare elementer med id'erne \"namebox\", \"who\" og \"window\"."
# gui/game/screens.rpy:1417
old "## https://www.renpy.org/doc/html/bubble.html#bubble-screen"
new "## https://www.renpy.org/doc/html/bubble.html#bubble-screen"
# gui/game/screens.rpy:1501
old "## Mobile Variants"
new "## Mobilvarianter"
# gui/game/screens.rpy:1508
old "## Since a mouse may not be present, we replace the quick menu with a version that uses fewer and bigger buttons that are easier to touch."
new "## Siden en mus muligvis ikke er til stede, erstatter vi hurtigmenuen med en version, der bruger færre og større knapper, der er lettere at ramme."
# gui/game/screens.rpy:1526
old "Menu"
new "Menu"
+33
View File
@@ -0,0 +1,33 @@
# Spillets manuskript puttes i denne fil.
# Erklær figurer brugt af dette spil. Farveargumentet farver
# navnet på figuren.
define e = Character("Eileen")
# Spillet starter her.
label start:
# Vis en baggrund. Der bruges som standard en stedfortræder, men du kan
# tilføje en fil (kaldt enten "bg room.png" eller "bg room.jpg") til
# mappen images for at vise den.
scene bg room
# Dette viser en figursprite. En stedfortræder bruges, men du kan
# erstatte den ved at tilføje en fil kaldt "eileen happy.png" til
# mappen images.
show eileen happy
# Disse viser linjer med dialog.
e "Du har oprettet et nyt Ren'Py-spil."
e "Når du har tilføjet en historie, billeder og musik, kan du sende det ud i verden!"
# Dette afslutter spillet.
return
+14 -7
View File
@@ -364,7 +364,7 @@
new "{b}Suositeltu.{/b} Helppokäyttöinen beta-asteella oleva tekstieditori, joka sisältää kehitystä helpottavia toimintoja. Toistaiseksi Editrasta puuttuu täysin kiinalaisen, japanilaisen ja korealaisen tekstin kannatus."
# editor.rpy:167
old "This may have occured because wxPython is not installed on this system."
old "This may have occurred because wxPython is not installed on this system."
new "Tämä saattoi tapahtua, koska wxPythonia ei ole asennettu järjestelmään."
# editor.rpy:169
@@ -380,7 +380,7 @@
new "1.8 MB lataus vaaditaan."
# editor.rpy:182
old "This may have occured because Java is not installed on this system."
old "This may have occurred because Java is not installed on this system."
new "Tämä saattoi tapahtua, koska Javaa ei ole asennettu."
# editor.rpy:191
@@ -392,7 +392,7 @@
new "Estää Ren'Py-ohjelmaa avaamasta tekstieditoria."
# editor.rpy:359
old "An exception occured while launching the text editor:\n[exception!q]"
old "An exception occurred while launching the text editor:\n[exception!q]"
new "Virhe käynnistäessä tekstieditoria:\n[exception!q]"
# editor.rpy:457
@@ -610,7 +610,7 @@
new "VIRHE"
# interface.rpy:356
old "While [what!qt], an error occured:"
old "While [what!qt], an error occurred:"
new "Kun [what!qt], tapahtui virhe:"
# interface.rpy:356
@@ -1138,7 +1138,7 @@
new "Upouudet Ren'Py-kehitysjulkaisut. Voi sisältää uusimmat toiminnot, tai ei ehkä toimi lainkaan."
# updater.rpy:152
old "An error has occured:"
old "An error has occurred:"
new "On tapahtunut virhe:"
# updater.rpy:154
@@ -1969,8 +1969,8 @@ translate finnish strings:
new "Mukautettu teema"
# game/preferences.rpy:256
old "Information about creating a custom theme can be found {a=https://www.renpy.org/doc/html/skins.html}in the Ren'Py Documentation{/a}."
new "Tietoa mukautetun teeman luomisesta löytyy {a=https://www.renpy.org/doc/html/skins.html}Ren'Pyn dokumentaatiosta{/a}."
old "Information about creating a custom theme can be found {a=[skins_url]}in the Ren'Py Documentation{/a}."
new "Tietoa mukautetun teeman luomisesta löytyy {a=[skins_url]}Ren'Pyn dokumentaatiosta{/a}."
# game/preferences.rpy:273
old "Install Libraries:"
@@ -2122,3 +2122,10 @@ translate finnish strings:
# Automatic translation.
new "Ennen verkkosovellusten pakkaamista sinun on ladattava RenPyWeb, Ren'Pyn verkkotuki. Haluatko ladata RenPyWebin nyt?"
translate finnish strings:
# game/updater.rpy:79
old "A nightly build of fixes to the release version of Ren'Py."
# Automatic translation.
new "Yöllinen versio, joka sisältää korjauksia Ren'Pyn julkaisuversioon."
+2 -2
View File
@@ -497,8 +497,8 @@ translate finnish strings:
new "Hiiren Oikea Painike"
# screens.rpy:1062
old "Mouse Wheel Up\nClick Rollback Side"
new "Hiiren Rulla Ylös\nKlikkaa Palautussivua"
old "Mouse Wheel Up"
new "Hiiren Rulla Ylös"
# screens.rpy:1066
old "Mouse Wheel Down"
+1 -1
View File
@@ -731,7 +731,7 @@
# renpy/common/_developer/developer.rpym:57
old "Show Image Load Log (F4)"
new "Montrer le log ne chargement des images (F4)"
new "Afficher le log de chargement des images (F4)"
# renpy/common/_developer/developer.rpym:60
old "Hide Image Load Log (F4)"
+69 -33
View File
@@ -365,7 +365,7 @@
new "{b}Recommandé.{/b} Un éditeur en version beta avec une interface simple et des fonctionnalités dassistance au développement. Editra manque pour le moment du support pour les textes en chinois, japonais et coréen. Sur GNU-Linux, Editra nécessite wxPython."
# editor.rpy:167
old "This may have occured because wxPython is not installed on this system."
old "This may have occurred because wxPython is not installed on this system."
new "Cela est sans doute dû au fait que wxPython nest pas installé sur votre système."
# editor.rpy:169
@@ -381,7 +381,7 @@
new "1.8 Mo de téléchargement requis."
# editor.rpy:182
old "This may have occured because Java is not installed on this system."
old "This may have occurred because Java is not installed on this system."
new "Cela est sans doute produit parce que Java nest pas installé sur ce système."
# editor.rpy:191
@@ -393,7 +393,7 @@
new "Empêcher RenPy douvrir un éditeur de texte."
# editor.rpy:359
old "An exception occured while launching the text editor:\n[exception!q]"
old "An exception occurred while launching the text editor:\n[exception!q]"
new "Une exception est survenue lors du lancement de l’éditeur de texte :\n[exception!q]"
# editor.rpy:457
@@ -609,7 +609,7 @@
new "ERREUR"
# interface.rpy:356
old "While [what!qt], an error occured:"
old "While [what!qt], an error occurred:"
new "Pendant que [what!qt], une erreur est survenue :"
# interface.rpy:356
@@ -1108,6 +1108,14 @@
old "Release"
new "Stable"
# game/updater.rpy:64
old "Release (Ren'Py 8, Python 3)"
new "Stable (Ren'Py 8, Python 3)"
# game/updater.rpy:65
old "Release (Ren'Py 7, Python 2)"
new "Stable (Ren'Py 7, Python 2)"
# updater.rpy:97
old "{b}Recommended.{/b} The version of Ren'Py that should be used in all newly-released games."
new "{b}Recommandé.{/b} La version de RenPy qui devrait être utilisée pour tous les jeux récemment sortis."
@@ -1116,6 +1124,14 @@
old "Prerelease"
new "Pré-stable"
# game/updater.rpy:69
old "Prerelease (Ren'Py 8, Python 3)"
new "Pré-stable (Ren'Py 8, Python 3)"
# game/updater.rpy:70
old "Prerelease (Ren'Py 7, Python 2)"
new "Pré-stable (Ren'Py 7, Python 2)"
# 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."
new "Un aperçu de la prochaine version de RenPy qui peut être utilisée pour faire des tests et profiter de toutes nouvelles fonctionnalités, mais pas pour créer de nouveaux jeux."
@@ -1132,12 +1148,36 @@
old "Nightly"
new "Journalière"
# game/updater.rpy:77
old "Nightly (Ren'Py 8, Python 3)"
new "Journalière (Ren'Py 8, Python 3)"
# game/updater.rpy:78
old "Nightly (Ren'Py 7, Python 2)"
new "Journalière (Ren'Py 7, Python 2)"
# updater.rpy:132
old "The bleeding edge of Ren'Py development. This may have the latest features, or might not run at all."
new "Les toutes dernières version de RenPy encore en développement. Vous pouvez alors utiliser les toutes dernières fonctionnalités, mais le logiciel peut également ne pas sexécuter du tout."
new "La toute dernière version de RenPy, encore en développement. Elle peut contenir les toutes dernières fonctionnalités, ou alors ne pas marcher du tout."
# game/updater.rpy:76
old "Nightly Fix"
new "Journalière Corrective"
# game/updater.rpy:77
old "Nightly Fix (Ren'Py 8, Python 3)"
new "Journalière Corrective (Ren'Py 8, Python 3)"
# game/updater.rpy:78
old "Nightly Fix (Ren'Py 7, Python 2)"
new "Journalière Corrective (Ren'Py 7, Python 2)"
# game/updater.rpy:79
old "A nightly build of fixes to the release version of Ren'Py."
new "Une version journalière qui corrige les bugs de la dernière version stable."
# updater.rpy:152
old "An error has occured:"
old "An error has occurred:"
new "Une erreur est survenue :"
# updater.rpy:154
@@ -1550,7 +1590,7 @@
# game/gui7.rpy:339
old "Custom. The GUI is optimized for a 16:9 aspect ratio."
new "Personnalisé. Le GUI est optimié pour un ratio de cadre 16:9."
new "Personnalisé. Le GUI est optimisé pour un ratio de cadre 16:9."
# game/gui7.rpy:355
old "WIDTH"
@@ -2037,37 +2077,13 @@
new "Thème du lanceur :"
# game/preferences.rpy:254
old "Information about creating a custom theme can be found {a=https://www.renpy.org/doc/html/skins.html}in the Ren'Py Documentation{/a}."
new "Plus d'informations sur comment créer un thème personnalisé se trouvent {a=https://www.renpy.org/doc/html/skins.html}dans la documentation de Ren'Py{/a}."
old "Information about creating a custom theme can be found {a=[skins_url]}in the Ren'Py Documentation{/a}."
new "Plus d'informations sur comment créer un thème personnalisé se trouvent {a=[skins_url]}dans la documentation de Ren'Py{/a}."
# game/preferences.rpy:271
old "Install Libraries:"
new "Installer des bibliothèques :"
# game/updater.rpy:64
old "Release (Ren'Py 8, Python 3)"
new "Stable (Ren'Py 8, Python 3)"
# game/updater.rpy:65
old "Release (Ren'Py 7, Python 2)"
new "Stable (Ren'Py 7, Python 2)"
# game/updater.rpy:69
old "Prerelease (Ren'Py 8, Python 3)"
new "Pré-stable (Ren'Py 8, Python 3)"
# game/updater.rpy:70
old "Prerelease (Ren'Py 7, Python 2)"
new "Pré-stable (Ren'Py 7, Python 2)"
# game/updater.rpy:77
old "Nightly (Ren'Py 8, Python 3)"
new "Journalière (Ren'Py 8, Python 3)"
# game/updater.rpy:78
old "Nightly (Ren'Py 7, Python 2)"
new "Journalière (Ren'Py 7, Python 2)"
# game/preferences.rpy:327
old "{#in language font}Welcome! Please choose a language"
new "{font=fonts/Roboto-Light.ttf}Bienvenue ! Choisissez une langue{/font}"
@@ -2131,3 +2147,23 @@
# game/androidstrings.rpy:69
old "I found a bundle.keystore file in the rapt directory. Do you want to use this file?"
new "J'ai trouvé un fichier bundle.keystore dans le dossier \"rapt\". Voulez-vous l'utiliser ?"
# game/choose_directory.rpy:72
old "No directory was selected, but one is required."
new "Un chemin d'accès est nécessaire, mais aucun n'a été fourni."
# game/choose_directory.rpy:80
old "The selected directory does not exist."
new "Le dossier sélectionné n'existe pas."
# game/choose_directory.rpy:82
old "The selected directory is not writable."
new "Le dossier sélectionné n'est pas ouvert en écriture."
# game/distribute.rpy:554
old "This may be derived from build.name and config.version or build.version."
new "Cette variable peut être dérivée de build.name, et de config.version ou build.version."
# game/new_project.rpy:66
old "Warning : you are using Ren'Py 7. It is recommended to start new projects using Ren'Py 8 instead."
new "Attention : vous utilisez Ren'Py 7. Il est recommandé d'utiliser Ren'Py 8 pour de nouveaux projets."
+2 -2
View File
@@ -697,8 +697,8 @@
new "## Ceci détermine quels tags peuvent être affichés sur le screen de l'historique."
# gui/game/screens.rpy:1063
old "Mouse Wheel Up\nClick Rollback Side"
new "Molette vers le haut\nClic sur le côté du Rollback"
old "Mouse Wheel Up"
new "Molette vers le haut"
# gui/game/screens.rpy:1078
old "Left Trigger\nLeft Shoulder"
+74 -125
View File
@@ -163,43 +163,43 @@ translate german strings:
# 00gui.rpy:227
old "Are you sure?"
new "Sind Sie sicher?"
new "Bist Du sicher?"
# 00gui.rpy:228
old "Are you sure you want to delete this save?"
new "Sind Sie sicher, dass Sie diese Datei löschen möchten?"
new "Bist Du sicher, dass Du diese Datei löschen möchtest?"
# 00gui.rpy:229
old "Are you sure you want to overwrite your save?"
new "Sind Sie sicher, dass Sie diese Datei überschreiben möchten?"
new "Bist Du sicher, dass Du diese Datei überschreiben möchtest?"
# 00gui.rpy:230
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
new "Beim Laden geht ungespeicherter Fortschritt verloren.\nSind Sie sicher, dass Sie das tun möchten?"
new "Beim Laden geht ungespeicherter Fortschritt verloren.\nBist Du sicher, dass Du das tun möchtest?"
# 00gui.rpy:231
old "Are you sure you want to quit?"
new "Sind Sie sicher, dass Sie beenden möchten?"
new "Bist Du sicher, dass Du das Spiel beenden möchtest?"
# 00gui.rpy:232
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
new "Sind Sie sicher, dass Sie zurück zum Hauptmenü möchten?\nUngespeicherter Fortschritt geht dabei verloren."
new "Bist Du sicher, dass Du zurück zum Hauptmenü möchtest?\nUngespeicherter Fortschritt geht dabei verloren."
# 00gui.rpy:233
old "Are you sure you want to end the replay?"
new "Sind Sie sicher, dass sie die Szenen-Wiederholung beenden möchten?"
new "Bist Du sicher, dass Du die Szenen-Wiederholung beenden möchtest?"
# 00gui.rpy:234
old "Are you sure you want to begin skipping?"
new "Sind Sie sicher, dass Sie Text überspringen möchten?"
new "Bist Du sicher, dass Du vorspulen möchtest?"
# 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 springen möchten?"
new "Bist Du sicher, dass Du zur nächsten Entscheidung springen möchtest?"
# 00gui.rpy:236
old "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?"
new "Bist Du sicher, dass Du ungesehenen Dialog bis zur nächsten Entscheidung überspringen möchtest?"
# 00keymap.rpy:250
old "Saved screenshot as %s."
@@ -220,7 +220,7 @@ translate german strings:
# 00library.rpy:179
old "Skip Mode"
new "Skip-Modus"
new "Vorspul-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}."
@@ -229,19 +229,19 @@ translate german strings:
# 00preferences.rpy:422
old "Clipboard voicing enabled. Press 'shift+C' to disable."
# Automatic translation.
new "Zwischenablage-Voicing aktiviert. Drücken Sie 'Umschalt+C' zum Deaktivieren."
new "Zwischenablage-Voicing aktiviert. Drücke 'Shift+C' zum Deaktivieren."
# 00preferences.rpy:424
old "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."
new "Sprachausgabe würde \"[renpy.display.tts.last]\" sagen. Drücke 'Alt+Shift+V' zum Deaktivieren."
# 00preferences.rpy:426
old "Self-voicing enabled. Press 'v' to disable."
new "Sprachausgabe aktiviert. Zum deaktivieren 'v' drücken."
new "Sprachausgabe aktiviert. Drücke 'V' zum Deaktivieren."
# 00iap.rpy:217
old "Contacting App Store\nPlease Wait..."
new "Kontaktiert App Store\nBitte warten..."
new "Kontaktiere App Store\nBitte warten..."
# 00updater.rpy:367
old "The Ren'Py Updater is not supported on mobile devices."
@@ -249,7 +249,7 @@ translate german strings:
# 00updater.rpy:486
old "An error is being simulated."
new "Ein Error wird simuliert."
new "Ein Fehler wird simuliert."
# 00updater.rpy:662
old "Either this project does not support updating, or the update status file was deleted."
@@ -278,7 +278,7 @@ translate german strings:
# 00updater.rpy:1049
old "While unpacking {}, unknown type {}."
# Automatic translation.
new "Beim Auspacken {}, unbekannter Typ {}."
new "Beim Entpacken {}, unbekannter Typ {}."
# 00updater.rpy:1393
old "Updater"
@@ -290,7 +290,7 @@ translate german strings:
# 00updater.rpy:1406
old "[u.version] is available. Do you want to install it?"
new "[u.version] ist verfügbar. Möchten Sie sie installieren?"
new "[u.version] ist verfügbar. Möchtest Du es installieren?"
# 00updater.rpy:1408
old "Preparing to download the updates."
@@ -351,13 +351,11 @@ translate german strings:
# renpy/common/00accessibility.rpy:34
old "viewport"
# Automatic translation.
new "Ansichtsfenster"
new "Viewport"
# renpy/common/00accessibility.rpy:35
old "horizontal scroll"
# Automatic translation.
new "Horizontales Blättern"
new "horizontaler Bildlauf"
# renpy/common/00accessibility.rpy:36
old "vertical scroll"
@@ -366,8 +364,7 @@ translate german strings:
# renpy/common/00accessibility.rpy:37
old "activate"
# Automatic translation.
new "aktivieren."
new "aktivieren"
# renpy/common/00accessibility.rpy:38
old "deactivate"
@@ -376,8 +373,7 @@ translate german strings:
# renpy/common/00accessibility.rpy:39
old "increase"
# Automatic translation.
new "erhöhen."
new "erhöhen"
# renpy/common/00accessibility.rpy:40
old "decrease"
@@ -419,13 +415,11 @@ translate german strings:
# renpy/common/00accessibility.rpy:180
old "High Contrast Text"
# Automatic translation.
new "Hochkontrastiger Text"
new "Kontrastreicher Text"
# renpy/common/00accessibility.rpy:193
old "Self-Voicing"
# Automatic translation.
new "Selbstanzeige"
new "Sprachausgabe"
# renpy/common/00accessibility.rpy:197
old "Off"
@@ -434,8 +428,7 @@ translate german strings:
# renpy/common/00accessibility.rpy:201
old "Text-to-speech"
# Automatic translation.
new "Text-in-Sprache"
new "Text-zu-Sprache"
# renpy/common/00accessibility.rpy:205
old "Clipboard"
@@ -449,53 +442,43 @@ translate german strings:
# renpy/common/00accessibility.rpy:223
old "Self-Voicing Volume Drop"
# Automatic translation.
new "Selbstlautstärkeabfall"
new "Lautstärkeabfall Sprachausgabe"
# renpy/common/00accessibility.rpy:234
old "The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was."
# Automatic translation.
new "Die Optionen in diesem Menü dienen der Verbesserung der Zugänglichkeit. Sie funktionieren möglicherweise nicht mit allen Spielen, und einige Kombinationen von Optionen können das Spiel unspielbar machen. Dies ist kein Problem mit dem Spiel oder der Engine. Die besten Ergebnisse beim Ändern von Schriftarten erzielen Sie, wenn Sie die ursprüngliche Textgröße beibehalten."
new "Die Optionen in diesem Menü dienen der Verbesserung der Zugänglichkeit. Sie funktionieren möglicherweise nicht mit allen Spielen, und einige Kombinationen von Optionen können das Spiel unspielbar machen. Dies ist kein Problem mit dem Spiel oder der Engine. Die besten Ergebnisse beim Ändern von Schriftarten erzielst Du, wenn Du die ursprüngliche Textgröße beibehältst."
# renpy/common/00action_file.rpy:378
old "Save slot %s: [text]"
# Automatic translation.
new "Steckplatz %s speichern: [text]"
new "Speicherplatz %s speichern: [text]"
# renpy/common/00action_file.rpy:461
old "Load slot %s: [text]"
# Automatic translation.
new "Steckplatz %s laden: [text]"
new "Speicherplatz %s laden: [text]"
# renpy/common/00action_file.rpy:514
old "Delete slot [text]"
# Automatic translation.
new "Steckplatz löschen [text]"
new "Speicherplatz löschen [text]"
# renpy/common/00action_file.rpy:593
old "File page auto"
# Automatic translation.
new "Datei Seite auto"
new "Spielstände: Seite auto-speichern"
# renpy/common/00action_file.rpy:595
old "File page quick"
# Automatic translation.
new "Datei Seite schnell"
new "Spielstände: Seite schnell-speichern"
# renpy/common/00action_file.rpy:597
old "File page [text]"
# Automatic translation.
new "Datei-Seite [text]"
new "Spielstände: Seite [text]"
# renpy/common/00action_file.rpy:796
old "Next file page."
# Automatic translation.
new "Nächste Dateiseite."
new "Nächste Seite."
# renpy/common/00action_file.rpy:868
old "Previous file page."
# Automatic translation.
new "Vorherige Dateiseite."
new "Vorherige Seite."
# renpy/common/00action_file.rpy:944
old "Quick save."
@@ -527,35 +510,30 @@ translate german strings:
# renpy/common/00director.rpy:1574
old "Done"
# Automatic translation.
new "Erledigt"
new "Fertig"
# renpy/common/00director.rpy:1584
old "(statement)"
# Automatic translation.
new "(Erklärung)"
new "(Statement)"
# renpy/common/00director.rpy:1585
old "(tag)"
# Automatic translation.
new "(Tag)"
# renpy/common/00director.rpy:1586
old "(attributes)"
# Automatic translation.
new "(Attribute)"
# renpy/common/00director.rpy:1587
old "(transform)"
new "(transform)"
new "(Transform)"
# renpy/common/00director.rpy:1612
old "(transition)"
new "(transition)"
new "(Transition)"
# renpy/common/00director.rpy:1624
old "(channel)"
# Automatic translation.
new "(Kanal)"
# renpy/common/00director.rpy:1625
@@ -565,23 +543,19 @@ translate german strings:
# renpy/common/00director.rpy:1654
old "Change"
# Automatic translation.
new "Ändern Sie"
new "Ändern"
# renpy/common/00director.rpy:1656
old "Add"
# Automatic translation.
new "hinzufügen"
new "Hinzufügen"
# renpy/common/00director.rpy:1662
old "Remove"
# Automatic translation.
new "entfernen"
new "Entfernen"
# renpy/common/00director.rpy:1697
old "Statement:"
# Automatic translation.
new "Erklärung:"
new "Statement:"
# renpy/common/00director.rpy:1718
old "Tag:"
@@ -594,18 +568,15 @@ translate german strings:
# renpy/common/00director.rpy:1745
old "Click to toggle attribute, right click to toggle negative attribute."
# Automatic translation.
new "Klicken Sie auf das Attribut, um es einzuschalten, klicken Sie mit der rechten Maustaste, um das negative Attribut einzuschalten."
new "Klicke auf das Attribut, um es umzuschalten; klicke mit der rechten Maustaste, um das negative Attribut umzuschalten."
# renpy/common/00director.rpy:1757
old "Transforms:"
# Automatic translation.
new "Verwandeln:"
new "Transforms:"
# renpy/common/00director.rpy:1768
old "Click to set transform, right click to add to transform list."
# Automatic translation.
new "Klicken Sie, um die Transformation festzulegen, und klicken Sie mit der rechten Maustaste, um sie zur Transformationsliste hinzuzufügen."
new "Klicke, um das Transform festzulegen; klicke mit der rechten Maustaste, um es zur Liste hinzuzufügen."
# renpy/common/00director.rpy:1780
old "Behind:"
@@ -619,8 +590,7 @@ translate german strings:
# renpy/common/00director.rpy:1801
old "Transition:"
# Automatic translation.
new "Überleitung:"
new "Transition:"
# renpy/common/00director.rpy:1819
old "Channel:"
@@ -634,13 +604,12 @@ translate german strings:
# renpy/common/00gui.rpy:456
old "This save was created on a different device. Maliciously constructed save files can harm your computer. Do you trust this save's creator and everyone who could have changed the file?"
# Automatic translation.
new "Dieser Spielstand wurde auf einem anderen Gerät erstellt. Böswillig erstellte Speicherdateien können Ihrem Computer schaden. Vertrauen Sie dem Ersteller dieses Spielstands und allen, die die Datei geändert haben könnten?"
new "Dieser Spielstand wurde auf einem anderen Gerät erstellt. Böswillig erstellte Speicherstände können Deinem Computer schaden. Vertraust Du dem Ersteller dieses Spielstands und allen, die die Datei geändert haben könnten?"
# renpy/common/00gui.rpy:457
old "Do you trust the device the save was created on? You should only choose yes if you are the device's sole user."
# Automatic translation.
new "Vertrauen Sie dem Gerät, auf dem die Sicherung erstellt wurde? Sie sollten nur dann Ja wählen, wenn Sie der einzige Benutzer des Geräts sind."
new "Vertraust Du dem Gerät, auf dem die Sicherung erstellt wurde? Du solltest nur dann Ja wählen, wenn Du der einzige Benutzer des Geräts bist."
# renpy/common/00keymap.rpy:322
old "Failed to save screenshot as %s."
@@ -654,12 +623,10 @@ translate german strings:
# renpy/common/00preferences.rpy:283
old "transitions"
# Automatic translation.
new "Übergänge"
# renpy/common/00preferences.rpy:292
old "skip transitions"
# Automatic translation.
new "Übergänge überspringen"
# renpy/common/00preferences.rpy:294
@@ -700,32 +667,29 @@ translate german strings:
# renpy/common/00preferences.rpy:335
old "skip unseen text"
# Automatic translation.
new "ungesehenen Text übergehen"
new "ungesehenen Text überspringen"
# renpy/common/00preferences.rpy:337
old "begin skipping"
# Automatic translation.
new "mit dem Springen beginnen"
new "mit dem Vorspulen beginnen"
# renpy/common/00preferences.rpy:341
old "after choices"
# Automatic translation.
new "nach der Wahl"
new "nach Entscheidungen"
# renpy/common/00preferences.rpy:348
old "skip after choices"
# Automatic translation.
new "nach Auswahlen überspringen"
new "Vorspulen nach Entscheidungen"
# renpy/common/00preferences.rpy:350
old "auto-forward time"
# Automatic translation.
new "automatische Vorlaufzeit"
new "Zeit des automatischen Blätterns"
# renpy/common/00preferences.rpy:364
old "auto-forward"
# Automatic translation.
new "automatisches Weiterleiten"
new "automatisches Blättern"
# renpy/common/00preferences.rpy:371
old "Auto forward"
@@ -754,23 +718,19 @@ translate german strings:
# renpy/common/00preferences.rpy:410
old "self voicing"
# Automatic translation.
new "selbststimmend"
new "Sprachausgabe"
# renpy/common/00preferences.rpy:419
old "self voicing volume drop"
# Automatic translation.
new "Selbststimmende Lautstärkeabnahme"
new "Lautstärkeabnahme der Sprachausgabe"
# renpy/common/00preferences.rpy:427
old "clipboard voicing"
# Automatic translation.
new "Clipboard-Intonation"
new "Sprachausgabe zur Zwischenablage"
# renpy/common/00preferences.rpy:436
old "debug voicing"
# Automatic translation.
new "Intonation debuggen"
new "Sprachausgabe debuggen"
# renpy/common/00preferences.rpy:445
old "emphasize audio"
@@ -789,7 +749,7 @@ translate german strings:
# renpy/common/00preferences.rpy:470
old "gl framerate"
# Automatic translation.
new "Gl-Framerate"
new "gl-Framerate"
# renpy/common/00preferences.rpy:473
old "gl tearing"
@@ -797,8 +757,7 @@ translate german strings:
# renpy/common/00preferences.rpy:476
old "font transform"
# Automatic translation.
new "Schriftart umwandeln"
new "Schriftart Transform"
# renpy/common/00preferences.rpy:479
old "font size"
@@ -822,13 +781,11 @@ translate german strings:
# renpy/common/00preferences.rpy:507
old "accessibility menu"
# Automatic translation.
new "Menü Barrierefreiheit"
new "Barrierefreiheit-Menü"
# renpy/common/00preferences.rpy:510
old "high contrast text"
# Automatic translation.
new "Text mit hohem Kontrast"
new "kontrastreicher Text"
# renpy/common/00preferences.rpy:519
old "audio when minimized"
@@ -837,8 +794,7 @@ translate german strings:
# renpy/common/00preferences.rpy:528
old "audio when unfocused"
# Automatic translation.
new "Audio bei Unschärfe"
new "Audio wenn im Hintergrund"
# renpy/common/00preferences.rpy:537
old "web cache preload"
@@ -852,28 +808,23 @@ translate german strings:
# renpy/common/00preferences.rpy:571
old "main volume"
# Automatic translation.
new "Hauptvolumen"
new "Master-Lautstärke"
# renpy/common/00preferences.rpy:572
old "music volume"
# Automatic translation.
new "Musiklautstärke"
new "Musik-Lautstärke"
# renpy/common/00preferences.rpy:573
old "sound volume"
# Automatic translation.
new "Lautstärke"
new "Ton-Lautstärke"
# renpy/common/00preferences.rpy:574
old "voice volume"
# Automatic translation.
new "Sprachlautstärke"
new "Stimmen-Lautstärke"
# renpy/common/00preferences.rpy:575
old "mute main"
# Automatic translation.
new "Hauptstummschaltung"
new "Master stummschalten"
# renpy/common/00preferences.rpy:576
old "mute music"
@@ -887,13 +838,11 @@ translate german strings:
# renpy/common/00preferences.rpy:578
old "mute voice"
# Automatic translation.
new "stumme Stimme"
new "Stimme stummschalten"
# renpy/common/00preferences.rpy:579
old "mute all"
# Automatic translation.
new "alle stumm schalten"
new "alles stummschalten"
# renpy/common/00speechbubble.rpy:344
old "Speech Bubble Editor"
@@ -933,7 +882,7 @@ translate german strings:
# renpy/common/00sync.rpy:409
old "Please enter the sync ID you generated.\nNever enter a sync ID you didn't create yourself."
# Automatic translation.
new "Bitte geben Sie die von Ihnen erstellte Sync-ID ein.\nGeben Sie niemals eine Sync-ID ein, die Sie nicht selbst erstellt haben."
new "Bitte gib die von Dir erstellte Sync-ID ein.\nGie niemals eine Sync-ID ein, die Du nicht selbst erstellt hast."
# renpy/common/00sync.rpy:428
old "The sync ID is not in the correct format."
@@ -958,7 +907,7 @@ translate german strings:
# renpy/common/00sync.rpy:529
old "This will upload your saves to the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nDo you want to continue?"
# Automatic translation.
new "Dadurch werden Ihre Spielstände auf den {a=https://sync.renpy.org}Ren'Py Sync Server{/a} hochgeladen.\nMöchten Sie fortfahren?"
new "Dadurch werden Deine Spielstände auf den {a=https://sync.renpy.org}Ren'Py Sync Server{/a} hochgeladen.\nMöchtest Du fortfahren?"
# renpy/common/00sync.rpy:558
old "Enter Sync ID"
@@ -983,7 +932,7 @@ translate german strings:
# renpy/common/00sync.rpy:605
old "You can use this ID to download your save on another device.\nThis sync will expire in an hour.\nRen'Py Sync is supported by {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}."
# Automatic translation.
new "Sie können diese ID verwenden, um Ihren Spielstand auf ein anderes Gerät herunterzuladen.\nDiese Synchronisierung läuft in einer Stunde ab.\nRen'Py Sync wird unterstützt von {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}."
new "Du kannst diese ID verwenden, um Deinen Spielstand auf ein anderes Gerät herunterzuladen.\nDiese Synchronisierung läuft in einer Stunde ab.\nRen'Py Sync wird unterstützt von {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}."
# renpy/common/00sync.rpy:631
old "Sync Error"
+19 -32
View File
@@ -119,15 +119,15 @@ translate german strings:
# 00console.rpy:182
old "Press <esc> to exit console. Type help for help.\n"
new "Drücken Sie <esc>, um die Konsole zu schließen. Geben Sie „help“ ein, um die Hilfe anzuzeigen.\n"
new "Drücke <esc>, um die Konsole zu schließen. Gib „help“ ein, um die Hilfe anzuzeigen.\n"
# 00console.rpy:186
old "Ren'Py script enabled."
new "RenPy Skript aktiviert."
new "Ren'Py Skript aktiviert."
# 00console.rpy:188
old "Ren'Py script disabled."
new "RenPy Skript deaktiviert."
new "Ren'Py Skript deaktiviert."
# 00console.rpy:398
old "help: show this help"
@@ -143,7 +143,7 @@ translate german strings:
# 00console.rpy:415
old " <python expression or statement>: run the expression or statement"
new " <python expression or statement>: startet den Ausdruck oder die Anweisung"
new " <python Ausdruck oder Anweisung>: startet den Ausdruck oder die Anweisung"
# 00console.rpy:423
old "clear: clear the console history"
@@ -186,23 +186,19 @@ translate german strings:
# renpy/common/_developer/developer.rpym:43
old "Interactive Director (D)"
# Automatic translation.
new "Interaktiver Direktor (D)"
new "Interaktiver Regisseur (D)"
# renpy/common/_developer/developer.rpym:51
old "Persistent Viewer"
# Automatic translation.
new "Dauerhafter Betrachter"
new "Übersicht persistenter Variablen"
# renpy/common/_developer/developer.rpym:59
old "Show Image Load Log (F4)"
# Automatic translation.
new "Bildladeprotokoll anzeigen (F4)"
new "Ladeprotokoll aller Bilder anzeigen (F4)"
# renpy/common/_developer/developer.rpym:62
old "Hide Image Load Log (F4)"
# Automatic translation.
new "Bildladeprotokoll ausblenden (F4)"
new "Ladeprotokoll aller Bilder ausblenden (F4)"
# renpy/common/_developer/developer.rpym:65
old "Image Attributes"
@@ -211,32 +207,28 @@ translate german strings:
# renpy/common/_developer/developer.rpym:70
old "Speech Bubble Editor (Shift+B)"
# Automatic translation.
new "Sprechblasen-Editor (Umschalt+B)"
new "Sprechblasen-Editor (Shift+B)"
# renpy/common/_developer/developer.rpym:97
old "[name] [attributes] (hidden)"
# Automatic translation.
new "[name] [attributes] (versteckt)"
new "[Name] [Attribute] (versteckt)"
# renpy/common/_developer/developer.rpym:101
old "[name] [attributes]"
new "[name] [attributes]"
new "[Name] [Attribute]"
# renpy/common/_developer/developer.rpym:162
old "Hide deleted"
# Automatic translation.
new "Ausblenden gelöscht"
new "Gelöschtes verbergen"
# renpy/common/_developer/developer.rpym:162
old "Show deleted"
# Automatic translation.
new "Anzeigen gelöscht"
new "Gelöschtes anzeigen"
# renpy/common/_developer/developer.rpym:389
old "Type to filter: "
# Automatic translation.
new "Typ zum Filtern: "
new "Filtertyp: "
# renpy/common/_developer/developer.rpym:507
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
@@ -255,23 +247,20 @@ translate german strings:
# renpy/common/00console.rpy:813
old "Help may display undocumented functions. Please check that the function or\nclass you want to use is documented.\n\n"
# Automatic translation.
new "Die Hilfe kann undokumentierte Funktionen anzeigen. Bitte prüfen Sie, ob die Funktion oder\nKlasse, die Sie verwenden möchten, dokumentiert ist.\n\n"
new "Die Hilfe kann undokumentierte Funktionen anzeigen. Bitte prüfe, ob die Funktion\noder Klasse, die Du verwenden möchtest, dokumentiert ist.\n\n"
# renpy/common/00console.rpy:854
old "stack: print the return stack"
# Automatic translation.
new "stack: den Rückgabestapel drucken"
new "stack: den Stack anzeigen"
# renpy/common/00console.rpy:908
old "watch <expression>: watch a python expression\n watch short: makes the representation of traced expressions short (default)\n watch long: makes the representation of traced expressions as is"
# Automatic translation.
new "watch <expression>: einen Python-Ausdruck beobachten\n watch short: macht die Darstellung der nachverfolgten Ausdrücke kurz (Standard)\n watch long: macht die Darstellung von verfolgten Ausdrücken wie folgt"
new "watch <expression>: einen Python-Ausdruck beobachten\n watch short: macht die Darstellung der nachverfolgten Ausdrücke kurz (Voreinstellung)\n watch long: macht die Darstellung von verfolgten Ausdrücken wie sie sind"
# renpy/common/00console.rpy:1028
old "short: Shorten the representation of objects on the console (default)."
# Automatic translation.
new "short: Verkürzt die Darstellung von Objekten auf der Konsole (Standard)."
new "short: Verkürzt die Darstellung von Objekten auf der Konsole (Voreinstellung)."
# renpy/common/00console.rpy:1032
old "long: Print the full representation of objects on the console."
@@ -280,11 +269,9 @@ translate german strings:
# renpy/common/00console.rpy:1036
old "escape: Enables escaping of unicode symbols in unicode strings."
# Automatic translation.
new "escape: Ermöglicht das Escaping von Unicode-Symbolen in Unicode-Strings."
new "escape: Aktiviert das Escaping von Unicode-Symbolen in Unicode-Strings."
# renpy/common/00console.rpy:1040
old "unescape: Disables escaping of unicode symbols in unicode strings and print it as is (default)."
# Automatic translation.
new "unescape: Deaktiviert das Escaping von Unicode-Symbolen in Unicode-Zeichenfolgen und druckt sie so, wie sie sind (Voreinstellung)."
+14 -22
View File
@@ -23,8 +23,7 @@ translate german strings:
# 00gltest.rpy:93
old "Enable"
# Automatic translation.
new "Aktivieren Sie"
new "Aktivieren"
# 00gltest.rpy:109
old "Changes will take effect the next time this program is run."
@@ -40,7 +39,7 @@ translate german strings:
# 00gltest.rpy:148
old "This computer is not using shaders."
new "Dieser Computer verwendet keine Shaders."
new "Dieser Computer verwendet keine Shader."
# 00gltest.rpy:150
old "This computer is displaying graphics slowly."
@@ -107,8 +106,7 @@ translate german strings:
# 00gamepad.rpy:58
old "Press or move the [control!s] [kind]."
# Automatic translation.
new "Drücken Sie oder bewegen Sie die [control!s] [kind] ."
new "Drücke oder bewege [control!s] [kind] ."
# 00gamepad.rpy:66
old "Skip (A)"
@@ -117,8 +115,7 @@ translate german strings:
# 00gamepad.rpy:69
old "Back (B)"
# Automatic translation.
new "Rücken (B)"
new "Zurück (B)"
# _errorhandling.rpym:495
old "Open Traceback"
@@ -144,11 +141,11 @@ translate german strings:
# _errorhandling.rpym:538
old "Rollback"
new "Zurückscrollen"
new "Zurückspulen"
# _errorhandling.rpym:540
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
new "Versucht zu einem früheren Zeitpunkt zu gehen und ermöglicht es zu speichern oder eine andere Auswahl zu treffen."
new "Versucht zu einem früheren Zeitpunkt zu spulen, damit Du erneut speichern oder eine andere Entscheidung treffen kannst."
# _errorhandling.rpym:543
old "Ignore"
@@ -156,7 +153,7 @@ translate german strings:
# _errorhandling.rpym:545
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
new "Ignoriert den Fehler und ermöglicht es, fortzusetzen. Dies führt oft zu weiteren Fehlern."
new "Ignoriert den Fehler und ermöglicht es, fortzufahren. Dies führt oft zu weiteren Fehlern."
# _errorhandling.rpym:548
old "Reload"
@@ -176,7 +173,7 @@ translate german strings:
# _errorhandling.rpym:606
old "Open Parse Errors"
new "Parse Errors öffnen"
new "Syntaxfehler öffnen"
# _errorhandling.rpym:608
old "Opens the errors.txt file in a text editor."
@@ -229,7 +226,7 @@ translate german strings:
# renpy/common/00gltest.rpy:159
old "Powersave"
new "Powersave"
new "Energiesparen"
# renpy/common/00gltest.rpy:173
old "Framerate"
@@ -259,13 +256,11 @@ translate german strings:
# renpy/common/00gltest.rpy:259
old "The {a=edit:1:log.txt}log.txt{/a} file may contain information to help you determine what is wrong with your computer."
# Automatic translation.
new "Die Datei {a=edit:1:log.txt}log.txt{/a} kann Informationen enthalten, die Ihnen helfen, das Problem mit Ihrem Computer zu lösen."
new "Die Datei {a=edit:1:log.txt}log.txt{/a} kann Informationen enthalten, die Dir helfen, das Problem mit Deinem Computer zu lösen."
# renpy/common/00gltest.rpy:264
old "More details on how to fix this can be found in the {a=[url]}documentation{/a}."
# Automatic translation.
new "Weitere Einzelheiten zur Behebung dieses Problems finden Sie in der Dokumentation {a=[url]}{/a} ."
new "Weitere Einzelheiten zur Behebung dieses Problems findest Du in der Dokumentation {a=[url]}{/a} ."
# renpy/common/00gltest.rpy:281
old "Change render options"
@@ -274,13 +269,11 @@ translate german strings:
# renpy/common/00gamepad.rpy:58
old "Press or move the '[control!s]' [kind]."
# Automatic translation.
new "Drücken Sie oder bewegen Sie die Taste '[control!s]' [kind]."
new "Drücke oder bewege die Taste '[control!s]' [kind]."
# renpy/common/_errorhandling.rpym:555
old "Open"
# Automatic translation.
new "Öffnen Sie"
new "Öffnen"
# renpy/common/_errorhandling.rpym:559
old "Copy BBCode"
@@ -304,8 +297,7 @@ translate german strings:
# renpy/common/_errorhandling.rpym:626
old "Ignores the exception, allowing you to continue."
# Automatic translation.
new "Ignoriert die Ausnahme, so dass Sie fortfahren können."
new "Ignoriert den Fehler, so dass Du fortfahren kannst."
# renpy/common/_errorhandling.rpym:637
old "Console"
+1 -2
View File
@@ -134,7 +134,7 @@ translate german strings:
# gui.rpy:96
old "## Dialogue"
# Automatic translation.
new "*Dialog"
new "## Dialog"
# gui.rpy:98
old "## These variables control how dialogue is displayed on the screen one line at a time."
@@ -576,4 +576,3 @@ translate german strings:
old "## Change the size and spacing of various things."
# Automatic translation.
new "## Ändern Sie die Größe und die Abstände verschiedener Dinge."
File diff suppressed because it is too large Load Diff
+15 -37
View File
@@ -8,8 +8,7 @@ translate german strings:
# options.rpy:4
old "## Lines beginning with two '#' marks are comments, and you shouldn't uncomment them. Lines beginning with a single '#' mark are commented-out code, and you may want to uncomment them when appropriate."
# Automatic translation.
new "## Zeilen, die mit zwei '#' beginnen, sind Kommentare und sollten nicht auskommentiert werden. Zeilen, die mit einem einzelnen '#' beginnen, sind auskommentierter Code, den Sie ggf. auskommentieren sollten."
new "## Zeilen, die mit zwei '#' beginnen, sind Kommentare und sollten nicht auskommentiert werden. Zeilen, die mit einem einzelnen '#' beginnen, sind auskommentierter Code, den Du ggf. auskommentieren kannst."
# options.rpy:10
old "## Basics"
@@ -33,8 +32,7 @@ translate german strings:
# options.rpy:20
old "## Determines if the title given above is shown on the main menu screen. Set this to False to hide the title."
# Automatic translation.
new "## Bestimmt, ob der oben angegebene Titel auf dem Hauptmenübildschirm angezeigt wird. Setzen Sie dies auf False, um den Titel auszublenden."
new "## Bestimmt, ob der oben angegebene Titel auf dem Hauptmenübildschirm angezeigt wird. Setze dies auf False, um den Titel auszublenden."
# options.rpy:26
old "## The version of the game."
@@ -44,7 +42,7 @@ translate german strings:
# options.rpy:31
old "## Text that is placed on the game's about screen. To insert a blank line between paragraphs, write \\n\\n."
# Automatic translation.
new "## Text, der auf dem Info-Bildschirm des Spiels erscheint. Um eine Leerzeile zwischen Absätzen einzufügen, schreiben Sie \\n\\n."
new "## Text, der auf dem Info-Bildschirm des Spiels erscheint. Um eine Leerzeile zwischen Absätzen einzufügen, schreibe \\n\\n."
# options.rpy:37
old "## A short name for the game used for executables and directories in the built distribution. This must be ASCII-only, and must not contain spaces, colons, or semicolons."
@@ -53,8 +51,7 @@ translate german strings:
# options.rpy:44
old "## Sounds and music"
# Automatic translation.
new "## Klänge und Musik"
new "## Ton und Musik"
# options.rpy:46
old "## These three variables control which mixers are shown to the player by default. Setting one of these to False will hide the appropriate mixer."
@@ -63,13 +60,11 @@ translate german strings:
# options.rpy:55
old "## To allow the user to play a test sound on the sound or voice channel, uncomment a line below and use it to set a sample sound to play."
# Automatic translation.
new "## Um dem Benutzer die Möglichkeit zu geben, einen Testton auf dem Ton- oder Sprachkanal abzuspielen, entfernen Sie die Kommentarzeichen in der Zeile unten und verwenden Sie sie, um einen Beispielton abzuspielen."
new "## Um dem Benutzer die Möglichkeit zu geben, einen Testton auf dem Ton- oder Sprachkanal abzuspielen, entfernen die Kommentarzeichen in der Zeile unten und verwenden sie, um einen Beispielton abzuspielen."
# options.rpy:62
old "## Uncomment the following line to set an audio file that will be played while the player is at the main menu. This file will continue playing into the game, until it is stopped or another file is played."
# Automatic translation.
new "## Uncomment the following line to set an audio file that will be played while the player is at the main menu. Diese Datei wird im Spiel weiter abgespielt, bis sie gestoppt wird oder eine andere Datei abgespielt wird."
new "## Entferne das Kommentarzeichen in der folgenden Zeile, damit im Hauptmenü eine Audiodatei abgespielt wird. Diese wird im Spiel so lange weiterlaufen, bis sie gestoppt wird oder eine andere Datei abgespielt wird."
# options.rpy:69
old "## Transitions"
@@ -98,8 +93,7 @@ translate german strings:
# options.rpy:91
old "## A variable to set the transition used when the game starts does not exist. Instead, use a with statement after showing the initial scene."
# Automatic translation.
new "## Eine Variable zum Festlegen des Übergangs, der beim Start des Spiels verwendet wird, existiert nicht. Verwenden Sie stattdessen eine with-Anweisung, nachdem Sie die Anfangsszene gezeigt haben."
new "## Eine Variable zum Festlegen des Übergangs, der beim Start des Spiels verwendet wird, existiert nicht. Verwende stattdessen eine with-Anweisung, nachdem Du die Anfangsszene gezeigt hast."
# options.rpy:96
old "## Window management"
@@ -123,8 +117,7 @@ translate german strings:
# options.rpy:115
old "## Preference defaults"
# Automatic translation.
new "## Präferenzvorgaben"
new "## Standardwerte für Einstellungen"
# options.rpy:117
old "## Controls the default text speed. The default, 0, is infinite, while any other number is the number of characters per second to type out."
@@ -134,7 +127,7 @@ translate german strings:
# options.rpy:123
old "## The default auto-forward delay. Larger numbers lead to longer waits, with 0 to 30 being the valid range."
# Automatic translation.
new "## Die Standardverzögerung für die automatische Weiterleitung. Größere Zahlen führen zu längeren Wartezeiten, wobei 0 bis 30 der gültige Bereich ist."
new "## Die Standardverzögerung für das automatische Blättern. Größere Zahlen führen zu längeren Wartezeiten, wobei 0 bis 30 der gültige Bereich ist."
# options.rpy:129
old "## Save directory"
@@ -179,8 +172,7 @@ translate german strings:
# options.rpy:155
old "## This section controls how Ren'Py turns your project into distribution files."
# Automatic translation.
new "## Dieser Abschnitt steuert, wie Ren'Py Ihr Projekt in Distributionsdateien umwandelt."
new "## Dieser Abschnitt steuert, wie Ren'Py Dein Projekt in Distributionsdateien umwandelt."
# options.rpy:160
old "## The following functions take file patterns. File patterns are case- insensitive, and matched against the path relative to the base directory, with and without a leading /. If multiple patterns match, the first is used."
@@ -207,20 +199,13 @@ translate german strings:
# Automatic translation.
new "## ** passt auf alle Zeichen, auch auf das Verzeichnis-Trennzeichen."
# options.rpy:173
old "## For example, \"*.txt\" matches txt files in the base directory, \"game/**.ogg\" matches ogg files in the game directory or any of its subdirectories, and \"**.psd\" matches psd files anywhere in the project."
# Automatic translation.
new "*.txt\" findet beispielsweise txt-Dateien im Basisverzeichnis, \"game/**.ogg\" findet ogg-Dateien im Spielverzeichnis oder einem seiner Unterverzeichnisse und \"**.psd\" findet psd-Dateien überall im Projekt."
# options.rpy:177
old "## Classify files as None to exclude them from the built distributions."
# Automatic translation.
new "## Klassifizieren Sie Dateien als None, um sie von den erstellten Distributionen auszuschließen."
new "## Klassifiziere Dateien als None, um sie von den erstellten Distributionen auszuschließen."
# options.rpy:185
old "## To archive files, classify them as 'archive'."
# Automatic translation.
new "## Um Dateien zu archivieren, klassifizieren Sie sie als \"Archiv\"."
new "## Um Dateien zu archivieren, klassifiziere sie als \"archive\"."
# options.rpy:190
old "## Files matching documentation patterns are duplicated in a mac app build, so they appear in both the app and the zip file."
@@ -229,21 +214,16 @@ translate german strings:
# options.rpy:196
old "## A Google Play license key is required to download expansion files and perform in-app purchases. It can be found on the \"Services & APIs\" page of the Google Play developer console."
# Automatic translation.
new "## Ein Google Play-Lizenzschlüssel ist erforderlich, um Erweiterungsdateien herunterzuladen und In-App-Käufe durchzuführen. Sie finden ihn auf der Seite \"Services & APIs\" in der Google Play-Entwicklerkonsole."
new "## Ein Google Play-Lizenzschlüssel ist erforderlich, um Erweiterungsdateien herunterzuladen und In-App-Käufe durchzuführen. Du findest ihn auf der Seite \"Services & APIs\" in der Google Play-Entwicklerkonsole."
# options.rpy:203
old "## The username and project name associated with an itch.io project, separated by a slash."
# Automatic translation.
new "## Der mit einem itch.io-Projekt verbundene Benutzername und Projektname, getrennt durch einen Schrägstrich."
translate german strings:
# gui/game/options.rpy:31
old "## Text that is placed on the game's about screen. Place the text between the triple-quotes, and leave a blank line between paragraphs."
# Automatic translation.
new "## Text, der auf dem Info-Bildschirm des Spiels erscheint. Setzen Sie den Text zwischen die dreifachen Anführungszeichen und lassen Sie eine Leerzeile zwischen den Absätzen."
new "## Text, der auf dem Info-Bildschirm des Spiels erscheint. Setz den Text zwischen dreifache Anführungszeichen und lass eine Leerzeile zwischen den Absätzen."
# gui/game/options.rpy:47
old "## These three variables control, among other things, which mixers are shown to the player by default. Setting one of these to False will hide the appropriate mixer."
@@ -261,6 +241,4 @@ translate german strings:
# gui/game/options.rpy:203
old "## A Google Play license key is required to perform in-app purchases. It can be found in the Google Play developer console, under \"Monetize\" > \"Monetization Setup\" > \"Licensing\"."
# Automatic translation.
new "## Für In-App-Käufe ist ein Google Play-Lizenzschlüssel erforderlich. Sie finden ihn in der Google Play-Entwicklerkonsole unter \"Monetize\" > \"Monetization Setup\" > \"Licensing\"."
new "## Für In-App-Käufe ist ein Google Play-Lizenzschlüssel erforderlich. Du findest ihn in der Google Play-Entwicklerkonsole unter \"Monetize\" > \"Monetization Setup\" > \"Licensing\"."
+67 -103
View File
@@ -8,13 +8,11 @@ translate german strings:
# screens.rpy:87
old "## In-game screens"
# Automatic translation.
new "## Bildschirme im Spiel"
new "## Spielinterne Bildschirme (Screens)"
# screens.rpy:91
old "## Say screen"
# Automatic translation.
new "## Sagen Sie Bildschirm"
new "## Dialog-Bildschirm"
# screens.rpy:93
old "## The say screen is used to display dialogue to the player. It takes two parameters, who and what, which are the name of the speaking character and the text to be displayed, respectively. (The who parameter can be None if no name is given.)"
@@ -32,8 +30,7 @@ translate german strings:
# screens.rpy:169
old "## Input screen"
# Automatic translation.
new "## Eingabebildschirm"
new "## Eingabe-Bildschirm"
# screens.rpy:171
old "## This screen is used to display renpy.input. The prompt parameter is used to pass a text prompt in."
@@ -51,13 +48,11 @@ translate german strings:
# screens.rpy:205
old "## Choice screen"
# Automatic translation.
new "## Auswahlbildschirm"
new "## Auswahl- oder Entscheidungs-Bildschirm"
# screens.rpy:207
old "## This screen is used to display the in-game choices presented by the menu statement. The one parameter, items, is a list of objects, each with caption and action fields."
# Automatic translation.
new "## Dieser Bildschirm wird verwendet, um die Auswahlmöglichkeiten im Spiel anzuzeigen, die von der Menüanweisung präsentiert werden. Der eine Parameter, items, ist eine Liste von Objekten, jedes mit Beschriftung und Aktionsfeldern."
new "## Dieser Bildschirm wird verwendet, um die Auswahlmöglichkeiten im Spiel anzuzeigen, die von der Menüanweisung präsentiert werden. Der Parameter \"items\" ist eine Liste von Objekten, jedes mit Beschriftung und Aktionsfeldern."
# screens.rpy:211
old "## http://www.renpy.org/doc/html/screen_special.html#choice"
@@ -65,13 +60,11 @@ translate german strings:
# screens.rpy:221
old "## When this is true, menu captions will be spoken by the narrator. When false, menu captions will be displayed as empty buttons."
# Automatic translation.
new "## Wenn dies wahr ist, werden die Menübeschriftungen vom Sprecher gesprochen. Bei \"false\" werden die Menübeschriftungen als leere Schaltflächen angezeigt."
new "## Bei \"True\" werden die Menübeschriftungen vom Erzähler gesprochen. Bei \"False\" werden die Menübeschriftungen als leere Schaltflächen angezeigt."
# screens.rpy:244
old "## Quick Menu screen"
# Automatic translation.
new "## Bildschirm Schnellmenü"
new "## Schnellmenü-Bildschirm"
# screens.rpy:246
old "## The quick menu is displayed in-game to provide easy access to the out-of-game menus."
@@ -84,12 +77,11 @@ translate german strings:
# screens.rpy:262
old "History"
# Automatic translation.
new "Geschichte"
new "Dialogverlauf"
# screens.rpy:263
old "Skip"
new "Spulen"
new "Vorspulen"
# screens.rpy:264
old "Auto"
@@ -105,7 +97,7 @@ translate german strings:
# screens.rpy:267
old "Q.Load"
new "S. Laden"
new "S.Laden"
# screens.rpy:268
old "Prefs"
@@ -133,7 +125,7 @@ translate german strings:
# screens.rpy:316
old "Load"
# Automatic translation.
new "Laden Sie"
new "Laden"
# screens.rpy:318
old "Preferences"
@@ -205,13 +197,11 @@ translate german strings:
# screens.rpy:539
old "## About screen"
# Automatic translation.
new "## Über den Bildschirm"
new "## Info-Bildschirm"
# screens.rpy:541
old "## This screen gives credit and copyright information about the game and Ren'Py."
# Automatic translation.
new "## Dieser Bildschirm enthält Kredit- und Copyright-Informationen über das Spiel und Ren'Py."
new "## Dieser Bildschirm enthält Würdigungen und Copyright-Informationen über das Spiel und Ren'Py."
# screens.rpy:544
old "## There's nothing special about this screen, and hence it also serves as an example of how to make a custom screen."
@@ -220,7 +210,6 @@ translate german strings:
# screens.rpy:551
old "## This use statement includes the game_menu screen inside this one. The vbox child is then included inside the viewport inside the game_menu screen."
# Automatic translation.
new "## Diese Anweisung schließt den Bildschirm game_menu in diesen Bildschirm ein. Das vbox-Kind wird dann in das Viewport innerhalb des game_menu-Bildschirms aufgenommen."
# screens.rpy:561
@@ -234,23 +223,20 @@ translate german strings:
# screens.rpy:567
old "Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]"
# Automatic translation.
new "Hergestellt mit {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only] .\n\n[renpy.license!t]"
new "Erstellt mit {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]"
# screens.rpy:570
old "## This is redefined in options.rpy to add text to the about screen."
# Automatic translation.
new "## Dies wird in options.rpy neu definiert, um dem Info-Bildschirm Text hinzuzufügen."
# screens.rpy:582
old "## Load and Save screens"
# Automatic translation.
new "## Bildschirme laden und speichern"
new "## Spielstände-Bildschirm"
# screens.rpy:584
old "## These screens are responsible for letting the player save the game and load it again. Since they share nearly everything in common, both are implemented in terms of a third screen, file_slots."
# Automatic translation.
new "## Diese Bildschirme sind dafür verantwortlich, dass der Spieler das Spiel speichern und wieder laden kann. Da sie fast alles gemeinsam haben, sind beide in Form eines dritten Bildschirms, file_slots, implementiert."
new "## Der load and save Bildschirm sind dafür verantwortlich, dass der Spieler das Spiel speichern und wieder laden kann. Da sie fast alles gemeinsam haben, sind beide in Form eines dritten Bildschirms, file_slots, implementiert."
# screens.rpy:588
old "## https://www.renpy.org/doc/html/screen_special.html#save https://www.renpy.org/doc/html/screen_special.html#load"
@@ -263,13 +249,11 @@ translate german strings:
# screens.rpy:607
old "Automatic saves"
# Automatic translation.
new "Automatisch speichern"
new "Automatische Speicherstände"
# screens.rpy:607
old "Quick saves"
# Automatic translation.
new "Schnelles Speichern"
new "Schnellspeicherstände"
# screens.rpy:613
old "## This ensures the input will get the enter event before any of the buttons do."
@@ -283,12 +267,11 @@ translate german strings:
# screens.rpy:649
old "{#file_time}%A, %B %d %Y, %H:%M"
new "{#file_time}%A, %B %d %Y, %H:%M"
new "{#file_time}%A, %d. %B %Y, %H:%M"
# screens.rpy:649
old "empty slot"
# Automatic translation.
new "leerer Steckplatz"
new "leerer Speicherplatz"
# screens.rpy:657
old "## Buttons to access other pages."
@@ -305,7 +288,7 @@ translate german strings:
# screens.rpy:670
old "{#quick_page}Q"
new "{#quick_page}Q"
new "{#quick_page}S"
# screens.rpy:676
old ">"
@@ -314,12 +297,12 @@ translate german strings:
# screens.rpy:711
old "## Preferences screen"
# Automatic translation.
new "## Bildschirm Präferenzen"
new "## Einstellungs-Bildschirm"
# screens.rpy:713
old "## The preferences screen allows the player to configure the game to better suit themselves."
# Automatic translation.
new "## Der Einstellungsbildschirm ermöglicht es dem Spieler, das Spiel so zu konfigurieren, dass es besser zu ihm passt."
new "## Der Einstellungs-Bildschirm ermöglicht es dem Spieler, das Spiel so zu konfigurieren, dass es besser zu ihm passt."
# screens.rpy:716
old "## https://www.renpy.org/doc/html/screen_special.html#preferences"
@@ -345,7 +328,7 @@ translate german strings:
# screens.rpy:745
old "Disable"
# Automatic translation.
new "Deaktivieren Sie"
new "Deaktivieren"
# screens.rpy:746
old "Left"
@@ -359,12 +342,11 @@ translate german strings:
# screens.rpy:752
old "Unseen Text"
# Automatic translation.
new "Unsichtbarer Text"
new "Ungesehener Text"
# screens.rpy:753
old "After Choices"
new "Nach Auswahl"
new "Nach Entscheidungen"
# screens.rpy:754
old "Transitions"
@@ -389,7 +371,7 @@ translate german strings:
# screens.rpy:785
old "Sound Volume"
new "Soundlautstärke"
new "Geräuschlautstärke"
# screens.rpy:791
old "Test"
@@ -406,8 +388,7 @@ translate german strings:
# screens.rpy:882
old "## History screen"
# Automatic translation.
new "## Bildschirm Geschichte"
new "## Dialogverlauf-Bildschirm"
# screens.rpy:884
old "## This is a screen that displays the dialogue history to the player. While there isn't anything special about this screen, it does have to access the dialogue history stored in _history_list."
@@ -420,8 +401,7 @@ translate german strings:
# screens.rpy:894
old "## Avoid predicting this screen, as it can be very large."
# Automatic translation.
new "## Vermeiden Sie es, diesen Bildschirm vorherzusehen, da er sehr groß sein kann."
new "## Vermeide es, diesen Bildschirm via \"predict\" vorberechnen zu lassen, da er sehr groß sein kann."
# screens.rpy:905
old "## This lays things out properly if history_height is None."
@@ -430,8 +410,7 @@ translate german strings:
# screens.rpy:914
old "## Take the color of the who text from the Character, if set."
# Automatic translation.
new "## Übernimmt die Farbe des Wer-Textes aus dem Zeichen, falls festgelegt."
new "## Übernimmt die Farbe des who-Textes des Charakters, falls vorhanden."
# screens.rpy:921
old "The dialogue history is empty."
@@ -470,17 +449,17 @@ translate german strings:
# screens.rpy:1004
old "Advances dialogue and activates the interface."
# Automatic translation.
new "Erweitert den Dialog und aktiviert die Schnittstelle."
new "Bringt den Dialog voran und aktiviert die Schnittstelle."
# screens.rpy:1007
old "Space"
# Automatic translation.
new "Weltraum"
new "Leertaste"
# screens.rpy:1008
old "Advances dialogue without selecting choices."
# Automatic translation.
new "Bringt den Dialog voran, ohne eine Auswahl zu treffen."
new "Bringt den Dialog voran ohne eine Auswahl zu treffen."
# screens.rpy:1011
old "Arrow Keys"
@@ -490,12 +469,12 @@ translate german strings:
# screens.rpy:1012
old "Navigate the interface."
# Automatic translation.
new "Navigieren Sie durch die Schnittstelle."
new "Navigiert durch die Schnittstelle."
# screens.rpy:1015
old "Escape"
# Automatic translation.
new "Flucht"
new "ESC"
# screens.rpy:1016
old "Accesses the game menu."
@@ -509,8 +488,7 @@ translate german strings:
# screens.rpy:1020
old "Skips dialogue while held down."
# Automatic translation.
new "Überspringt Dialoge, wenn Sie die Taste gedrückt halten."
new "Überspringt Dialoge, wenn Du die Taste gedrückt hältst."
# screens.rpy:1023
old "Tab"
@@ -519,27 +497,27 @@ translate german strings:
# screens.rpy:1024
old "Toggles dialogue skipping."
# Automatic translation.
new "Schaltet das Überspringen von Dialogen ein."
new "Schaltet das Überspringen von Dialogen ein/aus."
# screens.rpy:1027
old "Page Up"
# Automatic translation.
new "Seite oben"
new "Seite hoch"
# screens.rpy:1028
old "Rolls back to earlier dialogue."
# Automatic translation.
new "Kehrt zu einem früheren Dialog zurück."
new "Springt zu einem früheren Dialog zurück."
# screens.rpy:1031
old "Page Down"
# Automatic translation.
new "Seite unten"
new "Seite runter"
# screens.rpy:1032
old "Rolls forward to later dialogue."
# Automatic translation.
new "Weiter geht's mit einem späteren Dialog."
new "Springt zu einem späteren Dialog vor."
# screens.rpy:1036
old "Hides the user interface."
@@ -554,12 +532,12 @@ translate german strings:
# screens.rpy:1044
old "Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}."
# Automatic translation.
new "Schaltet das Hilfsmittel {a=https://www.renpy.org/l/voicing}selbststimmend{/a} um."
new "Schaltet unterstützende {a=https://www.renpy.org/l/voicing}Automatische Spracherzeugung{/a} ein/aus."
# screens.rpy:1050
old "Left Click"
# Automatic translation.
new "Links klicken"
new "Linksklick"
# screens.rpy:1054
old "Middle Click"
@@ -572,9 +550,8 @@ translate german strings:
new "Rechtsklick"
# screens.rpy:1062
old "Mouse Wheel Up\nClick Rollback Side"
# Automatic translation.
new "Mausrad nach oben\nKlicken Sie auf Rollback Seite"
old "Mouse Wheel Up"
new "Mausrad nach oben\nKlicke auf Rollback Seite"
# screens.rpy:1066
old "Mouse Wheel Down"
@@ -589,12 +566,12 @@ translate german strings:
# screens.rpy:1074
old "Advance dialogue and activates the interface."
# Automatic translation.
new "Erweitert den Dialog und aktiviert die Schnittstelle."
new "Springt zu einem späteren Dialog vor und aktiviert die Schnittstelle."
# screens.rpy:1078
old "Roll back to earlier dialogue."
# Automatic translation.
new "Gehen Sie zu einem früheren Dialog zurück."
new "Springt zu einem früheren Dialog zurück."
# screens.rpy:1081
old "Right Shoulder"
@@ -603,8 +580,7 @@ translate german strings:
# screens.rpy:1082
old "Roll forward to later dialogue."
# Automatic translation.
new "Spulen Sie vor zu einem späteren Dialog."
new "Spult zu einem späteren Dialog vor."
# screens.rpy:1085
old "D-Pad, Sticks"
@@ -617,8 +593,7 @@ translate german strings:
# screens.rpy:1090
old "Access the game menu."
# Automatic translation.
new "Rufen Sie das Spielmenü auf."
new "Ruft das Spielmenü auf."
# screens.rpy:1093
old "Y/Top Button"
@@ -628,7 +603,7 @@ translate german strings:
# screens.rpy:1096
old "Calibrate"
# Automatic translation.
new "Kalibrieren Sie"
new "Kalibrieren"
# screens.rpy:1124
old "## Additional screens"
@@ -637,8 +612,7 @@ translate german strings:
# screens.rpy:1128
old "## Confirm screen"
# Automatic translation.
new "## Bildschirm bestätigen"
new "## Bestätigungs-Bildschirm"
# screens.rpy:1130
old "## The confirm screen is called when Ren'Py wants to ask the player a yes or no question."
@@ -652,7 +626,7 @@ translate german strings:
# screens.rpy:1137
old "## Ensure other screens do not get input while this screen is displayed."
# Automatic translation.
new "## Stellen Sie sicher, dass andere Bildschirme keine Eingaben erhalten, während dieser Bildschirm angezeigt wird."
new "## Stell sicher, dass andere Bildschirme keine Eingaben erhalten, während dieser Bildschirm angezeigt wird."
# screens.rpy:1161
old "Yes"
@@ -664,13 +638,12 @@ translate german strings:
# screens.rpy:1164
old "## Right-click and escape answer \"no\"."
# Automatic translation.
new "## Klicken Sie mit der rechten Maustaste und geben Sie die Antwort \"Nein\" ein."
new "## Ein Rechtsklick oder [ESC] beantworten jeweils mit \"Nein\"."
# screens.rpy:1191
old "## Skip indicator screen"
# Automatic translation.
new "## Indikatorbildschirm überspringen"
new "## Vorspul-Symbol Bildschirm"
# screens.rpy:1193
old "## The skip_indicator screen is displayed to indicate that skipping is in progress."
@@ -683,18 +656,16 @@ translate german strings:
# screens.rpy:1208
old "Skipping"
# Automatic translation.
new "Überspringen"
new "Vorspulen"
# screens.rpy:1215
old "## This transform is used to blink the arrows one after another."
# Automatic translation.
new "## Diese Transformation wird verwendet, um die Pfeile nacheinander zu blinken."
new "## Dieses Transform wird verwendet, um die Pfeile nacheinander blinken zu lassen."
# screens.rpy:1247
old "## Notify screen"
# Automatic translation.
new "## Bildschirm benachrichtigen"
new "## Benachrichtigungsbildschirm"
# screens.rpy:1249
old "## The notify screen is used to show the player a message. (For example, when the game is quicksaved or a screenshot has been taken.)"
@@ -736,8 +707,7 @@ translate german strings:
# screens.rpy:1406
old "## Mobile Variants"
# Automatic translation.
new "## Mobile Varianten"
new "## Varianten für Mobilgeräte"
# screens.rpy:1413
old "## Since a mouse may not be present, we replace the quick menu with a version that uses fewer and bigger buttons that are easier to touch."
@@ -755,12 +725,11 @@ translate german strings:
# gui/game/screens.rpy:114
old "## If there's a side image, display it above the text. Do not display on the phone variant - there's no room."
# Automatic translation.
new "## Wenn es ein Seitenbild gibt, zeigen Sie es über dem Text an. Nicht auf der Telefonvariante anzeigen - dort ist kein Platz."
new "## Wenn es ein Seitenbild gibt, wird es über dem Text angezeigt. Allerdings nicht auf der Smartphone-Variante - dort ist kein Platz."
# gui/game/screens.rpy:120
old "## Make the namebox available for styling through the Character object."
# Automatic translation.
new "## Machen Sie das Namensfeld für die Gestaltung durch das Character-Objekt verfügbar."
new "## Macht das Namensfeld für die Gestaltung durch das Character-Objekt verfügbar."
# gui/game/screens.rpy:173
old "## https://www.renpy.org/doc/html/screen_special.html#input"
@@ -772,8 +741,7 @@ translate german strings:
# gui/game/screens.rpy:241
old "## Ensure this appears on top of other screens."
# Automatic translation.
new "## Stellen Sie sicher, dass dies über den anderen Bildschirmen erscheint."
new "## Stellt sicher, dass dies vor allen anderen Bildschirmen erscheint."
# gui/game/screens.rpy:280
old "## Main and Game Menu Screens"
@@ -801,8 +769,7 @@ translate german strings:
# gui/game/screens.rpy:429
old "## Reserve space for the navigation section."
# Automatic translation.
new "## Reservieren Sie Platz für den Navigationsbereich."
new "## Reserviert Platz für den Navigationsbereich."
# gui/game/screens.rpy:608
old "## The page name, which can be edited by clicking on a button."
@@ -812,7 +779,7 @@ translate german strings:
# gui/game/screens.rpy:668
old "## range(1, 10) gives the numbers from 1 to 9."
# Automatic translation.
new "## bereich(1, 10) liefert die Zahlen von 1 bis 9."
new "## range(1, 10) liefert die Zahlen von 1 bis 9."
# gui/game/screens.rpy:676
old "Upload Sync"
@@ -826,7 +793,6 @@ translate german strings:
# gui/game/screens.rpy:921
old "## This determines what tags are allowed to be displayed on the history screen."
# Automatic translation.
new "## Hier wird festgelegt, welche Tags auf dem Verlaufsbildschirm angezeigt werden dürfen."
# gui/game/screens.rpy:1049
@@ -845,7 +811,6 @@ translate german strings:
# gui/game/screens.rpy:1248
old "## We have to use a font that has the BLACK RIGHT-POINTING SMALL TRIANGLE glyph in it."
# Automatic translation.
new "## Wir müssen eine Schriftart verwenden, die die Glyphe BLACK RIGHT-POINTING SMALL TRIANGLE enthält."
# gui/game/screens.rpy:1296
@@ -859,13 +824,12 @@ translate german strings:
# gui/game/screens.rpy:1410
old "## Bubble screen"
# Automatic translation.
new "## Blasenbildschirm"
new "## Sprechblasen-Bildschirm"
# gui/game/screens.rpy:1412
old "## The bubble screen is used to display dialogue to the player when using speech bubbles. The bubble screen takes the same parameters as the say screen, must create a displayable with the id of \"what\", and can create displayables with the \"namebox\", \"who\", and \"window\" ids."
# Automatic translation.
new "## Der Sprechblasenbildschirm wird verwendet, um dem Spieler einen Dialog anzuzeigen, wenn Sprechblasen verwendet werden. Der Sprechblasenbildschirm benötigt die gleichen Parameter wie der Sprechblasenbildschirm, muss ein Displayable mit der Id \"what\" erstellen und kann Displayables mit den Ids \"namebox\", \"who\" und \"window\" erstellen."
new "## Der Sprechblasenbildschirm wird verwendet, um dem Spieler einen Dialog anzuzeigen, wenn Sprechblasen verwendet werden. Er benötigt die gleichen Parameter wie der Dialog-Bildschirm, muss ein Displayable mit der Id \"what\" erstellen und kann Displayables mit den Ids \"namebox\", \"who\" und \"window\" erstellen."
# gui/game/screens.rpy:1417
old "## https://www.renpy.org/doc/html/bubble.html#bubble-screen"
@@ -875,6 +839,6 @@ translate german strings:
# gui/game/screens.rpy:411
old "## The scroll parameter can be None, or one of \"viewport\" or \"vpgrid\". This screen is intended to be used with one or more children, which are transcluded (placed) inside it."
# Automatic translation.
new "## Der Parameter scroll kann None oder einer der Parameter \"viewport\" oder \"vpgrid\" sein. Dieser Bildschirm soll mit einem oder mehreren Kindern verwendet werden, die in ihn eingeschlossen (platziert) werden."
new "## Der Parameter scroll kann None oder einer der Parameter \"viewport\" oder \"vpgrid\" sein. Dieser Bildschirm sollte mit einem oder mehreren Unterobjekten verwendet werden, die in ihn eingeschlossen (platziert) werden."
+4 -5
View File
@@ -1,17 +1,16 @@
# Sie können das Skript Ihres Spiels in dieser Datei platzieren.
# Du kannst das Skript für Dein Spiel in diese Datei schreiben.
# Bestimmen Sie Grafiken unterhalb dieser Zeile, indem Sie die "Image-Statements" verwenden.
# Unterhalb dieser Zeile kannst Du Bilder definieren, indem Du das Wort "image" verwendest
# z. B. image eileen happy = "eileen_happy.png"
# Bestimmen Sie Charaktere, die in diesem Spiel verwendet werden.
# Erstelle hier Charaktere, die in Deinem Spiel auftauchen werden
define e = Character('Eileen', color="#c8ffc8")
# Hier beginnt das Spiel.
label start:
e "Du hast ein neues Ren'Py Spiel erstellt."
e "Sobald du eine Geschichte, Bilder und Musik hinzufügst, kannst du es für alle veröffentlichen!"
e "Sobald Du eine Geschichte, Bilder und Musik hinzufügst, kannst Du es für alle veröffentlichen!"
return
+14 -7
View File
@@ -370,7 +370,7 @@
new "{b}Συνιστάται.{/b} Ένας επεξεργαστής κειμένου σε έκδοση beta, με εύκολο περιβάλλον εργασίας και χαραχτηριστικά που σας βοηθούν, όπως π.χ. ορθογραφικό έλεγχο. Ο Editra προς το παρόν δεν υποστηρίζει IME για είσοδο κειμένου σε Κινέζικα, Ιαπωνέζικα και Κορεάτικα. Σε Linux ο Editra απαιτεί το wxPython."
# editor.rpy:167
old "This may have occured because wxPython is not installed on this system."
old "This may have occurred because wxPython is not installed on this system."
new "Αυτό πιθανώς να συνέβη, διότι το wxPython δεν έχει εγκατασταθεί σε αυτό το σύστημα."
# editor.rpy:169
@@ -386,7 +386,7 @@
new "1.8 MB απαιτείται να κατέβει."
# editor.rpy:182
old "This may have occured because Java is not installed on this system."
old "This may have occurred because Java is not installed on this system."
new "Αυτό πιθανώς να συνέβη, διότι η Java δεν έχει εγκατασταθεί σε αυτό το σύστημα."
# editor.rpy:191
@@ -398,7 +398,7 @@
new "Εμποδίζει τη Ren'Py να ανοίξει επεξεργαστή κειμένου."
# editor.rpy:359
old "An exception occured while launching the text editor:\n[exception!q]"
old "An exception occurred while launching the text editor:\n[exception!q]"
new "Μια προγραμματιστική εξαίρεση συνέβει κατά την εκκίνηση του επεξεργαστή κειμένου:\n[exception!q] "
# editor.rpy:457
@@ -624,7 +624,7 @@
new "ΣΦΑΛΜΑ"
# interface.rpy:356
old "While [what!qt], an error occured:"
old "While [what!qt], an error occurred:"
new "Ενόσω [what!qt], συνέβη ένα σφάλμα:"
# interface.rpy:356
@@ -1179,7 +1179,7 @@
new "Η απόλυτη νεώτερη έκδοση της Ren'Py. Μπορεί να έχει τα πιο νέα χαρακτηριστικά, αλλά να μη μπορέι καν να φορτώσει."
# updater.rpy:152
old "An error has occured:"
old "An error has occurred:"
new "Ένα σφάλμα συνέβη:"
# updater.rpy:154
@@ -2045,9 +2045,9 @@ translate greek strings:
new "Προσαρμοσμένο θέμα"
# game/preferences.rpy:256
old "Information about creating a custom theme can be found {a=https://www.renpy.org/doc/html/skins.html}in the Ren'Py Documentation{/a}."
old "Information about creating a custom theme can be found {a=[skins_url]}in the Ren'Py Documentation{/a}."
# Automatic translation.
new "Πληροφορίες σχετικά με τη δημιουργία ενός προσαρμοσμένου θέματος μπορείτε να βρείτε στη διεύθυνση {a=https://www.renpy.org/doc/html/skins.html}στην Τεκμηρίωση Ren'Py{/a}."
new "Πληροφορίες σχετικά με τη δημιουργία ενός προσαρμοσμένου θέματος μπορείτε να βρείτε στη διεύθυνση {a=[skins_url]}στην Τεκμηρίωση Ren'Py{/a}."
# game/preferences.rpy:273
old "Install Libraries:"
@@ -2210,3 +2210,10 @@ translate greek strings:
# Automatic translation.
new "Πριν συσκευάσετε εφαρμογές ιστού, θα πρέπει να κατεβάσετε το RenPyWeb, την υποστήριξη ιστού της Ren'Py. Θα θέλατε να κατεβάσετε το RenPyWeb τώρα;"
translate greek strings:
# game/updater.rpy:79
old "A nightly build of fixes to the release version of Ren'Py."
# Automatic translation.
new "Ένα νυχτερινό build με διορθώσεις στην έκδοση κυκλοφορίας του Ren'Py."
+1 -1
View File
@@ -583,7 +583,7 @@ translate greek strings:
new "Δεξί κλικ"
# screens.rpy:1062
old "Mouse Wheel Up\nClick Rollback Side"
old "Mouse Wheel Up"
# Automatic translation.
new "Τροχός ποντικιού επάνω\nΚάντε κλικ στο Rollback Side"
-18
View File
@@ -207,11 +207,6 @@ translate indonesian strings:
# Automatic translation.
new "## Tombol Pilihan"
# gui.rpy:207
old "## Choice buttons are used in the in-game menus."
# Automatic translation.
new "Tombol pilihan ## digunakan dalam menu dalam game."
# gui.rpy:220
old "## File Slot Buttons"
# Automatic translation.
@@ -267,11 +262,6 @@ translate indonesian strings:
# Automatic translation.
new "## Jarak spasi di antara pilihan menu."
# gui.rpy:261
old "## Buttons in the navigation section of the main and game menus."
# Automatic translation.
new "Tombol ## di bagian navigasi pada menu utama dan menu permainan."
# gui.rpy:264
old "## Controls the amount of spacing between preferences."
# Automatic translation.
@@ -441,11 +431,6 @@ translate indonesian strings:
# Automatic translation.
new "## Ini mengubah ukuran dan spasi berbagai elemen GUI untuk memastikan elemen-elemen tersebut mudah terlihat pada ponsel."
# gui.rpy:413
old "## Font sizes."
# Automatic translation.
new "Ukuran huruf ##."
# gui.rpy:421
old "## Adjust the location of the textbox."
# Automatic translation.
@@ -471,8 +456,6 @@ translate indonesian strings:
# Automatic translation.
new "## Tombol cepat."
translate indonesian strings:
# gui.rpy:17
old "## GUI Configuration Variables"
new "## Variabel konfigurasi GUI"
@@ -532,4 +515,3 @@ translate indonesian strings:
old "## The maximum number of NVL-mode entries Ren'Py will display. When more entries than this are to be show, the oldest entry will be removed."
# Automatic translation.
new "## Jumlah maksimum entri mode NVL yang akan ditampilkan Ren'Py. Ketika lebih banyak entri daripada ini akan ditampilkan, entri tertua akan dihapus."
+14 -7
View File
@@ -366,7 +366,7 @@
new "{b}Di Rekomendasikan.{/b} Editor dengan interface yang mudah untuk di gunakan dan fitur yang sesuai dengan development . Saat ini Editra belum mendukung text input IME yang di butuhkan untuk bahasa Cina,Jepang Dan Korea. Pada Linux, Editra memerlikan wxPython."
# editor.rpy:167
old "This may have occured because wxPython is not installed on this system."
old "This may have occurred because wxPython is not installed on this system."
new "Ini mungkin terjadi karena wxPython tidak terpasang di sistem ini."
# editor.rpy:169
@@ -382,7 +382,7 @@
new "1.8 MB download di butuhkan."
# editor.rpy:182
old "This may have occured because Java is not installed on this system."
old "This may have occurred because Java is not installed on this system."
new "Ini mungkin terjadi karena Java tidak terpasang di sistem ini."
# editor.rpy:191
@@ -394,7 +394,7 @@
new "Larang Ren''Py untuk membuka editor text."
# editor.rpy:359
old "An exception occured while launching the text editor:\n[exception!q]"
old "An exception occurred while launching the text editor:\n[exception!q]"
new "Kesalahan terjadi ketika menjalankan editor text: \n[exception!q]"
# editor.rpy:457
@@ -612,7 +612,7 @@
new "KESALAHAN"
# interface.rpy:356
old "While [what!qt], an error occured:"
old "While [what!qt], an error occurred:"
new "Kesalahan terjadi ketika : [what!qt] adalah :"
# interface.rpy:356
@@ -1146,7 +1146,7 @@
new "Update terbaru dari pengembangan Ren'Py. Ini mungikin mempunyai fitur terbaru. Bahkan tidak jalan sama sekali."
# updater.rpy:152
old "An error has occured:"
old "An error has occurred:"
new "Kesalahan telah terjadi:"
# updater.rpy:154
@@ -2026,9 +2026,9 @@ translate indonesian strings:
new "Tema khusus"
# game/preferences.rpy:256
old "Information about creating a custom theme can be found {a=https://www.renpy.org/doc/html/skins.html}in the Ren'Py Documentation{/a}."
old "Information about creating a custom theme can be found {a=[skins_url]}in the Ren'Py Documentation{/a}."
# Automatic translation.
new "Informasi tentang membuat tema khusus dapat ditemukan di {a=https://www.renpy.org/doc/html/skins.html}dalam Dokumentasi Ren'Py{/a}."
new "Informasi tentang membuat tema khusus dapat ditemukan di {a=[skins_url]}dalam Dokumentasi Ren'Py{/a}."
# game/preferences.rpy:273
old "Install Libraries:"
@@ -2168,3 +2168,10 @@ translate indonesian strings:
# Automatic translation.
new "Gambar dan musik dapat diunduh saat bermain. File 'progressive_download.txt' akan dibuat sehingga Anda dapat mengonfigurasi perilaku ini."
translate indonesian strings:
# game/updater.rpy:79
old "A nightly build of fixes to the release version of Ren'Py."
# Automatic translation.
new "Perbaikan versi malam hari untuk versi rilis Ren'Py."
+2 -2
View File
@@ -497,8 +497,8 @@ translate indonesian strings:
new "Klik Kanan"
# screens.rpy:1062
old "Mouse Wheel Up\nClick Rollback Side"
new "Roda Mouse Atas\nKlik Arah Rollback"
old "Mouse Wheel Up"
new "Roda Mouse Atas"
# screens.rpy:1066
old "Mouse Wheel Down"
+89 -201
View File
@@ -183,7 +183,7 @@ translate italian strings:
# 00gui.rpy:232
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
new "Confermi di voler tornare al menù principale?\nQuesto causerà la perdita di progressi non salvati."
new "Confermi di voler tornare al menu principale?\nQuesto causerà la perdita di progressi non salvati."
# 00gui.rpy:233
old "Are you sure you want to end the replay?"
@@ -203,7 +203,7 @@ translate italian strings:
# 00keymap.rpy:250
old "Saved screenshot as %s."
new "Screenshot salvato come %s."
new "Cattura di schermaa salvata come %s."
# 00library.rpy:142
old "Self-voicing disabled."
@@ -211,7 +211,7 @@ translate italian strings:
# 00library.rpy:143
old "Clipboard voicing enabled. "
new "Vocalizza Appunti abilitato. "
new "Vocalizzazione Appunti abilitata. "
# 00library.rpy:144
old "Self-voicing enabled. "
@@ -223,7 +223,7 @@ translate italian strings:
# 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 "Questo programma contiene software libero rilasciato sotto una quantità di licenze, che includono la MIT License e la GNU Lesser General Public License. Una lista completa dei software, inclusi link al codice sorgente completo, si può trovare {a=https://www.renpy.org/l/license}qui{/a}."
new "Questo programma contiene software libero rilasciato sotto svariate licenze, che includono la MIT License e la GNU Lesser General Public License. Una lista completa dei software, inclusi link al codice sorgente completo, si può trovare {a=https://www.renpy.org/l/license}qui{/a}."
# 00preferences.rpy:422
old "Clipboard voicing enabled. Press 'shift+C' to disable."
@@ -231,7 +231,7 @@ translate italian strings:
# 00preferences.rpy:424
old "Self-voicing would say \"[renpy.display.tts.last]\". Press 'alt+shift+V' to disable."
new "L'Assistente Vocale tenta di dire \"[renpy.display.tts.last]\". Premi 'alt+shift+V' per disabilitare."
new "L'Assistente Vocale direbbe \"[renpy.display.tts.last]\". Premi 'alt+shift+V' per disabilitare."
# 00preferences.rpy:426
old "Self-voicing enabled. Press 'v' to disable."
@@ -243,7 +243,7 @@ translate italian strings:
# 00updater.rpy:367
old "The Ren'Py Updater is not supported on mobile devices."
new "L'aggiornamento di Ren'Py non è supportato nei dispositivi mobili."
new "L'aggiornamento di Ren'Py non è supportato sui dispositivi mobili."
# 00updater.rpy:486
old "An error is being simulated."
@@ -333,16 +333,12 @@ translate italian strings:
old "return"
new "chiudi"
translate italian strings:
# renpy/common/00accessibility.rpy:32
old "bar"
new "bar"
new "barra"
# renpy/common/00accessibility.rpy:33
old "selected"
# Automatic translation.
new "selezionato"
# renpy/common/00accessibility.rpy:34
@@ -351,42 +347,34 @@ translate italian strings:
# renpy/common/00accessibility.rpy:35
old "horizontal scroll"
# Automatic translation.
new "scorrimento orizzontale"
# renpy/common/00accessibility.rpy:36
old "vertical scroll"
# Automatic translation.
new "scorrimento verticale"
# renpy/common/00accessibility.rpy:37
old "activate"
# Automatic translation.
new "attivare"
new "attiva"
# renpy/common/00accessibility.rpy:38
old "deactivate"
# Automatic translation.
new "disattivare"
new "disattiva"
# renpy/common/00accessibility.rpy:39
old "increase"
# Automatic translation.
new "aumento"
new "aumenta"
# renpy/common/00accessibility.rpy:40
old "decrease"
# Automatic translation.
new "diminuzione"
new "diminuisci"
# renpy/common/00accessibility.rpy:138
old "Font Override"
# Automatic translation.
new "Sovrascrittura dei caratteri"
new "Forza Famiglia Caratteri"
# renpy/common/00accessibility.rpy:142
old "Default"
# Automatic translation.
new "Predefinito"
# renpy/common/00accessibility.rpy:146
@@ -399,8 +387,7 @@ translate italian strings:
# renpy/common/00accessibility.rpy:156
old "Text Size Scaling"
# Automatic translation.
new "Dimensione del testo in scala"
new "Scala Dimensioni del Testo"
# renpy/common/00accessibility.rpy:162
old "Reset"
@@ -408,22 +395,18 @@ translate italian strings:
# renpy/common/00accessibility.rpy:168
old "Line Spacing Scaling"
# Automatic translation.
new "Interlinea Scala"
new "Scala Interlinea"
# renpy/common/00accessibility.rpy:180
old "High Contrast Text"
# Automatic translation.
new "Testo ad alto contrasto"
new "Testo ad Alto Contrasto"
# renpy/common/00accessibility.rpy:193
old "Self-Voicing"
# Automatic translation.
new "Autocelebrazione"
new "Assistente Vocale"
# renpy/common/00accessibility.rpy:197
old "Off"
# Automatic translation.
new "Spento"
# renpy/common/00accessibility.rpy:201
@@ -432,7 +415,6 @@ translate italian strings:
# renpy/common/00accessibility.rpy:205
old "Clipboard"
# Automatic translation.
new "Appunti"
# renpy/common/00accessibility.rpy:209
@@ -441,73 +423,63 @@ translate italian strings:
# renpy/common/00accessibility.rpy:223
old "Self-Voicing Volume Drop"
# Automatic translation.
new "Caduta di volume autoavvertita"
new "Riduzione Volume dell'Assistente Vocale"
# renpy/common/00accessibility.rpy:234
old "The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was."
# Automatic translation.
new "Le opzioni di questo menu hanno lo scopo di migliorare l'accessibilità. Potrebbero non funzionare con tutti i giochi e alcune combinazioni di opzioni potrebbero rendere il gioco ingiocabile. Non si tratta di un problema del gioco o del motore. Per ottenere i migliori risultati quando si cambiano i caratteri, cercare di mantenere le dimensioni del testo uguali a quelle originarie."
new "Le opzioni di questo menu hanno lo scopo di migliorare l'accessibilità. Potrebbero non funzionare con tutti i giochi, e alcune combinazioni di opzioni potrebbero rendere il gioco ingiocabile. Non si tratta di un problema del gioco o del motore. Per ottenere i migliori risultati quando si cambiano i caratteri, cerca di mantenere le dimensioni del testo uguali a quelle originarie."
# renpy/common/00action_file.rpy:378
old "Save slot %s: [text]"
# Automatic translation.
new "Salva lo slot %s: [text]"
new "Salva nello slot %s: [text]"
# renpy/common/00action_file.rpy:461
old "Load slot %s: [text]"
# Automatic translation.
new "Caricare lo slot %s: [text]"
new "Carica slot %s: [text]"
# renpy/common/00action_file.rpy:514
old "Delete slot [text]"
# Automatic translation.
new "Elimina slot [text]"
# renpy/common/00action_file.rpy:593
old "File page auto"
# Automatic translation.
new "Pagina di file automatica"
new "Pagina di file automatici"
# renpy/common/00action_file.rpy:595
old "File page quick"
# Automatic translation.
new "Pagina di file veloce"
new "Pagina di file rapidi"
# renpy/common/00action_file.rpy:597
old "File page [text]"
# Automatic translation.
new "Pagina di file [text]"
# renpy/common/00action_file.rpy:796
old "Next file page."
# Automatic translation.
new "Pagina successiva."
new "Pagina di file successiva."
# renpy/common/00action_file.rpy:868
old "Previous file page."
# Automatic translation.
new "Pagina precedente."
new "Pagina di file precedente."
# renpy/common/00action_file.rpy:944
old "Quick save."
# Automatic translation.
new "Salvataggio rapido."
# renpy/common/00action_file.rpy:963
old "Quick load."
# Automatic translation.
new "Carico rapido."
new "Caricamento rapido."
# renpy/common/00action_other.rpy:381
old "Language [text]"
# Automatic translation.
new "Lingua [text]"
#
old "Language"
new "Lingua"
# renpy/common/00director.rpy:705
old "The interactive director is not enabled here."
# Automatic translation.
new "Il direttore interattivo non è abilitato in questo caso."
new "L'interactive director non è abilitato qui."
# renpy/common/00director.rpy:1504
old "⬆"
@@ -519,13 +491,11 @@ translate italian strings:
# renpy/common/00director.rpy:1574
old "Done"
# Automatic translation.
new "Fatto"
# renpy/common/00director.rpy:1584
old "(statement)"
# Automatic translation.
new "(dichiarazione)"
new "(istruzione)"
# renpy/common/00director.rpy:1585
old "(tag)"
@@ -533,46 +503,39 @@ translate italian strings:
# renpy/common/00director.rpy:1586
old "(attributes)"
# Automatic translation.
new "(attributi)"
# renpy/common/00director.rpy:1587
old "(transform)"
new "(transform)"
new "(trasforma)"
# renpy/common/00director.rpy:1612
old "(transition)"
new "(transition)"
new "(transizioni)"
# renpy/common/00director.rpy:1624
old "(channel)"
# Automatic translation.
new "(canale)"
# renpy/common/00director.rpy:1625
old "(filename)"
# Automatic translation.
new "(nome del file)"
new "(nome file)"
# renpy/common/00director.rpy:1654
old "Change"
# Automatic translation.
new "Cambiamento"
new "Cambia"
# renpy/common/00director.rpy:1656
old "Add"
# Automatic translation.
new "Aggiungi"
# renpy/common/00director.rpy:1662
old "Remove"
# Automatic translation.
new "Rimuovere"
new "Rimuovi"
# renpy/common/00director.rpy:1697
old "Statement:"
# Automatic translation.
new "Dichiarazione:"
new "Istruzione:"
# renpy/common/00director.rpy:1718
old "Tag:"
@@ -580,63 +543,51 @@ translate italian strings:
# renpy/common/00director.rpy:1734
old "Attributes:"
# Automatic translation.
new "Attributi:"
# renpy/common/00director.rpy:1745
old "Click to toggle attribute, right click to toggle negative attribute."
# Automatic translation.
new "Fare clic per attivare l'attributo, fare clic con il tasto destro per attivare l'attributo negativo."
new "Clicca per attivare/disattivare l'attributo, clicca con il tasto destro per attivare/disattivare l'attributo negativo."
# renpy/common/00director.rpy:1757
old "Transforms:"
# Automatic translation.
new "Trasformazioni:"
# renpy/common/00director.rpy:1768
old "Click to set transform, right click to add to transform list."
# Automatic translation.
new "Fare clic per impostare la trasformazione, fare clic con il pulsante destro del mouse per aggiungere all'elenco delle trasformazioni."
new "Clicca per impostare la trasformazione, clicca con il tasto destro per aggiungere all'elenco delle trasformazioni."
# renpy/common/00director.rpy:1780
old "Behind:"
# Automatic translation.
new "Dietro:"
# renpy/common/00director.rpy:1789
old "Click to set, right click to add to behind list."
# Automatic translation.
new "Fare clic per impostare, fare clic con il pulsante destro del mouse per aggiungere all'elenco retrostante."
new "Clicca per impostare, clicca con il tasto destro per aggiungere all'elenco di dietro."
# renpy/common/00director.rpy:1801
old "Transition:"
# Automatic translation.
new "Transizione:"
# renpy/common/00director.rpy:1819
old "Channel:"
# Automatic translation.
new "Canale:"
# renpy/common/00director.rpy:1837
old "Audio Filename:"
# Automatic translation.
new "Nome del file audio:"
# renpy/common/00gui.rpy:456
old "This save was created on a different device. Maliciously constructed save files can harm your computer. Do you trust this save's creator and everyone who could have changed the file?"
# Automatic translation.
new "Questo salvataggio è stato creato su un dispositivo diverso. I file di salvataggio creati male possono danneggiare il computer. Vi fidate del creatore di questo salvataggio e di tutti coloro che potrebbero aver modificato il file?"
new "Questo salvataggio è stato creato su un dispositivo diverso. Un file di salvataggio creato in modo malevolo può danneggiare il tuo computer. Puoi fidarti di chi ha creato questo salvataggio e di tutti coloro che potrebbero aver modificato il file?"
# renpy/common/00gui.rpy:457
old "Do you trust the device the save was created on? You should only choose yes if you are the device's sole user."
# Automatic translation.
new "Vi fidate del dispositivo su cui è stato creato il salvataggio? Scegliere sì solo se si è l'unico utente del dispositivo."
new "Puoi fidarti del dispositivo su cui è stato creato il salvataggio? Dovresti scegliere sì solo se si è l'unico utente del dispositivo."
# renpy/common/00keymap.rpy:322
old "Failed to save screenshot as %s."
# Automatic translation.
new "Impossibile salvare l'immagine come %s."
new "Impossibile salvare la cattura di schermata come %s."
# renpy/common/00preferences.rpy:271
old "display"
@@ -644,27 +595,22 @@ translate italian strings:
# renpy/common/00preferences.rpy:283
old "transitions"
# Automatic translation.
new "transizioni"
# renpy/common/00preferences.rpy:292
old "skip transitions"
# Automatic translation.
new "saltare le transizioni"
# renpy/common/00preferences.rpy:294
old "video sprites"
# Automatic translation.
new "sprite video"
# renpy/common/00preferences.rpy:303
old "show empty window"
# Automatic translation.
new "mostra la finestra vuota"
new "mostra finestra vuota"
# renpy/common/00preferences.rpy:312
old "text speed"
# Automatic translation.
new "velocità del testo"
# renpy/common/00preferences.rpy:320
@@ -677,97 +623,79 @@ translate italian strings:
# renpy/common/00preferences.rpy:327
old "skip"
# Automatic translation.
new "saltare"
new "salta"
# renpy/common/00preferences.rpy:330
old "skip unseen [text]"
# Automatic translation.
new "saltare non visto [text]"
new "salta [text] non visto"
# renpy/common/00preferences.rpy:335
old "skip unseen text"
# Automatic translation.
new "saltare il testo non visto"
new "salta il testo non visto"
# renpy/common/00preferences.rpy:337
old "begin skipping"
# Automatic translation.
new "iniziare a saltare"
new "inizia a saltare"
# renpy/common/00preferences.rpy:341
old "after choices"
# Automatic translation.
new "dopo le scelte"
# renpy/common/00preferences.rpy:348
old "skip after choices"
# Automatic translation.
new "saltare dopo le scelte"
new "salta dopo le scelte"
# renpy/common/00preferences.rpy:350
old "auto-forward time"
# Automatic translation.
new "tempo di inoltro automatico"
new "ritmo di avanzamento automatico"
# renpy/common/00preferences.rpy:364
old "auto-forward"
# Automatic translation.
new "Inoltro automatico"
new "avanzamento automatico"
# renpy/common/00preferences.rpy:371
old "Auto forward"
# Automatic translation.
new "Avanzamento automatico"
# renpy/common/00preferences.rpy:374
old "auto-forward after click"
# Automatic translation.
new "Inoltro automatico dopo il clic"
new "avanzamento automatico dopo il clic"
# renpy/common/00preferences.rpy:383
old "automatic move"
# Automatic translation.
new "spostamento automatico"
# renpy/common/00preferences.rpy:392
old "wait for voice"
# Automatic translation.
new "attendere la voce"
new "dai tempo alla voce"
# renpy/common/00preferences.rpy:401
old "voice sustain"
# Automatic translation.
new "sostegno della voce"
new "mantenimento della voce"
# renpy/common/00preferences.rpy:410
old "self voicing"
# Automatic translation.
new "autocelebrazione"
new "assistente vocale"
# renpy/common/00preferences.rpy:419
old "self voicing volume drop"
# Automatic translation.
new "caduta di volume dell'autocelebrazione"
new "riduzione volume dell'assistente vocale"
# renpy/common/00preferences.rpy:427
old "clipboard voicing"
# Automatic translation.
new "Votazione degli appunti"
new "vocalizzazione degli appunti"
# renpy/common/00preferences.rpy:436
old "debug voicing"
new "debug voicing"
new "debug vocalizzazione"
# renpy/common/00preferences.rpy:445
old "emphasize audio"
# Automatic translation.
new "enfatizzare l'audio"
new "enfatizza audio"
# renpy/common/00preferences.rpy:454
old "rollback side"
# Automatic translation.
new "lato rollback"
new "lato riavvolgimento"
# renpy/common/00preferences.rpy:464
old "gl powersave"
@@ -775,8 +703,7 @@ translate italian strings:
# renpy/common/00preferences.rpy:470
old "gl framerate"
# Automatic translation.
new "framerate gl"
new "gl framerate"
# renpy/common/00preferences.rpy:473
old "gl tearing"
@@ -784,196 +711,157 @@ translate italian strings:
# renpy/common/00preferences.rpy:476
old "font transform"
# Automatic translation.
new "trasformazione dei caratteri"
new "trasformazioni dei caratteri"
# renpy/common/00preferences.rpy:479
old "font size"
# Automatic translation.
new "dimensione del carattere"
new "dimensione dei caratteri"
# renpy/common/00preferences.rpy:487
old "font line spacing"
# Automatic translation.
new "interlinea del carattere"
new "interlinea dei caratteri"
# renpy/common/00preferences.rpy:495
old "system cursor"
# Automatic translation.
new "cursore di sistema"
# renpy/common/00preferences.rpy:504
old "renderer menu"
# Automatic translation.
new "menu del renderer"
# renpy/common/00preferences.rpy:507
old "accessibility menu"
# Automatic translation.
new "menu accessibilità"
new "menu di accessibilità"
# renpy/common/00preferences.rpy:510
old "high contrast text"
# Automatic translation.
new "testo ad alto contrasto"
# renpy/common/00preferences.rpy:519
old "audio when minimized"
# Automatic translation.
new "audio quando è ridotto a icona"
new "audio con finestra minimizzata"
# renpy/common/00preferences.rpy:528
old "audio when unfocused"
# Automatic translation.
new "audio quando non viene messo a fuoco"
new "audio con finestra non a fuoco"
# renpy/common/00preferences.rpy:537
old "web cache preload"
# Automatic translation.
new "precaricamento della cache web"
# renpy/common/00preferences.rpy:552
old "voice after game menu"
# Automatic translation.
new "voce dopo il menu di gioco"
# renpy/common/00preferences.rpy:571
old "main volume"
# Automatic translation.
new "volume principale"
# renpy/common/00preferences.rpy:572
old "music volume"
# Automatic translation.
new "volume della musica"
# renpy/common/00preferences.rpy:573
old "sound volume"
# Automatic translation.
new "volume del suono"
new "volume dei suoni"
# renpy/common/00preferences.rpy:574
old "voice volume"
# Automatic translation.
new "volume della voce"
# renpy/common/00preferences.rpy:575
old "mute main"
# Automatic translation.
new "silenziamento principale"
new "silenzia il volume principale"
# renpy/common/00preferences.rpy:576
old "mute music"
# Automatic translation.
new "disattivare la musica"
new "silenzia la musica"
# renpy/common/00preferences.rpy:577
old "mute sound"
# Automatic translation.
new "Disattivare l'audio"
new "silenzia i suoni"
# renpy/common/00preferences.rpy:578
old "mute voice"
# Automatic translation.
new "voce muta"
new "silenzia voce"
# renpy/common/00preferences.rpy:579
old "mute all"
# Automatic translation.
new "disattivare tutti"
new "silenzia tutto"
# renpy/common/00speechbubble.rpy:344
old "Speech Bubble Editor"
# Automatic translation.
new "Editor di bolle vocali"
new "Editor di Bolle di Dialogo"
# renpy/common/00speechbubble.rpy:349
old "(hide)"
# Automatic translation.
new "(Nascondi)"
new "(nascondi)"
# renpy/common/00sync.rpy:70
old "Sync downloaded."
# Automatic translation.
new "Sincronizzazione scaricata."
new "Dati sincronizzati scaricati."
# renpy/common/00sync.rpy:190
old "Could not connect to the Ren'Py Sync server."
# Automatic translation.
new "Impossibile connettersi al server Ren'Py Sync."
# renpy/common/00sync.rpy:192
old "The Ren'Py Sync server timed out."
# Automatic translation.
new "Il server Ren'Py Sync è scaduto."
new "Il server Ren'Py Sync non ha risposto in tempo."
# renpy/common/00sync.rpy:194
old "An unknown error occurred while connecting to the Ren'Py Sync server."
# Automatic translation.
new "Si è verificato un errore sconosciuto durante la connessione al server Ren'Py Sync."
# renpy/common/00sync.rpy:267
old "The Ren'Py Sync server does not have a copy of this sync. The sync ID may be invalid, or it may have timed out."
# Automatic translation.
new "Il server Ren'Py Sync non dispone di una copia di questa sincronizzazione. L'ID della sincronizzazione potrebbe non essere valido o potrebbe essere scaduto."
new "Il server Ren'Py Sync non dispone di una copia di questi dati. L'ID di sincronizzazione potrebbe essere invalido o scaduto."
# renpy/common/00sync.rpy:409
old "Please enter the sync ID you generated.\nNever enter a sync ID you didn't create yourself."
# Automatic translation.
new "Inserire l'ID di sincronizzazione generato.\nNon inserite mai un ID di sincronizzazione che non avete creato voi stessi."
new "Inserire l'ID di sincronizzazione che hai generato.\nNon inserire mai un ID di sincronizzazione che non hai creato tu."
# renpy/common/00sync.rpy:428
old "The sync ID is not in the correct format."
# Automatic translation.
new "L'ID di sincronizzazione non è nel formato corretto."
# renpy/common/00sync.rpy:448
old "The sync could not be decrypted."
# Automatic translation.
new "Non è stato possibile decifrare la sincronizzazione."
new "Non è stato possibile decifrare i dati sincronizzati."
# renpy/common/00sync.rpy:471
old "The sync belongs to a different game."
# Automatic translation.
new "La sincronizzazione appartiene a un gioco diverso."
new "I dati sincronizzati appartengono ad un gioco diverso."
# renpy/common/00sync.rpy:476
old "The sync contains a file with an invalid name."
# Automatic translation.
new "La sincronizzazione contiene un file con un nome non valido."
new "I dati sincronizzati contengono un file con un nome non valido."
# renpy/common/00sync.rpy:529
old "This will upload your saves to the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}.\nDo you want to continue?"
# Automatic translation.
new "Questo caricherà i salvataggi sul server di sincronizzazione {a=https://sync.renpy.org}Ren'Py{/a}.\nVuoi continuare?"
new "I tuoi salvataggi saranno caricati sul {a=https://sync.renpy.org}Server di Sincronizzazione di Ren'Py{/a}.\nVuoi continuare?"
# renpy/common/00sync.rpy:558
old "Enter Sync ID"
# Automatic translation.
new "Immettere l'ID di sincronizzazione"
new "Immettere l'ID di Sincronizzazione"
# renpy/common/00sync.rpy:569
old "This will contact the {a=https://sync.renpy.org}Ren'Py Sync Server{/a}."
# Automatic translation.
new "Questo contatterà il server di sincronizzazione {a=https://sync.renpy.org}Ren'Py{/a}."
new "Verrà contattato il {a=https://sync.renpy.org}Server di Sincronizzazione di Ren'Py{/a}."
# renpy/common/00sync.rpy:596
old "Sync Success"
# Automatic translation.
new "Successo della sincronizzazione"
new "Sincronizzazione completata con Successo"
# renpy/common/00sync.rpy:599
old "The Sync ID is:"
# Automatic translation.
new "L'ID di sincronizzazione è:"
new "L'ID di Sincronizzazione è:"
# renpy/common/00sync.rpy:605
old "You can use this ID to download your save on another device.\nThis sync will expire in an hour.\nRen'Py Sync is supported by {a=https://www.renpy.org/sponsors.html}Ren'Py's Sponsors{/a}."
# Automatic translation.
new "È possibile utilizzare questo ID per scaricare il salvataggio su un altro dispositivo.\nQuesta sincronizzazione scadrà tra un'ora.\nRen'Py Sync è supportato da {a=https://www.renpy.org/sponsors.html}Gli sponsor di Ren'Py{/a}."
new "Puoi usare questo ID per scaricare il tuo salvataggio su un altro dispositivo.\nQuesta sincronizzazione scadrà tra un'ora.\nRen'Py Sync è supportato dagli {a=https://www.renpy.org/sponsors.html}Sponsor di Ren'Py{/a}."
# renpy/common/00sync.rpy:631
old "Sync Error"
# Automatic translation.
new "Errore di sincronizzazione"
new "Errore di Sincronizzazione"
+17 -41
View File
@@ -23,7 +23,7 @@ translate italian strings:
# _developer/developer.rpym:51
old "Image Location Picker"
new "Selettore Locazione Immagini"
new "Selettore Posizione Immagini"
# _developer/developer.rpym:53
old "Filename List"
@@ -79,7 +79,7 @@ translate italian strings:
# _developer/inspector.rpym:38
old "Displayable Inspector"
new "Ispettore dei Displayable"
new "Ispezionatore dei Displayable"
# _developer/inspector.rpym:61
old "Size"
@@ -99,7 +99,6 @@ translate italian strings:
# _developer/inspector.rpym:139
old "displayable:"
# Automatic translation.
new "visualizzabile:"
# _developer/inspector.rpym:145
@@ -116,7 +115,7 @@ translate italian strings:
# 00console.rpy:182
old "Press <esc> to exit console. Type help for help.\n"
new "Premi <esc> per uscire dalla console. Scrivi \"help\" per aiuto.\n"
new "Premi <esc> per uscire dalla console. Scrivi \"help\" per avere aiuto.\n"
# 00console.rpy:186
old "Ren'Py script enabled."
@@ -178,42 +177,32 @@ translate italian strings:
old "jump <label>: jumps to label"
new "jump <label>: salta alla label"
translate italian strings:
# renpy/common/_developer/developer.rpym:43
old "Interactive Director (D)"
# Automatic translation.
new "Direttore interattivo (D)"
new "Interactive Director (D)"
# renpy/common/_developer/developer.rpym:51
old "Persistent Viewer"
# Automatic translation.
new "Visualizzatore persistente"
new "Visualizzatore dei dati Persistenti"
# renpy/common/_developer/developer.rpym:59
old "Show Image Load Log (F4)"
# Automatic translation.
new "Mostra registro caricamento immagini (F4)"
new "Mostra il Registro di Caricamento delle Immagini (F4)"
# renpy/common/_developer/developer.rpym:62
old "Hide Image Load Log (F4)"
# Automatic translation.
new "Nascondere il registro di caricamento dell'immagine (F4)"
new "Nascondi il Registro di Caricamento delle Immagini (F4)"
# renpy/common/_developer/developer.rpym:65
old "Image Attributes"
# Automatic translation.
new "Attributi dell'immagine"
new "Attributi dell'Immagine"
# renpy/common/_developer/developer.rpym:70
old "Speech Bubble Editor (Shift+B)"
# Automatic translation.
new "Editor di bolle vocali (Shift+B)"
new "Editor di Bolle di Dialogo (Shift+B)"
# renpy/common/_developer/developer.rpym:97
old "[name] [attributes] (hidden)"
# Automatic translation.
new "[name] [attributes] (nascosto)"
# renpy/common/_developer/developer.rpym:101
@@ -222,66 +211,53 @@ translate italian strings:
# renpy/common/_developer/developer.rpym:162
old "Hide deleted"
# Automatic translation.
new "Nascondi cancellato"
new "Nascondi cancellati"
# renpy/common/_developer/developer.rpym:162
old "Show deleted"
# Automatic translation.
new "Mostra cancellata"
new "Mostra cancellati"
# renpy/common/_developer/developer.rpym:389
old "Type to filter: "
# Automatic translation.
new "Tipo da filtrare: "
new "Tipi da filtrare: "
# renpy/common/_developer/developer.rpym:507
old "Textures: [tex_count] ([tex_size_mb:.1f] MB)"
# Automatic translation.
new "Texture: [tex_count] ([tex_size_mb:.1f] MB)"
# renpy/common/_developer/developer.rpym:511
old "Image cache: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
# Automatic translation.
new "Cache immagini: [cache_pct:.1f]% ([cache_size_mb:.1f] MB)"
# renpy/common/00console.rpy:789
old "help: show this help\n help <expr>: show signature and documentation of <expr>"
# Automatic translation.
new "help: mostra questo aiuto\n help <expr>: mostra la firma e la documentazione di <expr>"
# renpy/common/00console.rpy:813
old "Help may display undocumented functions. Please check that the function or\nclass you want to use is documented.\n\n"
# Automatic translation.
new "La guida potrebbe visualizzare funzioni non documentate. Verificate che la funzione o\nLa classe che si vuole utilizzare è documentata.\n\n"
new "La guida potrebbe visualizzare funzioni non documentate. Verifica che la funzione o\n classe che vuoi usare utilizzare sia documentata.\n\n"
# renpy/common/00console.rpy:854
old "stack: print the return stack"
# Automatic translation.
new "stack: stampare lo stack di ritorno"
new "stack: stampa a schermo lo stack di ritorno"
# renpy/common/00console.rpy:908
old "watch <expression>: watch a python expression\n watch short: makes the representation of traced expressions short (default)\n watch long: makes the representation of traced expressions as is"
# Automatic translation.
new "watch <expression>: guardare un'espressione python\n watch short: rende breve la rappresentazione delle espressioni tracciate (default)\n watch long: rende la rappresentazione delle espressioni tracciate come è"
new "watch <expression>: traccia un'espressione python\n watch short: rende breve la rappresentazione delle espressioni tracciate (default)\n watch long: rende la rappresentazione delle espressioni tracciate così come è"
# renpy/common/00console.rpy:1028
old "short: Shorten the representation of objects on the console (default)."
# Automatic translation.
new "short: Accorcia la rappresentazione degli oggetti sulla console (impostazione predefinita)."
# renpy/common/00console.rpy:1032
old "long: Print the full representation of objects on the console."
# Automatic translation.
new "long: Stampa la rappresentazione completa degli oggetti sulla console."
new "long: Stampa sulla console la rappresentazione completa degli oggetti."
# renpy/common/00console.rpy:1036
old "escape: Enables escaping of unicode symbols in unicode strings."
# Automatic translation.
new "escape: Abilita l'escape dei simboli unicode nelle stringhe unicode."
# renpy/common/00console.rpy:1040
old "unescape: Disables escaping of unicode symbols in unicode strings and print it as is (default)."
# Automatic translation.
new "unescape: Disabilita l'escape dei simboli unicode nelle stringhe unicode e le stampa così come sono (impostazione predefinita)."
new "unescape: Disabilita l'escape dei simboli unicode nelle stringhe unicode e le stampa a schermo così come sono (impostazione predefinita)."
+24 -48
View File
@@ -11,15 +11,15 @@ translate italian strings:
# 00gltest.rpy:75
old "Force Angle/DirectX Renderer"
new "Forza Renderer Angle/DirectX"
new "Forza Renderizzatore Angle/DirectX"
# 00gltest.rpy:79
old "Force OpenGL Renderer"
new "Forza Renderer OpenGL"
new "Forza Renderizzatore OpenGL"
# 00gltest.rpy:83
old "Force Software Renderer"
new "Forza Renderer Software"
new "Forza Renderizzatore Software"
# 00gltest.rpy:93
old "Enable"
@@ -31,7 +31,7 @@ translate italian strings:
# 00gltest.rpy:141
old "Performance Warning"
new "Avviso Prestazioni"
new "Avviso sulle Prestazioni"
# 00gltest.rpy:146
old "This computer is using software rendering."
@@ -39,7 +39,7 @@ translate italian strings:
# 00gltest.rpy:148
old "This computer is not using shaders."
new "Questo computer non fa uso degli shader."
new "Questo computer non sta usando gli shader."
# 00gltest.rpy:150
old "This computer is displaying graphics slowly."
@@ -135,7 +135,7 @@ translate italian strings:
# _errorhandling.rpym:538
old "Rollback"
new "Regredisci"
new "Riavvolgi"
# _errorhandling.rpym:540
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
@@ -167,7 +167,7 @@ translate italian strings:
# _errorhandling.rpym:606
old "Open Parse Errors"
new "Apri errori di analisi"
new "Apri Errori di Analisi"
# _errorhandling.rpym:608
old "Opens the errors.txt file in a text editor."
@@ -177,51 +177,40 @@ translate italian strings:
old "Copies the errors.txt file to the clipboard."
new "Copia il file errors.txt negli appunti."
translate italian strings:
# renpy/common/00gltest.rpy:89
old "Renderer"
new "Renderer"
new "Renderizzatore"
# renpy/common/00gltest.rpy:100
old "Force GL Renderer"
# Automatic translation.
new "Forza il renderizzatore GL"
new "Forza Renderizzatore GL"
# renpy/common/00gltest.rpy:105
old "Force ANGLE Renderer"
# Automatic translation.
new "Rendering angolare della forza"
new "Forza Renderizzatore ANGLE"
# renpy/common/00gltest.rpy:110
old "Force GLES Renderer"
# Automatic translation.
new "Forza il renderizzatore GLES"
new "Forza Renderizzatore GLES"
# renpy/common/00gltest.rpy:116
old "Force GL2 Renderer"
# Automatic translation.
new "Rendering Force GL2"
new "Forza Renderizzatore GL2"
# renpy/common/00gltest.rpy:121
old "Force ANGLE2 Renderer"
# Automatic translation.
new "Forza il renderizzatore ANGLE2"
new "Forza Renderizzatore ANGLE2"
# renpy/common/00gltest.rpy:126
old "Force GLES2 Renderer"
# Automatic translation.
new "Forza il renderizzatore GLES2"
new "Forza Renderizzatore GLES2"
# renpy/common/00gltest.rpy:136
old "Enable (No Blocklist)"
# Automatic translation.
new "Abilitazione (nessuna lista di blocco)"
new "Abilita (nessuna lista di blocco)"
# renpy/common/00gltest.rpy:159
old "Powersave"
# Automatic translation.
new "Risparmio energetico"
# renpy/common/00gltest.rpy:173
@@ -230,7 +219,6 @@ translate italian strings:
# renpy/common/00gltest.rpy:177
old "Screen"
# Automatic translation.
new "Schermo"
# renpy/common/00gltest.rpy:181
@@ -247,58 +235,47 @@ translate italian strings:
# renpy/common/00gltest.rpy:249
old "This game requires use of GL2 that can't be initialised."
# Automatic translation.
new "Questo gioco richiede l'uso di GL2 che non può essere inizializzato."
new "Questo gioco richiede l'uso di GL2, che non può essere inizializzato."
# renpy/common/00gltest.rpy:259
old "The {a=edit:1:log.txt}log.txt{/a} file may contain information to help you determine what is wrong with your computer."
# Automatic translation.
new "Il file {a=edit:1:log.txt}log.txt{/a} può contenere informazioni che aiutano a determinare il problema del computer."
new "Il file {a=edit:1:log.txt}log.txt{/a} può contenere informazioni che possono aiutarti a determinare il problema del tuo computer."
# renpy/common/00gltest.rpy:264
old "More details on how to fix this can be found in the {a=[url]}documentation{/a}."
# Automatic translation.
new "Maggiori dettagli su come risolvere questo problema sono disponibili nella documentazione di {a=[url]}{/a} ."
new "Maggiori dettagli su come risolvere questo problema sono disponibili nella documentazione di {a=[url]}{/a}."
# renpy/common/00gltest.rpy:281
old "Change render options"
# Automatic translation.
new "Modifica delle opzioni di rendering"
new "Modifica le opzioni di rendering"
# renpy/common/00gamepad.rpy:58
old "Press or move the '[control!s]' [kind]."
# Automatic translation.
new "Premere o spostare il pulsante '[control!s]'[kind]."
new "Premi o sposta l'input '[control!s]'[kind]."
# renpy/common/_errorhandling.rpym:555
old "Open"
# Automatic translation.
new "Aperto"
new "Apri"
# renpy/common/_errorhandling.rpym:559
old "Copy BBCode"
# Automatic translation.
new "Copiare il codice BBC"
new "Copia BBCode"
# renpy/common/_errorhandling.rpym:561
old "Copies the traceback.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/."
# Automatic translation.
new "Copia il file traceback.txt negli appunti come BBcode per forum come https://lemmasoft.renai.us/."
# renpy/common/_errorhandling.rpym:563
old "Copy Markdown"
# Automatic translation.
new "Copiare Markdown"
new "Copia Markdown"
# renpy/common/_errorhandling.rpym:565
old "Copies the traceback.txt file to the clipboard as Markdown for Discord."
# Automatic translation.
new "Copia il file traceback.txt negli appunti come Markdown per Discord."
# renpy/common/_errorhandling.rpym:626
old "Ignores the exception, allowing you to continue."
# Automatic translation.
new "Ignora l'eccezione, consentendo di continuare."
new "Ignora l'eccezione, permettendo di continuare l'esecuzione."
# renpy/common/_errorhandling.rpym:637
old "Console"
@@ -306,6 +283,5 @@ translate italian strings:
# renpy/common/_errorhandling.rpym:639
old "Opens a console to allow debugging the problem."
# Automatic translation.
new "Apre una console per consentire il debug del problema."
+13 -24
View File
@@ -203,23 +203,23 @@ translate italian strings:
# gui.rpy:220
old "## File Slot Buttons"
new "## Pulsanti Slot"
new "## Pulsanti Slot File"
# gui.rpy:222
old "## A file slot button is a special kind of button. It contains a thumbnail image, and text describing the contents of the save slot. A save slot uses image files in gui/button, like the other kinds of buttons."
new "## Un pulsante Slot è un tipo di pulsante speciale. Contiene un'immagine miniatura, e testo che riporta i contenuti dello slot. Uno Slot Save usa immagini presenti in gui/button, come tutti gli altri tipi di pulsante."
new "## Un pulsante slot è un tipo di pulsante speciale. Contiene un'immagine miniatura, e testo che riporta i contenuti dello slot. Uno slot di salvataggio usa immagini presenti in gui/button, come tutti gli altri tipi di pulsante."
# gui.rpy:226
old "## The save slot button."
new "## Il pulsante slot."
new "## Il pulsante slot salvataggio."
# gui.rpy:234
old "## The width and height of thumbnails used by the save slots."
new "## Larghezza e altezza delle miniature usate dallo slot."
new "## Larghezza e altezza delle miniature usate dallo slot di salvataggio."
# gui.rpy:238
old "## The number of columns and rows in the grid of save slots."
new "## Numero di colonne e righe della griglia degli slot."
new "## Numero di colonne e righe della griglia degli slot di salvataggio."
# gui.rpy:243
old "## Positioning and Spacing"
@@ -327,8 +327,7 @@ translate italian strings:
# gui.rpy:331
old "## History"
# Automatic translation.
new "## Storia"
new "## Cronologia"
# gui.rpy:333
old "## The history screen displays dialogue that the player has already dismissed."
@@ -380,7 +379,7 @@ translate italian strings:
# gui.rpy:403
old "## This increases the size of the quick buttons to make them easier to touch on tablets and phones."
new "## Questo aumenta la dimensione dei Pulsanti Rapidi per renderli più facili da toccare su tablet e telefoni."
new "## Questo aumenta la dimensione dei pulsanti rapidi per renderli più facili da toccare su tablet e telefoni."
# gui.rpy:409
old "## This changes the size and spacing of various GUI elements to ensure they are easily visible on phones."
@@ -408,7 +407,7 @@ translate italian strings:
# gui.rpy:456
old "## Quick buttons."
new "## Pulsanti Rapidi."
new "## Pulsanti rapidi."
# gui.rpy:17
old "## GUI Configuration Variables"
@@ -434,41 +433,31 @@ translate italian strings:
old "## Mobile devices"
new "## Dispositivi mobili"
translate italian strings:
# gui/game/gui.rpy:5
old "## The init offset statement causes the initialization statements in this file to run before init statements in any other file."
# Automatic translation.
new "## L'istruzione init offset fa sì che le istruzioni di inizializzazione in questo file vengano eseguite prima delle istruzioni di init in qualsiasi altro file."
new "## L'istruzione init offset fa sì che le istruzioni di inizializzazione in questo file vengano eseguite prima di quelle di inizializzazione in qualsiasi altro file."
# gui/game/gui.rpy:14
old "## Enable checks for invalid or unstable properties in screens or transforms"
# Automatic translation.
new "## Abilita i controlli per le proprietà non valide o instabili nelle schermate o nelle trasformazioni"
new "## Abilita i controlli per proprietà non valide o instabili nelle schermate o nelle trasformazioni"
# gui/game/gui.rpy:278
old "## The position of the main menu text."
# Automatic translation.
new "## La posizione del testo del menu principale."
# gui/game/gui.rpy:287
old "## Generic frames."
# Automatic translation.
new "## Cornici generiche."
# gui/game/gui.rpy:307
old "## The default GUI only uses sliders and vertical scrollbars. All of the other bars are only used in creator-written screens."
# Automatic translation.
new "## L'interfaccia grafica predefinita utilizza solo i cursori e le barre di scorrimento verticali. Tutte le altre barre sono utilizzate solo nelle schermate scritte dal creatore."
new "## L'interfaccia grafica predefinita usa solo cursori e barre di scorrimento verticali. Tutte le altre barre sono utilizzate solo in schermate scritte dai creatori di giochi."
# gui/game/gui.rpy:368
old "## The maximum number of NVL-mode entries Ren'Py will display. When more entries than this are to be show, the oldest entry will be removed."
# Automatic translation.
new "## Il numero massimo di voci in modalità NVL che Ren'Py visualizzerà. Se devono essere visualizzate più voci di questa, la voce più vecchia verrà rimossa."
new "## Il numero massimo di voci in modalità NVL che Ren'Py visualizzerà. Se ne devono essere visualizzate di più, la voce più vecchia verrà rimossa."
# gui/game/gui.rpy:446
old "## Change the size and spacing of various things."
# Automatic translation.
new "## Cambia la dimensione e la spaziatura di vari elementi."
new "## Cambia dimensione e spaziatura di vari elementi."
File diff suppressed because it is too large Load Diff
+2 -10
View File
@@ -23,7 +23,6 @@ translate italian strings:
# options.rpy:17
old "Ren'Py 7 Default GUI"
# Automatic translation.
new "GUI predefinita di Ren'Py 7"
# options.rpy:20
@@ -198,26 +197,19 @@ translate italian strings:
old "## Icon"
new "## Icona"
translate italian strings:
# gui/game/options.rpy:31
old "## Text that is placed on the game's about screen. Place the text between the triple-quotes, and leave a blank line between paragraphs."
# Automatic translation.
new "## Testo che viene inserito nella schermata del gioco. Posizionare il testo tra le virgolette triple e lasciare una riga vuota tra i paragrafi."
new "## Testo che viene inserito nella schermata informazioni del gioco. Inserisci il testo tra triple virgolette e lascia una riga vuota tra i paragrafi."
# gui/game/options.rpy:47
old "## These three variables control, among other things, which mixers are shown to the player by default. Setting one of these to False will hide the appropriate mixer."
# Automatic translation.
new "## Queste tre variabili controllano, tra le altre cose, quali mixer vengono mostrati al giocatore per impostazione predefinita. Impostando una di queste variabili a False, si nasconde il mixer appropriato."
new "## Queste tre variabili controllano, tra le altre cose, quali mixer vengono mostrati al giocatore per impostazione predefinita. Impostando una di queste a False, si nasconde il mixer appropriato."
# gui/game/options.rpy:82
old "## Between screens of the game menu."
# Automatic translation.
new "## Tra le schermate del menu di gioco."
# gui/game/options.rpy:203
old "## A Google Play license key is required to perform in-app purchases. It can be found in the Google Play developer console, under \"Monetize\" > \"Monetization Setup\" > \"Licensing\"."
# Automatic translation.
new "## Per eseguire gli acquisti in-app è necessaria una chiave di licenza Google Play. Si trova nella console per sviluppatori di Google Play, in \"Monetizzazione\" > \"Impostazione monetizzazione\" > \"Licenze\"."
+61 -93
View File
@@ -1,5 +1,4 @@
translate italian strings:
translate italian strings:
# screens.rpy:9
old "## Styles"
@@ -7,20 +6,19 @@ translate italian strings:
# screens.rpy:87
old "## In-game screens"
new "## Schermi interni al gioco"
new "## Schermate interne al gioco"
# screens.rpy:91
old "## Say screen"
# Automatic translation.
new "## Dire schermo"
new "## Schermata dei dialoghi"
# screens.rpy:93
old "## The say screen is used to display dialogue to the player. It takes two parameters, who and what, which are the name of the speaking character and the text to be displayed, respectively. (The who parameter can be None if no name is given.)"
new "## Il say screen è usato per mostrare dialoghi al giocatore. Richiede due parametri, who e what, che sono il nome del personaggio che parla e il testo da mostrare. (Il parametro who può essere None se non si intende fornire un nome)"
new "## La schermata dei dialoghi (say) è usata per mostrare dialoghi al giocatore. Richiede due parametri, who e what, che sono il nome del personaggio che parla e il testo da mostrare. (Il parametro who può essere None se non si intende fornire un nome)"
# screens.rpy:98
old "## This screen must create a text displayable with id \"what\", as Ren'Py uses this to manage text display. It can also create displayables with id \"who\" and id \"window\" to apply style properties."
new "## Questo schermo crea un displayable di testo con id \"what\", che Ren'py usa per gestire la visualizzazione del testo. Può creare anche displayable con id \"who\" e id \"window\" per applicarvi proprietà di stile."
new "## Questa schermata crea un displayable di testo con id \"what\", che Ren'Py usa per gestire la visualizzazione del testo. Può creare anche displayable con id \"who\" e id \"window\" per applicarvi proprietà di stile."
# screens.rpy:102
old "## https://www.renpy.org/doc/html/screen_special.html#say"
@@ -28,16 +26,15 @@ translate italian strings:
# screens.rpy:169
old "## Input screen"
# Automatic translation.
new "## Schermata di ingresso"
new "## Schermata di inserimento"
# screens.rpy:171
old "## This screen is used to display renpy.input. The prompt parameter is used to pass a text prompt in."
new "## Questo schermo si usa per mostrare renpy.input. Il parametro prompt è usato per fornire un prompt testuale."
new "## Questa schermata si usa per mostrare renpy.input. Il parametro prompt è usato per fornire un prompt testuale."
# screens.rpy:174
old "## This screen must create an input displayable with id \"input\" to accept the various input parameters."
new "## Questo schermo deve creare un input displayable con id \"input\" per accettare i vari parametri dell'input."
new "## Questa schermata deve creare un displayable input con id \"input\" per accettare i vari parametri dell'input."
# screens.rpy:177
old "## http://www.renpy.org/doc/html/screen_special.html#input"
@@ -45,12 +42,11 @@ translate italian strings:
# screens.rpy:205
old "## Choice screen"
# Automatic translation.
new "## Schermata di scelta"
# screens.rpy:207
old "## This screen is used to display the in-game choices presented by the menu statement. The one parameter, items, is a list of objects, each with caption and action fields."
new "## Questo screen è usato per mostrare le scelte nel gioco, offerte dal comando 'menu'. Il solo parametro, 'items', è una lista di oggetti, ciascuna coi campi 'caption' e 'action'."
new "## Questa schermata è usata per mostrare le scelte nel gioco, offerte dal comando 'menu'. Il solo parametro, 'items', è una lista di oggetti, ciascuna coi campi 'caption' e 'action'."
# screens.rpy:211
old "## http://www.renpy.org/doc/html/screen_special.html#choice"
@@ -62,12 +58,11 @@ translate italian strings:
# screens.rpy:244
old "## Quick Menu screen"
# Automatic translation.
new "## Schermata del menu rapido"
new "## Schermata del Menu Rapido"
# screens.rpy:246
old "## The quick menu is displayed in-game to provide easy access to the out-of-game menus."
new "## Il Quick Menu è mostrato durante il gioco per fornire accesso rapido ai menu esterni."
new "## Il menu rapido è mostrato durante il gioco per fornire accesso facile ai menu esterni."
# screens.rpy:261
old "Back"
@@ -91,11 +86,11 @@ translate italian strings:
# screens.rpy:266
old "Q.Save"
new "Salva V."
new "Salva R."
# screens.rpy:267
old "Q.Load"
new "Carica V."
new "Carica R."
# screens.rpy:268
old "Prefs"
@@ -107,12 +102,11 @@ translate italian strings:
# screens.rpy:291
old "## Navigation screen"
# Automatic translation.
new "## Schermata di navigazione"
# screens.rpy:293
old "## This screen is included in the main and game menus, and provides navigation to other menus, and to start the game."
new "## Questo screen è incluso nel main menu e nel game menu, e consente di navigare verso altri menu o di iniziare il gioco."
new "## Questa schermata è inclusa nei menu principale e di gioco, e consente di navigare verso altri menu o di iniziare il gioco."
# screens.rpy:308
old "Start"
@@ -140,7 +134,7 @@ translate italian strings:
# screens.rpy:332
old "## Help isn't necessary or relevant to mobile devices."
new "## L'Aiuto non è necessario nei dispositivi mobili."
new "## L'Aiuto non è necessario o rilevante sui dispositivi mobili."
# screens.rpy:333
old "Help"
@@ -148,7 +142,7 @@ translate italian strings:
# screens.rpy:335
old "## The quit button is banned on iOS and unnecessary on Android."
new "## Il pulsante Esci è vietato in iOS e inutile su Android."
new "## Il pulsante esci è vietato su iOS e inutile su Android."
# screens.rpy:336
old "Quit"
@@ -156,12 +150,11 @@ translate italian strings:
# screens.rpy:350
old "## Main Menu screen"
# Automatic translation.
new "## Schermata del menu principale"
# screens.rpy:352
old "## Used to display the main menu when Ren'Py starts."
new "## Usato per mostrare il main menu quando si avvia Ren'Py."
new "## Usato per mostrare il menu principale quando si avvia Ren'Py."
# screens.rpy:354
old "## http://www.renpy.org/doc/html/screen_special.html#main-menu"
@@ -169,20 +162,19 @@ translate italian strings:
# screens.rpy:369
old "## The use statement includes another screen inside this one. The actual contents of the main menu are in the navigation screen."
new "## Il comando 'use' include un'altro schermo all'interno di questo. I reali contenuti del main menu sono nel navigation screen."
new "## Il comando 'use' include un'altra schermata all'interno della corrente. I contenuti effettivi del menu principale sono nella schermata di navigazione."
# screens.rpy:413
old "## Game Menu screen"
# Automatic translation.
new "## Schermata del menu di gioco"
new "## Schermata del Menu di Gioco"
# screens.rpy:415
old "## This lays out the basic common structure of a game menu screen. It's called with the screen title, and displays the background, title, and navigation."
new "## Costruisce la struttura comune di tutti gli screen game menu. Viene avviato nella schermata del titolo, e mostra lo sfondo, il titolo e la navigazione."
new "## Costituisce la struttura comune di qualunque schermata del menu di gioco. Viene avviato nella schermata del titolo, e mostra lo sfondo, il titolo e la navigazione."
# screens.rpy:418
old "## The scroll parameter can be None, or one of \"viewport\" or \"vpgrid\". This screen is intended to be used with one or more children, which are transcluded (placed) inside it."
new "## Il parametro 'scroll' può essere None, oppure uno fra \"viewport\" o \"vpgrid\". Questo screen è creato per essere usato con uno o più figli, che sono trasclusi (piazzati) dentro di esso."
new "## Il parametro 'scroll' può essere None, oppure uno fra \"viewport\" o \"vpgrid\". Questa schermata è progettata per essere usata con uno o più figli, che sono trasclusi (piazzati) dentro di esso."
# screens.rpy:476
old "Return"
@@ -190,20 +182,19 @@ translate italian strings:
# screens.rpy:539
old "## About screen"
# Automatic translation.
new "## Informazioni sullo schermo"
new "## Schermata delle informazioni"
# screens.rpy:541
old "## This screen gives credit and copyright information about the game and Ren'Py."
new "## Questo screen fornisce i crediti e le informazioni di copyright sul gioco e su Ren'Py."
new "## Questa schermata visualizza i crediti e le informazioni di copyright sul gioco e su Ren'Py."
# screens.rpy:544
old "## There's nothing special about this screen, and hence it also serves as an example of how to make a custom screen."
new "## Non c'è niente di speciale in questo screen, pertanto può servire come esempio su come si crea uno screen personalizzato."
new "## Non c'è niente di speciale in questa schermata, pertanto può servire come esempio su come si crea una schermata personalizzata."
# screens.rpy:551
old "## This use statement includes the game_menu screen inside this one. The vbox child is then included inside the viewport inside the game_menu screen."
new "## Questo comando 'use' include lo screen game_menu dentro questo screen. Il figlio di vbox è quindi incluso nel viewport all'interno dello screen game_menu. \n## ===PER NEOFITI===: in pratica viene prima chiamato il game menu che stabilisce spaziature, sfondo, titoli e una viewport. Questo screen chiama e mostra il navigation screen a sinistra, che a sua volta determina quale screen (opzioni, slot, aiuto...) mostrare nella viewport a destra."
new "## Questo comando 'use' include la schermata game_menu all'interno della corrente. Il figlio di vbox è quindi incluso nel viewport all'interno dello screen game_menu. \n## ===PER NEOFITI===: in pratica viene prima chiamato il game menu che stabilisce spaziature, sfondo, titoli e una viewport. Questo screen chiama e mostra il navigation screen a sinistra, che a sua volta determina quale screen (opzioni, slot, aiuto...) mostrare nella viewport a destra."
# screens.rpy:561
old "Version [config.version!t]\n"
@@ -223,8 +214,7 @@ translate italian strings:
# screens.rpy:582
old "## Load and Save screens"
# Automatic translation.
new "## Schermate di caricamento e salvataggio"
new "## Schermate di Caricamento e Salvataggio"
# screens.rpy:584
old "## These screens are responsible for letting the player save the game and load it again. Since they share nearly everything in common, both are implemented in terms of a third screen, file_slots."
@@ -284,7 +274,6 @@ translate italian strings:
# screens.rpy:711
old "## Preferences screen"
# Automatic translation.
new "## Schermata delle preferenze"
# screens.rpy:713
@@ -341,19 +330,19 @@ translate italian strings:
# screens.rpy:767
old "Text Speed"
new "Velocità Testo"
new "Velocità del Testo"
# screens.rpy:771
old "Auto-Forward Time"
new "Avanzamento automatico"
new "Ritmo di Avanzamento Automatico"
# screens.rpy:778
old "Music Volume"
new "Volume Musica"
new "Volume della Musica"
# screens.rpy:785
old "Sound Volume"
new "Volume Suoni"
new "Volume dei Suoni"
# screens.rpy:791
old "Test"
@@ -361,16 +350,15 @@ translate italian strings:
# screens.rpy:795
old "Voice Volume"
new "Volume Voce"
new "Volume della Voce"
# screens.rpy:806
old "Mute All"
new "Silenzio"
new "Silenzia Tutto"
# screens.rpy:882
old "## History screen"
# Automatic translation.
new "## Schermata della storia"
new "## Schermata della cronologia"
# screens.rpy:884
old "## This is a screen that displays the dialogue history to the player. While there isn't anything special about this screen, it does have to access the dialogue history stored in _history_list."
@@ -398,7 +386,6 @@ translate italian strings:
# screens.rpy:965
old "## Help screen"
# Automatic translation.
new "## Schermata di aiuto"
# screens.rpy:967
@@ -423,7 +410,7 @@ translate italian strings:
# screens.rpy:1004
old "Advances dialogue and activates the interface."
new "Avanza nei dialoghi e conferma scelta."
new "Avanza nei dialoghi e conferma opzioni."
# screens.rpy:1007
old "Space"
@@ -467,8 +454,7 @@ translate italian strings:
# screens.rpy:1027
old "Page Up"
# Automatic translation.
new "Pagina su"
new "Pagina Su"
# screens.rpy:1028
old "Rolls back to earlier dialogue."
@@ -476,8 +462,7 @@ translate italian strings:
# screens.rpy:1031
old "Page Down"
# Automatic translation.
new "Pagina giù"
new "Pagina Giù"
# screens.rpy:1032
old "Rolls forward to later dialogue."
@@ -485,7 +470,7 @@ translate italian strings:
# screens.rpy:1036
old "Hides the user interface."
new "Nascondi l'interfaccia."
new "Nascondi l'interfaccia utente."
# screens.rpy:1040
old "Takes a screenshot."
@@ -508,12 +493,12 @@ translate italian strings:
new "Click Destro"
# screens.rpy:1062
old "Mouse Wheel Up\nClick Rollback Side"
new "Rotella Su\nClicca il Lato Riavvolgimento"
old "Mouse Wheel Up"
new "Rotella Su"
# screens.rpy:1066
old "Mouse Wheel Down"
new "Rotella Giu"
new "Rotella Giù"
# screens.rpy:1073
old "Right Trigger\nA/Bottom Button"
@@ -529,7 +514,7 @@ translate italian strings:
# screens.rpy:1081
old "Right Shoulder"
new "Laterale Destro"
new "Dorsale Destro"
# screens.rpy:1082
old "Roll forward to later dialogue."
@@ -537,13 +522,11 @@ translate italian strings:
# screens.rpy:1085
old "D-Pad, Sticks"
# Automatic translation.
new "D-Pad, bastoni"
new "Croce direzionale, Joystick"
# screens.rpy:1089
old "Start, Guide"
# Automatic translation.
new "Avvio, Guida"
new "Start, Guida"
# screens.rpy:1090
old "Access the game menu."
@@ -551,7 +534,7 @@ translate italian strings:
# screens.rpy:1093
old "Y/Top Button"
new "Y/Pulsante superiore"
new "Pulsante Y/Superiore"
# screens.rpy:1096
old "Calibrate"
@@ -559,16 +542,15 @@ translate italian strings:
# screens.rpy:1124
old "## Additional screens"
new "## Screen addizionali"
new "## Schermate addizionali"
# screens.rpy:1128
old "## Confirm screen"
# Automatic translation.
new "## Conferma la schermata"
new "## Schermata di conferma"
# screens.rpy:1130
old "## The confirm screen is called when Ren'Py wants to ask the player a yes or no question."
new "## Lo screen confirm è usato quando Ren'Py vuole porre una domanda 'sì o no?' al giocatore."
new "## La schermata di conferma (confirm) è usata quando Ren'Py vuole porre una domanda 'sì o no?' al giocatore."
# screens.rpy:1133
old "## http://www.renpy.org/doc/html/screen_special.html#confirm"
@@ -592,12 +574,11 @@ translate italian strings:
# screens.rpy:1191
old "## Skip indicator screen"
# Automatic translation.
new "## Schermata dell'indicatore di salto"
# screens.rpy:1193
old "## The skip_indicator screen is displayed to indicate that skipping is in progress."
new "## Lo screen skip_indicator è impiegato per indicare che è in corso la modalità salto."
new "## La schermata skip_indicator è visualizzata per indicare che è in corso la modalità salto."
# screens.rpy:1196
old "## https://www.renpy.org/doc/html/screen_special.html#skip-indicator"
@@ -613,12 +594,11 @@ translate italian strings:
# screens.rpy:1247
old "## Notify screen"
# Automatic translation.
new "## Schermata di notifica"
# screens.rpy:1249
old "## The notify screen is used to show the player a message. (For example, when the game is quicksaved or a screenshot has been taken.)"
new "## Lo screen notify è usato per mostrare una notifica al giocatore (per esempio, quando si salva rapidamente o si cattura una schermata)."
new "## La schermata di notifica (notify) è usata per mostrare una notifica al giocatore (per esempio, quando si salva rapidamente o si cattura una schermata)."
# screens.rpy:1252
old "## https://www.renpy.org/doc/html/screen_special.html#notify-screen"
@@ -626,12 +606,11 @@ translate italian strings:
# screens.rpy:1286
old "## NVL screen"
# Automatic translation.
new "## Schermo NVL"
new "## Schermata NVL"
# screens.rpy:1288
old "## This screen is used for NVL-mode dialogue and menus."
new "## Questo screen è usato per dialoghi e menu in modalità NVL."
new "## Questa schermata è usata per dialoghi e menu in modalità NVL."
# screens.rpy:1290
old "## http://www.renpy.org/doc/html/screen_special.html#nvl"
@@ -651,7 +630,7 @@ translate italian strings:
# screens.rpy:1406
old "## Mobile Variants"
new "## Varianti Mobili"
new "## Varianti Mobili"
# screens.rpy:1413
old "## Since a mouse may not be present, we replace the quick menu with a version that uses fewer and bigger buttons that are easier to touch."
@@ -695,14 +674,11 @@ translate italian strings:
# screens.rpy:1079
old "Left Trigger\nLeft Shoulder"
new "Grilletto Sinistro\nLaterale Sinistro"
translate italian strings:
new "Grilletto Sinistro\nDorsale Sinistro"
# gui/game/screens.rpy:120
old "## Make the namebox available for styling through the Character object."
# Automatic translation.
new "## Rendere la casella dei nomi disponibile per lo styling attraverso l'oggetto Character."
new "## Rendi la casella dei nomi disponibile per lo styling attraverso l'oggetto Character."
# gui/game/screens.rpy:173
old "## https://www.renpy.org/doc/html/screen_special.html#input"
@@ -714,8 +690,7 @@ translate italian strings:
# gui/game/screens.rpy:329
old "## The quit button is banned on iOS and unnecessary on Android and Web."
# Automatic translation.
new "## Il pulsante di abbandono è vietato su iOS e non è necessario su Android e sul Web."
new "## Il pulsante esci è vietato su iOS e inutile su Android e sul Web."
# gui/game/screens.rpy:348
old "## https://www.renpy.org/doc/html/screen_special.html#main-menu"
@@ -723,23 +698,19 @@ translate italian strings:
# gui/game/screens.rpy:676
old "Upload Sync"
# Automatic translation.
new "Sincronizzazione del caricamento"
new "Carica dati per la Sincronizzazione"
# gui/game/screens.rpy:680
old "Download Sync"
# Automatic translation.
new "Scarica Sync"
new "Scarica dati Sincronizzati"
# gui/game/screens.rpy:921
old "## This determines what tags are allowed to be displayed on the history screen."
# Automatic translation.
new "## Determina quali tag possono essere visualizzati nella schermata della cronologia."
# gui/game/screens.rpy:1049
old "Opens the accessibility menu."
# Automatic translation.
new "Apre il menu di accessibilità."
new "Apri il menu di accessibilità."
# gui/game/screens.rpy:1139
old "## https://www.renpy.org/doc/html/screen_special.html#confirm"
@@ -747,8 +718,7 @@ translate italian strings:
# gui/game/screens.rpy:1248
old "## We have to use a font that has the BLACK RIGHT-POINTING SMALL TRIANGLE glyph in it."
# Automatic translation.
new "## Dobbiamo usare un carattere che contenga il glifo NERO TRIANGOLO PICCOLO IN PUNTA DESTRA."
new "## Bisogna usare un carattere che contenga il glifo BLACK RIGHT-POINTING SMALL TRIANGLE."
# gui/game/screens.rpy:1296
old "## https://www.renpy.org/doc/html/screen_special.html#nvl"
@@ -756,13 +726,11 @@ translate italian strings:
# gui/game/screens.rpy:1410
old "## Bubble screen"
# Automatic translation.
new "## Schermo a bolle"
new "## Schermata a bolle"
# gui/game/screens.rpy:1412
old "## The bubble screen is used to display dialogue to the player when using speech bubbles. The bubble screen takes the same parameters as the say screen, must create a displayable with the id of \"what\", and can create displayables with the \"namebox\", \"who\", and \"window\" ids."
# Automatic translation.
new "## La schermata bubble è usata per visualizzare il dialogo al giocatore quando si usano le bolle vocali. Lo schermo a bolle prende gli stessi parametri dello schermo say, deve creare un visualizzabile con l'id \"what\" e può creare visualizzabili con gli id \"namebox\", \"who\" e \"window\"."
new "## La schermata a bolle (bubble) è usata per visualizzare il dialogo al giocatore quando si usano le bolle di dialogo. La schermata a bolle prende gli stessi parametri della schermata say, deve creare un visualizzabile con l'id \"what\" e può creare visualizzabili con gli id \"namebox\", \"who\" e \"window\"."
# gui/game/screens.rpy:1417
old "## https://www.renpy.org/doc/html/bubble.html#bubble-screen"
+2 -3
View File
@@ -13,7 +13,6 @@ label start:
# aggiungere un file (chiamato "bg room.png" oppure "bg room.jpg")
# alla directory 'images' per cambiarla.
scene bg room
# Mostra lo sprite di un personaggio.
@@ -26,11 +25,11 @@ label start:
"Funziona davvero!"
e "Hai creato un nuovo gioco Ren'py."
e "Hai creato un nuovo gioco Ren'Py."
e "Quando aggiungerai una storia, immagini e musica, potrai distribuirlo nel mondo!"
# Questo finisce il gioco.
# Questo termina il gioco.
return
+102 -2
View File
@@ -735,7 +735,7 @@ translate japanese strings:
# renpy/common/00accessibility.rpy:191
old "The options on this menu are intended to improve accessibility. They may not work with all games, and some combinations of options may render the game unplayable. This is not an issue with the game or engine. For the best results when changing fonts, try to keep the text size the same as it originally was."
new "このメニューのオプションはアクセス性を改善するためのものです。すべてのゲームで動作するわけではなく、特定の組合せではゲームを正常にレンダリングしないでしょう。これはゲームやエンジンの問題ではありません。フォント変更時に最良の結果を得るには、テキストサイズをオリジナルのままにしてください。"
new "このメニューのオプションはアクセシビリティーを改善するためのものです。すべてのゲームで動作するわけではなく、特定の組合せではゲームを正常にレンダリングしないでしょう。これはゲームやエンジンの問題ではありません。フォント変更時に最良の結果を得るには、テキストサイズをオリジナルのままにしてください。"
# renpy/common/00preferences.rpy:430
old "font transform"
@@ -791,7 +791,7 @@ translate japanese strings:
# renpy/common/00preferences.rpy:490
old "accessibility menu"
new "アクセス性メニュー"
new "アクセシビリティーメニュー"
# renpy/common/00preferences.rpy:493
old "high contrast text"
@@ -920,3 +920,103 @@ translate japanese strings:
old "Sync Error"
new "同期エラー"
# renpy/common/00director.rpy:1776
old "Customize director.transforms to add more transforms."
new "director.transform を設定して transform を追加できます。"
# renpy/common/00director.rpy:1821
old "Click to set."
new "クリックで設定します"
# renpy/common/00director.rpy:1822
old "Customize director.transitions to add more transitions."
new "director.transitions を設定してトランジションを追加できます。"
# renpy/common/00director.rpy:1845
old "Customize director.audio_channels to add more channels."
new "director.audio_channels を設定してチャンネルを追加できます"
# renpy/common/00preferences.rpy:573
old "restore window position"
new "ウィンドウ位置を復元する"
# renpy/common/00speechbubble.rpy:408
old "(clear retained bubbles)"
new "(保持されている吹き出しをクリアします)"
# renpy/common/00updater.rpy:504
old "No update methods found."
new "update メソッドが見付かりません"
# renpy/common/00updater.rpy:551
old "Could not download file list: "
new "ファイルリストがダウンロードできません : "
# renpy/common/00updater.rpy:554
old "File list digest does not match."
new "File listの要約がマッチしません"
# renpy/common/00updater.rpy:2072
old "Preparing to download the game data."
new "ゲームデータのダウンロードを準備します。"
# renpy/common/00updater.rpy:2074
old "Downloading the game data."
new "ゲームデータをダウンロードしています"
# renpy/common/00updater.rpy:2076
old "The game data has been downloaded."
new "ゲームデータがダウンロードされました"
# renpy/common/00updater.rpy:2078
old "An error occurred when trying to download game data:"
new "ゲームデータダウンロード中にエラーが発生しました:"
# renpy/common/00updater.rpy:2083
old "This game cannot be run until the game data has been downloaded."
new "このゲームはゲームデータのダウンロードまでは実行できません"
# renpy/common/00updater.rpy:2090
old "Retry"
new "リトライ"
# renpy/common/00accessibility.rpy:120
old "Accessibility Menu. Use up and down arrows to navigate, and enter to activate buttons and bars."
new "アクセシビリティーメニュー。上下矢印キーをナビゲーションに使用し、ボタンとバーのアクティブ化にはエンターを使用します"
# renpy/common/00accessibility.rpy:197
old "Self-voicing support is limited when using a touch screen."
new "セルフボイシングのサポートはタッチスクリーン使用時に限定されます"
# renpy/common/00gui.rpy:454
old "Are you sure you want to continue where you left off?"
new "続きから開始しますか"
# renpy/common/00preferences.rpy:438
old "self voicing enable"
new "セルフボイシング有効化"
# renpy/common/00preferences.rpy:440
old "self voicing disable"
new "セルフボイシング無効化"
# renpy/common/00preferences.rpy:455
old "clipboard voicing enable"
new "クリップボードボイシング有効化"
# renpy/common/00preferences.rpy:457
old "clipboard voicing disable"
new "クリップボードボイシング無効化"
# renpy/common/00preferences.rpy:464
old "debug voicing enable"
new "デバックボイシング有効化"
# renpy/common/00preferences.rpy:466
old "debug voicing disable"
new "デバックボイシング無効化"
# renpy/common/00preferences.rpy:595
old "reset"
new "リセット"
+39 -3
View File
@@ -201,9 +201,6 @@ translate japanese strings:
old "stack: print the return stack"
new "stack: リターンスタックの出力"
translate japanese strings:
# renpy/common/_developer/developer.rpym:51
old "Persistent Viewer"
new "永続データビューア"
@@ -220,3 +217,42 @@ translate japanese strings:
old "Help may display undocumented functions. Please check that the function or\nclass you want to use is documented.\n\n"
new "ヘルプでは、文書化されていない機能が表示されることがあります。ドキュメントで使用したい関数や\nクラスを確認してください。\n\n"
# renpy/common/_developer/developer.rpym:69
old "Show Translation Identifiers"
new "飜訳識別子を表示します"
# renpy/common/_developer/developer.rpym:72
old "Hide Translation Identifiers"
new "飜訳識別子を非表示します"
# renpy/common/_developer/developer.rpym:81
old "Show Filename and Line"
new "ファイル名と行を表示します"
# renpy/common/_developer/developer.rpym:84
old "Hide Filename and Line"
new "ファイル名と行を非表示します"
# renpy/common/_developer/developer.rpym:127
old "Layer [l]:"
new "Layer [l]:"
# renpy/common/_developer/developer.rpym:131
old " [name] [attributes] (hidden)"
new " [name] [attributes] (hidden)"
# renpy/common/_developer/developer.rpym:135
old " [name] [attributes]"
new " [name] [attributes]"
# renpy/common/_developer/developer.rpym:606
old "\n{color=#fff}Copied to clipboard.{/color}"
new "\n{color=#fff}クリップボードにコピー{/color}"
# renpy/common/_developer/developer.rpym:612
old "\n{color=#fff}Click to copy.\nDrag to move.{/color}"
new "\n{color=#fff}クリックでコピー.\nドラッグで移動します{/color}"
# renpy/common/_developer/developer.rpym:657
old "Click to open in editor."
new "エディターで開く"
+5 -2
View File
@@ -458,8 +458,11 @@ translate japanese strings:
new "## NVL モードにおける、一度に表示されるエントリー(1台詞)の最大数。この値以上のエントリーを表示しようとすると、一番古いエントリーが取り除かれます。"
translate japanese strings:
# gui/game/gui.rpy:14
old "## Enable checks for invalid or unstable properties in screens or transforms"
new "## スクリーンやトランスフォームのプロパティが無効または不安定であることをチェックできるようにする。"
# gui/game/gui.rpy:347
old "## Additional space to add between history screen entries."
new "## history screen の追加の行間を設定します。"
+153 -7
View File
@@ -364,7 +364,7 @@
new "{b}推奨{/b} 使いやすいインターフェースと、スペルチュックのような開発を補助する機能を持つベータエディターです。Editra は現在、中国、韓国、日本語の入力に必要な IME のサポートに欠陥があります。Linux では Editra は wxpython を必要とします。"
# editor.rpy:167
old "This may have occured because wxPython is not installed on this system."
old "This may have occurred because wxPython is not installed on this system."
new "このエラーは wxPython がこのシステムにインストールされていないため発生したと思われます。"
# editor.rpy:169
@@ -380,7 +380,7 @@
new "1.8 MB のダウンロードが必要です。"
# editor.rpy:182
old "This may have occured because Java is not installed on this system."
old "This may have occurred because Java is not installed on this system."
new "このエラーは Java がこのシステムにインストールされていないため発生しましたと思われます。"
# editor.rpy:191
@@ -392,7 +392,7 @@
new "Ren'Py のテキストエディターの実行を停止します。"
# editor.rpy:359
old "An exception occured while launching the text editor:\n[exception!q]"
old "An exception occurred while launching the text editor:\n[exception!q]"
new "テキストエディターの選択中にエラーが発生しました:\n[exception!q]"
# editor.rpy:457
@@ -608,7 +608,7 @@
new "エラー"
# interface.rpy:356
old "While [what!qt], an error occured:"
old "While [what!qt], an error occurred:"
new "[what!qt] 中にエラーが発生しました:"
# interface.rpy:356
@@ -1136,7 +1136,7 @@
new "Ren'Py の開発版で極めて不安定です。このバージョンには最新の機能が含まれていますが、全く動かないかもしれません。"
# updater.rpy:152
old "An error has occured:"
old "An error has occurred:"
new "エラーが発生しました。"
# updater.rpy:154
@@ -2032,8 +2032,8 @@
new "ランチャーテーマ:"
# game/preferences.rpy:256
old "Information about creating a custom theme can be found {a=https://www.renpy.org/doc/html/skins.html}in the Ren'Py Documentation{/a}."
new "カスタムテーマ作成情報は {a=https://www.renpy.org/doc/html/skins.html}Ren'Pyのドキュメント{/a}で読めます。"
old "Information about creating a custom theme can be found {a=[skins_url]}in the Ren'Py Documentation{/a}."
new "カスタムテーマ作成情報は {a=[skins_url]}Ren'Pyのドキュメント{/a}で読めます。"
# game/preferences.rpy:273
old "Install Libraries:"
@@ -2153,3 +2153,149 @@ translate japanese strings:
old "Creating package..."
new "パッケージの作成..."
# game/updater.rpy:79
old "A nightly build of fixes to the release version of Ren'Py."
# Automatic translation.
new "Ren'Py のリリース版に対する修正を行ったナイトリービルドです。"
# game/androidstrings.rpy:46
old "I was unable to use javac to compile a test file. If you haven't installed the Java Development Kit yet, please download it from:\n\n{a=https://adoptium.net}https://adoptium.net/{/a}\n\nThe JDK is different from the JRE, so it's possible you have Java without having the JDK. Please install JDK [JDK_REQUIREMENT], and add it to your PATH.\n\nWithout a working JDK, I can't continue."
new "javac を使用してテストファイルをコンパイルできませんでした。Java Development Kitをまだインストールしていないならば:\n\n{a=https://adoptium.net}https://adoptium.net/{/a}からダウンロードしてください。\n\nJDKはJREとは異なるため、JDKがなくてもJavaを使用できる可能性があります。JDK [JDK_REQUIREMENT] をインストールしてパスに追加してください。\n\n動作するJDKなしでは続行できません。"
# game/androidstrings.rpy:47
old "The version of Java on your computer does not appear to be JDK [JDK_REQUIREMENT], which is required to build Android apps. If you need to install a newer JDK, you can download it from:\n\n{a=https://adoptium.net/}https://adoptium.net/{/a}, and add it to your PATH.\n\nYou can also set the JAVA_HOME environment variable to use a different version of Java."
new "コンピューター上のJavaのバージョンはAndroidアプリをビルドするのに必要なJDK [JDK_REQUIREMENT] からはわかりません。より新しいJDKをインストール必要があれば次からダウンロードしてパスに追加してください。:\n\n{a=https://adoptium.net/}https://adoptium.net/{/a}\n\n JAVA_HOME 環境変数を設定して異なるバージョンのJavaの使用もできます。"
# game/choose_directory.rpy:72
old "No directory was selected, but one is required."
new "ディレクトリーを選択してください。"
# game/choose_directory.rpy:80
old "The selected directory does not exist."
new "選択されたディレクトリーがありません。"
# game/choose_directory.rpy:82
old "The selected directory is not writable."
new "選択されたディレクトリーは書き込みできません。"
# game/distribute.rpy:535
old "Building distributions failed:\n\nThe project is the Ren'Py Tutorial, which can't be distributed outside of Ren'Py. Consider using The Question as a test project."
new "配布物のビルドに失敗しました:\n\nプロジェクトは Tutorial ですが、これは Ren'Py 外に出せません。テストプロジェクトには The Question を使用してください。"
# game/distribute.rpy:562
old "This may be derived from build.name and config.version or build.version."
new "これは build.name と config.version または build.version から所得されます。"
# game/distribute.rpy:1620
old "Finishing the [variant] [format] package."
new "[variant] [format] のパッケージを完了しました。"
# game/editor.rpy:185
old "Atom is deprecated and its bugs are known for corrupting games, using another editor is recommended."
new "Atomは非推奨であり、そのバグはゲームを破壊することで知られているので他のエディタを使うことをお勧めします。"
# game/editor.rpy:214
old "JEdit is deprecated, using another editor is recommended."
new "JEditは非推奨です。他のエディタを使うことをお勧めします。"
# game/editor.rpy:607
old "The Atom text editor is no longer supported by its developers. We suggest switching to Visual Studio Code or another editor."
new "Atom はもう開発者自身にサポートされていません。Visual Studio Code や他のエディターを進めます。"
# game/editor.rpy:607
old "Select editor now."
new "今エディターを選択する"
# game/editor.rpy:607
old "Ignore until next launch."
new "次の起動まで無視する"
# game/editor.rpy:607
old "Do not ask again."
new "次回は尋ねません"
# game/new_project.rpy:38
old "Warning : you are using Ren'Py 7. It is recommended to start new projects using Ren'Py 8 instead."
new "警告 : Ren'Py 7 を使用しています。新しいプロジェクトの開始には代りに Ren'Py 8 の使用が推奨されています。"
# game/new_project.rpy:49
old "Please select a template project to use."
new "使用するテンプレートプロジェクトを選択してください。"
# game/new_project.rpy:49
old "Do not use a template project."
new "テンプレートプロジェクトを使用しない"
# game/preferences.rpy:94
old "Lint"
new "Lint"
# game/preferences.rpy:233
old "Game Options:"
new "ゲームオプション"
# game/preferences.rpy:240
old "Skip splashscreen"
new "スプラッシュスクリーンをスキップします"
# game/preferences.rpy:258
old "Restore window position"
new "ウィンドウ位置を復元します"
# game/preferences.rpy:262
old "Prefer RPU updates"
new "RPU アップデートを優先します"
# game/preferences.rpy:332
old "Open projects.txt"
new "projects.txt を開きます"
# game/preferences.rpy:356
old "Lint toggles:"
new "Lint トグル"
# game/preferences.rpy:360
old "Check for orphan/obsolete translations"
new "未使用の翻訳の確認"
# game/preferences.rpy:363
old "Check parameters shadowing reserved names"
new "予約された名前を shadowing するパラメーターを確認します"
# game/preferences.rpy:366
old "Print block, word, and character counts by speaking character."
new "ブロック、単語、話をするキャラクターの数を出力します"
# game/preferences.rpy:369
old "Unclosed text tags"
new "閉じられていないテキストタグ"
# game/preferences.rpy:372
old "Show all unreachable blocks and orphaned translations."
new "すべての到達できないブロックと対応するもののない翻訳を表示します"
# game/project.rpy:776
old "Splashscreen skipped in launcher preferences."
new "スプラッシュスクリーンはランチャー設定でスキップされています"
# game/updater.rpy:76
old "Nightly Fix"
new "Nightly Fix"
# game/updater.rpy:77
old "Nightly Fix (Ren'Py 8, Python 3)"
new "Nightly Fix (Ren'Py 8, Python 3)"
# game/updater.rpy:78
old "Nightly Fix (Ren'Py 7, Python 2)"
new "Nightly Fix (Ren'Py 7, Python 2)"
# game/install.rpy:186
old "The {a=https://www.live2d.com/en/download/cubism-sdk/download-native/}Cubism SDK for Native{/a} adds support for displaying Live2D models. Place CubismSdkForNative-{i}version{/i}.zip in the Ren'Py SDK directory, and then click Install. Distributing a game with Live2D requires you to accept a license from Live2D, Inc."
new "{a=https://www.live2d.com/en/download/cubism-sdk/download-native/}Cubism SDK for Native{/a} は Live2D モデルの表示サポートを追加します。CubismSdkForNative-{i}version{/i}.zip を Ren'Py SDK ディレクトリーに配置して、インストールをクリックしてください。Live2Dと共にゲームを配布するには Live2D, Inc からあなたがライセンスを所得する必要がります"
# game/preferences.rpy:258
old "Prefer the web documentation"
new "Web上のドキュメントを優先する"
+11 -8
View File
@@ -346,15 +346,15 @@ translate japanese strings:
# screens.rpy:752
old "Unseen Text"
new "未読テキストもスキップ"
new "未読テキスト"
# screens.rpy:753
old "After Choices"
new "選択肢後もスキップ継続"
new "選択肢後"
# screens.rpy:754
old "Transitions"
new "トランジションをスキップ"
new "トランジション"
# screens.rpy:756
old "## Additional vboxes of type \"radio_pref\" or \"check_pref\" can be added here, to add additional creator-defined preferences."
@@ -525,8 +525,8 @@ translate japanese strings:
new "右クリック"
# screens.rpy:1062
old "Mouse Wheel Up\nClick Rollback Side"
new "マウスホイール上回転\n画面サイドをタッチ"
old "Mouse Wheel Up"
new "マウスホイール上回転"
# screens.rpy:1066
old "Mouse Wheel Down"
@@ -697,15 +697,13 @@ translate japanese strings:
# gui/game/screens.rpy:1049
old "Opens the accessibility menu."
new "アクセス性メニューを開きます。"
new "アクセシビリティーメニューを開きます。"
# gui/game/screens.rpy:1307
old "## Displays the menu, if given. The menu may be displayed incorrectly if config.narrator_menu is set to True."
new "## 指定されれば選択肢を表示します。config.narrator_menuがTrueだと、メニューは正常に表示されないでしょう。"
translate japanese strings:
# gui/game/screens.rpy:676
old "Upload Sync"
new "同期のアップロード"
@@ -725,3 +723,8 @@ translate japanese strings:
# gui/game/screens.rpy:1417
old "## https://www.renpy.org/doc/html/bubble.html#bubble-screen"
new "## https://www.renpy.org/doc/html/bubble.html#bubble-screen"
# gui/game/screens.rpy:1098
old "Start, Guide, B/Right Button"
new "スタート、ガイド、 B / Right ボタン"
+15 -10
View File
@@ -624,7 +624,7 @@
new "에디트라(Editra)는 현재 중국어, 일본어, 한국어 텍스트를 입력할 때 필요한 IME를 지원하지 않습니다. 리눅스에서, 에디트라는 wxPython이 필요합니다."
# game/editor.rpy:195
old "This may have occured because wxPython is not installed on this system."
old "This may have occurred because wxPython is not installed on this system."
new "wxPython이 설치되지 않아 문제가 발생했을 가능성이 있습니다."
# game/editor.rpy:197
@@ -640,7 +640,7 @@
new "1.8MB 내려받기 필요."
# game/editor.rpy:210
old "This may have occured because Java is not installed on this system."
old "This may have occurred because Java is not installed on this system."
new "자바(Java)가 설치되지 않아 문제가 발생했을 수도 있습니다."
# game/editor.rpy:219
@@ -664,7 +664,7 @@
new "[text] 편집."
# game/editor.rpy:387
old "An exception occured while launching the text editor:\n[exception!q]"
old "An exception occurred while launching the text editor:\n[exception!q]"
new "스크립트 에디터를 실행하던 도중 예외가 발생했습니다:\n[exception!q]"
# game/editor.rpy:519
@@ -1480,7 +1480,7 @@
new "%Y년 %m월 %d일"
# game/updater.rpy:140
old "An error has occured:"
old "An error has occurred:"
new "오류가 발생했습니다:"
# game/updater.rpy:142
@@ -1532,7 +1532,7 @@
new "다음으로"
# game/interface.rpy:394
old "While [what!qt], an error occured:"
old "While [what!qt], an error occurred:"
new "[what!qt]에 오류가 발생했습니다:"
# game/interface.rpy:394
@@ -2046,9 +2046,8 @@ translate korean strings:
new "사용자 지정 테마"
# game/preferences.rpy:256
old "Information about creating a custom theme can be found {a=https://www.renpy.org/doc/html/skins.html}in the Ren'Py Documentation{/a}."
# Automatic translation.
new "사용자 지정 테마를 만드는 방법에 대한 정보는 Ren'Py 문서{/a} 에서 {a=https://www.renpy.org/doc/html/skins.html}확인할 수 있습니다."
old "Information about creating a custom theme can be found {a=[skins_url]}in the Ren'Py Documentation{/a}."
new "사용자 지정 테마를 만드는 방법에 대한 정보는 {a=[skins_url]}Ren'Py 문서{/a} 에서 확인할 수 있습니다."
# game/preferences.rpy:273
old "Install Libraries:"
@@ -2068,12 +2067,12 @@ translate korean strings:
# game/preferences.rpy:338
old "{#in language font}Welcome! Please choose a language"
# Automatic translation.
new "{#in language font}환영합니다! 언어를 선택해 주세요."
new "{font=SourceHanSansLite.ttf}환영합니다! 언어를 선택해 주세요."
# game/preferences.rpy:373
old "{#in language font}Start using Ren'Py in [lang_name]"
# Automatic translation.
new "{#in language font}다음에서 Ren'Py 사용 시작 [lang_name]"
new "{font=SourceHanSansLite.ttf}다음에서 Ren'Py 사용 시작 [lang_name]"
# game/project.rpy:46
old "Lint checks your game for potential mistakes, and gives you statistics."
@@ -2150,3 +2149,9 @@ translate korean strings:
# Automatic translation.
new "재생 중에 이미지와 음악을 다운로드할 수 있습니다. 이 동작을 구성할 수 있도록 'progressive_download.txt' 파일이 생성됩니다."
translate korean strings:
# game/updater.rpy:79
old "A nightly build of fixes to the release version of Ren'Py."
# Automatic translation.
new "Ren'Py 릴리스 버전에 대한 수정 사항이 포함된 야간 빌드입니다."
-6
View File
@@ -207,13 +207,7 @@ translate korean strings:
# Automatic translation.
new "## 이 세 가지 변수는 무엇보다도 플레이어에게 기본적으로 표시되는 믹서를 제어합니다. 이 중 하나를 False로 설정하면 해당 믹서가 숨겨집니다."
# gui/game/options.rpy:152
old "## Icon"
# Automatic translation.
new "아이콘 ##"
# gui/game/options.rpy:203
old "## A Google Play license key is required to perform in-app purchases. It can be found in the Google Play developer console, under \"Monetize\" > \"Monetization Setup\" > \"Licensing\"."
# Automatic translation.
new "## 인앱 구매를 수행하려면 Google Play 라이선스 키가 필요합니다. Google Play 개발자 콘솔의 '수익 창출' > '수익 창출 설정' > '라이선스'에서 찾을 수 있습니다."

Some files were not shown because too many files have changed in this diff Show More