Compare commits

...

1201 Commits

Author SHA1 Message Date
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
Tom Rothamel 366a09d708 Changes to get Ren'Py compiling with pygame_sdl2/sdl2. 2014-11-04 21:15:41 -05:00
Tom Rothamel 3fe3df9f23 Link to translation best practices. 2014-10-22 22:46:21 -04:00
Tom Rothamel e942545e39 changelog: Translation updates. 2014-10-21 22:33:09 -04:00
Tom Rothamel 9fe39eb8f3 Update changelog for 6.18.3. 2014-10-21 22:27:52 -04:00
Tom Rothamel b1b17bd9cc Remove translation TODOs. 2014-10-20 21:38:32 -04:00
Tom Rothamel 1b34b59f5e Merge pull request #482 from civalin/i10n/zh_TW
Traditional Chinese translation for launcher updated.
2014-10-20 21:36:25 -04:00
Tom Rothamel 719f06339c Merge pull request #481 from tlm-2501/patch-2
Updated Russian translation for preferences.rpy.
2014-10-20 21:36:07 -04:00
Tom Rothamel 7abba42bca Document showif. 2014-10-20 21:32:44 -04:00
Tom Rothamel c1120fc5b2 transform: Apply time adjustments on _hide, as well as render.
Fixes #484.

See: http://lemmasoft.renai.us/forums/viewtopic.php?p=343556#p343556
2014-10-19 23:07:10 -04:00
Tom Rothamel 7d29b8968a When in self-voicing mode, ignore {w} and {p} text tags.
These (especially the timed variants) tend to disrupt
text-to-speech. It's best to just have them speak in a
single block, whih is closest to the human speech pattern.

Fixes #483.
2014-10-19 11:40:46 -04:00
Tom Rothamel 994adf2ca5 Add the renpy.invoke_in_thread function. 2014-10-18 15:10:17 -04:00
Tom Rothamel bd55020512 Add updater.UpdateVersion.
This is a function that contacts an update server and determines
if there is an update available. It does this in a background thread,
so as to not make the game unresponsive.
2014-10-18 15:02:45 -04:00
Tom Rothamel b4f7d641b0 showif: Integrate with screen language.
This gives us a showif statement that applies the ShowIf displayable
to its children.
2014-10-17 23:12:13 -04:00
Tom Rothamel 1197cff85b showif: Rewrite showif.
We now simply deliver "appear", "show", and "hide" to the child,
rather than trying to exploit _hide. The advantage of doing it this
way is that we can preserve the hide state going into show, without
having to transfer it between transforms.
2014-10-17 22:15:53 -04:00
Tom Rothamel 5e8fc44fb3 Maintain hide_response and replaced_response over all transform renders.
This lets us simply query a transform to determine if it's blocking
hide/replaced, rather than having to update it in an unusual way.
2014-10-17 22:14:53 -04:00
Tom Rothamel 5df33b0f56 Only force us to stay in hide/replaced if a request happens.
This lets us issue "hide" to a transform by normal means, and override
it later.
2014-10-17 22:13:56 -04:00
Civa Lin fc9e826976 i10n: Traditional Chinese language for launcher updated. 2014-10-18 09:50:36 +08:00
Civa Lin e80d6f95a9 Merge branch 'master' into i10n/zh_TW 2014-10-18 09:47:33 +08:00
tlm-2501 8815e5efb8 Updated Russian translation for preferences.rpy. 2014-10-17 21:31:08 +04:00
Tom Rothamel 9874bc4dc3 WiP of ShowIf. 2014-10-16 22:54:22 -04:00
Tom Rothamel 82b597f62b Fix {Set,Toggle}ScreenVariable.
These functions were marked as pure, but weren't actually pure
functions, since the scope they update can change. This change
has them return objects, which are pure.
2014-10-16 22:41:31 -04:00
Tom Rothamel 4b35493447 The ATL on statement now takes a list of event names.
This will be useful for the upcoming showif displayable, which might
be used with transforms that contain "on start, idle:".
2014-10-15 20:17:28 -04:00
Tom Rothamel 69b203fbaa doc: Add warning about show layer and transform state.
Fixes #479.
2014-10-14 18:05:46 -04:00
Tom Rothamel 875a585e90 sl2: Use a newly-created context when predicting SLIf.
We had incorrectly used the original context, which led to the
contents of the predicted if statement showing up if the
statement was reused:

See: http://lemmasoft.renai.us/forums/viewtopic.php?f=32&t=28793
2014-10-14 17:46:32 -04:00
Tom Rothamel 935d065712 Transfer focus based on displayable replacement.
When a displayable in a screen that has focus/grab is replaced,
we transfer the focus to its replacement. This fixes a problem where
we would transfer grab only, which could lead to a permagrab condition.

Fixes #477.
2014-10-14 00:32:05 -04:00
Tom Rothamel c0c44896a8 Add _composite_parts for composite displayables.
For composite displayables (those with _main) set, this gives a list
of all components, other than the root widget, that make up the
displayable.
2014-10-13 23:55:40 -04:00
Tom Rothamel b7a9266bf3 Update changelog with new prediction stuff. 2014-10-12 13:26:42 -04:00
Tom Rothamel 8bf5f05270 While at the main menu, predict the start label.
This should provide a better experience in the start-new-game case,
which is the first thing a player will see.

Fixes #478.
2014-10-12 12:43:24 -04:00
Tom Rothamel 996d3c2fd6 Improve prediction of call/return.
We now model the return stack as part of the prediction process,
making it possible to perform prediction through a call and return
pair.

Fixes #288.
2014-10-12 01:30:01 -04:00
Tom Rothamel f68a4caec2 Check Side for correct parameters and children.
Fixes #476.
2014-10-11 22:17:44 -04:00
Tom Rothamel f06e5861e7 Bump versio to 6.18.3. 2014-10-11 17:13:07 -04:00
Daniel Luque a93f4f1f76 Merge pull request #475 from LuqueDaniel/update-es
Update es
2014-10-11 15:30:40 +02:00
Daniel Luque 572054c6e1 Update: templates/spanish/game/tl/none/common.rpy 2014-10-11 15:24:15 +02:00
Daniel Luque bc3f659f4b Update: launcher/game/tl/spanish/common.rpy 2014-10-11 15:19:24 +02:00
Tom Rothamel db63d0db4e Update changelog. 2014-10-09 22:28:02 -04:00
Tom Rothamel e7424e1140 Merge pull request #474 from civalin/i10n/zh_TW
Add Traditional Chinese translation.
2014-10-09 17:07:53 -04:00
Tom Rothamel c345b6a84c android: Log call errors to android.txt. 2014-10-08 23:21:02 -04:00
Tom Rothamel 5fd9bbe651 Pop dynamic when a lookup_return fails. 2014-10-08 20:44:01 -04:00
Tom Rothamel d19b49d418 Restore the current screen using try/catch.
This fixes a bug where the current screen could be set at an
inopportune time, causing crashes.

See: https://gist.github.com/vaendryl/97fb82b9cbee8bda0777
2014-10-08 20:17:00 -04:00
Tom Rothamel f5103f4bf9 Update the changelog. 2014-10-07 23:34:02 -04:00
Tom Rothamel dc5357c7f2 Increase the image cache size to 16 screens.
We should be able to afford this, and computers have more RAM than they used to.
2014-10-07 23:26:26 -04:00
Tom Rothamel 61f940a2f2 Config changes:
* Increase the predict lookahead.
* Make RENPY_DEBUG_IMAGE_CACHE set the default value of config.debug_image_cache.
2014-10-07 22:26:37 -04:00
Tom Rothamel b38d0edb2c Better prediction of DynamicDisplayable.
If no predict function exists, the regular DD function is called,
and what it returns is now predicted.
2014-10-07 22:19:40 -04:00
Tom Rothamel 36834b094d Ensure rpyfn is defined when loading .rpyc files. 2014-10-07 20:12:27 -04:00
Civa Lin cefdc342b6 i10n: Traditional Chinese language for template. 2014-10-07 15:54:04 +08:00
Civa Lin 1c409025e1 i10n: Traditional Chinese language for launcher 2014-10-07 15:41:41 +08:00
Tom Rothamel 29cbac1c95 Ensure that yes_thread is always defined in AndroidInterface.
Fixes the immediate problems in #472.
2014-10-06 22:16:12 -04:00
Tom Rothamel 596cc4e6b6 Display an indicator when self-voicing is enabled.
This prevents people from getting stuck in self-voicing, and reporting
it as a bug.

Fixes #471.
2014-10-06 21:46:58 -04:00
Tom Rothamel 19d52e85f1 Update docs/changelog. 2014-10-05 21:33:30 -04:00
Tom Rothamel 75789bb8f2 memory: Add the renpy.profile_rollback() function.
This profiles the amount of memory used by the rollback system.

Fixes #470.
2014-10-05 21:13:55 -04:00
Tom Rothamel 55c00a86aa memory: Ignore the renpy.store module.
It's an alias of the store module, and we want to use the store name
to make it clear what's part of Ren'Py and what's part of the game.
2014-10-05 13:35:32 -04:00
Tom Rothamel 3f4f86f0fd memory: Try to speed up profiling. 2014-10-05 00:34:54 -04:00
Tom Rothamel 81c3e0c28e memory: Use gc.get_referents to walk objects.
This is simpler and more accurage.
2014-10-05 00:12:48 -04:00
Tom Rothamel dc058298f7 memory: Add the renpy.diff_memory() function.
This prints out the difference in memory usage since the last
time it was called.
2014-10-05 00:02:25 -04:00
Tom Rothamel 4609a1139c memory: Add the renpy.profile_memory() function.
This is a function that dumps a profile of memory to memory.txt (and
stdout if it's a tty.)
2014-10-04 23:27:39 -04:00
Tom Rothamel 9b5cb37b74 Rewrite the memory profile.
We now use sys.getsizeof to consider the actual object size,
rather than simply the number of objects that exist.
2014-10-04 22:03:09 -04:00
Tom Rothamel ff0893155d focused -> mouse_focused in swdraw. 2014-10-04 17:59:45 -04:00
Tom Rothamel 127f46c1d9 Remove unnecessary translation TODOs. 2014-10-03 23:09:35 -04:00
Tom Rothamel 2edea5b052 Write script to remove translation TODOs. 2014-10-03 23:09:14 -04:00
Tom Rothamel a256ed1c1e Merge pull request #469 from renoa/patch-7
Update common.rpy
2014-10-03 23:01:01 -04:00
Tom Rothamel 54d8b5733c Merge pull request #468 from renoa/patch-6
Update front_page.rpy
2014-10-03 23:00:51 -04:00
Tom Rothamel d59e6d0d45 Merge pull request #467 from renoa/patch-5
Update preferences.rpy
2014-10-03 23:00:44 -04:00
Tom Rothamel 66d3fbd6b0 Merge pull request #466 from renoa/patch-4
Update project.rpy
2014-10-03 23:00:36 -04:00
Tom Rothamel f83f217385 Merge pull request #459 from tlm-2501/patch-1
Updated translations in front_page.rpy.
2014-10-03 23:00:07 -04:00
Tom Rothamel c0b6d2dd3e Merge pull request #451 from renoa/patch-3
Update editor.rpy
2014-10-03 22:59:56 -04:00
Tom Rothamel 42e6d3f368 sl2: Properly analyze the iteration variable of a for loop.
Since it's defined in the loop, it should be at most a local constant,
not a global constant.
2014-10-02 23:27:36 -04:00
Tom Rothamel 9e3d1db244 Do not cache renders when sizing size_groups. 2014-10-02 21:21:05 -04:00
Tom Rothamel 8f0d132104 Ignore tts errors.
Rather than letting them crash the game.
2014-10-02 20:11:57 -04:00
Tom Rothamel 3813f0dc26 Improve reporting of duplicated labels from renamed .rpycs.
Fixes #452.
2014-10-01 20:56:52 -04:00
Renoa 1cb04cd09f Update common.rpy 2014-10-01 10:34:02 +03:00
Tom Rothamel fa8d11a13c Check return value of l.rest() when an expression/statement is expected.
This prevents problems where we let a None pass into some other
part of the code:

See: <00b201cfdc7e$c7d24530$5776cf90$@gmail.com>
2014-09-30 20:28:49 -04:00
Renoa c9c74ec020 Update common.rpy
translation
2014-09-30 23:13:06 +03:00
Renoa cccd957545 Update front_page.rpy
translation
2014-09-30 23:10:14 +03:00
Renoa 938a6f3fa8 Update preferences.rpy
translation
2014-09-30 23:06:31 +03:00
Renoa ad2763a460 Update project.rpy
translation
2014-09-30 23:04:11 +03:00
Tom Rothamel 779912dd80 Update Play.selected when get_selected() to be recalled.
This fixes a problem where selected would never become correct.
2014-09-29 22:57:46 -04:00
Tom Rothamel f058d56d0f Make Play's participation in get_selected optional.
It doesn't make sense for Play on the sound channel to participate
in get_selected(), since it's very likely the sound will quickly
end.

See: http://lemmasoft.renai.us/forums/ucp.php?i=pm&mode=view&f=0&p=148211
where Play causes Ren'Py to restart the interaction repeatedly.
2014-09-29 22:42:36 -04:00
Tom Rothamel c081ad9f78 Add renpy.music.is_music().
An internal function that returns true if a channel is a music
channel, and false otherwise.
2014-09-29 22:36:25 -04:00
Tom Rothamel bbd505b378 Add a debug style property.
This is meant for Ren'Py developer use. We can look at d.style.debug
to debug a displayable.
2014-09-29 20:11:58 -04:00
Tom Rothamel 1382c299fb Mousearea now respects focus_mask.
This makes it possible to have non-rectangular mouseareas.

Fixes #457.
2014-09-28 20:53:53 -04:00
Tom Rothamel 84429c3826 Convert focus_mask into a displayable in the style system.
This allows for render caching as necessary.
2014-09-28 20:40:47 -04:00
Tom Rothamel 971e33aa97 Remove spurious debug print. 2014-09-27 21:39:02 -04:00
Tom Rothamel 9cf92c7f34 Add keyboard_focus style property.
Setting this property to False hides a button, bar, or hotspot from the
keyboard focus mechanism. This might be useful for games where we
want to hide interface from the user, like hidden object games.
2014-09-27 21:34:36 -04:00
Tom Rothamel 20ca7fb463 Random doc fixes / generated code. 2014-09-26 21:49:15 -04:00
Tom Rothamel 5834069ddf Document the character named store.
Fixes #422.
2014-09-26 21:48:26 -04:00
Tom Rothamel ee2dc4aaea Make the define statement take an optional namespace.
This is intended to let us do:

   define character.e = Character("Eileen")
2014-09-26 21:22:46 -04:00
Tom Rothamel 7057ce19a1 The say statement looks for characters in the character namespace.
This lets us have a character with the same name as an object or
variable.
2014-09-26 20:39:10 -04:00
Tom Rothamel a190738a24 Add functions to get/set the return stack.
Fixes #464.
2014-09-25 23:27:26 -04:00
Tom Rothamel 60a9589a80 Deal with formats SDL_image can't reentrantly load.
It seems like SDL_image has problems reentrantly loading some
formats, certainly GIF and maybe TGA and BMP. So we whitelist
the common formats (png and jpeg), and lock loads of the rest.

Fixes #426.
2014-09-24 21:26:20 -04:00
Tom Rothamel 2ea6291b0d Add the crop_relative transform property.
When true, makes crop relative to the size of the image.
2014-09-24 00:42:36 -04:00
Tom Rothamel 4bd9c96d9c Bump version to 6.18.2. 2014-09-23 19:06:11 -04:00
Tom Rothamel 46c1f8067c Merge pull request #461 from javimat/master
Update Spanish template
2014-09-22 10:02:03 -04:00
javimat 4deae69732 Update screens.rpy
...from the English template. With parameters in screens definitions.
2014-09-22 15:34:02 +02:00
javimat ac09cb8363 Update options.rpy
Delete English explanations (redundant)
2014-09-22 15:32:22 +02:00
Tom Rothamel b397f4b235 Stop using the RENPY_BASE environment variable.
Fixes #460.
2014-09-21 17:37:04 -04:00
Tom Rothamel 389749b221 Use redraw() to handle invalidation.
They're really the same operation, except invalidation can be
run in the middle of a render. So let's check for that, and
use a single codepath.

This fixes a bug where when something was shown twice, the
invalidate could not take.

See: twelvethousand
2014-09-21 15:51:47 -04:00
Tom Rothamel 2da32702fe Revert "Force the animation timebase for ATL in show layer."
It's no longer necessary, now that we're only adjusting
ATL time in screens.

This reverts commit 72027f7f69.
2014-09-21 00:24:29 -04:00
Tom Rothamel f6b2161ac9 Run IAP actions in a new context.
The actions (at least the purchase action) requires us be interacting,
so we can go to sleep and let play services take over to handle the
actual transaction.

This requires us to interact in the middle of a callback, so we do
an invoke_in_new_context to make that possible.
2014-09-21 00:22:50 -04:00
Tom Rothamel 6343c2cd6b Make ATL time adjustments require take_execution_state.
The ATL time adjustments only make sense after take_execution_state.
If we're in a context where take_execution_state is never called,
we don't want to do the time adjustments.

So now, we make it a requirement that take_execution_state be called
before doing time adjustments.
2014-09-20 21:52:51 -04:00
Tom Rothamel 7960b6b7be Use only the index to look up entries in an SLFor's cache.
Using the object id proved to be error prone when new objects were
created during each iteration of the list (something we support).
This also returns the behavior to what it was in 6.17.

See: Seasons of the Wolf.
2014-09-20 19:50:16 -04:00
tlm-2501 f9875d9bad Updated translations in front_page.rpy. 2014-09-21 00:35:44 +04:00
Tom Rothamel 72027f7f69 Force the animation timebase for ATL in show layer.
We really should be propagating the transform state, but there
isn't really a good way to do that at the moment. (It isn't clear
where we'd store the old state.)

This is a reasonable, if ugly, workaround.

See: http://lemmasoft.renai.us/forums/ucp.php?i=pm&mode=view&f=0&p=147158
2014-09-19 23:00:38 -04:00
Tom Rothamel da532392d9 Fix load of .rpycs during .rpy compilation.
This fixes various missing label problems.
2014-09-19 22:21:07 -04:00
Tom Rothamel b1a392e171 Properly check that all parameters have been consumed.
And do it right this time.
2014-09-19 18:47:48 -04:00
Tom Rothamel 252baf8f1e Add renpy.munge()
This is a function that munges a string beginning with __ in the
same manner that Ren'Py munges names when parsing a file.

    jump __test

and:

    jump expression renpy.munge("__test")
2014-09-18 19:53:01 -04:00
Tom Rothamel 75d41125a1 Do not predict the main_menu image.
We don't define one by default, so if the user is debugging
prediction, this will fail.
2014-09-18 19:33:31 -04:00
Tom Rothamel 76c7c2aa86 atl: Global const transforms do not need parameters to be compiled.
This prevents an error we introduced in the last release.
2014-09-18 13:44:32 -04:00
Tom Rothamel 61466cf927 Update docs. 2014-09-18 00:09:40 -04:00
Tom Rothamel 2befad5da1 Fix check of atl parameters before compile. 2014-09-18 00:00:47 -04:00
Tom Rothamel c1c046788b Add an sv character that can be used to self-voice descriptive text. 2014-09-17 23:55:41 -04:00
Tom Rothamel 1af82edd66 sl2: Propagate state into transitions added with add.
This requires a recompile.
2014-09-17 22:12:25 -04:00
Tom Rothamel 6a9835ad43 Bump version and update changelog. 2014-09-16 23:30:03 -04:00
Tom Rothamel 5402d84831 Add german template. 2014-09-16 23:28:24 -04:00
Tom Rothamel b30e7de686 sl2: Update screens that are already showing.
This matches the SL1 behavior.
2014-09-16 22:56:48 -04:00
Tom Rothamel 312d64b361 iap: Unconditionally restore purchases @ start. 2014-09-16 17:07:18 -04:00
Tom Rothamel 8bfb4d9f00 Update the who Text after display_say changes its properties.
This is necessary to make the properties take effect after the layout
has already been built.
2014-09-15 22:49:13 -04:00
Tom Rothamel 7253663eff sl2: Displayables with id can't be constant.
That's because they may be given arguments from outside the screen that
sl2 doesn't know about. Better safe then sorry, especially in a rare
case.
2014-09-15 22:47:37 -04:00
Tom Rothamel df6e8db1f1 Document Placeholder. 2014-09-15 20:20:47 -04:00
Tom Rothamel 7bc51c30db Properly document the third argument to edgescrill.
Fixes #447.
2014-09-15 20:09:47 -04:00
Tom Rothamel d2aa4adfe4 ATL transforms now begin executing when first shown.
Previously, ATL transforms began executing when the screen containing
the ATL transform was first shown, which meant that if the transform
changed over the course of screen display, a portion of the new
transform would be skipped.
2014-09-15 19:54:38 -04:00
Tom Rothamel f29df20878 script: Commit to loading a file when it parses/unpickles.
This prevents an error that was caused by when an exception in
finish_load would cause the .rpy file to load after finish_load
had already started updating data structures.
2014-09-15 00:45:46 -04:00
Tom Rothamel 57e935e1f4 Reorder methods in Script. 2014-09-15 00:12:21 -04:00
Tom Rothamel 88cb519b4d atl: Properly compute const-ness for a function statement.
Fixes #449.
2014-09-14 09:42:52 -04:00
Renoa 4a9becb351 Update editor.rpy
translated some lines
2014-09-14 14:44:24 +03:00
Tom Rothamel 0a4e788349 Use Placeholders for missing images. 2014-09-13 19:02:39 -04:00
Tom Rothamel ed9f598098 placeholder: Add Placeholder displayable.
This displays a placeholder image. The image displayed may be chosen
by the creator, or automatically determined based on the name of the
image being placeheld.
2014-09-13 18:39:30 -04:00
Tom Rothamel 529bb95a43 Ensure hiding is set on legacy ScreenDisplayables. 2014-09-12 21:37:55 -04:00
Tom Rothamel d8a945095e Ensure hiding is always an attribute of screens.
Fixes compatibility with 6.17.

See: Lovely Little Thieves 0.5
2014-09-12 21:05:39 -04:00
Tom Rothamel 77b65c7778 Set all-state Transform properties on initialization.
This lets users of a Transform access its properties before it
has been rendered or updated for the first time.
2014-09-11 09:06:39 -04:00
Tom Rothamel 2ed8af936c Check in profile_screen. 2014-09-10 22:30:35 -04:00
Tom Rothamel 3ecf7cf565 Optionally, automatically build_all on distribute if pyx changed. 2014-09-10 22:25:30 -04:00
Tom Rothamel 0902ccd28b tts: Document what_alt. 2014-09-10 21:20:42 -04:00
Tom Rothamel 2a217bf064 tts: Strip " before passing text to windows.
Windows command line argument parsing strikes again. This seems to
let text pass through in a way that makes it reasonably correct.
2014-09-10 21:10:54 -04:00
Tom Rothamel 3243f4c3ac tts: Allow the alt property of Text to take [text].
This makes it possible to wrap the text with prefixes and suffixes
on a per-Character basis, so as to more accurately convey meaning.
2014-09-10 21:00:27 -04:00
Tom Rothamel 4cf2921310 Share code between the RollForward action and behavior.
This makes the action work properly.

Fixes #436.
2014-09-09 18:20:28 -04:00
Tom Rothamel 53fc982bba Speed up style selection.
We do this by cheating heavily - avoiding re-preparing screens, and
busting the render cache. This wouldn't work for arbitrary code,
but it's good enough for the theme chooser.
2014-09-09 09:21:11 -04:00
Tom Rothamel 8a88c6d6f9 Re-add the use_cache at setstate.
This makes it possible to load a screen that uses use.
2014-09-09 08:46:00 -04:00
Tom Rothamel 136e31ada7 When a used screen takes parameters, persist its scope across interactions.
This makes sense for the new behavior of screens with parameters,
and is useful.

Fixes #194.
2014-09-08 22:59:26 -04:00
Tom Rothamel dfe32a1339 Ignore time spent not scrolling when edge scrolling.
This prevents big jumps from occuring when the mouse leaves one side
of the window, and re-enters on another side of the window.

Fixes #431.
2014-09-08 22:31:28 -04:00
Tom Rothamel bab6f8afc6 Allow a transform to have both a function and arguments.
This fixes a regression of the 6.17 behavior.

See: Jake's battle engine.
2014-09-07 22:51:00 -04:00
Tom Rothamel c0ea8ebcf2 Document use statement changes. 2014-09-07 00:11:33 -04:00
Tom Rothamel 033fcbbeaf sl2: Implement the "use <screen> id <id>" syntax.
Where sl1 used structural equality to transfer state between
screens sharing the same tag, sl2 can't do that. (Doing so would
require maintaining _name, which is expensive.)

Instead, we allow uses of screens to include an id property,
which explcitly specifies equality of used screens.
2014-09-06 23:44:54 -04:00
Tom Rothamel a2398afaf1 Update properties in Transform.default_function.
This preserves non-ATL transform behavior in the face of taking
state and execution state.

Fixes #445.
2014-09-06 20:47:10 -04:00
Tom Rothamel cacef7e71a Fix formatting of "could not find return label". 2014-09-06 20:19:42 -04:00
Tom Rothamel 54f9662bc0 Transpose grids as we render the grid.
Before this patch, we would transpose grids once, which caused a
problem where a reused grid would only be transposed once.

See: https://mail.google.com/mail/u/0/#inbox/1484b917bff1005b (Private)
2014-09-06 16:04:10 -04:00
Tom Rothamel 0fea7ee77c Use RENPY_AUTO_LOAD to override config.auto_load.
This provides an easy way to force a save load for development
purposes.
2014-09-06 14:26:30 -04:00
Tom Rothamel 1c71db539e Test that save directories are writable on Android before using them.
Relevant to #441.
2014-09-05 23:27:56 -04:00
Tom Rothamel e8a0b8413d Do not use the game-local save directory on Android.
Relevant to #441.
2014-09-05 23:18:12 -04:00
Tom Rothamel e192814d02 Error out if the base directory doesn't exist. 2014-09-05 15:21:37 -04:00
Tom Rothamel 066a6a6185 sl2: Do not take state from predicted displayables or transforms.
If the parameters to a displayable or transform change between
when a screen is predicted and when it is shown, it means that
the prediction was incorrect.

We now discard the incorrect prediction state, instead of allowing it
to influence the screen.

See: http://lemmasoft.renai.us/forums/ucp.php?i=pm&mode=view&f=0&p=144880
See: http://lemmasoft.renai.us/forums/viewtopic.php?p=338394#p338394
2014-09-04 23:05:13 -04:00
Tom Rothamel 4034f87f26 Revert take_execution_state to the 6.17 version.
This is intended to fix problems caused by the changes outside of
screens.
2014-09-04 23:05:13 -04:00
Tom Rothamel 3ee319ba9e Merge pull request #443 from LuqueDaniel/update-es
Update spanish translation
2014-09-04 08:31:42 -05:00
Tom Rothamel 4c094852e8 Various doc fixes. 2014-09-03 18:36:44 -04:00
Daniel Luque a4aef8ceb1 Update spanish translation 2014-09-03 13:54:18 +02:00
Tom Rothamel 5794e8b3b7 Fix HideInterface documentation. 2014-09-02 22:59:30 -04:00
Tom Rothamel 3ab4f62cf8 Make renpy.file() work with the with statement. 2014-09-02 21:17:40 -04:00
kyouryuukunn 7f70d22344 Merge pull request #442 from kyouryuukunn/update_japanese_template
update japanese translation
2014-09-02 23:01:13 +09:00
kyouryuukunn 4a7ca192e9 update japanese translation 2014-09-02 22:59:57 +09:00
Tom Rothamel 74fce0049c Add the OnEvent displayable to run actions on events.
By being a displayable, OnEvent is able to invoke actions even when
a screen is not being updated. This is important in the new version
of Ren'Py, which tries to avoid screen updates as much as possible.
2014-09-01 21:27:19 -04:00
Tom Rothamel 22397c225f screen: Propagate hide events to children of the screen. 2014-09-01 21:24:52 -04:00
Tom Rothamel 8f80e828c7 Do not autosave when loading an autosave file.
Doing so will screw us up, because we'll change the autsave slots
right before we load.
2014-09-01 18:20:20 -04:00
Tom Rothamel c901b4c1bd drag: Improved response to changes in position
* More accurately check for changes in position.
* Allow a change in position to override a drag_group position.
2014-09-01 15:05:40 -04:00
Tom Rothamel 2f1455351d Update doc generation to use the new location of pyanalysis. 2014-09-01 09:43:08 -04:00
Tom Rothamel 83c7eef6c8 drag: Correctly detect placement changes.
When detecting placement changes, we want to use xpos/ypos, not
self.x/self.y.
2014-08-31 23:15:17 -04:00
Tom Rothamel f29ab675ec Call run_unhovered when a drag is unhovered. 2014-08-31 22:41:43 -04:00
Tom Rothamel d4e1a1d1f3 If the placement of a drag changes, move it to the new position.
This is probably the least bad thing we can do with a drag that
has changed its placement.
2014-08-31 22:09:06 -04:00
Tom Rothamel cede3f651d Fix call to super().__init__ in Drag constructor. 2014-08-31 19:34:19 -04:00
Tom Rothamel 4ed0c8e313 atl: Try to avoid recompiling constant ATL.
This should speed things up a little by avoiding the expensive
recompile step where possible.
2014-08-31 01:42:31 -04:00
Tom Rothamel ba4c6d8b10 Add a script analysis phase.
For now, all we do in this phase it analyze ATL for const-ness.
2014-08-31 00:05:29 -04:00
Tom Rothamel 87f2975dd0 Add the ability to analyze ATL for const-ness. 2014-08-31 00:04:12 -04:00
Tom Rothamel 15717d87af transform: default_xpos -> inherited_xpos, etc.
This is a field rename to better reflect what we use the fields for,
in the hope of making code slightly more reasonable.
2014-08-30 16:04:14 -04:00
Tom Rothamel 59174e44fb Rename renpy.sl2.pyutil to renpy.pyanalysis.
It more accurately reflects what the module does, and it may be useful
outside of sl2.
2014-08-30 15:57:01 -04:00
Tom Rothamel b6778f1a9e transform: Take state in the take_state method.
Previously, we had be transferring the position state in the
take_execution_state method.
2014-08-30 14:28:54 -04:00
Tom Rothamel e693038479 take_execution_state should properly inherit xpos. 2014-08-30 14:16:43 -04:00
Tom Rothamel f1cae21fdb sl2: Force a screen update on hide.
The multiple-update-prevention was stopping us from updating the
screen on hide like we want to.
2014-08-30 12:17:30 -04:00
Tom Rothamel 33e557c04f Check that the what argument to Character.__call__ is a string. 2014-08-29 21:50:26 -04:00
Tom Rothamel 32773f3832 Ensure coordinates of drags remain integers. 2014-08-28 22:07:06 -04:00
Tom Rothamel 32a6de49c9 Allow drags to exist outside a drag_group without a drag_name. 2014-08-28 22:01:49 -04:00
Tom Rothamel 64f6038b52 sl2: Do not always treat config and style as constants.
We have a case in the wild where someone used "style" as an argument
to a screen.
2014-08-28 17:50:53 -04:00
Tom Rothamel 813ef90eb2 Remove uses of type() in store.
While a reserved word, it's the sort of thing we didn't use much,
and that might be used a lot by end users. So we'll try to avoid
adding uses of type, prefering _type instead.
2014-08-28 17:08:21 -04:00
Tom Rothamel 3ef409b4f2 Suspend self-voicing when playing voice. 2014-08-27 23:24:09 -04:00
Tom Rothamel 34ad1df5b2 Properly compare ATL contexts. 2014-08-27 22:44:32 -04:00
Tom Rothamel 41afb8e5b2 Load .rpy if .rpyc fails with an exception.
If both files exist, we prefer to load the .rpy rather than a
corrupt or obsolete rpyc.

