Compare commits

...

911 Commits

Author SHA1 Message Date
Tom Rothamel 5c1f020786 Bump version to 6.99.9. 2015-11-29 17:08:45 -05:00
Tom Rothamel d3dbc5b076 Document the limitation on android transparency. 2015-11-28 22:06:41 -05:00
Tom Rothamel 99ddc07103 Ignore control characters in filenames when distributing.
On Mac OS X, the filename Icon\r is used for folder icons. This
filename can't be represented on windows, and so causes a crash.
2015-11-28 00:16:12 -05:00
Tom Rothamel dd2f3203dd Update changelog. 2015-11-27 22:49:50 -05:00
Tom Rothamel a7c4a74cfc Remove old code and license new file. 2015-11-27 22:38:28 -05:00
Tom Rothamel 118c7528a2 Update side image functionality.
It's now possible to apply a transform (and hence a transition)
when a side image changes. Different transforms can be used
when a the change is within a single character, versus a
change between characters.

Fixes #781.
2015-11-27 22:31:07 -05:00
Tom Rothamel c29e8c314f Restore state inside a loaded ImageReference.
This only matters when an ImageReference is saved and loaded again.
Since the target may have been given information (from the
default transform or a previously shown transform), we have to
propagate that information along to the target that is newly-found
after load.

Fixes #795.
2015-11-26 22:42:20 -05:00
Tom Rothamel da021a3808 Allow ATL properties to take strings.
This is mostly for debug.
2015-11-26 12:33:59 -05:00
Tom Rothamel d64d5a60ca Improve recompiles of existing games.
* Do not crash when recompiling and a .rpyc file exists in an archive.
* Do not delete orphan rpyc files when distributing.

Fixes #792.
2015-11-26 10:47:54 -05:00
Tom Rothamel 0836a54114 Update changelog. 2015-11-25 22:46:19 -05:00
Tom Rothamel 623ceda92b Merge pull request #790 from kalawore/master
update traditional_chinese translator
2015-11-25 22:15:59 -05:00
Tom Rothamel f3bb6e66df Merge pull request #773 from Rikxz/patch-1
Added deprecation warnings on UI Functions
2015-11-25 22:07:42 -05:00
Tom Rothamel 7c3101cb1c Update changelog. 2015-11-25 00:38:31 -05:00
Tom Rothamel 734c0507f4 Update docs, add easings. 2015-11-24 22:11:23 -05:00
kalawore 25a4284a12 update traditional_chinese translator 2015-11-24 23:54:00 +08:00
kalawore f7a0087995 update traditional_chinese translator 2015-11-24 23:38:50 +08:00
kalawore 8074fc825a update traditional_chinese translator 2015-11-24 23:32:34 +08:00
kalawore dfe8c3e395 Merge branch 'master' of https://github.com/kalawore/renpy 2015-11-24 23:18:18 +08:00
kalawore cc74793542 Merge remote-tracking branch 'refs/remotes/renpy/master' 2015-11-24 21:29:34 +08:00
Tom Rothamel baa6cc3c59 Add config.log_width. 2015-11-24 00:49:59 -05:00
Tom Rothamel b9176185f1 Add ATL warpers to their own namespace.
This allows them to be used in other code, while also letting them
use each other in their implementation.

Fixes #788.
2015-11-23 21:41:02 -05:00
Tom Rothamel f96bedb510 Disable SDL2 HighDPI on Windows.
This will help ensure compatibility with future versions of SDL
that do understand HighDPI, but don't expect us to be handling
it ourselves.
2015-11-23 00:53:47 -05:00
Tom Rothamel 4c8078b4d7 Actively center a highdpi window on windows.
Since SDL doesn't understand highdpi on windows, it was placing
the window offscreen. This prevents Ren'Py from popping up a
window that can't be moved.
2015-11-23 00:52:18 -05:00
Tom Rothamel 383bc6af46 Use HighDPI physical size directly.
This helps prevent problems that could occur with non-integer
scaling factors causing non-pixel-aligned screens.

Fixes #362.
2015-11-23 00:15:27 -05:00
Tom Rothamel 71fc31c1cb Windows-platform HighDPI support. 2015-11-22 23:49:20 -05:00
Tom Rothamel ea3a9d7e21 Ensure config.use_drawable_resolution = False works.
Fixes #787.
2015-11-22 19:38:55 -05:00
Tom Rothamel 4222ae2e49 Add config.tag_transform.
This provides a way to supply a default transform to an image
tag.
2015-11-21 22:57:00 -05:00
Tom Rothamel 9c4f7f0851 Update the 6.99.8 changelog. 2015-11-20 23:50:03 -05:00
kalawore 90473bdda2 Revert "update traditional_chinese translator"
This reverts commit ec3be878a8.
2015-11-19 18:38:13 +08:00
Tom Rothamel bb9b6ca08a Clear the mouse focus when saving windows.
Fixes #780.
2015-11-18 22:13:48 -05:00
Tom Rothamel 55400c17a8 Store what last changed the focus.
Either the keyboard or mouse. This will be used to determine if
losing a focus should unforcus the keyboard.
2015-11-17 23:43:52 -05:00
Tom Rothamel 256f3173da Add Nyaatrap's implementation of Robert Penner's easing functions
http://robertpenner.com/easing/
http://robertpenner.com/easing_terms_of_use.html
http://lemmasoft.renai.us/forums/viewtopic.php?f=51&t=35749
2015-11-16 23:18:19 -05:00
Tom Rothamel 179cd2ed6c Make Frame's parameters optional. 2015-11-15 11:57:20 -05:00
kalawore ec3be878a8 update traditional_chinese translator 2015-11-15 23:17:50 +08:00
kalawore cd328876d1 Merge remote-tracking branch 'refs/remotes/renpy/master' 2015-11-15 20:34:06 +08:00
Tom Rothamel df16435ae4 Add renpy.add_layer function.
This provides a good way to modify config.layers.
2015-11-15 00:55:30 -05:00
Tom Rothamel 5d108094a5 Document new config variables. 2015-11-14 22:32:32 -05:00
Tom Rothamel daf3f34705 Allow a default layer to be associated with an image tag.
This commit makes it possible to associated a layer with
an image tag. Show and hide operations associated with that
tag will take place on the given layer.

Fixes #782.
2015-11-14 17:39:30 -05:00
Tom Rothamel 0ba1eeb9be Support xminimum and yminimum in hbox and vbox.
And because these are supported, so is area, xsize, and ysize.
2015-11-13 21:50:14 -05:00
Tom Rothamel 3c613a8157 Add PlayCharacterVoice.
This is a function that plays a sound file on the voice channel
with the given voice tag. This makes it possible to preview the
voice with the volume that would be used.
2015-11-09 21:51:00 -05:00
Tom Rothamel 75e4cc0bb7 Do not adjust text in console inputs. 2015-11-08 22:29:08 -05:00
Tom Rothamel 17f722fc0b Tristate _overlay_screens. 2015-11-07 23:44:23 -05:00
Tom Rothamel 2563a8dbcb Add config.overlay_screens.
This is a list of screens to display when the overlay is enabled,
which is the normal mode of operation.
2015-11-07 23:42:23 -05:00
Tom Rothamel 794932f82e Allow renpy.get_screen to check multiple screens. 2015-11-07 22:49:53 -05:00
Tom Rothamel 2b9ebc974c Limit alpha to 0.0 - 1.0 2015-11-07 22:49:07 -05:00
Tom Rothamel 1ca9a696e2 Document ATL warper output range. 2015-11-07 22:48:45 -05:00
Tom Rothamel 02a9d4721c Do not restrict ATL interpolation to the 0-1 range. 2015-11-06 20:48:14 -05:00
Tom Rothamel 3a583da12d Do not add spurious spaces to the end of text lines.
This was caused by looking at the wrong type. Fixes #779.
2015-11-04 23:10:05 -05:00
Tom Rothamel acd7f792ab Fix the get_available_image functions. 2015-11-03 22:55:46 -05:00
Tom Rothamel d42ffed1e7 Add renpy.can_show. 2015-11-03 00:23:40 -05:00
Tom Rothamel 17f8e56b70 Add a couple of functions to get tags and attributes. 2015-11-02 23:28:09 -05:00
Tom Rothamel d1f3c9dc8a Bump version to 6.99.8. 2015-11-02 23:26:44 -05:00
Tom Rothamel d3db4b099b Update the changelog. 2015-11-01 20:26:50 -05:00
Tom Rothamel adc2c96e71 Check displayable identity when determining hyperlink focus.
Fixes #777.
2015-10-31 10:06:35 -04:00
Tom Rothamel a1b572da61 lint: More accurately match image names.
Ren'Py considers "eileen beach happy" equivalent to "eileen happy
beach", and so lint should too.

Fixes #775.
2015-10-30 22:21:11 -04:00
Tom Rothamel ed653831a0 Merge pull request #776 from SpikyCaterpillar/software-xorg-fullscreen
No longer try to reuse existing windows when switching video modes.
2015-10-30 19:04:45 -04:00
Tom Rothamel 8d6ec39c33 Defensively program achievement merges. 2015-10-30 18:46:55 -04:00
Spiky Caterpillar d83d2045b3 No longer try to reuse existing windows when switching video modes.
This fixes a bug where, if you're using the software renderer on Xorg on Debian Jessie,
switching into fullscreen produces an unusable screen (usually, a fullscreen window with
the current screen contents stuck on it; sometimes the game window scaled to full screen
but refusing to accept graphic updates (though clicks ARE passed through to the underlying
game), sometimes the game window drawn actual size in the upper left corner of the screen
with the rest of the screen occupied by the previous screen contents).  This bug was
seen on two different Jessie machines.
2015-10-30 07:01:01 -07:00
Tom Rothamel 229df03363 Fix translation whitespace. 2015-10-29 09:47:06 -04:00
Tom Rothamel 4d141b7bc2 Update traditional chinese translation.
Merge branch 'master' of https://github.com/kalawore/renpy
2015-10-29 09:35:35 -04:00
Tom Rothamel 219fccf588 Properly chain non-default translate blocks.
This fixes a regression that caused a translated block to be followed
by the untranslated version of the same block.
2015-10-28 19:49:58 -04:00
Tom Rothamel 5c92d6cfb7 Move handling of renpy.session["compile"]
... into a place where it's run after the game restarts, but before
the game is compiled.
2015-10-26 23:13:17 -04:00
Rikxz 9b77cba97e Added deprecation warnings on UI Functions 2015-10-25 19:29:30 -05:00
Tom Rothamel b3545fbce4 Fix bad fix. ;^_^ 2015-10-25 19:42:40 -04:00
Tom Rothamel c055d253c4 Fix typos. 2015-10-25 19:33:16 -04:00
Tom Rothamel c9a35bd23f Support consumable purchases on iOS.
Code contributed by Pavel & Winter Wolves. Apparently, Apple is
only allowing money cheats as consumables. How evil.
2015-10-25 18:00:53 -04:00
Tom Rothamel a0e7ab2b2b Fix last merge. 2015-10-25 10:49:56 -04:00
Tom Rothamel 194a79069b Merge pull request #772 from SpikyCaterpillar/master
SW rendering bugfix and minor changes
2015-10-25 10:42:27 -04:00
Spiky Caterpillar 936a0bf1e5 Bring the audio back 2015-10-25 04:44:58 -07:00
Spiky Caterpillar a0ab3c845f Fit bug where windows wouldn't redraw when exposed if you were using the
software renderer.  (Bug observed on Debian stable/testing mix, Xorg
using Radeon driver, RV380 video card)
2015-10-25 04:25:32 -07:00
Spiky Caterpillar d61e4adef7 Support home and end in text input fields. 2015-10-25 04:24:55 -07:00
Spiky Caterpillar a244516b81 Trying to sync my fork. 2015-10-25 04:21:50 -07:00
Tom Rothamel 717b133a0e Doc another bugfix. 2015-10-24 23:00:05 -04:00
Tom Rothamel be288feb13 Remove (another) debug raise. 2015-10-24 22:57:05 -04:00
Tom Rothamel 1df06a92b5 Update changelog for 6.99.7. 2015-10-24 22:56:08 -04:00
Tom Rothamel daee66a17e Various fixes to gamepad support. 2015-10-24 14:00:24 -04:00
Tom Rothamel 7ccc26276a Fix fix. 2015-10-23 22:32:20 -04:00
Tom Rothamel d7c3aadf62 Predict screens with all possible arguments.
Fixes #769.
2015-10-23 21:09:40 -04:00
Tom Rothamel 9831b68ac9 Merge pull request #764 from emmeken/custom-text-replace
Custom text replacement hook
2015-10-23 20:47:10 -04:00
Tom Rothamel bec4cabf8d Remove debug raise. 2015-10-23 20:32:09 -04:00
Tom Rothamel f64e050f9b pad: Expose gamepad calibration via the shift+G menu. 2015-10-23 00:20:43 -04:00
Tom Rothamel 33fda314a0 pad: Add calibration tool. 2015-10-23 00:09:57 -04:00
Tom Rothamel a4b8da9119 pad: Start work on gamepad calibration tool. 2015-10-22 22:34:01 -04:00
Tom Rothamel 1bb51d6953 Drop direct OUYA support.
It should work, but with the standard controller.
2015-10-22 01:27:58 -04:00
Tom Rothamel 5fd7282fdd Add support of K_SELECT.
This is the SELECT button on Android remote controls, like the one
for Fire TV.
2015-10-22 00:08:21 -04:00
Tom Rothamel 27f8f5092f transform: Do not take state from self.
This can happen incidentally during a copy during hide. It's not
correct, and so we prevent it from happening.

Fixes #760.
2015-10-21 21:51:18 -04:00
Tom Rothamel 6d8562cf97 pad: Ignore gamepad events if the window is not keyboard focused.
Fixes #766.
2015-10-20 21:28:46 -04:00
Emmeken 8cfe83eab6 Added custom text replacement hook
This allows a custom function to for example replace '--' with em-dash
and '...' with an actual ellipsis character.
2015-10-20 12:30:01 +02:00
Tom Rothamel c87b4087b1 Limit framerate if vsync is broken.
If the user requests vsync yet vsync happens to be broken, we'll
consume 100% CPU. This can happen on a mac, for example when
the window is fully covered by another window. This code inserts
a sleep in that case.

Fixes #757.
2015-10-17 22:48:36 -04:00
Tom Rothamel f0258aa269 Fix creator defined statement documentation.
Lint works for me.

Fixes #763.
2015-10-17 21:08:36 -04:00
Tom Rothamel ed871863df Add the ability to quit w/o save on mobile backgrounded.
Requested by Mugenjohncel.
2015-10-16 20:29:45 -04:00
Tom Rothamel 31de7c5ef0 Fix problems with docs. 2015-10-15 23:48:19 -04:00
Tom Rothamel b1f59d9eaa di: Document. 2015-10-15 23:40:00 -04:00
Tom Rothamel 20c71c6312 Make SL2 image an alias for add.
This shouldn't change anything semantically, and lets us share
the di behavior.
2015-10-15 22:52:28 -04:00
Tom Rothamel b781769a0a id: Use the screen scope with SL2 add.
This lets us write:

    default weather = 'sunny'
    add "logo [weather]"
    textbutton "Make it Rain" action SetScreenVariable("weather", "rainy")

in SL2, and have it work properly.

This required a genericization of the way SL handles providing scopes to
displayables, especially Text.
2015-10-15 22:45:36 -04:00
Tom Rothamel d75417d081 di: Export DynamicImage into the default namespace.
While this will probably never be used, it's probably best to
have it and not use it.
2015-10-15 18:04:21 -04:00
Tom Rothamel 2a90549cb9 di: Check that dynamic images are enabled. 2015-10-15 18:00:11 -04:00
Tom Rothamel 158d798bb8 Compat fixes & changes.
* Fix compat with 6.99.5. This was actually causing problems when
  packaging 6.99.6 games.

* Compat dynamic images.
2015-10-14 23:52:14 -04:00
Tom Rothamel a46ee80ec6 Add DynamicImage.
This provides a way to write:

    image eileen = "eileen [mood]"

rather than a massive condition switch.
2015-10-14 23:22:44 -04:00
Tom Rothamel 093dc4e79c Disable skipping when leaving a replay.
Fixes #758.
2015-10-14 20:52:09 -04:00
Tom Rothamel 8a8240e2a0 Properly subsurfaces renders with clipping enabled.
Because of one of the changes made to support drawable-resolution
text, we would increase the size of Renders. When clipping was
involved, this could make the render too large, causing overlap.

This fixes a bug that affected the scrollbars in some of the
default themes.
2015-10-13 19:00:04 -04:00
Tom Rothamel 8e5fbb2ef5 launcher: Maintain adjustements when style restarts happen.
This allows one to scroll through the list of color schemes, at least
until the new gui replaces them.
2015-10-13 00:09:09 -04:00
Tom Rothamel eb3a203fdc Force an interaction restart when a style rebuild occurs.
This was assumed but not enforced, and the result is that screen
preparation was not occuring when it needed to.
2015-10-12 22:40:56 -04:00
Tom Rothamel 6ac39d096f text: Unscale hyperlink coordinates.
This fixes a problem where hyperlinks were not being unscaled
properly, and hence hyperlinks that were not in the top-left
of a Text block would not handle focus the correct way.
2015-10-12 00:21:36 -04:00
Tom Rothamel ae6060b31a Include uncommitted text when processing the enter key on text input.
Fixes #742, hopefully.
2015-10-12 00:09:42 -04:00
Tom Rothamel c08acaef56 Do not include update.json in android/ios builds. 2015-10-11 23:23:28 -04:00
Tom Rothamel e8f98816ab Fix file pages to work right with folders.
Fixes #756.
2015-10-11 21:15:01 -04:00
Tom Rothamel 7be67acb0c Track checkpoints even if rollback is disabled.
This is necessary for setting _rollback to False to work
properly. Before this, greedy rollbacks could go to the
first line with _rollback=False, since they would go
until just after the last checkpoint.

Fixes #740.
2015-10-10 23:30:31 -04:00
Tom Rothamel 03043c1250 Merge pull request #755 from emmeken/user-statement-prediction
Fix creator-defined statement prediction
2015-10-10 20:32:22 -04:00
Emmeken a5375963a9 Fix creator-defined statement prediction
UserStatement.predict uses the return value from UserStatement.call,
but until now UserStatement.call did not return anything.
2015-10-10 12:42:52 +02:00
Tom Rothamel e18f96b827 If opening in fullscreen mode fails, revert to a window. 2015-10-09 23:06:26 -04:00
Tom Rothamel 7b8fbf2e49 Use eval_who and narrator in default_empty_window.
Fixes #753.
2015-10-08 22:19:37 -04:00
Tom Rothamel d641bb1f54 Make transition optional for nvl show and nvl hide.
Fixes #510.
2015-10-08 19:41:42 -04:00
Tom Rothamel 91c46dab72 text: Preserve newlines in the presence of a FlagSegment.
Fixes #748.
2015-10-07 21:41:53 -04:00
Tom Rothamel e7cd340ec7 Add the adjust_spacing text style property.
This is used in inputs (and can be used with extend) to ensure that
text does not change spacing when it changes. However, when doing so
it's important that the creator ensure there's enough space for
the text at all reasonable resolutions.
2015-10-06 23:31:13 -04:00
Tom Rothamel 345276cacc text: Store spacing tweaks and use to fix underlines.
We had the problem that spacing tweaks would force characters to
the right, leaving space between the last character and this one.
This fix now stores these adjutments, and uses them to add an
extra pixel to underlines and strikeouts when necessary to
compensate for this kind of shift.
2015-10-05 23:25:41 -04:00
Tom Rothamel 089a6bccf2 Fix regression in Text.size()
Called the wrong function to unscale the result. Thansk to emmeken
for the fix. Fixes #752.
2015-10-04 23:49:42 -04:00
Tom Rothamel ddd9a702e5 Remove translation TODOS. 2015-10-04 17:17:42 -04:00
Tom Rothamel 4dceccc491 Change the launch key to f5. 2015-10-04 17:17:11 -04:00
Tom Rothamel 04c17a71a3 Merge pull request #741 from Diapolo10/update_finnish
Updated the Finnish translation
2015-10-04 17:14:55 -04:00
Tom Rothamel 4e381dcc22 Merge pull request #751 from ricpelo/launcher-hotkey
In Launcher, hotkey "r" runs the current project
2015-10-04 17:14:46 -04:00
Tom Rothamel 3f14961d0d Fix session["compile"]. 2015-10-03 23:28:40 -04:00
Tom Rothamel 4b867d4220 folders: Start work on file folders. 2015-10-03 01:52:44 -04:00
Ricardo Pérez cd9bac3052 In Launcher, hotkey "r" runs the current project 2015-10-01 15:17:48 +02:00
Tom Rothamel dec43b1f81 scriptedit: Add an api for retrieving the text of a line. 2015-09-30 23:35:33 -04:00
Tom Rothamel e408f297d9 linelog: Add the line log feature.
This is a way of retrieving the lines that have executed since the
last time the line log was cleared.
2015-09-30 23:08:31 -04:00
Tom Rothamel f0b90920bf gui: Display the skip_indicator screen if it exists. 2015-09-29 23:08:10 -04:00
Tom Rothamel fc7eccef70 Consider manual screen prediction to be slow prediction.
Since screens can be slow, and we need to take that into account.
2015-09-28 22:47:50 -04:00
Tom Rothamel 879fc8814c Defer prediction of the say screen.
This works better in the case where the say screen is complex
and hence slow.
2015-09-28 22:44:22 -04:00
Tom Rothamel 8a188c9c3f scriptedit: Avoid triggering the autoreloader. 2015-09-28 00:33:32 -04:00
Tom Rothamel 45e860458d scriptedit: Delete lines from files. 2015-09-28 00:10:02 -04:00
Tom Rothamel f22af1d7dc scriptedit: Remove the spurious Return statement from all_stmts. 2015-09-27 23:50:51 -04:00
Tom Rothamel 60371bead8 scriptedit: Remove code from the AST. 2015-09-27 23:34:31 -04:00
Tom Rothamel 89050fbac7 sl2: Avoid predicting unlikely loops.
These are loops inside an if block that currently evaluates to False.
In this case, we only evaluate the loop once, for performance
reasons.
2015-09-26 00:51:45 -04:00
Tom Rothamel 7ddb4bf602 Defer opening SubFiles until initial use.
This speeds up loading of assets from RPAs, since most Subfiles will
never be opened, but just passed to image/sound/etc. loading code.
2015-09-25 22:37:36 -04:00
Tom Rothamel 6fc1227cd3 Add the ability to add statements to a file.
This means opening the file, adding code to the right places,
and then updating the data structures so this can be done
repeatedly.
2015-09-25 00:50:57 -04:00
Tom Rothamel 49e544c5f1 Only add code loaded at init time to the lines data structure.
This prevents problems when generated code is added to the wrong
files and locations.
2015-09-25 00:50:23 -04:00
Tom Rothamel 5505cc53f0 Move the Line/lines data structure to scriptedit.
This is where most of the code that manipulates it will live.
2015-09-24 21:50:21 -04:00
Tom Rothamel 147b6c26de Merge branch 'release-6.99.6' 2015-09-22 20:53:01 -04:00
Tom Rothamel 984c0fcc29 Encode backup directory properly. 2015-09-22 20:52:25 -04:00
Tom Rothamel 8e1abf2b49 scriptedit: Add/adjust line numbers in the AST. 2015-09-22 00:22:07 -04:00
Tom Rothamel 76eb82f50b Start work on script editing support. 2015-09-21 23:29:46 -04:00
Tom Rothamel 6ed3affddf Fix ShowMenu()
It wasn't working when empty when used as the target of a button.
2015-09-20 22:59:02 -04:00
Tom Rothamel 8a32179792 Fix image fonts.
They don't need to be looked up using the scale.
2015-09-20 14:10:18 -04:00
Tom Rothamel b65c5de62d Add support for iconbuttons.
These are buttons that contain an icon and an optional caption.
We use these in the new gui a lot.
2015-09-20 00:15:48 -04:00
Tom Rothamel 8ec6174dc2 Move properties like action, hovered, etc. to button_properties.
This makes it easier to declare custom SL displayables that
wrap buttons.
2015-09-19 23:33:22 -04:00
Tom Rothamel 61dc7a33fa Document .add_prefix_style_properties.
Fixes a documentation problem.
2015-09-19 23:32:42 -04:00
Tom Rothamel 14c7a7d416 Extend fit_first to allow it to only adjust the width and height. 2015-09-18 23:44:47 -04:00
Tom Rothamel 906e4de0a5 Add renpy.get_widget_properties.
A function to get the properties passed to a widget. The main reason
for this is so that it can be passed to other widgets - for example,
the "who" widget's color can be used to set up a background.
2015-09-17 22:20:18 -04:00
Tom Rothamel 44ef126806 Bind bars to the gamepad. 2015-09-16 20:26:35 -04:00
Tom Rothamel 41a35618f4 Only count seen dialogue that's still in the game.
This makes the progress screen more accurate when the underlying
game changes.
2015-09-15 22:25:17 -04:00
Tom Rothamel d296d5c17c Bump version. 2015-09-15 00:22:04 -04:00
Tom Rothamel 21b9fc1453 Merge branch 'release-6.99.6' 2015-09-15 00:21:00 -04:00
Tom Rothamel 70bc84b394 Allow pad_ keysyms. 2015-09-14 21:06:55 -04:00
Tom Rothamel 04449bb37b Allow pad_ keysyms. 2015-09-14 20:44:19 -04:00
Tom Rothamel e1bb500e00 Merge branch 'release-6.99.6' 2015-09-14 01:39:05 -04:00
Tom Rothamel c54f3d4ce1 Add support for deleting tags. 2015-09-14 01:08:59 -04:00
Tom Rothamel a397f653d7 Generate .update.json files. 2015-09-14 00:57:42 -04:00
Tom Rothamel 0f8c0d30fd Allow AFM to advance through pauses. 2015-09-13 22:00:26 -04:00
javimat b77c540235 Update common.rpy 2015-09-13 15:34:48 -04:00
javimat e68986d59d Update Spanish translation of the template 2015-09-13 15:34:35 -04:00
Tom Rothamel 7541bc6f51 Properly blit text with outlined descenders.
Before, we wouldn't necessarily notice we were on the last line of
outlined text, and could fail to blit the very bottom of a line.
2015-09-13 15:34:25 -04:00
Tom Rothamel c6d003486c Fix color tint/shade. 2015-09-13 15:34:15 -04:00
javimat 08f8df326a Update common.rpy 2015-09-13 16:20:15 +02:00
javimat 702a4a8463 Update Spanish translation of the template 2015-09-13 10:57:23 +02:00
Tom Rothamel c77b0933c8 Properly blit text with outlined descenders.
Before, we wouldn't necessarily notice we were on the last line of
outlined text, and could fail to blit the very bottom of a line.
2015-09-12 22:47:05 -04:00
Tom Rothamel 46bdc6c703 Fix color tint/shade. 2015-09-11 22:54:04 -04:00
Tom Rothamel 4db4bc1836 Merge branch 'release-6.99.6' 2015-09-10 22:52:57 -04:00
Tom Rothamel 9e7e78ac79 Rescan script files after compile.
This prevents a crash that occured because the script files were
scanned before compile deleted unused rpyc files.
2015-09-10 20:45:17 -04:00
Tom Rothamel 671a76c184 text: Adjust line top and height to match adjusted text.
Fixes an issue where oversampled text would have descenders
cut off.
2015-09-10 20:03:29 -04:00
Tom Rothamel b2eb4d0783 text: Adjust line top and height to match adjusted text.
Fixes an issue where oversampled text would have descenders
cut off.
2015-09-09 23:47:05 -04:00
Tom Rothamel e0a7728f62 Fix lint issue w/ Korean translation. 2015-09-08 23:54:07 -04:00
Tom Rothamel 6bcca2e39c Allow define to set config and persistent variables.
Fixes #689 - ish.
2015-09-08 23:48:55 -04:00
Tom Rothamel 1fdce5897c Merge branch 'release-6.99.6' 2015-09-07 23:25:04 -04:00
Tom Rothamel a4bfc86668 Ensure make_style_backup is called in every translation. 2015-09-07 23:23:53 -04:00
Tom Rothamel 91e3f05093 Add renpy.session.
This is a place to store arbitrary data that persists through
restarts.
2015-09-07 12:51:08 -04:00
Tom Rothamel b095378f71 Represent lines in compiled files as objects. 2015-09-07 00:02:46 -04:00
Tom Rothamel 7ca8e480e0 render: Ensure subsurface remains within the pygame Surface. 2015-09-06 13:17:56 -04:00
Tom Rothamel 28e645720f render: Check the crop box is within the surface.
See: http://lemmasoft.renai.us/forums/viewtopic.php?p=385773#p385773
2015-09-05 22:20:25 -04:00
Tom Rothamel 40de88d213 Import pure-python packages from game/python-packages.
Fixes #731.
2015-09-05 21:46:40 -04:00
Tom Rothamel a4d54abf7c Deal with zero-width text. 2015-09-05 20:21:24 -04:00
Tom Rothamel 36b7d7813f text: Force absolutes to ints in scale_outline.
Makes sure everything else works.
2015-09-05 01:33:16 -04:00
Tom Rothamel 826cc817c8 text: Round oversampling down when scaling outlines. 2015-09-04 23:40:18 -04:00
Tom Rothamel 7ad0c85681 text: Support absolute sizing of outlines. 2015-09-04 21:58:53 -04:00
Tom Rothamel 122c974d95 text: Adjust spacing of drawable-res text to fill virtual-res box.
It's possible for drawable-res text to be bigger or smaller than
the virtual-res box. This can lead to ugliness in text layout, as
centered text will not be centered, margins will be uneven, etc.

This fix adds code that adjust glyph placement to ensure the
drawable glyphs fill the same place as the physical glyphs,
using techniques similar to kerning and line_spacing.
2015-09-03 23:37:35 -04:00
Tom Rothamel 4ce304afb6 Add the ability to draw a box where the virtual text goes. 2015-09-03 22:14:23 -04:00
Tom Rothamel 166929aaff Tweak to add script. 2015-09-02 21:47:02 -04:00
Tom Rothamel a6f97435a9 text: Adjust outline scaling.
The goal here is to retain the proportion of the various outlines, to
avoid the case where 1px and 2 px outlines, when scaled up by 1.5x,
become 1px and 3px, respectively.
2015-09-02 21:36:37 -04:00
Tom Rothamel 82afa0aa13 Fix rendering of fullscreen movies.
The size we had chosen to render at would not fill the screen,
previously.
2015-09-02 09:32:30 -04:00
Tom Rothamel 3a4f4e6ebd Better compute subsurface when blits go outside a Render.
Text drawn using the new rendering code can be drawn outside the
Render, due to the difference between virtual- and drawable-resolution
text layout. Subsurface would not crop to the intersection of the
crop-box and the render, which cut text off.

This changes to only crop to the crop-rect, which means that text
leaving the Render ist still drawn (as long as it's in the crop-rect).

See: http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=31311&start=120#p385132
2015-09-01 23:44:50 -04:00
Tom Rothamel b6a420ed52 Remove debug code. 2015-09-01 23:17:32 -04:00
Tom Rothamel af6991ab0f Add functions to synchronize local and Steam achivements. 2015-08-31 21:26:56 -04:00
Tom Rothamel 6d6261fced Remove debug-disabling of the big new feature.
😅
2015-08-30 23:10:35 -04:00
Tom Rothamel 7462532a77 Use virtual text size to compute screen placement.
A problem with the new text code is that the text can change its
virtual size. This can cause other layouts to jump around as the
screen is scaled.

To fix this, this change renders text twice, first at the virtual
size, and then at the drawable size. The first pass is used to
compute line breaking, and to get the size of the final Render.
Once that's done, the drawable size is used to draw cleaner text.

Fixes #728.
2015-08-30 19:49:30 -04:00
Tom Rothamel 52776d93b1 Add RENPY_ANNOTATE_CYTHON environment variable.
When given, this causes cython annotations to be generated.
2015-08-30 19:27:43 -04:00
Tom Rothamel 9723153455 Update changelog. 2015-08-29 17:05:34 -04:00
Tom Rothamel 6cc4ac5d8c Ensure files in the archive are not listed as common files.
This was causing random problems, most notably will an archived
images/ directory.

Fixes #726.
2015-08-29 16:54:32 -04:00
Tom Rothamel 75d9cdfc5d Update help, document controller support.
Fixes #724.
2015-08-29 11:17:26 -04:00
Tom Rothamel 43abcd902d Update DejaVuSans and include/use -Bold.
6.99.6 is focusing on text rendering, and having better rendering of
bold really contributes to that.

Fixes #727.
2015-08-28 21:58:07 -04:00
Tom Rothamel e93e58c0df Include possibly-focusable displayables in the focus order.
A possibly-focusable thing is a button/bar/etc that is currently
insensitive, but might change to become sensitive in the future.
We want to have those things reserve their place in the focus
order, so the thing with focus doesn't lose focus when
something else becomes focusable.

Fixes #725, maybe. This is my best guess as to what's going on
there.
2015-08-28 19:43:19 -04:00
Tom Rothamel a52135893c Do not round locations when subpixel is enabled. 2015-08-27 22:01:22 -04:00
Tom Rothamel 1e0a10a852 Properly compare Matrix2Ds.
Floating point precisions issues strike again!
2015-08-27 21:49:52 -04:00
Tom Rothamel 35eb168c41 Revert "Scale text sizes only down."
This reverts commit 52a0b874a3.

It seems like it makes things worse, not better.
2015-08-27 21:11:07 -04:00
Tom Rothamel f53461c207 Render text using drawable-aligned bilinear interpolation.
This is another attempt to fix Nyaatrap's problem. It's now
easy to align to drawable - and even if this fails to fix
the problem because their card is broken, it should fall back
to a reasonable rendering.
2015-08-27 20:58:47 -04:00
Tom Rothamel 35806f1897 Fix scaling of the screen. 2015-08-27 00:42:03 -04:00
Tom Rothamel 0dd0f37ebd Draw the screen at the drawable resolution.
This is intended to fix an issue reported by Nyaatrap, here:
http://lemmasoft.renai.us/forums/viewtopic.php?p=384227#p384227

where the new text rendering code would cause artifacts. My guess
is the artifacts were caused by rounding errors that meant the
text images were not the correct size. By drawing the screen
at the drawable resolution, we attempt to eliminate these
errors.
2015-08-26 23:49:03 -04:00
Tom Rothamel 52a0b874a3 Scale text sizes only down.
This should help ensure that text does not expand, and hence reduce
problems caused by rescaling text.
2015-08-26 21:58:32 -04:00
Tom Rothamel 0d98166503 Do not error out when drawing ruby text outside the bounds of the
text.

This is almost always visually spurious, but can happen due to scaling
of of bounding boxes of ruby text. This prevents such scaling from
causing errors.
2015-08-26 21:08:47 -04:00
Tom Rothamel 112eeb00fd Properly expand LGPL. 2015-08-25 10:21:19 -04:00
Tom Rothamel 424e90eeeb Fix problems with GLDraw.is_pixel_opaque and IMAGEDISSOLVE.
The problem was that IMAGEDISSOLVE would cause a render-to-texture,
which would use the buffer that is_pixel_opaque had been drawing
to, causing a problem.

We check for this case, and try again - there should be no
render-to-texture the second time around, since all such
rendering has been done.
2015-08-25 00:41:54 -04:00
Tom Rothamel 1c2b5f3361 Allow ImageDissolves to be used directly as masks. 2015-08-24 23:50:48 -04:00
Tom Rothamel a38a6c8c1f Remove obsolete debug code. 2015-08-24 23:33:03 -04:00
Tom Rothamel 060ac47872 Add button to copy tracebacks/parse errors to the clipboard.
This should make posting errors easier. Fixes #722.

Right now, this is only supported on windows/mac. Linux should work,
but appears to be having problems - perhaps with the relatively
large text pastes.
2015-08-23 15:20:47 -04:00
Tom Rothamel a7ebac3006 Return full path to error files.
This ensure that code that uses the file finds the right file.
2015-08-23 15:19:24 -04:00
Tom Rothamel e256c168f9 Round scaled fonts down to the nearest integer size.
This tends to shrink fonts, rather than expanding them - which looks
a little nicer, as it prevents ugly overlaps.
2015-08-23 13:36:46 -04:00
Tom Rothamel af04859f97 Bold text requires antialiasing.
It doesn't seem to work without AA, it's not worth doing the work
for a more complete fix, given how little non-AA text is used.
2015-08-22 22:04:49 -04:00
Tom Rothamel 18a06e88db Remove align_to_drawable methods.
Nearest-neighbor mode does the same thing, more reliably.
2015-08-22 21:38:47 -04:00
Tom Rothamel 46798413ed Draw drawable-resolution non-subpixel textures in nearest-neighbor mode.
This is mostly used by drawable-resolution text. Before this change,
the text (which was not generally drawable-aligned) might have
been bilinearly interpolated, which is less than ideal.
2015-08-22 21:29:15 -04:00
Tom Rothamel feec3f0dbb Add config variable to disable the transparent title.
This is intended for Ren'Py dev purposes.
2015-08-22 19:22:09 -04:00
Tom Rothamel 3b3c691a23 Add align_to_drawable method to renderers.
This is a method that, given virtual coordinates, returns the virtual
coordinates of the closest point in drawable space. This will be used
to eventually drawable-align text, even if the natural blit point is
not an integer pixel.
2015-08-21 22:22:29 -04:00
Tom Rothamel 5a3de5660a Fix Text.__unicode__ crash.
Checked the wrong type, and hence would crash if a text included a
Displayable in it.
2015-08-21 22:07:26 -04:00
Tom Rothamel 59a1ca923d Search images/ for missing files.
This should fix a common newbie problem, and also make referencing
stuff in the images directory easier in displayables.
2015-08-20 19:59:04 -04:00
Tom Rothamel 04942b371b Read gamecontrollerdb, and list attached devices.
This should make more devices work, and provide a path for diagnosing
and fixing other devices.

Also, avoid re-initializing game controllers.
2015-08-19 22:10:48 -04:00
Tom Rothamel db6918927c Add gamecontrollerdb.txt
From https://github.com/gabomdq/SDL_GameControllerDB.
2015-08-19 21:00:17 -04:00
Tom Rothamel c235f2b598 Fix safe mode on Windows, remove for Linux.
Both had been broken, and there doesn't seem to be a way to fix it
on Linux - but it's less necessary there.
2015-08-18 19:52:44 -04:00
Tom Rothamel dc834779fb Fix multiple typo-like bugs.
Fixes #720, Fixes #721. Thank you emmeken for finding this.
2015-08-17 22:28:44 -04:00
Tom Rothamel 3386e9f0aa Update docs. 2015-08-16 23:55:14 -04:00
Tom Rothamel 9ad4b3b0a9 Update changelog. 2015-08-16 23:50:20 -04:00
Tom Rothamel 3a179cca2c Add pad_enabled to the safe mode/shift+G menu.
This lets us deal with a small number of computers that have problems
scanning for joysticks and gamepads.
2015-08-16 20:25:19 -04:00
Tom Rothamel 0d8f470af6 Add a hook for mapping pad events.
Since someone is going to ask for it, might as well add the ability to
support it now.
2015-08-16 20:18:27 -04:00
Tom Rothamel 01c7d1d328 Document gamepad bindings. 2015-08-16 20:04:00 -04:00
Tom Rothamel b63078f414 Allow At to take transforms with parameters.
Fixes #719.
2015-08-16 19:56:29 -04:00
Tom Rothamel 27aaa0aab9 Merge pull request #698 from pr-yanka/pr-yanka-patch-1
Pr yanka patch 1
2015-08-16 11:14:49 -04:00
Tom Rothamel 6bd1ab30e8 Merge pull request #717 from RangHo/master
Fixed common.rpy
2015-08-16 11:14:16 -04:00
Tom Rothamel 2fae816769 Wrap shown transforms in an ImageReference.
Fixes #695.

The problem is that Ren'Py had no way of telling Transforms created by
an at-list from those supplied to renpy.show as input. The result is
that we'd get a stack of transforms, and then change the child the
entire stack, which could cause repeats in the transform stack
(see the bug).

This is fixed by wrapping Transforms passed to renpy.show in an
ImageReference, which makes it clear which are on the "outside"
and which are on the "inside" of the at_list.
2015-08-15 20:53:12 -04:00
Tom Rothamel b03201a7e2 text: Remove buggy and pointless line. 2015-08-14 00:47:07 -04:00
Tom Rothamel 1cfb2a2cd8 backup: Fix crash with archived files. 2015-08-14 00:15:12 -04:00
RangHo Lee 5854ca77d7 Fixed common.rpy 2015-08-13 21:05:41 -07:00
Tom Rothamel 657fdd5efd Add a way to disable rpy backups. 2015-08-13 23:47:12 -04:00
Tom Rothamel c1ed41f82d Ren'Py will automatically backup .rpy files.
Backup is done if script_version.{rpy,rpyc,txt} is not present,
and at least one .rpy file has changed (as compared to the
corresponding .rpyc files).

Backups are placed in the "backups" directory underneath the
user-global saves directory.

Fixes #687.
2015-08-13 23:18:26 -04:00
Tom Rothamel b331e6f61b Controller: Fix dpad typo. 2015-08-12 23:08:51 -04:00
Tom Rothamel 21fe9c1094 Fix controller support. 2015-08-12 22:57:03 -04:00
Tom Rothamel 56bb1c8f15 Respect config.autosave_slots.
Fixes #711.
2015-08-12 22:37:06 -04:00
Diapolo10 02a6fa0c0f Updated the Finnish translation
I have updated the Finnish translation to the most recent version of
Ren'Py.
2015-08-12 19:53:46 +03:00
Tom Rothamel 48f1e1e9c8 Add config.after_replay_callback. 2015-08-11 09:11:26 -04:00
Tom Rothamel 0eddb65538 Fix mouse wheel support.
It was broken by the previous commit.
2015-08-10 23:24:20 -04:00
RangHo Lee cdbac9af62 Merge pull request #2 from renpy/master
Updating repo
2015-08-09 10:31:16 -07:00
Tom Rothamel 22a1bc60de Filter events at pygame level to only those Ren'Py uses.
There are cases (including joysticks and touch events) where SDL2
generates multiple events for every event we're interested in. For
example, it generates a touch and mouse event for each touch. We
filter events to the list of events we're interested in.
2015-08-09 09:56:01 -04:00
Tom Rothamel 53af0a28ee controller: pad_enabled preference. 2015-08-08 09:04:10 -04:00
Tom Rothamel 7e5078996a controller: Bind gamepad event names to Ren'Py event names.
This make it possible to play with the gamepad.
2015-08-08 08:59:09 -04:00
Tom Rothamel bafc714076 controller: Generate controller events. 2015-08-07 23:18:30 -04:00
Tom Rothamel acd7de7524 Support multiple names in an EVENTNAME event. 2015-08-06 22:59:15 -04:00
Tom Rothamel dc73a22849 Remove joystick support.
This is getting rid of the old code so it can be replaced with a
new system based on the SDL2 controller code.
2015-08-06 22:08:08 -04:00
Tom Rothamel bf8b7fece6 Use pygame_sdl2.event.register to allocate events. 2015-08-04 23:17:49 -04:00
Tom Rothamel eb3c2f541d Remove NoTransition, replace with Pause in docs.
Since NoTransition never existed, there's no need to add it, since
Pause does the same thing.

Fixes #709.
2015-08-03 22:13:33 -04:00
Tom Rothamel 73f0a85f70 Add new stuff to pyanalysis. 2015-08-03 22:09:41 -04:00
Tom Rothamel 8a16e1b018 Add NoTransition to the default store, since it was used in docs. 2015-08-03 22:06:03 -04:00
Tom Rothamel 9c65db7e6d Enable HighDPI on Desktop. (Retina macs.) 2015-08-03 22:02:30 -04:00
Tom Rothamel 3cd3f8ceee text: Fix include of displayables in oversampled/HighDPI text. 2015-08-02 08:44:57 -04:00
Tom Rothamel 5d3d3506be text: Scale text tags. 2015-08-01 12:06:30 -04:00
Tom Rothamel 1349ab7ad9 Make drawable resolution configurable. 2015-07-31 11:42:00 -04:00
Tom Rothamel 849c1eca2c text: Allow imagefonts to work with oversampled text. 2015-07-31 11:17:37 -04:00
Tom Rothamel ed0e68c7e1 Do not run overlay function during startup.
This fixes compatibility with older Ren'Py games, that might not
intialize the overlay until the splashscreen or game start.
2015-07-31 00:03:35 -04:00
Tom Rothamel 9198f4a610 Oversample text.
That is, render text at the drawable resolution rather than the
virtual resolution.
2015-07-30 23:52:53 -04:00
Tom Rothamel 1ebbcb32ef Document render_to_texture changes. 2015-07-30 23:52:40 -04:00
Tom Rothamel 31384e8b7f Remove now-invalid render_to_texture optimization.
Now that RTT textures are created at the drawable resolution,
it isn't valid to reuse a blitted texture instead of RTT-ing.
2015-07-29 23:49:06 -04:00
Tom Rothamel 00efc0086f Remove obsolete/unused code. 2015-07-29 23:48:52 -04:00
Tom Rothamel c6c1f45e0a Render-to-texture at the drawable resolution.
When an image is zoomed down and the drawable screen is bigger than
the virtual screen, Ren'Py will draw the additional information
present in the image. This information was being lost during RTT
operations that occured at the virtual resolution. (This usually
manifested as a blurry dissolve.)

Now, RTT occurs at the drawable resolution, and so the information
is shown to the player.

This also adds the information needed to render text at drawable
resolution.
2015-07-29 23:18:15 -04:00
Tom Rothamel 610565756a Make screenshot work with HighDPI. 2015-07-28 22:51:30 -04:00
Tom Rothamel 7e2df8223b Add RENPY_FAKE_HIGHDPI.
This is an environment variable that makes testing HighDPI more
convenient. For example, setting RENPY_FAKE_HIGHDPI=2 simulates
a 2x retina screen.
2015-07-28 22:46:13 -04:00
Tom Rothamel 749e99e0f3 Initial support for HighDPI/Retina on iOS. 2015-07-28 22:39:28 -04:00
Tom Rothamel 274d8cfc35 Merge pull request #702 from Rikxz/patch-1
Typofix on docstring
2015-07-28 00:23:47 -04:00
Tom Rothamel c1d3418a1b Disable the load screen while in replay. 2015-07-28 00:22:36 -04:00
Tom Rothamel e0dfd732af Fix typo. 2015-07-28 00:17:53 -04:00
Tom Rothamel 00e4d7d30e Predict icons. 2015-07-28 00:17:41 -04:00
Tom Rothamel d685425752 icon: Register as custom sl displayable.
This also fixed a few things about how we register custom sl
displayables.
2015-07-28 00:03:20 -04:00
Tom Rothamel 3b7c797e11 Add add_property_group to SL2. 2015-07-27 23:39:48 -04:00
Tom Rothamel a8a809702d Move SL2 properties to their own file. 2015-07-27 22:51:37 -04:00
Tom Rothamel 081c604d88 Automatically add ui and positional properties to sl2 displayables.
This removes a lot of redundant code.
2015-07-27 22:50:53 -04:00
Rikxz 1553c90e41 Typofix on docstring
"The programmatic equivalent of the show screen statement." became "The programmatic equivalent of the call screen statement." for def call_screen
2015-07-27 21:43:28 -05:00
Tom Rothamel 3298cdd5fe Add Icon class.
This is the start of a system that will use scalable and recolorable
icons to support the new GUIs.
2015-07-26 23:25:08 -04:00
Tom Rothamel 1a61d24568 Add Render.zoom. 2015-07-26 22:56:27 -04:00
Yana 4aeae19752 fixed previous commit 2015-07-26 12:23:58 +03:00
Yana 7bf315db29 fixed wrong translation
I am guarantee that it is correct now like russian user. ;)
2015-07-26 10:42:09 +03:00
Tom Rothamel 1b4044e2f9 Analyze [:] properly. 2015-07-25 13:06:27 -04:00
Tom Rothamel 0f5eb2e4ac Document renpy.register_sl_displatyable.
This is a way of creating a new screen language statement that
returns a creator-defined displayable.

This is necessary since register_sl_statement doesn't integrate
closely enough with SL to allow proper style handling while still
allowing the screen to be optimized.
2015-07-25 12:34:33 -04:00
Tom Rothamel 5835888c04 sl2: Do not reuse displayables if style_prefix changes. 2015-07-25 11:54:36 -04:00
Tom Rothamel e18af36f20 Frame now uses style.child if set.
This allows a Frame to be a top-level object that changes to
multiple images.
2015-07-25 11:51:38 -04:00
Tom Rothamel daecfc8d27 Add renpy.split_properties.
This is a function that can split properties based on a prefix.
2015-07-24 22:05:49 -04:00
Tom Rothamel 4784deb4a4 Allow style_group to be given to a screen.
This is the same as giving it to every top-level child of that
screen, but might be a bit more convenient.
2015-07-23 21:15:33 -04:00
Tom Rothamel b5a97a75e1 Support imagebuttons w/o a hover_image.
Fixes #690.
2015-07-22 19:01:02 -04:00
Tom Rothamel 6206427e1a Merge pull request #692 from caryoscelus/master
fix (py_)eval: allow evaling code objects
2015-07-22 11:02:34 -04:00
caryoscelus 03eee36de1 fix (py_)eval: allow evaling code objects
The reason for this is that otherwise eval function available in
.rpy files is not fully compatible with regular python eval.
2015-07-22 15:07:11 +03:00
Tom Rothamel dd1ca318e0 Document the Color class. 2015-07-22 00:06:10 -04:00
Tom Rothamel 691cdc0a7f Move Color into its own module.
Since it's getting kind of large.
2015-07-21 22:50:12 -04:00
Tom Rothamel 8d59605aa9 More Color methods, and some renaming. 2015-07-21 00:30:28 -04:00
Tom Rothamel c48baeb6a4 More color methods. 2015-07-21 00:26:22 -04:00
Tom Rothamel ddc1c490db Allow Colors to be multiplied by im.matrix-es. 2015-07-20 23:55:27 -04:00
Tom Rothamel f7914576aa More Color methods. 2015-07-20 23:45:32 -04:00
Tom Rothamel 27eb710a7c Add the Color class.
This is a class that represents a color. While functioning as a
tuple, it also has methods and properties that allows one to
convert to and frop other color systems.
2015-07-20 22:32:00 -04:00
Tom Rothamel 8c37a1e7d5 sl2: Displayables take "arguments" and "properties" parameters.
Fixes #675.
2015-07-19 22:05:42 -04:00
Tom Rothamel a9d67162e8 Bump version. 2015-07-19 22:02:09 -04:00
Tom Rothamel a5c815f889 Fix unmute preference. 2015-07-18 16:20:04 -04:00
Tom Rothamel ac272df001 Fix typo. 2015-07-17 21:24:58 -04:00
Tom Rothamel 89b344fb70 Add roles to changelog. 2015-07-17 21:24:29 -04:00
Tom Rothamel 77bf797d18 Add _get_voice_info() to the changelog. 2015-07-17 21:19:15 -04:00
Tom Rothamel 4887b172f6 Document _get_voice_info. 2015-07-17 20:56:06 -04:00
Tom Rothamel 10674b0426 Use nearest neighbor for DISSOLVE and IMAGEDISSOLVE. 2015-07-16 17:22:05 -04:00
Tom Rothamel d253606562 Add _get_voice_info().
This is a function that returns an object that represents the
voice that is being played.
2015-07-14 18:41:16 -04:00
Tom Rothamel 5da52a7ad2 Fix mute documentation. 2015-07-14 00:18:44 -04:00
Tom Rothamel af5c549bff Document config.adjust_view_size. 2015-07-14 00:10:12 -04:00
Tom Rothamel a6959a3743 Pass "<mixer> volume" value to SetMixer.
Fixes #685.
2015-07-13 22:09:34 -04:00
Tom Rothamel 8774e58b10 Re-ask for editor selection as necessary.
If the user is trying to edit a file but has selected the None
editor, they're probably questioning the wisdom of their initial
decision. Prompt again for their selection.
2015-07-13 21:03:21 -04:00
Tom Rothamel d111e05674 Fix tutorial translation ids. 2015-07-13 17:50:13 -04:00
Tom Rothamel 531f39d516 Merge pull request #684 from nxcrft/pull-1
Fix a typo.
2015-07-13 17:41:36 -04:00
Tom Rothamel 58ddd537aa Fix packaging of template games. 2015-07-13 17:39:26 -04:00
Konstantin Nikolayev 203b0f9710 Fix a typo. 2015-07-13 19:17:02 +03:00
RangHo Lee 71a2961ab3 Merge pull request #1 from renpy/master
Updating repo
2015-07-13 09:04:58 -07:00
Tom Rothamel c553d7206d Update changelog to include translations. 2015-07-12 18:58:25 -04:00
Tom Rothamel fdcb2142d6 Do not apply with None to layers that already have a transition.
Doing so will change what the transition applies to.

See: http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=33077
2015-07-11 22:15:31 -04:00
Tom Rothamel 562651371d Move call to renpy.execute_default_statement out of common code.
It's already being called by call_replay, so this prevents it from
being called twice and causing an error.

Fixes #651.
2015-07-11 20:28:47 -04:00
Tom Rothamel be7ed3fb7e Merge pull request #674 from bbs3223474/master
Add simplified_chinese template.
2015-07-11 12:05:08 -04:00
Tom Rothamel 8ff7e6d6df Check in updated/fixed docs. 2015-07-10 22:55:53 -04:00
Tom Rothamel 859a4f316e Update changelog. 2015-07-10 22:52:55 -04:00
Tom Rothamel 7102e8788c Drop support for reloading on mobile platforms.
Reloading wouldn't do much, since the underlying files do not
change. Reloading also requires us to back up Ren'Py, which
is moderately expensive, so eliminating that reduces start
time.
2015-07-10 21:38:44 -04:00
bbs3223474 8909283061 Fix 2015-07-10 22:12:14 +08:00
bbs3223474 3215946b58 Complete translate all scripts 2015-07-09 22:30:27 +08:00
Tom Rothamel 6b4df749d2 Add Canvas.get_surface().
This provides an official method to get a pygame surface the user can
draw into.
2015-07-09 00:53:11 -04:00
Tom Rothamel 8caf6db689 Add Canvas.get_surface(). 2015-07-09 00:51:50 -04:00
Tom Rothamel 598ae2b07b Copy start times when copying a MultiBox.
This fixes a bug that prevented the children of a copied Fixed from
getting events.

see: http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=32872
2015-07-09 00:38:20 -04:00
Tom Rothamel af8aaf176b Add config.nearest_neighbor.
Which enables nearest-neighbor filtering by default.
2015-07-08 22:59:17 -04:00
Tom Rothamel 01c0dcf7c5 Add the ATL update event.
This event is triggered when a screen is updated without being shown
or replacing another screen, such as when the game is loaded or when
styles or translations change.
2015-07-08 21:56:12 -04:00
bbs3223474 3c19c4d866 fix some problems 2015-07-09 09:49:29 +08:00
bbs3223474 5855c622a4 Translated and added statements 2015-07-08 11:59:00 +08:00
bbs3223474 77b6e739a2 Add functions and translate comments 2015-07-08 11:45:31 +08:00
Tom Rothamel 2e963045b4 New Mute actions and preferences.
* SetMute
* ToggleMute
* Preferences("all mute", ...)
2015-07-07 22:54:55 -04:00
Tom Rothamel 3e7476020f Various volume/mixer-related improvments.
* When muted, the volume returns 0
* Changing the volume to a non-zero value unmutes the mixer.
* Init all mixers.
* Get a list of mixer names.
2015-07-07 22:54:25 -04:00
bbs3223474 b1d84e3d51 Chinese translated 2015-07-07 16:27:51 +08:00
Tom Rothamel 35b22b1eee sl2: Various transclusion fixes.
The new interface execises transclusion, and bugs were found.
2015-07-04 22:42:15 -04:00
Tom Rothamel 52f6d70cf3 sl2: Add can take None, in which case nothing is added.
This allows code to take a displayable or None, without having to
be enclosed in an if statement - it makes customizing screens a
little easier.

Fixes #677.
2015-07-03 23:56:05 -04:00
Tom Rothamel 0ec79a2388 When backing up objects, pickle with HIGEST_PROTOCOL.
This is necessary to properly pickle objects that contain Styles.
2015-07-03 22:57:31 -04:00
Tom Rothamel c0ce6df88b iOS IAP fixes and improvements.
- Fixes purchasing, which was broken because the products weren't
  being validated on startup.

- Improves things in general - iOS will now only prompt for the
  username and password when the user actually enters the IAP
  screen.
2015-07-02 23:02:40 -04:00
Tom Rothamel 9c33391720 Add renpy.predicting().
A function that returns True if Ren'Py is currently predicting.
2015-07-02 23:02:18 -04:00
bbs3223474 47a6e827e2 Add simplified_chinese template.
I noticed that Ren'py did not have any simplified-chinese template in
GitHub, only one in our local blog, made by a Chinese guy who didn't
want to upload his work to GitHub. So I made a translation for free and
uploaded to Git.
2015-06-30 20:15:13 +08:00
Tom Rothamel 4b09cf1828 Add renpy.return_statement().it 2015-06-29 19:51:39 -04:00
Tom Rothamel 89e8d79b63 Fix syntax errors in Korean translation. 2015-06-29 09:28:25 -04:00
Tom Rothamel 3024d49a57 Prevent duplicate prints on iOS. 2015-06-28 22:48:17 -04:00
Tom Rothamel 275e6ddf8c Remove translation TODOs. 2015-06-27 15:50:30 -04:00
Tom Rothamel 9436cb8386 Merge pull request #673 from RangHo/master
added korean translation for tutorial
2015-06-27 15:46:40 -04:00
Tom Rothamel 593a37af83 Merge pull request #672 from bbs3223474/patch-1
Fix Chinese translation of "Nightly".
2015-06-27 15:45:49 -04:00
RangHo Lee abca0c4083 added new font file 2015-06-27 10:37:10 -07:00
RangHo Lee 5d70224fa7 translation completed 2015-06-27 10:34:46 -07:00
Huang Junjie e3e0e9338d Fix Nightly's translation 2015-06-27 14:30:39 +08:00
Tom Rothamel cbbd1b58c0 Add _dismiss_pause.
This controls if the user can dismiss pauses and transition
pauses.

Fixes #671.
2015-06-26 09:09:00 -04:00
Tom Rothamel e3509f1368 Add _skipping.
This is a store variable that enables skipping (defaulting) to
true, allowing skipping to be disable for portions of the
game.
2015-06-26 09:00:56 -04:00
Tom Rothamel 097d3973a0 Add config.minimum_presplash_time.
This lets the user ensure that the presplash image is shown for
an amount of time, so it doesn't need to be duplicated in the
splashscreen.
2015-06-25 23:18:24 -04:00
Tom Rothamel 8048c7d94a Kill of presplash at interface start.
This is after various expensive analyses take place.
2015-06-25 23:14:17 -04:00
Tom Rothamel a26a5bd42f Rewrite presplash to use pygame_sdl2.
This lets us get rid of the crazy old presplash system.
2015-06-25 23:02:40 -04:00
Tom Rothamel a9ca5b03de Detects loops of recursive styles.
Prevents a possible segfault.
2015-06-25 01:04:15 -04:00
Tom Rothamel 7de4bb96cd Only mark style as built on successful build.
This prevents Ren'Py from producing weird errors caused by a
half-built style, which can occur if the build takes place
in a try-except block.
2015-06-25 00:53:35 -04:00
Tom Rothamel 0484e3f091 Merge pull request #669 from asfdfdfd/focus_mask_callable_fix
Fix callables in focus_mask.
2015-06-24 22:04:41 -04:00
asfdfdfd e2ace16bfc Fix callables in focus_mask.
focus_mask tried to use callable as displayable.
2015-06-25 00:34:54 +03:00
Tom Rothamel b93a106c1c Allow Function to restart the interaction. (Defaults to true.)
Fixes #656.
2015-06-23 08:22:15 -04:00
Tom Rothamel b42a0a3b7a Avoid importing/including EasyDialogs.
We only use EasyDialogsWin, so there's no need for the other
package.

Fixes #665, hopefully.
2015-06-22 21:44:07 -04:00
RangHo Lee 29e4fe5616 remove period 2015-06-21 21:18:57 -07:00
RangHo Lee 70d2778754 added part of the korean translation for the tutorial game 2015-06-21 11:32:57 -07:00
Tom Rothamel 893a27fca4 Clean RAPT, rather than rebuilding it.
This generally speeds up the distro process.
2015-06-21 12:35:52 -04:00
Tom Rothamel 8ec1a6e17f Only use build_cache when distributing Ren'Py.
It really only makes sense when building Ren'Py, and for other
projects will slow things down for little benefit.
2015-06-21 01:25:48 -04:00
Tom Rothamel 979ae96475 Use hash.txt instead of version.txt.
This makes Ren'Py work with the new build caching code.
2015-06-21 01:20:56 -04:00
Tom Rothamel e035918f04 Avoid generating packages that haven't changed.
This massively speeds up the build process, since renios and the
editors usually don't change between releases.
2015-06-21 01:11:26 -04:00
Tom Rothamel b5eab3f362 [Rejected] Code to hash file lists to speed up build.
This doesn't seem to work well, since the file lists change too
much between builds for these optimizations to be useful.
2015-06-20 23:32:37 -04:00
Tom Rothamel 3a41ad4469 Include Ren'Py in SDK distributions.
Whoops. ;-)
2015-06-20 21:56:20 -04:00
Tom Rothamel e93a8a594b Stop documenting ios-presplash.
With the changes to iOS support made yesterday, the presplash
image is no longer displayed on iOS - the Launch Image should
suffice.
2015-06-20 15:09:23 -04:00
Tom Rothamel 16750f2437 Merge pull request #663 from caryoscelus/master
launcher: fix arabic front_page
2015-06-19 14:28:47 -04:00
caryoscelus dc2ba0eb7f launcher: fix arabic front_page 2015-06-19 19:31:14 +03:00
Tom Rothamel 707de937a2 Merge pull request #662 from renoa/patch-16
translated android.rpy and front_page
2015-06-19 08:58:24 -04:00
Renoa e407b8a59e Update front_page.rpy 2015-06-19 09:13:55 +03:00
Renoa 57e73ebc6e Update android.rpy
added arabic translation
2015-06-19 09:03:37 +03:00
Tom Rothamel 5259f93472 Allow the creator to select how fonts are hinted.
Closes #650.
2015-06-18 19:20:05 -04:00
Tom Rothamel 218bb0a42b Fix renpy.pop_call also showing up as pop_return in the docs. 2015-06-18 00:26:02 -04:00
Tom Rothamel 290cab6832 Add no-rapt option.
To slightly speed up build.
2015-06-18 00:22:41 -04:00
Tom Rothamel 9d98e8541e Fix overly-matching glob. 2015-06-17 22:36:38 -04:00
Tom Rothamel e2ff897bb7 Avoid compiling/distributing binaries for template games.
This shrinks the distro by a bit, and speeds up build.
2015-06-17 22:28:32 -04:00
Tom Rothamel ae4e58c657 Fix rmpersistent.
Moving the evaluation of arguments later meant persistent data
would be saved when the game quit. This fixes that by adding a
flag that controls if persistent data is saved.
2015-06-17 21:18:31 -04:00
Tom Rothamel a0e7822635 Analyze parameters once per screen.
Analyzing parameters multiple times caused the creation of a new
global_constant set each time. If that was changed by the
parameters, the analysis would never reach a fixed point,
causing an infinite loop.
2015-06-16 21:28:44 -04:00
Tom Rothamel e211f07d26 Add missing colon. 2015-06-16 11:44:45 -04:00
Tom Rothamel 4a264851ea Buy default, force recompile on build.
This will ensure that the various .rpyb files are emptied of legacy
code, and that they all reflect the version of Ren'Py the game
has been built with.

Fixes #660.
2015-06-15 22:28:40 -04:00
Tom Rothamel 5833e8d010 Merge pull request #661 from Zigmut/patch-1
Update updater.rpy
2015-06-15 16:07:24 -04:00
Zigmut ba36763539 Update updater.rpy
Update the french translation
2015-06-15 15:03:09 +02:00
Tom Rothamel 36e09691dc Various minor performance boosts.
At this point, the vast majority of the script load time is in the
unpickler - we're going to have to address that if we want the script
to load any faster.
2015-06-15 00:18:33 -04:00
Tom Rothamel 445f048ba8 Avoid storing next_node in a save. This prevents overly-large saves
when a context is saved.
2015-06-14 19:24:16 -04:00
Tom Rothamel f4bac1768f Merge pull request #654 from caryoscelus/master
add missing parentheses in setuplib.py and remove old README
2015-06-14 10:04:56 -04:00
Tom Rothamel caaf1e6a05 Remove call to pss.quit at exit.
This was causing pulseaudio to lock up in a rare circumstance, and
doesn't really do much positive good, as the audio system will
terminate as the process quits.

Closes #658.
2015-06-14 09:59:30 -04:00
Tom Rothamel f6c8ed43e5 Properly copy transcluded screens. 2015-06-13 21:36:13 -04:00
Tom Rothamel ed7546507d Fix tyop. 2015-06-13 21:35:59 -04:00
Tom Rothamel 97ddbf8e49 Allow CallException to be pickled.
This likely fixes the problem found in this thread:
http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=32478
2015-06-13 21:26:50 -04:00
Spiky Caterpillar c4a134b432 Changes audio.py to work around an indefinite lockup that occurs if you
try to quit while Pulseaudio is locked.

To replicate the lockup:

startx as two different users.
Do something that locks the sound card as user1 (say, playing a pile of mp3s
through mpg321)
As the other user, start and then quit a Ren'Py game.

Result: strace will show the Ren'Py game sitting there waiting indefinitely
for a futex until such time as mpg321 releases the sound card.
2015-06-12 01:20:26 -07:00
Tom Rothamel 327482f9d1 Use the digest of the script files to invalidate screens.rpyb.
This makes the caching of the screen analysis relatively
safe - if the Ren'Py version or the screens/init code/whatever
changes, the analysis will be performed again.

(The only potential problem is if the creator conditions renpy.const
or renpy.pure on init code - and in that case, they deserve what's
going to happen.)
2015-06-11 23:06:35 -04:00
Tom Rothamel 729ce82bae Replace script_version.rpy(c) with script_version.txt.
This avoids a problem where script_version is created on distribution,
requiring Ren'Py to load it in, thus causing the various caches to
have to be updated and rewritten.
2015-06-11 21:50:35 -04:00
Tom Rothamel 0b450d9ace Improve sl2 performance.
This changes the way we execute SL2 to try and improve performance,
compared to the previous version. The two big changes are:

* Avoid copying screens just to analyze them, although we will
  load a copy of the cached analysis.

* Avoid copying screens that are used or transcluded - instead,
  we make two copies of the screen (one where the transclude is
  const, and one where it's not) and use the appropriate one.
2015-06-10 23:38:28 -04:00
Tom Rothamel 5736ce1a16 Actually sort screens for analysis/prep. 2015-06-10 23:28:29 -04:00
Tom Rothamel 74c840b8c6 Ensure prepare_screens calls analyze_screens when necessart.
That is, whenever at least one new screen comes into existence.
2015-06-09 18:38:29 -04:00
Tom Rothamel 06d371209c Topologically sort screens.
This allow us to prepare screens in a sensible order, such that
a dependency is prepared before the screens it depends on.
2015-06-09 18:26:12 -04:00
Tom Rothamel d2cbfd2a35 Cache analysis of screens.. 2015-06-09 00:32:28 -04:00
Tom Rothamel 57f4fe43be Break screen analysis out into its own phase. 2015-06-08 23:39:49 -04:00
Tom Rothamel ce8f837aee Argument parsing - probably. 2015-06-08 23:36:17 -04:00
Tom Rothamel ab45fc780d Analyze and prepare screen variants.
This change ensures that the variants are compiled all at once when
args.compile is true, which is necessary to ensure that all the code
is placed into the analysis and ast caches.
2015-06-08 22:01:31 -04:00
Tom Rothamel 64be59df5a Make a transcluded copy of each screen for analysis.
This allows screens to be analyzed completely independently
of each other. (This is intended to make caching the analyzed
screen possible.)
2015-06-07 23:28:03 -04:00
caryoscelus ccbe692e69 remove outdated README
build instruction is in main README.rst anyway
2015-06-07 15:53:15 +03:00
caryoscelus 4cd51dffc3 add missing parentheses in setuplib.py 2015-06-07 15:38:12 +03:00
Tom Rothamel 2260874891 Fix lint.
Lint needs to run while the list of statements still exists.
2015-06-07 00:59:13 -04:00
Tom Rothamel a1abfb9c1a Fix argument parsing fix. 2015-06-07 00:40:11 -04:00
Tom Rothamel fd6af5655a Fix argument parsing.
* The command was being placed into a list, causing a crash.
* Returning from main.main would cause a loop - we need to renpy.quit.
2015-06-06 22:23:05 -04:00
Tom Rothamel 9aa08acb92 Bump version to 6.99.5. 2015-06-06 22:22:03 -04:00
Tom Rothamel 0e255aca7f Index archives before scanning through them.
Fixes a problem that prevented Ren'Py from loading scripts from
archives.
2015-06-06 21:39:00 -04:00
Tom Rothamel c3a54e3854 Ensure every screen is analyzed at least once. 2015-06-05 23:16:52 -04:00
Tom Rothamel f24821d53b Argument handling improvements.
- Argument handling now occurs after screens are compiled.
- Commands that require a recompile now set args.compile.
2015-06-05 21:52:05 -04:00
Tom Rothamel 3d768959c6 Store analysis information in DeltaSets.
A DeltaSet stores the difference between its contents and an
underlying set. This makes the DeltaSet much smaller than the
backing set, making it easier to store and faster to pickle
and copy.
2015-06-04 22:28:33 -04:00
Tom Rothamel 03fcefe1a7 Avoid scanning the list of files multiple times. 2015-06-03 23:53:51 -04:00
Tom Rothamel 24037ed374 Avoid looping over all_stmts multiple times. 2015-06-03 23:51:06 -04:00
Tom Rothamel 1fe8615fdf Optimize taking the translation.
This saves another second or two.
2015-06-03 22:32:56 -04:00
Tom Rothamel 9030483ff6 Avoid creating temporaries when running Node.get_children.
This seems to save about a second.
2015-06-03 22:31:50 -04:00
Tom Rothamel 43980d614f On mobile, log startup times to stdout. 2015-06-03 21:56:56 -04:00
Tom Rothamel f3e306d987 Remove debug print. 2015-06-03 00:19:15 -04:00
Tom Rothamel 736d5b5749 Avoid (re)analyzing literals for constness.
A literal is always const, so by using ast.literal_eval to determine
what is literal, we can avoid some analysis.
2015-06-03 00:05:06 -04:00
Tom Rothamel e6f192523d Store pyanalysis ASTs in a file.
This prevents us from having to do expensive parsing at runtime.
2015-06-02 23:51:29 -04:00
Tom Rothamel 52dbf270bf Move bytecode.rpyb into the cache/ directory.
The cache directory is for generated files that speed up Ren'Py but
don't cause incorrect behavior when omitted, so it makes sense to
put bytecode.rpyb there.
2015-06-02 22:40:04 -04:00
Tom Rothamel de2b243690 Cache compilation to AST.
This is intended for performance reasons. In a large game, it
reduces the time it takes to prepare screens from 4s to 1s.
(And the interim results can be stored on disk, perhaps.)
2015-06-01 23:14:57 -04:00
Tom Rothamel 3e52e4d8d2 Add RENPY_RPYC_EXCEPTIONS.
This forces Ren'Py to report exceptions during RPYC load.
2015-06-01 22:04:13 -04:00
Tom Rothamel 243a4fe816 atl2: RawStatement inherits from object rather than Object
Until we need the upgradability Object provides, there's no
reason to pay its price in load time.
2015-06-01 22:02:18 -04:00
Tom Rothamel c687a1f522 Remove __setstate__ from AST nodes in favor of __new__.
This is for performance reasons. __new__ only needs to initialize
default values, while setstate has to initialize every value.
2015-05-31 11:24:24 -04:00
Tom Rothamel 634ec1d217 Then->than
Per miyod @ http://lemmasoft.renai.us/forums/viewtopic.php?f=32&t=32359
2015-05-31 10:03:54 -04:00
Tom Rothamel 9c922dea02 Comment out script performance test code. 2015-05-31 00:55:35 -04:00
Tom Rothamel 80924ee921 script: Store translation-transformed script in .rpyc file.
This (plus other changes) speeds up script loading.
2015-05-30 23:53:36 -04:00
Tom Rothamel c6ab27ab2a script: Introduce the rpyc2 format.
While rpyc1 only supported a single representation of the script,
rpyc2 supports multiple representations. This will make it possible to
store both the original script, and a transformed version of the
script - allowing us to avoid such transformations at runtime.
2015-05-30 21:51:04 -04:00
Tom Rothamel b9f83c1502 Include PyCode hashes in .rpyc files.
The prevents us from having to hash every PyCode after it is
loaded.
2015-05-30 15:51:23 -04:00
Tom Rothamel 68c1fbf0d2 Make the number of quicksave slots configurable.
While we're at it, document various aspects of the save system.

Fixes #648.
2015-05-29 19:32:54 -04:00
Tom Rothamel e2e165ce4b Add the init label statement.
This defines a label in an init parser context, so that
the style/image/define/etc statements inside will only
be run if the label is called.

This is intended to be part of the new theme system, allowing
a theme to be defined using style statements. It's not intended
for creator use.
2015-05-28 21:28:23 -04:00
Tom Rothamel 442cf570f9 Allow renpy.{invoke,call}_in_new_context to run at init time. 2015-05-28 21:28:03 -04:00
Tom Rothamel d81ea29ed8 Set build.exclude_empty_directories to False for Ren'Py itself.
This allows Ren'Py to distribute the empty images/ directories,
which we want to exist so that it can be added to new games.
2015-05-26 17:52:09 -04:00
Tom Rothamel 67d72bd1da Update changelog. 2015-05-24 17:07:15 -04:00
Tom Rothamel d0286a0c33 Fix re-rendering of Flatten.
Fixes #641 completely.
2015-05-24 16:50:45 -04:00
Tom Rothamel 372c302d37 Merge pull request #645 from baekansi/master
Update Korean translations
2015-05-24 02:23:55 -04:00
baekansi c5a9d011cc Update Korean translations 2015-05-24 13:46:54 +09:00
Tom Rothamel bb33778aba Only consider exact matches when using the images directory.
Fixes #644.
2015-05-23 22:54:50 -04:00
Tom Rothamel a41c83fc3a Fix next vs next_unlocked bug in gallery.
The sense of a test was inverted, making next go to the next
unlocked image, and next_unlocked go to the next image period.
2015-05-23 22:32:28 -04:00
Tom Rothamel 3f3b46c109 Account for outlines when allocating Text textures.
Fixes #639.
2015-05-22 22:28:23 -04:00
Tom Rothamel 838cbb2720 Avoid crash if Container.children and Container.offsets are out-of-sync.
Avoids #641.
2015-05-22 21:19:51 -04:00
Tom Rothamel 7f15147bf7 Never copy the Fixed containing a layer.
Fixes #640.
2015-05-22 21:06:51 -04:00
Tom Rothamel e232bab6f8 Eliminate 1-frame delay in passing inherited position.
Previously, positions would be inherited between frames, but
because the order was wrong, a 1-frame delay occured. This
meat that there would be a 1-frame lag between a transition,
and that transition wrapped in a second transition.

Now, the two transitions will run in lockstep.

Fixes #632.
2015-05-21 23:50:12 -04:00
Tom Rothamel ecadc55616 Guard against KeyError in TextureCore.deallocate()
Fixes #637.
2015-05-21 20:22:46 -04:00
Tom Rothamel 68962de022 Set SLUse.constant in the prepare method.
This fixes a screen analysis problem.
2015-05-21 00:13:11 -04:00
Tom Rothamel 41d601a391 Add Render.place()
This exposes Ren'Py's placement algorithm to cdds.
2015-05-20 21:36:16 -04:00
Tom Rothamel 53a4ad89bb Add lint warnings for redefinition of Ren'Py/python builtins.
Fixes #638.
2015-05-19 23:28:47 -04:00
Tom Rothamel 31dc28ee51 Log durations of various phases of the init process. 2015-05-18 21:35:33 -04:00
Tom Rothamel 3be1a2b6c1 On iOS, log log.txt output to stdout. 2015-05-18 21:34:36 -04:00
Tom Rothamel 8ad4a8ed1c Delay set_mode as long as possible on mobile.
This prevents a black screen from showing up for a long time
as the game initializes on slow mobile platforms.
2015-05-17 23:48:48 -04:00
Tom Rothamel 5319072cf6 Allow Drag.snap to take float positions.
Fixes the problem discussed at: http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=32125
2015-05-16 22:35:55 -04:00
Tom Rothamel c4c82ff525 Fix translation typo.
Per http://lemmasoft.renai.us/forums/viewtopic.php?f=32&t=7858&p=371230#p365396
2015-05-16 19:26:11 -04:00
Tom Rothamel 90be953e7a android: Button for retrieving logcat info from the device. 2015-05-15 23:06:52 -04:00
Tom Rothamel 2409f7ceb8 Merge pull request #636 from tlm-2501/patch-1
Update rooms.rst
2015-05-14 18:30:34 -04:00
tlm-2501 e1c3e55198 Update rooms.rst 2015-05-15 00:43:46 +03:00
Tom Rothamel 2899f79c8a Fix support for unsanctioned translations.
Dialogue from untranslated blocks is now passed through the
translation mechanism.
2015-05-14 10:23:15 -04:00
Tom Rothamel e586410e78 Integrate subpixel, xoffset, and yoffset with Position.
This allows the offsets to work with LiveComposite, which is
a weird use case some people have.
2015-05-13 21:59:06 -04:00
Tom Rothamel 7192bcd164 Reorder init so that init_translations comes after clearing the store.
Otherwise, clearing the store wipes out the side effects of some of
the translation blocks.
2015-05-12 22:08:46 -04:00
Tom Rothamel c08848b7c5 Improve default statement.
The default statement now runs after all rollbacks, not just loads.

It also stores the names of the default variables that have already
been set - this will allow a default to override a builtin present
in a future Ren'Py version.

Lastly, it checks for multiple defaults for a single variable, and
errors out if it finds them.
2015-05-11 23:17:33 -04:00
Tom Rothamel 161533860a Allow report_traceback to decide what to do with most recent call.
There are some exceptions that are very unlikely to be internal
to Ren'Py, and hence it makes sense to report them as part of
the script code that logically triggered the exception.
2015-05-11 23:16:13 -04:00
Tom Rothamel c041eeed26 Run default statement after rollback.
This both covers the load case and the rollback case, and even cases
where we rollback before a load, which wasn't working before.
2015-05-11 00:18:48 -04:00
Tom Rothamel 6ab1b3af74 Update changelog. 2015-05-10 10:30:11 -04:00
Tom Rothamel 82f7673f56 pss: Quadratic.
The previous volume control was simply wrong, as we used the volume
as the exponent, which meant there was a hard floor of .1. Now, we
use volume ** 2 as the multiplier, which sounds right to me and
allows adjustment all the way down to zero.
2015-05-09 23:52:34 -04:00
Tom Rothamel ab952ffefb pss: Increase the volume resolution.
The previous default of 128 levels was insufficient to set the volume
of a channel to low but not off levels.
2015-05-09 23:51:41 -04:00
Tom Rothamel c6c551c7f5 Use Position with LiveComposite.
It's faster and smaller than Position.
2015-05-09 16:38:53 -04:00
Tom Rothamel a947e784a2 sl2: Document use-transclude and creator-defined sl statements. 2015-05-09 16:38:37 -04:00
Tom Rothamel 192f3a702b sl2: Document use-transclude and creator-defined sl statements. 2015-05-08 23:42:18 -04:00
Tom Rothamel b2c8ce8df3 sl2: Fix minor issues w/ custom statements. 2015-05-08 23:33:06 -04:00
Tom Rothamel 416d872a40 Fix formatting. 2015-05-08 18:31:15 -04:00
Tom Rothamel 7be1916b85 Add repeat to the gallery slideshow timer.
Allowing us to advance through multiple images as part of the
slideshow.

Fixes #621.
2015-05-07 22:26:25 -04:00
Tom Rothamel 6e46743d53 text: Expand blits properly, and include outlines.
Fixes #625.
2015-05-06 23:48:28 -04:00
Tom Rothamel 2b0ede0a12 Parameterize Transform children on call.
Fixes #622.
2015-05-06 21:28:15 -04:00
Tom Rothamel c211788e1c Log steam activity.
Hopefully, this will let us use log.txt to diagnose the problem
when steam support fails.
2015-05-05 22:24:37 -04:00
Tom Rothamel 0ebecfc6c0 Add DLC progress function, bump to version 2. 2015-05-05 22:24:22 -04:00
Tom Rothamel 5c7474f2bf Add renpy.write_log.
This function allows code to write into log.txt.
2015-05-05 22:23:35 -04:00
Tom Rothamel 0eafdf6fc3 Initialize persistent._iap_purchases.
This ensures that we do not error out on iOS, where we're not
allowed to automatically restore purchases on start.
2015-05-05 21:15:00 -04:00
Tom Rothamel e29877b5ea Remove shebang from top of main.rpy on iOS. 2015-05-05 11:16:49 -04:00
Tom Rothamel a815bfbceb Include version.txt in the renios build. 2015-05-04 23:22:04 -04:00
Tom Rothamel 03c394ae99 Blindly add dlc.
This lets the same code that adds dlc also update dlc, which can
be useful if the DLC goes out of date.
2015-05-04 18:22:11 -04:00
Tom Rothamel 70d81a2b92 Only restore on Android. 2015-05-03 22:00:32 -04:00
Tom Rothamel 7884b49c9e Check that the version of rapt and renios matches that of Ren'Py.
We've been having problems where rapt goes out of sync with Ren'Py.
This will detect that problem, and will prompt the user to upgrade
again if it happed.

At the very least, this should have the problem occur earlier, rather
than being a hard-to-diagnose Android problem.
2015-05-03 21:46:38 -04:00
Tom Rothamel 3b0f430344 Fix side_image documentation. 2015-05-03 13:15:22 -04:00
Tom Rothamel df792b05c7 sl2: Custom screen language statements. 2015-05-02 23:16:52 -04:00
Tom Rothamel 903dfaaf0c Fix documentation of the Set actions. 2015-05-02 09:55:48 -04:00
Tom Rothamel a127504d38 sl2: Add transclude statement. 2015-05-01 23:31:32 -04:00
kyouryuukunn d8154ea196 Merge pull request #623 from renpy/update_japanese
update japanese
2015-05-01 22:02:11 +09:00
kyouryuukunn d1492e110e update japanese 2015-05-01 21:56:23 +09:00
Tom Rothamel 5d5b159ca6 Ensure screens are prepared once on start.
Screen preparation is expensive, and needs to be done every time
styles are rebuilt. Previously, we had been rebuilding multiple
times in the start process. Now, on a normal start, we only
prepare once.

This required quite a bit of reorganization of init code, but
it should be worth it.
2015-05-01 00:22:03 -04:00
Tom Rothamel f771ff18be sl2: Copy screens when the use statement has a block.
Another step towards transcludes.
2015-04-30 23:40:18 -04:00
Tom Rothamel 6a2f062ed8 sl2: Parse use statements with blocks.
The first step towards transcluding the blocks.
2015-04-29 23:52:26 -04:00
Tom Rothamel 991d8a7683 Document the default statement. 2015-04-29 23:52:26 -04:00
Tom Rothamel 52068c32c9 Merge pull request #620 from Nolanlemahn/patch-3
Update demo_imageops.rpy
2015-04-29 21:40:52 -04:00
Nolanlemahn 2ceb298434 Update demo_imageops.rpy
A previous change moved "eileen_happy" to "eileen happy". (This commit resolves an IOError in the tutorial: "Image Operations".)
2015-04-28 21:43:55 -07:00
Tom Rothamel 59709e1bac Add the default statement.
This statement sets a variable after game start, iff it hasn't been
set already.

Implements #577, but we still need docs.
2015-04-27 23:26:44 -04:00
Tom Rothamel 161eaa27c2 Fix snapping of drags that aren't in a draggroup. 2015-04-27 21:37:38 -04:00
Tom Rothamel 55e8088c3c Bump version.
6.99.3 won't have any Ren'Py changes, but it fixes the accidental
packaging of a version of zipfile.pyo containing debug code.
2015-04-26 11:26:31 -04:00
Tom Rothamel 0e667b3188 Allow AlphaMask to mask focus_at_point.
Which makes focus work properly.
2015-04-25 00:10:09 -04:00
Tom Rothamel 24339e7a64 Fix is_pixel_opaque and IMAGEDISSOLVE/AlphaMask.
This fixes a problem when using AlphaMask with DragDrop or
as a button background.
2015-04-24 23:47:28 -04:00
Tom Rothamel 8d1142e0dc Use the built-in python with distribute.
This helps ensure that the OS will never recompile pyo files.
2015-04-23 21:59:48 -04:00
Tom Rothamel 43b4309aec Update changelog. 2015-04-22 20:10:31 -04:00
Tom Rothamel 52ba2f1b8b Changes to the behavior of #616.
The directory only opens on the build commands, not commands that
also update the device.

The list of files to copy is taken from RAPT.
2015-04-22 00:28:42 -04:00
Tom Rothamel 81284dcee5 Remove unnecessary argument. 2015-04-21 23:14:23 -04:00
Tom Rothamel 0004954f4d Merge pull request #616 from d3nzil/master
Copy Android distributions to distributions directory.
2015-04-21 22:16:00 -04:00
Lukáš 'denzil' Frolka 10616d9fed Copy Android build to distributions directory. 2015-04-21 10:59:36 +02:00
Tom Rothamel 2bf3049c23 Implement renpy.watch in terms of console.watch.
Fixes #615.
2015-04-20 21:52:23 -04:00
Tom Rothamel c30afc791b Support the activate_sound style property on Keymaps.
This also includes the sl2 key statement.
2015-04-19 21:42:37 -07:00
Tom Rothamel edda89750e Add an android icon for The Question. 2015-04-18 21:46:27 -04:00
Tom Rothamel b70a004f09 Update generated documentation. 2015-04-18 21:34:57 -04:00
Tom Rothamel e1ad973475 Update changelog. 2015-04-18 21:33:29 -04:00
Tom Rothamel bd082ea55e If a save's json is missing, assume extra_info/save_name is empty.
This fixes the bug here:

http://lemmasoft.renai.us/forums/viewtopic.php?p=367554#p367554
2015-04-17 22:20:00 -04:00
Tom Rothamel 7639325203 Fix typo.
Fixes #613.
2015-04-16 00:38:52 -04:00
Tom Rothamel 6ce7f2c62d Merge pull request #614 from Nolanlemahn/patch-2
Add renpy.reset_physical_size()
2015-04-15 20:35:13 -04:00
Nolanlemahn 64bc5f02db Add reset_physical_size
While this is trivial code, it just makes sense to me that Ren'Py has this (at least, as opposed to not having it).
2015-04-15 11:44:17 -07:00
Tom Rothamel e2b27696a9 Update current_screen when changing focus.
Previously, current_screen was not updated during focus operations.
This meant that in hovered and unhovered, actions like
SetScreenVariable could be applied to the wrong screen (basically,
whatever screen happened to be lying around after the event
processing or update cycle).

After this change, we track the current screen as we change focus,
and update current_screen appropriately.

Fixes #610.
2015-04-14 07:31:50 -04:00
Tom Rothamel 7e463c3356 Maintain a stack of current screens.
Using two functions centralizes the maintenance of the current
screen variable.
2015-04-14 07:30:53 -04:00
Tom Rothamel 9ee8e5573e list_files should not return saves.
There's no way returning a save is a good thing. There are functions
for that, and it could cause problems with code that looks at files
that may or may not be there.
2015-04-13 23:47:00 -04:00
Tom Rothamel 77c2178462 Do not use steam stats with the progress system.
Steam stats (get_int_stat and set_int_stat) have been unreliable on
windows. I'm not sure what the problem is, but this doesn't use
them.

I'll revisit this if it proves to be a steam problem.
2015-04-13 01:58:27 -04:00
Tom Rothamel 84156d2a3d Check for a version in the steam module. 2015-04-12 22:52:56 -04:00
Tom Rothamel 63f1f6c0bc Rewrite progress achievements.
In steam, to display progress, we have to update a progress stat
associated with an achievement. This new code does that as part
of the achievement system.
2015-04-12 00:20:31 -04:00
Tom Rothamel 4857cb789c Fix set_int_stat. 2015-04-12 00:20:22 -04:00
Tom Rothamel 40805225bd If the config.log logfile throws, give up. 2015-04-11 20:47:52 -04:00
Tom Rothamel 3773624ab0 Merge pull request #609 from evilantishad0w/master
add function to provide separate deterministic PRNG
2015-04-10 23:32:40 -04:00
evilantishad0w b2a02aa982 documentation for renpy.random.Random 2015-04-10 21:07:00 -06:00
evilantishad0w 010b3a3d2f function renamed
as per Tom
2015-04-10 21:04:00 -06:00
Tom Rothamel 9cb9d7c210 Allow renpy.random.x to be called from the init phase. 2015-04-10 23:00:51 -04:00
evilantishad0w 46afd62be7 add renpy.random.Pool generator 2015-04-10 20:33:38 -06:00
Tom Rothamel eac9ee5b02 Document ui.interact.
And self-flagellate for not realizing it was undocumented until now.
2015-04-10 22:03:10 -04:00
Tom Rothamel f316315456 Add the ui.screen_id function. 2015-04-10 21:11:40 -04:00
Tom Rothamel efb62b030a Merge pull request #608 from Nolanlemahn/master
Update 00start.rpy comments
2015-04-10 20:52:29 -04:00
Nolanlemahn 6ea65debb6 Update 00start.rpy comments
renpy.game.call_memory is deprecated/no longer in source.
2015-04-10 17:22:06 -07:00
Tom Rothamel 5823474904 Add the AlphaMask displayable.
This uses the alpha channel from a mask displayable to mask a child
displayable. While this could be done with AlphaDissolve, this is
a little more efficient. (And could plausibly be made much more
efficient.)
2015-04-09 22:14:31 -04:00
Tom Rothamel e4bd06f4e0 Android/iOS: Emulate on-screen keyboard. 2015-04-08 23:44:52 -04:00
Tom Rothamel 9c569a8716 Support a keyboard on the android/iOS emulator. 2015-04-08 23:27:47 -04:00
Tom Rothamel 3a35aca5ef Allow enter to continue. 2015-04-08 22:21:08 -04:00
Tom Rothamel a25c578b5f Ignore prediction exceptins during lint. 2015-04-08 19:45:52 -04:00
Tom Rothamel 6e01fbc52e Remove translation TODOs, add BOMs. 2015-04-08 10:25:43 -04:00
Tom Rothamel 571cd76f21 Update simplified chinese translation. 2015-04-08 10:24:35 -04:00
Tom Rothamel afa272bac3 Updates Simplified Chinese translation.
To version by zedraxlo at http://lemmasoft.renai.us/forums/viewtopic.php?f=32&t=31443.
2015-04-07 23:06:23 -04:00
Tom Rothamel 59e021d1d8 Update Roboto to v2.
Thanks to zedraxlo on lsf, http://lemmasoft.renai.us/forums/viewtopic.php?f=32&t=31443
2015-04-07 22:46:09 -04:00
Tom Rothamel a0af700b43 Merge pull request #597 from Beuc/patch-2
Skip all the ANGLE installation on mobile targets
2015-04-07 22:28:54 -04:00
Tom Rothamel c3d035a5ae Merge pull request #590 from caryoscelus/recompile-fix
Remove old .rpyc files on "Force Recompile"
2015-04-07 22:28:07 -04:00
Tom Rothamel 791e35d8fb Doc FileAction. 2015-04-07 22:27:07 -04:00
Tom Rothamel 2ab145ac19 Merge pull request #605 from caryoscelus/fileaction
Pass arguments from FileAction to FileSave/Load
2015-04-07 22:25:06 -04:00
Tom Rothamel 51ba6d932b Merge pull request #606 from RangHo/master
Add Korean translation for ios screen
2015-04-07 22:23:39 -04:00
Tom Rothamel 9fd33a16ac Placeholders mix properly with non-placeholders.
Previously, we'd consider the first undefined image to be shown to be
a placeholder background - even if a non-placeholder background was
already showing.

Fixes #602.
2015-04-07 22:21:24 -04:00
R.H. Lee 41bd5fa920 Add Korean translation for ios screen 2015-04-07 19:04:10 -07:00
Tom Rothamel df9e305639 Fix name_only.
Scoping changed with the introduction of stores, but say, predict_say,
and name_only didn't keep up. Moving them into common fixes things.

Fixes #604.
2015-04-06 22:03:59 -04:00
Tom Rothamel 6a54f8576c Add the RestartStatement action.
Fixes #603.
2015-04-06 18:28:59 -04:00
caryoscelus 9658283e58 Pass arguments from FileAction to FileSave/Load
FileSave/Load have some useful arguments, this
allows to use them throw generic FileAction
2015-04-06 18:18:30 +03:00
Tom Rothamel 689d33760f Fix Motion, Pan, and Move to work with Transform.
Transform may call get_position() before render(), so we have to,
when possible, compute the position in advance.
2015-04-06 00:01:45 -04:00
Tom Rothamel 9011554540 Merge pull request #601 from javimat/master
Update Italian template (by Corvo)
2015-04-05 12:19:14 -04:00
Tom Rothamel 6ec7ccbe6b Document renpy.get_at_list. 2015-04-05 10:59:24 -04:00
Tom Rothamel 94ba4e62e1 Preserve zorder when showing an image w/o explicit zorder.
Fixes #600.
2015-04-04 21:05:54 -04:00
javimat 9a3bc75241 Update Italian template
Update Italian template thanks to LSF user Corvo.
2015-04-04 19:43:42 +02:00
Tom Rothamel 3a27dfec9d Document image directory. 2015-04-02 21:46:07 -04:00
Tom Rothamel 00ee5d8eb3 Add main.py.
This is an alias to renpy.py that's used when renpy.py is hidden
by eclipse, which is necessary to ensure eclipse favors the renpy/
directory.
2015-04-02 21:19:39 -04:00
Tom Rothamel ce4086d58e Add empty images directories to the various templates. 2015-04-02 21:18:19 -04:00
Tom Rothamel 815a297ae2 Add images directory button. 2015-04-02 21:09:24 -04:00
Tom Rothamel 712306ffc3 Fix typo, per:
http://lemmasoft.renai.us/forums/viewtopic.php?p=365396#p365396
2015-04-02 10:48:37 -04:00
Tom Rothamel 33b802e749 The tutorial game should use the images directory. 2015-04-01 22:13:45 -04:00
Tom Rothamel b26ea78a4b Automatically define images in config.images_directory. 2015-04-01 22:13:05 -04:00
Tom Rothamel e9343befc0 API-rename renpy.image_exists to renpy.has_image. 2015-04-01 22:12:23 -04:00
Tom Rothamel d59dd71602 If zsync fails, try again with no input data.
This triggers a total download of the update. That's a pain and
consumes bandwidth, but it's what the user would have to do anyway
if the update fails.
2015-03-31 21:38:05 -04:00
Tom Rothamel b99e9d3afa Better support of oddly-named distros. 2015-03-31 10:05:30 -04:00
Tom Rothamel d5ee62fa13 Allow any version with a - in it. 2015-03-30 22:07:16 -04:00
Tom Rothamel b8e1d39e49 Bump version to 6.99.2. 2015-03-30 20:06:04 -04:00
Tom Rothamel 868d0afb60 renpy.get_shown_tags -> renpy.get_showing_tags
Present tense is better, since it only shows tags that are currently
showing.
2015-03-29 21:10:04 -04:00
Tom Rothamel b52a3ab75c Fix permissions. 2015-03-29 21:08:35 -04:00
Tom Rothamel 7d5ca94f4a Add renpy.get_shown_tags. 2015-03-29 21:07:59 -04:00
Tom Rothamel 7cce474ca8 Merge branch 'master' of github.com:renpy/renpy 2015-03-29 20:46:01 -04:00
Tom Rothamel 4a8c87f019 Merge pull request #596 from javimat/javimat-patch-1
update Spanish template and fix typo
2015-03-29 20:45:57 -04:00
Beuc 0cd3553099 Skip all the ANGLE installation on mobile targets 2015-03-30 00:21:03 +02:00
javimat f929d3fa3d Fix small typo 2015-03-29 22:32:57 +02:00
javimat 7f21671fc3 Update Spanish Template 2015-03-29 22:31:33 +02:00
Tom Rothamel 354862ba65 Add new functions to changelog. 2015-03-29 13:09:12 -04:00
Tom Rothamel 9e51fc584c Add MultiPersistent on Android, document as unsuppored on iOS.
Fixes #592.
2015-03-29 13:02:58 -04:00
Tom Rothamel 54f9cd752a MultiBox parameterization doesn't make sense for subclasses. 2015-03-29 12:34:06 -04:00
Tom Rothamel 3614d6659f Fix --no-tag. 2015-03-29 10:29:33 -04:00
Tom Rothamel 2bc3929540 Add renpy.load_surface, document renpy.load_texture.
Functions to turn image manipulators into Surfaces and Textures.
2015-03-28 22:35:37 -04:00
Tom Rothamel c050a2dbd7 Include style_common.pxi with source.
Fixes #594, when 6.99.1 is released.
2015-03-28 22:08:34 -04:00
kyouryuukunn 00c55c31a7 Merge pull request #595 from kyouryuukunn/update_japanese
update translation for japanese
2015-03-29 10:27:23 +09:00
kyouryuukunn f1cd67446b update translation for japanese 2015-03-29 10:23:52 +09:00
Daniel Luque 22f95f7d83 Merge pull request #593 from LuqueDaniel/update-es
Update spanish translation
2015-03-28 14:58:40 +01:00
Daniel Luque 8b6026cf7f Add new files to spanish translations 2015-03-28 14:33:29 +01:00
Daniel Luque d18232093d Update spanish translation 2015-03-28 14:31:13 +01:00
Tom Rothamel ce1bcb3535 Merge pull request #591 from Beuc/patch-1
Fix typo (missing end quote)
2015-03-27 17:57:28 -04:00
Tom Rothamel fc8fd41e90 Document ParameterizedText.
Also, various other doc fixes.
2015-03-27 17:50:56 -04:00
Beuc 3f23fa3606 Fix typo (missing end quote) 2015-03-27 22:44:00 +01:00
Tom Rothamel 023a8b9b47 Include .pyc and pyo files with rapt and renios.
This ensures that during an upgrade, the user winds up with compiled
files that match the new source files.
2015-03-26 21:44:39 -04:00
Tom Rothamel 04ed3ff098 Do not use accelerometers as joysticks. 2015-03-26 21:23:40 -04:00
Tom Rothamel 36a3ecbbd3 Bump version to 6.99.1. 2015-03-26 21:23:27 -04:00
Tom Rothamel 66fc3c47ae Push tags to server. 2015-03-26 12:09:27 -04:00
Tom Rothamel 6a730bbffc Fix name of pygame_sdl2 download. 2015-03-26 12:09:15 -04:00
Tom Rothamel 0b91488206 Update changelog. 2015-03-25 21:08:04 -04:00
Tom Rothamel ea8c3a69fb Distribute pygame_sdl2 with Ren'Py. 2015-03-25 20:58:41 -04:00
Tom Rothamel 324d637607 Use eval_who in lint, to access non-English character names.
See: http://lemmasoft.renai.us/forums/viewtopic.php?p=364118#p364118
2015-03-24 22:08:25 -04:00
Tom Rothamel daf7619e52 Return contains to compatibility with 6.99.
Since no detail of the API is too obscure to allow for changes.
2015-03-24 21:01:15 -04:00
caryoscelus 1914c1b6fe Rename old .rpyc to .rpyc.bak instead of removing 2015-03-24 05:58:22 +03:00
caryoscelus 4f9eabeb28 Only remove .rpyc when there's no .rpy 2015-03-24 05:53:31 +03:00
Tom Rothamel 80158aa151 Merge pull request #581 from renoa/patch-8
Update preferences.rpy
2015-03-23 22:36:01 -04:00
Tom Rothamel 907fc3f29e Merge pull request #582 from renoa/patch-9
Update front_page.rpy
2015-03-23 22:35:51 -04:00
Tom Rothamel b65089fbed Merge pull request #583 from renoa/patch-10
Update distribute_gui.rpy
2015-03-23 22:35:40 -04:00
Tom Rothamel c334aeece2 Merge pull request #584 from renoa/patch-11
Update common.rpy
2015-03-23 22:35:24 -04:00
Tom Rothamel b7be16b987 Merge pull request #585 from renoa/patch-12
Create choose_directory.rpy
2015-03-23 22:35:11 -04:00
Tom Rothamel c2f07ca7ca Merge pull request #586 from renoa/patch-13
Update android.rpy
2015-03-23 22:34:59 -04:00
Tom Rothamel 9b1c9ff25d Merge pull request #588 from renoa/patch-15
Update screens.rpy
2015-03-23 22:34:47 -04:00
Tom Rothamel f89191bbf9 Merge pull request #587 from renoa/patch-14
Create ios.rpy
2015-03-23 22:34:36 -04:00
caryoscelus 98120814da Remove old .rpyc files on "Force Recompile"
Otherwise, may fail in case there some orphaned (without .rpy) .rpyc
with same labels as in other scripts (usually happens on script rename).
2015-03-24 02:41:40 +03:00
Tom Rothamel 6af546147a Stop looping sounds on rollback and load.
The same logic that worked on sound channels now works on music
channels.

Fixes #578.
2015-03-22 23:06:07 -04:00
Tom Rothamel ff177be12c Fix interactions between uses_scope, copy_on_change, and nested constants.
Before this change, we only stored uses_scope on the outermost
constant displayable (in a constant subtree). But this meant that
in the copy_on_change case, only the outermost displayable in the
tree would be copied.

This fixes that, by recursively killing the constant stuff until
all the copy_on_change displayables that uses the changes scope
have been copied.
2015-03-22 21:52:27 -04:00
Renoa 3e6ddc46b6 Update screens.rpy
it creates errors if i don't comment out the font, i don't know why ><
2015-03-22 22:03:31 +03:00
Renoa 1094f693f0 Update distribute_gui.rpy
accidentally used " instead of '
2015-03-22 21:49:57 +03:00
Renoa f0efeede9a Create ios.rpy
create file
2015-03-22 21:43:21 +03:00
Renoa ecbe84ad39 Update android.rpy 2015-03-22 21:22:45 +03:00
Renoa 302fa846ca Create choose_directory.rpy
create new translation file not found in previous version of ren'py
2015-03-22 21:19:40 +03:00
Renoa 511d48f067 Update common.rpy 2015-03-22 21:17:10 +03:00
Renoa 5b0a6ede56 Update distribute_gui.rpy 2015-03-22 21:09:22 +03:00
Renoa cec6ebd9df Update front_page.rpy 2015-03-22 21:04:33 +03:00
Renoa cd3b7c1239 Update preferences.rpy 2015-03-22 21:00:59 +03:00
Tom Rothamel 86f759c80f Pass original name when showing screens.
Screens can be hidden by name or tag, so we have to pass both.

See: Sunrider Academy, after going to the courtyard.
2015-03-21 23:23:36 -04:00
Tom Rothamel 7ce97dbaeb Preserve st when re-showing a screen.
The renpy.show_screen function treats re-showing a screen as an
update, not a show. To preserve this fiction, we keep st on the
re-shown screen.

See: http://lemmasoft.renai.us/forums/viewtopic.php?p=363556#p363556
2015-03-21 13:33:38 -04:00
Tom Rothamel 0b317c4c24 sl2: Propagate fails up through displayables. 2015-03-21 12:23:34 -04:00
Tom Rothamel 4c6fd3c8fa Allow ffdecode to call the size method of rwops.
This seems to be used by the ogg code to get an accurate size
for the ogg file. Now that the size code exists and is fast, we can
call it.
2015-03-21 11:32:38 -04:00
Tom Rothamel f5cc5e5829 Modify run.sh to build pygame_sdl2 if it exists. 2015-03-21 11:30:54 -04:00
Tom Rothamel f284d82f9d Check for reasonable audio duration, reject if not.
This fixes a crash in sunrider academy due to a file with a duration
long enough to cause the computed duration to go negative.
2015-03-21 11:01:57 -04:00
Tom Rothamel 8c1f6c7701 Update build documentation.
Fixes #564.
2015-03-20 22:55:11 -04:00
Tom Rothamel 82d40f75f5 Add the python2.7 directory to the include path. 2015-03-20 22:54:30 -04:00
Tom Rothamel a755b04ab1 Search the virtualenv for pygame_sdl2 headers. 2015-03-20 22:26:14 -04:00
Tom Rothamel 8c5fcc9a95 Add Finnish translation.
The translation was contributed by Diapolo10, as #576, but was
merged manually.

Close #576.
2015-03-19 21:58:20 -04:00
Tom Rothamel 6625a46dcb Add BOM, remove TODO on first line of file. 2015-03-19 21:56:34 -04:00
Tom Rothamel c7b7e26c33 Fix incorrect example in docs. 2015-03-19 09:35:24 -04:00
Tom Rothamel 45c61c4972 config.default_keymap should be a dict. 2015-03-18 20:29:42 -04:00
Tom Rothamel b944591ec7 If a keybinding is unknown, use a default keymap.
This deals with cases where a creator has assigned to config.keymap,
but Ren'Py has introduced a new mandatory keybinding.
2015-03-18 19:19:57 -04:00
Tom Rothamel 3c3c8c7933 Preserve StoreModule identity through reloads.
This means that if we do "import store" in a pure-python module,
store will refer to the same (now-correct) object before and
after the reload.
2015-03-18 19:05:41 -04:00
Tom Rothamel e0207369c3 SLDisplayables can't become constant if a child fails.
We don't want to mark a tree of displayables constant if a displayable
in that tree throws an error during prediction, since the tree will
be incomplete. (This is possible if the displayables in the tree
access missing non-parameter data, like a Text that interpolates a
missing variable.)

We propagate such fails up the tree of contexts, and do not allow
a SLDisplayable to become constant if a failure has occured.
2015-03-17 23:25:28 -04:00
Tom Rothamel 40de615c66 Document alternate property on imagebutton, textbutton, and hotspot.
Added the property to hotspot, as it it was already supported by the
various buttons.

Fixes #575.
2015-03-17 22:21:04 -04:00
Tom Rothamel 53c50b1e00 SnowBlossom fast should only occur if st == 0.
It's possible for the number of particles to drop to 0 if all
particles fall off the screen, but we don't want to do the fast
behavior in that case - only during the initial show, when st is 0.

Fixes #572.
2015-03-17 22:12:34 -04:00
Tom Rothamel 95f39c725f Allow key modifier prefixes to occur in any order. 2015-03-15 22:15:36 -04:00
Tom Rothamel 0e251e1bf4 Make repeat_ an explicit keysym prefix on repeated keys.
This means that for event handling to respond to a repeated key,
Ren'Py has to expect it - preventing things like a toggling tab
key from slowing down skipping.
2015-03-15 21:44:42 -04:00
Tom Rothamel cd136bc6a0 Report error on bad rwops. 2015-03-15 21:44:35 -04:00
Tom Rothamel b66ede5e19 Merge pull request #563 from LuqueDaniel/small-change
Replace "Show edit buttons" string.
2015-03-14 18:27:02 -04:00
Tom Rothamel ba7d4e6582 Support opening all files as subfiles for testing purposes. 2015-03-11 23:28:57 -04:00
Tom Rothamel bda9f96f28 Image location picker: Copy rectangle/position to clipboard.
Fixes #568.
2015-03-10 11:12:19 -04:00
Tom Rothamel 2f77e1fd4a Avoid running Steam callbacks.
For some reason, SteamAPI_RunCallbacks() crashes after a callback has
been run, on Windows only. This happens both with our callbacks, and
with those registered using CCallback.

Since callbacks don't add much in normal use cases, and hours of
work didn't lead to a fix, I've disabled the callback support.
2015-03-09 21:21:40 -07:00
Tom Rothamel 3d4ef2df96 Increase skip speed. 2015-03-08 12:46:48 -04:00
Tom Rothamel 2b20ef7834 Work on call stack corruption.
- Pop return blindly pops things - which prevents problems if the return
  label doesn't exist.
- When config.developer is true, we monitor for and try to fix call stack
  corruption.
- When config.developer is false, we try to survive call stack corruption,
  although this may lead to other errors.
2015-03-08 12:14:03 -04:00
Tom Rothamel e4fe7f3586 Limit the size of the textures we render to.
When using the FBO, we'd use the largest textures available,
even when the data was only large enough to fill a small portion
of those textures.
2015-03-07 16:17:09 -05:00
Tom Rothamel 7cfc6ad1ba Wrap dictionary and set comprehensions to support rollback.
Thanks to rivvil for noticing the problem and contributing the
fix.
2015-03-07 10:24:49 -05:00
Tom Rothamel 57c27cfde4 Do not block lint. 2015-03-07 10:24:41 -05:00
Tom Rothamel 3ceec0b62d Properly analyze nested imagemaps.
If an imagemap statement is non-constant, neither are its hotspot
children. We need to re-evaluate the hotspot children whenever
the non-constant imagemap changes.

Fixes #567.
2015-03-06 23:56:48 -05:00
Tom Rothamel fe1d1e5499 Respect xysize/xminimum/yminimum on Solid and Frame. 2015-03-06 22:59:39 -05:00
Tom Rothamel ca944b5089 Ignore ignored TIMEEVENTS.
Ignoring a TIMEEVENT is probably a mistake, but doing so previously
caused a TIMEEVENT to be posted, which would stop redraws from
happening entirely.
2015-03-05 23:15:08 -05:00
Tom Rothamel 92163cd704 Drag should only ignore relevant events.
Notably, it shouldn't ignore TIMEEVENT.
2015-03-05 23:12:19 -05:00
Tom Rothamel edfd705a52 alt+shift+I inspects all layers. 2015-03-05 21:55:01 -05:00
Tom Rothamel 4a1557edf3 Include rectangle in imagemap hash.
Fixes #566, and probably many of our ongoing problems.
2015-03-04 21:06:06 -05:00
Tom Rothamel 4c55cab9fc Detect and report potential infinite loop.
We define an IL as 10 seconds of no interactions. (60s during the
init phase.)

Fixes #565.
2015-03-04 17:12:33 -05:00
Tom Rothamel 8a9eb86bac Use file data, rather than modification time, in imagemap cache.
This should fix a longstanding problem where changes to files
might not be reflected in the imagemap cache.
2015-03-03 22:20:48 -05:00
Tom Rothamel 077c7818ec Use the copy RTT on PC platforms.
Until we switch to one FBO-per-size, the FBO RTT doesn't improve
performance much, and it causes problems with older Nvidia drivers
on windows.
2015-03-03 21:02:11 -05:00
Tom Rothamel 136db345c9 Add support for manually failing GL or ANGLE.
For testing purposes.
2015-03-02 21:54:14 -05:00
Tom Rothamel 31b711b672 Re-enable HW video.
Accidentally shipped with it defaulting to off.
2015-03-01 22:13:32 -05:00
Tom Rothamel 7aeed18720 Tell RAPT we're Ren'Py. 2015-03-01 17:31:05 -05:00
Tom Rothamel 7da86f27e9 Fix missing argument. 2015-02-28 12:46:45 -05:00
Tom Rothamel e851096b77 Only skip during a TIMEEVENT.
This prevents a sufficiently fast skip time from consuming the KEYDOWN
events that might be used to end skipping.
2015-02-27 22:30:35 -05:00
Tom Rothamel 91cdebd401 Take execution state even if the ATL has finished. 2015-02-27 21:27:37 -05:00
Daniel Luque 0fbdd3b68f Replace "Show edit buttons" string.
Change "Show edit buttons" string to "Show edit file section".
2015-02-27 15:47:28 +01:00
Tom Rothamel 939034a481 RawChild takes ATL, not a displayable.x 2015-02-27 09:29:24 -05:00
Tom Rothamel 4ae3092877 Fix an issue with constant transforms. 2015-02-26 23:59:08 -05:00
Tom Rothamel db23bd0f91 Make ALL_EVENTS a dense set.
This saves the memory required to store the list version of ALL_EVENTS,
and the time required to search through it.
2015-02-26 23:30:07 -05:00
Tom Rothamel 5e0de94e9a Implement LiveCrop and LiveComposite in terms of Transforms.
Transforms are the preferred path for many things.
2015-02-26 23:23:12 -05:00
Tom Rothamel cdfbfcd481 Recompile non-constant ATL at execution.
This fixes a problem reported where ATL was being compiled at screen
prediction time - which might be before variables used by the ATL block
have finished updating.

The fix was to compile non-constant ATL twice - first, during ATL
prediction, and then again once the ATL is ready to execute for
real.

PM: http://lemmasoft.renai.us/forums/ucp.php?i=pm&mode=view&f=0&p=163661
2015-02-26 23:17:49 -05:00
Tom Rothamel 5d49b6b75b Better reprs for Image, ImageReference, and ATLTransform.
This helps tell them apart while debugging.
2015-02-26 23:17:03 -05:00
Tom Rothamel f9a7b7dc21 Remove texture from texture cache when it leaves the image cache. 2015-02-25 09:32:30 -05:00
Tom Rothamel 61b7550157 Memory profiling improvements.
* Do not double count surfaces.
* Display a banner while performing profiling operations.
2015-02-25 09:32:30 -05:00
kyouryuukunn fc7fcc8db9 Merge pull request #562 from kyouryuukunn/update_japanese
update japanese
2015-02-25 16:15:38 +09:00
kyouryuukunn 2cdb8adb64 update japanese 2015-02-25 16:13:38 +09:00
Tom Rothamel a22b406f46 Check timestamps for correctness. 2015-02-24 19:30:19 -05:00
Tom Rothamel cff0b43f96 Add renpy.copy_save.
A function that copies saves around.
2015-02-23 21:57:12 -05:00
Tom Rothamel 0a2bee8a78 Add a memory profiling key. 2015-02-23 21:57:12 -05:00
Tom Rothamel 0e53af427f Merge pull request #560 from javimat/master
Update Spanish Translations
2015-02-23 18:14:14 -05:00
Tom Rothamel 3120b5e438 Use FBOs on any platform where an FBO is available.
Hopefully, this will prevent the "flopping" problem people have been
seeing on Android.
2015-02-22 11:24:15 -05:00
Tom Rothamel 01689fc02a Input should only ignore keys that generate text input.
This means that when escape is pressed while editing, we'll be taken
to the game menu. (Ditto for pageup and rollback, etc.)
2015-02-22 11:09:12 -05:00
Tom Rothamel afc9a2d97c If the user closes the onscreen keyboard, reopen it. 2015-02-21 22:28:09 -05:00
Tom Rothamel df5d891ee7 Add config.missing_label_callback.
This is a function that can replace missing labels with other labels.

Fixes #561.
2015-02-21 21:57:44 -05:00
Tom Rothamel d7ba76f44f atl: Parameterize (reset) children when showing them.
Fixes #557.
2015-02-20 22:38:34 -05:00
Tom Rothamel 10cda2103f Copy Fixeds when they're parameterized.
Parameterization (a terrible name) is used to reset transforms. In
cases where a single transform should be reset, a Fixed full of
tranforms should be replaced with a Fixed full of reset transforms.

(This is especially true for Fixeds created as part of a multiple
contains block in an ATL transform.)
2015-02-20 22:35:51 -05:00
Tom Rothamel 616cdbd218 atl: Contains block should only create a fixed if 2 or more.
This mirrors the behavior of the rest of Ren'Py, and makes the
contains block statement mirror the contains expression statement.
2015-02-20 22:06:06 -05:00
Tom Rothamel 2199a4db1c Focus_mask should be true by default for drags.
This restores compatibility with the behavior of 6.18.3.
2015-02-19 23:15:02 -05:00
Tom Rothamel c4b673099f Allow drags to go partially offscreen. 2015-02-19 22:53:11 -05:00
Tom Rothamel c61b01ee0c Simplify/fix PNG writing. 2015-02-18 23:31:23 -05:00
Tom Rothamel 24f26acea4 Work around a problem with the NSUrl.path property on iOS.
On 7.0, it's a method. On 8.0, it's a property. I don't get why,
 but this defensively codes around it.
2015-02-17 19:42:45 -05:00
Tom Rothamel f4e5e0f297 Allow use of the integrated GPU on macs.
Controlled by build.allow_integrated_gpu variable.
2015-02-17 19:14:20 -05:00
javimat a78d9bbccf Update common.rpy 2015-02-17 11:59:46 +01:00
javimat 89ec94a72b Update common.rpy in Spanish tl of Launcher 2015-02-17 11:56:38 +01:00
javimat cf495ac494 Update Spanish Template 2015-02-17 11:51:13 +01:00
Tom Rothamel 0eb54ef113 Fix missing word in LGPL name. 2015-02-16 22:42:54 -05:00
Tom Rothamel 3043543901 Fix tagging. 2015-02-16 21:16:36 -05:00
Tom Rothamel 6f56cbb12e Adjust tagging. 2015-02-16 21:14:19 -05:00
Tom Rothamel a7542015ab Remove translaton TODOs. 2015-02-16 21:07:07 -05:00
Tom Rothamel 3e20a92c80 More reliable read of sums. 2015-02-15 23:23:59 -05:00
Tom Rothamel 93812b4a1b Deal with potentially corrupt sums file.
For some reason, on my mac, the sums file is getting corrupted.
2015-02-15 22:47:59 -05:00
Tom Rothamel 4f3a0c546f Remove debug print. 2015-02-15 21:19:08 -05:00
Tom Rothamel 097978b044 This code is obsolete with pygame_sdl2. 2015-02-15 20:57:35 -05:00
Tom Rothamel da041e5170 Properly classify renios. 2015-02-15 20:57:18 -05:00
Tom Rothamel 9b626fe039 On windows, use the Ren'Py executable to relaunch if it exists. 2015-02-15 16:35:36 -05:00
Tom Rothamel c51db4ce64 Fix tagging, tag all projects. 2015-02-15 16:32:50 -05:00
Tom Rothamel 01b66c6197 Remove quit and maximize keybindings.
These are redundant on SDL2, which will synthesize more appropriate
system events from the platform-specific keypresses. This redundancy
can cause problems - when we first synthesize a quit event from
alt-F4, and then get the real QUIT, we behave incorrectly.

Fixes #554.
2015-02-14 22:55:02 -05:00
Tom Rothamel 2a31925ef7 Change the icon of lib/windows-i686/<game>.exe
This is the icon that's used when the game is pinned to the
windows taskbar.
2015-02-14 20:25:41 -05:00
Tom Rothamel 9480b544fb Predict main_menu while in the splashscreen.
Fixes #503.
2015-02-13 22:35:14 -05:00
Tom Rothamel 8c989bb684 Prevent renpy.stop_predict_screen from throwing exceptions.
We now ignore the case where we stop predicting a screen that
wasn't being predicted. Previously, we threw an exception.
2015-02-13 22:33:28 -05:00
Tom Rothamel d9dd895775 Remove leftover call. 2015-02-12 23:40:57 -05:00
Tom Rothamel a149858701 Add iOS documentation. 2015-02-12 23:39:41 -05:00
Tom Rothamel 3a1105935c Include gesture function docs. 2015-02-12 23:38:33 -05:00
Tom Rothamel c5fa5ca98b Ignore unknown KEYDOWN events in input.
This prevents them from triggering Keymap events when an input
is present.
2015-02-12 21:19:37 -05:00
Tom Rothamel e40e780834 Document gestures. 2015-02-11 17:27:26 -05:00
Tom Rothamel 5f23501413 Remove default gestures (except for progress).
At least until we can think about what sort of gestures we want in an
iOS game.
2015-02-11 17:25:44 -05:00
Tom Rothamel 0631221d98 Allow config.dispatch_gesture to end an interaction. 2015-02-11 17:25:25 -05:00
Tom Rothamel 87fc8b0468 Merge achievements when persistent data is changed. 2015-02-10 18:39:28 -05:00
Tom Rothamel b6d16ef601 Document the achievement system. 2015-02-10 18:25:11 -05:00
Tom Rothamel 72704eb945 Fixes to steam support; do not distribute by default. 2015-02-09 22:41:27 -05:00
Tom Rothamel 23c202e25f Write changelog. 2015-02-09 22:18:22 -05:00
Tom Rothamel 253cf2a5c7 Bump version to 6.99, add name. 2015-02-08 21:16:12 -05:00
Tom Rothamel dfce28b881 Merge pull request #549 from evilantishad0w/editfunctoggle
add toggle to show/hide "Edit File" section
2015-02-08 21:06:21 -05:00
Tom Rothamel 013cfdadea Build fribidi on Android. 2015-02-08 20:52:01 -05:00
evilantishad0w 71545e6d3a cleaned toggle code up a bit 2015-02-08 17:26:21 -07:00
Tom Rothamel 8282084f48 Allow resize on ANGLE. 2015-02-08 15:16:08 -05:00
Tom Rothamel 5d53028f62 Revise license and help.
This includes a better compliance notice and a revised list of
software licenses and repositories.
2015-02-08 12:34:57 -05:00
Tom Rothamel c43f364eab Ignore spurious resize events.
Windows seems to generate a spurious 1x1 resize event after leaving
fullscreen, and the occasional spurious (though correct) resize when
entering and leaving fullscreen mode.

We use the size of the window to debounce these events.

Fixes #382.
2015-02-07 23:53:28 -05:00
Tom Rothamel 93b25e9627 Use the desktop resolution when going fullscreen.
This works a lot better.
2015-02-07 21:42:27 -05:00
Tom Rothamel 3051687b4c Enable ZIP64 - allows packaging of large games. 2015-02-07 13:58:10 -05:00
Tom Rothamel 94cca9458b Use renpy.exe as gamename.exe.
Now that they differ, we want to use the Ren'Py-specific name.

Fixes #547.
2015-02-07 13:52:23 -05:00
Tom Rothamel c63e58f170 Fix analysis of ATL.
Analyzing ATL would crash old pre-ATL games. Also, we weren't
analyzing some atl clauses.
2015-02-07 00:07:02 -05:00
Tom Rothamel 3aa40537e9 Cleanups for #498.
The l_checkbox_box style change allows checkboxes to take up multiple
lines, but may need to be localized for different translations.
2015-02-06 19:45:52 -05:00
Tom Rothamel 495fa5512c Merge pull request #498 from Neurone/master
Let choose to developer if strings need to be empty while generating translations
2015-02-06 19:39:12 -05:00
Tom Rothamel f561b1ce04 Merge pull request #502 from tlm-2501/master
Added a Russian translation for the tutorial game
2015-02-06 19:37:13 -05:00
Tom Rothamel 7def90322f Translate last error message in updater.
Adds to #534. Languages that use a different word order can use a
translaton like "Unknown type {1} while unpacking {0}."
2015-02-06 19:33:00 -05:00
Tom Rothamel 75c8861de9 Merge pull request #534 from javimat/master
Add translation function _() in Update 00updater.rpy error messages
2015-02-06 19:31:57 -05:00
Tom Rothamel 9b5de49aae Viewport takes xminimum, xmaximum.
Fixes #458.
2015-02-06 19:00:05 -05:00
Tom Rothamel 3e5197f909 doc: Document _return as part of input.
Fixes #506.
2015-02-05 21:18:57 -05:00
Tom Rothamel 152ba2d7e5 doc: Document nvl show and nvl hide.
fixes #510.
2015-02-05 21:14:36 -05:00
Tom Rothamel 1d4d093a88 lint: Allow side-only image attributes.
This prevents spurious lint warnings. Fixes #545.
2015-02-05 21:02:17 -05:00
Tom Rothamel 955e02ce26 add_from: Integrate with launcher.
Enabled by default, this should mitigate or fix the "could not find
return label" problem.

Fixes #530.
2015-02-04 21:01:03 -05:00
evilantishad0w b499d95390 add toggle to show/hide "Edit File" section
Many power users have no need for the edit shortcuts in the launcher,
and in projects with a large number of script files hitting "edit all
script files" by accident can be annoying
2015-02-04 12:35:27 -07:00
Tom Rothamel df36d206d3 add_from: Implement the add_from command.
This should help long-term games manage changes to calls and return
sites.
2015-02-03 23:25:50 -05:00
Tom Rothamel 9af5e19054 add_from: Store the start and end of each logical line.
This makes editing the files possible, since we now know where we can
insert new clauses at the end of a statement.

As part of this commit, we change how we remove CR from the file,
so we can get unicode-byte accurate locations within the file.
2015-02-03 23:17:02 -05:00
Tom Rothamel 8492045273 Keep the Pass when introducing a From statement. 2015-02-03 19:08:48 -05:00
Tom Rothamel 49a3b15816 Never play voice during a with statement. 2015-02-02 21:32:11 -05:00
Tom Rothamel f015bb7b81 Mouseareas should not activate during a focus grab. 2015-02-02 19:00:33 -05:00
Tom Rothamel 44aa9c6fc8 replay: True/False locked was inverted.
Fixes #356.
2015-02-01 23:11:59 -05:00
Tom Rothamel d4eebdff49 Only load textures that are predicted or used.
Fixes #532.
2015-02-01 09:48:37 -05:00
Tom Rothamel f42572c1f8 Avoid double-copy of surfaces in sw renderer.
This also makes the load_texture semantics the same as those on the
GL side.
2015-02-01 09:47:53 -05:00
Tom Rothamel 356c6e346a Insert a Return at the end of each file.
Fixes #490.
2015-02-01 08:59:01 -05:00
Tom Rothamel 22eb62afff Add a precheck pass to lint.
This lets us try to resolve forward references. For now, this is
limited to tags used in image statemets that are used in hide
blocks.

Fixes #505.
2015-01-31 23:17:01 -05:00
Tom Rothamel 7d17c87ed0 Use shutil.copyfile with saves.
Fixes #543.
2015-01-31 21:46:51 -05:00
Tom Rothamel 7c8e93a046 Add set manipulation actions.
AddToSet, RemoveFromSet, and ToggleSetMembership allow one to
manipulate sets and lists-as-sets.
2015-01-30 20:21:51 -05:00
Tom Rothamel 86d250079b data: Fix equality for the names of screen variables. 2015-01-30 17:14:33 -05:00
Tom Rothamel b2cb51a61b transform: Function is called at the start of each interaction.
Fixes #523.
2015-01-29 21:27:54 -05:00
Tom Rothamel 4cfe681d00 transform: Properly proxy transform_anchor
Fixes #522.
2015-01-29 21:24:46 -05:00
Tom Rothamel c670a25f8b android: Fsencode strings passed to popen.
Fixes #526.
2015-01-29 20:06:40 -05:00
Tom Rothamel db5ee1e91f Merge pull request #539 from Nolanlemahn/master
Update copyright notices and scripts for 2015
2015-01-28 17:40:40 -05:00
Nolanlemahn ca1f1f1032 Update the copyright notices in the file headers for 2015. 2015-01-28 11:22:22 -08:00
Nolanlemahn 32800f1c48 Update copyright scripts for 2015 2015-01-28 11:21:31 -08:00
Tom Rothamel 66544cd4b2 text: Document custom text tags
Fixes #513.
2015-01-26 23:51:05 -05:00
Tom Rothamel 94df2f93b7 text: Add custom text tags to lint. 2015-01-26 22:30:20 -05:00
Tom Rothamel 4c1269c62e text: Add improved custom text tags.
These new text tags process the token list, which makes it possible
to change tags and text to other things. (For example, we are now
able to make a rot13 text tag.)
2015-01-26 22:15:18 -05:00
Tom Rothamel a94989eb06 Add high-level achievements API. 2015-01-25 22:36:24 -05:00
Tom Rothamel 0cc2df8800 steam: User account functions. 2015-01-25 18:27:40 -05:00
kyouryuukunn d62f28d849 Merge pull request #536 from kyouryuukunn/update_japanese_template
Update japanese template
2015-01-25 10:56:17 +09:00
kyouryuukunn 31de055d6f update japanese translation 2015-01-25 10:53:11 +09:00
Tom Rothamel a3daed1409 steam: Add indicate_achievement_progress. 2015-01-24 20:47:24 -05:00
Tom Rothamel d7ccd581ae steam: add INT stats. 2015-01-24 20:38:28 -05:00
kyouryuukunn f559367d6a update japanese 2015-01-25 10:21:12 +09:00
Tom Rothamel 064d24e838 steam: Default the notification popup to the top-right. 2015-01-24 20:17:31 -05:00
Tom Rothamel ec894fc458 steam: Bind more overlay functions. 2015-01-24 20:06:55 -05:00
Tom Rothamel 845f802a59 steam: Bind apps and overlay. 2015-01-24 19:41:54 -05:00
Tom Rothamel 6680a16db6 Fix typo in field name. 2015-01-24 15:38:08 -05:00
Tom Rothamel d838a3d07a steam: Support floating-point stats. 2015-01-23 22:22:27 -05:00
Tom Rothamel 1e35f405fb steam: Production quality init/achievements. 2015-01-23 21:52:35 -05:00
Tom Rothamel 9900bf6ecc steam: Generic approach to Steam callbacks.
And when we say generic, we mean it. This uses a C++ template that
can bind C functions to Steam callbacks.
2015-01-23 21:51:50 -05:00
Tom Rothamel ab36e3d59a Add support for registering a list of periodic callbacks.
For example, steam uses this to run its callbacks.
2015-01-23 21:50:26 -05:00
Tom Rothamel d370760071 Code to demonstrate binding a Steam callback. 2015-01-22 21:12:35 -05:00
Tom Rothamel 0310e60b1c Add _renpysteam module.
For now, this just initializes steam, to prove the linking is correct.
2015-01-21 22:23:28 -05:00
Tom Rothamel 54614e2b83 steam: Add support for building c++ extensions. 2015-01-21 22:20:01 -05:00
Tom Rothamel 92032f123b iap: Update Android support. 2015-01-21 22:15:25 -05:00
Tom Rothamel f799dfcb31 Doc fix. 2015-01-18 23:20:07 -05:00
Tom Rothamel 99698fdd06 iap: Add the ability to query the price from the server. 2015-01-18 23:19:48 -05:00
Tom Rothamel 4bf0b7ca67 iap: iOS: Purchase, restore purchases, and defer purchases. 2015-01-18 20:51:56 -05:00
javimat 685fd09a75 Update 00updater.rpy
Add the translation function _() to `raise UpdateError` strings because they are showed to the end user.

Don't know how this can be done in line 1030: `raise UpdateError("While unpacking {}, unknown type {}.".format(info.name, info.type))`
2015-01-17 12:02:28 +01:00
Tom Rothamel 75825e7c2c iap: Set and validate product identifiers. 2015-01-17 05:05:25 -05:00
Tom Rothamel 052ec96f54 iap: Start work on iOS. 2015-01-16 23:17:37 -05:00
Tom Rothamel a4ab8fa083 Control log-to-stdout via a config variable. 2015-01-16 23:17:11 -05:00
Tom Rothamel 75e5a29470 Do not error out if a slot doesn't exist.
Fixes #493.
2015-01-14 17:32:00 -05:00
Tom Rothamel 04db67cad7 Do not pass parent's style prefix to Bar or Drag.
Fixes #500.
2015-01-14 17:27:15 -05:00
Tom Rothamel 0550a85716 When an error occurs while loading an image, report the image. 2015-01-13 08:56:19 -05:00
Tom Rothamel 91d5f6cc21 Add context manager that changes exception_info. 2015-01-13 08:55:59 -05:00
Tom Rothamel 82433d3dc0 Add ios presplash to build, allow Android to use .png. 2015-01-12 21:44:04 -05:00
Tom Rothamel 663cac933f Deal with audio with an initial PTS.
We were ignoring an initial PTS on the video track, but not the
audio. This could cause the two tracks to go out of sync.
2015-01-12 21:43:28 -05:00
Tom Rothamel 520ff08595 Prevent segfault when audio stream is unknown.
More accurately, prevent a segfault from occuring when we know
that an audio stream exists, but we are unable to create the
codec for it.
2015-01-11 10:54:53 -05:00
Tom Rothamel 95e12cab07 tts: Add clipboard voicing. 2015-01-10 21:29:21 -05:00
Tom Rothamel 52093520fd Do not pop open the text editor on Android configuration fail. 2015-01-10 11:59:47 -05:00
Tom Rothamel f92e459801 Remove debug print. 2015-01-10 00:22:14 -05:00
Tom Rothamel b8d08dda5a gesture: Implement support for gestures on touchscreen devices. 2015-01-09 23:05:58 -05:00
Tom Rothamel f8453fc4fd Optionally, log gl function names before each call.
This makes it possible to debug crashes in GL code.
2015-01-08 22:37:53 -05:00
Tom Rothamel c5c3a57f9d Log to stdout on mobile platforms.
The various mobile platfors redirect stdout to places that are more
visible than the filesystem.
2015-01-08 22:37:21 -05:00
Tom Rothamel 83245c7432 Parameterize children of Sprites.
This ensures that Transforms used as children of Sprites maintain
their own state (or more precisely, all Transforms added in a
single frame will have a state different than Transforms from
other frames).

Fixes #529.
2015-01-07 21:45:07 -05:00
Tom Rothamel 5715bdec00 Return False when checking if unknown items have been purchased. 2015-01-07 18:09:06 -05:00
Tom Rothamel c57253cfce Fix divide-by-zero.
Fixes #521.
2015-01-07 18:07:59 -05:00
Tom Rothamel 85fa790711 Add _progress screen.
Accessed by shift+alt+P, this easter egg of a screen show how much
of the game has been played through.
2015-01-05 21:41:46 -05:00
Tom Rothamel c379dd6bc3 Drags now support focus_mask. 2015-01-05 21:41:18 -05:00
Tom Rothamel e42d04ad9e Always use a max-size window on iOS and Android.
Letting the system choose means we can't be caught by unfortunate
rotations.
2015-01-05 20:40:00 -05:00
Tom Rothamel f361f7d0ef Do not force a big window on the desktop.
Some mobile code was leaking over to the desktop side.
2015-01-04 11:52:44 -05:00
Tom Rothamel 69bd85f98f Update docs. 2015-01-03 18:18:31 -05:00
Tom Rothamel b4cee2db25 Automatically maintain the text input state and text rectangle. 2015-01-03 18:07:14 -05:00
Tom Rothamel b16e7ebf8e Compat for renpy.styleclass.
Fixes #518.
2015-01-02 21:59:41 -05:00
Tom Rothamel 4f9dcd4fdc Stroke both font borders when creating outlines.
Previously we only stroked the outside border. This caused problems
when a portion of the character had an interior border on the
outside.

For example, we encountered a ? character where the top
part was outside and the bottom part was inside - it seems to
have something to do with the clockwise/counterclockwise order
of the font's control points.
2015-01-02 21:38:11 -05:00
Tom Rothamel 3dc33d4238 Add support for IME-based text editing to Input. 2015-01-02 21:06:29 -05:00
Tom Rothamel aa16b64225 Add support for n-thickness underlines to {u}. 2015-01-02 20:27:34 -05:00
Tom Rothamel f93d3b9fc9 Fix parsing of word-like operators in simple_expressions. 2015-01-02 20:12:38 -05:00
Tom Rothamel 250103bf4e Deal with empty unicode events. 2015-01-01 14:01:30 -05:00
Tom Rothamel bc6767bdf4 Ignore key events when an IME is in use. 2015-01-01 14:00:56 -05:00
Tom Rothamel 15a6b39a40 Add support for double-underline.
This isn't user-exposed, it's just for IME use.
2015-01-01 14:00:08 -05:00
Tom Rothamel 83352e3e29 Input uses TEXTINPUT events, if possible. 2015-01-01 00:20:00 -05:00
Tom Rothamel c8c52477c9 When on mac, allow the user to try to launch Xcode. 2014-12-31 20:41:47 -05:00
Tom Rothamel 042ae30b62 Sanitize Xcode identifiers. 2014-12-31 20:29:28 -05:00
Tom Rothamel b9f3bbe950 Distribute Ren'Py files into ios apps. 2014-12-31 00:40:51 -05:00
Tom Rothamel 2fd1416ce4 Interface for Xcode project creation. 2014-12-30 23:43:54 -05:00
Tom Rothamel 722c99ed04 Select/Open Xcode projects directory. 2014-12-29 23:16:33 -05:00
Tom Rothamel b59c94ad7f Factor the directory chooser into its own function. 2014-12-29 22:51:43 -05:00
Tom Rothamel 547a504f7b Add iOS launcher UI. 2014-12-28 22:35:04 -05:00
Tom Rothamel 51a168c12f Add the ability to emulate iOS devices. 2014-12-28 22:34:43 -05:00
Tom Rothamel 3573a42ef7 Factor mobile build stuff common to android/ios into own file. 2014-12-28 18:33:24 -05:00
Tom Rothamel 23d69c7c8e android: Add the ability to launch after the build. 2014-12-27 21:15:31 -05:00
Tom Rothamel 77e44a5ab5 Use pysdlsound on all platforms, including Android. 2014-12-26 23:37:45 -05:00
Tom Rothamel b892ca4791 Merge pull request #517 from evilantishad0w/master
added "suspend_rollback()" functionality
2014-12-26 18:13:16 -05:00
evilantishad0w 4775d4f082 removed extraneous line
^^;;
2014-12-26 14:11:49 -07:00
Tom Rothamel 2148a68df8 Remove legacy SDL_VIDEODRIVER setting.
Fixes a problem when upgrading Ren'Py from 6.18.
2014-12-26 16:06:28 -05:00
evilantishad0w 52a8fd1b63 changed to suspend_rollback(), fixes 2014-12-26 13:20:47 -07:00
evilantishad0w 422db61d71 add renpy.rollback_skip()
Add functionality to skip a block of code in rollback, used to prevent
rollback during a minigame or other similar event
2014-12-26 12:46:31 -07:00
Tom Rothamel 749462beec Make hardware video optional. 2014-12-25 16:29:59 -05:00
Tom Rothamel 8726c6d50b Select device variants on iOS. 2014-12-24 15:10:36 -05:00
Tom Rothamel 6ae531e893 Protect against crashes due to no player existing. 2014-12-24 15:06:10 -05:00
Tom Rothamel dc117ffbe1 Remove a debug print. 2014-12-23 23:24:55 -05:00
Tom Rothamel 40e3eaaf64 Add an iOS video player. 2014-12-23 23:09:37 -05:00
Tom Rothamel 72e4607e82 Factor the android video player out into its own class. 2014-12-23 23:09:15 -05:00
Tom Rothamel cfdaa95bea Pause native and android audio and video on suspend. 2014-12-22 21:52:56 -05:00
Tom Rothamel 2be0638602 Fix build on iOS. 2014-12-22 21:52:47 -05:00
Tom Rothamel 6ec5a0c122 Support resize on mobile platforms. 2014-12-18 21:28:26 -05:00
Tom Rothamel fd1902ecd2 Package renios. 2014-12-17 23:03:09 -05:00
Tom Rothamel ec77844b1a Bump version. 2014-12-17 23:02:57 -05:00
Tom Rothamel 8c238ae4ff Optionally accept the path to pygame_sdl2 to use for the build. 2014-12-16 23:13:42 -05:00
Tom Rothamel 4c909922d4 Properly make prefixed_all_properties public. 2014-12-16 22:21:46 -05:00
Tom Rothamel 8358539667 Make new modules findable by modulefinder. 2014-12-15 23:37:07 -05:00
Tom Rothamel 5c87617652 Replace some android tests with mobile device tests. 2014-12-14 22:16:17 -05:00
Tom Rothamel a102a7dca9 Use fbo to render-to-texture on iOS.
This also includes changing rtt_fbo to retrieve the default
framebuffer, rather than using fbo 0 (as documented by GL).
2014-12-14 22:02:13 -05:00
Tom Rothamel a2e8758965 On iOS, log to stdout.
So xcode gets it, rather than it becoming unaccessable.
2014-12-14 21:57:22 -05:00
Tom Rothamel 5914e9317c Find the iOS save directory. 2014-12-14 18:29:17 -05:00
Tom Rothamel 094dbe7386 Fixes to support GL on iOS. 2014-12-13 23:50:11 -05:00
Tom Rothamel 84debf31c7 Remove recursive imports in the style code. 2014-12-13 23:49:41 -05:00
Tom Rothamel 5afacd4dec The enum is not defined in GLES2. 2014-12-13 23:48:45 -05:00
Tom Rothamel 4221eb049f Move android detect to renpy module, add renpy.mobile.
The latter is a flag that determines if we're on android or ios,
inclusive. (These platforms tend to behave similarly, and different
from the desktop platforms.)
2014-12-13 23:45:14 -05:00
Tom Rothamel 4971ff139f Fix renpy.style.StyleCore.__setattr__.
It was using the wrong variable name.
2014-12-12 00:18:10 -05:00
Tom Rothamel e5a50b4b4d Remove renpy.styleclass entirely.
Its functionality has been split over the many renpy.styledata modules.
2014-12-12 00:17:31 -05:00
Tom Rothamel 5222a47b9d Break stylepropertyfunctions.pxi up into ten pyx files.
The hope is this will allow faster independent compilation.
2014-12-11 23:51:25 -05:00
Tom Rothamel 98afd6402c Only generate python properties for unprefixed style properties.
To reduce the size of the compiled library, we replace the use of
python properties for prefixed style properties with the __setattr__
and __delattr__ methods.

This shouldn't have much performance impact, as sets of style
properties should only occur in init code.
2014-12-10 23:13:21 -05:00
Tom Rothamel 24fdc18a47 Start breaking styleclass.pyx up into renpy.styledata.
This should eventually make compilation faster.
2014-12-10 21:46:58 -05:00
Tom Rothamel e5632b27b2 Changes to make build on iOS. 2014-12-09 19:24:40 -05:00
Tom Rothamel 14db5d588f Add support for android on pygame_sdl2. 2014-12-09 19:24:18 -05:00
Tom Rothamel dbb990c0f7 Merge pull request #504 from tlm-2501/patch-1
Merge "Update language_basics.rst" from tlm-2501/patch-1
2014-12-01 21:07:18 -05:00
Tom Rothamel a34bed7e11 Implement android/iOS lifecycle. 2014-11-30 22:22:54 -05:00
Tom Rothamel 7c61befcb0 import pygame_sdl2 as pygame, instead of import pygame.
This is intended to make autocomplete use pygame_sdl2 when
legacy names exist.
2014-11-30 19:29:57 -05:00
Tom Rothamel 9381c7399b Do not run desktop-only code when playing android video. 2014-11-30 17:15:13 -05:00
tlm-2501 439365977f Update language_basics.rst
Fixed escape sequences -- backslashes weren't escaped, as a result they were not visible.
2014-11-30 01:38:41 +03:00
Tom Rothamel 5b3a7bf02e Import _android_sound. 2014-11-29 11:41:43 -05:00
Tom Rothamel 1be45fb2d4 Android keybindings. 2014-11-29 11:40:28 -05:00
Tom Rothamel a327517cf8 Link against png16. 2014-11-29 11:38:47 -05:00
Tom Rothamel f9204ad5a0 Set GL_ALPHA_SIZE to 8 on all GL platforms (incl. Android). 2014-11-29 01:48:23 -05:00
Tom Rothamel 5b5a7ab907 Fix a a problem where we free an unallocated object. 2014-11-28 23:18:44 -05:00
Tom Rothamel 634bb3ad64 Use the new approach to get the activity. 2014-11-28 22:18:26 -05:00
Tom Rothamel 329d8d3ee1 Move gl1 functions into their own file.
Now that we're wrapping the GL functions, all the functions in gl.pyx
have to exist. The gl1 functions are missing on GLES2 systems, which
means they can't exist in a file we use there. Hence breaking things
up into two files.
2014-11-28 21:59:04 -05:00
tlm 24c7e845c3 Added a Russian translation for the tutorial game 2014-11-26 20:39:04 +03:00
Tom Rothamel 3f01f49da3 Link android against SDL2. 2014-11-23 22:28:37 -05:00
Tom Rothamel 6d7c28560c gl: Error checks controlled by RENPY_GL_CHECK_ERRORS. 2014-11-19 22:38:13 -05:00
Lapalissiano 23931a5676 Ignored virtualenv 'env' folder 2014-11-20 04:07:54 +01:00
Giuseppe Bertone b4dd9f6878 Fixed tab; 2014-11-20 03:20:10 +01:00
Giuseppe Bertone 2903b81360 Empty strings are now optional while exporting strings for translation, and you can use a specific option in the preference panel to activate this behavior (default is false); 2014-11-20 03:17:52 +01:00
Tom Rothamel 942cf82354 gl: Add function name to gl error messages. 2014-11-18 22:21:54 -05:00
Tom Rothamel 4dcdd1ad65 gl: Check for errors after every call. 2014-11-17 23:31:04 -05:00
Tom Rothamel a2a3c284a3 Initialize angle under pygame_sdl2. 2014-11-16 00:25:10 -05:00
Tom Rothamel 4497d5e30f Use the single-file pygame_sdl2 C api. 2014-11-16 00:24:46 -05:00
Tom Rothamel 9c5e037db6 Merge branch 'master' into sdl2 2014-11-15 23:10:15 -05:00
Tom Rothamel 2b6c7941d6 Do not predict labels that do not exist.
Fixes #491.
2014-11-14 19:52:13 -05:00
Tom Rothamel 4e11d77258 We no longer need to force windib. (Which no longer exists.) 2014-11-12 21:48:31 -05:00
Tom Rothamel 9791e379e3 Build w/ SDL2 on Windows.
For now, ANGLE is disabled. At some point, we'll try to use SDL to
initialize it.
2014-11-11 09:59:01 -05:00
Tom Rothamel b59dc7906c Only copy ANGLE files if they're out of date. 2014-11-11 00:08:00 -05:00
Tom Rothamel 253726c433 Merge branch 'master' into sdl2 2014-11-07 22:22:34 -05:00
Tom Rothamel 06e3a75515 Add \[ as a way of escaping [.
This just replaces \[ with [[, which continues to work.

Fixes #489.
2014-11-07 22:21:21 -05:00
Tom Rothamel 2925e1e64f nogil_copy should copy without using the alpha channel. 2014-11-07 22:15:02 -05:00
Tom Rothamel ead574ae6b Report a traceback when pysdlsound fails to import. 2014-11-06 23:02:37 -05:00
Tom Rothamel 1f4d4cd974 Zero out the audio buffer before mixing samples into it.
This is necessary for SDL 2.
2014-11-06 20:49:05 -05:00
Tom Rothamel 2deaf3689a RWOpsFromPythonThreaded -> RWOpsFromPython
In pygame_sdl2, rwops is always threadsafe.
2014-11-05 23:59:39 -05:00
kalawore 2847f42707 add templates traditional_chinese translation 2014-08-18 21:52:20 +08:00
kalawore 28872407c3 Update traditional Chinese 2014-08-06 20:04:12 +08:00
kalawore ab7adb8b3a Merge github.com:renpy/renpy 2014-07-20 15:36:40 +08:00
kalawore e70be78e65 Signed-off-by: kalawore <kalawore@outlook.com> 2014-07-19 15:49:42 +08:00
kalawore cd95838191 Add Chinese_Traditional Translation 2014-07-14 16:36:51 +08:00
618 changed files with 44804 additions and 13774 deletions
+10 -4
View File
@@ -10,10 +10,11 @@
saves
tmp
cache
env
log.txt
/errors.txt
/traceback.txt
errors.txt
traceback.txt
styles.txt
@@ -48,7 +49,12 @@ styles.txt
/launcher/game/theme
/launcher/game/script_version.rpy
dl
/dl
renpy/vc_version.py
.externalToolBuilders
rapt
/rapt
/evil
/iaptest
/pygame_sdl2
/renios
/steam_appid.txt
+24 -10
View File
@@ -49,30 +49,44 @@ 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::
apt-get install python-dev python-pygame libavcodec-dev libavformat-dev \
libavresample-dev libfreetype6-dev libglew1.6-dev libsdl1.2-dev \
libsdl-image1.2-dev libfribidi-dev libswscale-dev libesd0-dev libpulse-dev
Other platforms may have an equivalent command. Otherwise, you'll need to
build `renpy-deps <https://github.com/renpy/renpy-deps>`_.
apt-get install virtualenvwrapper python-dev libavcodec-dev libavformat-dev \
libavresample-dev libswscale-dev libfreetype6-dev libglew1.6-dev \
libfribidi-dev libsdl2-dev libsdl2-image-dev libsdl2-gfx-dev \
libsdl2-mixer-dev libsdl2-ttf-dev libjpeg-turbo8-dev
We strongly suggest installing the Ren'Py modules into a Python
virtualenv. `This page <http://dabapps.com/blog/introduction-to-pip-and-virtualenv-python/>`_
describes how to install pip and the virtualenv tool, and set up a new virtualenv.
virtualenv. To create a new virtualenv, open a new terminal and run::
mkvirtualenv renpy
To return to this virtualenv later, run::
workon renpy
After activating the virtualenv, install cython::
pip install -U cython
Then, install pygame_sdl2 by running the following commands::
git clone https://www.github.com/renpy/pygame_sdl2
pushd pygame_sdl2
python fix_virtualenv.py $VIRTUAL_ENV
python setup.py install
popd
Next, set RENPY_DEPS_INSTALL To a \::-separated list of paths containing the
dependencies, and RENPY_CYTHON to the name of the cython command::
export RENPY_DEPS_INSTALL=/usr::/usr/lib/x86_64-linux-gnu/
export RENPY_DEPS_INSTALL="/usr::/usr/lib/x86_64-linux-gnu/"
export RENPY_CYTHON=cython
Finally, change into the `modules` directory, and run::
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::
+56 -19
View File
@@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python2
import argparse
import os
@@ -7,6 +7,15 @@ import sys
from renpy import version_tuple #@UnresolvedImport
SOURCE = [
"/home/tom/ab/renpy",
"/home/tom/ab/android/",
"/home/tom/ab/android/python-for-android",
"/home/tom/ab/ripe/renios",
"/home/tom/ab/renpy-deps",
"/home/tom/ab/pygame_sdl2",
]
version = ".".join(str(i) for i in version_tuple)
short_version = ".".join(str(i) for i in version_tuple[:3])
print "Version", version
@@ -17,9 +26,36 @@ ap.add_argument("--release", action="store_true")
ap.add_argument("--prerelease", action="store_true")
ap.add_argument("--experimental", action="store_true")
ap.add_argument("--no-tag", "-n", action="store_true")
ap.add_argument("--push-tags", action="store_true")
ap.add_argument("--delete-tag")
args = ap.parse_args()
if args.delete_tag:
for i in SOURCE:
os.chdir(i)
if i == SOURCE[0]:
tag = args.delete_tag
else:
tag = "renpy-" + args.delete_tag
subprocess.call([ "git", "tag", "-d", tag, ])
sys.exit(0)
if args.push_tags:
for i in SOURCE:
os.chdir(i)
if subprocess.call([ "git", "push", "--tags" ]):
print "Tags not pushed: {}".format(os.getcwd())
sys.exit(1)
print "Pushed tags."
sys.exit(0)
if args.release:
links = [ "release", "prerelease", "experimental" ]
tag = True
@@ -33,23 +69,28 @@ else:
links = [ ]
tag = False
if args.no_tag:
tag = False
def check_dirty():
if args.no_tag:
return
if tag:
for i in SOURCE:
os.chdir(i)
if subprocess.check_call([ "git", "diff", "--quiet", "HEAD" ]):
print "Directory not checked in: {}".format(os.getcwd())
sys.exit(1)
if subprocess.call([ "git", "diff", "--quiet", "HEAD" ]):
print "Directory not checked in: {}".format(os.getcwd())
sys.exit(1)
os.chdir("/home/tom/ab/renpy")
check_dirty()
for i in SOURCE:
os.chdir("/home/tom/ab/renpy/android")
check_dirty()
os.chdir(i)
if i == SOURCE[0]:
tag = version
else:
tag = "renpy-" + version
subprocess.check_call([ "git", "tag", "-a", tag, "-m", "Tagging Ren'Py + " + version + " release." ])
if not args.no_tag:
subprocess.check_call([ "git", "tag", "-a", "rapt-" + version, "-m", "Tagging RAPT release." ])
os.chdir("/home/tom/ab/renpy/dl")
@@ -58,11 +99,7 @@ for i in links:
os.unlink(i)
os.symlink(short_version, i)
os.chdir("/home/tom/ab/renpy")
if tag and not args.no_tag:
cmd = [ "git", "tag", "-a", version, "-m", "Ren'Py " + version ]
subprocess.check_call(cmd)
os.chdir("/home/tom/ab/website")
subprocess.check_call("./upload.sh")
print "Version", version
+1 -1
View File
@@ -1,2 +1,2 @@
lib\windows-i686\python.exe -OO renpy.py
lib\windows-i686\python.exe -OO renpy.py tutorial
pause
+33 -34
View File
@@ -1,4 +1,4 @@
#!/home/tom/bin/renpython -O
#!/home/tom/ab/renpy/lib/linux-x86_64/python -O
# Builds a distribution of Ren'Py.
@@ -10,6 +10,9 @@ import subprocess
import argparse
import glob
if not sys.flags.optimize:
raise Exception("Optimization disabled.")
ROOT = os.path.dirname(os.path.abspath(__file__))
def copy_tutorial_file(src, dest):
@@ -45,6 +48,8 @@ def main():
ap = argparse.ArgumentParser()
ap.add_argument("version")
ap.add_argument("--fast", action="store_true")
ap.add_argument("--pygame", action="store", default=None)
ap.add_argument("--no-rapt", action="store_true")
args = ap.parse_args()
@@ -56,7 +61,6 @@ def main():
import renpy
match_version = ".".join(str(i) for i in renpy.version_tuple[:2]) #@UndefinedVariable
zip_version = ".".join(str(i) for i in renpy.version_tuple[:3]) #@UndefinedVariable
s = subprocess.check_output([ "git", "describe", "--tags", "--dirty", "--match", match_version ])
parts = s.strip().split("-")
@@ -80,13 +84,13 @@ def main():
reload(sys.modules['renpy'])
# Check that the versions match.
full_version = ".".join(str(i) for i in renpy.version_tuple) #@UndefinedVariable
if args.version != "renpy-experimental" \
and not args.version.startswith("renpy-nightly-") \
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.")
os.environ['RENPY_BUILD_VERSION'] = args.version
# The destination directory.
destination = os.path.join("dl", args.version)
@@ -103,42 +107,29 @@ def main():
# Compile all the python files.
compileall.compile_dir("renpy/", ddir="renpy/", force=1, quiet=1)
# Generate launcher/game/script_version.rpy
with open("launcher/game/script_version.rpy", "w") as f:
f.write("init -999 python:\n")
f.write(" config.script_version = {!r}\n".format(renpy.version_tuple[:3])) # @UndefinedVariable
# Compile the various games.
if not args.fast:
for i in [ 'tutorial', 'launcher', 'the_question' ] + glob.glob("templates/*"):
for i in [ 'tutorial', 'launcher', 'the_question' ]:
print "Compiling", i
subprocess.check_call(["./renpy.sh", i, "quit" ])
# Kick off the rapt build.
if not args.fast:
out = open("/tmp/rapt_build.txt", "wb")
print("Building RAPT.")
print "Cleaning RAPT."
android = os.path.abspath("android")
sys.path.insert(0, os.path.join(ROOT, "rapt", "buildlib"))
rapt_build = subprocess.Popen([
os.path.join(android, "build_renpy.sh"),
"renpy",
ROOT,
],
cwd = android,
stdout=out,
stderr=out)
import rapt.interface # @UnresolvedImport
import rapt.build # @UnresolvedImport
code = rapt_build.wait()
interface = rapt.interface.Interface()
rapt.build.distclean(interface)
if code:
print "RAPT build failed. The output is in /tmp/rapt_build.txt."
sys.exit(1)
else:
print "RAPT build succeeded."
print "Compiling RAPT and renios."
compileall.compile_dir("rapt/buildlib/", ddir="rapt/buildlib/", quiet=1)
compileall.compile_dir("renios/buildlib/", ddir="renios/buildlib/", quiet=1)
if not os.path.exists(destination):
os.makedirs(destination)
@@ -178,12 +169,17 @@ def main():
os.path.join(destination, "updates.json"),
])
# Package pygame_sdl2.
if not args.fast:
subprocess.check_call([
"pygame_sdl2/distribute.py",
"for-renpy-" + args.version,
"--dest",
os.path.abspath(destination)
])
# Write 7z.exe.
sdk = "renpy-{}-sdk".format(zip_version)
if args.version.startswith("renpy-nightly-"):
sdk = args.version + "-sdk"
sdk = "renpy-{}-sdk".format(args.version)
if not args.fast:
@@ -233,5 +229,8 @@ def main():
print
if __name__ == "__main__":
main()
+148 -102
View File
@@ -2,131 +2,177 @@
<head>
<title>README</title>
<style>
BODY {
background: #fff;
color: #444;
padding-left: 20%;
padding-top: 1em;
padding-bottom: 1em;
padding-right: 20%;
font-family: sans-serif;
line-height: 1.6em;
background: #fff;
color: #444;
padding-left: 20%;
padding-top: 1em;
padding-bottom: 1em;
padding-right: 20%;
font-family: sans-serif;
line-height: 1.6em;
}
DT {
font-weight: bold;
margin-top: .33em;
font-weight: bold;
margin-top: .33em;
}
H2 {
color: #000;
margin-left: -2.5em;
color: #000;
margin-left: -2.5em;
}
H3 {
color: #000;
margin-left: -1.5em;
color: #000;
margin-left: -1.5em;
}
.editsection {
display: none;
display: none;
}
</style>
</head>
<body>
<div id="renpy_help"></div>
<h2>Basic Help</h2>
<p>
To advance through the game, <tt>left-click</tt> or press the <tt>space</tt> or <tt>enter</tt> keys. When at a menu,
<tt>left-click</tt> to make a choice, or use the arrow keys to select a choice and <tt>enter</tt> to activate it.
</p>
<h3>Game Menu</h3>
<p>
When playing a game, <tt>right-click</tt> or press the <tt>escape</tt> key to enter the game menu. The game menu
gives the following choices:
</p>
<dl>
<dt>Return</dt>
<dd>Returns to the game.</dd>
<dt>Save Game</dt>
<dd>Allows you to save a game by clicking on a save slot.</dd>
<dt>Load Game</dt>
<dd>Allows you to load a game by clicking on a save slot. Clicking on "Auto" accesses the automatic save slots.</dd>
<dt>Preferences</dt>
<dd>
Changes the game preferences (options/configuration):
<dl>
<dt>Display</dt>
<dd>Switches between fullscreen and windowed mode.</dd>
<dt>Transitions</dt>
<dd>Controls the display of transitions between game screens.</dd>
<dt>Text Speed</dt>
<dd>Controls the rate at which text displays. The further to the right this slider is, the faster the text
will display. All the way to the right causes text to be shown instantly.</dd>
<dt>Joystick</dt>
<dd>Lets you control the game using a joystick.</dd>
<dt>Skip</dt>
<dd>Chooses between skipping messages that have been already seen (in any play through the game), and
skipping all messages.</dd>
<dt>Begin Skipping</dt>
<dd>Returns to the game, while skipping.</dd>
<dt>After Choices</dt>
<dd>Controls if skipping stops upon reaching a menu.</dd>
<dt>Auto-Forward Time</dt>
<dd>Controls automatic advance. The further to the left this slider is, the shorter the amount of time
before the game advances. All the way to the right means text will never auto-forward.</dd>
<dt>Music, Sound, and Voice Volume</dt>
<dd>Controls the volume of the Music, Sound effect, and Voice channels, respectively. The further to the
right these are, the louder the volume.</dd>
</dl>
</dd>
<dt>Main Menu</dt>
<dd>Returns to the main menu, ending the current game.</dd>
<dt>Help</dt>
<dd>Shows this help screen.</dd>
<dt>Quit</dt>
<dd>Exits the game; the game will be closed and ended.</dd>
</dl>
<h3>Key and Mouse Bindings</h3>
<dl>
<dt>Left-click, Enter</dt>
<dd>Advances through the game, activates menu choices, buttons, and sliders.</dd>
<dt>Space</dt>
<dd>Advances through the game, but does not activate choices.</dd>
<dt>Arrow Keys</dt>
<dd>Navigates between menu choices, buttons, and sliders.</dd>
<dt>Ctrl</dt>
<dd>Causes skipping to occur while the ctrl key is held down.</dd>
<dt>Tab</dt>
<dd>Toggles skipping, causing it to occur until tab is pressed again.</dd>
<dt>Mousewheel-Up, PageUp</dt>
<dd>Causes rollback to occur. Rollback reverses the game back in time, showing prior text and even allowing
menu choices to be changed.</dd>
<dt>Mousewheel-Down, PageDown</dt>
<dd>Causes rollforward to occur, canceling out a previous rollback.</dd>
<dt>Right-click, Escape</dt>
<dd>Enters the game menu. When in the game menu, returns to the game.</dd>
<dt>Middle-click, H</dt>
<dd>Hides the text window and other transient displays.</dd>
<dt>F</dt>
<dd>Toggles fullscreen mode</dd>
<dt>S</dt>
<dd>Takes a screenshot, saving it in a file named screenshotxxxx.png, where xxxx is a serial number.</dd>
<dt>Alt-M, Command-H</dt>
<dd>Hides (iconifies) the window.</dd>
<dt>Alt-F4, Command-Q</dt>
<dd>Quits the game.</dd>
<dt>Delete</dt>
<dd>When a save slot is selected, deletes that save slot.</dd>
<dt>v</dt>
<dd>
Toggles self-voicing mode, which reads text to the user using an os-supplied speech synthesizer. For more
information, please read the <a href="http://www.renpy.org/doc/html/self_voicing.html">self-voicing</a>
documentation.
</dd>
<dt>Shift+C</dt>
<dd>Toggles clipboard-voicing mode, which copies text to the clipboard so it can be read by a screen reader.</dd>
</dl>
<p><a name="Basic_Help" id="Basic_Help"></a></p>
<h2><span class="editsection">[<a href="/w/index.php?title=renpy/Help&amp;action=edit&amp;section=1" title="Edit section: Basic Help">edit</a>]</span> <span class="mw-headline">Basic Help</span></h2>
<p>To advance through the game, <tt>left-click</tt> or press the <tt>space</tt> or <tt>enter</tt> keys. When at a menu, <tt>left-click</tt> to make a choice, or use the arrow keys to select a choice and <tt>enter</tt> to activate it.</p>
<p><a name="Game_Menu" id="Game_Menu"></a></p>
<h3><span class="editsection">[<a href="/w/index.php?title=renpy/Help&amp;action=edit&amp;section=2" title="Edit section: Game Menu">edit</a>]</span> <span class="mw-headline">Game Menu</span></h3>
<p>When playing a game, <tt>right-click</tt> or press the <tt>escape</tt> key to enter the game menu. The game menu gives the following choices:</p>
<dl>
<dt>Return</dt>
<dd>Returns to the game.</dd>
<dt>Save Game</dt>
<dd>Allows you to save a game by clicking on a save slot.</dd>
<dt>Load Game</dt>
<dd>Allows you to load a game by clicking on a save slot. Clicking on "Auto" accesses the automatic save slots.</dd>
<dt>Preferences</dt>
<dd>Changes the game preferences (options/configuration):
<dl>
<dt>Display</dt>
<dd>Switches between fullscreen and windowed mode.</dd>
<dt>Transitions</dt>
<dd>Controls the display of transitions between game screens.</dd>
<dt>Text Speed</dt>
<dd>Controls the rate at which text displays. The further to the right this slider is, the faster the text will display. All the way to the right causes text to be shown instantly.</dd>
<dt>Joystick</dt>
<dd>Lets you control the game using a joystick.</dd>
<dt>Skip</dt>
<dd>Chooses between skipping messages that have been already seen (in any play through the game), and skipping all messages.</dd>
<dt>Begin Skipping</dt>
<dd>Returns to the game, while skipping.</dd>
<dt>After Choices</dt>
<dd>Controls if skipping stops upon reaching a menu.</dd>
<dt>Auto-Forward Time</dt>
<dd>Controls automatic advance. The further to the left this slider is, the shorter the amount of time before the game advances. All the way to the right means text will never auto-forward.</dd>
<dt>Music, Sound, and Voice Volume</dt>
<dd>Controls the volume of the Music, Sound effect, and Voice channels, respectively. The further to the right these are, the louder the volume.</dd>
</dl>
</dd>
</dl>
<dl>
<dt>Main Menu</dt>
<dd>Returns to the main menu, ending the current game.</dd>
<dt>Help</dt>
<dd>Shows this help screen.</dd>
<dt>Quit</dt>
<dd>Exits the game; the game will be closed and ended.</dd>
</dl>
<p><a name="Key_and_Mouse_Bindings" id="Key_and_Mouse_Bindings"></a></p>
<h3><span class="editsection">[<a href="/w/index.php?title=renpy/Help&amp;action=edit&amp;section=3" title="Edit section: Key and Mouse Bindings">edit</a>]</span> <span class="mw-headline">Key and Mouse Bindings</span></h3>
<dl>
<dt>Left-click, Enter</dt>
<dd>Advances through the game, activates menu choices, buttons, and sliders.</dd>
<dt>Space</dt>
<dd>Advances through the game, but does not activate choices.</dd>
<dt>Arrow Keys</dt>
<dd>Selects menu choices, buttons, and sliders.</dd>
<dt>Ctrl</dt>
<dd>Causes skipping to occur while the ctrl key is held down.</dd>
<dt>Tab</dt>
<dd>Toggles skipping, causing it to occur until tab is pressed again.</dd>
<dt>Mousewheel-Up, PageUp</dt>
<dd>Causes rollback to occur. Rollback reverses the game back in time, showing prior text and even allowing menu choices to be changed.</dd>
<dt>Mousewheel-Down, PageDown</dt>
<dd>Causes rollforward to occur, cancelling out a previous rollback.</dd>
<dt>Right-click, Escape</dt>
<dd>Enters the game menu. When in the game menu, returns to the game.</dd>
<dt>Middle-click, H</dt>
<dd>Hides the text window and other transient displays.</dd>
<dt>F</dt>
<dd>Toggles fullscreen mode</dd>
<dt>S</dt>
<dd>Takes a screenshot, saving it in a file named screenshotxxxx.png, where xxxx is a serial number.</dd>
<dt>Alt-M, Command-H</dt>
<dd>Hides (iconifies) the window.</dd>
<dt>Alt-F4, Command-Q</dt>
<dd>Quits the game.</dd>
<dt>Delete</dt>
<dd>When a save slot is selected, deletes that save slot.</dd>
<dt>v</dt>
<dd>Toggles self-voicing mode, which reads text to the user using an os-supplied
speech synthesizer. For more information, please read the <a href="http://www.renpy.org/dev-doc/html/self_voicing.html">self-voicing</a>
documentation.</dd>
</dl>
<p><a name="Legal_Notice" id="Legal_Notice"></a></p>
<h2><span class="editsection">[<a href="/w/index.php?title=renpy/Help&amp;action=edit&amp;section=4" title="Edit section: Legal Notice">edit</a>]</span> <span class="mw-headline">Legal Notice</span></h2>
<p>This game uses source code from a number of open source projects. For a list, and a location where the source code can be downloaded from, please view the LICENSE.txt file in the renpy directory, or visit <a href="http://www.renpy.org/wiki/renpy/License" class="external free" title="http://www.renpy.org/wiki/renpy/License" rel="nofollow">http://www.renpy.org/wiki/renpy/License</a> .</p>
<h3>Controller Support and Bindings</h3>
<p>
This game should automatically detect and use game controllers supported by
SDL2. Other controllers can be configured using third-party configuration tools
like the <a href="http://www.generalarcade.com/gamepadtool/">SDL2 Gampad Tool</a>
</p>
<p>
A small number of systems may have problems using detected game controllers. Should
that happen, hold down shift as the game starts, and disable the controller support.
</p>
<p>The following bindings are used:</p>
<dl>
<dt>Right Trigger, A (Bottom Button)</dt>
<dd>Advances through the game, activates menu choices, buttons, and sliders.</dd>
<dt>Guide, Start</dt>
<dd>Enters the game menu. When in the game menu, returns to the game.</dd>
<dt>Directional Pad, Analog Sticks</dt>
<dd>Navigates between menu choices, buttons, and sliders.</dd>
<dt>Left Trigger, Left Shoulder, Back</dt>
<dd>Causes rollback to occur. Rollback reverses the game back in time, showing prior text and even allowing
menu choices to be changed.</dd>
<dt>Right Shoulder</dt>
<dd>Causes rollforward to occur, canceling out a previous rollback.</dd>
<dt>Y (Top Button)</dt>
<dd>Hides the text window and other transient displays.</dd>
</dl>
<h2>Legal Notice</h2>
<p>
This program contains free software licensed under a number of licenses, including the GNU Lesser Public License. A
complete list of software is available at <a href="http://www.renpy.org/doc/html/license.html">http://www.renpy.org/doc/html/license.html</a>.
</p>
</body>
</html>
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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
+100 -212
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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
@@ -43,15 +43,18 @@ init python:
PLAY_KEYS_TEXT = _("Opens the file containing the Google Play keys in the editor.\n\nThis is only needed if the application is using an expansion APK. Read the documentation for more details.")
BUILD_TEXT = _("Builds the Android package.")
BUILD_AND_INSTALL_TEXT = _("Builds the Android package, and installs it on an Android device connected to your computer.")
BUILD_INSTALL_AND_LAUNCH_TEXT = _("Builds the Android package, installs it on an Android device connected to your computer, then launches the app on your device.")
CONNECT_TEXT = _("Connects to an Android device running ADB in TCP/IP mode.")
DISCONNECT_TEXT = _("Disconnects from an Android device running ADB in TCP/IP mode.")
LOGCAT_TEXT = _("Retrieves the log from the Android device and writes it to a file.")
import subprocess
import re
import os
import json
import glob
def find_rapt():
@@ -61,12 +64,11 @@ init python:
RAPT_PATH = os.path.join(config.renpy_base, "rapt")
if os.path.isdir(RAPT_PATH):
if os.path.isdir(RAPT_PATH) and check_hash_txt("rapt"):
import sys
sys.path.insert(0, os.path.join(RAPT_PATH, "buildlib"))
else:
RAPT_PATH = None
RAPT_PATH is None
find_rapt()
@@ -79,6 +81,8 @@ init python:
import rapt.install_sdk
import rapt.plat
import rapt.interface
rapt.plat.renpy = True
else:
rapt = None
@@ -131,184 +135,6 @@ init python:
else:
return None
class AndroidInterface(object):
def __init__(self):
self.process = None
self.filename = project.current.temp_filename("android.txt")
self.info_msg = ""
with open(self.filename, "w"):
pass
def log(self, msg):
with open(self.filename, "a") as f:
f.write("\n")
f.write(msg)
f.write("\n")
def info(self, prompt):
self.info_msg = prompt
interface.processing(prompt, pause=False)
self.log(prompt)
def yesno(self, prompt, submessage=None):
return interface.yesno(prompt, submessage=submessage)
def yesno_choice(self, prompt, default=None):
choices = [ (True, "Yes"), (False, "No") ]
return interface.choice(prompt, choices, default)
def terms(self, url, prompt):
submessage = _("{a=%s}%s{/a}") % (url, url)
if not interface.yesno(prompt, submessage=submessage):
self.fail("You must accept the terms and conditions to proceed.", edit=False)
def input(self, prompt, empty=None):
if empty is None:
empty = ''
while True:
rv = interface.input(_("QUESTION"), prompt, default=empty, cancel=Jump("android"))
rv = rv.strip()
if rv:
return rv
def choice(self, prompt, choices, default):
return interface.choice(prompt, choices, default, cancel=Jump("android"))
def fail(self, prompt, edit=True):
self.log(prompt)
prompt = re.sub(r'(http://\S+)', r'{a=\1}\1{/a}', prompt)
# Open android.txt in the editor.
if edit:
editor.EditAbsolute(self.filename)()
interface.error(prompt, label="android")
def success(self, prompt):
self.log(prompt)
interface.info(prompt, pause=False)
def final_success(self, prompt):
self.log(prompt)
interface.info(prompt, label="android")
def run_yes_thread(self):
import time
try:
while self.run_yes:
self.process.stdin.write('y\n')
self.process.stdin.flush()
time.sleep(.2)
except:
import traceback
traceback.print_exc()
def call(self, cmd, cancel=False, use_path=False, yes=False):
print
print " ".join(cmd)
self.cmd = cmd
f = open(self.filename, "a")
f.write("\n\n\n")
if cancel:
cancel_action = self.cancel
else:
cancel_action = None
startupinfo = None
if renpy.windows:
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
self.yes_thread = None
try:
interface.processing(self.info_msg, show_screen=True, cancel=cancel_action)
kwargs = { }
if yes:
kwargs["stdin"] = subprocess.PIPE
try:
self.process = subprocess.Popen(cmd, cwd=RAPT_PATH, stdout=f, stderr=f, startupinfo=startupinfo, **kwargs)
except:
import traceback
traceback.print_exc(file=f)
raise
if yes:
import threading
self.run_yes = True
self.yes_thread = threading.Thread(target=self.run_yes_thread)
self.yes_thread.daemon = True
self.yes_thread.start()
renpy.call_screen("android_process", interface=self)
finally:
f.close()
interface.hide_screen()
if yes and self.yes_thread:
self.run_yes = False
self.yes_thread.join()
self.process = None
self.yes_thread = None
def check_process(self):
rv = self.process.poll()
if rv is not None:
if rv:
raise subprocess.CalledProcessError(rv, self.cmd)
else:
return True
def download(self, url, dest):
try:
d = Downloader(url, dest)
cancel_action = [ d.cancel, Jump("android") ]
interface.processing(self.info_msg, show_screen=True, cancel=cancel_action, bar_value=DownloaderValue(d))
ui.timer(.1, action=d.check, repeat=True)
ui.interact()
finally:
interface.hide_screen()
def background(self, f):
try:
t = threading.Thread(target=f)
t.start()
interface.processing(self.info_msg, show_screen=True)
while t.is_alive():
renpy.pause(0)
t.join(0.25)
finally:
interface.hide_screen()
def cancel(self):
if self.process:
self.process.terminate()
renpy.jump("android")
class AndroidBuild(Action):
"""
@@ -321,22 +147,6 @@ init python:
def __call__(self):
renpy.jump(self.label)
class LaunchEmulator(Action):
def __init__(self, emulator, variants):
self.emulator = emulator
self.variants = variants
def __call__(self):
env = {
"RENPY_EMULATOR" : self.emulator,
"RENPY_VARIANT" : self.variants,
}
p = project.current
p.launch(env=env)
def update_android_json(p, gui):
"""
Updates .android.json to include the google play information.
@@ -372,7 +182,7 @@ init python:
with open(filename, "w") as f:
json.dump(android_json, f)
def android_build(command, p=None, gui=True):
def android_build(command, p=None, gui=True, launch=False, destination=None, opendir=False):
"""
This actually builds the package.
"""
@@ -389,7 +199,7 @@ init python:
if gui:
reporter = distribute.GuiReporter()
rapt_interface = AndroidInterface()
rapt_interface = MobileInterface("android")
else:
reporter = distribute.TextReporter()
rapt_interface = rapt.interface.Interface()
@@ -403,8 +213,57 @@ init python:
report_success=False,
)
def finished(files, destination=destination):
source_dir = rapt.plat.path("bin")
try:
destination_dir = destination
# Use default destination if not configured
if gui and destination is None:
build = p.dump['build']
destination = build["destination"]
if destination != "-dists":
parent = os.path.dirname(p.path)
destination_dir = os.path.join(parent, destination)
except:
destination_dir = None
dir_to_open = source_dir
if destination_dir is not None:
reporter.info(_("Copying Android files to distributions directory."))
try:
os.makedirs(destination_dir)
except:
pass
try:
for i in files:
shutil.copy(i, renpy.fsencode(destination_dir))
dir_to_open = destination_dir
except:
import traceback
traceback.print_exc()
pass
if opendir:
store.OpenDirectory(dir_to_open)()
with interface.nolinks():
rapt.build.build(rapt_interface, dist, command)
rapt.build.build(rapt_interface, dist, command, launch=launch, finished=finished)
# The android support can stick unicode into os.environ. Fix that.
init 100 python:
@@ -468,7 +327,8 @@ screen android:
frame style "l_indent":
has vbox
has hbox:
spacing 15
textbutton _("Phone"):
action LaunchEmulator("touch", "small phone touch android")
@@ -478,8 +338,8 @@ screen android:
action LaunchEmulator("touch", "medium tablet touch android")
hovered tt.Action(TABLET_TEXT)
textbutton _("Television / OUYA"):
action LaunchEmulator("tv", "small tv ouya android")
textbutton _("Television"):
action LaunchEmulator("tv", "small tv android")
hovered tt.Action(OUYA_TEXT)
@@ -514,6 +374,10 @@ screen android:
action AndroidIfState(state, ANDROID_OK, AndroidBuild("android_build_and_install"))
hovered tt.Action(BUILD_AND_INSTALL_TEXT)
textbutton _("Build, Install & Launch"):
action AndroidIfState(state, ANDROID_OK, AndroidBuild("android_build_install_and_launch"))
hovered tt.Action(BUILD_INSTALL_AND_LAUNCH_TEXT)
add SPACER
add SEPARATOR2
@@ -537,6 +401,10 @@ screen android:
action AndroidIfState(state, ANDROID_OK, Jump("android_disconnect"))
hovered tt.Action(DISCONNECT_TEXT)
textbutton _("Logcat"):
action AndroidIfState(state, ANDROID_NO_KEY, Jump("logcat"))
hovered tt.Action(LOGCAT_TEXT)
# Right side.
frame:
@@ -576,7 +444,7 @@ label android_installsdk:
python:
with interface.nolinks():
rapt.install_sdk.install_sdk(AndroidInterface())
rapt.install_sdk.install_sdk(MobileInterface("android"))
jump android
@@ -584,14 +452,14 @@ label android_installsdk:
label android_configure:
python:
rapt.configure.configure(AndroidInterface(), project.current.path)
rapt.configure.configure(MobileInterface("android", edit=False), project.current.path)
jump android
label android_build:
$ android_build([ 'release' ])
$ android_build([ 'release' ], opendir=True)
jump android
@@ -602,6 +470,13 @@ label android_build_and_install:
jump android
label android_build_install_and_launch:
$ android_build([ 'release', 'install' ], launch=True)
jump android
label android_connect:
python hide:
@@ -641,7 +516,7 @@ label android_connect:
persistent.connect_address = address
rapt_interface = AndroidInterface()
rapt_interface = MobileInterface("android")
rapt.build.connect(rapt_interface, address)
jump android
@@ -650,23 +525,36 @@ label android_disconnect:
python hide:
rapt_interface = AndroidInterface()
rapt_interface = MobileInterface("android")
rapt.build.disconnect(rapt_interface)
jump android
label logcat:
python hide:
interface = MobileInterface("android", filename="logcat.txt")
interface.info(_("Retrieving logcat information from device."))
interface.call([ rapt.plat.adb, "logcat", "-d" ], cancel=True)
interface.open_editor()
jump android
init python:
def android_build_command():
ap = renpy.arguments.ArgumentParser()
ap.add_argument("project", help="The path to the project directory.")
ap.add_argument("command", help="Commands to pass to ant. (Try 'release' 'install'.)", nargs='+')
ap.add_argument("android_project", help="The path to the project directory.")
ap.add_argument("ant_commands", help="Commands to pass to ant. (Try 'release' 'install'.)", nargs='+')
ap.add_argument("--launch", action="store_true", help="Launches the app after build and install compete.")
ap.add_argument("--destination", "--dest", default=None, action="store", help="The directory where the packaged files should be placed.")
args = ap.parse_args()
p = project.Project(args.project)
p = project.Project(args.android_project)
android_build(args.command, p=p, gui=False)
android_build(args.ant_commands, p=p, gui=False, launch=args.launch, destination=args.destination)
return False
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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
+93
View File
@@ -0,0 +1,93 @@
# Copyright 2004-2015 Tom Rothamel <pytom@bishoujo.us>
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
# (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge,
# publish, distribute, sublicense, and/or sell copies of the Software,
# and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
init python:
def choose_directory(path):
"""
Pops up a directory chooser.
`path`
The directory that is selected by default. If None, config.renpy_base
is selected.
Returns a (path, is_default) tuple, where path is the chosen directory,
and is_default is true if and only if it was chosen by default mechanism
rather than user choice.
"""
if path:
default_path = path
else:
try:
default_path = os.path.dirname(os.path.abspath(config.renpy_base))
except:
default_path = os.path.abspath(config.renpy_base)
if EasyDialogs:
choice = EasyDialogs.AskFolder(defaultLocation=default_path, wanted=unicode)
if choice is not None:
path = choice
else:
path = None
else:
try:
cmd = [ "/usr/bin/python", os.path.join(config.gamedir, "tkaskdir.py"), renpy.fsencode(default_path) ]
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
choice = p.stdout.read()
code = p.wait()
except:
import traceback
traceback.print_exc()
code = 0
choice = ""
path = None
interface.error(_("Ren'Py was unable to run python with tkinter to choose the directory. Please install the python-tk or tkinter package."), label=None)
if code:
interface.error(_("Ren'Py was unable to run python with tkinter to choose the directory. Please install the python-tk or tkinter package."), label=None)
elif choice:
path = choice.decode("utf-8")
is_default = False
if path is None:
path = default_path
is_default = True
path = renpy.fsdecode(path)
if not os.path.isdir(path):
path = os.path.abspath(config.renpy_base)
is_default = True
return path, is_default
+20 -4
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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
@@ -398,9 +398,23 @@ init -2 python:
style.soundtest_button.xalign = 1.0
screen choose_theme:
default scheme_yadjustment = ui.adjustment()
default theme_yadjustment = ui.adjustment()
default first = True
python:
if first:
theme_yinitial_value = theme_yinitial()
scheme_yinitial_value = scheme_yinitial()
else:
theme_yinitial_value = None
scheme_yinitial_value = None
first = False
frame:
style_group "l"
style "l_root"
@@ -426,8 +440,9 @@ screen choose_theme:
viewport:
scrollbars "vertical"
yinitial theme_yinitial()
mousewheel True
yadjustment theme_yadjustment
yinitial theme_yinitial_value
has vbox
@@ -451,7 +466,8 @@ screen choose_theme:
viewport:
scrollbars "vertical"
mousewheel True
yinitial scheme_yinitial()
yadjustment scheme_yadjustment
yinitial scheme_yinitial_value
has vbox
+258 -88
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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
@@ -111,6 +111,25 @@ init python in distribute:
return False
def hash_file(fn):
"""
Returns the hash of `fn`.
"""
sha = hashlib.sha256()
with open(renpy.fsencode(fn), "rb") as f:
while True:
data = f.read(8 * 1024 * 1024)
if not data:
break
sha.update(data)
return sha.hexdigest()
class File(object):
"""
Represents a file that we can distribute.
@@ -149,6 +168,28 @@ init python in distribute:
def copy(self):
return File(self.name, self.path, self.directory, self.executable)
def hash(self, hash, distributor):
"""
Update hash with information about this entry.
"""
key = (self.name, self.path, self.directory, self.executable)
hash.update(repr(key))
if self.path is None:
return
if self.directory:
return
if self.path in distributor.hash_cache:
digest = distributor.hash_cache[self.path]
else:
digest = hash_file(self.path)
distributor.hash_cache[self.path] = digest
hash.update(digest)
class FileList(list):
"""
@@ -261,6 +302,18 @@ init python in distribute:
return rv
def hash(self, distributor):
"""
Returns a hex digest representing this file list.
"""
sha = hashlib.sha256()
for f in sorted(self, key=lambda a : a.name):
f.hash(sha, distributor)
return sha.hexdigest()
class Distributor(object):
"""
@@ -300,6 +353,16 @@ init python in distribute:
If true, we report that the build succeeded.
"""
# 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 = { }
# Status reporter.
self.reporter = reporter
if packagedest is not None:
if packages is None or len(packages) != 1:
raise Exception("Packagedest requires a single package be given.")
@@ -318,7 +381,9 @@ init python in distribute:
# dictionaries.
data = project.data
project.update_dump(force=True, gui=False)
self.reporter.info(_("Scanning project files..."))
project.update_dump(force=True, gui=False, compile=project.data['force_recompile'])
if project.dump.get("error", False):
raise Exception("Could not get build data from the project. Please ensure the project runs.")
@@ -350,10 +415,9 @@ init python in distribute:
except:
pass
self.packagedest = packagedest
self.load_build_cache()
# Status reporter.
self.reporter = reporter
self.packagedest = packagedest
self.include_update = build['include_update']
self.build_update = self.include_update and build_update
@@ -382,9 +446,6 @@ init python in distribute:
self.log.close()
return
# add the game.
self.reporter.info(_("Scanning project files..."))
self.scan_and_classify(project.path, build["base_patterns"])
if noarchive:
@@ -399,13 +460,15 @@ init python in distribute:
# Add Python (with the same name as our executables)
self.add_python()
# Build the mac app.
# Build the mac app and windows exes.
self.add_mac_files()
self.add_windows_files()
# Add generated/special files.
if not build['renpy']:
self.add_renpy_files()
self.add_windows_files()
if build['renpy']:
self.add_renpy_distro_files()
else:
self.add_renpy_game_files()
# Assign the x-bit as necessary.
self.mark_executable()
@@ -431,12 +494,14 @@ init python in distribute:
p["name"],
"update",
p["file_lists"],
dlc=False)
dlc=p["dlc"])
if self.build_update:
self.finish_updates(build_packages)
if not packagedest:
self.save_build_cache()
# Finish up.
self.log.close()
@@ -464,6 +529,11 @@ init python in distribute:
"""
def walk(name, path):
# Ignore ASCII control characters, like (Icon\r on the mac).
if re.search('[\x00-\x19]', name):
return
is_dir = os.path.isdir(path)
if is_dir:
@@ -576,26 +646,46 @@ init python in distribute:
self.add_file(file_list, "game/" + arcfn, arcpath)
def add_renpy_files(self):
def add_renpy_game_files(self):
"""
Add Ren'Py-generic files to the project.
Add Ren'Py file to the game.
"""
SCRIPT_VERSION_RPY = os.path.join(config.gamedir, "script_version.rpy")
SCRIPT_VERSION_RPYC = os.path.join(config.gamedir, "script_version.rpyc")
LICENSE_TXT = os.path.join(config.renpy_base, "LICENSE.txt")
if os.path.exists(SCRIPT_VERSION_RPY):
if not os.path.exists(os.path.join(self.project.path, "game", "script_version.rpy")):
self.add_file("all", "game/script_version.rpy", SCRIPT_VERSION_RPY)
if os.path.exists(SCRIPT_VERSION_RPYC):
if not os.path.exists(os.path.join(self.project.path, "game", "script_version.rpyc")):
self.add_file("all", "game/script_version.rpyc", SCRIPT_VERSION_RPYC)
if os.path.exists(LICENSE_TXT):
self.add_file("renpy", "renpy/LICENSE.txt", LICENSE_TXT)
if (not os.path.exists(os.path.join(self.project.path, "game", "script_version.rpy"))) and \
(not os.path.exists(os.path.join(self.project.path, "game", "script_version.rpyc"))):
script_version_txt = self.temp_filename("script_version.txt")
with open(script_version_txt, "w") as f:
f.write(repr(renpy.renpy.version_tuple[:-1]))
self.add_file("all", "game/script_version.txt", script_version_txt)
def add_file_list_hash(self, list_name):
"""
Hashes a file list, then adds that file to the Ren'Py distribution.
"""
tfn = self.temp_filename(list_name + "_hash.txt")
with open(tfn, "w") as tf:
tf.write(self.file_lists[list_name].hash(self))
self.add_file("binary", "launcher/game/" + list_name + "_hash.txt", tfn)
self.add_file(list_name, list_name + "/hash.txt", tfn)
def add_renpy_distro_files(self):
"""
Add additional files to Ren'Py.
"""
self.add_file_list_hash("rapt")
self.add_file_list_hash("renios")
def write_plist(self):
@@ -630,6 +720,9 @@ init python in distribute:
],
)
if self.build.get('allow_integrated_gpu', False):
plist["NSSupportsAutomaticGraphicsSwitching"] = True
rv = self.temp_filename("Info.plist")
plistlib.writePlist(plist, rv)
return rv
@@ -663,10 +756,10 @@ init python in distribute:
os.path.join(config.renpy_base, "lib/darwin-x86_64/pythonw"),
True)
self.add_file(
windows,
"lib/windows-i686/" + self.executable_name + ".exe",
os.path.join(config.renpy_base, "lib/windows-i686/pythonw.exe"))
# self.add_file(
# windows,
# "lib/windows-i686/" + self.executable_name + ".exe",
# os.path.join(config.renpy_base, "lib/windows-i686/renpy.exe"))
def add_mac_files(self):
"""
@@ -700,19 +793,31 @@ init python in distribute:
Adds windows-specific files.
"""
if self.build['renpy']:
windows = 'binary'
else:
windows = 'windows'
icon_fn = os.path.join(self.project.path, "icon.ico")
old_exe_fn = os.path.join(config.renpy_base, "renpy.exe")
old_main_fn = os.path.join(config.renpy_base, "lib/windows-i686/renpy.exe")
if os.path.exists(icon_fn):
exe_fn = self.temp_filename("renpy.exe")
main_fn = self.temp_filename("main.exe")
with open(exe_fn, "wb") as f:
f.write(change_icons(old_exe_fn, icon_fn))
with open(main_fn, "wb") as f:
f.write(change_icons(old_main_fn, icon_fn))
else:
exe_fn = old_exe_fn
main_fn = old_main_fn
self.add_file("windows", "renpy.exe", exe_fn)
self.add_file(windows, self.exe, exe_fn)
self.add_file(windows, "lib/windows-i686/" + self.exe, main_fn)
def mark_executable(self):
"""
@@ -737,9 +842,7 @@ init python in distribute:
parts = fn.split('/')
p = parts[0]
if p == "renpy.exe":
p = self.exe
elif p == "renpy.sh":
if p == "renpy.sh":
p = self.sh
elif p == "renpy.py":
p = self.py
@@ -799,14 +902,17 @@ init python in distribute:
update = { variant : { "version" : self.update_version, "pretty_version" : self.pretty_version, "files" : update_files, "directories" : update_directories, "xbit" : update_xbit } }
if self.include_update and not dlc:
if self.include_update and (variant not in [ 'ios', 'android']):
update_fn = os.path.join(self.destination, filename + ".update.json")
with open(update_fn, "wb") as f:
json.dump(update, f)
fl.append(File("update", None, True, False))
fl.append(File("update/current.json", update_fn, False, False))
if not dlc:
fl.append(File("update", None, True, False))
fl.append(File("update/current.json", update_fn, False, False))
# The mac transform.
if format == "app-zip":
@@ -817,60 +923,85 @@ init python in distribute:
fl.prepend_directory(filename)
if format == "tar.bz2":
path += ".tar.bz2"
pkg = TarPackage(path, "w:bz2")
ext = ".tar.bz2"
elif format == "update":
path += ".update"
pkg = TarPackage(path, "w", notime=True)
ext = ".update"
elif format == "zip" or format == "app-zip":
path += ".zip"
pkg = ZipPackage(path)
ext = ".zip"
elif format == "directory":
pkg = DirectoryPackage(path)
ext = ""
for i, f in enumerate(fl):
self.reporter.progress(_("Writing the [variant] [format] package."), i, len(fl), variant=variant, format=format)
full_filename = filename + ext
path += ext
if f.directory:
pkg.add_directory(f.name, f.path)
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 format == "directory" or old_fl_hash != fl_hash:
if format == "tar.bz2":
pkg = TarPackage(path, "w:bz2")
elif format == "update":
pkg = TarPackage(path, "w", notime=True)
elif format == "zip" or format == "app-zip":
pkg = ZipPackage(path)
elif format == "directory":
pkg = DirectoryPackage(path)
for i, f in enumerate(fl):
self.reporter.progress(_("Writing the [variant] [format] package."), i, len(fl), variant=variant, format=format)
if f.directory:
pkg.add_directory(f.name, f.path)
else:
pkg.add_file(f.name, f.path, f.executable)
self.reporter.progress_done()
pkg.close()
if format == "update":
# Build the zsync file.
self.reporter.info(_("Making the [variant] update zsync file."), variant=variant)
cmd = [
updater.zsync_path("zsyncmake"),
"-z",
# -u url to gzipped data - not a local filename!
"-u", filename + ".update.gz",
"-o", os.path.join(self.destination, filename + ".zsync"),
os.path.abspath(path),
]
subprocess.check_call([ renpy.fsencode(i) for i in cmd ])
# Build the sums file. This is a file with an adler32 hash of each 64k block
# of the zsync file. It's used to help us determine how much of the file is
# downloaded.
with open(path, "rb") as src:
with open(renpy.fsencode(os.path.join(self.destination, filename + ".sums")), "wb") as sums:
while True:
data = src.read(65536)
if not data:
break
sums.write(struct.pack("<I", zlib.adler32(data) & 0xffffffff))
if self.include_update and not self.build_update and not dlc:
os.unlink(update_fn)
if format != "directory":
file_hash = hash_file(path)
else:
pkg.add_file(f.name, f.path, f.executable)
self.reporter.progress_done()
pkg.close()
if format == "update":
# Build the zsync file.
self.reporter.info(_("Making the [variant] update zsync file."), variant=variant)
cmd = [
updater.zsync_path("zsyncmake"),
"-z",
# -u url to gzipped data - not a local filename!
"-u", filename + ".update.gz",
"-o", os.path.join(self.destination, filename + ".zsync"),
os.path.abspath(path),
]
subprocess.check_call([ renpy.fsencode(i) for i in cmd ])
# Build the sums file. This is a file with an adler32 hash of each 64k block
# of the zsync file. It's used to help us determine how much of the file is
# downloaded.
with open(path, "rb") as src:
with open(renpy.fsencode(os.path.join(self.destination, filename + ".sums")), "wb") as sums:
while True:
data = src.read(65536)
if not data:
break
sums.write(struct.pack("I", zlib.adler32(data) & 0xffffffff))
if self.include_update and not self.build_update and not dlc:
os.unlink(update_fn)
file_hash = ""
if file_hash:
self.build_cache[full_filename] = (file_hash, fl_hash)
def finish_updates(self, packages):
"""
@@ -883,10 +1014,13 @@ init python in distribute:
index = { }
def add_variant(variant):
fn = renpy.fsencode(os.path.join(self.destination, self.base_name + "-" + variant + ".update"))
with open(fn, "rb") as f:
digest = hashlib.sha256(f.read()).hexdigest()
# with open(fn, "rb") as f:
# digest = hashlib.sha256(f.read()).hexdigest()
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_version,
@@ -894,10 +1028,14 @@ init python in distribute:
"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",
}
os.unlink(fn)
fn = renpy.fsencode(os.path.join(self.destination, self.base_name + "-" + variant + ".update"))
if os.path.exists(fn):
os.unlink(fn)
for p in packages:
if p["update"]:
@@ -908,6 +1046,38 @@ init python in distribute:
json.dump(index, f)
def save_build_cache(self):
if not self.build['renpy']:
return
fn = renpy.fsencode(os.path.join(self.destination, ".build_cache"))
with open(fn, "wb") as f:
for k, v in self.build_cache.items():
l = "\t".join([k, v[0], v[1]]) + "\n"
f.write(l.encode("utf-8"))
def load_build_cache(self):
if not self.build['renpy']:
return
fn = renpy.fsencode(os.path.join(self.destination, ".build_cache"))
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)
def dump(self):
for k, v in sorted(self.file_lists.items()):
print
+35 -3
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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
@@ -191,6 +191,7 @@ screen build_distributions:
has vbox
textbutton _("Edit options.rpy") action editor.Edit("game/options.rpy", check=True)
textbutton _("Add from clauses to calls, once") action Jump("add_from")
textbutton _("Refresh") action Jump("build_distributions")
@@ -219,14 +220,45 @@ screen build_distributions:
$ description = pkg["description"]
textbutton "[description!q]" action PackageToggle(pkg["name"]) style "l_checkbox"
add SPACER
add SPACER
add HALF_SPACER
add SEPARATOR2
frame:
style "l_indent"
has vbox
text _("Options:")
add HALF_SPACER
if project.current.dump["build"]["include_update"]:
textbutton _("Build Updates") action DataToggle("build_update") style "l_checkbox"
textbutton _("Add from clauses to calls") action DataToggle("add_from") style "l_checkbox"
textbutton _("Force Recompile") action DataToggle("force_recompile") style "l_checkbox"
textbutton _("Back") action Jump("front_page") style "l_left_button"
textbutton _("Build") action Jump("distribute") style "l_right_button"
textbutton _("Build") action Jump("start_distribute") style "l_right_button"
label add_from_common:
python:
interface.processing(_("Adding from clauses to call statements that do not have them."))
project.current.launch([ "add_from" ], wait=True)
return
label add_from:
call add_from_common
jump build_distributions
label start_distribute:
if project.current.data["add_from"]:
call add_from_common
jump distribute
label build_update_dump:
python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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
+2 -2
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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
@@ -297,7 +297,7 @@ init 1 python in editor:
if not set_editor:
return True
if persistent.editor:
if persistent.editor and persistent.editor != "None":
return True
return renpy.invoke_in_new_context(renpy.call_screen, "editor")
+12 -9
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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
@@ -130,6 +130,7 @@ screen front_page:
if project.current is not None:
textbutton _("Launch Project") action project.Launch() style "l_right_button"
key "K_F5" action project.Launch()
@@ -195,20 +196,21 @@ screen front_page_project:
textbutton _("game") action OpenDirectory("game")
textbutton _("base") action OpenDirectory(".")
# textbutton _("images") action OpenDirectory("game/images") style "l_list"
textbutton _("images") action OpenDirectory("game/images")
# textbutton _("save") action None style "l_list"
vbox:
if persistent.show_edit_funcs:
label _("Edit File") style "l_label_small"
label _("Edit File") style "l_label_small"
frame style "l_indent":
has vbox
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 "screens.rpy" action editor.Edit("game/screens.rpy", check=True)
textbutton _("All script files") action editor.EditAll()
textbutton "script.rpy" action editor.Edit("game/script.rpy", check=True)
textbutton "options.rpy" action editor.Edit("game/options.rpy", check=True)
textbutton "screens.rpy" action editor.Edit("game/screens.rpy", check=True)
textbutton _("All script files") action editor.EditAll()
add SPACER
add SEPARATOR
@@ -242,6 +244,7 @@ screen front_page_project:
textbutton _("Build Distributions") action Jump("build_distributions")
textbutton _("Android") action Jump("android")
textbutton _("iOS") action Jump("ios")
textbutton _("Generate Translations") action Jump("translate")
textbutton _("Extract Dialogue") action Jump("extract_dialogue")
+2 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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
@@ -203,6 +203,7 @@ screen common:
if continue_:
textbutton _("Continue") action continue_ style "l_right_button"
key "input_enter" action continue_
screen launcher_input:
+374
View File
@@ -0,0 +1,374 @@
# Copyright 2004-2015 Tom Rothamel <pytom@bishoujo.us>
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
# (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge,
# publish, distribute, sublicense, and/or sell copies of the Software,
# and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
init python:
IOS_NO_RENIOS = 0
IOS_NO_DIRECTORY = 1
IOS_NO_PROJECT = 2
IOS_OK = 3
IOS_NO_RENIOS_TEXT = _("To build iOS packages, please download renios, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher.")
IOS_NO_DIRECTORY_TEXT = _("The directory in where Xcode projects will be placed has not been selected. Choose 'Select Directory' to select it.")
IOS_NO_PROJECT_TEXT = _("There is no Xcode project corresponding to the current Ren'Py project. Choose 'Create Xcode Project' to create one.")
IOS_OK_TEXT = _("An Xcode project exists. Choose 'Update Xcode Project' to update it with the latest game files, or use Xcode to build and install it.")
IPHONE_TEXT = _("Attempts to emulate an iPhone.\n\nTouch input is emulated through the mouse, but only when the button is held down.")
IPAD_TEXT = _("Attempts to emulate an iPad.\n\nTouch input is emulated through the mouse, but only when the button is held down.")
IOS_SELECT_DIRECTORY_TEXT = _("Selects the directory where Xcode projects will be placed.")
IOS_CREATE_PROJECT_TEXT = _("Creates an Xcode project corresponding to the current Ren'Py project.")
IOS_UPDATE_PROJECT_TEXT = _("Updates the Xcode project with the latest game files. This must be done each time the Ren'Py project changes.")
IOS_XCODE_TEXT = _("Opens the Xcode project in Xcode.")
IOS_OPEN_DIRECTORY_TEXT = _("Opens the directory containing Xcode projects.")
def find_renios():
global RENIOS_PATH
candidates = [ ]
RENIOS_PATH = os.path.join(config.renpy_base, "renios")
if os.path.isdir(RENIOS_PATH) and check_hash_txt("renios"):
import sys
sys.path.insert(0, os.path.join(RENIOS_PATH, "buildlib"))
else:
RENIOS_PATH = None
find_renios()
if RENIOS_PATH:
import renios.create
def IOSState():
if not RENIOS_PATH:
return IOS_NO_RENIOS
elif not persistent.xcode_projects_directory:
return IOS_NO_DIRECTORY
elif not os.path.exists(xcode_project()):
return IOS_NO_PROJECT
else:
return IOS_OK
def IOSStateText(state):
if state == IOS_NO_RENIOS:
return IOS_NO_RENIOS_TEXT
elif state == IOS_NO_DIRECTORY:
return IOS_NO_DIRECTORY_TEXT
elif state == IOS_NO_PROJECT:
return IOS_NO_PROJECT_TEXT
else:
return IOS_OK_TEXT
def IOSIfState(state, needed, action):
"""
If `state` is `needed` or better, `action` is returned. Otherwise,
returns None, disabling the button.
"""
if state >= needed:
return action
else:
return None
xcode_name_cache = { }
def xcode_name(s):
"""
Returns a version of `s` that's safe to use in Xcode.
"""
if s in xcode_name_cache:
return xcode_name_cache[s]
s = re.sub(r'[^\w\-\.]', '', s)
xcode_name_cache[s] = s
return s
def xcode_project(p=None):
"""
Return the path to the Xcode project corresponding to `p`, or the current
project if `p` is None
"""
if p is None:
p = project.current
if persistent.xcode_projects_directory is None:
raise Exception("The Xcode projects directory has not been set.")
return os.path.join(persistent.xcode_projects_directory, xcode_name(p.name))
def ios_create(p=None, gui=True):
dest = xcode_project(p)
if os.path.exists(dest):
interface.yesno(_("The Xcode project already exists. Would you like to rename the old project, and replace it with a new one?"), no=Jump("ios"))
i = 0
while True:
i += 1
backup = dest + "." + str(i)
if not os.path.exists(backup):
break
os.rename(dest, backup)
iface = MobileInterface("ios")
renios.create.create_project(iface, dest)
ios_populate(p, gui=gui)
def ios_populate(p=None, gui=True):
"""
This actually builds the package.
"""
import shutil
if p is None:
p = project.current
dist = os.path.join(xcode_project(p), "base")
if os.path.exists(dist):
shutil.rmtree(dist)
if gui:
reporter = distribute.GuiReporter()
else:
reporter = distribute.TextReporter()
distribute.Distributor(p,
reporter=reporter,
packages=[ 'ios' ],
build_update=False,
noarchive=True,
packagedest=dist,
report_success=False,
)
main_fn = os.path.join(dist, "main.py")
for fn in os.listdir(dist):
if fn.endswith(".py"):
py_fn = os.path.join(dist, fn)
break
else:
raise Exception("Could not find a .py file.")
with open(py_fn, "r") as py_f:
with open(main_fn, "w") as main_f:
for l in py_f:
if l.startswith("#!"):
continue
main_f.write(l)
os.unlink(py_fn)
def launch_xcode():
dist = xcode_project(None)
base = os.path.basename(dist)
xcodeproj = "{}/{}.xcodeproj".format(dist, base)
subprocess.call([ 'open', renpy.fsencode(xcodeproj) ])
screen ios:
default tt = Tooltip(None)
$ state = IOSState()
frame:
style_group "l"
style "l_root"
window:
has vbox
label _("iOS: [project.current.name!q]")
add HALF_SPACER
hbox:
# Left side.
frame:
style "l_indent"
xmaximum ONEHALF
xfill True
has vbox
add SEPARATOR2
frame:
style "l_indent"
has vbox
text _("Emulation:")
add HALF_SPACER
frame style "l_indent":
has hbox:
spacing 15
textbutton _("iPhone"):
action LaunchEmulator("ios-touch", "small phone touch ios")
hovered tt.Action(IPHONE_TEXT)
textbutton _("iPad"):
action LaunchEmulator("ios-touch", "medium tablet touch ios")
hovered tt.Action(IPAD_TEXT)
add SPACER
add SEPARATOR2
frame:
style "l_indent"
has vbox
text _("Build:")
add HALF_SPACER
frame style "l_indent":
has vbox
textbutton _("Select Xcode Projects Directory"):
action IOSIfState(state, IOS_NO_DIRECTORY, Jump("select_xcode_projects_directory"))
hovered tt.Action(IOS_SELECT_DIRECTORY_TEXT)
textbutton _("Create Xcode Project"):
action IOSIfState(state, IOS_NO_PROJECT, Jump("create_xcode_project"))
hovered tt.Action(IOS_CREATE_PROJECT_TEXT)
textbutton _("Update Xcode Project"):
action IOSIfState(state, IOS_NO_PROJECT, Jump("update_xcode_project"))
hovered tt.Action(IOS_UPDATE_PROJECT_TEXT)
if renpy.macintosh:
textbutton _("Launch Xcode"):
action IOSIfState(state, IOS_OK, launch_xcode)
hovered tt.Action(IOS_XCODE_TEXT)
# textbutton _("Configure"):
# action AndroidIfState(state, ANDROID_NO_CONFIG, Jump("android_configure"))
# hovered tt.Action(CONFIGURE_TEXT)
#
# textbutton _("Build Package"):
# action AndroidIfState(state, ANDROID_OK, AndroidBuild("android_build"))
# hovered tt.Action(BUILD_TEXT)
#
# textbutton _("Build & Install"):
# action AndroidIfState(state, ANDROID_OK, AndroidBuild("android_build_and_install"))
# hovered tt.Action(BUILD_AND_INSTALL_TEXT)
#
# textbutton _("Build, Install & Launch"):
# action AndroidIfState(state, ANDROID_OK, AndroidBuild("android_build_install_and_launch"))
# hovered tt.Action(BUILD_INSTALL_AND_LAUNCH_TEXT)
add SPACER
add SEPARATOR2
frame:
style "l_indent"
has vbox
text _("Other:")
add HALF_SPACER
frame style "l_indent":
has vbox
textbutton _("Open Xcode Projects Directory"):
action IOSIfState(state, IOS_NO_PROJECT, OpenDirectory(persistent.xcode_projects_directory, absolute=True))
hovered tt.Action(IOS_OPEN_DIRECTORY_TEXT)
# Right side.
frame:
style "l_indent"
xmaximum ONEHALF
xfill True
has vbox
add SEPARATOR2
frame:
style "l_indent"
has vbox
add SPACER
if tt.value:
text tt.value
else:
text IOSStateText(state)
textbutton _("Back") action Jump("front_page") style "l_left_button"
label ios:
if RENIOS_PATH is None:
$ interface.yesno(_("Before packaging iOS apps, you'll need to download renios, Ren'Py's iOS support. Would you like to download renios now?"), no=Jump("front_page"))
$ add_dlc("renios", restart=True)
call screen ios
label select_xcode_projects_directory:
python hide:
interface.interaction(_("XCODE PROJECTS DIRECTORY"), _("Please choose the Xcode Projects Directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"))
path, is_default = choose_directory(persistent.xcode_projects_directory)
if is_default:
interface.info(_("Ren'Py has set the Xcode Projects Directory to:"), "[path!q]", path=path)
persistent.xcode_projects_directory = path
jump ios
label create_xcode_project:
$ ios_create(None, True)
jump ios
label update_xcode_project:
$ ios_populate(None, True)
jump ios
+258
View File
@@ -0,0 +1,258 @@
# Copyright 2004-2015 Tom Rothamel <pytom@bishoujo.us>
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
# (the "Software"), to deal in the Software without restriction,
# including without limitation the rights to use, copy, modify, merge,
# publish, distribute, sublicense, and/or sell copies of the Software,
# and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# This file contains mobile build things that are shared by the android
# and iOS builds.
init -1 python:
def check_hash_txt(module):
fn1 = module + "_hash.txt"
fn2 = renpy.fsencode(os.path.join(config.renpy_base, module, "hash.txt"))
# No hash file? We're in dev mode - ignore.
if not renpy.loadable(fn1):
return True
hash1 = renpy.file(fn1).read()
if not os.path.exists(fn2):
return False
hash2 = open(fn2).read()
return hash1.strip() == hash2.strip()
class LaunchEmulator(Action):
def __init__(self, emulator, variants):
self.emulator = emulator
self.variants = variants
def __call__(self):
env = {
"RENPY_EMULATOR" : self.emulator,
"RENPY_VARIANT" : self.variants,
}
p = project.current
p.launch(env=env)
class MobileInterface(object):
"""
This is used to interface between the launcher and RAPT/RENIOS.
"""
def __init__(self, platform, edit=True, filename=None):
"""
`platform`
The name of the platform we're using for. Used for libraries,
cancel labels, and logfiles.
`edit`
If true, we launch the log file in the editor on failure.
"""
self.platform = platform
self.edit = edit
self.process = None
if filename is None:
filename = platform + ".txt"
self.filename = project.current.temp_filename(filename)
self.info_msg = ""
with open(self.filename, "w"):
pass
def log(self, msg):
with open(self.filename, "a") as f:
f.write("\n")
f.write(msg)
f.write("\n")
def info(self, prompt):
self.info_msg = prompt
interface.processing(prompt, pause=False)
self.log(prompt)
def yesno(self, prompt, submessage=None):
return interface.yesno(prompt, submessage=submessage)
def yesno_choice(self, prompt, default=None):
choices = [ (True, "Yes"), (False, "No") ]
return interface.choice(prompt, choices, default)
def terms(self, url, prompt):
submessage = _("{a=%s}%s{/a}") % (url, url)
if not interface.yesno(prompt, submessage=submessage):
self.fail("You must accept the terms and conditions to proceed.", edit=False)
def input(self, prompt, empty=None):
if empty is None:
empty = ''
while True:
rv = interface.input(_("QUESTION"), prompt, default=empty, cancel=Jump("android"))
rv = rv.strip()
if rv:
return rv
def choice(self, prompt, choices, default):
return interface.choice(prompt, choices, default, cancel=Jump("android"))
def fail(self, prompt, edit=True):
self.log(prompt)
prompt = re.sub(r'(http://\S+)', r'{a=\1}\1{/a}', prompt)
# Open android.txt in the editor.
if edit and self.edit:
self.open_editor()
interface.error(prompt, label="android")
def open_editor(self):
editor.EditAbsolute(self.filename)()
def success(self, prompt):
self.log(prompt)
interface.info(prompt, pause=False)
def final_success(self, prompt):
self.log(prompt)
interface.info(prompt, label="android")
def run_yes_thread(self):
import time
try:
while self.run_yes:
self.process.stdin.write('y\n')
self.process.stdin.flush()
time.sleep(.2)
except:
import traceback
traceback.print_exc()
def call(self, cmd, cancel=False, use_path=False, yes=False):
cmd = [ renpy.fsencode(i) for i in cmd ]
self.cmd = cmd
f = open(self.filename, "a")
f.write("\n\n\n")
if cancel:
cancel_action = self.cancel
else:
cancel_action = None
startupinfo = None
if renpy.windows:
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
self.yes_thread = None
try:
interface.processing(self.info_msg, show_screen=True, cancel=cancel_action)
kwargs = { }
if yes:
kwargs["stdin"] = subprocess.PIPE
try:
self.process = subprocess.Popen(cmd, cwd=renpy.fsencode(RAPT_PATH), stdout=f, stderr=f, startupinfo=startupinfo, **kwargs)
except:
import traceback
traceback.print_exc(file=f)
raise
if yes:
import threading
self.run_yes = True
self.yes_thread = threading.Thread(target=self.run_yes_thread)
self.yes_thread.daemon = True
self.yes_thread.start()
renpy.call_screen("android_process", interface=self)
finally:
f.close()
interface.hide_screen()
if yes and self.yes_thread:
self.run_yes = False
self.yes_thread.join()
self.process = None
self.yes_thread = None
def check_process(self):
rv = self.process.poll()
if rv is not None:
if rv:
raise subprocess.CalledProcessError(rv, self.cmd)
else:
return True
def download(self, url, dest):
try:
d = Downloader(url, dest)
cancel_action = [ d.cancel, Jump(self.platform) ]
interface.processing(self.info_msg, show_screen=True, cancel=cancel_action, bar_value=DownloaderValue(d))
ui.timer(.1, action=d.check, repeat=True)
ui.interact()
finally:
interface.hide_screen()
def background(self, f):
try:
t = threading.Thread(target=f)
t.start()
interface.processing(self.info_msg, show_screen=True)
while t.is_alive():
renpy.pause(0)
t.join(0.25)
finally:
interface.hide_screen()
def cancel(self):
if self.process:
self.process.terminate()
renpy.jump(self.platform)
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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 -17
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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
@@ -220,8 +220,8 @@ init python:
## this is 'mygame-1.0', the windows distribution will be in the
## directory 'mygame-1.0-win', in the 'mygame-1.0-win.zip' file.
if 'RENPY_NIGHTLY' in os.environ:
build.directory_name = os.environ['RENPY_NIGHTLY']
if 'RENPY_BUILD_VERSION' in os.environ:
build.directory_name = "renpy-" + os.environ['RENPY_BUILD_VERSION']
else:
build.directory_name = "renpy-" + config.version.rsplit('.', 1)[0]
@@ -234,6 +234,9 @@ init python:
## allows the updater to run.
build.include_update = True
## Allow empty directories, so we can distribute the images directory.
build.exclude_empty_directories = False
## Clear out various file patterns.
build.renpy_patterns = [ ]
build.early_base_patterns = [ ]
@@ -245,13 +248,23 @@ init python:
## Now, add the Ren'Py distribution in using classify_renpy.
build.classify_renpy("rapt/**", "rapt")
build.classify_renpy("**~", None)
build.classify_renpy("**/#*", None)
build.classify_renpy("**/thumbs.db", None)
build.classify_renpy("**/.*", None)
build.classify_renpy("rapt/**", "rapt")
build.classify_renpy("renios/prototype/base/", None)
build.classify_renpy("renios/prototype/prototype.xcodeproj/*.xcworkspace/", None)
build.classify_renpy("renios/prototype/prototype.xcodeproj/xcuserdata/", None)
build.classify_renpy("renios/prototype/**", "renios")
build.classify_renpy("renios/buildlib/**", "renios")
build.classify_renpy("renios/ios.py", "renios")
build.classify_renpy("renios/version.txt", "renios")
build.classify_renpy("renios/", "renios")
build.classify_renpy("**.old", None)
build.classify_renpy("**.new", None)
build.classify_renpy("**.bak", None)
@@ -266,28 +279,29 @@ init python:
# main source.
def source_and_binary(pattern):
def source_and_binary(pattern, source="source", binary="binary"):
"""
Classifies source and binary files beginning with `pattern`.
.pyo, .rpyc, .rpycm, and .rpyb go into binary, everything
else goes into source.
"""
build.classify_renpy(pattern + ".pyo", "binary")
build.classify_renpy(pattern + ".rpyc", "binary")
build.classify_renpy(pattern + ".rpymc", "binary")
build.classify_renpy(pattern + ".rpyb", "binary")
build.classify_renpy(pattern, "source")
build.classify_renpy(pattern + "/**.pyo", binary)
build.classify_renpy(pattern + "/**.rpyc", binary)
build.classify_renpy(pattern + "/**.rpymc", binary)
build.classify_renpy(pattern + "/**/cache/*", binary)
build.classify_renpy(pattern + "/**", source)
build.classify_renpy("renpy.py", "source")
source_and_binary("renpy/**")
source_and_binary("renpy")
# games.
build.classify_renpy("launcher/game/theme/", None)
source_and_binary("launcher/**")
source_and_binary("templates/**")
source_and_binary("the_question/**")
source_and_binary("tutorial/**")
source_and_binary("launcher")
source_and_binary("templates", binary=None)
source_and_binary("the_question")
source_and_binary("tutorial")
# docs.
build.classify_renpy("doc/", "source")
@@ -305,16 +319,18 @@ init python:
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")
# all-platforms binary.
build.classify_renpy("lib/**/_renpysteam*", None)
build.classify_renpy("lib/**/*steam_api*", None)
build.classify_renpy("lib/*/renpy", None)
build.classify_renpy("lib/*/renpy.exe", None)
build.classify_renpy("lib/**", "binary")
build.classify_renpy("renpy.sh", "binary")
build.classify_renpy("renpy.exe", "binary")
# renpy.app is now built from scratch from distribute.rpy.
# jedit rules.
@@ -343,4 +359,4 @@ init python:
build.package("editra-mac", "zip", "editra-all editra-mac", dlc=True)
build.package("editra-windows", "zip", "editra-all editra-windows", dlc=True)
build.package("rapt", "zip", "rapt", dlc=True)
build.package("renios", "zip", "renios", dlc=True)
+25 -12
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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
@@ -107,7 +107,28 @@ init python in distribute:
"""
def __init__(self, filename):
self.zipfile = ZipFile(filename, "w", zipfile.ZIP_DEFLATED)
self.zipfile = ZipFile(filename, "w", zipfile.ZIP_DEFLATED, True)
def get_date_time(self, path):
"""
Gets the datetime for a file. If the time doesn't exist or is
weird, use the current time instead.
"""
try:
s = os.stat(path)
rv = time.gmtime(s.st_mtime)[:6]
# Check that the time is sensible.
if rv[0] < 2000:
rv = None
except:
rv = None
if rv is None:
rv = time.gmtime()[:6]
return rv
def add_file(self, name, path, xbit):
@@ -115,13 +136,7 @@ init python in distribute:
raise Exception("path for " + name + " must not be None.")
zi = zipfile.ZipInfo(name)
try:
s = os.stat(path)
zi.date_time = time.gmtime(s.st_mtime)[:6]
except:
zi.date_time = time.gmtime()[:6]
zi.date_time = self.get_date_time(path)
zi.compress_type = zipfile.ZIP_DEFLATED
zi.create_system = 3
@@ -137,9 +152,7 @@ init python in distribute:
return
zi = zipfile.ZipInfo(name + "/")
s = os.stat(path)
zi.date_time = time.gmtime(s.st_mtime)[:6]
zi.date_time = self.get_date_time(path)
zi.compress_type = zipfile.ZIP_STORED
zi.create_system = 3
zi.external_attr = (long(0040755) << 16) | 0x10
+6 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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,6 +25,9 @@ init python:
config.gl_enable = persistent.gl_enable
if persistent.show_edit_funcs is None:
persistent.show_edit_funcs = True
if persistent.windows_console is None:
persistent.windows_console = False
@@ -168,7 +171,9 @@ screen preferences:
textbutton _("Hardware rendering") style "l_checkbox" action ToggleField(persistent, "gl_enable")
textbutton _("Show templates") style "l_checkbox" action ToggleField(persistent, "show_templates")
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 ]
textbutton _("Generate empty strings for translations") style "l_checkbox" action ToggleField(persistent, "generate_empty_strings")
if renpy.windows:
textbutton _("Console output") style "l_checkbox" action ToggleField(persistent, "windows_console")
+13 -58
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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,9 +22,9 @@
# Code that manages projects.
init python:
try:
if renpy.windows:
import EasyDialogsWin as EasyDialogs
except:
else:
EasyDialogs = None
import os
@@ -121,6 +121,8 @@ init python in project:
data.setdefault("build_update", False)
data.setdefault("packages", [ "all" ])
data.setdefault("add_from", True)
data.setdefault("force_recompile", True)
def make_tmp(self):
"""
@@ -222,7 +224,7 @@ init python in project:
if p.wait():
interface.error(_("Launching the project failed."), _("Please ensure that your project launches normally before running this command."))
def update_dump(self, force=False, gui=True):
def update_dump(self, force=False, gui=True, compile=False):
"""
If the dumpfile does not exist, runs Ren'Py to create it. Otherwise,
loads it in iff it's newer than the one that's already loaded.
@@ -235,7 +237,10 @@ init python in project:
if gui:
interface.processing(_("Ren'Py is scanning the project..."))
self.launch(["quit"], wait=True)
if compile:
self.launch(["compile", "--keep-orphan-rpyc" ], wait=True)
else:
self.launch(["quit"], wait=True)
if not os.path.exists(dump_filename):
self.dump["error"] = True
@@ -553,62 +558,12 @@ label choose_projects_directory:
interface.interaction(_("PROJECTS DIRECTORY"), _("Please choose the projects directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"), _("This launcher will scan for projects in this directory, will create new projects in this directory, and will place built projects into this directory."),)
path = persistent.projects_directory
path, is_default = choose_directory(persistent.projects_directory)
if path:
default_path = path
else:
try:
default_path = os.path.dirname(os.path.abspath(config.renpy_base))
except:
default_path = os.path.abspath(config.renpy_base)
if EasyDialogs:
choice = EasyDialogs.AskFolder(defaultLocation=default_path, wanted=unicode)
if choice is not None:
path = choice
else:
path = None
else:
try:
cmd = [ "/usr/bin/python", os.path.join(config.gamedir, "tkaskdir.py"), renpy.fsencode(default_path) ]
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
choice = p.stdout.read()
code = p.wait()
except:
import traceback
traceback.print_exc()
code = 0
choice = ""
path = None
interface.error(_("Ren'Py was unable to run python with tkinter to choose the projects directory. Please install the python-tk or tkinter package."), label=None)
if code:
interface.error(_("Ren'Py was unable to run python with tkinter to choose the projects directory. Please install the python-tk or tkinter package."), label=None)
elif choice:
path = choice.decode("utf-8")
if path is None:
path = default_path
if is_default:
interface.info(_("Ren'Py has set the projects directory to:"), "[path!q]", path=path)
path = renpy.fsdecode(path)
if os.path.isdir(path):
persistent.projects_directory = path
else:
path = os.path.abspath(config.renpy_base)
persistent.projects_directory = path
project.manager.scan()
+7 -3
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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
@@ -104,9 +104,9 @@ init 1 python:
def checkbox(full, color):
if full:
return im.Twocolor("images/checkbox_full.png", color, color, yalign=0.5)
return im.Twocolor("images/checkbox_full.png", color, color, style="l_checkbox_box")
else:
return im.Twocolor("images/checkbox_empty.png", color, color, yalign=0.5)
return im.Twocolor("images/checkbox_empty.png", color, color, style="l_checkbox_box")
init 1:
@@ -322,6 +322,10 @@ init 1:
selected_hover_background checkbox(True, HOVER)
insensitive_background checkbox(False, DISABLED)
style l_checkbox_box:
yanchor 0.5
ypos 11
style l_checkbox_text is l_button_text:
selected_font LIGHT
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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,6 +1,6 @@
#!/usr/bin/env python
# Copyright 2004-2014 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2015 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 @@
translate arabic strings:
# game/about.rpy:21
+1 -1
View File
@@ -1,4 +1,4 @@
translate arabic strings:
# game/add_file.rpy:7
+38 -2
View File
@@ -1,4 +1,4 @@
# : Translation updated at 2013-11-17 23:18
# : Translation updated at 2013-11-17 23:18
translate arabic strings:
@@ -80,7 +80,7 @@ translate arabic strings:
# game/android.rpy:409
old "Build:"
new ""
new "بناء"
# game/android.rpy:417
old "Install SDK & Create Keys"
@@ -162,3 +162,39 @@ translate arabic strings:
old "The port must be a number."
new "يجب ان يكون العنوان مكون من أرقام فقط"
translate arabic strings:
# game/android.rpy:46
old "Builds the Android package, installs it on an Android device connected to your computer, then launches the app on your device."
new "يبني الحزمة الخاصة بالأندرويد و يقوم بتنصيبها على جهاز أندرويد متصل بجهازك, ثم يقوم بإقلاع البرنامج على جهاز الأندرويد."
# game/android.rpy:290
old "Television"
new "تلفاز"
# game/android.rpy:326
old "Build, Install & Launch"
new "بناء,تنصيب و إقلاع."
# : Translation updated at 2015-06-19 08:55
translate arabic strings:
# game/android.rpy:50
old "Retrieves the log from the Android device and writes it to a file."
new "يجلب قائمة المهام من جعاز الأندرويد و يكتبها في ملف."
# game/android.rpy:240
old "Copying Android files to distributions directory."
new "يتم الآن نسخ ملفات الأندرويد إلى المجلد الخاص بالنشر"
# game/android.rpy:404
old "Logcat"
new "Logcat"
# game/android.rpy:538
old "Retrieving logcat information from device."
new "يتم النسخ من الجهاز لمعلومات Logcat"
@@ -0,0 +1,7 @@
translate arabic strings:
# game/choose_directory.rpy:73
old "Ren'Py was unable to run python with tkinter to choose the directory. Please install the python-tk or tkinter package."
new "لم يتمكن رينباي من تشغيل بايثون باستخدام tkinter لاختيار المجلد. الرجال تنصيب حزمة tkinter أو python-tk."
+1 -1
View File
@@ -1,4 +1,4 @@
translate arabic strings:
# game/choose_theme.rpy:274
+62 -1
View File
@@ -1,4 +1,4 @@
# : Translation updated at 2013-04-30 07:54
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
@@ -526,3 +526,64 @@ translate arabic strings:
old "Location"
new "الموقع"
translate arabic strings:
# renpy/common/00preferences.rpy:387
old "Clipboard voicing enabled. Press 'shift+C' to disable."
new "تشغيل الأصوات من الحافظة مفعّل. إضغط لإيقافه زريّ: Shift+C"
# renpy/common/00preferences.rpy:389
old "Self-voicing enabled. Press 'v' to disable."
new "التكلّم التلقائي مفعَل. لإيقافه إضغط زر V"
translate arabic strings:
# renpy/common/00updater.rpy:362
old "The Ren'Py Updater is not supported on mobile devices."
new "تحديث برنامج رينباي غير مدعوم على الأجهزة المحمولة."
# renpy/common/00updater.rpy:478
old "An error is being simulated."
new "يتم محاكاة خطأ الآن."
# renpy/common/00updater.rpy:654
old "Either this project does not support updating, or the update status file was deleted."
new "هذا المشروع لا يدعم التحديث، أو أن ملف حالة نسخة البرنامج محذوفة."
# renpy/common/00updater.rpy:668
old "This account does not have permission to perform an update."
new "هذا الحساب ليست لديه الصلاحية ليقوم بالتحديث."
# renpy/common/00updater.rpy:671
old "This account does not have permission to write the update log."
new " هذا الحساب ليست لديه الصلاحية ليكتب ملف التحديث."
# renpy/common/00updater.rpy:696
old "Could not verify update signature."
new "لم نتمكن من التحقق من توقيع التحديث update signature."
# renpy/common/00updater.rpy:956
old "The update file was not downloaded."
new "لم يتم تحميل ملف التحديث."
# renpy/common/00updater.rpy:974
old "The update file does not have the correct digest - it may have been corrupted."
new "ملف التحديث لا يحتوي على المختصرات الصحيحة - قد يكون معطوباً."
# renpy/common/00updater.rpy:1030
old "While unpacking {}, unknown type {}."
new "عند فك الحزمة {}، نوع مجهول {}."
translate arabic strings:
# renpy/common/_developer/developer.rpym:437
old "Rectangle copied to clipboard."
new "تم نسخ المربع إلى الحافظة."
# renpy/common/_developer/developer.rpym:440
old "Position copied to clipboard."
new "تم نسخ الموضع إلى الحافظة."
+1 -1
View File
@@ -1,4 +1,4 @@
# : Translation updated at 2013-04-30 07:54
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
+20 -1
View File
@@ -1,4 +1,4 @@
translate arabic strings:
# game/distribute_gui.rpy:139
@@ -45,3 +45,22 @@ translate arabic strings:
old "Your project does not contain build information. Would you like to add build information to the end of options.rpy?"
new "مشروعك يخلو من معلومات النشر, هل ترغب في إضافة هذه المعلومات في نهاية ملف options.rpy؟"
translate arabic strings:
# game/distribute_gui.rpy:194
old "Add from clauses to calls, once"
new "إضافة بند 'مِن' إلى أمر الجلب, مرة واحدة"
# game/distribute_gui.rpy:231
old "Options:"
new "خيارات:"
# game/distribute_gui.rpy:238
old "Add from clauses to calls"
new "إضافة بنود 'مِن' إلى أمر الجلب"
# game/distribute_gui.rpy:246
old "Adding from clauses to call statements that do not have them."
new "إضافة بنود 'مِن' إلى أوامر الجلب التي لا تحتوي عليها."
+1 -1
View File
@@ -1,4 +1,4 @@
# Translation updated at 2013-04-30 07:54
# Translation updated at 2013-04-30 07:54
translate arabic strings:
+16 -1
View File
@@ -1,4 +1,4 @@
# : Translation updated at 2013-04-30 07:54
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
@@ -114,3 +114,18 @@ translate arabic strings:
old "Recompiling all rpy files into rpyc files..."
new "يتم إعادة حزم الملفات من صيغة rpy إلى rpyc..."
translate arabic strings:
# game/front_page.rpy:246
old "iOS"
new "iOS نظام تشغيل"
# Translation updated at 2015-06-19 08:55
translate arabic strings:
# game/front_page.rpy:198
old "images"
new "الصور"
+1 -1
View File
@@ -1,4 +1,4 @@
translate arabic strings:
# game/interface.rpy:89
+100
View File
@@ -0,0 +1,100 @@
# Translation updated at 2015-03-22 20:50
translate arabic strings:
# game/ios.rpy:28
old "To build iOS packages, please download renios, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
new "لبناء حزم الـ iOS, الرجاء تحميل البرنامج الخاص بذلك renios و فك الضغط عنه, ثم وضعه في مجلد رينباي الرئيسي. بعد ذلك قم بإعادة تشغيل رينباي."
# game/ios.rpy:29
old "The directory in where Xcode projects will be placed has not been selected. Choose 'Select Directory' to select it."
new "لم يتم اختيار المسار الذي سيتم وضع Xcode فيه. الرجاء ضغط زر اختيار المجلد لاختيار المكان الصحيح."
# game/ios.rpy:30
old "There is no Xcode project corresponding to the current Ren'Py project. Choose 'Create Xcode Project' to create one."
new "لا يوجد مشروع Xcode متطابق مع مشروع رينباي الحالي. الرجاء اختيار زر 'صنع مشروع Xcode' لبدء واحد."
# game/ios.rpy:31
old "An Xcode project exists. Choose 'Update Xcode Project' to update it with the latest game files, or use Xcode to build and install it."
new "يوجد مشروع Xcode. لتحديثه قم بضغط زر 'تحديث مشروع Xcode' ليصبح متطابقاً مع آخر التعديلات على اللعبة’ او قم باستعمال Xcode للبناء و التنصيب."
# game/ios.rpy:33
old "Attempts to emulate an iPhone.\n\nTouch input is emulated through the mouse, but only when the button is held down."
new "يقوم بمحاكاة جهاز أيفون. اللمس يتم محاكاته عن طريق الضغط بالزر الأيسر للفأرة."
# game/ios.rpy:34
old "Attempts to emulate an iPad.\n\nTouch input is emulated through the mouse, but only when the button is held down."
new "يقوم بمحاكاة جهاز أيفون. اللمس يتم محاكاته عن طريق الضغط بالزر الأيسر للفأرة."
# game/ios.rpy:36
old "Selects the directory where Xcode projects will be placed."
new "إختر المجلد الذي سيكون فيه مشروع Xcode."
# game/ios.rpy:37
old "Creates an Xcode project corresponding to the current Ren'Py project."
new "يقوم بصنع مشروع Xcode متطابق مع مشروع رينباي الحالي."
# game/ios.rpy:38
old "Updates the Xcode project with the latest game files. This must be done each time the Ren'Py project changes."
new "يقوم بتحديث مشروع Xcode ليصبح متطابقاً مع ملفات اللعبة. يجب أن يتم تكرار هذه العملية مع كل تغيير في اللعبة."
# game/ios.rpy:39
old "Opens the Xcode project in Xcode."
new "يقوم بفتح مشروع Xcode في Xcode."
# game/ios.rpy:41
old "Opens the directory containing Xcode projects."
new "يقوم بفتح المجلد الموجود فيه مشاريع Xcode."
# game/ios.rpy:126
old "The Xcode project already exists. Would you like to rename the old project, and replace it with a new one?"
new "مشروع Xcode موجود مسبقاً. هل تريد تغيير إسم المشروع القديم, و استبداله بالجديد؟"
# game/ios.rpy:200
old "iOS: [project.current.name!q]"
new "iOS: [project.current.name!q]"
# game/ios.rpy:229
old "iPhone"
new "أيفون"
# game/ios.rpy:233
old "iPad"
new "أيباد"
# game/ios.rpy:253
old "Select Xcode Projects Directory"
new "إختر مسار مشاريع Xcode"
# game/ios.rpy:257
old "Create Xcode Project"
new "صنع مشروع Xcode"
# game/ios.rpy:261
old "Update Xcode Project"
new "تحديث مشروع Xcode"
# game/ios.rpy:266
old "Launch Xcode"
new "إقلاع Xcode"
# game/ios.rpy:301
old "Open Xcode Projects Directory"
new "فتح مجلد مشاريع Xcode"
# game/ios.rpy:334
old "Before packaging iOS apps, you'll need to download renios, Ren'Py's iOS support. Would you like to download renios now?"
new "قبل صنع الحزم الخاصة ببرامج iOS يجب ان تقوم بتحميل برنامج renios المساند لرينباي على اجهزة أبل. هل تريد تحميل renios الآن؟"
# game/ios.rpy:343
old "XCODE PROJECTS DIRECTORY"
new "مسار مشاريع Xcode"
# game/ios.rpy:343
old "Please choose the Xcode Projects Directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
new "الرجاء إختيار المجلد الذي سيتم وضع مشاريع Xcode فيه باستخدام نافذة اختيار المجلد. قد تكون النافذة مفتوحة خلف هذه النافذة."
# game/ios.rpy:348
old "Ren'Py has set the Xcode Projects Directory to:"
new "رينباي قام بتحديد مجلد مشاريع Xcode إلى:"
+1 -1
View File
@@ -1,4 +1,4 @@
translate arabic strings:
# game/navigation.rpy:150
+1 -1
View File
@@ -1,4 +1,4 @@
# : Translation updated at 2013-04-30 07:54
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
+12 -1
View File
@@ -1,4 +1,4 @@
# : Translation updated at 2013-04-30 07:54
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
@@ -82,3 +82,14 @@ translate arabic strings:
old "Large fonts"
new "خط كبير"
translate arabic strings:
# game/preferences.rpy:174
old "Show edit file section"
new "عرض قسم تعديل الملف"
# game/preferences.rpy:176
old "Generate empty strings for translations"
new "صنع خانات فارغة للترجمات"
+1 -1
View File
@@ -1,4 +1,4 @@
# : Translation updated at 2013-04-30 07:54
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
+1 -1
View File
@@ -1,4 +1,4 @@
translate arabic python:
translate arabic python:
al = "DejaVuSans.ttf"
style.l_default.font = al
style.l_default.size = 16
+1 -1
View File
@@ -1,4 +1,4 @@
translate arabic strings:
# game/translations.rpy:10
+1 -1
View File
@@ -1,4 +1,4 @@
# : Translation updated at 2013-04-30 07:54
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
+15
View File
@@ -0,0 +1,15 @@
translate finnish strings:
# game/about.rpy:39
old "[version!q]"
new "[version!q]"
# game/about.rpy:43
old "View license"
new "Näytä lisenssi"
# game/about.rpy:45
old "Back"
new "Takaisin"
+23
View File
@@ -0,0 +1,23 @@
translate finnish strings:
# game/add_file.rpy:28
old "FILENAME"
new "TIEDOSTONIMI"
# game/add_file.rpy:28
old "Enter the name of the script file to create."
new "Kirjoita skriptitiedoston nimi, jonka haluat luoda."
# game/add_file.rpy:31
old "The filename must have the .rpy extension."
new "Tiedostolla on oltava .rpy -tunniste."
# game/add_file.rpy:39
old "The file already exists."
new "Tiedosto on jo olemassa."
# game/add_file.rpy:42
old "# Ren'Py automatically loads all script files ending with .rpy. To use this\n# file, define a label and jump to it from another file.\n"
new "# Ren'Py lataa automaattisesti kaikki scriptitiedostot, joilla on .rpy pääte. Käyttääksesi tätä\n# tiedostoa, luo label ja hyppää siihen toisesta tiedostosta.\n"
+186
View File
@@ -0,0 +1,186 @@
translate finnish strings:
# game/android.rpy:30
old "To build Android packages, please download RAPT, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
new "Luodaksesi Android-sovelluksia, ole hyvä ja lataa RAPT, pura se, ja aseta se Ren'Py kansioon. Tämän jälkeen käynnistä Ren'Py uudelleen."
# game/android.rpy:31
old "A 32-bit Java Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
new "32-bittinen Javan kehitystyökalu vaaditaan Android-sovellusten luomiseen Windowsilla. JDK on erilainen kuin JRE, joten on mahdollista, että sinulla on Java ilman JDK:ta.\n\n{a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}Lataa ja asenna JDK{/a}, ja sen jälkeen käynnistä Ren'Py uudelleen."
# game/android.rpy:32
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
new "RAPT on asennettu, mutta sinun on asennettava Android SDK ennen kuin voit luoda Android-sovelluksia. Valitse 'Asenna SDK' tehdäksesi tämän."
# game/android.rpy:33
old "RAPT has been installed, but a key hasn't been configured. Please create a new key, or restore android.keystore."
new "RAPT on asennettu, mutta avainta ei ole konfiguroitu. Luo uusi avain, tai palauta android.keystore."
# game/android.rpy:34
old "The current project has not been configured. Use \"Configure\" to configure it before building."
new "Valittua projektia ei ole konfiguroitu. Käytä \"Konfigurointi\" -toimintoa konfiguroidaksesi sen ennen sovelluksen kokoamista."
# game/android.rpy:35
old "Choose \"Build\" to build the current project, or attach an Android device and choose \"Build & Install\" to build and install it on the device."
new "Valitse \"Kokoa\" kootaksesi projektin, tai kiinnitä Android-laite ja valitse \"Kokoa ja asenna\" kootaksesi ja asentaaksesi sen laitteeseen."
# game/android.rpy:37
old "Attempts to emulate an Android phone.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
new "Ren'Py pyrkii emuloimaan Android-puhelinta.\n\nKosketus valintaa emuloidaan hiirellä, mutta vain kun nappia pidetään pohjassa. Esc toimii Menu-näppäimenä ja Pg Up toimii peruutusnappina."
# game/android.rpy:38
old "Attempts to emulate an Android tablet.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
new "Ren'Py pyrkii emuloimaan Android-tablettia.\n\nKosketusta emuloidaan hiirellä, mutta vain kun nappia pidetään pohjassa. Esc toimii Menu-näppäimenä ja Pg Up toimii peruutusnappina."
# game/android.rpy:39
old "Attempts to emulate a televison-based Android console, like the OUYA or Fire TV.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
new "Ren'Py pyrkii emuloimaan televisiopohjaista Android-konsolia, kuten OUYA tai Fire TV.\n\nOhjainnäppäimet ovat nuolinäppäimet, Enter toimii valitsijana, Esc toimii Menu-näppäimenä ja Pg Up toimii peruutusnappina."
# game/android.rpy:41
old "Downloads and installs the Android SDK and supporting packages. Optionally, generates the keys required to sign the package."
new "Lataa ja asentaa Android SDK:n ja tarvittavat lisäpaketit. Lisäksi, voidaan käyttää avainten luomiseen."
# game/android.rpy:42
old "Configures the package name, version, and other information about this project."
new "Konfiguroi paketin nimen, version sekä kaiken muun projektia koskevan tiedon."
# game/android.rpy:43
old "Opens the file containing the Google Play keys in the editor.\n\nThis is only needed if the application is using an expansion APK. Read the documentation for more details."
new "Avaa tiedoston, joka sisältää Google Play -avaimet, editorissa.\n\nTätä tarvitaan vain, jos sovellus käyttää laajennus-APK:ta. Lue dokumentit saadaksesi lisätietoa."
# game/android.rpy:44
old "Builds the Android package."
new "Rakentaa Android-paketin."
# game/android.rpy:45
old "Builds the Android package, and installs it on an Android device connected to your computer."
new "Rakentaa Android-paketin, ja asentaa sen tietokoneeseen kytkettyyn Android-laitteeseen."
# game/android.rpy:47
old "Connects to an Android device running ADB in TCP/IP mode."
new "Yhdistää Android-laitteeseen, jossa on käytössä ADB TCP/IP -tilassa."
# game/android.rpy:48
old "Disconnects from an Android device running ADB in TCP/IP mode."
new "Katkaisee yhteyden Android-laitteeseen, jossa on käytössä ADB TCP/IP -tila."
# game/android.rpy:164
old "{a=%s}%s{/a}"
new "{a=%s}%s{/a}"
# game/android.rpy:176
old "QUESTION"
new "KYSYMYS"
# game/android.rpy:445
old "Android: [project.current.name!q]"
new "Android: [project.current.name!q]"
# game/android.rpy:465
old "Emulation:"
new "Emulointi:"
# game/android.rpy:473
old "Phone"
new "Puhelin"
# game/android.rpy:477
old "Tablet"
new "Tablettitietokone"
# game/android.rpy:481
old "Television / OUYA"
new "Televisio / OUYA"
# game/android.rpy:493
old "Build:"
new "Kokoa:"
# game/android.rpy:501
old "Install SDK & Create Keys"
new "Asenna SDK & Luo avaimet"
# game/android.rpy:505
old "Configure"
new "Muokkaa asetuksia"
# game/android.rpy:509
old "Build Package"
new "Kokoamispaketti:"
# game/android.rpy:513
old "Build & Install"
new "Kokoa & Asenna"
# game/android.rpy:524
old "Other:"
new "Muu:"
# game/android.rpy:532
old "Remote ADB Connect"
new "Langaton ADB-yhdistäminen:"
# game/android.rpy:536
old "Remote ADB Disconnect"
new "Langaton ADB-katkaisu:"
# game/android.rpy:569
old "Before packaging Android apps, you'll need to download RAPT, the Ren'Py Android Packaging Tool. Would you like to download RAPT now?"
new "Ennen Android-sovellusten pakkausta, sinun on ladattava RAPT (Ren'Py Android Packaging Tool). Haluatko ladata RAPT:in nyt?"
# game/android.rpy:615
old "Remote ADB Address"
new "Langaton ADB-osoite"
# game/android.rpy:615
old "Please enter the IP address and port number to connect to, in the form \"192.168.1.143:5555\". Consult your device's documentation to determine if it supports remote ADB, and if so, the address and port to use."
new "Syötä yhdistettävän kohteen IP-osoite ja porttinumero, esimerkin \"192.168.1.143:5555\" mukaisesti. Selvitä laitteesi tiedoista kykeneekö se langattomaan ADB:hen, ja jos näin on, käytettävä osoite ja portti."
# game/android.rpy:627
old "Invalid remote ADB address"
new "Langaton ADB-osoite ei kelpaa."
# game/android.rpy:627
old "The address must contain one exactly one ':'."
new "Osoitteessa on oltava yksi, ja vain yksi, ':'."
# game/android.rpy:631
old "The host may not contain whitespace."
new "Isäntä ei voi sisältää välilyöntejä."
# game/android.rpy:637
old "The port must be a number."
new "Portin on oltava numero."
translate finnish strings:
# game/android.rpy:46
old "Builds the Android package, installs it on an Android device connected to your computer, then launches the app on your device."
new "Kokoaa Android-paketin, asentaa sen tietokoneeseen kytkettyyn Android-laitteeseen ja käynnistää sovelluksen laitteessa."
# game/android.rpy:50
old "Retrieves the log from the Android device and writes it to a file."
new "Noutaa lokin Android-laitteesta ja kirjoittaa sen tiedostoon."
# game/android.rpy:240
old "Copying Android files to distributions directory."
new "Kopioidaan Android-tiedostoja jakelukansioon."
# game/android.rpy:341
old "Television"
new "Televisio"
# game/android.rpy:377
old "Build, Install & Launch"
new "Kokoa, Asenna & Suorita"
# game/android.rpy:404
old "Logcat"
new "Logcat"
# game/android.rpy:538
old "Retrieving logcat information from device."
new "Noudetaan logcat-informaatiota laitteesta."
@@ -0,0 +1,7 @@
translate finnish strings:
# game/choose_directory.rpy:73
old "Ren'Py was unable to run python with tkinter to choose the directory. Please install the python-tk or tkinter package."
new "Ren'Py ei kyennyt suorittamaan pythonia tkinterillä valitakseen kansion. Ole hyvä ja asenna python-tk tai tkinter-paketti."
+50
View File
@@ -0,0 +1,50 @@
translate finnish strings:
# game/choose_theme.rpy:303
old ""
new ""
# game/choose_theme.rpy:368
old "Display"
new "Näyttö"
# game/choose_theme.rpy:369
old "Window"
new "Ikkuna"
# game/choose_theme.rpy:370
old "Fullscreen"
new "Koko näyttö"
# game/choose_theme.rpy:371
old "Planetarium"
new "Planetaario"
# game/choose_theme.rpy:378
old "Sound Volume"
new "Ääniefektien voimakkuus"
# game/choose_theme.rpy:412
old "Choose Theme"
new "Valitse teema"
# game/choose_theme.rpy:425
old "Theme"
new "Teema"
# game/choose_theme.rpy:449
old "Color Scheme"
new "Värikartta"
# game/choose_theme.rpy:480
old "Continue"
new "Jatka"
translate finnish strings:
# game/choose_theme.rpy:303
old "Could not change the theme. Perhaps options.rpy was changed too much."
new "Teemaa ei voitu vaihtaa. Kenties options.rpy:tä muutettiin liikaa."
+554
View File
@@ -0,0 +1,554 @@
translate finnish strings:
# renpy/common/00action_file.rpy:142
old "%b %d, %H:%M"
new "%b %d, %H:%M"
# renpy/common/00action_file.rpy:621
old "Quick save complete."
new "Pikatallennus suoritettu."
translate finnish strings:
# renpy/common/00console.rpy:179
old "%(version)s console, originally by Shiz, C, and delta.\n"
new "%(version)n konsoli, alunperin tehneet Shiz, C ja delta.\n"
# renpy/common/00console.rpy:180
old "Press <esc> to exit console. Type help for help.\n"
new "Paina <esc> poistuaksesi konsolista. Käytä komentoa help saadaksesi apua."
# renpy/common/00console.rpy:184
old "Ren'Py script enabled."
new "Ren'Py-skriptikieli käytössä."
# renpy/common/00console.rpy:186
old "Ren'Py script disabled."
new "Ren'Py-skriptikieli poissa käytöstä."
# renpy/common/00console.rpy:392
old "help: show this help"
new "help: näytä tämä apuviesti"
# renpy/common/00console.rpy:397
old "commands:\n"
new "komennot:\n"
# renpy/common/00console.rpy:407
old " <renpy script statement>: run the statement\n"
new " <renpy script-väite>: suorita väite\n"
# renpy/common/00console.rpy:409
old " <python expression or statement>: run the expression or statement"
new " <python ekspressio tai väite>: suorita ekspressio tai väite"
# renpy/common/00console.rpy:417
old "clear: clear the console history"
new "clear: tyhjennä konsolin historia"
# renpy/common/00console.rpy:421
old "exit: exit the console"
new "exit: poistu konsolista"
# renpy/common/00console.rpy:429
old "load <slot>: loads the game from slot"
new "load <tallennuspaikka>: lataa pelin halutusta tallennuspaikasta"
# renpy/common/00console.rpy:442
old "save <slot>: saves the game in slot"
new "save <tallennuspaikka>: tallentaa pelin tallennuspaikkaan"
# renpy/common/00console.rpy:453
old "reload: reloads the game, refreshing the scripts"
new "reload: lataa pelin uudelleen, päivittäen skriptit"
# renpy/common/00console.rpy:461
old "watch <expression>: watch a python expression"
new "watch <ekspressio>: tarkkaile python-ekspressiota"
# renpy/common/00console.rpy:470
old "unwatch <expression>: stop watching an expression"
new "unwatch <ekspressio>: lakkaa tarkkailemasta ekspressiota"
# renpy/common/00console.rpy:478
old "unwatchall: stop watching all expressions"
new "unwatchall: lopeta kaikkien ekspressioiden tarkkailu"
# renpy/common/00console.rpy:484
old "jump <label>: jumps to label"
new "jump <tunnus>: hyppää 'script.rpy'-tiedosto(i)ssa olevaan, tunnuksella merkittyyn kohtaan"
translate finnish strings:
# renpy/common/00gallery.rpy:561
old "Image [index] of [count] locked."
new ""
# renpy/common/00gallery.rpy:581
old "prev"
new "edellinen"
# renpy/common/00gallery.rpy:582
old "next"
new "seuraava"
# renpy/common/00gallery.rpy:583
old "slideshow"
new "diaesitys"
# renpy/common/00gallery.rpy:584
old "return"
new "palaa"
translate finnish strings:
# renpy/common/00gltest.rpy:68
old "Graphics Acceleration"
new "Grafiikkakiihdytys"
# renpy/common/00gltest.rpy:72
old "Automatically Choose"
new "Valitse automaattisesti"
# renpy/common/00gltest.rpy:77
old "Force Angle/DirectX Renderer"
new "Pakota Angle/DirectX-renderöinti"
# renpy/common/00gltest.rpy:81
old "Force OpenGL Renderer"
new "Pakota OpenGL-renderöinti"
# renpy/common/00gltest.rpy:85
old "Force Software Renderer"
new "Pakota Software-renderöinti"
# renpy/common/00gltest.rpy:91
old "Changes will take effect the next time this program is run."
new "Muutokset tulevat voimaan, kun käynnistät ohjelman uudelleen."
# renpy/common/00gltest.rpy:95
old "Quit"
new "Poistu"
# renpy/common/00gltest.rpy:100
old "Return"
new "Palaa"
# renpy/common/00gltest.rpy:130
old "Performance Warning"
new "Suorituskyvyn varoitus"
# renpy/common/00gltest.rpy:135
old "This computer is using software rendering."
new "Tietokone käyttää software-renderöintiä."
# renpy/common/00gltest.rpy:137
old "This computer is not using shaders."
new "Tietokone ei käytä varjostimia."
# renpy/common/00gltest.rpy:139
old "This computer is displaying graphics slowly."
new "Tietokone näyttää grafiikkaa hitaasti."
# renpy/common/00gltest.rpy:141
old "This computer has a problem displaying graphics: [problem]."
new "Tietokoneella on ongelmia grafiikan näyttämisessä: [problem]"
# renpy/common/00gltest.rpy:146
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display. Updating DirectX could fix this problem."
new "Sen grafiikka-ajurit voivat olla vanhentuneita tai ne saattavat toimia väärin. Tämä voi johtaa hitaaseen tai väärään grafiikan esittämiseen. DirectX:n päivittäminen saattaa korjata ongelman."
# renpy/common/00gltest.rpy:148
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display."
new "Sen grafiikka-ajurit voivat olla vanhentuneita tai ne saattavat toimia väärin. Tämä voi johtaa hitaaseen tai väärään grafiikan esittämiseen."
# renpy/common/00gltest.rpy:153
old "Update DirectX"
new "Päivitä DirectX"
# renpy/common/00gltest.rpy:159
old "Continue, Show this warning again"
new "Jatka, näytä tämä varoitus uudelleen"
# renpy/common/00gltest.rpy:163
old "Continue, Don't show warning again"
new "Jatka, älä näytä tätä varoitusta enää uudelleen"
# renpy/common/00gltest.rpy:189
old "Updating DirectX."
new "Päivitetään DirectX:ää."
# renpy/common/00gltest.rpy:193
old "DirectX web setup has been started. It may start minimized in the taskbar. Please follow the prompts to install DirectX."
new "DirectX verkkoasennus on alkanut. Se voi olla aluksi minimisoituna työkalupalkilla. Seuraa ohjeita asentaaksesi DirectX:n."
# renpy/common/00gltest.rpy:197
old "{b}Note:{/b} Microsoft's DirectX web setup program will, by default, install the Bing toolbar. If you do not want this toolbar, uncheck the appropriate box."
new "{b}Huomaa:{/b} Microsoftin DirectX verkkoasennusohjelma asentaa, oletusarvoisesti, Bing-työkalupalkin. Jos et halua tätä työkalupalkkia, poista valinta oikeasta laatikosta."
# renpy/common/00gltest.rpy:201
old "When setup finishes, please click below to restart this program."
new "Kun asennus on valmis, klikkaa alhaalta käynnistääksesi tämän ohjelman uudelleen."
# renpy/common/00gltest.rpy:203
old "Restart"
new "Käynnistä uudelleen"
translate finnish strings:
# renpy/common/00keymap.rpy:199
old "Saved screenshot as %s."
new "Näytönkaappaus tallennettu nimellä %s."
translate finnish strings:
# renpy/common/00layout.rpy:444
old "Are you sure?"
new "Oletko varma?"
# renpy/common/00layout.rpy:445
old "Are you sure you want to delete this save?"
new "Oletko varma, että haluat poistaa tämän tallennuksen?"
# renpy/common/00layout.rpy:446
old "Are you sure you want to overwrite your save?"
new "Oletko varma, että haluat korvata tallennuksen uudella?"
# renpy/common/00layout.rpy:447
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
new "Lataamalla tallennuksen menetät tallentamattoman edistyksen.\nOletko varma, että haluat tehdä näin?"
# renpy/common/00layout.rpy:448
old "Are you sure you want to quit?"
new "Haluatko varmasti lopettaa?"
# renpy/common/00layout.rpy:449
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
new "Haluatko varmasti palata päävalikkoon?\nMenetät kaikki tallentamattomat tiedot."
# renpy/common/00layout.rpy:450
old "Are you sure you want to begin skipping?"
new "Oletko varma, että haluat käyttää skippausta?"
# renpy/common/00layout.rpy:451
old "Are you sure you want to skip to the next choice?"
new "Oletko varma, että haluat skipata seuraavaan valintaan?"
# renpy/common/00layout.rpy:452
old "Are you sure you want to skip to unseen dialogue or the next choice?"
new "Oletko varma, että haluat skipata uuteen dialogiin tai seuraavaan valintaan?"
translate finnish strings:
# renpy/common/00library.rpy:149
old "Skip Mode"
new "Skippaustila"
# renpy/common/00library.rpy:152
old "Fast Skip Mode"
new "Pikaskippaustila"
translate finnish strings:
# renpy/common/00preferences.rpy:373
old "Self-voicing enabled. Press 'v' to disable."
new "Tietokoneen ääninäyttely käytössä. Paina 'v' lopettaaksesi."
translate finnish strings:
# renpy/common/00updater.rpy:1377
old "Updater"
new "Päivittäjä"
# renpy/common/00updater.rpy:1386
old "This program is up to date."
new "Käytät jo uuinta versiota."
# renpy/common/00updater.rpy:1388
old "[u.version] is available. Do you want to install it?"
new "[u.version] on saatavilla. Haluatko asentaa sen?"
# renpy/common/00updater.rpy:1390
old "Preparing to download the updates."
new "Valmistellaan päivitysten lataamista."
# renpy/common/00updater.rpy:1392
old "Downloading the updates."
new "Ladataan päivityksiä."
# renpy/common/00updater.rpy:1394
old "Unpacking the updates."
new "Puretaan päivityksiä."
# renpy/common/00updater.rpy:1398
old "The updates have been installed. The program will restart."
new "Päivitykset on asennettu. Ohjelma käynnistyy nyt uudelleen."
# renpy/common/00updater.rpy:1400
old "The updates have been installed."
new "Päivitykset on asennettu."
# renpy/common/00updater.rpy:1402
old "The updates were cancelled."
new "Päivitykset peruttiin."
translate finnish strings:
# renpy/common/_compat/gamemenu.rpym:198
old "Empty Slot."
new "Tyhjä paikka."
# renpy/common/_compat/gamemenu.rpym:355
old "Previous"
new "Edellinen"
# renpy/common/_compat/gamemenu.rpym:362
old "Next"
new "Seuraava"
translate finnish strings:
# renpy/common/_compat/preferences.rpym:428
old "Joystick Mapping"
new "Peliohjaimen näppäimet"
translate finnish strings:
# renpy/common/_developer/developer.rpym:65
old "Developer Menu"
new "Kehittäjävalikko"
# renpy/common/_developer/developer.rpym:67
old "Reload Game (Shift+R)"
new "Käynnistä peli uudelleen (Shift+R)"
# renpy/common/_developer/developer.rpym:69
old "Console (Shift+O)"
new "Konsoli (Shift+O)"
# renpy/common/_developer/developer.rpym:71
old "Variable Viewer"
new "Muuttujat"
# renpy/common/_developer/developer.rpym:73
old "Theme Test"
new "Teematesti"
# renpy/common/_developer/developer.rpym:75
old "Image Location Picker"
new "Kuvan sijainnin selvitin"
# renpy/common/_developer/developer.rpym:77
old "Filename List"
new "Tiedostonimilista"
# renpy/common/_developer/developer.rpym:81
old "Show Image Load Log"
new "Näytä kuvanlatausloki"
# renpy/common/_developer/developer.rpym:84
old "Hide Image Load Log"
new "Piilota kuvanlatausloki"
# renpy/common/_developer/developer.rpym:150
old "No variables have changed since the game started."
new "Yksikään muuttuja ei ole muuttunut pelin alkamisen jälkeen."
# renpy/common/_developer/developer.rpym:153
old "Return to the developer menu"
new "Palaa kehittäjävalikkoon"
# renpy/common/_developer/developer.rpym:385
old "Rectangle: %r"
new "Suorakulmio: %r"
# renpy/common/_developer/developer.rpym:390
old "Mouse position: %r"
new "Hiiren sijainti: %r"
# renpy/common/_developer/developer.rpym:392
old "Right-click or escape to quit."
new "Paina Esc tai hiiren oikeaa näppäintä poistuaksesi."
# renpy/common/_developer/developer.rpym:443
old "Done"
new "Valmis"
translate finnish strings:
# renpy/common/_developer/inspector.rpym:46
old "Displayable Inspector"
new "Näkyvien objektien tutkija"
# renpy/common/_developer/inspector.rpym:52
old "Nothing to inspect."
new "Ei tutkittavaa."
# renpy/common/_developer/inspector.rpym:70
old "Size"
new "Koko"
# renpy/common/_developer/inspector.rpym:74
old "Style"
new "Tyyli"
# renpy/common/_developer/inspector.rpym:80
old "Location"
new "Sijainti"
# renpy/common/_developer/inspector.rpym:142
old "Inspecting Styles of [displayable_name!q]"
new "Tutkitaan [displayable_name!q]n tyylejä"
# renpy/common/_developer/inspector.rpym:155
old "displayable:"
new "näkyvä objekti:"
# renpy/common/_developer/inspector.rpym:162
old " (no properties affect the displayable)"
new " (mitkään ominaisuudet eivät vaikuta objektiin)"
# renpy/common/_developer/inspector.rpym:164
old " (default properties omitted)"
new " (perusominaisuudet sivuutettu)"
# renpy/common/_developer/inspector.rpym:206
old "<repr() failed>"
new "<repr() epäonnistui>"
translate finnish strings:
# renpy/common/_errorhandling.rpym:451
old "An exception has occurred."
new "Odottamaton virhe on tapahtunut."
# renpy/common/_errorhandling.rpym:477
old "Rollback"
new "Palaa edelliseen tilaan"
# renpy/common/_errorhandling.rpym:479
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
new "Yrittää palata ajassa taaksepäin, antaen sinun tallentaa tai tehdä eri valinnan."
# renpy/common/_errorhandling.rpym:482
old "Ignore"
new "Sivuuta"
# renpy/common/_errorhandling.rpym:484
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
new "Sivuuttaa poikkeuksen, antaen sinun jatkaa. Tämä johtaa usein uusiin virheisiin."
# renpy/common/_errorhandling.rpym:487
old "Reload"
new "Lataa uudelleen"
# renpy/common/_errorhandling.rpym:489
old "Reloads the game from disk, saving and restoring game state if possible."
new "Lataa pelin uudelleen muistista, tallentaen ja palauttaen pelitilan jos mahdollista."
# renpy/common/_errorhandling.rpym:491
old "Open Traceback"
new "Avaa virheenjäljitystoiminto"
# renpy/common/_errorhandling.rpym:493
old "Opens the traceback.txt file in a text editor."
new "Avaa traceback.txt-tiedoston tekstieditorissa."
# renpy/common/_errorhandling.rpym:499
old "Quits the game."
new "Lopettaa pelin."
# renpy/common/_errorhandling.rpym:526
old "Parsing the script failed."
new "Skriptin jäsennys epäonnistui."
# renpy/common/_errorhandling.rpym:553
old "Open Parse Errors"
new "Avaa jäsennysvirheet"
# renpy/common/_errorhandling.rpym:555
old "Opens the errors.txt file in a text editor."
new "Avaa errors.txt-tiedoston tekstieditorissa."
translate finnish strings:
# renpy/common/_layout/classic_load_save.rpym:170
old "a"
new "a"
# renpy/common/_layout/classic_load_save.rpym:179
old "q"
new "q"
translate finnish strings:
# renpy/common/00preferences.rpy:370
old "Clipboard voicing enabled. Press 'shift+C' to disable."
new "Leikepöydän teksti luetaan nyt ääneen. Paina 'shift+c' lopettaaksesi toimnnon käytön."
translate finnish strings:
# renpy/common/00updater.rpy:362
old "The Ren'Py Updater is not supported on mobile devices."
new "Mobiililaitteet eivät tue Ren'Py Updater -toimintoa."
# renpy/common/00updater.rpy:481
old "An error is being simulated."
new "Stimuloidaan havaittua ongelmaa."
# renpy/common/00updater.rpy:657
old "Either this project does not support updating, or the update status file was deleted."
new "Tämä projekti ei tue päivittämistä tai päivityksen statustiedosto poistettiin."
# renpy/common/00updater.rpy:671
old "This account does not have permission to perform an update."
new "Tällä käyttäjällä ei ole oikeutta päivityksen suorittamiseen."
# renpy/common/00updater.rpy:674
old "This account does not have permission to write the update log."
new "Tällä käyttäjällä ei ole oikeutta kirjoittaa dataa päivityslokiin."
# renpy/common/00updater.rpy:699
old "Could not verify update signature."
new "Päivityksen allekirjoitusta ei voitu vahvistaa."
# renpy/common/00updater.rpy:970
old "The update file was not downloaded."
new "Päivitystiedostoa ei ladattu."
# renpy/common/00updater.rpy:988
old "The update file does not have the correct digest - it may have been corrupted."
new "Päivitystiedosto ei sisällä oikeaa tiivistelmää - se on saattanut korruptoitua."
# renpy/common/00updater.rpy:1044
old "While unpacking {}, unknown type {}."
new "Purettaessa {}, tuntematon tyyppi {}."
translate finnish strings:
# renpy/common/_developer/developer.rpym:425
old "Rectangle copied to clipboard."
new "Suorakulmio kopioitu leikepöydälle."
# renpy/common/_developer/developer.rpym:428
old "Position copied to clipboard."
new "Sijainti kopioitu leikepöydälle."
+39
View File
@@ -0,0 +1,39 @@
translate finnish strings:
# game/distribute.rpy:335
old "Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."
new "Ohjelman kokoaminen epäonnistui:\n\nbuild.directory_name -muuttuja ei saa sisältää välilyöntejä, pilkkuja tai puolipilkkuja."
# game/distribute.rpy:381
old "No packages are selected, so there's nothing to do."
new "Yhtäkään pakettia ei valittu, joten mitään ei ole tehtävissä."
# game/distribute.rpy:386
old "Scanning project files..."
new "Skannataan projektin tiedostoja..."
# game/distribute.rpy:396
old "Scanning Ren'Py files..."
new "Skannataan Ren'Py-tiedostoja..."
# game/distribute.rpy:444
old "All packages have been built.\n\nDue to the presence of permission information, unpacking and repacking the Linux and Macintosh distributions on Windows is not supported."
new "Kaikki paketit on koottu.\n\nLupainformaation läsnäolon vuoksi Linux- ja Macintosh-sovellusten pakkaamista Windows-järjestelmässä ei tueta."
# game/distribute.rpy:568
old "Archiving files..."
new "Arkistoidaan tiedostoja..."
# game/distribute.rpy:832
old "Writing the [variant] [format] package."
new "Kirjoitetaan [variant] [format]-pakettia."
# game/distribute.rpy:845
old "Making the [variant] update zsync file."
new "Luodaan [variant] zsync-päivitystiedostoa."
# game/distribute.rpy:941
old "Processed {b}[complete]{/b} of {b}[total]{/b} files."
new "Käsitelty {b}[complete]{/b}/{b}[total]{/b}:sta tiedostosta."
@@ -0,0 +1,66 @@
translate finnish strings:
# game/distribute_gui.rpy:157
old "Build Distributions: [project.current.name!q]"
new "Kokoa ohjelma levitykseen: [project.current.name!q]"
# game/distribute_gui.rpy:171
old "Directory Name:"
new "Kansion nimi:"
# game/distribute_gui.rpy:175
old "Executable Name:"
new "Suoritettavan tiedoston nimi:"
# game/distribute_gui.rpy:185
old "Actions:"
new "Toiminnot:"
# game/distribute_gui.rpy:193
old "Edit options.rpy"
new "Muokkaa options.rpy-tiedostoa"
# game/distribute_gui.rpy:194
old "Refresh"
new "Päivitä"
# game/distribute_gui.rpy:211
old "Build Packages:"
new "Kokoa paketteja:"
# game/distribute_gui.rpy:225
old "Build Updates"
new "Kokoa päivityksiä"
# game/distribute_gui.rpy:229
old "Build"
new "Kokoa"
# game/distribute_gui.rpy:236
old "Errors were detected when running the project. Please ensure the project runs without errors before building distributions."
new "Virheitä havaittu projektia suoritettaessa. Varmista, että projekti toimii moitteetta ennen kuin kokoat ohjelman."
# game/distribute_gui.rpy:253
old "Your project does not contain build information. Would you like to add build information to the end of options.rpy?"
new "Projektisi ei sisällä kokoamisinformaatiota. Haluatko lisätä kokoamisinormaation options.rpy-tiedoston loppuun?"
translate finnish strings:
# game/distribute_gui.rpy:194
old "Add from clauses to calls, once"
new ""
# game/distribute_gui.rpy:231
old "Options:"
new "Valinnat:"
# game/distribute_gui.rpy:238
old "Add from clauses to calls"
new ""
# game/distribute_gui.rpy:247
old "Adding from clauses to call statements that do not have them."
new ""
+55
View File
@@ -0,0 +1,55 @@
translate finnish strings:
# game/editor.rpy:150
old "{b}Recommended.{/b} A beta editor with an easy to use interface and features that aid in development, such as spell-checking. Editra currently lacks the IME support required for Chinese, Japanese, and Korean text input."
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."
# game/editor.rpy:151
old "{b}Recommended.{/b} A beta editor with an easy to use interface and features that aid in development, such as spell-checking. Editra currently lacks the IME support required for Chinese, Japanese, and Korean text input. On Linux, Editra requires wxPython."
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."
# game/editor.rpy:167
old "This may have occured because wxPython is not installed on this system."
new "Tämä saattoi tapahtua, koska wxPythonia ei ole asennettu järjestelmään."
# game/editor.rpy:169
old "Up to 22 MB download required."
new "22 MB lataus vaaditaan"
# game/editor.rpy:182
old "A mature editor that requires Java."
new "Edistynyt editori, joka vaatii Javan."
# game/editor.rpy:182
old "1.8 MB download required."
new "1.8 MB lataus vaaditaan."
# game/editor.rpy:182
old "This may have occured because Java is not installed on this system."
new "Tämä saattoi tapahtua, koska Javaa ei ole asennettu."
# game/editor.rpy:191
old "Invokes the editor your operating system has associated with .rpy files."
new "Käyttää editoria, jota käyttöjärjestelmäsi käyttää .rpy-tiedostojen kanssa."
# game/editor.rpy:207
old "Prevents Ren'Py from opening a text editor."
new "Estää Ren'Py-ohjelmaa avaamasta tekstieditoria."
# game/editor.rpy:359
old "An exception occured while launching the text editor:\n[exception!q]"
new "Virhe käynnistäessä tekstieditoria:\n[exception!q]"
# game/editor.rpy:457
old "Select Editor"
new "Valitse editori"
# game/editor.rpy:472
old "A text editor is the program you'll use to edit Ren'Py script files. Here, you can select the editor Ren'Py will use. If not already present, the editor will be automatically downloaded and installed."
new "Tekstieditori on ohjelma, jota käytät Ren'Py-skriptitiedostojen muokkaamiseen. Täällä voit valita, mitä editoria Ren'Py käyttää. Jos valitsemaasi editoria ei vielä ole asennettu, se ladataan ja asennetaan automaattisesti."
# game/editor.rpy:494
old "Cancel"
new "Peruuta"
+118
View File
@@ -0,0 +1,118 @@
translate finnish strings:
# game/front_page.rpy:35
old "Open [text] directory."
new "Avaa [text] sijainti."
# game/front_page.rpy:93
old "refresh"
new "päivitä"
# game/front_page.rpy:120
old "+ Create New Project"
new "+ Luo uusi projekti"
# game/front_page.rpy:132
old "Launch Project"
new "Käynnistä projekti"
# game/front_page.rpy:148
old "[p.name!q] (template)"
new "[p.name!q] (pohja)"
# game/front_page.rpy:150
old "Select project [text]."
new "Valitse projekti [text]."
# game/front_page.rpy:166
old "Tutorial"
new "Opas"
# game/front_page.rpy:167
old "The Question"
new "The Question -esimerkkipeli"
# game/front_page.rpy:183
old "Active Project"
new "Aktiivinen projekti"
# game/front_page.rpy:191
old "Open Directory"
new "Avaa sijainti"
# game/front_page.rpy:196
old "game"
new "game"
# game/front_page.rpy:197
old "base"
new "base"
# game/front_page.rpy:203
old "Edit File"
new "Muokkaa tiedostoa"
# game/front_page.rpy:211
old "All script files"
new "Kaikki skriptitiedostot"
# game/front_page.rpy:220
old "Navigate Script"
new "Navigoi skriptiä"
# game/front_page.rpy:231
old "Check Script (Lint)"
new "Tarkista skripti (Lint)"
# game/front_page.rpy:232
old "Change Theme"
new "Vaihda teemaa"
# game/front_page.rpy:233
old "Delete Persistent"
new "Poista pysyvästi tallennettu data"
# game/front_page.rpy:234
old "Force Recompile"
new "Pakota uudelleenkokoaminen"
# game/front_page.rpy:242
old "Build Distributions"
new "Kokoa jakeluun"
# game/front_page.rpy:244
old "Android"
new "Android"
# game/front_page.rpy:245
old "Generate Translations"
new "Luo käännöksiä"
# game/front_page.rpy:246
old "Extract Dialogue"
new "Kopioi dialogi"
# game/front_page.rpy:262
old "Checking script for potential problems..."
new "Tarkista skripti mahdollisten virheiden varalta..."
# game/front_page.rpy:277
old "Deleting persistent data..."
new "Poistetaan pysyvästi tallennettua dataa..."
# game/front_page.rpy:285
old "Recompiling all rpy files into rpyc files..."
new "Kasataan kaikista .rpy-tiedostoista .rpyc-tiedostoja..."
translate finnish strings:
# game/front_page.rpy:198
old "images"
new "kuvat"
# game/front_page.rpy:246
old "iOS"
new "iOS"
+79
View File
@@ -0,0 +1,79 @@
translate finnish strings:
# game/interface.rpy:107
old "Documentation"
new "Dokumentit"
# game/interface.rpy:108
old "Ren'Py Website"
new "Ren'Py:n verkkosivut"
# game/interface.rpy:109
old "Ren'Py Games List"
new "Lista Ren'Py-peleistä"
# game/interface.rpy:110
old "About"
new "Tietoja"
# game/interface.rpy:117
old "update"
new "päivitä"
# game/interface.rpy:119
old "preferences"
new "asetukset"
# game/interface.rpy:120
old "quit"
new "poistu"
# game/interface.rpy:192
old "Yes"
new "Kyllä"
# game/interface.rpy:194
old "No"
new "Ei"
# game/interface.rpy:229
old "Due to package format limitations, non-ASCII file and directory names are not allowed."
new "Pakettiformaatin rajoitusten vuoksi, ei-ASCII tiedostot ja kansion nimet eivät ole sallittuja."
# game/interface.rpy:321
old "ERROR"
new "VIRHE"
# game/interface.rpy:350
old "While [what!q], an error occured:"
new "Kun [what!q], tapahtui virhe."
# game/interface.rpy:350
old "[exception!q]"
new "[exception!q]"
# game/interface.rpy:369
old "Text input may not contain the {{ or [[ characters."
new "Teksti ei voi sisältää {{ tai [[-merkkejä."
# game/interface.rpy:374
old "File and directory names may not contain / or \\."
new "Tiedostot ja kansioiden nimet eivät voi sisältää / tai \\-merkkejä."
# game/interface.rpy:380
old "File and directory names must consist of ASCII characters."
new "Tiedostojen ja kansioiden nimet saavat koostua vain ASCII-merkeistä."
# game/interface.rpy:401
old "INFORMATION"
new "TIETOA"
# game/interface.rpy:448
old "PROCESSING"
new "KÄSITELLÄÄN"
# game/interface.rpy:478
old "CHOICE"
new "VALITSE"
+99
View File
@@ -0,0 +1,99 @@
translate finnish strings:
# game/ios.rpy:28
old "To build iOS packages, please download renios, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
new "Luodaksesi iOS-sovelluksia, ole hyvä ja lataa renios, pura se, ja aseta se Ren'Py kansioon. Tämän jälkeen käynnistä Ren'Py uudelleen."
# game/ios.rpy:29
old "The directory in where Xcode projects will be placed has not been selected. Choose 'Select Directory' to select it."
new "Kansiota, johon Xcode-projektit asetetaan, ei ole valittu. Klikkaa 'Valitse kansio' valitaksesi sen."
# game/ios.rpy:30
old "There is no Xcode project corresponding to the current Ren'Py project. Choose 'Create Xcode Project' to create one."
new "Nykyistä Ren'Py-projektia vastaavaa Xcode-projektia ei löydy. Klikkaa 'Luo Xcode-projekti' luodaksesi sellaisen."
# game/ios.rpy:31
old "An Xcode project exists. Choose 'Update Xcode Project' to update it with the latest game files, or use Xcode to build and install it."
new "Xcode-projekti on jo olemassa. Klikkaa 'Päivitä Xcode-projekti' päivittääksesi sen uusimmilla pelin tiedostoilla, tai käytä Xcodea kootaksesi ja asentaaksesi sen."
# game/ios.rpy:33
old "Attempts to emulate an iPhone.\n\nTouch input is emulated through the mouse, but only when the button is held down."
new "Ren'Py pyrkii emuloimaan iPhonea.\n\nKosketusta emuloidaan hiirellä, mutta vain kun nappia pidetään pohjassa."
# game/ios.rpy:34
old "Attempts to emulate an iPad.\n\nTouch input is emulated through the mouse, but only when the button is held down."
new "Ren'Py pyrkii emuloimaan iPadia.\n\nKosketusta emuloidaan hiirellä, mutta vain kun nappia pidetään pohjassa."
# game/ios.rpy:36
old "Selects the directory where Xcode projects will be placed."
new "Valitsee kansion, johon Xcode-projektit sijoitetaan."
# game/ios.rpy:37
old "Creates an Xcode project corresponding to the current Ren'Py project."
new "Luo Xcode-projektin tällä hetkellä valittuna olevasta Ren'Py-projektista."
# game/ios.rpy:38
old "Updates the Xcode project with the latest game files. This must be done each time the Ren'Py project changes."
new "Päivittää Xcode-projektin uusimmilla pelitiedostoilla. Tämä on tehtävä joka kerta Ren'Py-projektin muuttuessa."
# game/ios.rpy:39
old "Opens the Xcode project in Xcode."
new "Avaa Xcode-projektin Xcodessa."
# game/ios.rpy:41
old "Opens the directory containing Xcode projects."
new "Avaa Xcode-projektit sisältävän kansion."
# game/ios.rpy:126
old "The Xcode project already exists. Would you like to rename the old project, and replace it with a new one?"
new "Tämänniminen Xcode-projekti on jo olemassa. Haluatko nimetä vanhan projektin uudelleen ja korvata sen uudella?"
# game/ios.rpy:211
old "iOS: [project.current.name!q]"
new "iOS: [project.current.name!q]"
# game/ios.rpy:240
old "iPhone"
new "iPhone"
# game/ios.rpy:244
old "iPad"
new "iPad"
# game/ios.rpy:264
old "Select Xcode Projects Directory"
new "Valitse Xcode-projektikansio"
# game/ios.rpy:268
old "Create Xcode Project"
new "Luo Xcode-projekti"
# game/ios.rpy:272
old "Update Xcode Project"
new "Päivitä Xcode-projekti"
# game/ios.rpy:277
old "Launch Xcode"
new "Käynnistä Xcode"
# game/ios.rpy:312
old "Open Xcode Projects Directory"
new "Avaa Xcode-projektikansio"
# game/ios.rpy:345
old "Before packaging iOS apps, you'll need to download renios, Ren'Py's iOS support. Would you like to download renios now?"
new "Ennen iOS-sovellusten pakkaamista sinun on ladattava renios, Ren'Py:n iOS-tuki. Haluaisitko ladata reniosin nyt?"
# game/ios.rpy:354
old "XCODE PROJECTS DIRECTORY"
new "XCODE-PROJEKTIKANSIO"
# game/ios.rpy:354
old "Please choose the Xcode Projects Directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
new "Ole hyvä ja valitse Xcode-projektikansio käyttämällä resurssienhallintaa.\n{b}Kansion valinta on saattanut aueta tämän ikkunan taakse.{/b}"
# game/ios.rpy:359
old "Ren'Py has set the Xcode Projects Directory to:"
new "Ren'Py on asettanut Xcode-projektikansioksi:"
+67
View File
@@ -0,0 +1,67 @@
translate finnish strings:
# game/navigation.rpy:168
old "Navigate: [project.current.name]"
new "Navigoi: [project.current.name]"
# game/navigation.rpy:177
old "Order: "
new "Järjestys: "
# game/navigation.rpy:178
old "alphabetical"
new "aakkosellinen"
# game/navigation.rpy:180
old "by-file"
new "tiedoston mukaan"
# game/navigation.rpy:182
old "natural"
new "luonnollinen"
# game/navigation.rpy:194
old "Category:"
new "Kategoria:"
# game/navigation.rpy:196
old "files"
new "tiedostot"
# game/navigation.rpy:197
old "labels"
new "tunnukset"
# game/navigation.rpy:198
old "defines"
new "määritelmät"
# game/navigation.rpy:199
old "transforms"
new "muutokset"
# game/navigation.rpy:200
old "screens"
new "ikkunat"
# game/navigation.rpy:201
old "callables"
new "kutsuttavat"
# game/navigation.rpy:202
old "TODOs"
new "TODO:t"
# game/navigation.rpy:241
old "+ Add script file"
new "+ Lisää skriptitiedosto"
# game/navigation.rpy:249
old "No TODO comments found.\n\nTo create one, include \"# TODO\" in your script."
new "TODO-kommentteja ei löytynyt.\n\nLuodaksesi sellaisen, lisää \"# TODO\" skriptiisi."
# game/navigation.rpy:256
old "The list of names is empty."
new "Nimilista on tyhjä."
+35
View File
@@ -0,0 +1,35 @@
translate finnish strings:
# game/new_project.rpy:40
old "Choose Project Template"
new "Valitse projektipohja"
# game/new_project.rpy:58
old "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'."
new "Valitse pohja käytettäväksi uudessa projektissasi. Se asettaa perusfontin ja kielen. Jos kieltäsi ei löydy, valitse englanti (English)."
# game/new_project.rpy:71
old "The projects directory could not be set. Giving up."
new "Projektin kansiota ei voitu asettaa."
# game/new_project.rpy:75
old "PROJECT NAME"
new "PROJEKTIN NIMI"
# game/new_project.rpy:75
old "Please enter the name of your project:"
new "Ole hyvä ja anna projektillesi nimi."
# game/new_project.rpy:83
old "The project name may not be empty."
new "Projektin nimi ei voi olla tyhjä."
# game/new_project.rpy:88
old "[project_name!q] already exists. Please choose a different project name."
new "[project_name!q] on jo olemassa. Ole hyvä ja valitse toinen nimi projektillesi."
# game/new_project.rpy:91
old "[project_dir!q] already exists. Please choose a different project name."
new "[project_dir!q] on jo olemassa. Ole hyvä ja valitse toinen nimi projektillesi."
+86
View File
@@ -0,0 +1,86 @@
translate finnish strings:
# game/preferences.rpy:61
old "Launcher Preferences"
new "Työkalun asetukset"
# game/preferences.rpy:82
old "Projects Directory:"
new "Projektien kansio"
# game/preferences.rpy:89
old "[persistent.projects_directory!q]"
new "[persistent.projects_directory!q]"
# game/preferences.rpy:91
old "Projects directory: [text]"
new "Projektikansio: [text]"
# game/preferences.rpy:93
old "Not Set"
new "Ei valittu"
# game/preferences.rpy:108
old "Text Editor:"
new "Tekstieditori:"
# game/preferences.rpy:114
old "Text editor: [text]"
new "Tekstieditori: [text]"
# game/preferences.rpy:130
old "Update Channel:"
new "Päivityskanava:"
# game/preferences.rpy:150
old "Navigation Options:"
new "Hakuasetukset"
# game/preferences.rpy:154
old "Include private names"
new "Sisällytä yksityiset nimet"
# game/preferences.rpy:155
old "Include library names"
new "Sisällytä kirjastot"
# game/preferences.rpy:165
old "Launcher Options:"
new "Työkalun asetukset"
# game/preferences.rpy:169
old "Hardware rendering"
new "Laitteistorenderöinti"
# game/preferences.rpy:170
old "Show templates"
new "Näytä esimerkkipohjat"
# game/preferences.rpy:171
old "Large fonts"
new "Suuret fontit"
# game/preferences.rpy:174
old "Console output"
new "Konsolisyöte"
# game/preferences.rpy:195
old "Open launcher project"
new "Avaa työkaluprojekti"
# game/preferences.rpy:209
old "Language:"
new "Kieli:"
translate finnish strings:
# game/preferences.rpy:174
old "Show edit file section"
new "Näytä tiedostojen muokkausvalikko"
# game/preferences.rpy:176
old "Generate empty strings for translations"
new "Luo tyhjiä merkkijonoja käännöksiä varten"
+55
View File
@@ -0,0 +1,55 @@
translate finnish strings:
# game/project.rpy:47
old "After making changes to the script, press shift+R to reload your game."
new "Kun olet tehnyt muutoksia pelin tiedostoihin, paina shift+R käynnistääksesi pelisi automaattisesti uudelleen."
# game/project.rpy:47
old "Press shift+O (the letter) to access the console."
new "Paina shift+O (kirjain) päästäksesi käsiksi konsoliin."
# game/project.rpy:47
old "Press shift+D to access the developer menu."
new "Paina shift+D avataksesi kehittäjävalikon."
# game/project.rpy:47
old "Have you backed up your projects recently?"
new "Oletko ottanut projekteistasi varmuuskopiot viime aikoina?"
# game/project.rpy:223
old "Launching the project failed."
new "Projektin käynnistys epäonnistui."
# game/project.rpy:223
old "Please ensure that your project launches normally before running this command."
new "Varmista, että projektisi käynnistyy normaalisti ennen kuin käytät tätä komentoa."
# game/project.rpy:236
old "Ren'Py is scanning the project..."
new "Ren'Py skannaa projektia..."
# game/project.rpy:525
old "Launching"
new "Käynnistetään..."
# game/project.rpy:554
old "PROJECTS DIRECTORY"
new "PROJEKTIKANSIO"
# game/project.rpy:554
old "Please choose the projects directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
new "Ole hyvä ja valitse kansio, jota haluat käyttää projektiesi tallentamiseen.\n{b}Kansion valitsija on saattanut aueta tämän ikkunan taakse.{/b}"
# game/project.rpy:554
old "This launcher will scan for projects in this directory, will create new projects in this directory, and will place built projects into this directory."
new "Tämä työkalu etsii, luo sekä muokkaa projekteja, jotka löytyvät tästä kansiosta."
# game/project.rpy:594
old "Ren'Py was unable to run python with tkinter to choose the projects directory. Please install the python-tk or tkinter package."
new "Ren'Py ei kyennyt käyttämään pythonia tkinterillä valitakseen projektikansion. Ole hyvä ja asenna python-tk tai tkinter-paketti."
# game/project.rpy:604
old "Ren'Py has set the projects directory to:"
new "Ren'Py on valinnut projektikansioksi:"
+2
View File
@@ -0,0 +1,2 @@
translate finnish python:
make_style_backup()
+35
View File
@@ -0,0 +1,35 @@
translate finnish strings:
# game/translations.rpy:31
old "Create or Update Translations"
new "Luo tai päivitä käännöksiä"
# game/translations.rpy:31
old "Please enter the name of the language for which you want to create or update translations."
new "Ole hyvä ja anna sen kielen nimi, jolle haluat luoda tai päivittää käännöksen."
# game/translations.rpy:36
old "The language name can not be the empty string."
new "Kielen nimi ei voi olla tyhjä."
# game/translations.rpy:47
old "Ren'Py is generating translations...."
new "Ren'Py luo käännöksiä...."
# game/translations.rpy:51
old "Ren'Py has finished generating [language] translations."
new "Ren'Py on onnistuneesti luonut [language] käännöstiedostot."
# game/translations.rpy:64
old "What format would you like for the extracted dialogue?"
new "Millä formaatilla haluat kopioida dialogin?"
# game/translations.rpy:77
old "Ren'Py is extracting dialogue...."
new "Ren'Py kopioi dialogia...."
# game/translations.rpy:81
old "Ren'Py has finished extracting dialogue. The extracted dialogue can be found in dialogue.[format] in the base directory."
new "Ren'Py on onnistuneesti kopioinut dialogin. Kopio löytyy tiedostosta dialogue.[format] projektin kansiosta."
+95
View File
@@ -0,0 +1,95 @@
translate finnish strings:
# game/updater.rpy:78
old "Select Update Channel"
new "Valitse päivityskanava"
# game/updater.rpy:89
old "The update channel controls the version of Ren'Py the updater will download. Please select an update channel:"
new "Päivityskanava vaikuttaa siihen, mihin versioon Ren'Py päivitetään. Valitse päivityskanava:"
# game/updater.rpy:94
old "Release"
new "Vakaat versiot"
# game/updater.rpy:100
old "{b}Recommended.{/b} The version of Ren'Py that should be used in all newly-released games."
new "{b}Suositeltu.{/b} Ren'Py:n uusin, vakaa versio, jota suositellaan käytettäväksi."
# game/updater.rpy:105
old "Prerelease"
new "Esiversiot"
# game/updater.rpy:111
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 "Ennakkoversio Ren'Py:n seuraavasta versiosta, jota voidaan käyttää uusien ominaisuuksien testaamiseen ja hyödyntämiseen. Ei suositella pelien julkaisemiseen."
# game/updater.rpy:117
old "Experimental"
new "Kokeelliset versiot"
# game/updater.rpy:123
old "Experimental versions of Ren'Py. You shouldn't select this channel unless asked by a Ren'Py developer."
new "Ren'Py:n kokeellisia versioita. Sinun ei kannata valita tätä, ellei joku Ren'Py:n kehittäjistä erikseen sitä pyydä."
# game/updater.rpy:129
old "Nightly"
new "Jokaöiset julkaisut"
# game/updater.rpy:135
old "The bleeding edge of Ren'Py development. This may have the latest features, or might not run at all."
new "Upouudet Ren'Py-kehitysjulkaisut. Voi sisältää uusimmat toiminnot, tai ei ehkä toimi lainkaan."
# game/updater.rpy:155
old "An error has occured:"
new "On tapahtunut virhe:"
# game/updater.rpy:157
old "Checking for updates."
new "Haetaan päivityksiä."
# game/updater.rpy:159
old "Ren'Py is up to date."
new "Käytät uusinta Ren'Py-versiota."
# game/updater.rpy:161
old "[u.version] is now available. Do you want to install it?"
new "[u.version] on nyt saatavilla. Haluatko asentaa sen?"
# game/updater.rpy:163
old "Preparing to download the update."
new "Valmistellaan päivityksen lataamista."
# game/updater.rpy:165
old "Downloading the update."
new "Ladataan päivitystä."
# game/updater.rpy:167
old "Unpacking the update."
new "Puretaan päivitystä."
# game/updater.rpy:169
old "Finishing up."
new "Viimeistellään asennusta."
# game/updater.rpy:171
old "The update has been installed. Ren'Py will restart."
new "Päivitys on nyt asennettu. Ren'Py käynnistyy nyt uudelleen."
# game/updater.rpy:173
old "The update has been installed."
new "Päivitys on asennettu."
# game/updater.rpy:175
old "The update was cancelled."
new "Päivitys peruttiin."
# game/updater.rpy:192
old "Ren'Py Update"
new "Ren'Py-päivitys"
# game/updater.rpy:198
old "Proceed"
new "Jatka"
+1 -1
View File
@@ -7,4 +7,4 @@
# game/about.rpy:25
old "View license"
new "Voir la licence"
+1 -1
View File
@@ -19,4 +19,4 @@
# game/add_file.rpy:21
old "# Ren'Py automatically loads all script files ending with .rpy. To use this\n# file, define a label and jump to it from another file.\n"
new "Ren'Py charge automatiquement tous les fichiers de script finissant par .rpy. Pour utiliser ce ficher\n#, définissez un label et faites un «jump» vers lui depuis un autre fichier.\n"
+1 -1
View File
@@ -3,4 +3,4 @@
style.l_button_text.selected_bold = True
style.l_navigation_text.bold = False
make_style_backup()
+2 -2
View File
@@ -6,7 +6,7 @@
# game/updater.rpy:65
old "The update channel controls the version of Ren'Py the updater will download. Please select an update channel:"
new "Choisissez une version."
new "Le canal de mise à jour détermine la version de Ren'Py qui sera téléchargée. S'il vous plaît, sélectionnez un canal de mise à jour."
# game/updater.rpy:70
old "Release"
@@ -74,7 +74,7 @@
# game/updater.rpy:139
old "The update was cancelled."
new "La mise à jour a été annullée."
new "La mise à jour a été annulée."
# game/updater.rpy:156
old "Ren'Py Update"
+13 -13
View File
@@ -1,13 +1,13 @@
translate german strings:
# game/about.rpy:21
old "[version!q]"
new "[version!q]"
# game/about.rpy:25
old "View license"
new "Lizenz ansehen"
# game/about.rpy:27
old "Back"
new "Zurück"
translate german strings:
# game/about.rpy:21
old "[version!q]"
new "[version!q]"
# game/about.rpy:25
old "View license"
new "Lizenz ansehen"
# game/about.rpy:27
old "Back"
new "Zurück"
+21 -21
View File
@@ -1,21 +1,21 @@
translate german strings:
# game/add_file.rpy:7
old "FILENAME"
new "DATEINAME"
# game/add_file.rpy:7
old "Enter the name of the script file to create."
new "Geben Sie den Namen der Script-Datei ein, um sie zu erstellen."
# game/add_file.rpy:10
old "The filename must have the .rpy extension."
new "Der Dateiname muss die Endung .rpy haben."
# game/add_file.rpy:18
old "The file already exists."
new "Die Datei existiert bereits."
# game/add_file.rpy:21
old "# Ren'Py automatically loads all script files ending with .rpy. To use this\n# file, define a label and jump to it from another file.\n"
new "# RenPy lädt automatisch alle Skript-Dateien, die auf .rpy enden. Um diese\n# Datei zu verwenden, setzen sie ein Label und springen sie aus einer anderen Datei dorthin.\n"
translate german strings:
# game/add_file.rpy:7
old "FILENAME"
new "DATEINAME"
# game/add_file.rpy:7
old "Enter the name of the script file to create."
new "Geben Sie den Namen der Script-Datei ein, um sie zu erstellen."
# game/add_file.rpy:10
old "The filename must have the .rpy extension."
new "Der Dateiname muss die Endung .rpy haben."
# game/add_file.rpy:18
old "The file already exists."
new "Die Datei existiert bereits."
# game/add_file.rpy:21
old "# Ren'Py automatically loads all script files ending with .rpy. To use this\n# file, define a label and jump to it from another file.\n"
new "# RenPy lädt automatisch alle Skript-Dateien, die auf .rpy enden. Um diese\n# Datei zu verwenden, setzen sie ein Label und springen sie aus einer anderen Datei dorthin.\n"
+160 -160
View File
@@ -1,160 +1,160 @@
translate german strings:
# game/android.rpy:12
old "To build Android packages, please download RAPT (from {a=http://www.renpy.org/dl/android}here{/a}), unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
new "Um eine Android-Datei zu erstellen, laden Sie bitte RAPT ({a=http://www.renpy.org/dl/android}hier{/a}) herunter, entpacken Sie es und platzieren Sie es im RenPy Verzeichnis. Starten Sie dann bitte RenPy neu."
# game/android.rpy:13
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
new "RAPT wurde installiert, aber Sie müssen das Android-SDK installieren, bevor Sie Android-Dateien erstellen können. Wählen Sie „SDK Installieren“, um dies zu tun."
# game/android.rpy:14
old "RAPT has been installed, but a key hasn't been configured. Please create a new key, or restore android.keystore."
new "RAPT wurde installiert, aber ein Key wurde nicht eingestellt. Bitte erstellen Sie einen neuen Key oder stellen Sie android.keystore wieder her."
# game/android.rpy:15
old "The current project has not been configured. Use \"Configure\" to configure it before building."
new "Das aktuelle Projekt wurde nicht eingestellt. Verwenden Sie „Einstellen“, um es vor der Erstellung anzupassen."
# game/android.rpy:16
old "Choose \"Build\" to build the current project, or attach an Android device and choose \"Build & Install\" to build and install it on the device."
new "Wählen Sie „Erstellen“, um das aktuelle Projekt zu erstellen oder schließen Sie ein Android-Gerät an und wählen Sie „Erstellen und installieren“, um es zu erstellen und auf dem Gerät zu installieren."
# game/android.rpy:18
old "Attempts to emulate an Android phone.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
new "Emuliert ein Android-Handy.\n\nDie Berührungseingabe wird mithilfe der Maus emuliert, aber nur, wenn die Schaltfläche gedrückt wird. „Escape“ fungiert als Menüschaltfläche und „Bild rauf“ als „Zurück-Schaltfläche“."
# game/android.rpy:19
old "Attempts to emulate an Android tablet.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
new "Emuliert ein Android-Tablet.\n\nDie Berührungseingabe wird mithilfe der Maus emuliert, aber nur, wenn die Schaltfläche gedrückt wird. „Escape“ fungiert als Menüschaltfläche und „Bild rauf“ als „Zurück-Schaltfläche“."
# game/android.rpy:20
old "Attempts to emulate an OUYA console.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
new "Emuliert eine OUYA-Konsole.\n\nDie Contollereingabe wird mithilfe der Pfeiltasten emuliert, „Enter“ fungiert als Auswahlschaltfläche, „Escape“ als Menüschaltfläche und „Bild rauf“ als „Zurück-Schaltfläche“."
# game/android.rpy:22
old "Downloads and installs the Android SDK and supporting packages. Optionally, generates the keys required to sign the package."
new "Lädt das Android SDK herunter und installiert es. Generiert optional die Keys, die für die Authentifizierung der Datei benötigt werden."
# game/android.rpy:23
old "Configures the package name, version, and other information about this project."
new "Stellt Dateinamen, Version und andere Informationen über dieses Projekt ein."
# game/android.rpy:24
old "Opens the file containing the Google Play keys in the editor.\n\nThis is only needed if the application is using an expansion APK. Read the documentation for more details."
new "Öffnet die Datei mit den Google-Play-Keys im Editor.\n\nDies ist nur nötig, wenn die Anwendung ein Expansion-APK verwendet. Lesen Sie die Dokumentation für weitere Details."
# game/android.rpy:25
old "Builds the Android package."
new "Erstellt die Android-Datei."
# game/android.rpy:26
old "Builds the Android package, and installs it on an Android device connected to your computer."
new "Erstellt die Android-Datei und installiert es auf ein Android-Gerät, das mit Ihrem Computer verbunden ist."
# game/android.rpy:142
old "{a=%s}%s{/a}"
new "{a=%s}%s{/a}"
# game/android.rpy:361
old "Android: [project.current.name!q]"
new "Android: [project.current.name!q]"
# game/android.rpy:381
old "Emulation:"
new "Emulation:"
# game/android.rpy:389
old "Phone"
new "Handy"
# game/android.rpy:393
old "Tablet"
new "Tablet"
# game/android.rpy:397
old "Television / OUYA"
new "Fernseher / OUYA"
# game/android.rpy:409
old "Build:"
new "Erstellen:"
# game/android.rpy:417
old "Install SDK & Create Keys"
new "SDK installieren und Keys erstellen"
# game/android.rpy:421
old "Configure"
new "Einstellen"
# game/android.rpy:425
old "Build Package"
new "Datei erstellen"
# game/android.rpy:429
old "Build & Install"
new "Erstellen und installieren"
translate german strings:
# game/android.rpy:30
old "To build Android packages, please download RAPT, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
new "Um eine Android-Datei zu erstellen, laden Sie bitte RAPT herunter, entpacken Sie es und platzieren Sie es im RenPy Verzeichnis. Starten Sie dann bitte RenPy neu."
# game/android.rpy:31
old "A 32-bit Java Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
new "Ein 32-bit Java-Development-Kit wird benötigt, um Android-Packages auf Windows zu erstellen. Das JDK unterscheidet sich vom JRE, daher ist es möglich, dass Sie Java ohne das JDK installiert haben.\n\nBitte {a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}laden Sie das JDK herunter und installieren Sie es{/a}, dann starten Sie den RenPy-Launcher neu."
# game/android.rpy:39
old "Attempts to emulate a televison-based Android console, like the OUYA or Fire TV.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
new "Emuliert eine Fernseher-Android-Konsole wie die OUYA oder Fire TV.\n\nDie Contollereingabe wird mithilfe der Pfeiltasten emuliert, „Enter“ fungiert als Auswahlschaltfläche, „Escape“ als Menüschaltfläche und „Bild rauf“ als „Zurück-Schaltfläche“."
# game/android.rpy:47
old "Connects to an Android device running ADB in TCP/IP mode."
new "Verbindet mit einem Android-Gerät, das auf ADB im TCP/IP-Modus läuft."
# game/android.rpy:48
old "Disconnects from an Android device running ADB in TCP/IP mode."
new "Trennt Verbindung von einem Android-Gerät, das auf ADB im TCP/IP-Modus läuft."
# game/android.rpy:516
old "Other:"
new "Anderes:"
# game/android.rpy:524
old "Remote ADB Connect"
new "Remote-ADB verbinden"
# game/android.rpy:528
old "Remote ADB Disconnect"
new "Remote-ADB trennen"
# game/android.rpy:561
old "Before packaging Android apps, you'll need to download RAPT, the Ren'Py Android Packaging Tool. Would you like to download RAPT now?"
new "Bevor Sie Android-Apps erstellen können, müssen Sie RAPT herunterladen, das RenPy-Android-Packaging-Tool. Möchten Sie RAPT jetzt herunterladen?"
# game/android.rpy:608
old "Remote ADB Address"
new "Remote-ADB-Adresse"
# game/android.rpy:609
old "Please enter the IP address and port number to connect to, in the form \"192.168.1.143:5555\". Consult your device's documentation to determine if it supports remote ADB, and if so, the address and port to use."
new "Bitte geben Sie die IP-Adresse und die Port-Nummer zum Verbinden ein, Beispiel: „192.168.1.143:5555“. Schauen Sie im Handbuch ihres Geräts nach, um festzustellen, ob es Remote-ADB unterstützt, und wenn ja, schauen Sie die Adresse und den Port nach."
# game/android.rpy:619
old "Invalid remote ADB address"
new "Ungültige Remote-ADB-Adresse"
# game/android.rpy:619
old "The address must contain one exactly one ':'."
new "Die Adresse muss exakt ein „:“ beinhalten."
# game/android.rpy:623
old "The host may not contain whitespace."
new "Der Host darf keine Leerzeichen enthalten."
# game/android.rpy:629
old "The port must be a number."
new "Der Port muss eine Nummer sein."
translate german strings:
# game/android.rpy:12
old "To build Android packages, please download RAPT (from {a=http://www.renpy.org/dl/android}here{/a}), unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
new "Um eine Android-Datei zu erstellen, laden Sie bitte RAPT ({a=http://www.renpy.org/dl/android}hier{/a}) herunter, entpacken Sie es und platzieren Sie es im RenPy Verzeichnis. Starten Sie dann bitte RenPy neu."
# game/android.rpy:13
old "RAPT has been installed, but you'll need to install the Android SDK before you can build Android packages. Choose Install SDK to do this."
new "RAPT wurde installiert, aber Sie müssen das Android-SDK installieren, bevor Sie Android-Dateien erstellen können. Wählen Sie „SDK Installieren“, um dies zu tun."
# game/android.rpy:14
old "RAPT has been installed, but a key hasn't been configured. Please create a new key, or restore android.keystore."
new "RAPT wurde installiert, aber ein Key wurde nicht eingestellt. Bitte erstellen Sie einen neuen Key oder stellen Sie android.keystore wieder her."
# game/android.rpy:15
old "The current project has not been configured. Use \"Configure\" to configure it before building."
new "Das aktuelle Projekt wurde nicht eingestellt. Verwenden Sie „Einstellen“, um es vor der Erstellung anzupassen."
# game/android.rpy:16
old "Choose \"Build\" to build the current project, or attach an Android device and choose \"Build & Install\" to build and install it on the device."
new "Wählen Sie „Erstellen“, um das aktuelle Projekt zu erstellen oder schließen Sie ein Android-Gerät an und wählen Sie „Erstellen und installieren“, um es zu erstellen und auf dem Gerät zu installieren."
# game/android.rpy:18
old "Attempts to emulate an Android phone.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
new "Emuliert ein Android-Handy.\n\nDie Berührungseingabe wird mithilfe der Maus emuliert, aber nur, wenn die Schaltfläche gedrückt wird. „Escape“ fungiert als Menüschaltfläche und „Bild rauf“ als „Zurück-Schaltfläche“."
# game/android.rpy:19
old "Attempts to emulate an Android tablet.\n\nTouch input is emulated through the mouse, but only when the button is held down. Escape is mapped to the menu button, and PageUp is mapped to the back button."
new "Emuliert ein Android-Tablet.\n\nDie Berührungseingabe wird mithilfe der Maus emuliert, aber nur, wenn die Schaltfläche gedrückt wird. „Escape“ fungiert als Menüschaltfläche und „Bild rauf“ als „Zurück-Schaltfläche“."
# game/android.rpy:20
old "Attempts to emulate an OUYA console.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
new "Emuliert eine OUYA-Konsole.\n\nDie Contollereingabe wird mithilfe der Pfeiltasten emuliert, „Enter“ fungiert als Auswahlschaltfläche, „Escape“ als Menüschaltfläche und „Bild rauf“ als „Zurück-Schaltfläche“."
# game/android.rpy:22
old "Downloads and installs the Android SDK and supporting packages. Optionally, generates the keys required to sign the package."
new "Lädt das Android SDK herunter und installiert es. Generiert optional die Keys, die für die Authentifizierung der Datei benötigt werden."
# game/android.rpy:23
old "Configures the package name, version, and other information about this project."
new "Stellt Dateinamen, Version und andere Informationen über dieses Projekt ein."
# game/android.rpy:24
old "Opens the file containing the Google Play keys in the editor.\n\nThis is only needed if the application is using an expansion APK. Read the documentation for more details."
new "Öffnet die Datei mit den Google-Play-Keys im Editor.\n\nDies ist nur nötig, wenn die Anwendung ein Expansion-APK verwendet. Lesen Sie die Dokumentation für weitere Details."
# game/android.rpy:25
old "Builds the Android package."
new "Erstellt die Android-Datei."
# game/android.rpy:26
old "Builds the Android package, and installs it on an Android device connected to your computer."
new "Erstellt die Android-Datei und installiert es auf ein Android-Gerät, das mit Ihrem Computer verbunden ist."
# game/android.rpy:142
old "{a=%s}%s{/a}"
new "{a=%s}%s{/a}"
# game/android.rpy:361
old "Android: [project.current.name!q]"
new "Android: [project.current.name!q]"
# game/android.rpy:381
old "Emulation:"
new "Emulation:"
# game/android.rpy:389
old "Phone"
new "Handy"
# game/android.rpy:393
old "Tablet"
new "Tablet"
# game/android.rpy:397
old "Television / OUYA"
new "Fernseher / OUYA"
# game/android.rpy:409
old "Build:"
new "Erstellen:"
# game/android.rpy:417
old "Install SDK & Create Keys"
new "SDK installieren und Keys erstellen"
# game/android.rpy:421
old "Configure"
new "Einstellen"
# game/android.rpy:425
old "Build Package"
new "Datei erstellen"
# game/android.rpy:429
old "Build & Install"
new "Erstellen und installieren"
translate german strings:
# game/android.rpy:30
old "To build Android packages, please download RAPT, unzip it, and place it into the Ren'Py directory. Then restart the Ren'Py launcher."
new "Um eine Android-Datei zu erstellen, laden Sie bitte RAPT herunter, entpacken Sie es und platzieren Sie es im RenPy Verzeichnis. Starten Sie dann bitte RenPy neu."
# game/android.rpy:31
old "A 32-bit Java Development Kit is required to build Android packages on Windows. The JDK is different from the JRE, so it's possible you have Java without having the JDK.\n\nPlease {a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}download and install the JDK{/a}, then restart the Ren'Py launcher."
new "Ein 32-bit Java-Development-Kit wird benötigt, um Android-Packages auf Windows zu erstellen. Das JDK unterscheidet sich vom JRE, daher ist es möglich, dass Sie Java ohne das JDK installiert haben.\n\nBitte {a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}laden Sie das JDK herunter und installieren Sie es{/a}, dann starten Sie den RenPy-Launcher neu."
# game/android.rpy:39
old "Attempts to emulate a televison-based Android console, like the OUYA or Fire TV.\n\nController input is mapped to the arrow keys, Enter is mapped to the select button, Escape is mapped to the menu button, and PageUp is mapped to the back button."
new "Emuliert eine Fernseher-Android-Konsole wie die OUYA oder Fire TV.\n\nDie Contollereingabe wird mithilfe der Pfeiltasten emuliert, „Enter“ fungiert als Auswahlschaltfläche, „Escape“ als Menüschaltfläche und „Bild rauf“ als „Zurück-Schaltfläche“."
# game/android.rpy:47
old "Connects to an Android device running ADB in TCP/IP mode."
new "Verbindet mit einem Android-Gerät, das auf ADB im TCP/IP-Modus läuft."
# game/android.rpy:48
old "Disconnects from an Android device running ADB in TCP/IP mode."
new "Trennt Verbindung von einem Android-Gerät, das auf ADB im TCP/IP-Modus läuft."
# game/android.rpy:516
old "Other:"
new "Anderes:"
# game/android.rpy:524
old "Remote ADB Connect"
new "Remote-ADB verbinden"
# game/android.rpy:528
old "Remote ADB Disconnect"
new "Remote-ADB trennen"
# game/android.rpy:561
old "Before packaging Android apps, you'll need to download RAPT, the Ren'Py Android Packaging Tool. Would you like to download RAPT now?"
new "Bevor Sie Android-Apps erstellen können, müssen Sie RAPT herunterladen, das RenPy-Android-Packaging-Tool. Möchten Sie RAPT jetzt herunterladen?"
# game/android.rpy:608
old "Remote ADB Address"
new "Remote-ADB-Adresse"
# game/android.rpy:609
old "Please enter the IP address and port number to connect to, in the form \"192.168.1.143:5555\". Consult your device's documentation to determine if it supports remote ADB, and if so, the address and port to use."
new "Bitte geben Sie die IP-Adresse und die Port-Nummer zum Verbinden ein, Beispiel: „192.168.1.143:5555“. Schauen Sie im Handbuch ihres Geräts nach, um festzustellen, ob es Remote-ADB unterstützt, und wenn ja, schauen Sie die Adresse und den Port nach."
# game/android.rpy:619
old "Invalid remote ADB address"
new "Ungültige Remote-ADB-Adresse"
# game/android.rpy:619
old "The address must contain one exactly one ':'."
new "Die Adresse muss exakt ein „:“ beinhalten."
# game/android.rpy:623
old "The host may not contain whitespace."
new "Der Host darf keine Leerzeichen enthalten."
# game/android.rpy:629
old "The port must be a number."
new "Der Port muss eine Nummer sein."
+41 -41
View File
@@ -1,41 +1,41 @@
translate german strings:
# game/choose_theme.rpy:274
old "Could not change the theme. Perhaps options.rpy was changed too much."
new "Konnte Theme nicht ändern. Vielleicht wurde options.rpy zu stark verändert."
# game/choose_theme.rpy:332
old "Display"
new "Anzeige"
# game/choose_theme.rpy:333
old "Window"
new "Fenster"
# game/choose_theme.rpy:334
old "Fullscreen"
new "Vollbild"
# game/choose_theme.rpy:335
old "Planetarium"
new "Planetarium"
# game/choose_theme.rpy:342
old "Sound Volume"
new "Soundlautstärke"
# game/choose_theme.rpy:376
old "Choose Theme"
new "Theme auswählen"
# game/choose_theme.rpy:389
old "Theme"
new "Theme"
# game/choose_theme.rpy:413
old "Color Scheme"
new "Farbschema"
# game/choose_theme.rpy:444
old "Continue"
new "Weiter"
translate german strings:
# game/choose_theme.rpy:274
old "Could not change the theme. Perhaps options.rpy was changed too much."
new "Konnte Theme nicht ändern. Vielleicht wurde options.rpy zu stark verändert."
# game/choose_theme.rpy:332
old "Display"
new "Anzeige"
# game/choose_theme.rpy:333
old "Window"
new "Fenster"
# game/choose_theme.rpy:334
old "Fullscreen"
new "Vollbild"
# game/choose_theme.rpy:335
old "Planetarium"
new "Planetarium"
# game/choose_theme.rpy:342
old "Sound Volume"
new "Soundlautstärke"
# game/choose_theme.rpy:376
old "Choose Theme"
new "Theme auswählen"
# game/choose_theme.rpy:389
old "Theme"
new "Theme"
# game/choose_theme.rpy:413
old "Color Scheme"
new "Farbschema"
# game/choose_theme.rpy:444
old "Continue"
new "Weiter"
+458 -458
View File
@@ -1,458 +1,458 @@
translate german strings:
# renpy/common/00action_file.rpy:118
old "%b %d, %H:%M"
new "%d. %b, %H:%M"
# renpy/common/00action_file.rpy:587
old "Quick save complete."
new "Schnellspeicherung erfolgreich."
translate german strings:
# renpy/common/00gallery.rpy:521
old "Image [index] of [count] locked."
new "Grafik [index] von [count] gesperrt."
# renpy/common/00gallery.rpy:539
old "prev"
new "vor"
# renpy/common/00gallery.rpy:540
old "next"
new "weiter"
# renpy/common/00gallery.rpy:541
old "slideshow"
new "slideshow"
# renpy/common/00gallery.rpy:542
old "return"
new "zurück"
translate german strings:
# renpy/common/00gltest.rpy:50
old "Graphics Acceleration"
new "Grafikbeschleuniger"
# renpy/common/00gltest.rpy:54
old "Automatically Choose"
new "Automatisch auswählen"
# renpy/common/00gltest.rpy:59
old "Force Angle/DirectX Renderer"
new "Angle/DirectX-Darstellung erzwingen"
# renpy/common/00gltest.rpy:63
old "Force OpenGL Renderer"
new "OpenGL-Darstellung erzwingen"
# renpy/common/00gltest.rpy:67
old "Force Software Renderer"
new "Software-Darstellung erzwingen"
# renpy/common/00gltest.rpy:73
old "Changes will take effect the next time this program is run."
new "Die Änderungen werden beim nächsten Neustart des Programms übernommen."
# renpy/common/00gltest.rpy:82
old "Return"
new "Zurück"
# renpy/common/00gltest.rpy:112
old "Performance Warning"
new "Performance Warnung"
# renpy/common/00gltest.rpy:117
old "This computer is using software rendering."
new "Dieser Computer verwendet Software-Darstellung."
# renpy/common/00gltest.rpy:119
old "This computer is not using shaders."
new "Dieser Computer verwendet keine Shader."
# renpy/common/00gltest.rpy:121
old "This computer is displaying graphics slowly."
new "Dieser Computer zeigt Grafiken langsam an."
# renpy/common/00gltest.rpy:123
old "This computer has a problem displaying graphics: [problem]."
new "Dieser Computer hat ein Problem, Grafiken anzuzeigen: [problem]."
# renpy/common/00gltest.rpy:128
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display. Updating DirectX could fix this problem."
new "Die Grafiktreiber könnten nicht mehr aktuell sein oder nicht korrekt funktionieren. Dies kann zu langsamer oder inkorrekter Grafikanzeige führen. Das Aktualisieren von DirectX könnte dieses Problem beheben."
# renpy/common/00gltest.rpy:130
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display."
new "Die Grafiktreiber könnten nicht mehr aktuell sein oder nicht korrekt funktionieren. Dies kann zu langsamer oder inkorrekter Grafikanzeige führen."
# renpy/common/00gltest.rpy:135
old "Update DirectX"
new "DirectX aktualisieren"
# renpy/common/00gltest.rpy:141
old "Continue, Show this warning again"
new "Fortsetzen, diese Warnung wieder anzeigen"
# renpy/common/00gltest.rpy:145
old "Continue, Don't show warning again"
new "Fortsetzen, diese Warnung nicht mehr anzeigen"
# renpy/common/00gltest.rpy:171
old "Updating DirectX."
new "DirectX aktualisieren."
# renpy/common/00gltest.rpy:175
old "DirectX web setup has been started. It may start minimized in the taskbar. Please follow the prompts to install DirectX."
new "DirectX Websetup wurde gestartet. Es könnte minimiert in der Taskleiste starten. Bitte folgen Sie den Anweisungen, um DirectX zu installieren."
# renpy/common/00gltest.rpy:179
old "{b}Note:{/b} Microsoft's DirectX web setup program will, by default, install the Bing toolbar. If you do not want this toolbar, uncheck the appropriate box."
new "{b}Anmerkung:{/b} Microsofts DirectX Websetup-Programm installiert automatisch die Bing-Toolbar. Wenn Sie diese Toolbar nicht möchten, entfernen Sie das Häkchen bei der entsprechenden Schaltfläche."
# renpy/common/00gltest.rpy:183
old "When setup finishes, please click below to restart this program."
new "Wenn die Installation abgeschlossen ist, klicken Sie bitte unten, um dieses Programm neuzustarten."
# renpy/common/00gltest.rpy:185
old "Restart"
new "Neustart"
translate german strings:
# renpy/common/00keymap.rpy:167
old "Saved screenshot as %s."
new "Screenshot unter %s gespeichert."
translate german strings:
# renpy/common/00layout.rpy:421
old "Are you sure?"
new "Sind Sie sicher?"
# renpy/common/00layout.rpy:422
old "Are you sure you want to delete this save?"
new "Sind Sie sicher, dass Sie diese Datei löschen möchten?"
# renpy/common/00layout.rpy:423
old "Are you sure you want to overwrite your save?"
new "Sind Sie sicher, dass Sie diese Datei überschreiben möchten?"
# renpy/common/00layout.rpy:424
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?"
# renpy/common/00layout.rpy:425
old "Are you sure you want to quit?"
new "Sind Sie sicher, dass Sie beenden möchten?"
# renpy/common/00layout.rpy:426
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."
# renpy/common/00layout.rpy:427
old "Are you sure you want to begin skipping?"
new "Sind Sie sicher, dass Sie vorspulen möchten?"
# renpy/common/00layout.rpy:428
old "Are you sure you want to skip to the next choice?"
new "Sind Sie sicher, dass Sie zur nächsten Auswahl vorspulen möchten?"
# renpy/common/00layout.rpy:429
old "Are you sure you want to skip to unseen dialogue or the next choice?"
new "Sind Sie sicher, dass Sie zum nächsten ungelesenen Dialog oder zur nächsten Auswahl vorspulen möchten?"
translate german strings:
# renpy/common/00library.rpy:77
old "Skip Mode"
new "Vorspulen"
# renpy/common/00library.rpy:80
old "Fast Skip Mode"
new "Schnell vorspulen"
translate german strings:
# renpy/common/00updater.rpy:1255
old "Updater"
new "Aktualisieren"
# renpy/common/00updater.rpy:1264
old "This program is up to date."
new "Dieses Programm ist aktuell."
# renpy/common/00updater.rpy:1266
old "[u.version] is available. Do you want to install it?"
new "[u.version] ist verfügbar. Möchten Sie sie installieren?"
# renpy/common/00updater.rpy:1268
old "Preparing to download the updates."
new "Vorbereiten, um die Aktualisierungen herunterzuladen."
# renpy/common/00updater.rpy:1270
old "Downloading the updates."
new "Aktualisierungen werden heruntergeladen."
# renpy/common/00updater.rpy:1272
old "Unpacking the updates."
new "Aktualisierungen werden entpackt."
# renpy/common/00updater.rpy:1276
old "The updates have been installed. The program will restart."
new "Die Aktualisierungen wurden installiert. Das Programm wird nun neustarten."
# renpy/common/00updater.rpy:1278
old "The updates have been installed."
new "Die Aktualisierungen wurden installiert."
# renpy/common/00updater.rpy:1280
old "The updates were cancelled."
new "Die Aktualisierungen wurden abgebrochen."
translate german strings:
# renpy/common/_compat/gamemenu.rpym:180
old "Empty Slot."
new "Leerer Speicherplatz."
# renpy/common/_compat/gamemenu.rpym:337
old "Previous"
new "Vorige"
# renpy/common/_compat/gamemenu.rpym:344
old "Next"
new "Nächste"
translate german strings:
# renpy/common/_compat/preferences.rpym:411
old "Joystick Mapping"
new "Joystickbelegung"
translate german strings:
# renpy/common/_errorhandling.rpym:434
old "Rollback"
new "Zurückscrollen"
# renpy/common/_errorhandling.rpym:436
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."
# renpy/common/_errorhandling.rpym:441
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
new "Ignoriert den Fehler und ermöglicht es, fortzufahren. Dies führt oft zu weiteren Fehlern."
# renpy/common/_errorhandling.rpym:446
old "Reloads the game from disk, saving and restoring game state if possible."
new "Startet das Spiel neu und stellt den Spielstand wieder her, wenn möglich."
# renpy/common/_errorhandling.rpym:450
old "Opens the traceback.txt file in a text editor."
new "Öffnet die traceback.txt Datei in einem Texteditor."
# renpy/common/_errorhandling.rpym:483
old "Parsing the script failed."
new "Syntaxanalyse gescheitert."
# renpy/common/_errorhandling.rpym:510
old "Open Parse Errors"
new "Fehleranalyse öffnen"
# renpy/common/_errorhandling.rpym:512
old "Opens the errors.txt file in a text editor."
new "Öffnet die errors.txt Datei in einem Texteditor."
translate german strings:
# renpy/common/_layout/classic_load_save.rpym:152
old "a"
new "a"
# renpy/common/_layout/classic_load_save.rpym:161
old "q"
new "s"
translate german strings:
# renpy/common/00console.rpy:179
old "%(version)s console, originally by Shiz, C, and delta.\n"
new "%(version)s Konsole, ursprünglich von Shiz, C und delta.\n"
# renpy/common/00console.rpy:180
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"
# renpy/common/00console.rpy:184
old "Ren'Py script enabled."
new "RenPy Skript aktiviert."
# renpy/common/00console.rpy:186
old "Ren'Py script disabled."
new "RenPy Skript deaktiviert."
# renpy/common/00console.rpy:392
old "help: show this help"
new "help: zeigt diese Hilfe an"
# renpy/common/00console.rpy:397
old "commands:\n"
new "Befehle:\n"
# renpy/common/00console.rpy:407
old " <renpy script statement>: run the statement\n"
new " <renpy script statement>: startet die Anweisung\n"
# renpy/common/00console.rpy:409
old " <python expression or statement>: run the expression or statement"
new " <python expression or statement>: startet den Ausdruck oder die Anweisung"
# renpy/common/00console.rpy:417
old "clear: clear the console history"
new "clear: leert das Konsolenprotokoll"
# renpy/common/00console.rpy:421
old "exit: exit the console"
new "exit: schließt die Konsole"
# renpy/common/00console.rpy:429
old "load <slot>: loads the game from slot"
new "load <slot>: lädt das Spiel aus dem Speicherplatz"
# renpy/common/00console.rpy:442
old "save <slot>: saves the game in slot"
new "save <slot>: speichert das Spiel im Speicherplatz"
# renpy/common/00console.rpy:453
old "reload: reloads the game, refreshing the scripts"
new "reload: startet das Spiel neu und erneuert die Skripte"
# renpy/common/00console.rpy:461
old "watch <expression>: watch a python expression"
new "watch <expression>: beobachtet einen Python-Ausdruck"
# renpy/common/00console.rpy:470
old "unwatch <expression>: stop watching an expression"
new "unwatch <expression>: beendet das Beobachten eines Ausdrucks"
# renpy/common/00console.rpy:478
old "unwatchall: stop watching all expressions"
new "unwatchall: beendet das Beobachten aller Ausdrücke"
# renpy/common/00console.rpy:484
old "jump <label>: jumps to label"
new "jump <label>: springt zum Label"
translate german strings:
# renpy/common/00keymap.rpy:332
old "Autoreload"
new "Autoneustart"
translate german strings:
# renpy/common/_developer/developer.rpym:65
old "Developer Menu"
new "Entwicklermenü"
# renpy/common/_developer/developer.rpym:67
old "Reload Game (Shift+R)"
new "Spiel neustarten (Shift + R)"
# renpy/common/_developer/developer.rpym:69
old "Console (Shift+O)"
new "Konsole (Shift + O)"
# renpy/common/_developer/developer.rpym:71
old "Variable Viewer"
new "Variablen anzeigen"
# renpy/common/_developer/developer.rpym:73
old "Theme Test"
new "Themetest"
# renpy/common/_developer/developer.rpym:75
old "Image Location Picker"
new "Grafikposition auswählen"
# renpy/common/_developer/developer.rpym:77
old "Filename List"
new "Liste der Dateinamen"
# renpy/common/_developer/developer.rpym:81
old "Show Image Load Log"
new "Grafiklog anzeigen"
# renpy/common/_developer/developer.rpym:84
old "Hide Image Load Log"
new "Grafiklog verbergen"
# renpy/common/_developer/developer.rpym:149
old "No variables have changed since the game started."
new "Keine Variablen wurden geändert, seit das Spiel gestartet wurde."
# renpy/common/_developer/developer.rpym:152
old "Return to the developer menu"
new "Zurück zum Entwicklermenü"
# renpy/common/_developer/developer.rpym:272
old "{b}Missing Images{/b}"
new "{b}Fehlende Grafiken{/b}"
# renpy/common/_developer/developer.rpym:424
old "Rectangle: %r"
new "Rechteck: %r"
# renpy/common/_developer/developer.rpym:429
old "Mouse position: %r"
new "Mausposition: %r"
# renpy/common/_developer/developer.rpym:431
old "Right-click or escape to quit."
new "Rechtsklick oder Escape, um zu beenden."
# renpy/common/_developer/developer.rpym:482
old "Done"
new "Fertig"
translate german strings:
# renpy/common/_developer/inspector.rpym:43
old "Displayable Inspector"
new "Darstellungen prüfen"
# renpy/common/_developer/inspector.rpym:49
old "Nothing to inspect."
new "Nichts zum Prüfen verfügbar"
# renpy/common/_developer/inspector.rpym:58
old "Size"
new "Größe"
# renpy/common/_developer/inspector.rpym:63
old "Style"
new "Stil"
# renpy/common/_developer/inspector.rpym:123
old "Inspecting Styles of [displayable_name!q]"
new "Prüft Stile von [displayable_name!q]"
# renpy/common/_developer/inspector.rpym:135
old "displayable:"
new "Darstellungen:"
# renpy/common/_developer/inspector.rpym:142
old " (no properties affect the displayable)"
new " (keine Eigenschaften beeinflussen diese Darstellung)"
# renpy/common/_developer/inspector.rpym:144
old " (default properties omitted)"
new " (Standardeigenschaften entfallen)"
# renpy/common/_developer/inspector.rpym:174
old "<repr() failed>"
new "<repr() gescheitert>"
translate german strings:
# renpy/common/00action_file.rpy:118
old "%b %d, %H:%M"
new "%d. %b, %H:%M"
# renpy/common/00action_file.rpy:587
old "Quick save complete."
new "Schnellspeicherung erfolgreich."
translate german strings:
# renpy/common/00gallery.rpy:521
old "Image [index] of [count] locked."
new "Grafik [index] von [count] gesperrt."
# renpy/common/00gallery.rpy:539
old "prev"
new "vor"
# renpy/common/00gallery.rpy:540
old "next"
new "weiter"
# renpy/common/00gallery.rpy:541
old "slideshow"
new "slideshow"
# renpy/common/00gallery.rpy:542
old "return"
new "zurück"
translate german strings:
# renpy/common/00gltest.rpy:50
old "Graphics Acceleration"
new "Grafikbeschleuniger"
# renpy/common/00gltest.rpy:54
old "Automatically Choose"
new "Automatisch auswählen"
# renpy/common/00gltest.rpy:59
old "Force Angle/DirectX Renderer"
new "Angle/DirectX-Darstellung erzwingen"
# renpy/common/00gltest.rpy:63
old "Force OpenGL Renderer"
new "OpenGL-Darstellung erzwingen"
# renpy/common/00gltest.rpy:67
old "Force Software Renderer"
new "Software-Darstellung erzwingen"
# renpy/common/00gltest.rpy:73
old "Changes will take effect the next time this program is run."
new "Die Änderungen werden beim nächsten Neustart des Programms übernommen."
# renpy/common/00gltest.rpy:82
old "Return"
new "Zurück"
# renpy/common/00gltest.rpy:112
old "Performance Warning"
new "Performance Warnung"
# renpy/common/00gltest.rpy:117
old "This computer is using software rendering."
new "Dieser Computer verwendet Software-Darstellung."
# renpy/common/00gltest.rpy:119
old "This computer is not using shaders."
new "Dieser Computer verwendet keine Shader."
# renpy/common/00gltest.rpy:121
old "This computer is displaying graphics slowly."
new "Dieser Computer zeigt Grafiken langsam an."
# renpy/common/00gltest.rpy:123
old "This computer has a problem displaying graphics: [problem]."
new "Dieser Computer hat ein Problem, Grafiken anzuzeigen: [problem]."
# renpy/common/00gltest.rpy:128
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display. Updating DirectX could fix this problem."
new "Die Grafiktreiber könnten nicht mehr aktuell sein oder nicht korrekt funktionieren. Dies kann zu langsamer oder inkorrekter Grafikanzeige führen. Das Aktualisieren von DirectX könnte dieses Problem beheben."
# renpy/common/00gltest.rpy:130
old "Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display."
new "Die Grafiktreiber könnten nicht mehr aktuell sein oder nicht korrekt funktionieren. Dies kann zu langsamer oder inkorrekter Grafikanzeige führen."
# renpy/common/00gltest.rpy:135
old "Update DirectX"
new "DirectX aktualisieren"
# renpy/common/00gltest.rpy:141
old "Continue, Show this warning again"
new "Fortsetzen, diese Warnung wieder anzeigen"
# renpy/common/00gltest.rpy:145
old "Continue, Don't show warning again"
new "Fortsetzen, diese Warnung nicht mehr anzeigen"
# renpy/common/00gltest.rpy:171
old "Updating DirectX."
new "DirectX aktualisieren."
# renpy/common/00gltest.rpy:175
old "DirectX web setup has been started. It may start minimized in the taskbar. Please follow the prompts to install DirectX."
new "DirectX Websetup wurde gestartet. Es könnte minimiert in der Taskleiste starten. Bitte folgen Sie den Anweisungen, um DirectX zu installieren."
# renpy/common/00gltest.rpy:179
old "{b}Note:{/b} Microsoft's DirectX web setup program will, by default, install the Bing toolbar. If you do not want this toolbar, uncheck the appropriate box."
new "{b}Anmerkung:{/b} Microsofts DirectX Websetup-Programm installiert automatisch die Bing-Toolbar. Wenn Sie diese Toolbar nicht möchten, entfernen Sie das Häkchen bei der entsprechenden Schaltfläche."
# renpy/common/00gltest.rpy:183
old "When setup finishes, please click below to restart this program."
new "Wenn die Installation abgeschlossen ist, klicken Sie bitte unten, um dieses Programm neuzustarten."
# renpy/common/00gltest.rpy:185
old "Restart"
new "Neustart"
translate german strings:
# renpy/common/00keymap.rpy:167
old "Saved screenshot as %s."
new "Screenshot unter %s gespeichert."
translate german strings:
# renpy/common/00layout.rpy:421
old "Are you sure?"
new "Sind Sie sicher?"
# renpy/common/00layout.rpy:422
old "Are you sure you want to delete this save?"
new "Sind Sie sicher, dass Sie diese Datei löschen möchten?"
# renpy/common/00layout.rpy:423
old "Are you sure you want to overwrite your save?"
new "Sind Sie sicher, dass Sie diese Datei überschreiben möchten?"
# renpy/common/00layout.rpy:424
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?"
# renpy/common/00layout.rpy:425
old "Are you sure you want to quit?"
new "Sind Sie sicher, dass Sie beenden möchten?"
# renpy/common/00layout.rpy:426
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."
# renpy/common/00layout.rpy:427
old "Are you sure you want to begin skipping?"
new "Sind Sie sicher, dass Sie vorspulen möchten?"
# renpy/common/00layout.rpy:428
old "Are you sure you want to skip to the next choice?"
new "Sind Sie sicher, dass Sie zur nächsten Auswahl vorspulen möchten?"
# renpy/common/00layout.rpy:429
old "Are you sure you want to skip to unseen dialogue or the next choice?"
new "Sind Sie sicher, dass Sie zum nächsten ungelesenen Dialog oder zur nächsten Auswahl vorspulen möchten?"
translate german strings:
# renpy/common/00library.rpy:77
old "Skip Mode"
new "Vorspulen"
# renpy/common/00library.rpy:80
old "Fast Skip Mode"
new "Schnell vorspulen"
translate german strings:
# renpy/common/00updater.rpy:1255
old "Updater"
new "Aktualisieren"
# renpy/common/00updater.rpy:1264
old "This program is up to date."
new "Dieses Programm ist aktuell."
# renpy/common/00updater.rpy:1266
old "[u.version] is available. Do you want to install it?"
new "[u.version] ist verfügbar. Möchten Sie sie installieren?"
# renpy/common/00updater.rpy:1268
old "Preparing to download the updates."
new "Vorbereiten, um die Aktualisierungen herunterzuladen."
# renpy/common/00updater.rpy:1270
old "Downloading the updates."
new "Aktualisierungen werden heruntergeladen."
# renpy/common/00updater.rpy:1272
old "Unpacking the updates."
new "Aktualisierungen werden entpackt."
# renpy/common/00updater.rpy:1276
old "The updates have been installed. The program will restart."
new "Die Aktualisierungen wurden installiert. Das Programm wird nun neustarten."
# renpy/common/00updater.rpy:1278
old "The updates have been installed."
new "Die Aktualisierungen wurden installiert."
# renpy/common/00updater.rpy:1280
old "The updates were cancelled."
new "Die Aktualisierungen wurden abgebrochen."
translate german strings:
# renpy/common/_compat/gamemenu.rpym:180
old "Empty Slot."
new "Leerer Speicherplatz."
# renpy/common/_compat/gamemenu.rpym:337
old "Previous"
new "Vorige"
# renpy/common/_compat/gamemenu.rpym:344
old "Next"
new "Nächste"
translate german strings:
# renpy/common/_compat/preferences.rpym:411
old "Joystick Mapping"
new "Joystickbelegung"
translate german strings:
# renpy/common/_errorhandling.rpym:434
old "Rollback"
new "Zurückscrollen"
# renpy/common/_errorhandling.rpym:436
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."
# renpy/common/_errorhandling.rpym:441
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
new "Ignoriert den Fehler und ermöglicht es, fortzufahren. Dies führt oft zu weiteren Fehlern."
# renpy/common/_errorhandling.rpym:446
old "Reloads the game from disk, saving and restoring game state if possible."
new "Startet das Spiel neu und stellt den Spielstand wieder her, wenn möglich."
# renpy/common/_errorhandling.rpym:450
old "Opens the traceback.txt file in a text editor."
new "Öffnet die traceback.txt Datei in einem Texteditor."
# renpy/common/_errorhandling.rpym:483
old "Parsing the script failed."
new "Syntaxanalyse gescheitert."
# renpy/common/_errorhandling.rpym:510
old "Open Parse Errors"
new "Fehleranalyse öffnen"
# renpy/common/_errorhandling.rpym:512
old "Opens the errors.txt file in a text editor."
new "Öffnet die errors.txt Datei in einem Texteditor."
translate german strings:
# renpy/common/_layout/classic_load_save.rpym:152
old "a"
new "a"
# renpy/common/_layout/classic_load_save.rpym:161
old "q"
new "s"
translate german strings:
# renpy/common/00console.rpy:179
old "%(version)s console, originally by Shiz, C, and delta.\n"
new "%(version)s Konsole, ursprünglich von Shiz, C und delta.\n"
# renpy/common/00console.rpy:180
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"
# renpy/common/00console.rpy:184
old "Ren'Py script enabled."
new "RenPy Skript aktiviert."
# renpy/common/00console.rpy:186
old "Ren'Py script disabled."
new "RenPy Skript deaktiviert."
# renpy/common/00console.rpy:392
old "help: show this help"
new "help: zeigt diese Hilfe an"
# renpy/common/00console.rpy:397
old "commands:\n"
new "Befehle:\n"
# renpy/common/00console.rpy:407
old " <renpy script statement>: run the statement\n"
new " <renpy script statement>: startet die Anweisung\n"
# renpy/common/00console.rpy:409
old " <python expression or statement>: run the expression or statement"
new " <python expression or statement>: startet den Ausdruck oder die Anweisung"
# renpy/common/00console.rpy:417
old "clear: clear the console history"
new "clear: leert das Konsolenprotokoll"
# renpy/common/00console.rpy:421
old "exit: exit the console"
new "exit: schließt die Konsole"
# renpy/common/00console.rpy:429
old "load <slot>: loads the game from slot"
new "load <slot>: lädt das Spiel aus dem Speicherplatz"
# renpy/common/00console.rpy:442
old "save <slot>: saves the game in slot"
new "save <slot>: speichert das Spiel im Speicherplatz"
# renpy/common/00console.rpy:453
old "reload: reloads the game, refreshing the scripts"
new "reload: startet das Spiel neu und erneuert die Skripte"
# renpy/common/00console.rpy:461
old "watch <expression>: watch a python expression"
new "watch <expression>: beobachtet einen Python-Ausdruck"
# renpy/common/00console.rpy:470
old "unwatch <expression>: stop watching an expression"
new "unwatch <expression>: beendet das Beobachten eines Ausdrucks"
# renpy/common/00console.rpy:478
old "unwatchall: stop watching all expressions"
new "unwatchall: beendet das Beobachten aller Ausdrücke"
# renpy/common/00console.rpy:484
old "jump <label>: jumps to label"
new "jump <label>: springt zum Label"
translate german strings:
# renpy/common/00keymap.rpy:332
old "Autoreload"
new "Autoneustart"
translate german strings:
# renpy/common/_developer/developer.rpym:65
old "Developer Menu"
new "Entwicklermenü"
# renpy/common/_developer/developer.rpym:67
old "Reload Game (Shift+R)"
new "Spiel neustarten (Shift + R)"
# renpy/common/_developer/developer.rpym:69
old "Console (Shift+O)"
new "Konsole (Shift + O)"
# renpy/common/_developer/developer.rpym:71
old "Variable Viewer"
new "Variablen anzeigen"
# renpy/common/_developer/developer.rpym:73
old "Theme Test"
new "Themetest"
# renpy/common/_developer/developer.rpym:75
old "Image Location Picker"
new "Grafikposition auswählen"
# renpy/common/_developer/developer.rpym:77
old "Filename List"
new "Liste der Dateinamen"
# renpy/common/_developer/developer.rpym:81
old "Show Image Load Log"
new "Grafiklog anzeigen"
# renpy/common/_developer/developer.rpym:84
old "Hide Image Load Log"
new "Grafiklog verbergen"
# renpy/common/_developer/developer.rpym:149
old "No variables have changed since the game started."
new "Keine Variablen wurden geändert, seit das Spiel gestartet wurde."
# renpy/common/_developer/developer.rpym:152
old "Return to the developer menu"
new "Zurück zum Entwicklermenü"
# renpy/common/_developer/developer.rpym:272
old "{b}Missing Images{/b}"
new "{b}Fehlende Grafiken{/b}"
# renpy/common/_developer/developer.rpym:424
old "Rectangle: %r"
new "Rechteck: %r"
# renpy/common/_developer/developer.rpym:429
old "Mouse position: %r"
new "Mausposition: %r"
# renpy/common/_developer/developer.rpym:431
old "Right-click or escape to quit."
new "Rechtsklick oder Escape, um zu beenden."
# renpy/common/_developer/developer.rpym:482
old "Done"
new "Fertig"
translate german strings:
# renpy/common/_developer/inspector.rpym:43
old "Displayable Inspector"
new "Darstellungen prüfen"
# renpy/common/_developer/inspector.rpym:49
old "Nothing to inspect."
new "Nichts zum Prüfen verfügbar"
# renpy/common/_developer/inspector.rpym:58
old "Size"
new "Größe"
# renpy/common/_developer/inspector.rpym:63
old "Style"
new "Stil"
# renpy/common/_developer/inspector.rpym:123
old "Inspecting Styles of [displayable_name!q]"
new "Prüft Stile von [displayable_name!q]"
# renpy/common/_developer/inspector.rpym:135
old "displayable:"
new "Darstellungen:"
# renpy/common/_developer/inspector.rpym:142
old " (no properties affect the displayable)"
new " (keine Eigenschaften beeinflussen diese Darstellung)"
# renpy/common/_developer/inspector.rpym:144
old " (default properties omitted)"
new " (Standardeigenschaften entfallen)"
# renpy/common/_developer/inspector.rpym:174
old "<repr() failed>"
new "<repr() gescheitert>"
+42 -42
View File
@@ -1,42 +1,42 @@
translate german strings:
# game/distribute.rpy:313
old "Nothing to do."
new "Nichts zu tun."
# game/distribute.rpy:317
old "Scanning project files..."
new "Projektdateien werden geprüft …"
# game/distribute.rpy:324
old "Scanning Ren'Py files..."
new "RenPy-Dateien werden geprüft …"
# game/distribute.rpy:474
old "Archiving files..."
new "Dateien werden archiviert …"
# game/distribute.rpy:722
old "Writing the [variant] [format] package."
new "Das [variant] [format] Package wird erstellt."
# game/distribute.rpy:735
old "Making the [variant] update zsync file."
new "Die [variant] Update-zsync-Datei wird erstellt."
# game/distribute.rpy:831
old "Processed {b}[complete]{/b} of {b}[total]{/b} files."
new "{b}[complete]{/b} von {b}[total]{/b} Dateien verarbeitet."
# game/distribute.rpy:892
old "All packages have been built.\n\nDue to the presence of permission information, unpacking and repacking the Linux and Macintosh distributions on Windows is not supported."
new "Alle Packages wurden erstellt.\n\nAufgrund von Zugriffsinformationen ist das Entpacken und Neupacken der Linux und Macintosh Veröffentlichungen unter Windows nicht unterstützt."
# game/distribute.rpy:358
old "No packages are selected, so there's nothing to do."
new "Keine Packages wurden ausgewählt."
# game/distribute.rpy:335
old "Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."
new "Erstellen von Veröffentlichungen gescheiter:\n\nDie build.directory_name Variable darf keine Leerzeichen, Doppelpunkte oder Semikolons enthalten."
translate german strings:
# game/distribute.rpy:313
old "Nothing to do."
new "Nichts zu tun."
# game/distribute.rpy:317
old "Scanning project files..."
new "Projektdateien werden geprüft …"
# game/distribute.rpy:324
old "Scanning Ren'Py files..."
new "RenPy-Dateien werden geprüft …"
# game/distribute.rpy:474
old "Archiving files..."
new "Dateien werden archiviert …"
# game/distribute.rpy:722
old "Writing the [variant] [format] package."
new "Das [variant] [format] Package wird erstellt."
# game/distribute.rpy:735
old "Making the [variant] update zsync file."
new "Die [variant] Update-zsync-Datei wird erstellt."
# game/distribute.rpy:831
old "Processed {b}[complete]{/b} of {b}[total]{/b} files."
new "{b}[complete]{/b} von {b}[total]{/b} Dateien verarbeitet."
# game/distribute.rpy:892
old "All packages have been built.\n\nDue to the presence of permission information, unpacking and repacking the Linux and Macintosh distributions on Windows is not supported."
new "Alle Packages wurden erstellt.\n\nAufgrund von Zugriffsinformationen ist das Entpacken und Neupacken der Linux und Macintosh Veröffentlichungen unter Windows nicht unterstützt."
# game/distribute.rpy:358
old "No packages are selected, so there's nothing to do."
new "Keine Packages wurden ausgewählt."
# game/distribute.rpy:335
old "Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."
new "Erstellen von Veröffentlichungen gescheiter:\n\nDie build.directory_name Variable darf keine Leerzeichen, Doppelpunkte oder Semikolons enthalten."
+45 -45
View File
@@ -1,45 +1,45 @@
translate german strings:
# game/distribute_gui.rpy:139
old "Build Distributions: [project.current.name!q]"
new "Erstellt Veröffentlichung: [project.current.name!q]"
# game/distribute_gui.rpy:154
old "Directory Name:"
new "Verzeichnisname:"
# game/distribute_gui.rpy:158
old "Executable Name:"
new "Programmdateiname:"
# game/distribute_gui.rpy:167
old "Actions:"
new "Aktionen:"
# game/distribute_gui.rpy:175
old "Edit options.rpy"
new "options.rpy bearbeiten"
# game/distribute_gui.rpy:176
old "Refresh"
new "Aktualisieren"
# game/distribute_gui.rpy:193
old "Build Packages:"
new "Packages erstellen:"
# game/distribute_gui.rpy:208
old "Build Updates"
new "Aktualisierungen erstellen"
# game/distribute_gui.rpy:212
old "Build"
new "Erstellen"
# game/distribute_gui.rpy:219
old "Errors were detected when running the project. Please ensure the project runs without errors before building distributions."
new "Fehler wurden beim Starten des Projekts gefunden. Bitte stellen Sie sicher, dass das Projekt ohne Fehler läuft, bevor Sie Veröffentlichungen erstellen."
# game/distribute_gui.rpy:236
old "Your project does not contain build information. Would you like to add build information to the end of options.rpy?"
new "Ihr Projekt enthält keine Erstellinformationen. Würden Sie gerne Erstellinformationen am Ende der options.rpy-Datei einfügen?"
translate german strings:
# game/distribute_gui.rpy:139
old "Build Distributions: [project.current.name!q]"
new "Erstellt Veröffentlichung: [project.current.name!q]"
# game/distribute_gui.rpy:154
old "Directory Name:"
new "Verzeichnisname:"
# game/distribute_gui.rpy:158
old "Executable Name:"
new "Programmdateiname:"
# game/distribute_gui.rpy:167
old "Actions:"
new "Aktionen:"
# game/distribute_gui.rpy:175
old "Edit options.rpy"
new "options.rpy bearbeiten"
# game/distribute_gui.rpy:176
old "Refresh"
new "Aktualisieren"
# game/distribute_gui.rpy:193
old "Build Packages:"
new "Packages erstellen:"
# game/distribute_gui.rpy:208
old "Build Updates"
new "Aktualisierungen erstellen"
# game/distribute_gui.rpy:212
old "Build"
new "Erstellen"
# game/distribute_gui.rpy:219
old "Errors were detected when running the project. Please ensure the project runs without errors before building distributions."
new "Fehler wurden beim Starten des Projekts gefunden. Bitte stellen Sie sicher, dass das Projekt ohne Fehler läuft, bevor Sie Veröffentlichungen erstellen."
# game/distribute_gui.rpy:236
old "Your project does not contain build information. Would you like to add build information to the end of options.rpy?"
new "Ihr Projekt enthält keine Erstellinformationen. Würden Sie gerne Erstellinformationen am Ende der options.rpy-Datei einfügen?"
+56 -56
View File
@@ -1,56 +1,56 @@
translate german strings:
# game/editor.rpy:120
old "{b}Recommended.{/b} A beta editor with an easy to use interface and features that aid in development, such as spell-checking. Editra currently lacks the IME support required for Chinese, Japanese, and Korean text input."
new "{b}Empfohlen.{/b} Ein Betaeditor mit einer leichten Benutzeroberfläche und Funktionen, die bei der Entwicklung helfen, wie eine Rechtschreibprüfung. Editra fehlt derzeit die Eingabemethode, die für Chinesisch, Japanisch und Koreanisch benötigt wird."
# game/editor.rpy:121
old "{b}Recommended.{/b} A beta editor with an easy to use interface and features that aid in development, such as spell-checking. Editra currently lacks the IME support required for Chinese, Japanese, and Korean text input. On Linux, Editra requires wxPython."
new "{b}Empfohlen.{/b} Ein Betaeditor mit einer leichten Benutzeroberfläche und Funktionen, die bei der Entwicklung helfen, wie eine Rechtschreibprüfung. Editra fehlt derzeit die Eingabemethode, die für Chinesisch, Japanisch und Koreanisch benötigt wird. Unter Linux benötigt Editra wxPython."
# game/editor.rpy:137
old "This may have occured because wxPython is not installed on this system."
new "Dies ist vermutlich passiert, weil wxPython nicht auf Ihrem System installiert ist."
# game/editor.rpy:144
old "Up to 22 MB download required."
new "Etwa 22 MB benötigt."
# game/editor.rpy:157
old "1.8 MB download required."
new "1,8 MB benötigt."
# game/editor.rpy:158
old "This may have occured because Java is not installed on this system."
new "Dies ist vermutlich passiert, weil Java nicht auf Ihrem System installiert ist."
# game/editor.rpy:327
old "An exception occured while launching the text editor:\n[exception!q]"
new "Ein Fehler ist beim Starten des Texteditors aufgetreten:\n[exception!q]"
# game/editor.rpy:378
old "Select Editor"
new "Editor auswählen"
# game/editor.rpy:393
old "A text editor is the program you'll use to edit Ren'Py script files. Here, you can select the editor Ren'Py will use. If not already present, the editor will be automatically downloaded and installed."
new "Ein Texeditor ist ein Programm, das verwendet wird, um RenPy Skript-Dateien zu bearbeiten. Hier können Sie den Editor auswählen, den RenPy verwenden soll. Wenn dieser noch nicht installiert ist, wird er automatisch heruntergeladen und installiert."
# game/editor.rpy:415
old "Cancel"
new "Abbrechen"
old "A mature editor that requires Java."
new "Ein fortgeschrittener Editor, der Java benötigt."
old "System Editor"
new "Systemeditor"
old "Invokes the editor your operating system has associated with .rpy files."
new "Startet den Editor, den dein Betriebssystem mit .rpy-Dateien assoziiert."
old "None"
new "Keinen"
old "Prevents Ren'Py from opening a text editor."
new "Verhindert, dass RenPy einen Texteditor öffnet."
translate german strings:
# game/editor.rpy:120
old "{b}Recommended.{/b} A beta editor with an easy to use interface and features that aid in development, such as spell-checking. Editra currently lacks the IME support required for Chinese, Japanese, and Korean text input."
new "{b}Empfohlen.{/b} Ein Betaeditor mit einer leichten Benutzeroberfläche und Funktionen, die bei der Entwicklung helfen, wie eine Rechtschreibprüfung. Editra fehlt derzeit die Eingabemethode, die für Chinesisch, Japanisch und Koreanisch benötigt wird."
# game/editor.rpy:121
old "{b}Recommended.{/b} A beta editor with an easy to use interface and features that aid in development, such as spell-checking. Editra currently lacks the IME support required for Chinese, Japanese, and Korean text input. On Linux, Editra requires wxPython."
new "{b}Empfohlen.{/b} Ein Betaeditor mit einer leichten Benutzeroberfläche und Funktionen, die bei der Entwicklung helfen, wie eine Rechtschreibprüfung. Editra fehlt derzeit die Eingabemethode, die für Chinesisch, Japanisch und Koreanisch benötigt wird. Unter Linux benötigt Editra wxPython."
# game/editor.rpy:137
old "This may have occured because wxPython is not installed on this system."
new "Dies ist vermutlich passiert, weil wxPython nicht auf Ihrem System installiert ist."
# game/editor.rpy:144
old "Up to 22 MB download required."
new "Etwa 22 MB benötigt."
# game/editor.rpy:157
old "1.8 MB download required."
new "1,8 MB benötigt."
# game/editor.rpy:158
old "This may have occured because Java is not installed on this system."
new "Dies ist vermutlich passiert, weil Java nicht auf Ihrem System installiert ist."
# game/editor.rpy:327
old "An exception occured while launching the text editor:\n[exception!q]"
new "Ein Fehler ist beim Starten des Texteditors aufgetreten:\n[exception!q]"
# game/editor.rpy:378
old "Select Editor"
new "Editor auswählen"
# game/editor.rpy:393
old "A text editor is the program you'll use to edit Ren'Py script files. Here, you can select the editor Ren'Py will use. If not already present, the editor will be automatically downloaded and installed."
new "Ein Texeditor ist ein Programm, das verwendet wird, um RenPy Skript-Dateien zu bearbeiten. Hier können Sie den Editor auswählen, den RenPy verwenden soll. Wenn dieser noch nicht installiert ist, wird er automatisch heruntergeladen und installiert."
# game/editor.rpy:415
old "Cancel"
new "Abbrechen"
old "A mature editor that requires Java."
new "Ein fortgeschrittener Editor, der Java benötigt."
old "System Editor"
new "Systemeditor"
old "Invokes the editor your operating system has associated with .rpy files."
new "Startet den Editor, den dein Betriebssystem mit .rpy-Dateien assoziiert."
old "None"
new "Keinen"
old "Prevents Ren'Py from opening a text editor."
new "Verhindert, dass RenPy einen Texteditor öffnet."
+26 -26
View File
@@ -1,26 +1,26 @@
translate german strings:
# game/front_page.rpy:90
old "Launch Project"
new "Projekt starten"
# game/front_page.rpy:204
old "Checking script for potential problems..."
new "Überprüft Script auf potentielle Probleme …"
# game/front_page.rpy:219
old "Deleting persistent data..."
new "Löscht Persistent-Dateien …"
# game/front_page.rpy:204
old "Android"
new "Android"
# game/front_page.rpy:206
old "Extract Dialogue"
new "Dialoge extrahieren"
# game/front_page.rpy:144
old "[p.name!q] (template)"
new "[p.name!q] (Vorlage)"
translate german strings:
# game/front_page.rpy:90
old "Launch Project"
new "Projekt starten"
# game/front_page.rpy:204
old "Checking script for potential problems..."
new "Überprüft Script auf potentielle Probleme …"
# game/front_page.rpy:219
old "Deleting persistent data..."
new "Löscht Persistent-Dateien …"
# game/front_page.rpy:204
old "Android"
new "Android"
# game/front_page.rpy:206
old "Extract Dialogue"
new "Dialoge extrahieren"
# game/front_page.rpy:144
old "[p.name!q] (template)"
new "[p.name!q] (Vorlage)"
+85 -85
View File
@@ -1,85 +1,85 @@
translate german strings:
# game/interface.rpy:89
old "Documentation"
new "Dokumentation"
# game/interface.rpy:90
old "Ren'Py Website"
new "RenPy Webseite"
# game/interface.rpy:91
old "Ren'Py Games List"
new "RenPy Spieleliste"
# game/interface.rpy:92
old "About"
new "Über"
# game/interface.rpy:99
old "update"
new "Aktualisieren"
# game/interface.rpy:101
old "preferences"
new "Einstellungen"
# game/interface.rpy:102
old "quit"
new "Beenden"
# game/interface.rpy:149
old "Yes"
new "Ja"
# game/interface.rpy:151
old "No"
new "Nein"
# game/interface.rpy:181
old "Due to package format limitations, non-ASCII file and directory names are not allowed."
new "Aufgrund von Formateinschränkungen sind nicht-ASCII Datei- und Verzeichnisnamen nicht erlaubt."
# game/interface.rpy:183
old "[title]"
new "[title]"
# game/interface.rpy:248
old "ERROR"
new "FEHLER"
# game/interface.rpy:280
old "While [what!q], an error occured:"
new "Während [what!q] ist ein Fehler aufgetreten:"
# game/interface.rpy:281
old "[exception!q]"
new "[exception!q]"
# game/interface.rpy:298
old "Text input may not contain the {{ or [[ characters."
new "Die Texteingabe darf keine {{ oder [[ enthalten."
# game/interface.rpy:303
old "File and directory names may not contain / or \\."
new "Datei- und Verzeichnisnamen dürfen keine / oder \\ enthalten."
# game/interface.rpy:309
old "File and directory names must consist of ASCII characters."
new "Datei- und Verzeichnisnamen müssen aus ASCII-Buchstaben bestehen."
# game/interface.rpy:330
old "INFORMATION"
new "INFORMATION"
# game/interface.rpy:373
old "PROCESSING"
new "VERARBEITUNG"
# game/interface.rpy:390
old "QUESTION"
new "FRAGE"
# game/interface.rpy:451
old "CHOICE"
new "AUSWAHL"
translate german strings:
# game/interface.rpy:89
old "Documentation"
new "Dokumentation"
# game/interface.rpy:90
old "Ren'Py Website"
new "RenPy Webseite"
# game/interface.rpy:91
old "Ren'Py Games List"
new "RenPy Spieleliste"
# game/interface.rpy:92
old "About"
new "Über"
# game/interface.rpy:99
old "update"
new "Aktualisieren"
# game/interface.rpy:101
old "preferences"
new "Einstellungen"
# game/interface.rpy:102
old "quit"
new "Beenden"
# game/interface.rpy:149
old "Yes"
new "Ja"
# game/interface.rpy:151
old "No"
new "Nein"
# game/interface.rpy:181
old "Due to package format limitations, non-ASCII file and directory names are not allowed."
new "Aufgrund von Formateinschränkungen sind nicht-ASCII Datei- und Verzeichnisnamen nicht erlaubt."
# game/interface.rpy:183
old "[title]"
new "[title]"
# game/interface.rpy:248
old "ERROR"
new "FEHLER"
# game/interface.rpy:280
old "While [what!q], an error occured:"
new "Während [what!q] ist ein Fehler aufgetreten:"
# game/interface.rpy:281
old "[exception!q]"
new "[exception!q]"
# game/interface.rpy:298
old "Text input may not contain the {{ or [[ characters."
new "Die Texteingabe darf keine {{ oder [[ enthalten."
# game/interface.rpy:303
old "File and directory names may not contain / or \\."
new "Datei- und Verzeichnisnamen dürfen keine / oder \\ enthalten."
# game/interface.rpy:309
old "File and directory names must consist of ASCII characters."
new "Datei- und Verzeichnisnamen müssen aus ASCII-Buchstaben bestehen."
# game/interface.rpy:330
old "INFORMATION"
new "INFORMATION"
# game/interface.rpy:373
old "PROCESSING"
new "VERARBEITUNG"
# game/interface.rpy:390
old "QUESTION"
new "FRAGE"
# game/interface.rpy:451
old "CHOICE"
new "AUSWAHL"
+69 -69
View File
@@ -1,69 +1,69 @@
translate german strings:
# game/navigation.rpy:150
old "Navigate: [project.current.name]"
new "Navigieren: [project.current.name]"
# game/navigation.rpy:159
old "Order: "
new "Reihenfolge:"
# game/navigation.rpy:160
old "alphabetical"
new "Alphabetisch"
# game/navigation.rpy:162
old "by-file"
new "Nach Datei"
# game/navigation.rpy:164
old "natural"
new "Natürlich"
# game/navigation.rpy:168
old "refresh"
new "Aktualisieren"
# game/navigation.rpy:176
old "Category:"
new "Kategorie"
# game/navigation.rpy:178
old "files"
new "Dateien"
# game/navigation.rpy:179
old "labels"
new "Labels"
# game/navigation.rpy:180
old "defines"
new "Defines"
# game/navigation.rpy:181
old "transforms"
new "Transforms"
# game/navigation.rpy:182
old "screens"
new "Bildschirme"
# game/navigation.rpy:183
old "callables"
new "Callables"
# game/navigation.rpy:184
old "TODOs"
new "TODOs"
# game/navigation.rpy:223
old "+ Add script file"
new "+ Script-Datei hinzufügen"
# game/navigation.rpy:231
old "No TODO comments found.\n\nTo create one, include \"# TODO\" in your script."
new "Keine TODO-Kommentare gefunden.\n\nUm einen zu erstellen, bauen Sie „# TODO“ in Ihr Script ein."
# game/navigation.rpy:238
old "The list of names is empty."
new "Die Namensliste ist leer."
translate german strings:
# game/navigation.rpy:150
old "Navigate: [project.current.name]"
new "Navigieren: [project.current.name]"
# game/navigation.rpy:159
old "Order: "
new "Reihenfolge:"
# game/navigation.rpy:160
old "alphabetical"
new "Alphabetisch"
# game/navigation.rpy:162
old "by-file"
new "Nach Datei"
# game/navigation.rpy:164
old "natural"
new "Natürlich"
# game/navigation.rpy:168
old "refresh"
new "Aktualisieren"
# game/navigation.rpy:176
old "Category:"
new "Kategorie"
# game/navigation.rpy:178
old "files"
new "Dateien"
# game/navigation.rpy:179
old "labels"
new "Labels"
# game/navigation.rpy:180
old "defines"
new "Defines"
# game/navigation.rpy:181
old "transforms"
new "Transforms"
# game/navigation.rpy:182
old "screens"
new "Bildschirme"
# game/navigation.rpy:183
old "callables"
new "Callables"
# game/navigation.rpy:184
old "TODOs"
new "TODOs"
# game/navigation.rpy:223
old "+ Add script file"
new "+ Script-Datei hinzufügen"
# game/navigation.rpy:231
old "No TODO comments found.\n\nTo create one, include \"# TODO\" in your script."
new "Keine TODO-Kommentare gefunden.\n\nUm einen zu erstellen, bauen Sie „# TODO“ in Ihr Script ein."
# game/navigation.rpy:238
old "The list of names is empty."
new "Die Namensliste ist leer."
+38 -38
View File
@@ -1,38 +1,38 @@
translate german strings:
# game/new_project.rpy:22
old "Choose Project Template"
new "Projektvorlage auswählen"
# game/new_project.rpy:40
old "Please select a template to use for your new project. Ren'Py ships with a default template that creates an English-language game with standard screens."
new "Bitte wählen Sie eine Vorlage für Ihr neues Projekt. RenPy hat eine Standard-Vorlage, die ein englischsprachiges Spiel mit Standardmenüs erstellt."
# game/new_project.rpy:55
old "PROJECT NAME"
new "PROJEKT NAME"
# game/new_project.rpy:56
old "Please enter the name of your project:"
new "Bitte geben Sie den Namen Ihres Projekts ein:"
# game/new_project.rpy:62
old "The project name may not be empty."
new "Der Projektname kann nicht leer sein."
# game/new_project.rpy:67
old "[project_name!q] already exists. Please choose a different project name."
new "[project_name!q] existiert bereits. Bitte wählen Sie einen anderen Projektnamen."
# game/new_project.rpy:70
old "[project_dir!q] already exists. Please choose a different project name."
new "[project_dir!q] existiert bereits. Bitte wählen Sie einen anderen Projektnamen."
# game/new_project.rpy:40
old "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'."
new "Bitte wählen Sie eine Vorlage für Ihr neues Projekt. Die Vorlage legt die Standard-Schriftart fest und die Sprache der Benutzeroberfläche. Wenn Ihre Sprache nicht verfügbar ist, wählen Sie bitte 'english'."
# game/new_project.rpy:71
old "The projects directory could not be set. Giving up."
new "Das Projektverzeichnis konnte nicht festgelegt werden."
translate german strings:
# game/new_project.rpy:22
old "Choose Project Template"
new "Projektvorlage auswählen"
# game/new_project.rpy:40
old "Please select a template to use for your new project. Ren'Py ships with a default template that creates an English-language game with standard screens."
new "Bitte wählen Sie eine Vorlage für Ihr neues Projekt. RenPy hat eine Standard-Vorlage, die ein englischsprachiges Spiel mit Standardmenüs erstellt."
# game/new_project.rpy:55
old "PROJECT NAME"
new "PROJEKT NAME"
# game/new_project.rpy:56
old "Please enter the name of your project:"
new "Bitte geben Sie den Namen Ihres Projekts ein:"
# game/new_project.rpy:62
old "The project name may not be empty."
new "Der Projektname kann nicht leer sein."
# game/new_project.rpy:67
old "[project_name!q] already exists. Please choose a different project name."
new "[project_name!q] existiert bereits. Bitte wählen Sie einen anderen Projektnamen."
# game/new_project.rpy:70
old "[project_dir!q] already exists. Please choose a different project name."
new "[project_dir!q] existiert bereits. Bitte wählen Sie einen anderen Projektnamen."
# game/new_project.rpy:40
old "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'."
new "Bitte wählen Sie eine Vorlage für Ihr neues Projekt. Die Vorlage legt die Standard-Schriftart fest und die Sprache der Benutzeroberfläche. Wenn Ihre Sprache nicht verfügbar ist, wählen Sie bitte 'english'."
# game/new_project.rpy:71
old "The projects directory could not be set. Giving up."
new "Das Projektverzeichnis konnte nicht festgelegt werden."
+57 -57
View File
@@ -1,57 +1,57 @@
translate german strings:
# game/preferences.rpy:40
old "Launcher Preferences"
new "Launcher Einstellungen"
# game/preferences.rpy:61
old "Projects Directory:"
new "Projektverzeichnis:"
# game/preferences.rpy:68
old "[persistent.projects_directory!q]"
new "[persistent.projects_directory!q]"
# game/preferences.rpy:70
old "Not Set"
new "Nicht eingestellt"
# game/preferences.rpy:84
old "Text Editor:"
new "Texteditor:"
# game/preferences.rpy:106
old "Update Channel:"
new "Aktualisierungskanal:"
# game/preferences.rpy:126
old "Navigation Options:"
new "Navigationsoptionen:"
# game/preferences.rpy:130
old "Include private names"
new "Vertrauliche Namen einschließen"
# game/preferences.rpy:131
old "Include library names"
new "Programmnamen einschließen"
# game/preferences.rpy:141
old "Launcher Options:"
new "Launcher Optionen:"
# game/preferences.rpy:145
old "Hardware rendering"
new "Hardware Wiedergabe"
# game/preferences.rpy:148
old "Console output"
new "Konsolenausgabe"
# game/preferences.rpy:169
old "Open launcher project"
new "Launcherprojekt öffnen"
# game/preferences.rpy:183
old "Language:"
new "Sprache:"
translate german strings:
# game/preferences.rpy:40
old "Launcher Preferences"
new "Launcher Einstellungen"
# game/preferences.rpy:61
old "Projects Directory:"
new "Projektverzeichnis:"
# game/preferences.rpy:68
old "[persistent.projects_directory!q]"
new "[persistent.projects_directory!q]"
# game/preferences.rpy:70
old "Not Set"
new "Nicht eingestellt"
# game/preferences.rpy:84
old "Text Editor:"
new "Texteditor:"
# game/preferences.rpy:106
old "Update Channel:"
new "Aktualisierungskanal:"
# game/preferences.rpy:126
old "Navigation Options:"
new "Navigationsoptionen:"
# game/preferences.rpy:130
old "Include private names"
new "Vertrauliche Namen einschließen"
# game/preferences.rpy:131
old "Include library names"
new "Programmnamen einschließen"
# game/preferences.rpy:141
old "Launcher Options:"
new "Launcher Optionen:"
# game/preferences.rpy:145
old "Hardware rendering"
new "Hardware Wiedergabe"
# game/preferences.rpy:148
old "Console output"
new "Konsolenausgabe"
# game/preferences.rpy:169
old "Open launcher project"
new "Launcherprojekt öffnen"
# game/preferences.rpy:183
old "Language:"
new "Sprache:"
+54 -54
View File
@@ -1,54 +1,54 @@
translate german strings:
# game/project.rpy:199
old "Ren'Py is scanning the project..."
new "RenPy scannt das Projekt …"
# game/project.rpy:488
old "PROJECTS DIRECTORY"
new "PROJEKTVERZEICHNIS"
# game/project.rpy:488
old "Please choose the projects directory."
new "Bitte wählen Sie das Projektverzeichnis."
# game/project.rpy:488
old "This launcher will scan for projects in this directory, will create new projects in this directory, and will place built projects into this directory."
new "Dieser Launcher scannt nach Projekten in diesem Verzeichnis, erstellt neue Projekte und platziert erstellte Projekte dort."
# game/project.rpy:536
old "Ren'Py was unable to run zenity to choose the projects directory."
new "RenPy konnte Zenity nicht starten, um das Projektverzeichnis auszuwählen."
# game/project.rpy:540
old "Ren'Py has set the projects directory to:"
new "RenPy hat das Projektverzeichnis verschoben in:"
# game/project.rpy:485
old "Please choose the projects directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
new "Bitte wählen Sie das Projektverzeichnis mit dem Verzeichnisauswähler.\n{b}Der Verzeichnisauswähler könnte hinter diesem Fenster geöffnet sein.{/b}"
# game/project.rpy:525
old "Ren'Py was unable to run python with tkinter to choose the projects directory."
new "RenPy konnte Python mit tkinter zur Projektsverzeichniswahl nicht starten."
# game/project.rpy:48
old "After making changes to the script, press shift+R to reload your game."
new "Nachdem Sie das Skript verändert haben, drücken Sie Shift + R, um Ihr Spiel neuzustarten."
# game/project.rpy:50
old "Press shift+D to access the developer menu."
new "Drücken Sie Shift + D, um das Entwicklermenü aufzurufen."
# game/project.rpy:219
old "Launching the project failed."
new "Starten des Projekts gescheitert."
# game/project.rpy:219
old "Please ensure that your project launches normally before running this command."
new "Bitte stellen Sie sicher, dass Ihr Projekt normal startet, bevor Sie diesen Befehl ausführen."
# game/project.rpy:585
old "Ren'Py was unable to run python with tkinter to choose the projects directory. Please install the python-tk or tkinter package."
new "RenPy konnte Python mit tkinter zur Projektsverzeichniswahl nicht starten. Bitte installieren Sie python-tk oder tkinter."
translate german strings:
# game/project.rpy:199
old "Ren'Py is scanning the project..."
new "RenPy scannt das Projekt …"
# game/project.rpy:488
old "PROJECTS DIRECTORY"
new "PROJEKTVERZEICHNIS"
# game/project.rpy:488
old "Please choose the projects directory."
new "Bitte wählen Sie das Projektverzeichnis."
# game/project.rpy:488
old "This launcher will scan for projects in this directory, will create new projects in this directory, and will place built projects into this directory."
new "Dieser Launcher scannt nach Projekten in diesem Verzeichnis, erstellt neue Projekte und platziert erstellte Projekte dort."
# game/project.rpy:536
old "Ren'Py was unable to run zenity to choose the projects directory."
new "RenPy konnte Zenity nicht starten, um das Projektverzeichnis auszuwählen."
# game/project.rpy:540
old "Ren'Py has set the projects directory to:"
new "RenPy hat das Projektverzeichnis verschoben in:"
# game/project.rpy:485
old "Please choose the projects directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
new "Bitte wählen Sie das Projektverzeichnis mit dem Verzeichnisauswähler.\n{b}Der Verzeichnisauswähler könnte hinter diesem Fenster geöffnet sein.{/b}"
# game/project.rpy:525
old "Ren'Py was unable to run python with tkinter to choose the projects directory."
new "RenPy konnte Python mit tkinter zur Projektsverzeichniswahl nicht starten."
# game/project.rpy:48
old "After making changes to the script, press shift+R to reload your game."
new "Nachdem Sie das Skript verändert haben, drücken Sie Shift + R, um Ihr Spiel neuzustarten."
# game/project.rpy:50
old "Press shift+D to access the developer menu."
new "Drücken Sie Shift + D, um das Entwicklermenü aufzurufen."
# game/project.rpy:219
old "Launching the project failed."
new "Starten des Projekts gescheitert."
# game/project.rpy:219
old "Please ensure that your project launches normally before running this command."
new "Bitte stellen Sie sicher, dass Ihr Projekt normal startet, bevor Sie diesen Befehl ausführen."
# game/project.rpy:585
old "Ren'Py was unable to run python with tkinter to choose the projects directory. Please install the python-tk or tkinter package."
new "RenPy konnte Python mit tkinter zur Projektsverzeichniswahl nicht starten. Bitte installieren Sie python-tk oder tkinter."
+195 -195
View File
@@ -1,195 +1,195 @@
translate german strings:
old "PROJECTS:"
new "PROJEKTE:"
old "[p.name!q]"
new "[p.name!q]"
old "An exception has occurred."
new "Ein Fehler ist aufgetreten."
old "Ignore"
new "Ignorieren"
translate german strings:
old "Tutorial"
new "Tutorial"
old "The Question"
new "The Question"
old "Reload"
new "Neustarten"
old "Open Traceback"
new "Traceback öffnen"
translate german strings:
old "+ Create New Project"
new "+ Neues Projekt erstellen"
old "Active Project"
new "Aktives Projekt"
old "Quit"
new "Beenden"
old ""
new ""
translate german strings:
old "Open Directory"
new "Verzeichnis öffnen"
old "game"
new "Spielverzeichnis"
old "Quits the game."
new "Beendet das Spiel."
translate german strings:
old "base"
new "Hauptverzeichnis"
old "Edit File"
new "Dateien bearbeiten"
translate german strings:
old "script.rpy"
new "script.rpy"
old "options.rpy"
new "options.rpy"
translate german strings:
old "screens.rpy"
new "screens.rpy"
old "All script files"
new "Alle Dateien"
translate german strings:
old "Navigate Script"
new "Skript navigieren"
old "Check Script (Lint)"
new "Skript überprüfen (Lint)"
translate german strings:
old "Change Theme"
new "Theme ändern"
old "Delete Persistent"
new "Persistent-Dateien löschen"
translate german strings:
old "Build Distributions"
new "Veröffentlichungen erstellen"
old "Generate Translations"
new "Übersetzungen generieren"
translate german strings:
old "Editra"
new "Editra"
old "[name!q]"
new "[name!q]"
old " | "
new " | "
translate german strings:
old "I'm compiling a short test program, to see if you have a working JDK on your\nsystem.\n"
new "Es wird ein kurzes Testprogramm erstellt, um zu testen, ob Sie ein funktionierendes JDK haben.\n"
old "I was unable to use javac to compile a test file. If you haven't installed\nthe Java Development Kit yet, please download it from:\n\n{a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}http://www.oracle.com/technetwork/java/javase/downloads/index.html{/a}\n\nThe JDK is different from the JRE, so it's possible you have Java\nwithout having the JDK. Without a working JDK, I can't continue.\n"
new "Es konnte javac nicht verwendet werden, um eine Testdatei zu erstellen. Wenn Sie\ndas Java Development Kit noch nicht installiert haben, laden Sie es bitte herunter:\n\n{a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}http://www.oracle.com/technetwork/java/javase/downloads/index.html{/a}\n\nDas JDK unterscheidet sich vom JRE, daher ist es möglich, dass Sie Java\nohne JDK haben. Ohne ein funktionierendes JDK, kann ich nicht weitermachen.\n"
translate german strings:
old "[value!q]"
new "[value!q]"
old "[description!q]"
new "[description!q]"
translate german strings:
old "Press shift+O (the letter) to access the console."
new "Drücken Sie Shift + O, um die Konsole aufzurufen."
old "Launching"
new "Startet"
translate german strings:
old "Show templates"
new "Vorlagen anzeigen"
translate german strings:
old "What is the full name of your application? This name will appear in the list of installed applications."
new "Wie lautet der volle Titel Ihrer Anwendung? Dieser Titel wird in der Liste von installierten Anwendungen angezeigt."
old "[ft.text!q]"
new "[ft.text!q]"
old "The JDK is present and working. Good!"
new "Das JDK ist verfügbar und funktioniert. Gut!"
old "Apache ANT has already been unpacked."
new "Apache-ANT wurde bereits entpackt."
old "The Android SDK has already been unpacked."
new "Das Android-SDK wurde bereits entpackt."
old "The required Android packages are already installed."
new "Die benötigten Android-Packages wurden bereits installiert."
old "You've already created an Android keystore, so I won't create a new one for you."
new "Sie haben bereits einen Android-Key erstellt, es wird kein neuer erstellt."
old "It looks like you're ready to start packaging games."
new "Es sieht aus, als wären Sie bereit, Spiele zu erstellen."
translate german strings:
old "English"
new "English"
old "German"
new "German"
old "Japanese"
new "Japanese"
translate german strings:
old "French"
new "French"
old "Spanish"
new "Spanish"
old "Russian"
new "Russian"
old "Arabic"
new "Arabic"
translate german strings:
old "PROJECTS:"
new "PROJEKTE:"
old "[p.name!q]"
new "[p.name!q]"
old "An exception has occurred."
new "Ein Fehler ist aufgetreten."
old "Ignore"
new "Ignorieren"
translate german strings:
old "Tutorial"
new "Tutorial"
old "The Question"
new "The Question"
old "Reload"
new "Neustarten"
old "Open Traceback"
new "Traceback öffnen"
translate german strings:
old "+ Create New Project"
new "+ Neues Projekt erstellen"
old "Active Project"
new "Aktives Projekt"
old "Quit"
new "Beenden"
old ""
new ""
translate german strings:
old "Open Directory"
new "Verzeichnis öffnen"
old "game"
new "Spielverzeichnis"
old "Quits the game."
new "Beendet das Spiel."
translate german strings:
old "base"
new "Hauptverzeichnis"
old "Edit File"
new "Dateien bearbeiten"
translate german strings:
old "script.rpy"
new "script.rpy"
old "options.rpy"
new "options.rpy"
translate german strings:
old "screens.rpy"
new "screens.rpy"
old "All script files"
new "Alle Dateien"
translate german strings:
old "Navigate Script"
new "Skript navigieren"
old "Check Script (Lint)"
new "Skript überprüfen (Lint)"
translate german strings:
old "Change Theme"
new "Theme ändern"
old "Delete Persistent"
new "Persistent-Dateien löschen"
translate german strings:
old "Build Distributions"
new "Veröffentlichungen erstellen"
old "Generate Translations"
new "Übersetzungen generieren"
translate german strings:
old "Editra"
new "Editra"
old "[name!q]"
new "[name!q]"
old " | "
new " | "
translate german strings:
old "I'm compiling a short test program, to see if you have a working JDK on your\nsystem.\n"
new "Es wird ein kurzes Testprogramm erstellt, um zu testen, ob Sie ein funktionierendes JDK haben.\n"
old "I was unable to use javac to compile a test file. If you haven't installed\nthe Java Development Kit yet, please download it from:\n\n{a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}http://www.oracle.com/technetwork/java/javase/downloads/index.html{/a}\n\nThe JDK is different from the JRE, so it's possible you have Java\nwithout having the JDK. Without a working JDK, I can't continue.\n"
new "Es konnte javac nicht verwendet werden, um eine Testdatei zu erstellen. Wenn Sie\ndas Java Development Kit noch nicht installiert haben, laden Sie es bitte herunter:\n\n{a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}http://www.oracle.com/technetwork/java/javase/downloads/index.html{/a}\n\nDas JDK unterscheidet sich vom JRE, daher ist es möglich, dass Sie Java\nohne JDK haben. Ohne ein funktionierendes JDK, kann ich nicht weitermachen.\n"
translate german strings:
old "[value!q]"
new "[value!q]"
old "[description!q]"
new "[description!q]"
translate german strings:
old "Press shift+O (the letter) to access the console."
new "Drücken Sie Shift + O, um die Konsole aufzurufen."
old "Launching"
new "Startet"
translate german strings:
old "Show templates"
new "Vorlagen anzeigen"
translate german strings:
old "What is the full name of your application? This name will appear in the list of installed applications."
new "Wie lautet der volle Titel Ihrer Anwendung? Dieser Titel wird in der Liste von installierten Anwendungen angezeigt."
old "[ft.text!q]"
new "[ft.text!q]"
old "The JDK is present and working. Good!"
new "Das JDK ist verfügbar und funktioniert. Gut!"
old "Apache ANT has already been unpacked."
new "Apache-ANT wurde bereits entpackt."
old "The Android SDK has already been unpacked."
new "Das Android-SDK wurde bereits entpackt."
old "The required Android packages are already installed."
new "Die benötigten Android-Packages wurden bereits installiert."
old "You've already created an Android keystore, so I won't create a new one for you."
new "Sie haben bereits einen Android-Key erstellt, es wird kein neuer erstellt."
old "It looks like you're ready to start packaging games."
new "Es sieht aus, als wären Sie bereit, Spiele zu erstellen."
translate german strings:
old "English"
new "English"
old "German"
new "German"
old "Japanese"
new "Japanese"
translate german strings:
old "French"
new "French"
old "Spanish"
new "Spanish"
old "Russian"
new "Russian"
old "Arabic"
new "Arabic"
+2
View File
@@ -0,0 +1,2 @@
translate german python:
make_style_backup()
+33 -33
View File
@@ -1,33 +1,33 @@
translate german strings:
# game/translations.rpy:10
old "Create or Update Translations"
new "Erstellt oder aktualisiert Übersetzungen"
# game/translations.rpy:10
old "Please enter the name of the language for which you want to create or update translations."
new "Bitte geben Sie den Namen der Sprache ein, deren Übersetzung Sie erstellen oder aktualisieren möchten."
# game/translations.rpy:15
old "The language name can not be the empty string."
new "Der Name der Sprache darf nicht leer sein."
# game/translations.rpy:26
old "Ren'Py is generating translations...."
new "RenPy erstellt Übersetzungen …"
# game/translations.rpy:30
old "Ren'Py has finished generating [language] translations."
new "RenPy hat die Übersetzungen für [language] erstellt."
# game/translations.rpy:44
old "What format would you like for the extracted dialogue?"
new "In welchem Format möchten Sie die extrahierten Dialoge?"
# game/translations.rpy:56
old "Ren'Py is extracting dialogue...."
new "RenPy extrahiert Dialoge …"
# game/translations.rpy:60
old "Ren'Py has finished extracting dialogue. The extracted dialogue can be found in dialogue.[format] in the base directory."
new "RenPy hat die Dialoge fertig extrahiert. Die extrahierten Dialoge können im Hauptverzeichnis unter dialogue.[format] gefunden werden."
translate german strings:
# game/translations.rpy:10
old "Create or Update Translations"
new "Erstellt oder aktualisiert Übersetzungen"
# game/translations.rpy:10
old "Please enter the name of the language for which you want to create or update translations."
new "Bitte geben Sie den Namen der Sprache ein, deren Übersetzung Sie erstellen oder aktualisieren möchten."
# game/translations.rpy:15
old "The language name can not be the empty string."
new "Der Name der Sprache darf nicht leer sein."
# game/translations.rpy:26
old "Ren'Py is generating translations...."
new "RenPy erstellt Übersetzungen …"
# game/translations.rpy:30
old "Ren'Py has finished generating [language] translations."
new "RenPy hat die Übersetzungen für [language] erstellt."
# game/translations.rpy:44
old "What format would you like for the extracted dialogue?"
new "In welchem Format möchten Sie die extrahierten Dialoge?"
# game/translations.rpy:56
old "Ren'Py is extracting dialogue...."
new "RenPy extrahiert Dialoge …"
# game/translations.rpy:60
old "Ren'Py has finished extracting dialogue. The extracted dialogue can be found in dialogue.[format] in the base directory."
new "RenPy hat die Dialoge fertig extrahiert. Die extrahierten Dialoge können im Hauptverzeichnis unter dialogue.[format] gefunden werden."
+94 -94
View File
@@ -1,94 +1,94 @@
translate german strings:
# game/updater.rpy:54
old "Select Update Channel"
new "Aktualisierungskanal auswählen"
# game/updater.rpy:65
old "The update channel controls the version of Ren'Py the updater will download. Please select an update channel:"
new "Der Aktualisierungskanal kontrolliert die Version, die Renpy herunterlädt. Bitte wählen Sie einen Aktualisierungskanal:"
# game/updater.rpy:70
old "Release"
new "Veröffentlichungen"
# game/updater.rpy:76
old "{b}Recommended.{/b} The version of Ren'Py that should be used in all newly-released games."
new "{b}Empfohlen.{/b} Die Version von RenPy, die für alle neuen Spielveröffentlichungen verwendet werden sollte."
# game/updater.rpy:81
old "Prerelease"
new "Vorveröffentlichungen"
# game/updater.rpy:87
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 "Eine Vorschau auf die nächste Version von RenPy, die zu Testzwecken und mit neuen Funktionen verwendet werden kann, jedoch nicht für Veröffentlichung von Spielen geeignet ist."
# game/updater.rpy:93
old "Experimental"
new "Experimentell"
# game/updater.rpy:99
old "Experimental versions of Ren'Py. You shouldn't select this channel unless asked by a Ren'Py developer."
new "Experimentelle Versionen von RenPy. Sie sollten diesen Kanal nur auswählen, wenn Sie von einem RenPy-Entwickler dazu aufgefordert werden."
# game/updater.rpy:119
old "An error has occured:"
new "Ein Fehler ist aufgetreten:"
# game/updater.rpy:121
old "Checking for updates."
new "Überprüft auf Aktualisierungen."
# game/updater.rpy:123
old "Ren'Py is up to date."
new "RenPy ist aktuell"
# game/updater.rpy:125
old "[u.version] is now available. Do you want to install it?"
new "[u.version] ist nun verfügbar. Möchten Sie sie installieren?"
# game/updater.rpy:127
old "Preparing to download the update."
new "Vorbereiten, um die Aktualisierungen herunterzuladen."
# game/updater.rpy:129
old "Downloading the update."
new "Aktualisierungen werden heruntergeladen."
# game/updater.rpy:131
old "Unpacking the update."
new "Aktualisierungen werden entpackt."
# game/updater.rpy:133
old "Finishing up."
new "Abschließen."
# game/updater.rpy:135
old "The update has been installed. Ren'Py will restart."
new "Die Aktualisierungen wurden installiert. RenPy startet neu."
# game/updater.rpy:137
old "The update has been installed."
new "Die Aktualisierungen wurden installiert."
# game/updater.rpy:139
old "The update was cancelled."
new "Die Aktualisierungen wurde abgebrochen."
# game/updater.rpy:156
old "Ren'Py Update"
new "RenPy aktualisieren"
# game/updater.rpy:162
old "Proceed"
new "Fortsetzen"
# game/updater.rpy:129
old "Nightly"
new "Nightly"
# game/updater.rpy:135
old "The bleeding edge of Ren'Py development. This may have the latest features, or might not run at all."
new "Die allerneuste RenPy Version. Diese enthält die neusten Funktionen, könnte aber auch überhaupt nicht funktionieren."
translate german strings:
# game/updater.rpy:54
old "Select Update Channel"
new "Aktualisierungskanal auswählen"
# game/updater.rpy:65
old "The update channel controls the version of Ren'Py the updater will download. Please select an update channel:"
new "Der Aktualisierungskanal kontrolliert die Version, die Renpy herunterlädt. Bitte wählen Sie einen Aktualisierungskanal:"
# game/updater.rpy:70
old "Release"
new "Veröffentlichungen"
# game/updater.rpy:76
old "{b}Recommended.{/b} The version of Ren'Py that should be used in all newly-released games."
new "{b}Empfohlen.{/b} Die Version von RenPy, die für alle neuen Spielveröffentlichungen verwendet werden sollte."
# game/updater.rpy:81
old "Prerelease"
new "Vorveröffentlichungen"
# game/updater.rpy:87
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 "Eine Vorschau auf die nächste Version von RenPy, die zu Testzwecken und mit neuen Funktionen verwendet werden kann, jedoch nicht für Veröffentlichung von Spielen geeignet ist."
# game/updater.rpy:93
old "Experimental"
new "Experimentell"
# game/updater.rpy:99
old "Experimental versions of Ren'Py. You shouldn't select this channel unless asked by a Ren'Py developer."
new "Experimentelle Versionen von RenPy. Sie sollten diesen Kanal nur auswählen, wenn Sie von einem RenPy-Entwickler dazu aufgefordert werden."
# game/updater.rpy:119
old "An error has occured:"
new "Ein Fehler ist aufgetreten:"
# game/updater.rpy:121
old "Checking for updates."
new "Überprüft auf Aktualisierungen."
# game/updater.rpy:123
old "Ren'Py is up to date."
new "RenPy ist aktuell"
# game/updater.rpy:125
old "[u.version] is now available. Do you want to install it?"
new "[u.version] ist nun verfügbar. Möchten Sie sie installieren?"
# game/updater.rpy:127
old "Preparing to download the update."
new "Vorbereiten, um die Aktualisierungen herunterzuladen."
# game/updater.rpy:129
old "Downloading the update."
new "Aktualisierungen werden heruntergeladen."
# game/updater.rpy:131
old "Unpacking the update."
new "Aktualisierungen werden entpackt."
# game/updater.rpy:133
old "Finishing up."
new "Abschließen."
# game/updater.rpy:135
old "The update has been installed. Ren'Py will restart."
new "Die Aktualisierungen wurden installiert. RenPy startet neu."
# game/updater.rpy:137
old "The update has been installed."
new "Die Aktualisierungen wurden installiert."
# game/updater.rpy:139
old "The update was cancelled."
new "Die Aktualisierungen wurde abgebrochen."
# game/updater.rpy:156
old "Ren'Py Update"
new "RenPy aktualisieren"
# game/updater.rpy:162
old "Proceed"
new "Fortsetzen"
# game/updater.rpy:129
old "Nightly"
new "Nightly"
# game/updater.rpy:135
old "The bleeding edge of Ren'Py development. This may have the latest features, or might not run at all."
new "Die allerneuste RenPy Version. Diese enthält die neusten Funktionen, könnte aber auch überhaupt nicht funktionieren."
+1 -1
View File
@@ -1,4 +1,4 @@
#translation: renpy/common/00action_file.rpy
#translation: renpy/common/00action_file.rpy
translate italian strings:
# renpy/common/00action_file.rpy:124
+1 -1
View File
@@ -1,4 +1,4 @@
translate italian strings:
translate italian strings:
# game/distribute.rpy:358
old "No packages are selected, so there's nothing to do."
+1 -1
View File
@@ -1,4 +1,4 @@
translate italian strings:
translate italian strings:
# game/new_project.rpy:22
old "Choose Project Template"
+1 -1
View File
@@ -1,4 +1,4 @@
translate italian strings:
translate italian strings:
# game/project.rpy:201
old "Launching the project failed."
+15 -15
View File
@@ -1,15 +1,15 @@
translate japanese strings:
# game/about.rpy:21
old "[version!q]"
new "[version!q]"
# game/about.rpy:25
old "View license"
new "ライセンス"
# game/about.rpy:27
old "Back"
new "戻る"
translate japanese strings:
# game/about.rpy:21
old "[version!q]"
new "[version!q]"
# game/about.rpy:25
old "View license"
new "ライセンス"
# game/about.rpy:27
old "Back"
new "戻る"
+23 -23
View File
@@ -1,23 +1,23 @@
translate japanese strings:
# game/add_file.rpy:7
old "FILENAME"
new "ファイル名"
# game/add_file.rpy:7
old "Enter the name of the script file to create."
new "作成するスクリプトファイル名を入力してください。"
# game/add_file.rpy:10
old "The filename must have the .rpy extension."
new "ファイル名は拡張子 .rpy を持つ必要があります。"
# game/add_file.rpy:18
old "The file already exists."
new "ファイルは既に存在します。"
# game/add_file.rpy:21
old "# Ren'Py automatically loads all script files ending with .rpy. To use this\n# file, define a label and jump to it from another file.\n"
new "# Ren'Pyは .rpy で終わるすべてのスクリプトファイルを自動的にロードします。このファイルを使用するためにはラベルを定義し、他のファイルからそこにジャンプしてください。\n"
translate japanese strings:
# game/add_file.rpy:7
old "FILENAME"
new "ファイル名"
# game/add_file.rpy:7
old "Enter the name of the script file to create."
new "作成するスクリプトファイル名を入力してください。"
# game/add_file.rpy:10
old "The filename must have the .rpy extension."
new "ファイル名は拡張子 .rpy を持つ必要があります。"
# game/add_file.rpy:18
old "The file already exists."
new "ファイルは既に存在します。"
# game/add_file.rpy:21
old "# Ren'Py automatically loads all script files ending with .rpy. To use this\n# file, define a label and jump to it from another file.\n"
new "# Ren'Pyは .rpy で終わるすべてのスクリプトファイルを自動的にロードします。このファイルを使用するためにはラベルを定義し、他のファイルからそこにジャンプしてください。\n"

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