Fixes #437.
2014-08-27 21:37:23 -04:00
kyouryuukunn 15e0d57277 Merge pull request #439 from kyouryuukunn/update_japanese_template
fix japanese template
2014-08-27 18:01:26 +09:00
kyouryuukunn 04ce5eaf09 fix japanese template 2014-08-27 18:00:42 +09:00
kyouryuukunn 130d92c5a2 Merge pull request #438 from kyouryuukunn/update_japanese_template
update japanese template
2014-08-27 16:56:56 +09:00
kyouryuukunn 504f2ff708 update japanese template 2014-08-27 16:54:22 +09:00
Tom Rothamel 99f44f7eff Add the ability to parse a screen as sl1.
This is purely to make it possible to port sl1 games up to newer
Ren'Py, without rewriting them. This shouldn't be used in new games,
and may go away at some point.
2014-08-26 21:27:57 -04:00
Tom Rothamel 0a95f50724 Update a screen on hide before copying it.
When we copy a screen, we lose the cache - but we need the cache
to propagate the state of transforms (etc) to the children of the
screen.
2014-08-26 20:11:53 -04:00
Tom Rothamel 4da7ac8af7 Preserve nearest over subsurface operation. 2014-08-25 08:05:19 -04:00
Tom Rothamel b8c6a62c8f doc: Various minor improvements. 2014-08-24 17:51:37 -04:00
Tom Rothamel 8ecc3a200f doc: IAP. 2014-08-24 17:51:26 -04:00
Tom Rothamel c8d45d3715 iap: Add Purchase and Restore actions, get_store_name function. 2014-08-24 17:19:30 -04:00
Tom Rothamel 328e389f19 Compat old screen language location. 2014-08-24 16:33:40 -04:00
Tom Rothamel 53d9a60544 Update screens once before we lock them down for a hide.
This matches 6.17 behavior, and it makes sense that a hiding screen
should show the data as of the time it was hidden.
2014-08-23 22:33:24 -04:00
Tom Rothamel 7985a39a00 Do not take transition state when a parameter changes.
When a parameter to a transition changes, we have a different
transition, so taking the state doesn't work - it means we will
be representing the state of a different transition.
2014-08-23 22:28:07 -04:00
Tom Rothamel 60ce7ca8c9 Update musicroom Play selection status.
This makes the musicroom Play action compatible with sl2's reuse
of displayables.
2014-08-22 22:34:09 -04:00
Tom Rothamel e3ee421221 Introduce renpy.substitute.
This is a new public API corresponding to renpy.substitutions.substitute.
2014-08-21 21:36:42 -04:00
Tom Rothamel d373cf93e6 Add config.transition_screens for compatibility.
Setting this to False restores compatibility with old versions of
Ren'Py, where screens would always be updated, even on the old side
of a transition.
2014-08-20 19:02:02 -04:00
Tom Rothamel 2e3f6991a2 Add self-voicing to help.html.
Fixes #424.
2014-08-19 10:17:29 -05:00
Tom Rothamel e8d78b9deb doc: Add screen optimization to the index page. 2014-08-19 00:05:09 -05:00
Tom Rothamel ca4eb8857d doc: renpy.profile_screen. 2014-08-18 23:57:03 -05:00
Tom Rothamel 91cc4aa85a doc: Include const and pure vars, add link anchors. 2014-08-18 23:36:35 -05:00
Tom Rothamel 53328bf2a8 doc: Screen prediction. 2014-08-17 23:02:39 -05:00
Tom Rothamel 6d6cc7e6c0 Merge pull request #434 from ZeikJT/master
Fixing mistakes on the Language Basics doc page
2014-08-17 12:29:04 -05:00
kyouryuukunn 411028297e Merge pull request #435 from kyouryuukunn/update_japanese_template
update japanese template
2014-08-17 15:56:03 +09:00
kyouryuukunn 7186ccc22e update japanese template 2014-08-17 15:55:02 +09:00
Tom Rothamel 4b3b9dd3f1 doc: How const optimizes screen language, const text. 2014-08-16 10:18:29 -05:00
Tom Rothamel c619ee7ef2 Add the _developer_default style.
This is needed to enter the developer menu.
2014-08-15 23:23:20 -05:00
Matias Giachino 49df5bed9c Tuple - one-item tuple text incorrect
Says they must specify a parenthesis must follow one-item special cases. The truth is a comma must follow special cases
2014-08-15 19:18:31 -07:00
Matias Giachino b3e2801f38 True, False, None section - remove trailing text 2014-08-15 19:17:08 -07:00
Tom Rothamel fa2292a811 doc: Define const and pure. 2014-08-15 11:11:54 -05:00
Tom Rothamel 3da77b1ce7 doc: Start screen optimization. 2014-08-15 09:34:02 -05:00
Tom Rothamel b89e630e77 Store the location when defining screens.
This lets us link to the screen from the inspector.
2014-08-14 23:13:51 -05:00
Tom Rothamel 03701d8c39 inspector: Clicking on a location opens it in the editor. 2014-08-14 22:56:36 -05:00
Tom Rothamel c4d41109a6 Show displayable lines numbers in the style inspector.
For sl2 only.
2014-08-14 07:25:28 -04:00
Tom Rothamel 7ef976d637 sl2: child_or_fixed should consider actual children.
It was considering the number of available children, which was
improperly considering children in if statements and so on.
2014-08-13 22:01:27 -04:00
Tom Rothamel bdc7cf062e Merge pull request #433 from LuqueDaniel/update-es
Update es
2014-08-13 07:40:45 -04:00
Daniel Luque d562fdba93 To uppercase 2014-08-13 12:36:34 +02:00
Daniel Luque 66acf402ec Updated: spanish/front_page.rpy 2014-08-13 12:30:35 +02:00
Tom Rothamel b053705869 sl2: Use implicit_add to add displayables.
This prevents us from copying transforms that already have had
take_execution_state called. This fixes a regression that caused
copied transforms to reset, and hence the show event to be fired
multiple times.
2014-08-12 19:16:15 -04:00
Tom Rothamel 8c6060b2ba sl2: Ensure screen.widgets is updated on reuse. 2014-08-11 23:28:31 -04:00
Tom Rothamel 06f5ddffbf Make XScrollValue and YScrollValue use the current screen.
This lets them deal with cases where they are reused on a copied
or hiding screen.
2014-08-11 23:21:10 -04:00
Tom Rothamel 6b259960a1 Make _current_screen valid during per_interact() and render().
This let's us defer decisions about the current screen until
closer to render time.
2014-08-11 23:18:50 -04:00
Tom Rothamel 4555020fee When putting a screen into the old state, make a copy. 2014-08-11 23:03:08 -04:00
Tom Rothamel 87d3b65f4b Fix more PyDev 3.6.0 warnings. 2014-08-11 21:14:42 -04:00
Tom Rothamel 479eac2ebb Fix PyDev 3.6.0 errors. 2014-08-11 21:03:03 -04:00
Tom Rothamel 5f80db6880 Add a script that can compare zip sizes.
This lets us attribute changes in size to particular files.
2014-08-10 19:59:39 -04:00
Tom Rothamel d66a9f0bd7 Update docs. 2014-08-10 18:23:02 -04:00
Tom Rothamel be42df7e09 Add alt text to imagemap hotspots. 2014-08-10 09:55:35 -04:00
Tom Rothamel 05b1d38e8f Try harder to find a place to return to.
When the return site exists, we simply return to it. If the return
site disappears, we look up the call site, and return to the next
node, if one exists.

If we're in developer mode, we report an error at this
point. Otherwise, we pop the stack, and try again.
2014-08-09 10:43:23 -04:00
Tom Rothamel 6f377d8253 Fix some issues with edgescroll.
* It could start on timerevent, rather than a mouse event.
* It could get the wrong edge_last_st, leading to large jumps.
2014-08-08 23:11:36 -04:00
Tom Rothamel dd02654228 distribute-made copy of screens.rpy. 2014-08-08 21:07:39 -04:00
Tom Rothamel acc82e3030 tts: Only speak text after {fast}.
This deals with extend properly.
2014-08-08 19:37:04 -04:00
Tom Rothamel 84871c65c1 Call the dynamicdisplayable function iff it has no child.
Transform may need to get the placemet, which requires a
child exist.
2014-08-07 21:34:36 -04:00
Tom Rothamel a704363c54 Make emphasize audio into a preference. 2014-08-06 23:23:23 -04:00
Tom Rothamel 86609614b8 Update name. 2014-08-06 21:47:55 -04:00
Tom Rothamel ace45f4ef0 Apply style group to detached widgets.
This seems to make sense, and fixes the sl2viewport function.
2014-08-06 21:28:44 -04:00
Tom Rothamel 2f114e59df Revert tutorial. 2014-08-05 23:35:30 -04:00
Tom Rothamel 43bed3a92b Revert options.rpy in testcases. 2014-08-05 23:26:28 -04:00
Tom Rothamel 4b3c5ecbbc sl2: Document changes. 2014-08-05 23:20:44 -04:00
Tom Rothamel d34ec5d0fd Include glib-2.0 for versions of fribidi that need it.
Fixes #303.
2014-08-04 21:20:02 -04:00
Tom Rothamel b45d9f957b Update changelog. 2014-08-04 01:01:31 -04:00
Tom Rothamel 001a5f747c voice: Deal more sensibly with the character volume being 0.
We now treat this as a mute, and do not play the voice file. This
prevents us from emphasizing voice when the user has disabled the
voice of a particular character.
2014-08-04 00:56:38 -04:00
Tom Rothamel 1d3e8e1ad7 Add the ability to emphasize certain audio channels.
When an emphasized channel is playing, all non-emphasized channels
have their volume lowered. When emphasis ends, the non-emphasized
channels resume their normal volume.

This is a generalization of (and replacement for) #360.
2014-08-04 00:40:27 -04:00
Tom Rothamel 2453eb2cbe Make reduce_volume_in_voice opt-in by creators.
This will break existing games, by changing the volumes in a way
creators will not expect. Let's make this opt in across the board.

Removed it from the various templates since voice stuff is pretty
rarely used, and shouldn't required attention from a new user.
2014-08-03 23:28:38 -04:00
Tom Rothamel 4024f4f6bd Revert "Move voice config to 00voice.rpy."
This reverts commit e612e2a168822e1e0804b825953808fefb83df7d.
2014-08-03 23:28:38 -04:00
Tom Rothamel dbefae5855 Initial run at updating the changelog. 2014-08-03 23:28:38 -04:00
Tom Rothamel a147e41609 Move voice config to 00voice.rpy.
In general, config variables that only touch common/ should only
exist in common/.
2014-08-03 23:28:38 -04:00
Tom Rothamel 724f9d91aa sl2: Fix regression reusing displayables. 2014-08-02 14:35:31 -04:00
Tom Rothamel 8f9f42352b Allow the launcher to scan/launch mac app packages.
This makes it possible to run an older mac app package with a newer
Ren'Py - to get self-voicing, for example.
2014-08-02 00:06:27 -04:00
Tom Rothamel 463d9cde79 sl2: Only reuse non-None displayables. 2014-08-01 23:53:31 -04:00
Tom Rothamel 92cae431f2 Add "Force Recompile" to the launcher.
This will be useful for people upgrading from pre-sl2 to sl2 versions
of Ren'Py, as it makes it possible to be sure all screens are using
sl2.
2014-08-01 15:47:11 -04:00
Tom Rothamel 1f93fbfd0b Use the focus system to retain grab between interactions.
With the new screen system, it's now possible to reuse the same
displayable between two interactions. Such displayables need to
retain grab until they go away, or grab is explicitly released.

This fixes a problem where a constant bar would lose focus after being
adjusted in a way that restarts the interaction, as volume sliders do.
2014-07-31 23:05:39 -04:00
Tom Rothamel f8094c21b1 Invalidate drags on child change. 2014-07-30 23:18:58 -04:00
Tom Rothamel 833cf20f56 Mark drags as focusable. 2014-07-30 23:18:43 -04:00
Tom Rothamel 581d30debb sl2: Properly get old_main. 2014-07-30 23:18:15 -04:00
Tom Rothamel 71d771d172 Store the new position in the drag_group on drag snap.
Fixes the first part of #396.
2014-07-30 22:42:37 -04:00
Tom Rothamel d6745e7492 Remove syntax error. 2014-07-30 11:08:24 -04:00
Tom Rothamel 8a66bab786 Handle android mouse release move in Ren'Py.
Previously, we were handling this in SDL. However, this conflicted
with the MOUSEMOTION merging - the other event could be moved before
the mouse release, leading to unsightly jumps, and (perhaps) the
viewport being in the wrong place.

We now synthesize the mouse release move in Ren'Py, which lets us
control the order in which it occurs.

Fixes #391.
2014-07-29 23:28:46 -04:00
Tom Rothamel 20be450e1a Mouse focus only on mouse events.
We had been using the mouse to determine focus at the start of
each interaction. We now only use the mouse to determine focus
if the last event - the event that ended the interaction - was
a mouse event.

Fixes #299.
2014-07-28 23:53:12 -04:00
Tom Rothamel 4277d2b049 Merge pull request #324 from duanemoody/master
Add application category for OS X
2014-07-28 23:26:46 -04:00
Tom Rothamel 8ddf658543 Use an adv-mode narrator for adv-mode _default_empty_window.
Fixes #330, using kyouryuukunn's second approach.
2014-07-28 23:23:34 -04:00
Tom Rothamel 3d3f437f57 Add config.autosave_on_choice.
This variable determines if Ren'Py autosaves at menus.
2014-07-28 23:04:29 -04:00
Tom Rothamel 99330bb1eb Do not save ScreenDisplayable.children.
This is recreated on load, and saving it just leads to slower save and
load times.
2014-07-28 22:57:09 -04:00
Tom Rothamel eff11fec79 sl2: Properly finish and imagemaps.
Previously, we were failing to finish the imagemaps we created, which
both leaked the md5 object and generally hurt performance.
2014-07-28 22:55:56 -04:00
Tom Rothamel af0784af3b Perform save dumps before we pickle things.
This makes config.save_dump a powerful tool for debugging pickle
problems, where previously it was only useful for finding out the size
of save files.
2014-07-28 22:54:24 -04:00
Tom Rothamel 4607b2db38 sl2: Improve prediction of screens.
This includes:

* When predicting, we do not stop on the first exception. Instead, we
  keep going, trying to predict what we can.

* This includes screen parameters and arguments as well.

* If we can't evaluate the list part of a for loop, we use [ 0 ] - in
  conjunction with the error handling, this should get us
  something. In many cases, it gets us everything important.

* Once per if statement, we predict all branches.
2014-07-27 22:53:32 -04:00
Tom Rothamel acbaa4c9ba _hide hides the hiding screen, not the not-hiding screen.
This fixes a regression that caused screens without hide transforms to
immediately become empty, even when they should have been used in an
old transition.
2014-07-27 15:00:15 -04:00
Tom Rothamel b9d4a6f6f5 If a Fixed with a layer_name does not have a scene list, do not copy it. 2014-07-26 22:34:17 -04:00
Tom Rothamel d82ff5c7d6 sl2: Track which SLNodes can have keywords.
There are certain nodes that can't have keywords, like if nodes that
occur after a python statement that defines a variable used by the if
statement.

This change ensures that we only execute the keywords() method if:

* Some keywords are present.
* Nothing precludes the keywords method from running.
2014-07-26 22:17:56 -04:00
Tom Rothamel 569f6c0f95 Add portuguese translation by mrstalker. 2014-07-26 11:15:56 -04:00
Tom Rothamel 1a5f693ccd sl2: Pop the open viewport from the ui stack. 2014-07-25 23:02:09 -04:00
Tom Rothamel 92ed019e6c sl2: Fix sl2viewport.
We now properly get the outer and inner elements for all sl2viewports.
2014-07-24 23:08:21 -04:00
Tom Rothamel ebbca682f7 Make autosave_on_quit apply to autosave on load. 2014-07-24 10:39:07 -04:00
Tom Rothamel 33f2c0670d Merge pull request #338 from kyouryuukunn/autosave_before_load
autosave before load
2014-07-23 23:02:58 -04:00
Tom Rothamel 7f85657c0a Add config.autosave_on_quit.
This variable lets us control if Ren'Py autosaves when entering the
quit or main menu prompts.
2014-07-23 21:01:35 -04:00
Tom Rothamel c24b99a0a6 Do not convert the screenshot to the screen's format.
The screen's format may not be the for RGBA format we expect surfaces
to be in when we load them into textures. This would cause
FileCurrentScreenshot to break.

Fixes #314.
2014-07-21 23:27:23 -04:00
Tom Rothamel c2a2572aec Reduce over-passing of show arguments to nvl screen.
We would pass say_vbox_properties, which is only used in pre-screens
code. When iterating through a say_list containing multiple
lines of text, we could use say_args from a previous line.
2014-07-20 23:16:31 -04:00
kyouryuukunn dd5796a59d Merge pull request #419 from kyouryuukunn/update_japanese_template
update japanese template
2014-07-21 11:57:49 +09:00
kyouryuukunn 280ef1c396 update japanese template 2014-07-21 11:56:58 +09:00
Tom Rothamel a2a48e4603 Merge pull request #358 from kyouryuukunn/pass_show_args
NVLCharacter now passes show_ arguments to the nvl screen.
2014-07-20 21:49:07 -04:00
Tom Rothamel 52413479a6 Merge pull request #354 from kyouryuukunn/character_volume
Make voice volume adjustable on a per-character basis.
2014-07-20 21:38:57 -04:00
Tom Rothamel 919bbbca87 Merge pull request #388 from renoa/patch-2
Update Arabic template translation.
2014-07-20 21:36:27 -04:00
Tom Rothamel 9c8a4e17f3 Track mouse and keyboard focuse separately. Make joy depend on key.
This more accurately models how one would expect the joystick to work
on Linux.

Fixes #402.
2014-07-20 21:34:27 -04:00
Tom Rothamel cb359e8a45 When a default_focus appears, if nothing is focused, focus it.
This fixes #417, an issue that was causing problems when the default
focuse only appeared at the end of a transition.
2014-07-20 19:23:30 -04:00
Tom Rothamel 20bfd1298f Update android packaging doc to represent the latest approach. 2014-07-19 21:28:05 -04:00
Tom Rothamel 108ca1f981 Launcher language selection improvements.
* Sort alphabetically.
* Turn "_" into " ".
* Add scrollbar.
2014-07-19 21:03:30 -04:00
Tom Rothamel 8573bb76f9 Merge pull request #404 from LuqueDaniel/update-es
Update es
2014-07-19 20:30:19 -04:00
Tom Rothamel 1176d159af Use name_only when extending a string-named character.
Fixes #408.
2014-07-19 20:25:16 -04:00
Tom Rothamel f554e19a1a Move the code for accessing a character into its own function.
This will make it easier to change in the future.
2014-07-19 20:24:55 -04:00
Tom Rothamel be17f9cc6b Nearest neighbor filtering.
This takes the form of the "nearest" transform property. When the
transform property is true, blits use nearest-neighbor filtering.
2014-07-19 00:05:56 -04:00
Tom Rothamel bdf788b5eb Add config.adjust_view_size.
This is optionally a function that returns the size of the OpenGL
viewport in which Ren'Py draws the game. Having this a callback makes
it possible to constrain the sizes of the game window.

For example, this makes it possible to limit the viewport to integer
multiples of the starting window size, as requested in #406.
2014-07-18 23:25:33 -04:00
Tom Rothamel 27cd90d6db Merge pull request #409 from kyouryuukunn/fix_doc
fix doc
2014-07-18 21:24:03 -04:00
Tom Rothamel 60b8ee46a1 Add renpy.count_{,seen_}_dialogue_blocks().
These are functions to count the number of dialogue blocks and the
number of seen dialogue blocks in the game. This makes it possible
to give an indication of how much of the game text the player has
seen.
2014-07-18 00:07:08 -04:00
Tom Rothamel 7e533fbb8f Fix regression in the handling of insensitive buttons.
The focusable field was not being set correctly, which made the button
participate in the focus mechanism and get the idle background when
it should have been insensitive.
2014-07-17 22:57:51 -04:00
Tom Rothamel 329ff9fc5c Clean up last merge a bit. 2014-07-16 22:02:44 -04:00
Tom Rothamel 980104b35e Merge pull request #377 from HikkeKun/master
Small fix for newline_indent behavior.
2014-07-16 21:48:50 -04:00
Tom Rothamel e51000c947 Fix name conflict in android code. 2014-07-16 21:46:06 -04:00
Tom Rothamel ef69a69a3f Limit when we supply the image parameter to the say screen.
It's normally only used for compatability with older games, and
isn't documented, nor is is present in the say screen.
2014-07-16 21:17:32 -04:00
Tom Rothamel c4880e33f3 Add parameter lists to screens in documentation and screens.rpy.
This is to make everything conform to the new best practices.
2014-07-16 21:09:55 -04:00
Tom Rothamel 00d3da2040 Fix two bugs in lint.
Fixes #415, in which show would check all attributes, when partial
would do.

Fixes #416, in which lint would check disabled old_substitutions.
2014-07-15 23:34:16 -04:00
Tom Rothamel 895350ed4d Limit scope of used screens with parameters.
Used screens that take parameters now run isolated from their parent
context. This lets us treat global const variables as constant,
without having to worry about the parent scope redefining them.
2014-07-15 22:53:25 -04:00
Tom Rothamel f97b59c414 sl2: Take args and kwargs into account when finding a screen to reuse. 2014-07-14 23:36:28 -04:00
Tom Rothamel 62e85b728c sl2: Do not treat screen parameters as constant.
Our definition of constant includes field access, indexing, etc. Since
a screens parameter might be mutable (a list, for example), we can't
treat it as const in the general case.
2014-07-14 23:34:08 -04:00
Tom Rothamel ead4e44d80 sl2: Give constants to parameterized screens.
We can analyze parameterized screens more thoroughly than
non-parameterized screens, since the parameters limit what can
be overridden in the screens' scope.
2014-07-13 19:56:14 -04:00
Tom Rothamel 0b5a54f0f8 Deal with problems that occur when we have no glyphs in a line. 2014-07-13 17:03:50 -04:00
Tom Rothamel 626981c349 Do not call the DynamicDisplayable function on per_interact.
It's not necessary, and can cause problems since st and at are not
correct.
2014-07-13 16:13:31 -04:00
Tom Rothamel bed9699983 sl2: Only treat a function as pure if it's also const.
This lets us redefine a const function and get away with it.
2014-07-13 01:10:01 -04:00
Tom Rothamel dc97bdb194 sl2: Extend local/global const analysis to slast.
This brings us to the point where we can run the launcher using
the local/global const analysis.
2014-07-13 00:17:15 -04:00
Tom Rothamel f6df843499 sl2: More work to distingush local const from global const. 2014-07-12 21:07:48 -04:00
Tom Rothamel 46ba33dde1 iap: Add missing import. 2014-07-11 23:59:35 -04:00
Tom Rothamel 1a969be8fd iap: Separate product names and identifiers.
Each product has a name, used to identify it. This name may be
different from the names used in the various app stores, which can be
specified independently.
2014-07-11 23:42:22 -04:00
Tom Rothamel c8de62c682 iap: Bugfixes. 2014-07-11 23:29:55 -04:00
Tom Rothamel 4197f10d18 Fix link to keytool. 2014-07-11 08:54:35 -04:00
Tom Rothamel c403d13119 iap: Start work on high-level IAP framework.
This code runs, but hasn't been tested yet.
2014-07-10 23:50:37 -04:00
Tom Rothamel 9b4ec3206c Merge pull request #413 from kyouryuukunn/gallery_nav
enable customizing the look of gallery navigation
2014-07-09 20:35:54 -04:00
kyouryuukunn 61da5d93ec rename gallery_nav to gallery_gavigation 2014-07-10 08:17:20 +09:00
kyouryuukunn 1486932b49 enable customizing the look of gallery navigation 2014-07-10 08:08:53 +09:00
Tom Rothamel 4e5199b6a1 Add gallery testcase. 2014-07-08 18:18:38 -04:00
Tom Rothamel 2e8494a2c8 Re-prepare screens when rebuilding styles. 2014-07-08 18:18:12 -04:00
Tom Rothamel f753db5862 sl2: Introduce three levels of const-ness.
This lets us distinguish compile-time constants from expressions
that are const within a single screen.
2014-07-08 18:11:37 -04:00
kyouryuukunn 18d4039aa1 Merge pull request #411 from kyouryuukunn/update_japanese
update japanese
2014-07-08 19:32:12 +09:00
kyouryuukunn 1125cc4b32 update japanese 2014-07-08 19:29:39 +09:00
Tom Rothamel 137e71c461 Fix comparison of gallery actions. 2014-07-07 23:10:29 -04:00
Tom Rothamel 027099daad Deal with the first image in gallery button being locked.
Fixes #410, and adds a test case for the gallery.
2014-07-07 23:08:50 -04:00
Tom Rothamel c6472da521 Update changelog.
Conflicts:
	sphinx/source/changelog.rst
2014-07-06 18:01:42 -04:00
Tom Rothamel aedd0273a4 Ignore .rpyc files that cannot be loaded.
This makes it possible to version down if the .rpy file exists and
do not use any newer features.
2014-07-06 17:56:29 -04:00
Tom Rothamel 6872f3db62 Revert parameterization of launcher screens.
We want to be able to pass in arbitrary arguments, so we can sub
them into text.
2014-07-06 00:24:27 -04:00
kyouryuukunn 8311fafeb4 fix doc 2014-07-06 12:25:12 +09:00
Tom Rothamel 7cba90c0d0 Add the selected parameter to the common screen. 2014-07-05 21:31:36 -04:00
Tom Rothamel 36c9df4353 Distribute the project given to android_build.
This fixes a bug where we would distribute the current project
instead of the one supplied on the command line, causing things
not to work.
2014-07-05 20:26:07 -04:00
Tom Rothamel 4705aa2b6f sl2: Fix fixed.
The SL fixed statement was calling renpy.display.layout.Fixed with
the layout parameter. Since Fixed also supplied a layout parameter
we'd get a crash.
2014-07-05 10:19:06 -04:00
Tom Rothamel 5ae2ae3075 Remove constant offsets from video timestamps.
We had previously been assuming the audio started at 0, while
respecting the video PTS. If the PTS of the first video frame was
non-zero, this would lead to the video being delayed behind the audio
and never catching up.

Fixes #386.
2014-07-04 21:16:01 -04:00
Tom Rothamel b45998fdec sl2: Fix FieldValue equality. 2014-07-03 19:15:36 -04:00
Tom Rothamel 4c273f6a3b sl2: Fix analysis of Python if statements. 2014-07-03 19:15:19 -04:00
Tom Rothamel 0098a41633 sl2: Version the screen language cache.
This ensures that when we prepare screens - such as after a language
change - the cache is dropped. If we don't do this, sl2 can use old
values for displayable arguments and const displayables.
2014-07-02 22:03:20 -04:00
Daniel Luque 20b80bb706 project to lowercase 2014-07-02 12:08:28 +02:00
Daniel Luque 3327378d4f Updated spanish/preferences.rpy 2014-07-02 12:03:19 +02:00
Daniel Luque 7cc4820e96 Updated spanish/front_page.rpy 2014-07-02 11:59:40 +02:00
Tom Rothamel 725ba33062 Merge pull request #403 from kyouryuukunn/fix_MusicRoom
Fix selected status in musicroom.
2014-07-01 23:31:31 -04:00
Tom Rothamel f85b13642b Merge pull request #325 from kyouryuukunn/list_of_action
If a list of Actions contains SensitiveIf or SelectedIf, those take precedence over other actions.

This also introduces the new SensitiveIf action.
2014-07-01 22:44:07 -04:00
Tom Rothamel 95dd481b3a Rename Chinese_Simplified -> simplified_chinese.
This makes the naming similar to the other languages we support.
2014-07-01 22:36:52 -04:00
Tom Rothamel 479a13f5fc Remove text from Chinese translation, per:
https://github.com/renpy/renpy/pull/365#issuecomment-44358481
2014-07-01 22:33:01 -04:00
Tom Rothamel 1fb9fe7bb8 Remove TODOs from simpified chinese translation. 2014-07-01 22:32:29 -04:00
kyouryuukunn 3daae9b0f0 add SetCharacterVolume 2014-07-02 11:28:41 +09:00
Tom Rothamel 4fa044fbc0 Remove +x bit from Chinese translation. 2014-07-01 22:22:05 -04:00
Tom Rothamel 2c676c2fc2 Fix license on DroidSansFallback.ttf.
According to

    https://github.com/android/platform_frameworks_base/tree/master/data/fonts ,

the Droid fonts are under the Apache license.
2014-07-01 22:21:07 -04:00
Tom Rothamel d0ad2d924f Merge pull request #365 from huanxuantian/system-translations-chinese
Chinese (Simplified) translation of launcher.
2014-07-01 22:17:57 -04:00
Tom Rothamel 02a1447837 The voice system should ignore interactions caused by window
show/hide/auto.

Based on a pull request by kyouryuukunn.
2014-07-01 22:03:45 -04:00
Tom Rothamel 2422e2c477 Merge pull request #360 from kyouryuukunn/reduce_volume_in_voice
reduce bgm volume during voice playing
2014-07-01 21:49:35 -04:00
Tom Rothamel 2ae0592486 Merge pull request #397 from renpy/template-replace-symlink
Copy target files of symbolic links
2014-07-01 21:47:26 -04:00
Tom Rothamel 56fc7f8603 Report autoreload as part of the window title. 2014-07-01 21:32:59 -04:00
Tom Rothamel dbe1ccc29e Merge pull request #383 from kyouryuukunn/fix_doc
fix doc
2014-06-30 22:30:15 -04:00
Tom Rothamel 02e2916a82 Merge pull request #401 from renpy/my-tts
config.tts_function to support user defined TTS processor
2014-06-30 22:25:09 -04:00
Tom Rothamel 2e6a836e2d Mark less names as const.
Do not mark transforms that aren't intended for use in screens - but
may have names that would be common for screen parameters - as const.

This should improve compatibility with older screens.
2014-06-30 22:22:41 -04:00
Tom Rothamel 5f671d9990 Ignore profile_screen.txt when distributing. 2014-06-30 21:50:58 -04:00
Tom Rothamel 4286cdca0e Make the parameters to the default screens.rpy to be explicit. 2014-06-30 21:49:22 -04:00
Tom Rothamel 6793a176e0 Launcher screens take an explicit parameter list.
This fixes a problem where sl2 was considering the "default"
parameter const.
2014-06-30 21:47:07 -04:00
Tom Rothamel 4f790bdc11 Properly mark parameters as non-const. 2014-06-30 21:46:45 -04:00
Koichi Akabe cc841c5f52 Move the process managiment into default_tts_function 2014-07-01 02:06:08 +09:00
Koichi Akabe 53d3039ee8 Add tts_function config to support user defined TTS function 2014-06-30 23:58:13 +09:00
Tom Rothamel f2d69c078e Ignore tmp/ directory when navigating .rpy files. 2014-06-30 00:13:07 -04:00
Tom Rothamel ce76ab25f6 Include Ren'Py with android distributions.
RAPT will now use this version of Ren'Py, which can include patches
by the creator.

Fixes #368.
2014-06-30 00:03:57 -04:00
Tom Rothamel a8c0cc096c Add some self-voicing support to the launcher. 2014-06-28 21:55:26 -04:00
Tom Rothamel 60a6f6adfc Add a large-fonts mode to the launcher.
Fixes #399.
2014-06-28 21:43:17 -04:00
Tom Rothamel c471e3ff26 Generate lists of const and pure variables. 2014-06-28 21:12:07 -04:00
Tom Rothamel 249ebb8b0c sl2: Flag more things pure. 2014-06-28 17:19:43 -04:00
Tom Rothamel 24de1990ce Fix typo. 2014-06-28 17:18:41 -04:00
Tom Rothamel 8cac7510ee Invalidate, rather than redraw, on Transform.set_child.
This prevents a redraw from unconditionally occuring when the
child is changed - we only want the change to occur if we're
not already in a redraw.
2014-06-28 00:10:01 -04:00
Tom Rothamel fae51e39bd sl2: Make sl2 the default screen language. 2014-06-27 23:07:31 -04:00
Tom Rothamel 4c94285195 sl2: Analyze screen parameters. 2014-06-27 22:58:44 -04:00
Tom Rothamel 0a6797340f sl2: Let the user dump the results of const analysis. 2014-06-27 18:15:03 -04:00
Tom Rothamel e3f2c70144 sl2: Make defines and transforms pure.
They should be, and this should help make more things const.
2014-06-27 17:42:48 -04:00
Tom Rothamel 6c97478a81 sl2: Flag renpy.<name> as pure functions, when appropriate. 2014-06-27 09:44:37 -04:00
Tom Rothamel 738321cc4e sl2: Pure functions should also be constants. 2014-06-27 09:23:22 -04:00
Koichi Akabe 2990efac7a Copy target files of symbolic links 2014-06-27 21:48:16 +09:00
Tom Rothamel 31419d103b sl2: Perform const/not-const analysis on Python code. 2014-06-26 22:50:19 -04:00
Tom Rothamel 57b6d6124b Keep the source of PyCode objects around.
We're no longer as memory-limited as we once were, and this makes
the source available for code analysis, when necessary.
2014-06-26 22:49:17 -04:00
Tom Rothamel a01f3b8432 sl2: Analyze sl2 statements (not including python). 2014-06-25 17:29:48 -04:00
Tom Rothamel 76477f103e sl2: Frameworks for fixed-point analysis.
This doesn't do anything yet, but provides the structure for constant
analysis.
2014-06-24 22:07:48 -04:00
Tom Rothamel 394c19b9c2 sl2: Encapsulate code analysis into a single object.
This is in preparation for analyzing const/non-const inside a screen.
2014-06-23 22:19:04 -04:00
kyouryuukunn c159dcce30 pass show_args to 'nvl' screen 2014-06-23 23:22:55 +09:00
Tom Rothamel 50d8f356e2 sl2: Fix debug. 2014-06-22 23:38:17 -04:00
Tom Rothamel 366257119b sl2: Screen profiling debugging.
This entails writing information about the decisions we make when
creating the displayables comprising the screen.
2014-06-22 23:32:41 -04:00
Tom Rothamel 64159e840b Basic framework for profiling screen execution. 2014-06-22 22:02:32 -04:00
Tom Rothamel 680131beb3 Simplify ScreenDisplayable._hide and make it work with sl2. 2014-06-21 10:57:31 -04:00
Tom Rothamel 857a5a06b5 sl2: Migrate grab. 2014-06-20 23:03:33 -04:00
Tom Rothamel 4dab5e849b Allow RevertableDict to be past as the properties argument to Style.
Fixes #323.
2014-06-19 21:45:45 -04:00
Tom Rothamel 925cd35947 Merge pull request #384 from kyouryuukunn/Function
Add Function action, which calls a function with arguments.
2014-06-19 21:14:24 -04:00
Tom Rothamel 17b77dcce2 Remove spurious code. 2014-06-19 08:40:02 -04:00
Tom Rothamel 96260b4ec8 sl2: Pass default keyword arguments to the displayable.
This is required so we can pass the layout argument to MultiBox,
which makes the distiniction between fixed, horizontal, and vertical
layouts when the style does not.
2014-06-18 23:08:17 -04:00
Tom Rothamel 16d361c714 Document self-voicing, generate doc includes. 2014-06-18 20:23:42 -04:00
Tom Rothamel 738f93b156 tts: Speak bar text immediately. 2014-06-18 00:19:02 -04:00
Tom Rothamel 23b03ea790 tts: Allow the user to unfocus all widgets.
This will read out the default text.
2014-06-17 23:45:20 -04:00
Tom Rothamel 6a27c02a9b tts: Add a new linear focus ordering.
This allows one to navigate through all of the displayables on the
screen with the cursor keys, without having to do 2-d navigation,
which is what Ren'Py does by default.
2014-06-17 23:35:14 -04:00
Tom Rothamel d1f6132637 tts: Add self-voicing text to file actions. 2014-06-17 20:29:01 -04:00
Tom Rothamel c612db1551 tts: Read non-prefs labels.
We want to read yesno_label, for example.
2014-06-17 20:28:56 -04:00
kyouryuukunn d5e8e70d7c fix 2014-06-17 12:58:57 +09:00
kyouryuukunn 724cae119b update 2014-06-17 12:56:07 +09:00
Tom Rothamel 845d318a44 tts: Make nvl-mode compatible with tts.
This involves using alt to disable speaking of already-spoken text.
2014-06-16 21:36:14 -04:00
Tom Rothamel 28ec3f2326 Directly invoke platform-specific TTS commands.
Pyttsx would try to invoke TTS from the python process, which
required a ton of dependencies. (Pyobjc and win32api) We now
use subprocess to run platform-specific executables, passing
the text to speak on the commands line.
2014-06-16 21:31:34 -04:00
Tom Rothamel f7e763f8a8 tts: Make self voicing a preference. 2014-06-15 22:52:03 -04:00
Tom Rothamel 8e5c2a1532 tts: Make the alt property available in sl1 and sl2. 2014-06-15 20:18:00 -04:00
Tom Rothamel 077ae1b609 tts: Self-voicing improvements.
* Generate alt text only when voice is enabled.
* Allow the text of the children to be interpolated into alt text.
* Alt text for the preferences screen.
2014-06-15 15:56:18 -04:00
Tom Rothamel 179301421c tts: Initial implementation of self-voicing. 2014-06-15 13:23:46 -04:00
Tom Rothamel 88439529e4 Merge pull request #361 from oshi-shinobu/renpy-it
Added Italian translations for launcher and template
2014-06-15 11:34:11 -04:00
Tom Rothamel 74b7cbe06c Make SL2 screens copy displayables during transitions.
This required several fixes, including making sure copy_on_change works
and copying constant displayables if a change to the scope causes a Text
to change its contents.
2014-06-14 22:38:29 -04:00
Tom Rothamel 4d8144d320 Fixes to make transitions and screens work together.
This currently only works for sl1 screens, as sl2 screens are
over-agressively reusing displayables.
2014-06-14 20:56:04 -04:00
Tom Rothamel 251cfacb22 Implement ScreenDisplayable._in_old_scene(). 2014-06-13 18:22:57 -04:00
Tom Rothamel b9a47a2bb8 Merge pull request #389 from renpy/fix-doc-vbk
Fix typos in the documentation
2014-06-13 13:08:10 -04:00
Koichi Akabe 9a06636789 Fix many typos in the documentation
Following documents are checked:
* skins
* sprites
* statement_equivalents
* store_variables
* style
* style_properties
* text
* thequestion
* thequestion_nvl
* trans_trans_python
* transforms
* transitions
* translation
* udd
* updater
* voice
2014-06-14 01:43:21 +09:00
Koichi Akabe 413c2dee85 Fix many typos in the documentation
Following documents are checked:
* label
* language_basics
* license
* menus
* modes
* movie
* nvl_mode
* other
* persistent
* problems
* python
* quickstart
* reserved
* rooms
* save_load_rollback
* screen_actions
* screen_python
* screen_special
* screens
* side_image
2014-06-14 01:21:12 +09:00
Koichi Akabe a7000ffb14 Fix many typos in the documentation
Following documents are checked:
* developer_tools
* dialogue
* display_problems
* displayables
* displaying_images
* distributor
* drag_drop
* editor
* environment_variables
* file_python
* incompatible
* index
* input
* keymap
2014-06-14 00:41:47 +09:00
Koichi Akabe 76b7b471a4 Fix many typos in the documentation
Following documents are checked:
* android
* android-packaging
* atl
* audio
* build
* cds
* changelog
* character_callbacks
* conditional
* config
2014-06-14 00:11:50 +09:00
Renoa 97000fd87a Update screens.rpy
fixed the path where Ren'Py had the wrong path for the arabic font AdvertisingBold.ttf which created an error message while trying to access "Options" from the inside the game.
2014-06-13 16:27:19 +03:00
Tom Rothamel f639a201a6 Add ui.implicit_add for internal use.
This is a function that takes displayables that are being implicitly
added to a widget by ChildOrFixed. We do not want to copy transforms
added this way, which we had been doing, causing problems.
2014-06-13 00:35:17 -04:00
Tom Rothamel b63be138d5 Mark buttons with an action (but not clicked) as Focusable.
This lets Ren'Py transfer focus to them at the start of an interaction,
preventing hovered actions from being called repeatedly.
2014-06-12 23:30:44 -04:00
Tom Rothamel 55a45c54be Further optimization. 2014-06-12 12:27:36 -04:00
Tom Rothamel 2fc9c3d4c0 Optimize MultiBox._in_old_scene.
We now only use the newly-created boxes if at least one displayable
has changed. Otherwise, we don't bother, preferring to use the old
box (which likely has been cached).
2014-06-12 01:00:30 -04:00
Tom Rothamel ef9cffdbf6 Implement MultiBox._in_old_scene(). 2014-06-12 00:41:14 -04:00
Tom Rothamel c3a87909ce Add Displayable._in_old_scene().
This is a method that can copy layers and screens when they're being
used as the old_widget in a transition.
2014-06-11 18:37:34 -04:00
Koichi Akabe 3d553e31f0 Fix typo in doc: translatoon -> translation 2014-06-11 17:42:32 +09:00
Tom Rothamel fa1d3b7e21 sl2: Implement copy_on_change functionality.
This will copy displayables when their children change, which will
eventually let us use transitions to show changes in screen state.
2014-06-10 17:52:36 -04:00
Tom Rothamel e6dc0aa644 Merge pull request #385 from LuqueDaniel/update-es
Update-es
2014-06-09 08:29:05 -04:00
Daniel Luque 0994579c2a Added new string 2014-06-09 12:29:27 +02:00
kyouryuukunn 45e1854786 add Function Action 2014-06-09 17:54:50 +09:00
kyouryuukunn 7897a9c369 fix doc 2014-06-09 17:26:45 +09:00
Tom Rothamel 7fa4517439 sl2: Only pass scope to a displayable it it uses the scope. 2014-06-08 10:37:37 -04:00
Tom Rothamel 8a69b0c03f play sound / queue sound should respect loop parameters.
Fixes #378.
2014-06-07 21:02:58 -07:00
Tom Rothamel 0a3ca8bc3a Prompt the user to back up their project.
Brought to you by citizens against data loss.
2014-06-07 21:24:35 -04:00
Tom Rothamel ab4951d08c Window show None should not use config.window_show_transition.
And similary for window hide None and config.window_hide_transition.

Fixes #381.
2014-06-06 21:53:28 -07:00
Tom Rothamel c7de8a8b50 Merge pull request #379 from kyouryuukunn/fix_doc
fix doc about LiveComposite
2014-06-06 23:08:42 -04:00
Tom Rothamel 635ccdf130 Add the uses_scope property to Text.
This tells us if we need to update the text when the scope changes.
2014-06-05 23:21:10 -04:00
kyouryuukunn 246888c794 fix doc about MoveTransition 2014-06-05 16:50:31 +09:00
Tom Rothamel 845d78df2e Properly encode unicode strings in exceptions.
Previously, if a non-ascii unicode string was in an exception,
we'd fail to encode the exception and crash.
2014-06-05 00:28:28 -04:00
Nobody Really a325ffff22 Fixed very minor typos 2014-06-04 15:50:46 +02:00
kyouryuukunn 6372563998 fix doc about LiveComposite 2014-06-04 21:16:36 +09:00
Nobody Really 91c46649e1 Removed TODO and duplicates, added README.html 2014-06-04 00:07:52 +02:00
Helloise 5f920b5b0a Small fix for newline_indent behavior.
Now should work as described in documentation ( http://www.renpy.org/doc/html/style_properties.html#style-property-newline_indent )
2014-06-03 22:39:00 +04:00
Tom Rothamel 689d3acc63 Use list_logical_lines to scan for translations.
This will properly handle comments, and so fixes #363.
2014-06-03 08:42:12 -04:00
Tom Rothamel 6fe2f8afa2 Fix queuing of unicode filenames.
Fixes #369, again.
2014-06-02 22:33:46 -04:00
Tom Rothamel 776ea299c3 Properly format style names for lint.
Fixes #367.
2014-06-02 18:16:15 -04:00
Nobody Really 1580502949 Fixed screens.rpy 2014-06-02 20:27:33 +02:00
Tom Rothamel c092d687d7 Transform: Fix and optimize argument parsing.
Transform had a problem parsing arguments with underscores in the
name, like transform_anchor. That's been fixed.

Transform also did a lot of allocation for rare cases, such a
Transform being given an argument with a style prefix,
like hover_xpos. This has been optimized in order to reduce
the amount of allocation required.
2014-06-01 23:42:30 -04:00
Tom Rothamel a5301ec50c Add an 'events' transform property.
This determines if events will be passed to the child of the
transform. This allows one to prevent events from being passed
to the old_widget in an ATL transform.
2014-06-01 22:49:26 -04:00
Tom Rothamel d0e01f5c9c Transform.set_child should update the transform's children.
This lets us pass events to a new child when the child changes.
2014-06-01 22:28:03 -04:00
Tom Rothamel c717c42b13 Encode PSS_play extension using UTF-8.
This prevents a crash that occurs when a unicode filename is passed
to PSS_play.

Fixes #369, thanks to everyone for tracking this down.
2014-06-01 10:39:24 -04:00
Tom Rothamel 65ed8f87b0 Get rid of _predict_screens.
This has been obsoleted by the new code.
2014-05-31 22:59:12 -04:00
Tom Rothamel 0f2b67745c New functions for continuously predicting displayables and screens. 2014-05-31 22:56:32 -04:00
Tom Rothamel 30ce6b5033 Add __hash__ to Image and Solid. 2014-05-31 22:07:22 -04:00
Tom Rothamel d6768da6c8 Predict show screen and call screen statements with arguments.
This is a behavior change, and a potentially dangerous one, since it
could execute arguments with side effects multiple times. But those
should be rare, this provides a nice performance boost, and users
will be able to disable prediction using the new nopredict clause.
2014-05-30 21:29:22 -04:00
Tom Rothamel 6c8e997cf2 Fix prediction of argument-containing screens.
We were passing the arguments incorrectly, which prevented them from
working.
2014-05-30 21:28:49 -04:00
Tom Rothamel 62458fa036 Fix regression: Set Text.dirty before we use it. 2014-05-30 08:31:28 -04:00
Tom Rothamel bcf47fd43a Fix prediction of screens without arguments.
Fixes #370, at least partially.
2014-05-29 23:17:45 -04:00
Tom Rothamel 39b168eda9 Do not wait for an event to occur to proceed with prediction. 2014-05-29 23:17:25 -04:00
Tom Rothamel 80130db047 Do not redraw Text if it hasn't been drawn at least once. 2014-05-29 23:09:27 -04:00
Tom Rothamel 2942ddc53d Merge pull request #373 from Shizmob/master
Only consider unique image attributes when determining best match.
2014-05-29 21:19:53 -04:00
Shiz b127da3a41 Only consider unique image attributes when determining best match. 2014-05-30 03:18:27 +02:00
Tom Rothamel 0375b7cf1a Merge pull request #372 from Shizmob/master
Restart interaction when MixerValue value changes.
2014-05-29 17:40:09 -04:00
Shiz 294e6611ef Restart interaction when MixerValue value changes.
This allows UIs which rely on the mixer value for other UI elements to
be properly updated as the value changes.
2014-05-29 23:37:32 +02:00
Tom Rothamel c03d1fddd1 Fix dump of non-ASCII defines. 2014-05-28 22:47:35 -04:00
Tom Rothamel 59e3eecb92 sl2: Ensure exceptions in screens work.
This means clearing out the various gui stacks if an exception occurs.
2014-05-28 21:45:52 -04:00
Tom Rothamel 0e11a964cc Fix XScrollValue and YScrollValue.
These have been broken since we started deferring get_adjustment()s.
2014-05-28 21:34:14 -04:00
Tom Rothamel 3744a729b3 Make renpy.get_widget() accept a ScreenDisplayable.
This makes it possible to do:

    self.screen = renpy.current_screen()

and later:

    renpy.get_widget(self.current_screen, "name")
2014-05-28 21:33:25 -04:00
Tom Rothamel 9dafe56266 Allow non-ascii identifiers to be used as character names.
There are a couple of caveats here, since non-ascii identifiers
can't be used in python code.

* The names must be defined with the define statement.
* The names can't be accessed in python code.

Stil, something like:

    define 彁 = Character("Boy who is not able satisfactorily to explain what a Hrung is, nor why it should choose to collapse on Betelgeuse Seven")

    彁 "Don't forget your towel."

should work.
2014-05-27 22:42:39 -04:00
Tom Rothamel a705f46018 sl1: Fix label and textbutton.
Now that we're creating the widgets directly, we need to apply the
function wrapper to the results of _label and _textbutton.
2014-05-27 21:13:56 -04:00
Tom Rothamel 1bf516bd79 Fix transform_anchor to work with anchors of type absolute. 2014-05-27 19:14:25 -04:00
Tom Rothamel 533b22e9d8 Remove accidentally included text. 2014-05-27 17:43:22 -04:00
huanxuantian 94e1681802 Chinese_Simplified translation for ren'py launcher 1.3c release
orgin version:0.98a
current version:1.3c
least update date:2014-5-27
2014-05-27 19:05:44 +08:00
Tom Rothamel bee2a91d3d sl2: sl2viewport no longer uses ChildList. 2014-05-26 23:50:18 -04:00
Tom Rothamel 1c80515112 sl2: More optimizations. 2014-05-26 23:34:19 -04:00
Tom Rothamel 6eec5cd454 sl2: Various minor optimizations 2014-05-26 23:11:02 -04:00
Tom Rothamel 263a2d4c51 sl2: Allow the use of cprofile to profile the screen implementation. 2014-05-26 22:27:28 -04:00
Tom Rothamel 042a87b2ce sl2: Prepare screens ahead of time. 2014-05-26 21:58:19 -04:00
Tom Rothamel c823bef1c6 Add the ability to profile various phases of a screen's life. 2014-05-26 21:15:40 -04:00
Tom Rothamel c7e5856fdb sl2: Store the location the displayable was created at. 2014-05-25 23:42:52 -04:00
Tom Rothamel 1d3a8a0459 sl2: Fix cache.children issues. 2014-05-25 23:42:08 -04:00
Tom Rothamel 77ae9668b8 sl2: Store the children of displayables in the cache.
This means we don't have to re-add them all the time, and prevents
clear from being called for no-child displayables.
2014-05-25 22:43:53 -04:00
Tom Rothamel a964d2fc9a Merge pull request #355 from kyouryuukunn/fix_doc8
Fix get_playing doc
2014-05-25 10:09:05 -04:00
kyouryuukunn 27ecb992e9 fix doc 2014-05-25 23:07:41 +09:00
Tom Rothamel fd3c89c3ff Allow ImageButtons to not have children.
Since ImageButtons do not use their child, it makes sense to not
require one - especially since _clear() will occasionally remove
it.
2014-05-24 23:35:20 -04:00
huanxuantian c7bae1eee8 Signed-off-by: huanxuantian <huanxuantian@msn.cn>
Chinese_Simplified translation for ren'py launcher
Created by huanxuantian
Translate by huanxuantian
Translation version 1.3.b
update to github on 2014-5-25 sun
2014-05-25 09:52:36 +08:00
Tom Rothamel a45df6e964 sl2: Fix regression in imagemap.
The _reuse() method would clear out the fixed during reuse,
which would remove the ground from the imagemap.
2014-05-24 17:48:43 -04:00
Tom Rothamel 905b0e0534 Simple expressions take words as field names.
This lets one use a keyword (like transform) as a field name.
2014-05-23 22:00:34 -04:00
Tom Rothamel bfeae69e5e Screen language keywords (incl. at) take comma separated expressions. 2014-05-23 21:59:38 -04:00
Tom Rothamel 1e0b224ccc Fix sl1 and sl2 pass statements.
Neither ever worked, despite being part of SL design from the
beginning.
2014-05-22 23:00:29 -04:00
Tom Rothamel 1fc90fb3b5 sl2: Add slast.SLOn.
Since on doesn't create a displayable, it makes sense to handle it
differently rather than complicating SLDisplayable.
2014-05-22 22:18:45 -04:00
Tom Rothamel bebbc73210 Update screens at most once per interaction. 2014-05-21 23:52:54 -04:00
Tom Rothamel 9615971e2e Store and use the cache of predicted screens.
This will generally let us show the screen a lot faster.
2014-05-21 23:49:25 -04:00
Tom Rothamel 55f8782da9 Fix all errors and warnings reported by pydev 3.5.
The predefinition directory (predef) needs to be added to the Ren'Py
interpreter in PyDev for this to work.
2014-05-21 22:13:11 -04:00
Tom Rothamel 651da7e487 Add shift+P to profile once.
This restarts the interaction, and then reports the amount of time
it took to do so. This can give us an idea of how much (if any)
performance is being improved by the new screens code.
2014-05-21 09:22:48 -04:00
Tom Rothamel 248793923a sl2: Fix bar handling.
We have to figure out the style in the sl2 code so the context is
available to the code that gets the bar style.
2014-05-20 23:18:39 -04:00
Tom Rothamel 66e07d6e9b sl2: Fix handling of tuple patterns in SLFor. 2014-05-20 21:28:53 -04:00
Tom Rothamel 079d311228 sl2: Use eval and exec directly in execute and keywords code.
For performance reasons.
2014-05-19 23:42:53 -04:00
Tom Rothamel afb1da6248 sl2: Fix const on if statements. 2014-05-19 23:34:13 -04:00
Tom Rothamel 72c1aa0f8d Improve profiling and control screen prediction with an envvar. 2014-05-19 23:32:51 -04:00
Tom Rothamel b4b7fcfc26 Mark config and style as constants. 2014-05-19 23:32:21 -04:00
Tom Rothamel 372d8cb748 Fix __repr__ on displayable - encode unicode. 2014-05-19 23:31:06 -04:00
Tom Rothamel 6ee38b1817 Fix --compile. 2014-05-19 23:30:39 -04:00
Tom Rothamel ee24f4f96d Import os before running os.startfile. 2014-05-19 18:49:37 -04:00
Tom Rothamel 16ae08345e A regression prevented insensitive buttons from working. 2014-05-18 23:11:33 -04:00
Tom Rothamel e651810ade Do not attempt to resize a 0-width or 0-height displayable.
This prevents a divide-by-zero.
2014-05-18 21:10:39 -04:00
Tom Rothamel ec59eef066 sl2: Make the version of screen language used configurable.
For now, this is controlled by an environment variable.
2014-05-18 20:06:14 -04:00
Tom Rothamel f8f147ad30 Add --compile and --lint arguments.
--compile compiles the script before doing anything else.

--lint is a backwards compatable way of invoking the lint
command. We've been parsing it as an argument for a while, but it
didn't work.
2014-05-18 17:41:57 -04:00
Tom Rothamel d50c922c87 sl2: Transforms take a child parameter, while transforms just take an argument. 2014-05-17 22:21:45 -04:00
Tom Rothamel d0bbf09783 Reset Viewport and Input when first shown.
This supports reuse, by eliminating state state from these
displayables.
2014-05-17 08:57:54 -04:00
Tom Rothamel d69c59beca Get a new adjustment from bars on each interaction.
This lets us reuse the Bar objects, and yet update the object in
the face of changing data.
2014-05-16 23:43:36 -04:00
Tom Rothamel b3a1571038 Evaluate button role and sensitivity per-interaction.
This lets us reuse buttons, and still update the role/sensitivity
as the actions dictate.
2014-05-16 08:46:27 -04:00
Nobody Really d91f9ce376 Added Italian translations for launcher and template 2014-05-16 12:23:38 +02:00
Tom Rothamel ee1295c98b sl2: Implement constant displayables.
These are displayables that have constant arguments and constant
children, and hence where the same displayable can alwaye be used.  We
use a very fast path for these displayables (simply retrieving them
from the cache), and avoid evaluating their children entirely.
2014-05-16 00:05:00 -04:00
Tom Rothamel 94cc959880 sl2: Do not pass keywords intended for a displayable to its parent.
Due to inheritance of SLBlocks, we had the problem that

    frame:
        textbutton "test" xysize (100, 100)

Would pass the xysize parameter to both the textbutton and the frame.
2014-05-15 09:10:05 -04:00
Tom Rothamel 1c7685550d sl2: Use object identity and count in slfor. 2014-05-15 08:41:57 -04:00
Tom Rothamel 37f5738b86 sl2: Update the scope when we reuse a displayable. 2014-05-14 22:56:29 -04:00
Tom Rothamel bde2cf84f7 sl2: Redraw cleared displayables.
If we don't do this, we won't actually show the changes.
2014-05-14 21:57:13 -04:00
Tom Rothamel e393d647f0 Allow auto to take images as well as image filenames. 2014-05-13 18:42:07 -04:00
Tom Rothamel 1d534a6162 Add renpy.image_exists, a function that makes it possible to tell
if an image exists.
2014-05-13 18:11:09 -04:00
Tom Rothamel 0cbc06a241 Make more Displayables comparable. 2014-05-12 22:49:48 -04:00
Tom Rothamel 911f179631 An object should be equal to itself. 2014-05-12 22:11:21 -04:00
Tom Rothamel 043a2c7213 Make styles comparable. 2014-05-12 22:11:05 -04:00
Tom Rothamel 87073bcd0b render cache: use id(d) as the key.
This is needed so we can start defining __eq__ on various
displayables, even when we don't want them being considered the same
by the cache.
2014-05-12 21:17:01 -04:00
kyouryuukunn 9e895e2575 reduce bgm volume during voice playing 2014-05-12 16:13:23 +09:00
Tom Rothamel eec2d6e7d6 Annotate more functions as pure. 2014-05-11 22:04:20 -04:00
Tom Rothamel 44a8128326 The define statement now marks variables as const. 2014-05-11 09:15:47 -04:00
Tom Rothamel 292e24b640 Annotate BarValues for purity and equality. 2014-05-10 23:28:07 -04:00
Tom Rothamel a37c841d16 Merge pull request #341 from kyouryuukunn/DictValue
Add DictValue
2014-05-10 23:15:44 -04:00
Tom Rothamel 878bde34fc Annotate actions for purity and equality. 2014-05-10 22:47:07 -04:00
Tom Rothamel 6e49ed1a15 New renpy.const and renpy.pure functions.
These allow one to declare variables const and functions/classes pure,
for the purpose of sl2.
2014-05-10 22:04:50 -04:00
Tom Rothamel 2c6c97b27a sl2: Pass the main displayable to replaces=. 2014-05-09 21:26:21 -04:00
Tom Rothamel 143cb26ae3 sl2: Add viewport and the concept of a main displayable.
Viewport was broken with sl2, so we now have a compatible
implementation.

Several screen language things are implemented as composite
displayables. For example, a textbutton consists of a Text
and a Button, and a viewport scrollbars "both" consists of
a Side, two Bars, and a Viewport.

The main displayable (stored in _main on the outer displayable) is the
displayable we add children to, and return for get_widget.
2014-05-09 21:18:55 -04:00
Tom Rothamel 2d1af033f8 sl2: Improve reuse.
* SLFor now reuses the cache.
* SLDisplayable no longer clears composite displayables.
2014-05-08 23:56:19 -04:00
Tom Rothamel 1abb87e2a2 sl2: The result of a pure function called with constants is constant. 2014-05-08 23:51:20 -04:00
Tom Rothamel a53eb8b3ce Fix doc typo in queue_event.
Thanks, KiloTango.
2014-05-07 21:59:51 -04:00
Tom Rothamel 26ea3fb14e Fix changelog. 2014-05-07 21:50:55 -04:00
Tom Rothamel 3232620a12 Add 6.17.6 changelog. 2014-05-07 21:38:58 -04:00
Tom Rothamel 28fbf90342 Only enable config.rtl in the launcher iff Arabic is the language.
This is a workaround for #351, which only seems to manifest on certain
Macs, and hence is proving hard to actually fix. At least with this
change, it will only show up when switching to Arabic. (And may not
show up at all, as it may have something to do with filesystem
encodings.)
2014-05-07 20:30:22 -04:00
Tom Rothamel 8f7a2acba5 Extend tkaskdir to handle non-ASCII directories. 2014-05-06 21:53:26 -04:00
Tom Rothamel f50726b5ce Edit a bit. 2014-05-06 21:13:42 -04:00
Tom Rothamel 94d11b0e01 Merge pull request #344 from kyouryuukunn/update_doc
add doc about translations for the launcher
2014-05-06 21:12:04 -04:00
Tom Rothamel 71ef71611b Improve wording of sl/sl2 syntax errors.
Fixes #348.
2014-05-05 21:43:59 -04:00
Tom Rothamel 3da1b368e0 Merge pull request #349 from LuqueDaniel/update-es
Update Spanish translation.
2014-05-05 09:30:40 -04:00
Tom Rothamel 4fea47f3f2 Add Korean translation, by Baekansi. 2014-05-05 09:25:56 -04:00
Daniel Luque 00a92329dd Update launcher/game/tl/spanish/android.rpy 2014-05-05 08:31:38 +02:00
Tom Rothamel fe79eb948f sl2: Reuse displayables where possible.
Reusing a displayable is possible when we realize that the positional
and keyword arguments of the displayable are the same. We can also
reuse the transform if we apply the same transform to the
displayable.
2014-05-04 23:23:41 -04:00
Tom Rothamel e85c0ade0f Add _clear methods to containers.
This facilitates reuse of the underlying displayable.
2014-05-04 21:55:28 -04:00
Tom Rothamel 45c6eb156f sl2: Persist the cache. 2014-05-03 21:09:56 -04:00
Tom Rothamel e45a935c7e sl2: Fix parsing layouts. 2014-05-03 20:19:50 -04:00
Tom Rothamel 094c07ce3c Add screen profiling.
For now, this is intended for Ren'Py development use, so we can
see if sl2 is actually making things faster, as optimizations are
implemented.
2014-05-02 22:39:48 -04:00
Tom Rothamel 1d3a14bc99 Add a German Translation of the launcher. (By NoJoker) 2014-05-02 15:29:27 -04:00
Tom Rothamel 7aa971a978 Add project.json to Arabic template. 2014-05-01 22:46:49 -04:00
Tom Rothamel d0b3ba90f2 Various Arabic fixes. 2014-05-01 22:45:51 -04:00
Tom Rothamel 45b8cb3051 Update documentation for 6.17.5. 2014-05-01 21:22:18 -04:00
Tom Rothamel 4829a32c29 Fix save_directory in arabic translation. 2014-05-01 18:14:46 -04:00
Tom Rothamel e355c451e5 Properly set up the context after a warp occurs. 2014-04-30 18:19:54 -07:00
Tom Rothamel 3301f8c87b Fix --warp.
Fixes #345.
2014-04-30 18:03:40 -07:00
Tom Rothamel 13c4c97e59 Improved memory debugging. 2014-04-29 21:42:21 -07:00
Tom Rothamel 6355e0d623 Re-initialize the cache after shift+R.
Fixes a major memory leak, where textures would be placed in a
stopped cache and never deallocated.
2014-04-29 21:40:40 -07:00
Tom Rothamel 94f0ff71a1 Pause defaults to only setting a checkpoint if delay is not set.
This fixes an issue where renpy.pause(0) would effectively block
rollback, since there would be no time for the rollback to occur.
(The same issue occurs when pausing for a short time.)
2014-04-28 23:26:45 -04:00
kyouryuukunn 3e966d308f add doc about translations for the launcher 2014-04-29 11:52:48 +09:00
Tom Rothamel 2c49d5902d Add/use the renpy.object.Sentinel class.
This is a class that can be used to create sentinel objects. Even if
we pickle and unpickle an object of this class, it remains the same
object, as far as the 'is' operator is concerned.

This fixes a problem with the shift+R module backups. (The same
problem 9dec1f32ab tried to fix.)
2014-04-28 22:17:43 -04:00
Tom Rothamel 816d60eae0 Merge pull request #333 from renoa/master
add arabic translation
2014-04-28 17:47:32 -04:00
Tom Rothamel be258d878d Merge pull request #335 from kyouryuukunn/fix_doc3
fix doc
2014-04-28 17:46:36 -04:00
Daniel Luque 92c4c68942 Add new tl 2014-04-28 14:30:07 +02:00
kyouryuukunn fc25414deb Merge pull request #343 from kyouryuukunn/update_japanese_template
Update japanese template
2014-04-28 20:03:11 +09:00
kyouryuukunn 137e8ba77d update the japanese translation for launcher 2014-04-28 20:01:17 +09:00
kyouryuukunn 0a26eeaa7e update japanese_template 2014-04-28 18:58:28 +09:00
Tom Rothamel 9dec1f32ab Do not backup / restore flag singletons.
The reload backup process would back up singletons, but not functions
and methods that used those singletons as default arguments. The
result was that the singletons would change identity, but not
the default arguments - and the code using them would fail in
odd ways.

An example problem this caused is
http://lemmasoft.renai.us/forums/viewtopic.php?p=320775#p320757 .
2014-04-27 22:44:34 -04:00
Tom Rothamel 499762aad4 atl: Properly transfer child_st_offset, raw_child, and debug.
The major problem fixed here is one where if a transform was
replaced (like one in a screen would be), it would not know that
the old child was being shown. This would prevent the
"<displayable> with <transition>" ATL construct from doing
anything.

Fixes #340.
2014-04-27 19:52:42 -04:00
Tom Rothamel 6cac00a688 Remove raspi stuff. 2014-04-27 01:40:29 -04:00
Tom Rothamel 37d31a6f85 Add raspberry pi and x11 egl modes.
The raspi one somewhat works (it has problems, such as positioning the
window in the wrong place), but the slowness of the raspi system make
using it problematic.

The x11 mode hasn't been tested.
2014-04-27 01:28:16 -04:00
Tom Rothamel 116d344519 Rename eg_gl to egl_none, since it's really used in cases where we're not managing egl. 2014-04-26 23:13:21 -04:00
Tom Rothamel 6739a9a268 Make it easier to add EGL support. 2014-04-26 14:16:33 -04:00
Tom Rothamel 96058a9de3 Get things building on Raspberry Pi.
Right now, we can run Ren'Py, but at an unusably slow speed.
2014-04-26 13:53:45 -04:00
Tom Rothamel b6e71f20c2 Add a new debug ATL property.
This can be accessed in the Ren'Py internals to dump particular
transforms that are having problems.
2014-04-25 22:04:50 -04:00
Tom Rothamel ebd9274776 Add RENPY_TIMEWARP.
This environment variable, if set, makes time itself run faster or
slower. (Well, at least inside the game.)
2014-04-25 21:41:32 -04:00
kyouryuukunn f3a52917cd add DictValue 2014-04-25 16:57:46 +09:00
Tom Rothamel f24379aec6 sl2: Report tracebacks using the screen lines they originate on. 2014-04-24 19:19:52 -04:00
Tom Rothamel 49fa961502 Do not back up renpy.display.presplash.
This prevents an issue with copying modules that only occurs when
presplash is present.
2014-04-23 21:48:23 -04:00
Tom Rothamel 3abba0c7e9 sl2: Supply location to SLDefault. 2014-04-23 21:46:16 -04:00
Tom Rothamel ab00c6a876 sl2: Annotate the ast nodes with locations. 2014-04-22 23:44:30 -04:00
Tom Rothamel 769a65467a Only change the reported traceback if it is not the proximate cause
of the error.
2014-04-22 19:25:04 -04:00
Tom Rothamel 62c66b3794 Various fixes to the documentation. 2014-04-22 19:20:35 -04:00
Tom Rothamel 19889c7457 Remove unused functions. 2014-04-22 19:08:27 -04:00
Tom Rothamel bc3ee8667c Rewrite tracebacks.
We now use the .report_traceback method whenever it's available to
produce nicer-looking tracebacks. (Previously, we only used it
for the simple tracebacks, and only for Contexts.)
2014-04-21 23:54:05 -04:00
Tom Rothamel d2c6f47299 Break up bootstrap.py.
The traceback code went into renpy.error, while the memory dump code
went into renpy/memory.py.
2014-04-21 22:18:59 -04:00
Tom Rothamel 16a4019a40 raise_at_location: A function that raises a traceback at a given location. 2014-04-20 13:38:32 -04:00
Tom Rothamel ec37eb9a84 sl2: Direct path for use.
This makes the ast of the used screen available to the using screen,
allowing for potential optimizations.
2014-04-20 13:13:57 -04:00
Tom Rothamel 96d4440960 sl2: SLScreen is now a SLBlock.
We also now properly handle parsing SLScreen keywords.
2014-04-20 12:38:15 -04:00
kyouryuukunn 738f939f2e Merge pull request #337 from kyouryuukunn/update_japanese_template
Update japanese template
2014-04-20 22:13:14 +09:00
kyouryuukunn cc4591848f autosave before load 2014-04-20 22:03:57 +09:00
Renoa 57afa2ca46 Update android.rpy 2014-04-20 15:02:49 +03:00
Tom Rothamel 7b3072983f Fix regression in times for children of transformed layers.
The regression was introduced by dd4d3410a6,
and shows up in the Sunrider tutorial battle, when the PACT ships
attack with missiles.

The problem was that we were adjusting the times improperly - using
AdjustTimes to make the adjustment. Instead, we want the MultiBox
containing the layer to make the adjustment (which it does when
layer_name is set). This is because the MultiBox handles start
and animation times that are not the time at which the layer
was shown.
2014-04-19 21:40:56 -04:00
Tom Rothamel b1ae62b45f Add environment variables to skip main_menu and splashscreen.
These are RENPY_SKIP_MAIN_MENU and RENPY_SKIP_SPLASHSCREEN.
2014-04-19 18:48:09 -04:00
Renoa dc80ec27e1 Update common.rpy 2014-04-19 19:41:36 +03:00
Renoa 17ef16b3c3 Update distribute.rpy 2014-04-19 19:31:11 +03:00
Renoa 7fdd823745 Update front_page.rpy 2014-04-19 19:30:56 +03:00
Renoa 1cfba7a745 Update preferences.rpy 2014-04-19 19:30:39 +03:00
Renoa 2942dd3390 Update new_project.rpy 2014-04-19 19:30:13 +03:00
Renoa 3afa5e5944 Update project.rpy 2014-04-19 19:29:49 +03:00
Renoa d7b463a445 Update updater.rpy 2014-04-19 19:29:17 +03:00
kyouryuukunn 123dd8d0c7 update japanese template 2014-04-19 20:16:41 +09:00
kyouryuukunn 98d66242c4 update japanese template 2014-04-19 20:09:17 +09:00
Tom Rothamel 205efcccdd Fix typo. 2014-04-18 23:53:03 -04:00
kyouryuukunn 23e7301b6d fix doc 2014-04-19 12:15:51 +09:00
Tom Rothamel 711f7bb608 sl2: Pass arguments to use_screen. 2014-04-18 22:55:09 -04:00
Tom Rothamel b4271b6b7b Deduplicate argument evaluation code. 2014-04-18 22:34:09 -04:00
Tom Rothamel d3b7a84bcd sl2: Initial implementation of use.
This doesn't support arguments yet, and passes everything through to
use_screen. But it does successfully let one include SL2 and SL1
screens inside an SL2 screen.
2014-04-17 23:11:13 -04:00
Renoa 278eb7f522 Create updater.rpy 2014-04-17 13:45:54 +03:00
Renoa 6349eff9b7 Create translations.rpy 2014-04-17 13:45:42 +03:00
Renoa 2518af39ca Create style.rpy 2014-04-17 13:45:28 +03:00
Renoa 85457996d4 Create project.rpy 2014-04-17 13:45:17 +03:00
Renoa 73ca7320b4 Create preferences.rpy 2014-04-17 13:45:05 +03:00
Renoa 8c3903cb04 Create new_project.rpy 2014-04-17 13:44:51 +03:00
Renoa f02bf4e826 Create navigation.rpy 2014-04-17 13:44:38 +03:00
Renoa f591a66dda Rename choose_theme to choose_theme.rpy 2014-04-17 13:44:17 +03:00
Renoa 5cde6f1eb4 Create interface.rpy 2014-04-17 13:43:50 +03:00
Renoa 24959e2e0a Create front_page.rpy 2014-04-17 13:43:37 +03:00
Renoa 9d2858f558 Create editor.rpy 2014-04-17 13:43:23 +03:00
Renoa cdd045f30d Create distribute_gui.rpy 2014-04-17 13:20:17 +03:00
Renoa 80a0031ab5 Create distribute.rpy 2014-04-17 13:20:01 +03:00
Renoa 9d01fe5d81 Create common.rpy 2014-04-17 13:19:39 +03:00
Renoa 198e7aaa43 Create choose_theme 2014-04-17 13:19:25 +03:00
Renoa 98d7e022fe Create android.rpy 2014-04-17 13:19:09 +03:00
Renoa 9091a0fea0 Create add_file.rpy 2014-04-17 13:18:42 +03:00
Renoa ad91211ca1 Create about.rpy 2014-04-17 13:18:25 +03:00
Renoa 083e69f826 Create script.rpy 2014-04-17 13:17:24 +03:00
Renoa 43124767b9 Create screens.rpy 2014-04-17 13:17:12 +03:00
Renoa 1cc4b21275 Create options.rpy 2014-04-17 13:16:59 +03:00
Renoa 63cf67e078 Create screens.rpy 2014-04-17 13:16:18 +03:00
Renoa 32ff178ae7 Create common.rpy
testing how to add Arabic translation to the templates in Renpy
2014-04-17 13:16:01 +03:00
Tom Rothamel 6b48d71a1e Implement renpy.queue_event.
This queues an event by name. For example, renpy.queue_event("dismiss")
will act like dismiss has been pressed.

This is intended to make it easier to interface Ren'Py with custom
controllers.
2014-04-16 20:20:14 -07:00
Tom Rothamel 77533e042f Renumber user events.
User event 32 seems too high, and we no longer need to reserve space
for PSS events.
2014-04-16 20:17:53 -07:00
Tom Rothamel 97ef93855e Uncomment screen2. 2014-04-16 20:17:15 -07:00
Tom Rothamel 42e9b0f81a Revert changes caused by 6.17 merge. 2014-04-15 20:41:24 -04:00
Tom Rothamel bc213c48fd Add renpy.clear_keymap_cache. 2014-04-15 20:38:47 -04:00
Tom Rothamel ced53fe72a Leave disabled file pacges.
This kicks in if we're on the auto or quick pages, and a creator
sets has_autosave or has_quicksave to false.
2014-04-14 21:31:54 -04:00
Tom Rothamel df7eef44ce Make imagemap_button inherit from hotspot, remove modern uses of imagemap_button. 2014-04-14 21:23:59 -04:00
Tom Rothamel c9f935d008 Docs. 2014-04-13 20:29:29 -07:00
Tom Rothamel 7937e7e103 Disable SL2. 2014-04-13 23:04:19 -04:00
Tom Rothamel 0b8045f7b6 Make autoreload configurable, and default it to off. 2014-04-13 23:02:25 -04:00
Tom Rothamel bc8ca388af Mark this as version 6.17. 2014-04-13 22:45:04 -04:00
Tom Rothamel 101b0c62d1 Merge pull request #321 from javimat/master
Update Spanish translation of the Template and the Launcher
2014-04-13 22:40:07 -04:00
Tom Rothamel ab70f0f11b Update to use newer RAPT. 2014-04-13 16:01:58 -04:00
Tom Rothamel cfd3331ede Fix problem with MoveTransition and multiple interactions.
The problem would manifest when we did something like
$ renpy.transition(move), and restarted the interaction. We had been
creating a MultiBox with a layers dict, which would adjust the times
for its children. When shown as part of the second interaction, the
times would be reset to 0, and the move would appear to restart.

By getting rid of the layers dict, we prevent this the adjustment
of times from occuring, and things work as expected.
2014-04-12 21:48:37 -07:00
Tom Rothamel db8dc43ab9 Remote ADB connect interface.
It's now possible to enter the address to connect to.
2014-04-11 23:38:37 -04:00
Tom Rothamel 9b571dc8ce Add support for connecting to remote ADB. 2014-04-11 17:11:46 -04:00
Tom Rothamel 2a3e691305 Make fit_first fit images bigger than the screen.
It's only used for imagemaps, and it makes sense for an imagemap to
be bigger than the screen. (For example, if you put it into a
viewport.)
2014-04-10 21:11:55 -04:00
Tom Rothamel 0ba7f0011a Add _bar and _vbar styles.
The _bar style being missing was a regression. Fixes #326. Fixes #327.
2014-04-09 22:06:08 -04:00
Tom Rothamel f8d051f2cd Pass all hyperlink URLs to the web browser, not just http URLs. 2014-04-08 11:46:46 -04:00
Tom Rothamel 1f877be8a3 Automatically use background thread for screenshots.
If we try to take a screenshot outside of the display thread, we
segfault. This ensures that can't happen.

Fixes #329.
2014-04-07 23:11:01 -04:00
Tom Rothamel 4ebde6fc38 sl2: Store transforms and transfer state. 2014-04-06 20:48:35 -04:00
Tom Rothamel e53c1673dc sl2: Pass locals to py_eval_bytecode. 2014-04-06 20:47:54 -04:00
Tom Rothamel c745bc47e3 Add replaces to timer. 2014-04-05 22:50:02 -07:00
Tom Rothamel c601a0ff2b sl2: Implement replaces for displayables. 2014-04-05 22:44:42 -07:00
Tom Rothamel 681efdf8fa Do not back up data on Android.
Since we won't reload it, there's not point. And android has some
arbitrary system-specific stuff that can't be pickled.
2014-04-05 01:17:28 -04:00
Tom Rothamel 4d8859ec79 Detect the Amazon Fire TV, and set the "firetv" screen
variant if we find one.
2014-04-05 01:16:58 -04:00
Tom Rothamel a3cbf14ede sl2: Implement the on statement. 2014-04-04 18:06:06 -04:00
kyouryuukunn 4f13cb73b0 fix selected status in musicroom 2014-04-04 19:41:58 +09:00
kyouryuukunn 61a37f225c If SensitiveIf is in a list of Actions, it is uesd to check sensitive 2014-04-04 19:31:46 +09:00
kyouryuukunn 379b340210 If SelectedIf is in a list of Actions, it is uesd to check selected 2014-04-04 19:23:07 +09:00
Tom Rothamel 5f3dba9725 Use hotspot as the style for hotspots.
This fixes a problem where we'd inherit padding from the button
style, which could cause the hotspots to show up in odd places.

This would only occur if ui.hotspot was called directly - so almost
never in actual code.
2014-04-03 21:54:32 -04:00
Tom Rothamel f16cc57d52 sl2: Add add. 2014-04-03 20:59:07 -04:00
Tom Rothamel 61cbc9e6c7 sl2: Implement child_or_fixed behavior. 2014-04-03 00:21:35 -04:00
Tom Rothamel 5867d4f7ac sl2: Add imagemaps.
These don't work, due to incorrect handling of displayables that
take one child.
2014-04-02 23:47:12 -04:00
Tom Rothamel cc92d83fd6 sl2: Evaluate keywords and children separately.
This is necessary for us to have imagemap statements. The imagemap
needs the keywords to be evaluated, and the imagemap needs to be
created before the keywords can be created.
2014-04-02 23:22:44 -04:00
duanemoody 298e4ae2de Add application category for OS X
The Applications folder in OS X is large and installers tend to expect apps to stay where they were placed (i.e. the root of /Applications). Since Lion, there's been application category metadata for View --> Arrange by Application Category but if the metadata's not in info.plist, the app gets sorted into "Other" at the bottom. 

https://developer.apple.com/library/Mac/releasenotes/General/SubmittingToMacAppStore/#//apple_ref/doc/uid/TP40010572-CH16-SW8 (this applies to all Mac apps, not just those installed through App Store).
2014-04-02 13:43:37 -07:00
Tom Rothamel 436f4f2c8b Document various NVL-mode config variables. 2014-04-01 23:11:48 -04:00
Tom Rothamel 4af52c43a4 Add layer selection to menu/choice and NVL.
Adds config.say_layer, config.menu_layer, and config.nvl_layer to
select layers for the various screens.
2014-04-01 22:51:50 -04:00
Tom Rothamel 984448ae4f Add a show_layer parameter to Character.
This makes it possible to choose the layer the say screen appears
on, which might be necessary for side images and so on.
2014-04-01 22:17:20 -04:00
Tom Rothamel 7cae393d72 Fix a style-related memory leak.
When unbuilding styles, we would deallocate the cache, but not XDECREF
the contents of the cache, leading to a crash. This fixes the problem.
2014-03-31 23:05:34 -04:00
Tom Rothamel 667676f55b Fix memory leaks on reload.
The big fix was to de-init the draw module before deallocating it,
which is what frees up textures. There are a lot of smaller fixes
here as well.
2014-03-30 16:13:12 -04:00
Tom Rothamel 2ff748c5e1 Re-initalize modules rather than reloading them entirely.
This prevents memory leaks through reloaded modules, and should
make reload faster. (It doesn't eliminate all memory leaks,
however.)
2014-03-29 23:52:33 -04:00
Tom Rothamel 65513fb8d7 Make the layout functions (Fixed, VBox, Hbox, and Grid) pickleable.
The Displayables were, but the constructor functions weren't.
This fixes that by turning the functions into classes.
2014-03-29 23:51:28 -04:00
Tom Rothamel 992d9ca419 Fix prediction of windows and bars.
The style rewrite prevented direct access to prefixed styles,
which caused prediction not to work. With this change, we
handle the prediction in cython, which has access to
prefixed and unprefixed styles.
2014-03-28 21:46:39 -04:00
Tom Rothamel bc02b71c76 Reset the styles before reloading. 2014-03-27 22:29:49 -07:00
javimat 01cccefcc1 Update common.rpy 2014-03-27 23:51:41 +01:00
javimat c2e71a4b31 Update new_project.rpy 2014-03-27 23:48:03 +01:00
javimat f86b91f29a Update common.rpy 2014-03-27 23:43:43 +01:00
javimat 7836e58608 Update common.rpy 2014-03-27 23:40:30 +01:00
javimat eddab9a802 Update screens.rpy
Simplifying comments (deleting the English ones).
Changing to the new style language.
2014-03-27 23:39:00 +01:00
Tom Rothamel f6fa2d391f sl2: Add the default statement. 2014-03-26 22:41:29 -04:00
Tom Rothamel e119633cc6 Implement the pass statement. 2014-03-25 23:51:59 -04:00
Tom Rothamel aa9a2461cc Add set_projects_directory and get_projects_directory commands.
These let users set the projects directory from the command line,
which is useful if they don't have python-tkinter installed.
2014-03-25 19:04:15 -04:00
Tom Rothamel 71555a229e sl2: Parse multi-line Python statements. 2014-03-24 23:31:20 -04:00
Tom Rothamel 3b009de99c sl2: Parse one-line python statements. 2014-03-24 23:15:19 -04:00
Tom Rothamel 92b00df7af sl2: Improve sl2.
Largely, got the code written yesterday working.
2014-03-24 22:19:17 -04:00
Tom Rothamel bbf671555f sl2: Untested implementation of the for statement. 2014-03-24 00:03:27 -04:00
Tom Rothamel 929a1e916e If a non-existent screen is loaded, replace its contents with Null.
This can happen with some game changes, especially when changing
config.developer = True to False. Rather than crashing in this
case, we display an empty screen.

Fixes #320.
2014-03-23 19:12:25 -04:00
Tom Rothamel e6e2761396 Process common keywords in SL2:
* style_group, with styles.
* id
* at
2014-03-22 22:12:30 -04:00
Tom Rothamel 1412429d23 Add textbutton and label to sldisplayables. 2014-03-21 17:52:35 -04:00
Tom Rothamel 6210907701 Cleanup various PyDev warnings. 2014-03-21 15:40:11 -04:00
Tom Rothamel d8c2d743bd Add more displayables to sl2. 2014-03-20 23:50:28 -04:00
Tom Rothamel 5181b90473 sl2: Implement the if statement.
As a new feature, the if statement can apply to keyword arguments
as well as other statements.
2014-03-20 01:26:52 -04:00
Tom Rothamel ed5b914c12 Share parser code between ScreenParser and DisplayableParser. 2014-03-19 22:27:11 -04:00
Tom Rothamel 9e9611be7d sl2: Finish what's needed to have a screen run SL2 code.
With this, we can display the simplest screens.
2014-03-18 23:17:11 -04:00
Tom Rothamel 967abe7bd2 sl2: Implement execute for SLBlock and SLDisplayable. 2014-03-17 20:47:09 -07:00
Tom Rothamel 0c3ce7955c sl2: Prepare SLBlocks.
This prepares keyword arguments and children.
2014-03-17 23:21:51 -04:00
Tom Rothamel 7c1a7465d5 sl2: Evaluate positional arguments.
Constant positional arguments are evaluated during a prepare phase,
while non-constant arguments are evaluated at runtime. (When a mix
of arguments is given, they are combined.)
2014-03-16 21:03:37 -07:00
Tom Rothamel ef894d3040 Note that libavresample-dev is now required. 2014-03-16 15:35:29 -04:00
Tom Rothamel 8c823cc638 sl2: Start creating an AST. 2014-03-15 23:14:58 -04:00
Tom Rothamel 0920d32457 Hook up more of the screen language parsing. 2014-03-14 23:19:54 -04:00
Tom Rothamel 5c4650bce1 Correct transition documentation. 2014-03-13 23:10:37 -04:00
Tom Rothamel 65f3e0cef9 Move sl2 into its own package, tie it to parser.
This introduces the "screen2" statement, which is a temporary way of
accessing the sl2 stuff until it's ready to take over.
2014-03-13 23:07:16 -04:00
Tom Rothamel 0835958d92 Quit if the player hits quit while we're executing a prior quit.
This is in alternative to the current behavior, which opens
multiple quit windows if the user clicks slowly.

Double-clicking quit still exits.
2014-03-12 22:18:15 -04:00
Tom Rothamel 4aae1808ed Prefer main_menu to renpy.context()._main_menu. 2014-03-11 11:09:19 -04:00
Tom Rothamel dd4d3410a6 Adjust times for children of tranformed layers.
If we don't do this, the children will be shown at the timebase
of the layer at_list, which cause huge problems if the children
themselves are being transformed.
2014-03-10 23:14:54 -04:00
Tom Rothamel 0212094b9d Make shift+R toggle autoreload.
There's also an indicator, although its look needs to be revised.
2014-03-09 20:59:43 -04:00
Tom Rothamel 1b69f5930c Protect the safe mode stuff with a try/except.
It does some wierd direct keyboard access stuff that might change
in future versions of windows or linux, so this seems like a
reasonable bit of paranoia.
2014-03-08 08:53:54 -05:00
Tom Rothamel 1be159692b On windows, use ctypes to check if we should enter safe mode.
Fixes #316. It looks like using pygame to detect keypresses on an
unmapped window is now broken, perhaps since the most recent
pygame upgrade.
2014-03-07 22:10:38 -05:00
Tom Rothamel be0c6e6262 Avoid reinitializing the pygame window on Ren'Py reload.
This provides for a smoother reload process, by avoiding the window
disappearing and reappearing, potentially changing place and causing
focus issues.
2014-03-06 23:20:22 -05:00
Tom Rothamel 0e7e9ccced Initial implementation of autoreload.
This is a feature that scans for changes in file existence and times.
If a file changes, this triggers a restart of Ren'Py, reloading the
script and game.
2014-03-05 22:16:40 -05:00
Tom Rothamel 06d9557e4d Rewrite missing images in terms of screens and styles.
This makes it possible to customize the missing image indicator,
which is useful if it conflicts with the background of the game.
2014-03-03 22:35:51 -05:00
Tom Rothamel dd150047a6 Word-like operators have to end at word boundaries.
This prevents us from parsing strings like "8 insensitive" as "8 in
sensitive", and then failing when we go to eval it.

Fixes http://lemmasoft.renai.us/forums/viewtopic.php?f=32&t=25510
2014-03-02 22:03:38 -05:00
Tom Rothamel 838c8862a5 Finish documenting the functions in renpy.exports. 2014-03-02 21:53:47 -05:00
Tom Rothamel de5c0a8d9c Keymap fixes.
* Add toggle_music back in, because creators depend on the most obscure
  parts of Ren'Py.
* Update documentation.
2014-03-01 16:45:22 -05:00
Tom Rothamel 362759fdfb Remove debug print. 2014-03-01 16:45:17 -05:00
Tom Rothamel aed9864f26 Add missing comma, fixes selected_hover_ and selected_insensitive prefixes. 2014-03-01 16:45:11 -05:00
Tom Rothamel 378d0cab7b Fix docs. 2014-03-01 10:52:35 -05:00
Tom Rothamel 11107dcbdd Always reset l.init, not only on exceptions. 2014-02-28 17:43:41 -05:00
Tom Rothamel bb711f187e Merge commit 'ecd1ccf'
Conflicts:
	renpy/__init__.py
2014-02-28 16:31:28 -05:00
Tom Rothamel ecd1ccf0e7 Minor doc fixes. 2014-02-28 16:25:14 -05:00
Tom Rothamel d89d4f4f94 Bump version. 2014-02-28 16:20:41 -05:00
Tom Rothamel cd2029e759 Add the "translate <language> style <style>:" statement.
This is a localized equivalent of the style statement.
2014-02-28 16:19:11 -05:00
Tom Rothamel c50e91e970 More error checking for projects directory. 2014-02-28 16:18:38 -05:00
Tom Rothamel d7482744e8 Fix renpy.input documentation.
Fixes #296.
2014-02-28 16:18:38 -05:00
Tom Rothamel 7cc5cfcbae Ignore arguments passed into RevertableObject.__new__.
Some versions of Python ignore them, others do not. We ignore them
ourselves to be on the safe side.
2014-02-28 16:18:38 -05:00
Tom Rothamel 918158fcae It listing directories fails, treat it as if the directory was empty. 2014-02-28 16:18:38 -05:00
Tom Rothamel 23e2f4f0a8 Document translate style. 2014-02-28 16:18:38 -05:00
Tom Rothamel 25a6ec4ce6 Update the Japanese launcher & tutorial to use translate style. 2014-02-28 16:18:38 -05:00
Tom Rothamel 96351b039c More error checking for projects directory. 2014-02-28 16:17:01 -05:00
Tom Rothamel bcfc7d1d89 Fix renpy.input documentation.
Fixes #296.
2014-02-27 21:22:47 -05:00
Tom Rothamel e33bb7a3ae Ignore arguments passed into RevertableObject.__new__.
Some versions of Python ignore them, others do not. We ignore them
ourselves to be on the safe side.
2014-02-27 19:52:07 -05:00
Tom Rothamel 924da674c6 It listing directories fails, treat it as if the directory was empty. 2014-02-26 23:10:43 -05:00
Tom Rothamel 8e58ce8617 Document translate style. 2014-02-26 22:43:36 -05:00
Tom Rothamel 6274355089 Update the Japanese launcher & tutorial to use translate style. 2014-02-26 22:13:17 -05:00
Tom Rothamel 13d74b8d56 Add the "translate <language> style <style>:" statement.
This is a localized equivalent of the style statement.
2014-02-26 22:12:35 -05:00
Tom Rothamel 8f1ec59948 Expand is_constant to encompass names. 2014-02-25 21:58:39 -05:00
Tom Rothamel fccef8c639 Re-update version. 2014-02-25 20:31:59 -05:00
Tom Rothamel 0c04e5e861 There's no need to add RAPT anymore. 2014-02-24 23:13:05 -05:00
Tom Rothamel 6f328c8984 Version 6.17.1. 2014-02-24 22:30:23 -05:00
Tom Rothamel 61d2ad2202 I18n fixes and translatable console.
Merge remote-tracking branch 'origin/system-translations' into maintenance/6.17
2014-02-24 22:23:10 -05:00
Tom Rothamel 93acff591f Use double colons to show code correctly.
Merge remote-tracking branch 'origin/doc-doublecolon' into maintenance/6.17
2014-02-24 22:22:34 -05:00
Tom Rothamel 314446cffd We don't have a key if local.properties is missing. 2014-02-24 22:21:08 -05:00
Koichi Akabe e5186a7d63 Update Japanese translation for console 2014-02-24 16:40:21 +09:00
Koichi Akabe aaba96b31e Make console translatable 2014-02-24 16:40:01 +09:00
Koichi Akabe ca1f9855fa Use __() to show translated texts of the position picker 2014-02-24 16:39:49 +09:00
Koichi Akabe 3c6eb040f8 use double colons to show codes correctly 2014-02-24 14:28:40 +09:00
Tom Rothamel 856a99c3f2 Merge branch 'maintenance/6.17' 2014-02-23 23:52:01 -05:00
Tom Rothamel 959434f404 Safely list directories outside the Ren'Py base directory.
Directories in the projects directory might contain filenames
that aren't representable in the system encoding. We now
ignore these directories, rather than throwing an exception.
2014-02-23 23:41:17 -05:00
Tom Rothamel 435ef3f5b6 Documentation updates. 2014-02-23 22:47:37 -05:00
Tom Rothamel e5d39cf4de Make single_track and shuffle exclusive of each other.
Merge remote-tracking branch 'kyouryuukunn/musicroom' into maintenance/6.17
2014-02-23 21:57:04 -05:00
Tom Rothamel c03fa98992 Merge branch 'maintenance/6.17' 2014-02-22 22:36:03 -05:00
Tom Rothamel 195d3eb8e2 Add documentation of show layer.
Merge remote-tracking branch 'kyouryuukunn/show_layer' into maintenance/6.17
2014-02-22 22:35:26 -05:00
kyouryuukunn f6a2e7ed1f Document about show layer 2014-02-23 12:16:02 +09:00
kyouryuukunn cb3bc2341f update japanese 2014-02-22 22:02:54 -05:00
kyouryuukunn dcc38c3ab6 update japanese 2014-02-22 22:02:43 -05:00
kyouryuukunn d37188abfe Merge pull request #305 from kyouryuukunn/update_japanese
Update Japanese translation
2014-02-23 11:59:40 +09:00
kyouryuukunn b97ec70769 update japanese 2014-02-23 11:55:26 +09:00
kyouryuukunn aaec19d784 update japanese 2014-02-23 11:53:21 +09:00
Tom Rothamel c44ef66bcb Ensure the projects directory is valid before using it.
See #304.
2014-02-22 18:34:31 -05:00
Tom Rothamel 104e46bb45 Ensure the projects directory is valid before using it.
See #304.
2014-02-22 18:33:45 -05:00
kyouryuukunn 4da70a637c Change single_track and shuffle exclusive 2014-02-22 16:00:36 +09:00
Tom Rothamel e10325aa7d Write function that determines if a python expression is constant.
This will be improved as incremental screen language work
continues, but this is a start.
2014-02-22 01:18:46 -05:00
632 changed files with 56076 additions and 6220 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
+36 -13
View File
@@ -7,6 +7,7 @@ http://www.renpy.org
Ren'Py development takes place on the ``master`` branch, and occasionally
on feature branches.
Getting Started
===============
@@ -45,33 +46,47 @@ Compiling the Modules
----------------------
Building the modules requires you have the many dependencies installed on
your system. On Ubuntu, these dependencies can be installed with the
command::
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 \
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::
@@ -132,10 +147,18 @@ For example::
renpy.engine.warp_drive.engage(factor)
Translating
===========
For best practices when it comes to translating the launcher and template
game, please read:
http://lemmasoft.renai.us/forums/viewtopic.php?p=321603#p321603
Contributing
============
For bug fixes, documentation improvements, and simple changes, just
make a pull request. For more complex changes, it might make sense
to file an issue first so we can discuss the design.
+39 -20
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,21 @@ 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")
args = ap.parse_args()
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,24 +54,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()
subprocess.check_call([ "./add_renpy.sh", short_version ])
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")
@@ -59,11 +84,5 @@ 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")
+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
+44 -12
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,7 @@ def main():
ap = argparse.ArgumentParser()
ap.add_argument("version")
ap.add_argument("--fast", action="store_true")
ap.add_argument("--pygame", action="store", default=None)
args = ap.parse_args()
@@ -56,7 +60,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,18 +83,23 @@ 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)
print "Version {} ({})".format(args.version, full_version)
# Perhaps autobuild.
if "RENPY_BUILD_ALL" in os.environ:
print("Autobuild...")
subprocess.check_call(["scripts/autobuild.sh"])
# Copy over the screens, to keep them up to date.
copy_tutorial_file("tutorial/game/screens.rpy", "templates/english/game/screens.rpy")
@@ -118,11 +126,17 @@ def main():
android = os.path.abspath("android")
rapt_build = subprocess.Popen([
rapt_cmd = [
os.path.join(android, "build_renpy.sh"),
"renpy",
ROOT,
],
]
if args.pygame:
rapt_cmd.append(args.pygame)
rapt_build = subprocess.Popen(
rapt_cmd,
cwd = android,
stdout=out,
stderr=out)
@@ -135,6 +149,16 @@ def main():
else:
print "RAPT build succeeded."
def write_version_txt(path):
with open(path + "/version.txt", "w") as f:
f.write(full_version)
write_version_txt("rapt")
write_version_txt("renios")
compileall.compile_dir("rapt/buildlib/", ddir="rapt/buildlib/", force=1, quiet=1)
compileall.compile_dir("renios/buildlib/", ddir="renios/buildlib/", force=1, quiet=1)
if not os.path.exists(destination):
os.makedirs(destination)
@@ -173,12 +197,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:
@@ -228,5 +257,8 @@ def main():
print
if __name__ == "__main__":
main()
+134 -101
View File
@@ -2,127 +2,160 @@
<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>
</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>
<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>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, 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>
</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>
<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>.
</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
+162 -172
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
@@ -36,19 +36,24 @@ init python:
PHONE_TEXT = _("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.")
TABLET_TEXT = _("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.")
OUYA_TEXT = _("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.")
OUYA_TEXT = _("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.")
INSTALL_SDK_TEXT = _("Downloads and installs the Android SDK and supporting packages. Optionally, generates the keys required to sign the package.")
CONFIGURE_TEXT = _("Configures the package name, version, and other information about this project.")
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.")
import subprocess
import re
import os
import json
import glob
def find_rapt():
@@ -58,12 +63,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_version_txt(RAPT_PATH):
import sys
sys.path.insert(0, os.path.join(RAPT_PATH, "buildlib"))
else:
RAPT_PATH = None
RAPT_PATH is None
find_rapt()
@@ -76,6 +80,8 @@ init python:
import rapt.install_sdk
import rapt.plat
import rapt.interface
rapt.plat.renpy = True
else:
rapt = None
@@ -88,9 +94,11 @@ init python:
return ANDROID_NO_RAPT
if renpy.windows and not "JAVA_HOME" in os.environ:
return ANDROID_NO_JDK
if not os.path.exists(os.path.join(RAPT_PATH, "android-sdk/extras/google/play_licensing")):
if not os.path.exists(rapt.plat.path("android-sdk/extras/google/play_licensing")):
return ANDROID_NO_SDK
if not os.path.exists(os.path.join(RAPT_PATH, "android.keystore")):
if not os.path.exists(rapt.plat.path("android.keystore")):
return ANDROID_NO_KEY
if not os.path.exists(rapt.plat.path("local.properties")):
return ANDROID_NO_KEY
if not os.path.exists(os.path.join(project.current.path, ".android.json")):
return ANDROID_NO_CONFIG
@@ -126,146 +134,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 call(self, cmd, cancel=False, use_path=False):
if not use_path:
cmd = [ rapt.plat.path(cmd[0]) ] + list(cmd[1:])
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
try:
interface.processing(self.info_msg, show_screen=True, cancel=cancel_action)
self.process = subprocess.Popen(cmd, cwd=RAPT_PATH, stdout=f, stderr=f, startupinfo=startupinfo)
renpy.call_screen("android_process", interface=self)
finally:
f.close()
interface.hide_screen()
self.process = 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):
"""
@@ -278,22 +146,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.
@@ -329,7 +181,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.
"""
@@ -346,12 +198,12 @@ init python:
if gui:
reporter = distribute.GuiReporter()
rapt_interface = AndroidInterface()
rapt_interface = MobileInterface("android")
else:
reporter = distribute.TextReporter()
rapt_interface = rapt.interface.Interface()
distribute.Distributor(project.current,
distribute.Distributor(p,
reporter=reporter,
packages=[ 'android' ],
build_update=False,
@@ -360,8 +212,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:
@@ -425,7 +326,8 @@ screen android:
frame style "l_indent":
has vbox
has hbox:
spacing 15
textbutton _("Phone"):
action LaunchEmulator("touch", "small phone touch android")
@@ -435,7 +337,7 @@ screen android:
action LaunchEmulator("touch", "medium tablet touch android")
hovered tt.Action(TABLET_TEXT)
textbutton _("Television / OUYA"):
textbutton _("Television"):
action LaunchEmulator("tv", "small tv ouya android")
hovered tt.Action(OUYA_TEXT)
@@ -471,6 +373,32 @@ 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
frame:
style "l_indent"
has vbox
text _("Other:")
add HALF_SPACER
frame style "l_indent":
has vbox
textbutton _("Remote ADB Connect"):
action AndroidIfState(state, ANDROID_OK, Jump("android_connect"))
hovered tt.Action(CONNECT_TEXT)
textbutton _("Remote ADB Disconnect"):
action AndroidIfState(state, ANDROID_OK, Jump("android_disconnect"))
hovered tt.Action(DISCONNECT_TEXT)
# Right side.
@@ -511,7 +439,7 @@ label android_installsdk:
python:
with interface.nolinks():
rapt.install_sdk.install_sdk(AndroidInterface())
rapt.install_sdk.install_sdk(MobileInterface("android"))
jump android
@@ -519,14 +447,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
@@ -537,18 +465,80 @@ 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:
if persistent.connect_address is not None:
address = persistent.connect_address
else:
address = ""
while True:
address = interface.input(
_("Remote ADB Address"),
_("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."),
default=address,
cancel=Jump("android"),
)
address = address.strip()
try:
host, port = address.split(":")
except:
interface.error(_("Invalid remote ADB address"), _("The address must contain one exactly one ':'."), label=None)
continue
if " " in host:
interface.error(_("Invalid remote ADB address"), _("The host may not contain whitespace."), label=None)
continue
try:
int(port)
except:
interface.error(_("Invalid remote ADB address"), _("The port must be a number."), label=None)
continue
break
persistent.connect_address = address
rapt_interface = MobileInterface("android")
rapt.build.connect(rapt_interface, address)
jump android
label android_disconnect:
python hide:
rapt_interface = MobileInterface("android")
rapt.build.disconnect(rapt_interface)
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("--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)
android_build(args.command, p=p, gui=False)
android_build(args.command, 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
+13 -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
@@ -85,6 +85,12 @@ init python:
return theme, scheme
def implement_theme(theme, scheme):
"""
Implement the current theme.
This function uses non-public APIs.
"""
global showing_theme, showing_scheme
if theme == showing_theme and scheme == showing_scheme:
@@ -92,7 +98,12 @@ init python:
renpy.style.restore(style_backup)
exec theme_data.THEME[theme][scheme] in globals()
renpy.style.rebuild()
# Rebuild the style cache.
renpy.style.rebuild(False)
# Bust the render cache, so we re-evaluate the styles.
renpy.display.interface.kill_textures()
showing_theme = theme
showing_scheme = scheme
+29 -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
@@ -399,13 +399,13 @@ 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()
# Assign the x-bit as necessary.
self.mark_executable()
@@ -613,6 +613,7 @@ init python in distribute:
CFBundlePackageType="APPL",
CFBundleShortVersionString=version,
CFBundleVersion="1.0.{0}".format(int(time.time())),
LSApplicationCategoryType="public.app-category.simulation-games",
CFBundleDocumentTypes = [
{
"CFBundleTypeOSTypes" : [ "****", "fold", "disk" ],
@@ -629,6 +630,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
@@ -662,10 +666,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):
"""
@@ -699,19 +703,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):
"""
@@ -736,9 +752,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
@@ -865,7 +879,7 @@ init python in distribute:
if not data:
break
sums.write(struct.pack("I", zlib.adler32(data) & 0xffffffff))
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)
@@ -887,12 +901,15 @@ init python in distribute:
with open(fn, "rb") as f:
digest = hashlib.sha256(f.read()).hexdigest()
sums_size = os.path.getsize(self.destination + "/" + self.base_name + "-" + variant + ".sums")
index[variant] = {
"version" : self.update_version,
"pretty_version" : self.pretty_version,
"digest" : digest,
"zsync_url" : self.base_name + "-" + variant + ".zsync",
"sums_url" : self.base_name + "-" + variant + ".sums",
"sums_size" : sums_size,
"json_url" : self.base_name + "-" + variant + ".update.json",
}
+34 -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,44 @@ 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 _("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
+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
@@ -24,12 +24,13 @@
# This contains code for scanning for editors, and for allowing the user to
# select an editor.
init python in editor:
init 1 python in editor:
from store import Action, renpy, config, persistent
import store.project as project
import store.updater as updater
import store.interface as interface
import store.util as util
import store
import glob
@@ -83,8 +84,19 @@ init python in editor:
if d is None:
continue
for filename in glob.glob(d + "/*/*.edit.py"):
scan_editor(filename)
if not os.path.isdir(d):
continue
for i in util.listdir(d):
i = os.path.join(d, i)
if not os.path.isdir(d):
continue
for j in util.listdir(i):
j = os.path.join(i, j)
if j.endswith(".edit.py"):
scan_editor(j)
########################################################################
@@ -295,6 +307,8 @@ init python in editor:
class Edit(Action):
alt = "Edit [text]."
def __init__(self, filename, line=None, check=False):
"""
An action that opens the given line of the given file in a
@@ -396,6 +410,8 @@ init python in editor:
Opens all scripts that are part of the current project in a web browser.
"""
alt = "Edit [text]."
def __init__(self):
return
+27 -11
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
@@ -32,6 +32,8 @@ init python:
the project root.
"""
alt = _("Open [text] directory.")
def __init__(self, directory, absolute=False):
if absolute:
self.directory = directory
@@ -62,6 +64,8 @@ init python:
screen front_page:
frame:
alt ""
style_group "l"
style "l_root"
@@ -143,6 +147,7 @@ screen front_page_project_list:
textbutton _("[p.name!q] (template)"):
action project.Select(p)
alt _("Select project [text].")
style "l_list"
null height 12
@@ -153,12 +158,13 @@ screen front_page_project_list:
textbutton "[p.name!q]":
action project.Select(p)
alt _("Select project [text].")
style "l_list"
null height 12
textbutton _("Tutorial") action project.Select("tutorial") style "l_list"
textbutton _("The Question") action project.Select("the_question") style "l_list"
textbutton _("Tutorial") action project.Select("tutorial") style "l_list" alt _("Select project [text].")
textbutton _("The Question") action project.Select("the_question") style "l_list" alt _("Select project [text].")
# This is used for the right side of the screen, which is where the project-specific
@@ -189,20 +195,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
@@ -225,6 +232,7 @@ screen front_page_project:
textbutton _("Check Script (Lint)") action Jump("lint")
textbutton _("Change Theme") action Jump("choose_theme")
textbutton _("Delete Persistent") action Jump("rmpersistent")
textbutton _("Force Recompile") action Jump("force_recompile")
# textbutton "Relaunch" action Relaunch
@@ -235,6 +243,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")
@@ -272,3 +281,10 @@ label rmpersistent:
jump front_page
label force_recompile:
python hide:
interface.processing(_("Recompiling all rpy files into rpyc files..."))
project.current.launch([ 'compile' ], wait=True)
jump front_page
+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_version_txt(RENIOS_PATH):
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
+246
View File
@@ -0,0 +1,246 @@
# 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_version_txt(path):
if not updater.can_update():
return True
try:
with open(os.path.join(path, "version.txt")) as f:
version = f.read()
return version.strip() == renpy.version_only
except:
return False
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):
"""
`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
self.filename = project.current.temp_filename(platform + ".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 and self.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):
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
+5 -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
@@ -67,6 +67,9 @@ label new_project:
if persistent.projects_directory is None:
call choose_projects_directory
if persistent.projects_directory is None:
$ interface.error(_("The projects directory could not be set. Giving up."))
python hide:
project_name = interface.input(
@@ -95,7 +98,7 @@ label new_project:
template_path = template.path
with interface.error_handling("creating a new project"):
shutil.copytree(template_path, project_dir)
shutil.copytree(template_path, project_dir, symlinks=False)
# Delete the tmp directory, if it exists.
if os.path.isdir(os.path.join(project_dir, "tmp")):
+21 -6
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
@@ -197,11 +197,14 @@ init -1 python hide:
quit = renpy.quit_event,
iconify = renpy.iconify,
choose_renderer = renpy.curried_call_in_new_context("_choose_renderer"),
self_voicing = Preference("self voicing", "toggle"),
),
]
config.rollback_enabled = False
translate None python:
config.rtl = False
## This section controls how to build Ren'Py. (Building the launcher is how
## we build Ren'Py distributions.)
@@ -217,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]
@@ -242,13 +245,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)
@@ -302,16 +315,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.
@@ -340,4 +355,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
+28 -10
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
@@ -38,7 +41,9 @@ init python:
rv = [ ( "English", None) ]
for i in languages:
rv.append((i.title(), i))
rv.append((i.replace("_", " ").title(), i))
rv.sort()
return rv
@@ -50,6 +55,7 @@ screen preferences:
frame:
style_group "l"
style "l_root"
alt "Preferences"
window:
@@ -83,10 +89,13 @@ screen preferences:
frame style "l_indent":
if persistent.projects_directory:
textbutton _("[persistent.projects_directory!q]") action Jump("projects_directory_preference")
textbutton _("[persistent.projects_directory!q]"):
action Jump("projects_directory_preference")
alt _("Projects directory: [text]")
else:
textbutton _("Not Set") action Jump("projects_directory_preference")
textbutton _("Not Set"):
action Jump("projects_directory_preference")
alt _("Projects directory: [text]")
add SPACER
@@ -105,9 +114,9 @@ screen preferences:
frame style "l_indent":
if persistent.editor:
textbutton persistent.editor action Jump("editor_preference")
textbutton persistent.editor action Jump("editor_preference") alt _("Text editor: [text]")
else:
textbutton _("Not Set") action Jump("editor_preference")
textbutton _("Not Set") action Jump("editor_preference") alt _("Text editor: [text]")
add SPACER
@@ -162,6 +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")
@@ -203,10 +215,16 @@ screen preferences:
add HALF_SPACER
# frame style "l_indent":
viewport:
scrollbars "vertical"
mousewheel True
for tlname, tlvalue in translations:
textbutton tlname action Language(tlvalue) style "l_list"
has vbox
# frame style "l_indent":
for tlname, tlvalue in translations:
textbutton tlname action Language(tlvalue) style "l_list"
textbutton _("Back") action Jump("front_page") style "l_left_button"
+43 -53
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
@@ -48,6 +48,7 @@ init python in project:
_("After making changes to the script, press shift+R to reload your game."),
_("Press shift+O (the letter) to access the console."),
_("Press shift+D to access the developer menu."),
_("Have you backed up your projects recently?"),
]
class Project(object):
@@ -61,7 +62,10 @@ init python in project:
raise Exception("{} does not exist.".format(path))
# The name of the project.
self.name = os.path.basename(path)
if path.endswith(".app/Contents/Resources/autorun"):
self.name = os.path.basename(path[:-len(".app/Contents/Resources/autorun")])
else:
self.name = os.path.basename(path)
# The path to the project.
self.path = path
@@ -117,6 +121,7 @@ init python in project:
data.setdefault("build_update", False)
data.setdefault("packages", [ "all" ])
data.setdefault("add_from", True)
def make_tmp(self):
"""
@@ -314,7 +319,8 @@ init python in project:
"""
rv = [ ]
rv.extend(i for i, isdir in util.walk(self.path) if (not isdir) and (i.endswith(".rpy") or i.endswith(".rpym")) )
rv.extend(i for i, isdir in util.walk(self.path)
if (not isdir) and (i.endswith(".rpy") or i.endswith(".rpym")) and (not i.startswith("tmp/")) )
return rv
@@ -380,13 +386,18 @@ init python in project:
if not os.path.isdir(d):
return
for pdir in os.listdir(d):
for pdir in util.listdir(d):
ppath = os.path.join(d, pdir)
# A project must be a directory.
if not os.path.isdir(ppath):
continue
autorun = os.path.join(ppath, "Contents", "Resources", "autorun")
if os.path.exists(autorun):
ppath = autorun
# A project has either a game/ directory, or a project.json
# file.
if (not os.path.isdir(os.path.join(ppath, "game"))) and (not os.path.exists(os.path.join(ppath, "project.json"))):
@@ -543,59 +554,38 @@ 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 = renpy.fsdecode(choice)
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)
persistent.projects_directory = path
project.manager.scan()
return
init python:
def set_projects_directory_command():
ap = renpy.arguments.ArgumentParser()
ap.add_argument("projects", help="The path to the projects directory.")
args = ap.parse_args()
persistent.projects_directory = args.projects
renpy.save_persistent()
return False
renpy.arguments.register_command("set_projects_directory", set_projects_directory_command)
def get_projects_directory_command():
ap = renpy.arguments.ArgumentParser()
args = ap.parse_args()
print persistent.projects_directory
return False
renpy.arguments.register_command("get_projects_directory", get_projects_directory_command)
+33 -16
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
@@ -66,10 +66,23 @@ init -1 python:
# FONTS/WEIGHTS
LIGHT = "Roboto-Light.ttf"
REGULAR = "Roboto-Regular.ttf"
DARK = "Roboto-Medium.ttf"
if persistent.large_print:
LIGHT = REGULAR
init 1 python:
def size(n):
"""
Adjusts the font size if we're in large-print mode.
"""
if persistent.large_print and n < 18:
n = 18
return n
INDENT = 20
HALF_INDENT = 10
@@ -91,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:
@@ -103,7 +116,7 @@ init 1:
color TEXT
idle_color IDLE
hover_color HOVER
size 18
size size(18)
style l_text is l_default
@@ -115,7 +128,7 @@ init 1:
# A small button, used at the bottom of the screen.
style l_link is l_default
style l_link_text is l_default:
size 14
size size(14)
font LIGHT
# Action buttons on the bottom of the screen.
@@ -126,7 +139,7 @@ init 1:
right_margin 10 + INDENT
style l_right_button_text is l_default:
size 30
size size(30)
style l_left_button is l_right_button:
xalign 0.0
@@ -158,7 +171,7 @@ init 1:
background SEPARATOR
style l_label_text is l_default:
size 24
size size(24)
xpos INDENT
yoffset 6
@@ -172,7 +185,7 @@ init 1:
style l_label_small_text is l_default:
xpos INDENT
yoffset 6
size 20
size size(20)
# Alternate labels. This nests inside an l_label, and gives a button
# or label that's nested inside another label.
@@ -184,17 +197,17 @@ init 1:
right_margin INDENT
style l_alternate_text is l_default:
size 14
size size(14)
font LIGHT
text_align 1.0
style l_small_button is l_button
style l_small_button_text is l_button_text:
size 14
size size(14)
style l_small_text is l_text:
size 14
size size(14)
# Indents its contents.
style l_indent is l_default:
@@ -262,7 +275,7 @@ init 1:
yoffset 12
style l_info_label_text is l_default:
size 36
size size(36)
style l_info_text is l_default:
xalign 0.5
@@ -292,11 +305,11 @@ init 1:
top_margin 3
style l_navigation_button_text is l_button_text:
size 14
size size(14)
font REGULAR
style l_navigation_text is l_text:
size 12
size size(14)
font LIGHT
color TEXT
@@ -309,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
@@ -324,7 +341,7 @@ init 1:
background PROJECTS_WINDOW
style hyperlink_text:
size 18
size size(18)
font LIGHT
color IDLE
hover_color HOVER
+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
+8 -2
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
@@ -34,6 +34,12 @@ except ImportError:
from Tkinter import Tk
from tkFileDialog import askdirectory
# Binary mode stdout for python3.
try:
sys.stdout = sys.stdout.buffer
except:
pass
# Create the TK canvas.
if __name__ == "__main__":
@@ -41,4 +47,4 @@ if __name__ == "__main__":
root.withdraw()
result = askdirectory(initialdir=sys.argv[1], parent=root, title="Select Ren'Py Projects Directory")
sys.stdout.write(result)
sys.stdout.write(result.encode("utf8"))
+15
View File
@@ -0,0 +1,15 @@
translate arabic 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
View File
@@ -0,0 +1,23 @@
translate arabic 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 "رينباي يقوم بتشغيل الملفات المنتهية بـ .rpy تلقائياً. لكي تستعمل هذا الملف, اختر له تبويب وافتحه عبر ملف آخر."
+179
View File
@@ -0,0 +1,179 @@
# : Translation updated at 2013-11-17 23:18
translate arabic 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 "لتجهيز اللعبة للعمل على اجهزة اندرويد يمكنك تحميل الحزمة الخاصة بذلك {a=http://www.renpy.org/dl/android}here{/a}) و فك الضغط عنها, ثم نسخها إلى مجلد رينباي الرئيسي ثم إعادة فتح هذا المشغِّل."
# 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 موجوده, لكنك تحتاج لتنصيب Android SDK قبل ان تبدأ بتجهيز حزم للعمل على اندرويد. الرجاء اختيار تنصيب Android SDK لتستطيع ذلك."
# 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 موجوده, لكن المفتاح لم يتم تجهيزه. الرجاء تكوين مفتاح جديد او استرجاع android.keystore"
# game/android.rpy:15
old "The current project has not been configured. Use \"Configure\" to configure it before building."
new "المشروع الحالي لم يتم تجهيز إعدادته. الرجاء اختيار \"Configure\" لتقوم بتجهيزها قبل بناء الحزمة."
# 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 "قم باختيار زر \"Build\" لتقوم بتجهيز المشروع الحالي إلى حزمة قابلة للعمل على اندرويد. او قم بربط جهاز اندرويد و اختيار \"Build & Install\" ليتم تنصيبها مباشرة على الجهاز المطلوب."
# 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 "يقوم بمحاكاة جهاز اندرويد هاتفي محمول. \n\n خاصية اللمس يتم محاكاتها عبر مؤشر الفأره, لكن فقط حين يكون زر الفأره مضغوطاً. زر الخروج يقوم باستدعاء نافذة القائمة الرئيسية, و PageUp هو زر العودة إلى الوراء."
# 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 "يقوم بمحاكاة جهاز اندرويد تابلت. \n\n خاصية اللمس يتم محاكاتها عبر مؤشر الفأره, لكن فقط حين يكون زر الفأره مضغوطاً. زر الخروج يقوم باستدعاء نافذة القائمة الرئيسية, و PageUp هو زر العودة إلى الوراء"
# 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 "يقوم بمحاكاة جهاز Ouya. \n\n يد التحكم تتم محاكاتها بأزرار الإتجاهات, زر الإدخال يحاكي select, زر الخروج يحاكي زر menu, و PageUp يحاكي زر العودة."
# game/android.rpy:22
old "Downloads and installs the Android SDK and supporting packages. Optionally, generates the keys required to sign the package."
new "يقوم بتحميل و تنصيب Android SDK والحزم المساندة لها. يعطيك خيار تكوين المفاتيح المطلوبة لتتمكن من استعمال الحزمة."
# game/android.rpy:23
old "Configures the package name, version, and other information about this project."
new "يقوم بتجهيز إعدادات الحزمة, رقم النسخة, و معلومات أخرى تتعلق بهذا المشروع."
# 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 "يفتح الملف الخاص بمعلومات مفتاح Google Play في محرر النصوص. \n\n هذه الخطوة غير مطلوبة إلا لو كان البرنامج يحتاج إحدى الحوم المساندة expansion APK. الرجاء الإطلاع على ملفات المساعدة للحصول على المزيد من المعلومات."
# game/android.rpy:25
old "Builds the Android package."
new "يقوم ببناء حزمة للأندرويد."
# game/android.rpy:26
old "Builds the Android package, and installs it on an Android device connected to your computer."
new "يقوم ببناء حزمة للأندرويد, ثم يقوم بتنصيبها على جهاز أندرويد المتصل بحاسوبك."
# 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 "أندرويد: [project.current.name!q]"
# game/android.rpy:381
old "Emulation:"
new "محاكاة"
# game/android.rpy:389
old "Phone"
new "هاتف"
# game/android.rpy:393
old "Tablet"
new "تابلت/ لوحي"
# game/android.rpy:397
old "Television / OUYA"
new "تلفزيون / OUYA"
# game/android.rpy:409
old "Build:"
new "بناء"
# game/android.rpy:417
old "Install SDK & Create Keys"
new "تنصيب SDK و اختلاق مفاتيح"
# game/android.rpy:421
old "Configure"
new "إعدادات"
# game/android.rpy:425
old "Build Package"
new "بناء الحزمة"
# game/android.rpy:429
old "Build & Install"
new "بناء و تنصيب"
# : Translation updated at 2014-04-17 13:01
translate arabic 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 "لبناء ملفات الأندرويد, الرجاء تحميل RAPT, ثم فك الضغط عن الملف ووضعه في مجلد رينباي. قد تحتاج لإعادة تشغيل رينباي ليعمل بشكل صحيح."
# 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-بت لتستطيع إنشاء ملفات الأندرويد على نظام الوندوز. حزمة JDK تختلف عن JRE, قد تكون الجافا لديك موجوده لكنها تفتقد الـ JDK. \n\n الرجاء {a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}تحميل و تنصيب JDK{/a} ثم إعادة تشغيل رينباي"
# 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 "يحاول محاكاة نظام تلفزيوني للأندرويد مثل جهاز OUYA او Fire TV. \n\n يتم تخطيط الأزرار لعصا التحكم لتناسب ازرار جهاز التحكم عن بعد. Controller 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."
# game/android.rpy:47
old "Connects to an Android device running ADB in TCP/IP mode."
new "يتصل بجهاز أندرويد يعمل على نظام ADB عن طريق TCP/IP mode"
# game/android.rpy:48
old "Disconnects from an Android device running ADB in TCP/IP mode."
new "يفصل الاتصال عن جهاز أندرويد يعمل على نظام ADB عن طريق TCP/IP mode"
# game/android.rpy:516
old "Other:"
new "آخر:"
# game/android.rpy:524
old "Remote ADB Connect"
new "الإتصال عن بعد عن طريق ADB"
# game/android.rpy:528
old "Remote ADB Disconnect"
new "قطع إتصال ADB عن بعد"
# 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 "قبل ان تصتطيع إنشاء ملفات للأندرويد, عليك ان تقوم بتحميل ملفات RAPT الخاصة بتحويل ملفات رينباي للأندرويد. هل تريد ان تقوم بتحميل الحزمة الآن؟"
# game/android.rpy:608
old "Remote ADB Address"
new "عنوان ADB عن بعد"
# 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 "الرجاء إدخال عنوان الأي بي ورقم المنفذ المطلوب للإتصال, على شكل \"192.168.1.143:5555\". الرجاء العودة لدليل المستخدم الخاص بجهازك لتعرف إن كان يدعم الإتصال عن بعد للـ ADB و إن كان قادراً على ذلك, ستجد العنوان و المنفذ المطلوبان."
# game/android.rpy:619
old "Invalid remote ADB address"
new "عنوان ِADB خاطيء"
# game/android.rpy:619
old "The address must contain one exactly one ':'."
new "العنوان يجب ان يحتوي على علامة ':' واحده فقط لا غير"
# game/android.rpy:623
old "The host may not contain whitespace."
new "الخادم يجب ان لا يحتوي على مساحات فارغة"
# game/android.rpy:629
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 "بناء,تنصيب و إقلاع."
@@ -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."
+43
View File
@@ -0,0 +1,43 @@
translate arabic strings:
# game/choose_theme.rpy:274
old "Could not change the theme. Perhaps options.rpy was changed too much."
new "لم يتمكن رينباي من تغيير المظهر, ربما ملف options.rpy قد تغير بشكل كبير"
# game/choose_theme.rpy:332
old "Display"
new "عرض"
# game/choose_theme.rpy:333
old "Window"
new "نافذة"
# game/choose_theme.rpy:334
old "Fullscreen"
new "ملء الشاشة"
# game/choose_theme.rpy:335
old "Planetarium"
new "Planetarium"
# game/choose_theme.rpy:342
old "Sound Volume"
new "مستوى الصوت"
# game/choose_theme.rpy:376
old "Choose Theme"
new "إختر المظهر"
# game/choose_theme.rpy:389
old "Theme"
new "المظهر"
# game/choose_theme.rpy:413
old "Color Scheme"
new "توليفة الألوان"
# game/choose_theme.rpy:444
old "Continue"
new "استمرار"
+589
View File
@@ -0,0 +1,589 @@
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# renpy/common/00action_file.rpy:118
old "%b %d, %H:%M"
new "%b %d, %H:%M"
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# renpy/common/00gltest.rpy:50
old "Graphics Acceleration"
new "تسريع الرسومات"
# renpy/common/00gltest.rpy:54
old "Automatically Choose"
new "إختر بشكل اوتوماتيكي"
# renpy/common/00gltest.rpy:59
old "Force Angle/DirectX Renderer"
new "فرض استعمال محركات Angle/DirectX"
# renpy/common/00gltest.rpy:63
old "Force OpenGL Renderer"
new "فرض استعمال محركات OpenGL"
# renpy/common/00gltest.rpy:67
old "Force Software Renderer"
new "فرض استعمال المحركات البرمجية software renderer"
# renpy/common/00gltest.rpy:73
old "Changes will take effect the next time this program is run."
new "سيتم تفعيل التغييرات في المرة القادمة التي تفتح فيها البرنامج"
# renpy/common/00gltest.rpy:77
old "Quit"
new "خروج"
# renpy/common/00gltest.rpy:82
old "Return"
new "عودة"
# renpy/common/00gltest.rpy:112
old "Performance Warning"
new "تحذير عن الأداء"
# renpy/common/00gltest.rpy:117
old "This computer is using software rendering."
new "هذا الجهاز يستعمل software rendering"
# renpy/common/00gltest.rpy:119
old "This computer is not using shaders."
new "هذا الجهاز لا يستعمل shaders"
# renpy/common/00gltest.rpy:121
old "This computer is displaying graphics slowly."
new "هذا الجهاز يستعرض الرسوميات بشكل بطيء"
# renpy/common/00gltest.rpy:123
old "This computer has a problem displaying graphics: [problem]."
new "هذا الجهاز يواجه مشكلة في استعراض الرسوميات [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 "محركات الرسوميات قد تكون قديمة او لا تعمل بشكل صحيح. قد يسبب ذلك بطء او اخطاء في الاستعراض, القيام بتحديث directX قد يساعد في حل المشكلة."
# 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 " محركات الرسوميات قد تكون قديمة او لا تعمل بشكل صحيح. قد يسبب ذلك بطء او اخطاء في الاستعراض."
# renpy/common/00gltest.rpy:135
old "Update DirectX"
new "تحديث DirectX"
# renpy/common/00gltest.rpy:141
old "Continue, Show this warning again"
new "استمرار, الرجاء عرض هذا التحذير في المرة الثادمة ايضاً"
# renpy/common/00gltest.rpy:145
old "Continue, Don't show warning again"
new "استمرار, لا تعرض هذا التحذير مرة اخرى"
# renpy/common/00gltest.rpy:171
old "Updating DirectX."
new "يتم تحديث DirectX"
# 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, قد يبدأ ذلك بشكل مصغر في شريط المهام. الرجاء اتباع التعليمات لاكمال التنصيب."
# 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}ملاحظة:{/b} مايكروسوفت دايركت أكس يقوم تلقائياً بتنصيب شريط بينق Bing toolbar. إذا لم ترغب بذلك الرجاء القيام بإلغاء تحديد خانة الاختيار"
# renpy/common/00gltest.rpy:183
old "When setup finishes, please click below to restart this program."
new "حيثن ينتهي التنصيب, الرجاء الضغط ادناه لإعادة تشغيل البرنامج"
# renpy/common/00gltest.rpy:185
old "Restart"
new "إعادة تشغيل"
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# renpy/common/00keymap.rpy:167
old "Saved screenshot as %s."
new "تم حفظ الصورة كـ %s"
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# renpy/common/00layout.rpy:421
old "Are you sure?"
new "هل انت متأكد؟"
# renpy/common/00layout.rpy:422
old "Are you sure you want to delete this save?"
new "هل انت متأكد من رغبتك في حذف خانة الحفظ هذه؟"
# renpy/common/00layout.rpy:423
old "Are you sure you want to overwrite your save?"
new "هل انت متأكد من رغبتك في الحفظ على هذه الخانة؟"
# renpy/common/00layout.rpy:424
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
new "الاسترجاع سيضيع كل ما فعلته منذ خانة الحفظ السابقة. \n هل انت متأكد من رغبتك في الاسترجاع إلى هذه النقطة؟"
# renpy/common/00layout.rpy:425
old "Are you sure you want to quit?"
new "هل انت متأكد من رغبتك في الخروج؟"
# renpy/common/00layout.rpy:426
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
new "هل انت متأكد من رغبتك في العودة للقائمة الرئيسية؟ \n كل ما لم تقم بحفظة سيضيع."
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# renpy/common/00library.rpy:77
old "Skip Mode"
new "وضع التسريع"
# renpy/common/00library.rpy:80
old "Fast Skip Mode"
new "وضع التسريع السريع"
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# renpy/common/00updater.rpy:1258
old "Updater"
new "برنامج التحديث"
# renpy/common/00updater.rpy:1267
old "This program is up to date."
new "هذه النسخة هي الأحدث"
# renpy/common/00updater.rpy:1269
old "[u.version] is available. Do you want to install it?"
new "النسخة [u.version] متوفرة, هل ترغب في تنصيبها؟"
# renpy/common/00updater.rpy:1271
old "Preparing to download the updates."
new "يتم التجهيز لتحميل البرنامج من الانترنت"
# renpy/common/00updater.rpy:1273
old "Downloading the updates."
new "يتم تنزيل التحديثات"
# renpy/common/00updater.rpy:1275
old "Unpacking the updates."
new "يتم فك الضغط عن التحديثات"
# renpy/common/00updater.rpy:1279
old "The updates have been installed. The program will restart."
new "تم التحديث.. سيتم إعادة تشغيل البرنامج."
# renpy/common/00updater.rpy:1281
old "The updates have been installed."
new "تم التحديث."
# renpy/common/00updater.rpy:1283
old "The updates were cancelled."
new "تم إلغاء التحديث."
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# renpy/common/_compat/gamemenu.rpym:180
old "Empty Slot."
new "خانة فارغة"
# renpy/common/_compat/gamemenu.rpym:337
old "Previous"
new "السابق"
# renpy/common/_compat/gamemenu.rpym:344
old "Next"
new "التالي"
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# renpy/common/_compat/preferences.rpym:411
old "Joystick Mapping"
new "خيارات عصى التحكم"
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# renpy/common/_errorhandling.rpym:408
old "An exception has occurred."
new "حصل استثناء"
# renpy/common/_errorhandling.rpym:434
old "Rollback"
new "تراجع"
# renpy/common/_errorhandling.rpym:436
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
new "يقوم بالتراجع لنقطة سابقة لكي تستطيع اختيار شيء آخر"
# renpy/common/_errorhandling.rpym:439
old "Ignore"
new "تجاهل"
# renpy/common/_errorhandling.rpym:441
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
new "يتجاهل الاستثناء مما يستمح لك بالاستمرار. قد يسبب هذا المزيد من الاخطاء."
# renpy/common/_errorhandling.rpym:444
old "Reload"
new "إعادة المحاولة"
# renpy/common/_errorhandling.rpym:446
old "Reloads the game from disk, saving and restoring game state if possible."
new "يعيد تشغيل اللعبة من القرص الصلب, مع محاولة استعمادة آخر نقطة وحفظها عند الإستطاعة."
# renpy/common/_errorhandling.rpym:448
old "Open Traceback"
new "قراءة التقرير"
# renpy/common/_errorhandling.rpym:450
old "Opens the traceback.txt file in a text editor."
new "يفتح تقرير الخطأ في برنامج الملفات النصية."
# renpy/common/_errorhandling.rpym:456
old "Quits the game."
new "يخرج من اللعبة."
# renpy/common/_errorhandling.rpym:483
old "Parsing the script failed."
new "حصل خطأ أثناء تشغيل النص."
# renpy/common/_errorhandling.rpym:510
old "Open Parse Errors"
new "يفتح قائمة اخطاء التشغيل."
# renpy/common/_errorhandling.rpym:512
old "Opens the errors.txt file in a text editor."
new "يفتح ملف errors.txt في برنامج الملفات النصية"
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# renpy/common/_layout/classic_load_save.rpym:152
old "a"
new "a"
# renpy/common/_layout/classic_load_save.rpym:161
old "q"
new "q"
# : Translation updated at 2013-11-17 23:18
translate arabic strings:
# renpy/common/00action_file.rpy:587
old "Quick save complete."
new "تم الحفظ السريع بنجاح"
# : Translation updated at 2013-11-17 23:18
translate arabic strings:
# renpy/common/00gallery.rpy:521
old "Image [index] of [count] locked."
new "يوجد عدد صور [index] من أصل [count] مقفل"
# renpy/common/00gallery.rpy:539
old "prev"
new "السابق"
# renpy/common/00gallery.rpy:540
old "next"
new "التالي"
# renpy/common/00gallery.rpy:541
old "slideshow"
new "عرض الشرائح"
# renpy/common/00gallery.rpy:542
old "return"
new "العودة"
# : Translation updated at 2013-11-17 23:18
translate arabic strings:
# renpy/common/00layout.rpy:427
old "Are you sure you want to begin skipping?"
new "هل أنت متأكد من رغبتك في البدء بالتسريع؟"
# renpy/common/00layout.rpy:428
old "Are you sure you want to skip to the next choice?"
new "هل انت متأكد من رغبتك في التسريع حتى الخيار التالي؟"
# renpy/common/00layout.rpy:429
old "Are you sure you want to skip to unseen dialogue or the next choice?"
new "هل انت متأكد من رغبتك في تسريع الخيارات و الحوار الذي لم يسبق لك قرائته؟"
# : Translation updated at 2014-04-17 13:01
translate arabic strings:
# renpy/common/00console.rpy:179
old "%(version)s console, originally by Shiz, C, and delta.\n"
new ""
# renpy/common/00console.rpy:180
old "Press <esc> to exit console. Type help for help.\n"
new "إضغط زر الخروج لإغلاق لوحة التحكم, اكتب كلمة help للمساعدة"
# renpy/common/00console.rpy:184
old "Ren'Py script enabled."
new "لغة برمحة رينباي متاحه"
# renpy/common/00console.rpy:186
old "Ren'Py script disabled."
new "لغة برمجة رينباي غير متاحه"
# renpy/common/00console.rpy:392
old "help: show this help"
new "مساعده: عرض هذه المساعده"
# renpy/common/00console.rpy:397
old "commands:\n"
new "أوامر: \n"
# renpy/common/00console.rpy:407
old " <renpy script statement>: run the statement\n"
new "<renpy script statement>: عرض الأوامر\n"
# renpy/common/00console.rpy:409
old " <python expression or statement>: run the expression or statement"
new " <python expression or statement>: عرض التعبير او الأوامر"
# renpy/common/00console.rpy:417
old "clear: clear the console history"
new "clear: مسح تاريخ لوحة التحكم"
# renpy/common/00console.rpy:421
old "exit: exit the console"
new "exit: الخروج من لوحة التحكم"
# renpy/common/00console.rpy:429
old "load <slot>: loads the game from slot"
new "استرجاع <slot>: يقوم باسترجاع اللعب من نقطة الحفظ"
# renpy/common/00console.rpy:442
old "save <slot>: saves the game in slot"
new "حفظ <slot>: يقوم بحفظ اللعب في نقطة الحفظ"
# renpy/common/00console.rpy:453
old "reload: reloads the game, refreshing the scripts"
new "reload: يعيد تشغيل اللعبة مع عرض التغييرات في النص"
# renpy/common/00console.rpy:461
old "watch <expression>: watch a python expression"
new "مشاهده <expression>: يقوم بعرض تبيرات بايثون"
# renpy/common/00console.rpy:470
old "unwatch <expression>: stop watching an expression"
new "unwatch <expression>: يقوم بإيقاف تعبير بايثون"
# renpy/common/00console.rpy:478
old "unwatchall: stop watching all expressions"
new "unwatchall: يقوم بإيقاف كل تعبيرات بايثون"
# renpy/common/00console.rpy:484
old "jump <label>: jumps to label"
new "jump <label>: يقفز للعنوان"
# : Translation updated at 2014-04-17 13:01
translate arabic strings:
# renpy/common/00keymap.rpy:332
old "Autoreload"
new "إعادة التحميل تلقائياً"
# : Translation updated at 2014-04-17 13:01
translate arabic strings:
# renpy/common/_developer/developer.rpym:65
old "Developer Menu"
new "قائمة المبرمج"
# renpy/common/_developer/developer.rpym:67
old "Reload Game (Shift+R)"
new "إعادة تشغيل اللعبة (Shift+R)"
# renpy/common/_developer/developer.rpym:69
old "Console (Shift+O)"
new "لوحة التحكم (Shift+O)"
# renpy/common/_developer/developer.rpym:71
old "Variable Viewer"
new "مستعرض الأوامر"
# renpy/common/_developer/developer.rpym:73
old "Theme Test"
new "اختبار القوالب"
# renpy/common/_developer/developer.rpym:75
old "Image Location Picker"
new "مكان الصور المطلوبة"
# renpy/common/_developer/developer.rpym:77
old "Filename List"
new "قائمة اسماء الملفات"
# renpy/common/_developer/developer.rpym:81
old "Show Image Load Log"
new "عرض قائمة الصور "
# renpy/common/_developer/developer.rpym:84
old "Hide Image Load Log"
new "إخفاء قائمة الصور"
# renpy/common/_developer/developer.rpym:149
old "No variables have changed since the game started."
new "لم يتم تغيير اي من الأوامر منذ ان بدأت اللعبة"
# renpy/common/_developer/developer.rpym:152
old "Return to the developer menu"
new "العودة للوحة المبرمج"
# renpy/common/_developer/developer.rpym:272
old "{b}Missing Images{/b}"
new "{b}صور مفقودة{/b}"
# renpy/common/_developer/developer.rpym:424
old "Rectangle: %r"
new "مثلث: %r"
# renpy/common/_developer/developer.rpym:429
old "Mouse position: %r"
new "مكان المؤشر: %r"
# renpy/common/_developer/developer.rpym:431
old "Right-click or escape to quit."
new "إضغط بالزر الايمن او إضغط زر الخروح للإغلاق"
# renpy/common/_developer/developer.rpym:482
old "Done"
new "تم"
# : Translation updated at 2014-04-17 13:01
translate arabic strings:
# renpy/common/_developer/inspector.rpym:43
old "Displayable Inspector"
new "اختبار المستعرضات"
# renpy/common/_developer/inspector.rpym:49
old "Nothing to inspect."
new "لا يوجد شيء ليتم اختباره"
# renpy/common/_developer/inspector.rpym:58
old "Size"
new "حجم"
# renpy/common/_developer/inspector.rpym:63
old "Style"
new "مظهر"
# renpy/common/_developer/inspector.rpym:123
old "Inspecting Styles of [displayable_name!q]"
new "يتم اختبار المظهر الخاص بـ [displayable_name!q]"
# renpy/common/_developer/inspector.rpym:135
old "displayable:"
new "مستعرضات"
# renpy/common/_developer/inspector.rpym:142
old " (no properties affect the displayable)"
new " (لا توجد اي مؤثرات على هذا المستعرض)"
# renpy/common/_developer/inspector.rpym:144
old " (default properties omitted)"
new " (تم استبعاد تأثير المؤثرات القياسية)"
# renpy/common/_developer/inspector.rpym:174
old "<repr() failed>"
new "<repr() failed>"
# Translation updated at 2014-09-30 23:01
translate arabic strings:
# renpy/common/_developer/inspector.rpym:80
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 "تم نسخ الموضع إلى الحافظة."
+52
View File
@@ -0,0 +1,52 @@
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# game/distribute.rpy:333
old "Nothing to do."
new "لا شيء لإنجازه"
# game/distribute.rpy:337
old "Scanning project files..."
new "يتم فحص الملفات..."
# game/distribute.rpy:344
old "Scanning Ren'Py files..."
new "يتم فحص ملفات رينباي..."
# game/distribute.rpy:494
old "Archiving files..."
new "يتم أرشفة الملفات..."
# game/distribute.rpy:745
old "Writing the [variant] [format] package."
new "يتم كتابة ملفات [variant] [format]"
# game/distribute.rpy:758
old "Making the [variant] update zsync file."
new "Making the [variant] update zsync file."
# game/distribute.rpy:854
old "Processed {b}[complete]{/b} of {b}[total]{/b} files."
new "تم انهاء {b}[complete]{/b} من عدد {b}[total]{/b} من الملفات."
# game/distribute.rpy:915
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 "تم الإنتهاء من تكوين رزمة البيانات لنشر اللعبة. بسبب اختلاف نظام الملفات في الأنظمة التشغيلية ماك و لينوكس, لا يمكن فك الضغط عن الرزمة الخاصة بتلك الأنظمة على نظام وندوز."
# : Translation updated at 2013-11-17 23:18
translate arabic strings:
# game/distribute.rpy:358
old "No packages are selected, so there's nothing to do."
new "لم يتم اختيار اي حزمة, لم يحصل اي شيء."
# : Translation updated at 2014-04-17 13:01
translate arabic 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 "فشل بناء ملفات النشر. build.directory_name يجب أن لا يحتوي على مساحات فارغة, فواصل, او فواصل منقوطة في إسم المجلد "
@@ -0,0 +1,66 @@
translate arabic strings:
# game/distribute_gui.rpy:139
old "Build Distributions: [project.current.name!q]"
new "تجميع الملفات تجهيزاً للنشر: [project.current.name!q]"
# game/distribute_gui.rpy:154
old "Directory Name:"
new "اسم المجلد:"
# game/distribute_gui.rpy:158
old "Executable Name:"
new "اسم الملف التشغيلي:"
# game/distribute_gui.rpy:167
old "Actions:"
new "الأوامر:"
# game/distribute_gui.rpy:175
old "Edit options.rpy"
new "تحرير options.rpy"
# game/distribute_gui.rpy:176
old "Refresh"
new "إعادة تحميل"
# game/distribute_gui.rpy:193
old "Build Packages:"
new "بناء الرزمة البيانية:"
# game/distribute_gui.rpy:208
old "Build Updates"
new "بناء تحديثات:"
# game/distribute_gui.rpy:212
old "Build"
new "بناء"
# game/distribute_gui.rpy:219
old "Errors were detected when running the project. Please ensure the project runs without errors before building distributions."
new "تم ايجاد بعض الاخطاء في المشروع. الرجاء التأكد من خلو المشروع من الأخطاء قبل نشره بشكل نهائي."
# 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 "مشروعك يخلو من معلومات النشر, هل ترغب في إضافة هذه المعلومات في نهاية ملف 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 "إضافة بنود 'مِن' إلى أوامر الجلب التي لا تحتوي عليها."
+64
View File
@@ -0,0 +1,64 @@
# Translation updated at 2013-04-30 07:54
translate arabic 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}نقترح.{/b} محرر نص له واجهة سهلة الاستعمال ويعين على كتابة النصوص البرمجية يفضل برنامج يحتوي على مدقق لغوي. Editraحالياً لا يدعم اللغات الأجنبية مثل اللغه الكورية و الصينية و اليابانية."
# 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}نقترح.{/b} محرر نص له واجهة سهلة الاستعمال ويعين على كتابة النصوص البرمجية يفضل برنامج يحتوي على مدقق لغوي. Editraحالياً لا يدعم اللغات الأجنبية مثل اللغه الكورية و الصينية و اليابانية. على نظام لينوكس, Editra يحتاج wxPython."
# game/editor.rpy:137
old "The may have occured because wxPython is not installed on this system."
new "قد يكون السبب ان wxPython غير موجود على هذا الجهاز."
# game/editor.rpy:144
old "Up to 22 MB download required."
new "مطلوب تحميل ملف بحجم 22 ميغا بايت."
# game/editor.rpy:157
old "1.8 MB download required."
new "مطلوب تحميل ملف بحجم 1.8 ميغا بايت."
# game/editor.rpy:158
old "This may have occured because Java is not installed on this system."
new "قد يكون السبب ان الجافا غير موجوده على هذا الجهاز."
# game/editor.rpy:327
old "An exception occured while launching the text editor:\n[exception!q]"
new "حصل استثناء اثناء فتح المحرر: \n[exception!q]"
# game/editor.rpy:378
old "Select Editor"
new "الرجاء اختيار المحرر"
# 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 "محرر النصوص هو برنامج يساعدك على تعديل ملفات رينباي البرمجية والحوار. هنا, يمكنك اختيار المحرر الذي سيستعلمه رينباي. إذا لم يكن لديك مسبقاً, سيتم تحميله و تنصيبه بشكل اوتوماتيكي."
# game/editor.rpy:415
old "Cancel"
new "إلغاء الامر"
# Translation updated at 2013-11-17 23:18
translate arabic strings:
# game/editor.rpy:137
old "This may have occured because wxPython is not installed on this system."
new "قد يكون سبب ذلك ان wxPython غير موجود في نظام التشغيل لديك"
# game/editor.rpy:155
old "A mature editor that requires Java."
new "محرر متخصص يستعمل لغة جافا"
# game/editor.rpy:164
old "Invokes the editor your operating system has associated with .rpy files."
new "يقوم بفتح البرنامج المسؤول عن تحرير ملفات .rpy في نظامك التشغيلي"
# game/editor.rpy:180
old "Prevents Ren'Py from opening a text editor."
new "يمنع رينباي من فتح اي محرر نصوص"
+123
View File
@@ -0,0 +1,123 @@
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# game/front_page.rpy:79
old "+ Create New Project"
new "+ إبدأ مشروعاً جديداً"
# game/front_page.rpy:90
old "Launch Project"
new "تشغيل المشروع"
# game/front_page.rpy:111
old "Tutorial"
new "الدليل العملي"
# game/front_page.rpy:112
old "The Question"
new "السؤال"
# game/front_page.rpy:128
old "Active Project"
new "المشروع الحالي"
# game/front_page.rpy:136
old "Open Directory"
new "فتح مجلد"
# game/front_page.rpy:141
old "game"
new "اللعبة"
# game/front_page.rpy:142
old "base"
new "المشروع كله"
# game/front_page.rpy:148
old "Edit File"
new "تحرير ملف"
# game/front_page.rpy:156
old "All script files"
new "جميع الملفات النصية"
# game/front_page.rpy:165
old "Navigate Script"
new "مهام إضافية"
# game/front_page.rpy:176
old "Check Script (Lint)"
new "فحص الملف (لينت)"
# game/front_page.rpy:177
old "Change Theme"
new "تغيير المظهر"
# game/front_page.rpy:178
old "Delete Persistent"
new "حذف الملفات المؤقتة"
# game/front_page.rpy:186
old "Build Distributions"
new "تجميع المشروع للنشر"
# game/front_page.rpy:188
old "Generate Translations"
new "تجهيز ملفات للترجمة"
# game/front_page.rpy:204
old "Checking script for potential problems..."
new "يتم فحص الملفات لأي اخطاء محتملة..."
# game/front_page.rpy:219
old "Deleting persistent data..."
new "يتم الآن حذف الملفات المؤقتة "
# : Translation updated at 2013-11-17 23:18
translate arabic strings:
# game/front_page.rpy:204
old "Android"
new "أندرويد"
# game/front_page.rpy:206
old "Extract Dialogue"
new "استخراج النص"
# : Translation updated at 2014-04-17 13:01
translate arabic strings:
# game/front_page.rpy:144
old "[p.name!q] (template)"
new "[p.name!q] (template)"
# Translation updated at 2014-09-30 23:01
translate arabic strings:
# game/front_page.rpy:35
old "Open [text] directory."
new "فتح المجلد [text]"
# game/front_page.rpy:150
old "Select project [text]."
new "اختر المشروع [text]"
# game/front_page.rpy:234
old "Force Recompile"
new "إعادة حزم الملفات"
# game/front_page.rpy:285
old "Recompiling all rpy files into rpyc files..."
new "يتم إعادة حزم الملفات من صيغة rpy إلى rpyc..."
translate arabic strings:
# game/front_page.rpy:246
old "iOS"
new "iOS نظام تشغيل"
+90
View File
@@ -0,0 +1,90 @@
translate arabic strings:
# game/interface.rpy:89
old "Documentation"
new "المستندات المرفقة"
# game/interface.rpy:90
old "Ren'Py Website"
new "موقع رينباي"
# game/interface.rpy:91
old "Ren'Py Games List"
new "قائمة ألعاب رينباي"
# game/interface.rpy:92
old "About"
new "معلومات"
# game/interface.rpy:99
old "update"
new "تحديث"
# game/interface.rpy:101
old "preferences"
new "خيارات"
# game/interface.rpy:102
old "quit"
new "خروج"
# game/interface.rpy:149
old "Yes"
new "نعم"
# game/interface.rpy:151
old "No"
new "لا"
# game/interface.rpy:181
old "Due to package format limitations, non-ASCII file and directory names are not allowed."
new "بسبب محدودية التجميع, الاحرف الغير لاتينيه غير مسموح بها في اسم الملف او المجلدات"
# game/interface.rpy:183
old "[title]"
new "[title]"
# game/interface.rpy:248
old "ERROR"
new "خطأ"
# game/interface.rpy:280
old "While [what!q], an error occured:"
new "حصل خطأ أثناء [what!q]"
# game/interface.rpy:281
old "[exception!q]"
new "[exception!q]"
# game/interface.rpy:298
old "Text input may not contain the {{ or [[ characters."
new "لا يمكن استعمال الرمزان {{ و ]] هنا"
# game/interface.rpy:303
old "File and directory names may not contain / or \\."
new "غير مسموح ان يحتوي اسم الملف او المجلد على الرمزان / أو \\"
# game/interface.rpy:309
old "File and directory names must consist of ASCII characters."
new "اسم الملف و المجلدات التي تحتويه يجب ان تكون مكتوبة بأحرف ASCII "
# game/interface.rpy:330
old "INFORMATION"
new "معلومات"
# game/interface.rpy:373
old "PROCESSING"
new "يتم إجراء العمليات"
# game/interface.rpy:390
old "QUESTION"
new "سؤال"
translate arabic strings:
# game/interface.rpy:451
old "CHOICE"
new "إختيار"
+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 إلى:"
+71
View File
@@ -0,0 +1,71 @@
translate arabic strings:
# game/navigation.rpy:150
old "Navigate: [project.current.name]"
new "الذهاب إلى: [project.current.name]"
# game/navigation.rpy:159
old "Order: "
new "الترتيب:"
# game/navigation.rpy:160
old "alphabetical"
new "أبجدي"
# game/navigation.rpy:162
old "by-file"
new "ملف ملف"
# game/navigation.rpy:164
old "natural"
new "طبيعي"
# game/navigation.rpy:168
old "refresh"
new "إعادة تحميل"
# game/navigation.rpy:176
old "Category:"
new "فئة:"
# game/navigation.rpy:178
old "files"
new "ملفات"
# game/navigation.rpy:179
old "labels"
new "وسم"
# game/navigation.rpy:180
old "defines"
new "تحديد"
# game/navigation.rpy:181
old "transforms"
new "التحول"
# game/navigation.rpy:182
old "screens"
new "النوافذ"
# game/navigation.rpy:183
old "callables"
new "ما يمكن استجلابه"
# game/navigation.rpy:184
old "TODOs"
new "TODOs"
# game/navigation.rpy:223
old "+ Add script file"
new "+إضافة ملف نص"
# game/navigation.rpy:231
old "No TODO comments found.\n\nTo create one, include \"# TODO\" in your script."
new "No TODO comments found.\n\nTo create one, include \"# TODO\" in your script."
# game/navigation.rpy:238
old "The list of names is empty."
new "قائمة الأسماء فارغة"
+48
View File
@@ -0,0 +1,48 @@
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# game/new_project.rpy:22
old "Choose Project Template"
new "الرجاء اختيار تصميم المظهر للمشروع"
# 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 "الرجاء اختيار التصميم الذي ترغبه لمشروعك الجديد. رينباي يأتي بعدة تصاميم قياسية يمكنك التعديل عليها لاحقاً."
# game/new_project.rpy:55
old "PROJECT NAME"
new "اسم المشروع"
# game/new_project.rpy:56
old "Please enter the name of your project:"
new "الرجاء اختيار اسم لمشروعك الجديد"
# game/new_project.rpy:62
old "The project name may not be empty."
new "لا يمكن ان يكون اسم المشروع فارغاً"
# game/new_project.rpy:67
old "[project_name!q] already exists. Please choose a different project name."
new "الاسم [project_name!q] يوجد مسبقاً, الرجاء اختيار اسم مختلف."
# game/new_project.rpy:70
old "[project_dir!q] already exists. Please choose a different project name."
new "[project_dir!q] يوجد مسبقاً, الرجاء اختيار اسم مختلف."
# : Translation updated at 2013-11-17 23:18
translate arabic strings:
# 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 "الرجاء اختيار القالب المطلوب للمشروع الجديد. هذه القوالب تقوم بتجهيز اتجاه النص و اللغه المستخدمة في الواجهة لتسهل عملية البدء. إذا لم تكن لغتك مدعومة الرجاء اختيار اللغة الانجليزية."
# : Translation updated at 2014-04-17 13:01
translate arabic strings:
# game/new_project.rpy:71
old "The projects directory could not be set. Giving up."
new "لم يتم تحديد مجلد المشاريع, سيتم الإلغاء"
+95
View File
@@ -0,0 +1,95 @@
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# game/preferences.rpy:40
old "Launcher Preferences"
new "خيارات برنامج التشغيل"
# game/preferences.rpy:61
old "Projects Directory:"
new "دليل المشاريع:"
# game/preferences.rpy:68
old "[persistent.projects_directory!q]"
new "[persistent.projects_directory!q]"
# game/preferences.rpy:70
old "Not Set"
new "غير محدد"
# game/preferences.rpy:84
old "Text Editor:"
new "محرر الملفات النصية:"
# game/preferences.rpy:106
old "Update Channel:"
new "مصدر التحديثات:"
# game/preferences.rpy:126
old "Navigation Options:"
new "خيارات استعراض المجلدات"
# game/preferences.rpy:130
old "Include private names"
new "تضمين الأسماء الخاصة"
# game/preferences.rpy:131
old "Include library names"
new "تضمين اسماء المكتبات"
# game/preferences.rpy:141
old "Launcher Options:"
new "خيارات برنامج التشغيل:"
# game/preferences.rpy:145
old "Hardware rendering"
new "الإستعراض بواسطة قطع الجهاز الداخلية"
# game/preferences.rpy:148
old "Console output"
new "الإستعراض بواسطة البرمجيات المتوفرة"
# game/preferences.rpy:169
old "Open launcher project"
new "فتح الواجهة التشغيلية كمشروع"
# game/preferences.rpy:183
old "Language:"
new "اللغة:"
# Translation updated at 2014-04-17 13:01
translate arabic strings:
# game/preferences.rpy:164
old "Show templates"
new "عرض القوالب"
# Translation updated at 2014-09-30 23:01
translate arabic strings:
# game/preferences.rpy:91
old "Projects directory: [text]"
new "مجلد المشاريع [text]"
# game/preferences.rpy:114
old "Text editor: [text]"
new "محرر النصوص [text]"
# game/preferences.rpy:171
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 "صنع خانات فارغة للترجمات"
+68
View File
@@ -0,0 +1,68 @@
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# game/project.rpy:196
old "Ren'Py is scanning the project..."
new "رينباي يقوم بفحص المشروع"
# game/project.rpy:485
old "PROJECTS DIRECTORY"
new "سياق مجلدات المشاريع"
# 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 "الرجاء اختيار نسق المشاريع من الصفحة الخاصة بذلك. \n{b}قد تكون النافذة ظهرت خلف هذه النافذة.{/b}"
# game/project.rpy:485
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 "سيقوم البرنامج بفحص المجلد هذا لإيجاد المشاريع السابقة, أو ليضع المشاريع الجديده فيه, و ايضاً لوضع المشاريع المنتهيه عند تجهيزها للنشر."
# game/project.rpy:525
old "Ren'Py was unable to run python with tkinter to choose the projects directory."
new "رينباي لم يستطع تشغيل برمجيات بايثون للبحث عن مجلد المشاريع."
# game/project.rpy:529
old "Ren'Py has set the projects directory to:"
new "رينباي قام بتحديد مجلد المشاريع إلى المكان التالي:"
# : Translation updated at 2014-04-17 13:01
translate arabic strings:
# game/project.rpy:48
old "After making changes to the script, press shift+R to reload your game."
new "عند إجراء أي تغييرات في ملف الحوار, يمكنك ضغط shift+R لترى التغييرات داخل اللعبة"
# game/project.rpy:49
old "Press shift+O (the letter) to access the console."
new "إضغط shift+O للدخول على لوحة التحكم"
# game/project.rpy:50
old "Press shift+D to access the developer menu."
new "إضغط shift+D للدخول على لوحة تحكم المبرمج"
# game/project.rpy:219
old "Launching the project failed."
new "لم تنجح محاولة إقلاع المشروع"
# game/project.rpy:219
old "Please ensure that your project launches normally before running this command."
new "الرجاء التأكد من سلامة إقلاع المشروع قبل تشغيل هذا الأمر البرمجي"
# game/project.rpy:516
old "Launching"
new "جاري الإقلاع"
# 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 "رينباي لم يتمكن من تشغيل بايثون مع tkinter لكي يختار مجلد المشاريع, الرجاء تنصيب Python-tk او tkinter"
# Translation updated at 2014-09-30 23:01
translate arabic strings:
# game/project.rpy:47
old "Have you backed up your projects recently?"
new "هل قمت بعمل نسخة احتياطية من مشاريعك مؤخراً؟"
+17
View File
@@ -0,0 +1,17 @@
translate arabic python:
al = "DejaVuSans.ttf"
style.l_default.font = al
style.l_default.size = 16
style.l_button_text.selected_font = al
style.l_button_text.selected_bold = True
style.l_link_text.font = al
style.l_alternate_text.font = al
style.l_navigation_button_text.font = al
style.l_navigation_text.font = al
style.l_navigation_text.bold = True
style.l_checkbox_text.selected_font = al
style.l_nonbox_text.selected_font = al
style.hyperlink_text.font = al
make_style_backup()
config.rtl = True
+38
View File
@@ -0,0 +1,38 @@
translate arabic strings:
# game/translations.rpy:10
old "Create or Update Translations"
new "صنع او تحديث الترجمات"
# game/translations.rpy:10
old "Please enter the name of the language for which you want to create or update translations."
new "الرجاء كتابة اسم اللغة التي ستقوم بالترجمة إليها و الضغط على زر انتر"
# game/translations.rpy:15
old "The language name can not be the empty string."
new "لا يمكن ان يكون اسم اللغة فارغاً"
# game/translations.rpy:26
old "Ren'Py is generating translations...."
new "يقوم رينباي بتصنيع ملفات الترجمة..."
# game/translations.rpy:30
old "Ren'Py has finished generating [language] translations."
new "انتهى رينباي من صناعة ملفات الترجمة إلى [language]"
translate arabic strings:
# game/translations.rpy:44
old "What format would you like for the extracted dialogue?"
new "ما هي الصيغة التي تريدها للنص المستخرج؟"
# game/translations.rpy:56
old "Ren'Py is extracting dialogue...."
new "رينباي يقوم باستخراج الحوار إلى ملف نص"
# 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 "رينباي انتهى من استخراج الحوار. الحوار المستخرج يوجد الآن في [format] في المجلد الرئيسي"
+100
View File
@@ -0,0 +1,100 @@
# : Translation updated at 2013-04-30 07:54
translate arabic strings:
# game/updater.rpy:54
old "Select Update Channel"
new "الرجاء اختيار طريقة التحديث"
# game/updater.rpy:65
old "The update channel controls the version of Ren'Py the updater will download. Please select an update channel:"
new "طريقة التحديث تحدد لبرنامج رينباي اي المواقع يستخدم لإيجاد النسخ الجديدة. الرجاء اختيار الطريقة التي تناسبك."
# game/updater.rpy:70
old "Release"
new "نسخة مكتملة"
# game/updater.rpy:76
old "{b}Recommended.{/b} The version of Ren'Py that should be used in all newly-released games."
new "{b}موصى به.{/b} نسخة رينباي التي يفضل استعمالها مع كل الالعاب الجديدة."
# game/updater.rpy:81
old "Prerelease"
new "نسخة مبدأية"
# 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 "عينة من نسخة رينباي القادمة تسمح لك بتجربة الإضافات الجديدة. لا ننصح باستعمالها لصناعة ألعاب معدة للنشر."
# game/updater.rpy:93
old "Experimental"
new "نسخة تجريبية"
# game/updater.rpy:99
old "Experimental versions of Ren'Py. You shouldn't select this channel unless asked by a Ren'Py developer."
new "النسخ التجريبية من رينباي. الأفضل ألا تستعمل هذه النسخ إلا لو طلب منك ذلك احد مبرمجي رينباي"
# game/updater.rpy:119
old "An error has occured:"
new "حصل خطأ:"
# game/updater.rpy:121
old "Checking for updates."
new "يتم البحث عن تحديثات."
# game/updater.rpy:123
old "Ren'Py is up to date."
new "نسخة رينباي التي لديك هي الأحدث."
# game/updater.rpy:125
old "[u.version] is now available. Do you want to install it?"
new "النسخة [u.version] متوفرة, هل ترغب في تنصيبها؟"
# game/updater.rpy:127
old "Preparing to download the update."
new "يتم التجهيز لتنزيل التحديث."
# game/updater.rpy:129
old "Downloading the update."
new "يتم تنزيل التحديث."
# game/updater.rpy:131
old "Unpacking the update."
new "يتم فك الضغط عن التحديث."
# game/updater.rpy:133
old "Finishing up."
new "اللمسات النهائية."
# game/updater.rpy:135
old "The update has been installed. Ren'Py will restart."
new "تم تنصيب التحديثات بنجاح, سيتم إعادة تشغيل رينباي الآن."
# game/updater.rpy:137
old "The update has been installed."
new "تم تنصيب التحديثات."
# game/updater.rpy:139
old "The update was cancelled."
new "تم إلغاء التحديث."
# game/updater.rpy:156
old "Ren'Py Update"
new "تحديثات رينباي."
# game/updater.rpy:162
old "Proceed"
new "استمرار."
# : Translation updated at 2014-04-17 13:01
translate arabic strings:
# game/updater.rpy:129
old "Nightly"
new "مسائي"
# 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 "أحدث نسخة طازجة من رينباي التجريبي, قد يحتوي على آخر مستجدات رينباي و قد لا يعمل مطلقاً"
+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"
+155
View File
@@ -0,0 +1,155 @@
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 "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 "Pyrkii emuloimaan Android-tablettia.\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: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 "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."
+43
View File
@@ -0,0 +1,43 @@
translate finnish strings:
# game/choose_theme.rpy:303
old "Teemaa ei voitu vaihtaa. Kenties options.rpy:tä muutettiin liikaa."
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"
+497
View File
@@ -0,0 +1,497 @@
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"
+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 "Prosessoitu {b}[complete]{/b}/{b}[total]{/b} tiedostoa."
@@ -0,0 +1,47 @@
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?"
+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"
+107
View File
@@ -0,0 +1,107 @@
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..."
+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 "PROSESSOIDAAN"
# game/interface.rpy:478
old "CHOICE"
new "VALITSE"
+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."
+75
View File
@@ -0,0 +1,75 @@
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 asetettu"
# 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:"
+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:"
+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 "Versio"
# 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"
+13
View File
@@ -0,0 +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"
+21
View File
@@ -0,0 +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"
+160
View File
@@ -0,0 +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."
+41
View File
@@ -0,0 +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"
+458
View File
@@ -0,0 +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>"
+42
View File
@@ -0,0 +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."
@@ -0,0 +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?"
+56
View File
@@ -0,0 +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."
+26
View File
@@ -0,0 +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)"
+85
View File
@@ -0,0 +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"
+69
View File
@@ -0,0 +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."
+38
View File
@@ -0,0 +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."
+57
View File
@@ -0,0 +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:"
+54
View File
@@ -0,0 +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."
+195
View File
@@ -0,0 +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"
+33
View File
@@ -0,0 +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."
+94
View File
@@ -0,0 +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."
+9
View File
@@ -0,0 +1,9 @@
translate italian strings:
# game/about.rpy:21
old "[version!q]"
new "[version!q]"
# game/about.rpy:25
old "View license"
new "Leggi licenza"
+21
View File
@@ -0,0 +1,21 @@
translate italian strings:
# game/add_file.rpy:7
old "FILENAME"
new "Nome del file"
# game/add_file.rpy:7
old "Enter the name of the script file to create."
new "Inserisci il nome del file di script da creare."
# game/add_file.rpy:10
old "The filename must have the .rpy extension."
new "Il file deve avere estensione .rpy."
# game/add_file.rpy:18
old "The file already exists."
new "Il file esiste già."
# 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 carica automaticamente tutti i file di script che finiscono con .rpy.\nPer usare questo file, definisci una label e saltaci (jump) da un altro file."
+162
View File
@@ -0,0 +1,162 @@
translate italian strings:
# game/android.rpy:12
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 "Per compilare un pacchetto di Android si prega di scaricare RAPT, estrarlo e posizionarlo nella cartella di Ren'Py e riavviare il launcher di Ren'Py."
# game/android.rpy:13
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 "La versione a 32-bit del Java Development Kit é necessaria per compilare pacchetti Android su Windows. Il JDK é diverso dal JRE ed é quindi possibile che tu abbia installato Java senza però aver installato il JDK.\n\n Si prega di {a=http://www.oracle.com/technetwork/java/javase/downloads/index.html}scaricare ed installare il JDK{/a} e, successivamente, riavviare il launcher di Ren'Py."
# game/android.rpy:14
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 "Per compilare i pacchetti di Android, si prega di scaricare RAPT (da {a=http://www.renpy.org/dl/android}qui{/a}), estrarlo, posizionarlo nella cartella di Ren'Py ed infine riavviare il launcher di Ren'Py."
# game/android.rpy:15
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 é stato installato ma devi ancora installare l'Android SDK prima di poter compilare pacchetti per Android; scegli \"Install SDK\" per farlo."
# game/android.rpy:16
old "RAPT has been installed, but a key hasn't been configured. Please create a new key, or restore android.keystore."
new "RAPT é stato installato ma la chiave non é stata configurata. Si prega di creare una chiave o di ripristinare android.keystore."
# game/android.rpy:17
old "The current project has not been configured. Use \"Configure\" to configure it before building."
new "Il progetto corrente non é stato configurato. Usa \"Configura\" per configurarlo prima della compilazione."
# game/android.rpy:18
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 "Scegli \"Compila\" per compilare il progetto corrente o collega un dispositivo Android e scegli \"Compila ed Installa\" per compilarlo ed installarlo sul dispositivo."
# game/android.rpy:20
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 "Prova ad emulare un dispositivo Android.\n\nL'input tattile viene emulato attraverso il mouse e soltanto quando il tasto rimane premuto. Esc é assegnato al pulsante \"menu\" e PaginaSu é assegnato al pulsante \"indietro\"."
# game/android.rpy:21
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 "Prova ad emulare un tablet Android.\n\nL'input tattile viene emulato attraverso il mouse e soltanto quando il tasto é tenuto premuto. Esc é assegnato al pulsante \"menu\" e PaginaSu é assegnato al pulsante \"indietro\"."
# game/android.rpy:22
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 "Prova ad emulare una console OUYA.\n\nL'input del controller é assegnato alle freccie direzionali, Invio é assegnato al tasto \"select\", \"Esc\" é assegnato al tasto \"menu\" e PaginaSu é assegnato al tasto \"back\"."
# game/android.rpy:23
old "Downloads and installs the Android SDK and supporting packages. Optionally, generates the keys required to sign the package."
new "Scarica ed installa l'Android SDK ed i pacchetti di supporto. Opzionalmente, genera le chiavi richieste per firmare il pacchetto."
# game/android.rpy:24
old "Configures the package name, version, and other information about this project."
new "Configure il nome del pacchetto, la versione ed altre informazioni su questo progetto."
# game/android.rpy:25
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 "Apre il file contenente le chiavi di Google Play nell'editor.\n\nQuesto serve solamente se l'applicazione sta usando un APK di espansione. Leggi la documentazione per maggiori dettagli."
# game/android.rpy:26
old "Builds the Android package."
new "Compila il pacchetto di Android."
# game/android.rpy:27
old "Builds the Android package, and installs it on an Android device connected to your computer."
new "Compila il pacchetto di Android e lo installa su un dispositivo connesso al tuo computer."
# game/android.rpy:148
old "{a=%s}%s{/a}"
new "{a=%s}%s{/a}"
# game/android.rpy:157
old "QUESTION"
new "DOMANDA"
# game/android.rpy:367
old "Android: [project.current.name!q]"
new "Android: [project.current.name!q]"
# game/android.rpy:387
old "Emulation:"
new "Emulazione:"
# game/android.rpy:395
old "Phone"
new "Telefono"
# game/android.rpy:399
old "Tablet"
new "Tablet"
# game/android.rpy:403
old "Television / OUYA"
new "Televisione / OUYA"
# game/android.rpy:415
old "Build:"
new "Compila:"
# game/android.rpy:423
old "Install SDK & Create Keys"
new "Installa SDK e Crea Chiavi"
# game/android.rpy:427
old "Configure"
new "Configura"
# game/android.rpy:431
old "Build Package"
new "Compila pacchetto"
# game/android.rpy:435
old "Build & Install"
new "Compila ed Installa"
# game/android.rpy:486
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 "Prima di pacchettizzare le applicazioni di Android hai bisogno di scaricare RAPT (Ren'Py Android Packaging Tool). Vuoi scaricarlo adesso?"
# 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 "Prova ed emulare una console connessa a televisore come OUYA o Fire TV.\n\nL'input del controller é assegnato alle freccie direzionali, Invio é assegnato al tasto \"select\", \"Esc\" é assegnato al tasto \"menu\" e PageUp é assegnato al tasto \"back\". "
# game/android.rpy:47
old "Connects to an Android device running ADB in TCP/IP mode."
new "Connette ad un dispositivo Android che esegue ADB in modalità TCP/IP."
# game/android.rpy:48
old "Disconnects from an Android device running ADB in TCP/IP mode."
new "Disconnette da un dispositivo Android che esegue ADB in modalità TCP/IP."
# game/android.rpy:516
old "Other:"
new "Altro:"
# game/android.rpy:524
old "Remote ADB Connect"
new "Connessione remota ad ADB"
# game/android.rpy:528
old "Remote ADB Disconnect"
new "Disconessione remota da ADB"
# game/android.rpy:608
old "Remote ADB Address"
new "Indirizzo remoto di ADB"
# 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 "Si prega di inserire l'indirizzo IP ed il numero della porta a cui connettersi nel formato \"192.168.1.143:5555\". Consulta le istruzioni del tuo dispositivo per determinare se questo supporta ADB e con quali numeri di indirizzo e porta."
# game/android.rpy:619
old "Invalid remote ADB address"
new "Indirizzo remoto di ADB invalido"
# game/android.rpy:619
old "The address must contain one exactly one ':'."
new "L'indirizzo deve contenere esattamente un ':'."
# game/android.rpy:623
old "The host may not contain whitespace."
new "L'host non può contenere spazi vuoti."
# game/android.rpy:629
old "The port must be a number."
new "La porta deve essere un numero."
+37
View File
@@ -0,0 +1,37 @@
translate italian strings:
# game/choose_theme.rpy:274
old "Could not change the theme. Perhaps options.rpy was changed too much."
new "Non é stato possibile cambiare il tema. Forse options.rpy é stato modificato troppo radicalmente."
# game/choose_theme.rpy:332
old "Display"
new "Schermo"
# game/choose_theme.rpy:333
old "Window"
new "Finestra"
# game/choose_theme.rpy:334
old "Fullscreen"
new "Schermo intero"
# game/choose_theme.rpy:335
old "Planetarium"
new "Planetarium"
# game/choose_theme.rpy:342
old "Sound Volume"
new "Volume audio"
# game/choose_theme.rpy:376
old "Choose Theme"
new "Scegli tema"
# game/choose_theme.rpy:389
old "Theme"
new "Tema"
# game/choose_theme.rpy:413
old "Color Scheme"
new "Schema di colore"
+498
View File
@@ -0,0 +1,498 @@
#translation: renpy/common/00action_file.rpy
translate italian strings:
# renpy/common/00action_file.rpy:124
old "%b %d, %H:%M"
new "%d %b, %H:%M"
# renpy/common/00action_file.rpy:587
old "Quick save complete."
new "Salvataggio rapido completato."
#translation: renpy/common/00gallery.rpy
translate italian strings:
# renpy/common/00gallery.rpy:521
old "Image [index] of [count] locked."
new "Immagine [index] di [count] bloccata."
# renpy/common/00gallery.rpy:539
old "prev"
new "prec"
# renpy/common/00gallery.rpy:540
old "next"
new "succ"
# renpy/common/00gallery.rpy:541
old "slideshow"
new "presentazione"
# renpy/common/00gallery.rpy:542
old "return"
new "ritorna"
#translation: renpy/common/00gltest.rpy
translate italian strings:
# renpy/common/00gltest.rpy:50
old "Graphics Acceleration"
new "Accelerazione grafica"
# renpy/common/00gltest.rpy:54
old "Automatically Choose"
new "Scegli automaticamente"
# renpy/common/00gltest.rpy:59
old "Force Angle/DirectX Renderer"
new "Forza renderer via Angle/DirectX"
# renpy/common/00gltest.rpy:63
old "Force OpenGL Renderer"
new "Forza renderer via OpenGL"
# renpy/common/00gltest.rpy:67
old "Force Software Renderer"
new "Forza renderer via software"
# renpy/common/00gltest.rpy:73
old "Changes will take effect the next time this program is run."
new "Le modifiche prenderanno effetto al prossimo avvio di questo programma."
# renpy/common/00gltest.rpy:77
old "Quit"
new "Esci"
# renpy/common/00gltest.rpy:82
old "Return"
new "Ritorna"
# renpy/common/00gltest.rpy:112
old "Performance Warning"
new "Avviso di prestazioni"
# renpy/common/00gltest.rpy:117
old "This computer is using software rendering."
new "Questo computer sta usando il rendering via software."
# renpy/common/00gltest.rpy:119
old "This computer is not using shaders."
new "Questo computer non fa uso degli shaders."
# renpy/common/00gltest.rpy:121
old "This computer is displaying graphics slowly."
new "Questo computer sta visualizzando la grafica lentamente."
# renpy/common/00gltest.rpy:123
old "This computer has a problem displaying graphics: [problem]."
new "Questo computer ha un problema a visualizzare la grafica: [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 "I suoi driver video potrebbero essere vecchi o non funzionanti correttamente. Questo potrebbe portare a visualizzare la grafica lentamente o impropriamente. Aggiornare DirectX potrebbe risolvere questo problema."
# 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 "I suoi driver video potrebbero essere vecchi o non funzionanti correttamente. Questo potrebbe portare a visualizzare la grafica lentamente o impropriamente."
# renpy/common/00gltest.rpy:135
old "Update DirectX"
new "Aggiorna DirectX"
# renpy/common/00gltest.rpy:141
old "Continue, Show this warning again"
new "Continua, Mostra questo avviso nuovamente"
# renpy/common/00gltest.rpy:145
old "Continue, Don't show warning again"
new "Continua, Non mostrare più questo avviso"
# renpy/common/00gltest.rpy:171
old "Updating DirectX."
new "Aggiornando DirectX."
# 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 "Il programma di installazione web di DirectX è stato avviato e potrebbe essere minimizzato nella barra delle applicazioni. Prego seguire le istruzioni per installare DirectX."
# 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}Nota:{/b} Il programma di installazione web di DirectX di Microsoft proverà ad installare la barra di Bing. Per evitare che ciò accada, spunta l'opzione appropriata"
# renpy/common/00gltest.rpy:183
old "When setup finishes, please click below to restart this program."
new "Una volta finita l'installazione, si prega di cliccare qui in basso per riavviare questo programma."
# renpy/common/00gltest.rpy:185
old "Restart"
new "Riavvia"
#translation: renpy/common/00keymap.rpy
translate italian strings:
# renpy/common/00keymap.rpy:168
old "Saved screenshot as %s."
new "Screenshot salvato come %s."
#translation: renpy/common/00layout.rpy
translate italian strings:
# renpy/common/00layout.rpy:421
old "Are you sure?"
new "Confermi?"
# renpy/common/00layout.rpy:422
old "Are you sure you want to delete this save?"
new "Confermi di voler cancellare questo salvataggio?"
# renpy/common/00layout.rpy:423
old "Are you sure you want to overwrite your save?"
new "Confermi di voler sovrascrivere questo salvataggio?"
# renpy/common/00layout.rpy:424
old "Loading will lose unsaved progress.\nAre you sure you want to do this?"
new "Caricare causerà la perdita di progressi non salvati.\n Confermi?"
# renpy/common/00layout.rpy:425
old "Are you sure you want to quit?"
new "Confermi di voler uscire?"
# renpy/common/00layout.rpy:426
old "Are you sure you want to return to the main menu?\nThis will lose unsaved progress."
new "Confermi di voler tornare al menù principale?\nQuesto causerà la perdita di progressi non salvati."
# renpy/common/00layout.rpy:427
old "Are you sure you want to begin skipping?"
new "Confermi di voler iniziare a saltare?"
# renpy/common/00layout.rpy:428
old "Are you sure you want to skip to the next choice?"
new "Confermi di voler saltare alla prossima scelta?"
# renpy/common/00layout.rpy:429
old "Are you sure you want to skip to unseen dialogue or the next choice?"
new "Confermi di voler saltare al dialogo non letto o alla prossima scelta?"
#translation: renpy/common/00library.rpy
translate italian strings:
# renpy/common/00library.rpy:77
old "Skip Mode"
new "Modalità salto"
# renpy/common/00library.rpy:80
old "Fast Skip Mode"
new "Modalità salto rapido"
#translation: renpy/common/00updater.rpy
translate italian strings:
# renpy/common/00updater.rpy:1258
old "Updater"
new "Updater"
# renpy/common/00updater.rpy:1267
old "This program is up to date."
new "Questo programma è aggiornato."
# renpy/common/00updater.rpy:1269
old "[u.version] is available. Do you want to install it?"
new "[u.version] è disponibile. Vuoi installarla?"
# renpy/common/00updater.rpy:1271
old "Preparing to download the updates."
new "Preparando lo scaricamento dell'aggiornamento."
# renpy/common/00updater.rpy:1273
old "Downloading the updates."
new "Scaricando l'aggiornamento."
# renpy/common/00updater.rpy:1275
old "Unpacking the updates."
new "Estraendo l'aggiornamento."
# renpy/common/00updater.rpy:1279
old "The updates have been installed. The program will restart."
new "L'aggiornamento è stato installato. Il programma verrà riavviato."
# renpy/common/00updater.rpy:1281
old "The updates have been installed."
new "L'aggiornamento è stato installato."
# renpy/common/00updater.rpy:1283
old "The updates were cancelled."
new "L'aggiornamento è stato annullato."
#translation: renpy/common/_compat/gamemenu.rpym
translate italian strings:
# renpy/common/_compat/gamemenu.rpym:180
old "Empty Slot."
new "Slot Vuoto."
# renpy/common/_compat/gamemenu.rpym:337
old "Previous"
new "Precedente"
# renpy/common/_compat/gamemenu.rpym:344
old "Next"
new "Successivo"
#translation: renpy/common/_compat/preferences.rpym
translate italian strings:
# renpy/common/_compat/preferences.rpym:411
old "Joystick Mapping"
new "Mapping del Joystick"
#translation: renpy/common/_errorhandling.rpym
translate italian strings:
# renpy/common/_errorhandling.rpym:408
old "An exception has occurred."
new "Si è verificata un'eccezione."
# renpy/common/_errorhandling.rpym:434
old "Rollback"
new "Regredisci"
# renpy/common/_errorhandling.rpym:436
old "Attempts a roll back to a prior time, allowing you to save or choose a different choice."
new "Prova a regredire ad una data precedente, permettendoti di salvare o selezionare un'altra scelta."
# renpy/common/_errorhandling.rpym:439
old "Ignore"
new "Ignora"
# renpy/common/_errorhandling.rpym:441
old "Ignores the exception, allowing you to continue. This often leads to additional errors."
new "Ignore l'eccezione, permettendoti di continuare. Spesso introduce nuovi errori."
# renpy/common/_errorhandling.rpym:444
old "Reload"
new "Ricarica"
# renpy/common/_errorhandling.rpym:446
old "Reloads the game from disk, saving and restoring game state if possible."
new "Ricarica il gioco dal disco, salvando e ripristinando lo stato di gioco se possibile."
# renpy/common/_errorhandling.rpym:448
old "Open Traceback"
new "Apri Traceback"
# renpy/common/_errorhandling.rpym:450
old "Opens the traceback.txt file in a text editor."
new "Apri il file traceback.txt in un editor di testo."
# renpy/common/_errorhandling.rpym:456
old "Quits the game."
new "Esce dal gioco."
# renpy/common/_errorhandling.rpym:483
old "Parsing the script failed."
new "L'analisi dello script ha fallito."
# renpy/common/_errorhandling.rpym:510
old "Open Parse Errors"
new "Apri errori di analisi"
# renpy/common/_errorhandling.rpym:512
old "Opens the errors.txt file in a text editor."
new "Apre il file errors.txt in un editor di testo."
#translation: renpy/common/_layout/classic_load_save.rpym
translate italian strings:
# renpy/common/_layout/classic_load_save.rpym:152
old "a"
new "a"
# renpy/common/_layout/classic_load_save.rpym:161
old "q"
new "q"
# renpy/common/_developer/inspector.rpym:25
old "Displayable Inspector"
new "Ispettore di displayable"
# renpy/common/_developer/inspector.rpym:31
old "Nothing to inspect."
new "Niente da ispezionare."
# renpy/common/_developer/inspector.rpym:40
old "Size"
new "Dimensione"
# renpy/common/_developer/inspector.rpym:45
old "Style"
new "Stile"
# renpy/common/_developer/inspector.rpym:105
old "Inspecting Styles of [displayable_name!q]"
new "Ispezionando stili di [displayable_name!q]"
# renpy/common/_developer/inspector.rpym:117
old "displayable:"
new "visualizzabile:"
# renpy/common/_developer/inspector.rpym:124
old " (no properties affect the displayable)"
new " (nessuna proprietà ha effetto sul displayable)"
# renpy/common/_developer/inspector.rpym:126
old " (default properties omitted)"
new " (proprietà predefinite omesse)"
# renpy/common/_developer/inspector.rpym:156
old "<repr() failed>"
new "<repr() fallito>"
# renpy/common/_developer/developer.rpym:46
old "Reload Game (Shift+R)"
new "Ricarica Gioco (Shift+R)"
# renpy/common/_developer/developer.rpym:49
old "Variable Viewer"
new "Visualizzatore di variabili"
# renpy/common/_developer/developer.rpym:52
old "Theme Test"
new "Prova tema"
# renpy/common/_developer/developer.rpym:58
old "Image Location Picker"
new "Selettore dell'ubicazione delle immagini"
# renpy/common/_developer/developer.rpym:61
old "Filename List"
new "Lista dei file"
# renpy/common/_developer/developer.rpym:307
old "Undefined Images"
new "Immagini non definite"
# renpy/common/_developer/developer.rpym:410
old "Mouse position: %r"
new "Posizione del mouse: %r"
# renpy/common/_developer/developer.rpym:412
old "Right-click or escape to quit."
new "Click destro o Esc per uscire."
# renpy/common/_developer/developer.rpym:465
old "Done"
new "Fatto"
# renpy/common/_developer/developer.rpym:44
old "Developer Menu"
new "Menù dello sviluppatore"
# renpy/common/_developer/developer.rpym:405
old "Rectangle: %r"
new "Rettangolo: %r"
# renpy/common/_developer/developer.rpym:69
old "Console (Shift+O)"
new "Console (Shift+O)"
# renpy/common/_developer/developer.rpym:81
old "Show Image Load Log"
new "Mostra log di caricamento delle immagini"
# renpy/common/_developer/developer.rpym:84
old "Hide Image Load Log"
new "Nascondi log di caricamento delle immagini"
# renpy/common/_developer/developer.rpym:149
old "No variables have changed since the game started."
new "Nessuna variabile è stata cambiata dall'ultima esecuzione del gioco."
# renpy/common/_developer/developer.rpym:152
old "Return to the developer menu"
new "Ritorna al menù dello sviluppatore"
# renpy/common/00console.rpy:179
old "%(version)s console, originally by Shiz, C, and delta.\n"
new "Versione della console %(version)s, autori originali Shiz, C e delta.\n"
# renpy/common/00console.rpy:180
old "Press <esc> to exit console. Type help for help.\n"
new "Premi <esc> per uscire dalla console. Scrivi \"help\" per aiuto.\n"
# renpy/common/00console.rpy:184
old "Ren'Py script enabled."
new "Script di Ren'Py abilitato."
# renpy/common/00console.rpy:186
old "Ren'Py script disabled."
new "Script di Ren'Py disabilitato."
# renpy/common/00console.rpy:392
old "help: show this help"
new "help: mostra questo aiuto"
# renpy/common/00console.rpy:397
old "commands:\n"
new "comandi:\n"
# renpy/common/00console.rpy:407
old " <renpy script statement>: run the statement\n"
new " <comando renpy script>: esegui il comando\n"
# renpy/common/00console.rpy:409
old " <python expression or statement>: run the expression or statement"
new " <espressione o comando python>: esegui l'espressione o il comando"
# renpy/common/00console.rpy:417
old "clear: clear the console history"
new "clear: pulisci la cronologia della console"
# renpy/common/00console.rpy:421
old "exit: exit the console"
new "exit: esci dalla console"
# renpy/common/00console.rpy:429
old "load <slot>: loads the game from slot"
new "load <slot>: carica il gioco dallo slot"
# renpy/common/00console.rpy:442
old "save <slot>: saves the game in slot"
new "save <slot>: salva il gioco nello slot"
# renpy/common/00console.rpy:453
old "reload: reloads the game, refreshing the scripts"
new "reload: ricarica il gioco, aggiornando gli script"
# renpy/common/00console.rpy:461
old "watch <expression>: watch a python expression"
new "watch <espressione>: osserva un'espressione Python"
# renpy/common/00console.rpy:470
old "unwatch <expression>: stop watching an expression"
new "unwatch <espressione>: smetti di osservare un'espressione"
# renpy/common/00console.rpy:478
old "unwatchall: stop watching all expressions"
new "unwatchall: smetti di osservare tutte le espressioni"
# renpy/common/00console.rpy:484
old "jump <label>: jumps to label"
new "jump <label>: salta alla label"
# renpy/common/_developer/developer.rpym:272
old "{b}Missing Images{/b}"
new "{b}Immagini mancanti{/b}"
# renpy/common/00keymap.rpy:332
old "Autoreload"
new "Autoricarica"
+37
View File
@@ -0,0 +1,37 @@
translate italian strings:
# game/distribute.rpy:358
old "No packages are selected, so there's nothing to do."
new "Nessun pacchetto selezionato, nessun compito da eseguire."
# game/distribute.rpy:363
old "Scanning project files..."
new "Analizzando i file del progetto..."
# game/distribute.rpy:373
old "Scanning Ren'Py files..."
new "Analizzando i file di Ren'Py..."
# game/distribute.rpy:421
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 "Tutti i pacchetti sono stati compilati.\n\nData la presenza di informazioni sui permessi, estrarre e ri-archiviare le distribuzioni Linux e Macintosh su Windows non é supportato."
# game/distribute.rpy:545
old "Archiving files..."
new "Archiviando i file..."
# game/distribute.rpy:801
old "Writing the [variant] [format] package."
new "Scrivendo il pacchetto [variant] [format]."
# game/distribute.rpy:814
old "Making the [variant] update zsync file."
new "Creando il file di aggiornamento di zync per [variant]"
# game/distribute.rpy:910
old "Processed {b}[complete]{/b} of {b}[total]{/b} files."
new "Processati {b}[complete]{/b} file su {b}[total]{/b}."
# game/distribute.rpy:335
old "Building distributions failed:\n\nThe build.directory_name variable may not include the space, colon, or semicolon characters."
new "Compilazione delle distribuzioni fallita:\n\nLa variable build.directory_name non può includere spazi, due punti e punti e virgole."
@@ -0,0 +1,45 @@
translate italian strings:
# game/distribute_gui.rpy:139
old "Build Distributions: [project.current.name!q]"
new "Compila distrubuzioni: [project.current.name!q]"
# game/distribute_gui.rpy:154
old "Directory Name:"
new "Nome della cartella:"
# game/distribute_gui.rpy:158
old "Executable Name:"
new "Nome dell'eseguibile:"
# game/distribute_gui.rpy:167
old "Actions:"
new "Azioni:"
# game/distribute_gui.rpy:175
old "Edit options.rpy"
new "Modifica options.rpy"
# game/distribute_gui.rpy:176
old "Refresh"
new "Aggiorna"
# game/distribute_gui.rpy:193
old "Build Packages:"
new "Compila pacchetti:"
# game/distribute_gui.rpy:208
old "Build Updates"
new "Compila aggiornamenti"
# game/distribute_gui.rpy:212
old "Build"
new "Compila"
# game/distribute_gui.rpy:219
old "Errors were detected when running the project. Please ensure the project runs without errors before building distributions."
new "Errori riscontrati durante l'esecuzione del progetto. Prego assicurarsi che il progetto possa essere eseguito senza errori prima di compilare distrubuzioni."
# 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 "Il tuo progetto non contiene informazioni di compilazione. Vuoi aggiungere informazioni di compilazione alla fine di options.rpy?"
+65
View File
@@ -0,0 +1,65 @@
translate italian strings:
# description for the option: "Editra"
# 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}Raccomandato.{/b} Un editor in fase Beta con un'interfaccia facile da usare e funzionalità adatte allo sviluppo come il controllo ortografico. Editra al momento non ha il supporto IMO richiesto per Cinese, Giapponese e Coreano."
# description for "Editra" on Linux
# 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}Raccomandato.{/b} Un editor in fase Beta con un'interfaccia facile da usare e funzionalità adatte allo sviluppo come il controllo ortografico. Editra al momento non ha il supporto IMO richiesto per Cinese, Giapponese e Coreano e richiede wxPython su Linux."
# game/editor.rpy:137
old "This may have occured because wxPython is not installed on this system."
new "Potrebbe essersi verificato per via dell'assenza di wxPython su questo sistema."
# game/editor.rpy:144
old "Up to 22 MB download required."
new "Richiesti fino a 22 MB."
# description for the option: "JEdit"
# game/editor.rpy:155
old "A mature editor that requires Java."
new "Un editor maturo che richiede Java."
# game/editor.rpy:157
old "1.8 MB download required."
new "Download di 1.8 MB richiesto."
# game/editor.rpy:158
old "This may have occured because Java is not installed on this system."
new "Potrebbe essersi verificato per l'assenza di Java su questo sistema."
# option: "System Editor"
# game/editor.rpy:163
old "System Editor"
new "Editor di sistema"
# description for the option: "System Editor"
# game/editor.rpy:164
old "Invokes the editor your operating system has associated with .rpy files."
new "Invoca l'editor che il tuo sistema operativo ha associato con i file .rpy."
# option: "None"
# game/editor.rpy:179
old "None"
new "Nessuno"
# description for the option: "None"
# game/editor.rpy:180
old "Prevents Ren'Py from opening a text editor."
new "Non permette a Ren'Py di aprire un editor di testo."
# game/editor.rpy:327
old "An exception occured while launching the text editor:\n[exception!q]"
new "Si é verificata un'eccezione durante il lancio dell'editor:\n[exception!q]"
# game/editor.rpy:423
old "Select Editor"
new "Seleziona editor"
# game/editor.rpy:438
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 "L'editor di testo é il programma che viene usato per modificare i file di script di Ren'Py. Qui puoi selezionare l'editor da usare con Ren'Py. Se assente, l'editor verrà automaticamente scaricato ed installato."
+93
View File
@@ -0,0 +1,93 @@
translate italian strings:
# game/font_page.rpy 65
old "PROJECTS:"
new "PROGETTI:"
# game/front_page.rpy:67
old "refresh"
new "aggiorna"
# game/front_page.rpy:94
old "+ Create New Project"
new "+ Crea un nuovo progetto"
# game/front_page.rpy:106
old "Launch Project"
new "Avvia progetto"
# game/front_page.rpy:122
old "[p.name!q] (template)"
new "[p.name!q] (modello)"
# game/front_page.rpy:127
old "Tutorial"
new "Tutorial"
# game/front_page.rpy:128
old "The Question"
new "The Question"
# game/front_page.rpy:144
old "Active Project"
new "Progetto attivo"
# game/front_page.rpy:152
old "Open Directory"
new "Apri cartella"
# game/front_page.rpy:157
old "game"
new "game"
# game/front_page.rpy:158
old "base"
new "base"
# game/front_page.rpy:164
old "Edit File"
new "Modifica file"
# game/front_page.rpy:172
old "All script files"
new "Tutti i file di script"
# game/front_page.rpy:181
old "Navigate Script"
new "Naviga script"
# game/front_page.rpy:192
old "Check Script (Lint)"
new "Controlla script (Lint)"
# game/front_page.rpy:193
old "Change Theme"
new "Cambia tema"
# game/front_page.rpy:194
old "Delete Persistent"
new "Cancella dati persistenti"
# game/front_page.rpy:202
old "Build Distributions"
new "Compila distribuzioni"
# game/front_page.rpy:204
old "Android"
new "Android"
# game/front_page.rpy:205
old "Generate Translations"
new "Genera traduzioni"
# game/front_page.rpy:206
old "Extract Dialogue"
new "Estrai dialoghi"
# game/front_page.rpy:222
old "Checking script for potential problems..."
new "Controllando lo script per potenziali problemi..."
# game/front_page.rpy:237
old "Deleting persistent data..."
new "Eliminando dati persistenti..."
+93
View File
@@ -0,0 +1,93 @@
translate italian strings:
# game/interface.rpy:89
old "Documentation"
new "Documentazione"
# game/interface.rpy:90
old "Ren'Py Website"
new "Sito di Ren'Py"
# game/interface.rpy:91
old "Ren'Py Games List"
new "Lista dei giochi Ren'Py"
# game/interface.rpy:92
old "About"
new "Informazioni"
# game/interface.rpy:99
old "update"
new "aggiorna"
# game/interface.rpy:101
old "preferences"
new "preferenze"
# game/interface.rpy:102
old "quit"
new "esci"
# game/interface.rpy:174
old "Yes"
new "Si"
# game/interface.rpy:176
old "No"
new "No"
# game/interface.rpy:182
old "Back"
new "Indietro"
# game/interface.rpy:184
old "Cancel"
new "Annulla"
# game/interface.rpy:187
old "Continue"
new "Continua"
# game/interface.rpy:211
old "Due to package format limitations, non-ASCII file and directory names are not allowed."
new "Per via delle limitazioni del formato del pacchetto, file e cartelle con nomi non-ASCII non sono permessi."
# game/interface.rpy:213
old "[title]"
new "[title]"
# game/interface.rpy:299
old "ERROR"
new "ERRORE"
# game/interface.rpy:328
old "While [what!q], an error occured:"
new "Durante [what!q], si é verificato un errore:"
# game/interface.rpy:329
old "[exception!q]"
new "[exception!q]"
# game/interface.rpy:347
old "Text input may not contain the {{ or [[ characters."
new "Il testo inserito non può contenere i caratteri {{ o [[."
# game/interface.rpy:352
old "File and directory names may not contain / or \\."
new "I nomi di file e cartelle non possono contenere / o \\."
# game/interface.rpy:358
old "File and directory names must consist of ASCII characters."
new "I nomi di file e cartelle possono solo contenere caratteri ASCII."
# game/interface.rpy:379
old "INFORMATION"
new "INFORMAZIONE"
# game/interface.rpy:422
old "PROCESSING"
new "PROCESSANDO"
# game/interface.rpy:452
old "CHOICE"
new "SELEZIONA"
+65
View File
@@ -0,0 +1,65 @@
translate italian strings:
# game/navigation.rpy:150
old "Navigate: [project.current.name]"
new "Navigando: [project.current.name]"
# game/navigation.rpy:159
old "Order: "
new "Ordine: "
# game/navigation.rpy:160
old "alphabetical"
new "alfabetico"
# game/navigation.rpy:162
old "by-file"
new "per file"
# game/navigation.rpy:164
old "natural"
new "naturale"
# game/navigation.rpy:176
old "Category:"
new "Categoria:"
# game/navigation.rpy:178
old "files"
new "file"
# game/navigation.rpy:179
old "labels"
new "label"
# game/navigation.rpy:180
old "defines"
new "define"
# game/navigation.rpy:181
old "transforms"
new "transform"
# game/navigation.rpy:182
old "screens"
new "screen"
# game/navigation.rpy:183
old "callables"
new "callable"
# game/navigation.rpy:184
old "TODOs"
new "TODO"
# game/navigation.rpy:223
old "+ Add script file"
new "+ Aggiungi file di script"
# game/navigation.rpy:231
old "No TODO comments found.\n\nTo create one, include \"# TODO\" in your script."
new "Nessun commento TODO trovato.\n\nPer crearne uno, includi \"# TODO\" in your script."
# game/navigation.rpy:238
old "The list of names is empty."
new "La lista dei nomi è vuota."
+33
View File
@@ -0,0 +1,33 @@
translate italian strings:
# game/new_project.rpy:22
old "Choose Project Template"
new "Scegli un modello di progetto"
# 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 "Scegli un modello da usare per il tuo nuovo progetto. Il modello imposta il font predefinito e la lingua dell'interfaccia. Se la tua lingua non è supportata, scegli 'english'."
# game/new_project.rpy:55
old "PROJECT NAME"
new "NOME DEL PROGETTO"
# game/new_project.rpy:56
old "Please enter the name of your project:"
new "Inserisci il nome del tuo progetto:"
# game/new_project.rpy:62
old "The project name may not be empty."
new "Il nome del progetto non può essere nullo."
# game/new_project.rpy:67
old "[project_name!q] already exists. Please choose a different project name."
new "[project_name!q] esiste già. Si prega scegliere un altro nome."
# game/new_project.rpy:70
old "[project_dir!q] already exists. Please choose a different project name."
new "[project_dir!q] esiste già. Si prega di scegliere un altro nome."
# game/new_project.rpy:71
old "The projects directory could not be set. Giving up."
new "Non è stato possibile impostare la cartella del progetto. Abbandonando."
+61
View File
@@ -0,0 +1,61 @@
translate italian strings:
# game/preferences.rpy:40
old "Launcher Preferences"
new "Preferenze del Launcher"
# game/preferences.rpy:61
old "Projects Directory:"
new "Cartella dei progetti:"
# game/preferences.rpy:68
old "[persistent.projects_directory!q]"
new "[persistent.projects_directory!q]"
# game/preferences.rpy:70
old "Not Set"
new "Non impostato"
# game/preferences.rpy:84
old "Text Editor:"
new "Editor di testo:"
# game/preferences.rpy:106
old "Update Channel:"
new "Canale di aggiornamento:"
# game/preferences.rpy:126
old "Navigation Options:"
new "Opzioni di navigazione:"
# game/preferences.rpy:130
old "Include private names"
new "Includi nomi privati"
# game/preferences.rpy:131
old "Include library names"
new "Includi nomi di libreria"
# game/preferences.rpy:141
old "Launcher Options:"
new "Opzioni del Launcher:"
# game/preferences.rpy:145
old "Hardware rendering"
new "Rendering via hardware"
# game/preferences.rpy:146
old "Show templates"
new "Mostra modelli"
# game/preferences.rpy:148
old "Console output"
new "Output console"
# game/preferences.rpy:169
old "Open launcher project"
new "Apri progetto del Launcher"
# game/preferences.rpy:183
old "Language:"
new "Lingua:"
+53
View File
@@ -0,0 +1,53 @@
translate italian strings:
# game/project.rpy:201
old "Launching the project failed."
new "Avvio del progetto fallito."
# game/project.rpy:201
old "Please ensure that your project launches normally before running this command."
new "Prego verificare che il progetto si avvii normalmente prima di eseguire questo comando."
# game/project.rpy:204
old "Ren'Py is scanning the project..."
new "Ren'Py sta analizzando il progetto..."
# game/project.rpy:503
old "PROJECTS DIRECTORY"
new "CARTELLA DEI PROGETTI"
# game/project.rpy:503
old "Please choose the projects directory using the directory chooser.\n{b}The directory chooser may have opened behind this window.{/b}"
new "Si prega di scegliere la cartella dei progetti tramite il selettore di cartella.\n{b}Il selettore di cartella potrebbe essersi aperto dietro questa finestra.{/b}"
# game/project.rpy:503
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 "Questo launcher cercherà i progetti in questa cartella, creerà i nuovi progetti in questa cartella e posizionerà i progetti già compilati in questa cartella."
# game/project.rpy:543
old "Ren'Py was unable to run python with tkinter to choose the projects directory."
new "Ren'Py non ha potuto eseguire Python con TKinter per selezionare la cartella dei progetti."
# game/project.rpy:547
old "Ren'Py has set the projects directory to:"
new "Ren'Py ha impostato la cartella dei progetti a:"
# game/project.rpy:30
old "After making changes to the script, press shift+R to reload your game."
new "Dopo aver modificato lo script, premi Shift+R per ricaricare il gioco."
# game/project.rpy:31
old "Press shift+O (the letter) to access the console."
new "Premi Shift+O (la lettera O) per apire la console."
# game/project.rpy:32
old "Press shift+D to access the developer menu."
new "Premi Shift+D per accedere al menú dello sviluppatore."
# game/project.rpy:496
old "Launching"
new "Avviando"
# game/project.rpy:584
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 non ha potuto eseguire Python con tkinter per selezionare la cartella dei progetti. Si prega di reinstallare i pacchetti python-tk o tkinter."

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