Compare commits

...

373 Commits

Author SHA1 Message Date
Tom Rothamel 2c728bc9a4 Bump version. 2012-09-11 01:28:40 -04:00
Tom Rothamel a573008ef1 Ignore attempts to play None as sound/music.
This is a minor behavior change. Before this, renpy.play would stop
the playing sound if called with None - which is the default in a lot
of circumstances.
2012-09-09 22:47:23 -04:00
Tom Rothamel 72a8e029ad Fix RAPT docs. 2012-09-04 22:29:38 -04:00
Tom Rothamel 4142473dc0 A few more fixes to the Android packaging docs. 2012-08-28 20:16:14 -04:00
Tom Rothamel 6e2bb81a1c Merge remote-tracking branch 'remotes/ren/patch-3' 2012-08-28 19:42:32 -04:00
Tom Rothamel dd4fc916ec Remove unnecessary use of AVFormatParameters in dead code. 2012-08-28 19:13:25 -04:00
xRenx 8e755eb157 Update sphinx/source/android-packaging.rst
Changed some wordings, expanded on some points, added screenshots and a Troubleshooting section.
2012-08-27 19:28:21 +02:00
Tom Rothamel b33b9628fd Ensure ffdecode.c can compile with the libav that we're distributing
with Ren'Py.
2012-08-26 15:05:55 -04:00
Tom Rothamel b9a6dfea88 Move to an O(n) algorithm for detecting store changes.
The problem is that python seems to generate two kinds of code to
access module globals. Variable access in the global scope uses object
methods, and so setitem and delitem are called. But when a global
is accessd from a function, the dict is accessed directly, and so
we can't intercept them.

This means that the new O(1) method of determining what changed in
the store is massively broken.

Ren'Py now uses an O(n) method of detecting store changes, which
is what we used in 6.13, modified to support multiple stores.
2012-08-24 17:46:31 -04:00
Tom Rothamel e16489fc5e Fix build of source package. 2012-08-23 23:10:49 -04:00
Tom Rothamel 1b0c5477f4 For safety's sake, make util.walk decode its arguments. 2012-08-23 22:34:42 -04:00
Tom Rothamel d85565910d Turn the projects directory into unicode, if it's not already. 2012-08-23 22:30:07 -04:00
Tom Rothamel 1201924c28 Still more video playback fixes.
* Always display the first frame of a video.
* Improve sync at the start of a video.
* Update the Movie displayable on a regular basis, even if a movie isn't playing. (This
  lets a movie start playing later.)

Fixes #24.
2012-08-23 22:13:25 -04:00
Tom Rothamel 02be062444 Deal with more problems with video playback:
* Accept the libav default for the number of threads to use for decoding.
* Only allocate a surface if the video stream exists.
2012-08-23 21:11:14 -04:00
Tom Rothamel 7a113712e1 Remove excess debugging print. 2012-08-23 20:14:09 -04:00
Tom Rothamel c046a7fd56 Make the locking scheme in PSS.py more similar to the one in Ren'Py
6.13.

This fixes crashing bugs that may have been caused by data structures
being updated while the audio callback is being run in the background.

The big change between 6.13 and this is that playing_name is now
protected by a mutex. PSS_playing_name only tries to grab this mutex,
and doesn't grab the SDL audio lock, preventing it from blocking if
video decoding is too far behind.
2012-08-22 22:42:03 -04:00
Tom Rothamel 07c1599821 Fix a race condition on audio start. 2012-08-22 21:27:30 -04:00
Tom Rothamel 9d5154b50a Fix a crash that can occur if Ren'Py doesn't know the (in-file)
location of an imagemap.

Fixes #20.
2012-08-20 21:24:27 -04:00
Tom Rothamel 3982c45886 Quote square brackets in some developer functionality.
Fixes #19.
2012-08-20 21:17:06 -04:00
Tom Rothamel 90772350fb Copy renpy-ppc.zip into the download directory. 2012-08-20 21:15:15 -04:00
Tom Rothamel fd250df032 Add support for producting direct downloads (not through the updater)
of editor dlc.
2012-08-19 09:47:04 -04:00
Tom Rothamel 9ea3c36a88 Bump version to 6.14.1. 2012-08-19 08:40:07 -04:00
Tom Rothamel 4cc4cae8bb Allow Ren'Py to be build in virtualenvs, as well as with PYTHONPATH set. 2012-08-17 11:50:47 -04:00
Tom Rothamel d4d9543019 Format license.rst using plain text, so we don't syntax-highlight
a bunch of source code licenses.
2012-08-16 20:55:30 -04:00
Tom Rothamel bf2cf5b5e3 Add support for producing an experimental distribution of Ren'Py. 2012-08-16 20:54:56 -04:00
Tom Rothamel 99cf00ad54 Deal with Windows-style paths in the launcher and navigation dump code. 2012-08-16 17:21:39 -04:00
Tom Rothamel 0ddb47ce6d Condition log close on the log being open. 2012-08-16 09:27:34 -04:00
Tom Rothamel 52f6898ffd Ensure that we can build with ANGLE and on ES-based platforms. 2012-08-15 22:05:57 -04:00
Tom Rothamel cc8d2823cd Use BGRA/UNSIGNED_INT_8_8_8_8_REV on PC-like platforms.
This fixes #16, a performance bug where lousy Intel drivers would take
forever to do glTexSubImage when RGBA/UNSIGNED_BYTE were the format and
type.
2012-08-14 23:18:38 -04:00
Tom Rothamel 03e09f45c0 Quote strings in navigation. 2012-08-09 23:05:29 -04:00
Tom Rothamel 061a04cd84 Enable the underlay when movies are playing.
Now that movies stop when a new context is entered, there's no reason
not to do this. fixes #13.
2012-08-09 22:35:38 -04:00
Tom Rothamel 0b555d73ab Deal with the case where a size_group is not defined.
This should never happen in a normal case - but it seems to have
occured during error handing. So we deal with it.
2012-08-09 22:09:03 -04:00
Tom Rothamel c05606aa94 Only check for render leaks if we haven't handled a traceback.
When we error-handle a failure that occurs while rendering, it's
possible that one or more Renders will be kept alive in a
traceback. This prevents us from giving the render-leak warning in
this case.
2012-08-09 21:54:23 -04:00
Tom Rothamel 98a37cb84f Make move transitions respect time warp. 2012-08-09 21:38:02 -04:00
Tom Rothamel 94f2fa7a9a Invoke dxwebsetup with os.startfile.
On 64-bit windows, with a space in the path, I was getting a command
line prompt.
2012-08-09 21:21:33 -04:00
Tom Rothamel 1cf9bb29ab Add warnings about python code in screens. 2012-08-09 21:20:03 -04:00
Tom Rothamel 771311a955 Only stop the movie on set_mode if the software renderer is being used.
A movie stop is necessary when the software renderer is being used
because setting the mode will kill the surface that the movie is
drawing to. In GL mode, we use a different surface, so a reset
isn't necessary.
2012-08-09 00:31:09 -04:00
Tom Rothamel a647a670a4 Have a go at making ffdecode work better with ffmpeg.
This involved dealing with some name changes where libav kept both
names without deprecation.
2012-08-09 00:18:14 -04:00
Tom Rothamel 00e0dfb5c7 Remove the vast majority of compiler warnings when compiling the
video and audio systems.
2012-08-09 00:11:43 -04:00
Tom Rothamel e1f5a7e9de Eliminate use of deprecated functions in ffplay.c. 2012-08-09 00:06:03 -04:00
Tom Rothamel e959d3e694 Use the GPU to scale movies.
This makes it possible to render movies on the Atom without frying the
CPU.
2012-08-08 23:35:36 -04:00
Tom Rothamel affd6d986f Merge pull request #15 from xRenx/patch-2
Update common/00themes.rpy
2012-08-08 17:33:11 -07:00
xRenx f30f82262f Update common/00themes.rpy
Changed http://renmazuo-.deviantart.com to http://x-Ren-x.deviantart.com/ as I changed my username on deviantArt.
2012-08-08 20:23:10 +02:00
Tom Rothamel 39e17a5872 Simplify premultipy().
This makes it run faster on in-order platforms like the
Atom. Premultiply was turning out to be a resource hog on video
playback.
2012-08-08 00:48:18 -04:00
Tom Rothamel b2c3480b8e Change _button to use the old (6.13.12) amie2 theme. 2012-08-06 22:49:11 -04:00
Tom Rothamel f822e9a0e9 Stop using MMX on 32-bit linux.
Lucid's 32-bit c compiler is miscompiling transform32_mmx. Since
that's not used for much in the OpenGL path, it's been disabled.
2012-08-06 22:34:44 -04:00
Tom Rothamel 4238849c4b Update the changelog. 2012-08-06 00:55:33 -04:00
Tom Rothamel 23ad4f0140 Remove unnecessary checks in the Choice... actions.
We had been checking that the _chosen dict was non-empty in ChoiceJump
and ChoiceReturn actions. This wasn't necessary given the logic of the
program, and failed in the case of a game that hadn't been played
before.

Fixes http://lemmasoft.renai.us/forums/viewtopic.php?p=214590#p214590
2012-08-06 00:52:01 -04:00
Tom Rothamel de85018794 Merge pull request #11 from apricotorange/master
Port the NVL tutorial from the wiki to Sphinx
2012-08-05 20:54:31 -07:00
Tom Rothamel cfa85aeb37 Video sync and other video improvements.
We now generally synchronize video to wall time. We adjust this
synchronization slowly if we're slightly out of sync with the audio,
or by a lot if we're way out of sync.

This ensures that the frame rate remains stable even if the times of
audio decode vary a bit.

We also now support the Movie displayable again.
2012-08-05 23:36:33 -04:00
Tom Rothamel f81fdd55e2 Cancelling projects path selection uses the old path.
Previously, it would reset things to the default path.
2012-08-05 10:59:01 -04:00
Tom Rothamel 5a8cf4c4ed Remove obsolete sync code. 2012-08-05 02:28:19 -04:00
Tom Rothamel 98292a2dc3 Remove subtitle-related code from ffdecode.c. 2012-08-05 02:13:08 -04:00
Tom Rothamel 1f16af50aa Rewrite video playback.
Previously, video playback was done using SDL events. This was at best
laggy, as the time it took for an SDL event to be delivered was up to
30 ms. Worse, if an event was ever lost, video playback would stop,
packets would queue up, and eventually audio playback (and Ren'Py
itself) would crash.

In the new approach, when a video is playing Ren'Py polls the video
system for new frames. Busy-waiting (with short sleeps to give control
to the decoder threads) ensures that frames are draw promptly, and
so the buffers can't fill up.

This code doesn't explicitly address latency, so that's a wash.
2012-08-05 01:24:42 -04:00
Tom Rothamel f24af00189 Allow the upload of large surfaces as a single texture.
Previously, we limited the maximum size of a texture that Ren'Py could
deal with to 512, and mandated the textures were 66% full. In the movie
case - with a lot of texture uploads - this was bad news, as making new
textures is slow on an intel GPU. So now, we can ask for a big texture
to be created in a single chunk.

Also, we now use 1024px textures, instead of being limited to 512px.
2012-08-05 01:21:13 -04:00
Tom Rothamel 704546149c Redo the way we lock in PSS.
This prevents Ren'Py from crashing when video playback is too slow,
but doesn't prevent frames from piling up.
2012-07-31 23:31:17 -04:00
Tom Rothamel 259e4bbb9b Update run.sh so it can work with a renpy-deps build. 2012-07-30 23:29:02 -04:00
Tom Rothamel 004a05a49b Speed up skipping when possible. 2012-07-30 12:58:44 -04:00
Tom Rothamel 1a91b29cf5 Remove obsolete edit.py files that can confuse the new launcher. 2012-07-30 00:03:15 -04:00
Tom Rothamel 79b2f36088 Re-read version number after we generate it, so we wind up with
the correct version number in the end.
2012-07-29 22:20:30 -04:00
Tom Rothamel 8b52a0c515 Add functions that allow for a list of save games such that the
user is able to add new save slots to the list.
2012-07-29 22:11:31 -04:00
Tom Rothamel 01689987d5 Remove debug print. 2012-07-29 19:40:31 -04:00
Tom Rothamel 9b9b8aed61 Skip template prompt if only one template exists. 2012-07-29 19:36:54 -04:00
Tom Rothamel 325299f342 renpy.game_get_runtime only returns time from the main context. 2012-07-29 19:32:57 -04:00
apricotorange 3384fc378f Port the NVL tutorial from the wiki to Sphinx. 2012-07-28 22:06:35 -07:00
apricotorange 6b66f3cce8 Port the NVL tutorial from the wiki to Sphinx. 2012-07-28 21:44:45 -07:00
Tom Rothamel d3e54853d6 Make the updater more robust when files already exist. 2012-07-29 00:27:46 -04:00
Tom Rothamel 6aa927c39a Force arguments to Grid to be integers.
Analogue passes floats to Grid, which passes them to range(), which changed
its behavior in python 2.7 to crash when it gets something other than an
integer.
2012-07-28 23:55:37 -04:00
Tom Rothamel d70374a5c0 Explicitly look for the correct tag when computing vc_version. 2012-07-26 23:41:10 -04:00
Tom Rothamel 67c4b55663 Fix rollback of - well, everything but stores.
I'm not sure how the restored code - which is right out of 6.13 -
went missing.
2012-07-26 00:38:06 -04:00
Tom Rothamel 0cbb4a6c0e Improve #TODO handling a bit.
* Suffix multiple TODOs with numbers.
* Give a more obvious message if no TODOs were found.
2012-07-25 22:47:04 -04:00
Tom Rothamel 6f063c92de Merge pull request #9 from edwin-v/scan_todo_for_launcher_v2
Added a todo list to the launcher navigation section.
2012-07-25 19:04:20 -07:00
Tom Rothamel 5504397bb8 Merge pull request #10 from xRenx/patch-1
Update sphinx/source/android-packaging.rst
2012-07-25 18:46:07 -07:00
xRenx 08a15c417d Update sphinx/source/android-packaging.rst
Just mentioned the links for those downloads are below, as some users might follow the guide in order.
2012-07-25 22:16:24 +02:00
Edwin ff05b590be Added a todo list to the launcher navigation section. 2012-07-25 21:04:20 +02:00
Tom Rothamel eb603088ae Move the projects scrollbar to the right so people know what it is. 2012-07-25 00:12:18 -04:00
Tom Rothamel 1363792d17 Exit the update channel preference when a button is clicked; Hide it
entirely if updating is not possible.
2012-07-25 00:10:31 -04:00
Tom Rothamel 21ef05b0fa Be a little more paranoid about missing editors. 2012-07-25 00:00:35 -04:00
Tom Rothamel 7b34af584f Input should ignore all keypresses it handles.
It ignored unicode events, but backspace, left, and right were
not consumed, and could be passed to other functions.
2012-07-24 23:14:25 -04:00
Tom Rothamel 4b5ec57624 Changes to front page:
* "Script Navigation" -> "Navigate Script"
* Add lines underneath Edit Script and Open Directory, so they don't
  look like buttons themselves.
2012-07-24 22:54:22 -04:00
Tom Rothamel ccf3ce6f5b Merge branch 'master' of github.com:renpy/renpy 2012-07-24 20:36:49 -04:00
Tom Rothamel 0fff7e9bbe Merge pull request #7 from JakeStaines/master
Added function into theme-choosing to modify screens.rpy; now changes file-picker rows to suit AWT where appropriate.
2012-07-24 17:30:47 -07:00
Tom Rothamel 90bda7dd23 Unlink partial zsync downloads. 2012-07-24 20:14:14 -04:00
Tom Rothamel f845f787ad Fix Update to work. 2012-07-24 20:07:40 -04:00
Tom Rothamel c16774c325 Add debug_sound change to changelog. 2012-07-24 20:07:11 -04:00
JakeStaines c2842286c7 Added function into theme-choosing to modify screens.rpy; now changes file-picker rows to suit AWT where appropriate. 2012-07-24 00:15:34 +01:00
Tom Rothamel ee8744b490 Exclude files from the distribution. 2012-07-22 22:25:40 -04:00
Tom Rothamel f14c68d047 New tagging script. 2012-07-22 22:10:05 -04:00
Tom Rothamel be76ab63e8 Merge pull request #5 from JakeStaines/master
Fixed White Tulip vbar to be full when at 100%, instead of empty.
2012-07-22 18:38:20 -07:00
Tom Rothamel ea825dfe23 Minor changes to the tutorial game script. 2012-07-22 21:32:48 -04:00
Tom Rothamel a0c87efac8 Minor change to the wording of the updater messages. 2012-07-22 21:32:35 -04:00
Tom Rothamel b55bad9e27 Do not hide the mouse due to inactivity when in the launcher. 2012-07-22 21:03:18 -04:00
Tom Rothamel 72af1de7e6 Fix problems where, after a relaunch, the default editor would not
be scanned or set.
2012-07-22 21:00:18 -04:00
Tom Rothamel 85e07b8cb8 Make the temporary directory before each launch.
This fixes a bug where, if a project existed already, the user could
try to launch it, and it would try to create navigation.json in a
directory that didn't exist.
2012-07-22 20:23:56 -04:00
Tom Rothamel 55c4369d6e Do not change line endings when updating options.rpy upon the creation
of a new game.
2012-07-22 20:08:56 -04:00
Tom Rothamel d860378a73 Show a slider for the volume in choose_theme. 2012-07-22 19:29:51 -04:00
JakeStaines 1943a31628 Fixed White Tulip vbar to be full when at 100%, instead of empty. 2012-07-22 23:45:01 +01:00
Tom Rothamel d7a26f722f Developer mode fixes.
* Quote style inspector output so it won't cause a crash if special
  characters are included.
* Fix a typo on the theme test screen.
2012-07-22 18:06:30 -04:00
Tom Rothamel 9af1b75fda Merge pull request #4 from JakeStaines/master
Added new bar style to A White Tulip theme; cleaned up a couple of minor graphical issues with the sliders and scrollbars.
2012-07-22 14:53:54 -07:00
Tom Rothamel 4787441d1f End skipping when entering a menu. 2012-07-22 17:52:49 -04:00
Tom Rothamel 9b47c3c4fd Ensure that display_menu passes the same items list to screens as it
did in previous releases.
2012-07-22 17:19:51 -04:00
Tom Rothamel 5c63e14ae7 Launcher changes/fixes.
* Error handling in the empty project name case.
* Ask the user to create a theme upon creating a new project.
2012-07-22 15:54:08 -04:00
Tom Rothamel ca606112bc Append to update log. 2012-07-22 15:28:57 -04:00
Tom Rothamel e0f1fe2847 If we can't do a file operation while Ren'Py is running, try it
again the next time Ren'Py starts.
2012-07-22 15:17:24 -04:00
Tom Rothamel 2179a13ea5 Fix updater in the case where things can't be renamed.
For some reason, font files fall into this category.
2012-07-21 22:30:57 -04:00
JakeStaines 4873db2a6a Added new bar style to A White Tulip theme; cleaned up a couple of minor graphical issues with the sliders and scrollbars. 2012-07-22 00:41:44 +01:00
Tom Rothamel 6768f9da67 Deal with windows's file separators. 2012-07-21 09:36:09 -04:00
Tom Rothamel 1a10e6d4e7 Add ctypes by default.
It's used by EasyDialogs, and probably good to keep around.
2012-07-21 09:35:26 -04:00
Tom Rothamel 2159888b07 Add some modules used by older code to the default store. 2012-07-21 09:34:57 -04:00
Tom Rothamel 478135fe56 Rename __dirty to __spdirty.
In 6.13.11, __dirty was a boolean. In 6.13.12, it change to an object with
a field - but loading a 6.13.11 game would overwrite that, causing crashes.
Having a totally new variable fixes the problem.
2012-07-21 08:30:59 -04:00
Tom Rothamel 701bfcb23a Re-raise original exception if exception handling is disabled
or fails.
2012-07-21 08:30:07 -04:00
Tom Rothamel 3d0b9b14c8 Try a different approach to dealing with out-of-range values.
Edwin's fix at 81c265c didn't work when an adjustment was ranged more
than once, with smaller and larger values, as it would shrink to fit
the smaller value. This version applies the in-range check when the
value is accessed.
2012-07-20 23:43:35 -04:00
Tom Rothamel ad73b70c9e Add AWT to the theme chooser. 2012-07-20 23:35:27 -04:00
Tom Rothamel c04826f663 Remove unused parameter from __AWTBullet. 2012-07-20 23:17:13 -04:00
Tom Rothamel 9bcb811bb2 Add the "A White Tulip" theme.
Credits:

Coding: Jake Staines (http://www.eviscerate.net/)
Graphics: Ren (http://renmazuo-.deviantart.com/)
Font: Andrew Paglinawan (www.andrewpaglinawan.com)
2012-07-20 23:15:33 -04:00
Tom Rothamel 61d403f032 Restore the ability to launch Ren'Py from the command line on
Mac OS X.

A user had mentioned to me that he had asked about this.
2012-07-20 00:33:41 -04:00
Tom Rothamel 7651a34206 Improve the error message produced when an empty string is used
as a displayable.
2012-07-20 00:11:41 -04:00
Tom Rothamel f2334d05fd Add editor-specific error messages for Editra on Linux and for jEdit. 2012-07-20 00:06:19 -04:00
Tom Rothamel 20a98290bd Delete .update.json files if we're not building an update. 2012-07-19 23:47:50 -04:00
Tom Rothamel 870db9d610 Ignore .Editra directories that happen to be lying around. 2012-07-19 23:12:44 -04:00
Tom Rothamel 7ef94349bd Quicksaves should not become the newest save. 2012-07-19 20:51:03 -04:00
Tom Rothamel 987e38e2e1 Merge pull request #2 from StephenChan/docs-improvements
Docs improvements
2012-07-19 17:29:56 -07:00
Tom Rothamel 547dbf5e16 Merge pull request #3 from edwin-v/fix_adjustment_set_range
Correct value when it exceed the new range.
2012-07-19 17:28:30 -07:00
Tom Rothamel 9e7c373d58 Remove saybehavior from launcher.
It was too easy to click through a screen we wanted to read while
expecting to focus the launcher.
2012-07-18 23:21:37 -04:00
Tom Rothamel c271293b8b Add zsync and the Artistic License to LICENSE.txt. 2012-07-18 23:18:54 -04:00
Tom Rothamel eed02c98c5 Add normalization script. 2012-07-18 23:12:59 -04:00
Tom Rothamel c08400cee4 Add BOM and normalize line endings of all script files. 2012-07-18 23:12:00 -04:00
Tom Rothamel 99bf5c7e29 Add or update copyright notices. 2012-07-18 23:00:32 -04:00
Tom Rothamel 3ee7f91523 Update incompatible changes. 2012-07-18 22:52:18 -04:00
Tom Rothamel 3715590a19 Bring changelog up to date. 2012-07-18 22:46:53 -04:00
Edwin 81c265ce46 Correct value when it exceed the new range. Fixes bug: https://bugs.launchpad.net/renpy/+bug/722422 2012-07-18 21:31:59 +01:00
Tom Rothamel 112788b597 Fix generation of .7z.exe. 2012-07-18 00:11:37 -04:00
Tom Rothamel 6b58675000 Add the renpy.call function.
This function terminates the current Ren'Py statement, calls a label,
and passes control to the statement following the current statement.
2012-07-17 22:28:41 -04:00
SleepKirby a0872d1cdc Docs proofreading. 2012-07-17 02:06:32 -07:00
SleepKirby 1cad8b6c1e Add many ref links to the Configuration Variables documentation. 2012-07-17 01:36:42 -07:00
SleepKirby 4a25c62fe4 Fix several documentation typos and minor mistakes. 2012-07-16 00:40:19 -07:00
Tom Rothamel 113716bfd3 Fix argument order for zsynmake.
On the mac, positional arguments seem to have to come after flags
2012-07-15 23:45:42 -04:00
Tom Rothamel 282b315c77 Store documentation patterns in a variable.
Instead of ignoring them entirely.
2012-07-15 21:46:51 -04:00
Tom Rothamel 91b541617e Match xbit and documentation patterns against filename with / prefixed.
This makes all pattern matching consistent.
2012-07-15 21:46:24 -04:00
Tom Rothamel 82f634f98e Include python standard library into the linux builds.
Use the right directory name for it.
2012-07-15 21:06:35 -04:00
Tom Rothamel 25068cb249 Fix errors on archiving.
The problem was that we were using rollbackable lists and dicts in
our archive, before the rollback system was ready.
2012-07-15 20:57:02 -04:00
Tom Rothamel 81047a4375 Archive files in the_question.
This is used to test archiving on multi-plaform builds.
2012-07-15 20:56:40 -04:00
Tom Rothamel d90d91f484 Give the user a place to go if they ignore errors in the launcher. 2012-07-15 18:52:33 -04:00
Tom Rothamel f113661745 Only offer rollback to the user if rollback is enabled. 2012-07-15 18:52:14 -04:00
Tom Rothamel b87ba78b9f Deal with the case where downloading an editor fails. 2012-07-15 18:49:06 -04:00
Tom Rothamel 60241ad0f3 Allow the game itself to define patters as to what is and is not
executable.

We use this to apply the xbit to Editra.
2012-07-15 18:33:10 -04:00
Tom Rothamel 01471d51c5 Fix im.matrix.colorize to actually work. 2012-07-15 16:06:54 -04:00
Tom Rothamel 8ba8b92d79 Fix typo in docs.
Thanks to horstjens for reporting it.
2012-07-14 22:46:09 -04:00
Tom Rothamel e12935ed38 Mention that Editra does not support IMEs. 2012-07-14 22:04:20 -04:00
Tom Rothamel c0ce664d7c Fix typo preventing the update button from showing up. 2012-07-14 21:34:39 -04:00
Tom Rothamel 39c06631bf Only include script version if it's not already in the project.
This lets one rebuild a project aimed at an older version of Ren'Py
with a newer version, while retaining compatibility.
2012-07-14 21:20:57 -04:00
Tom Rothamel de3fd83810 Basic windows developer docs. 2012-07-14 21:00:20 -04:00
Tom Rothamel 015389dfeb Use a different method of getting zsync progress.
Zsync only produces output when its stdin is a terminal, which isn't
the case on windows. Attempts to recompile it to change this
behavior proved fruitless.

So instead, we look at the downloaded file, and see how closely it
matches the correct file. (By downloading a list of hashes for each
64k block in the correct file.)
2012-07-14 20:54:42 -04:00
Tom Rothamel da69ef70bd Change the paths that we get msvcrt and zsync from. 2012-07-14 20:45:14 -04:00
Tom Rothamel 2a47037f7e New way to upload to the server. 2012-07-14 20:44:29 -04:00
Tom Rothamel 3fb7aace9c Merge pull request #1 from edwin-v/input_caret_position
Changed Input caret reference to zero at beginning.
2012-07-10 18:54:39 -07:00
Edwin 1a33949a5b Changed Input caret reference to zero at beginning. 2012-07-10 00:53:25 +02:00
Tom Rothamel 4ea4a22ec9 Set WMCLASS to a game-specific hint, so Unity can match it. 2012-07-09 00:05:21 -04:00
Tom Rothamel 55c50e62f1 Document fixed rollback. 2012-07-08 23:26:48 -04:00
Tom Rothamel 2b5ebc443e Apply Edwin's fix_rollback patch.
This adds renpy.fix_rollback, a function that forces the user to make
the same choice after rolling back.
2012-07-08 22:42:25 -04:00
Tom Rothamel 705a9556e7 Rewrite the image load log in terms of DynamicDisplayable
Restarting an interaction on a timer is more expensive than we
want.
2012-07-08 21:35:04 -04:00
Tom Rothamel ce1d05b019 Fixes to presplash to make it work. 2012-07-08 20:48:34 -04:00
Tom Rothamel fb8151f656 Fix problem with transformed Frames when the software renderer is used. 2012-07-08 20:20:30 -04:00
Tom Rothamel eb90c6a4e3 Move the opengl log into the games' base directories. 2012-07-08 17:15:08 -04:00
Tom Rothamel 33ecff8633 Enable debug_sound by default when in developer mode. 2012-07-08 16:37:52 -04:00
Tom Rothamel fdf7bd8112 Add about screen to launcher. 2012-07-08 16:25:33 -04:00
Tom Rothamel 8dd4ac2259 Various options changes.
- Add icon.
- Disable saving.
- Disable sound.
- Disable underlay.
- Disable rollback.
- Disable log.
- Disable game menu.
2012-07-08 16:00:55 -04:00
Tom Rothamel eafc62936c Preferences work.
* Update channel selector.
* Gl enable/disable.
* Console output enable/disable.
2012-07-08 15:47:49 -04:00
Tom Rothamel a6991d4950 Add tuple parameter to renpy.version, which returns the version as
as a tuple.
2012-07-08 00:26:06 -04:00
Tom Rothamel 6be3c59c0f Special methods (like __init__) should not be treated as private. 2012-07-08 00:22:57 -04:00
Tom Rothamel d961dd609b Distribute Ren'Py using the launcher.
To make builds more convenient, functionality was added to the
launcher to allow the command line tool to not build updates,
and to build a subset of packages.
2012-07-08 00:19:12 -04:00
Tom Rothamel 0a71291e24 Bump version to 6.14.0. 2012-07-07 21:42:49 -04:00
Tom Rothamel 7ec34e80ed Update build_exe to blacklist packages and include zsync. 2012-07-07 21:24:58 -04:00
Tom Rothamel a124dce48c Always use -OO when launching Ren'Py, so we always run with .pyo files. 2012-07-07 00:13:34 -04:00
Tom Rothamel fe191f364a Search for zsync in the correct places. 2012-07-07 00:13:09 -04:00
Tom Rothamel 9fd83f56c6 Include all methods in code navigation, not just classes by their
__init__ methods.
2012-07-06 23:37:41 -04:00
Tom Rothamel bdaa617f65 Back-compat for input changes. 2012-07-06 23:32:21 -04:00
Tom Rothamel 1b93566780 Merge patch from Edwin that adds left-right arrow support to the
input displayable.
2012-07-06 23:15:34 -04:00
Tom Rothamel b10af0a3d1 Updater documentation. 2012-07-06 23:10:16 -04:00
Tom Rothamel b19fe5788b Clean the module on build; check for errors. 2012-07-06 23:09:31 -04:00
Tom Rothamel e8729a086d Include files used by argparse. 2012-07-06 23:08:25 -04:00
Tom Rothamel 9f96864edb Include base64_codec, used by the crypto stuff. 2012-07-05 01:04:42 -04:00
Tom Rothamel ae9c2a0af7 DLC bug fixes. 2012-07-05 00:57:54 -04:00
Tom Rothamel 76ba294af3 DLC-based editor install.
When the user goes to edit something and no editor has been selected,
the launcher will prompt the creator to select an editor. If the editor
selected is not installed, it will be downloaded and installed.
2012-07-05 00:30:11 -04:00
Tom Rothamel 0be10220b3 Add DLC support to launcher and updater. 2012-07-04 14:27:40 -04:00
Tom Rothamel d27549bfdb Add support for building dlc-only and multi-format packages.
More specific control over what's built is needed for the Ren'Py
build - why not give it to regular users?
2012-07-04 01:25:53 -04:00
Tom Rothamel 63d7ee70e0 Save the update.json file to allow for DLC. 2012-07-04 00:11:56 -04:00
Tom Rothamel 350af3ccd9 Add documentation for the new build system. 2012-07-02 00:28:58 -04:00
Tom Rothamel cfa355d944 Make focus grab migration work with viewports. 2012-07-01 22:22:28 -04:00
Tom Rothamel 1bb2a49479 Add side_* properties to viewports.
This allows us to position the side object created with scrollbars.
2012-07-01 22:21:08 -04:00
Tom Rothamel ed05c4b98c When possible, retain a grab through an interaction restart.
Previously, an interaction restart would unconditionally break the
grab.
2012-07-01 21:34:35 -04:00
Tom Rothamel b39bb13527 Fix the way we adjust times in MultiBox to account for a multibox
that is created at a non-zero st.

This is the case for the box created by a MoveTransition.
2012-07-01 20:58:00 -04:00
Tom Rothamel 8484b63c2d Initial go at a tool that displays image loads on the screen.
It works right now, but interferes with transitions because it
restarts the interaction multiple times a second.
2012-07-01 19:03:33 -04:00
Tom Rothamel 58d0f71df1 Rewrite MoveTransition, changing the API.
Movetransition now interpolates the positions of the image
in the before and after cases. This means that if the image is
moving in one or both of the cases, it will be moved between the
two locations.

The new movetransition uses transforms to specify where to move
to and from, rather than factory functions.

It's easier to use, but somewhat less flexible.

The old move transition is around as OldMoveTransition, and compat
will swap it in based on the script version.
2012-07-01 16:05:57 -04:00
Tom Rothamel f6e9262b0e Only do fancy error handling (gui errors, open in editor) when the
game is using the default "run" command.
2012-07-01 13:29:50 -04:00
Tom Rothamel bf2da27703 Fix pydev warnings.
Among other things, removed the renpy.subprocess module in favor
of importing subprocess and adjusting sys.modules.
2012-07-01 13:18:33 -04:00
Tom Rothamel 9c9864528d Revert to the amie2 theme from 6.13. 2012-06-28 08:18:50 -04:00
Tom Rothamel 23f3636fbb Build Ren'Py distributions with Ren'Py.
I'll be wrapping this in a script later, but the basics of a Ren'Py
build can now be performed with the distribute command built into
the launcher.
2012-06-28 00:06:09 -04:00
Tom Rothamel b84d9e5ca0 Change the name of the launcher project. 2012-06-28 00:05:50 -04:00
Tom Rothamel 9b030c2297 Deal with the case where we have a project.Select action for
a project that doesn't exist.

We now just show it as insensitive and unselected, rather than
crashing.
2012-06-28 00:04:57 -04:00
Tom Rothamel 98c4ed746d Replace launcherinfo.py with project.json where appropriate. 2012-06-28 00:03:23 -04:00
Tom Rothamel 09e2cbd45c Rename the launchers.
This entailed a minor change in bootstrap.rpy so Ren'Py could find the
game directory of the old launcher4.
2012-06-27 22:35:08 -04:00
Tom Rothamel 3ff2f0cd56 Remove obsolete files, fix filenames, and migrate bzr->git. 2012-06-27 22:22:18 -04:00
Tom Rothamel cb6c4d6953 Fixes to action documentation.
Thanks to SleepKirby for contributing them.
2012-06-27 20:59:38 -04:00
Tom Rothamel acfac50066 Minor update fixes. 2012-06-27 20:51:21 -04:00
Tom Rothamel a90c3e1255 Call Video_AutoInit so we can run on Mac OS X. 2012-06-27 01:05:47 -04:00
Tom Rothamel 91f5f40fd8 Parse the output of an unmodified zsync.
Compliling zsync on windows is proving to be a real PITA - this lets us ship
unmodified binaries.
2012-06-25 00:48:55 -04:00
Tom Rothamel a1616b5e65 Rewrite renpy.sh so it can choose between linux-x86 and linux-x86_64. 2012-06-23 20:09:22 -04:00
SleepKirby 739ea64fa0 A few minor fixes to Screen Action documentation. 2012-06-22 19:32:05 -07:00
Tom Rothamel 010007b0a1 Remove symlink. 2012-06-22 17:45:31 -04:00
Tom Rothamel 13fe854082 Fix a bar rendering glitch.
The break in the bar could be a non-integer number of pixels, causing
both the left and right sides of the bar to be rounded down and the
total bar to lose a pixel of length.
2012-06-19 23:52:33 -04:00
Tom Rothamel 249c98f320 Document save, load, and rollback. 2012-06-19 00:25:04 -04:00
Tom Rothamel 46e84d3661 This release changes the behavior of transforms to make them more correct
and easier to use.

The xzoom and yzoom properties are now applied before, rotation. This means
that the shape of the image will remain consistent as the image is rotated.
Previously, the image to change shape as it was rotated.

The xzoom and yzoom properties may now be negative, with negative zoom
values causing the images to be flipped. The positioning code now takes
this into account, and positions a flipped image properly.
2012-06-18 19:37:30 -04:00
Tom Rothamel 171eb33966 Remove the now-obsolete tools directory.
This gets rid of add_from, but we haven't needed that in a long
time. The archiver is now part of the buld code.
2012-06-18 18:52:31 -04:00
Tom Rothamel 35cdadbcee Allow roll forward to work through a jump out of a call_screen. 2012-06-18 17:54:43 -04:00
Tom Rothamel fd501a7a03 Deleting persistent data. 2012-06-18 09:31:11 -04:00
Tom Rothamel d27ea92fd1 Add lint support to the new launcher. 2012-06-18 09:26:58 -04:00
Tom Rothamel 0a701ed929 Allow the user to change the update channel (URL). 2012-06-18 00:11:00 -04:00
Tom Rothamel b5e6cb97c7 Add the updater to the new launcher. 2012-06-17 23:27:35 -04:00
Tom Rothamel b2671013fd Remove obsolete code, show message + directory when done with build. 2012-06-17 21:46:14 -04:00
Tom Rothamel 3eada61cc7 Include the archiver in the launcher, and automatic archiving as part
of the build process.
2012-06-17 21:20:11 -04:00
Tom Rothamel f693e26ab0 Feed information from the game into the build system, so we can now
use the game script to control building.
2012-06-17 18:26:05 -04:00
Tom Rothamel f575a1f233 Dump build information from the script to the json dump file. 2012-06-17 09:56:07 -04:00
Tom Rothamel 9834b85ced Able to build distributions, using a GUI to show progress. 2012-06-14 01:23:51 -04:00
Tom Rothamel b8d96d86b7 Look tweaks. 2012-06-12 00:15:01 -04:00
Tom Rothamel d58eaaf387 Add file patterns editor. 2012-06-12 00:09:22 -04:00
Tom Rothamel 67adb17ad3 Save project data. 2012-06-11 22:36:28 -04:00
Tom Rothamel 435e919326 Work on the build distributions gui. 2012-06-10 16:54:20 -04:00
Tom Rothamel 37f35e4f34 Add config.rgl_resize.
This was needed for the launcher, and determines if the user can resize
the window.
2012-06-10 01:03:24 -04:00
Tom Rothamel 3c6353f73e Add missing files to distributions. 2012-06-09 23:56:48 -04:00
Tom Rothamel dfc573d307 Integrate updater with Ren'Py.
This includes exposing the updater through Ren'Py functions,
and creating a default user-interface screen.
2012-06-09 23:15:45 -04:00
Tom Rothamel 6758b6acc7 Start turning the updater into a .rpy file. 2012-06-09 21:29:26 -04:00
Tom Rothamel 2c9bfddb4e Add a simulation mode to the updater. 2012-06-07 00:05:44 -04:00
Tom Rothamel 81bf4c2288 Verify signatures in the updater. 2012-06-06 23:50:58 -04:00
Tom Rothamel b38ae1fb13 Add signed update scripts. 2012-06-05 03:30:24 -04:00
Tom Rothamel 7f0ce7a40b Change unlinking to be safe in the face of Windows sharing violations. 2012-06-05 03:29:18 -04:00
Tom Rothamel 0f5da2d89b Add the mac transform to the updater. 2012-06-03 19:56:11 -04:00
Tom Rothamel c80095f511 Make the updater threaded. 2012-06-03 19:27:02 -04:00
Tom Rothamel a9414d4692 The updater is at the point where it can update the_question into the
tutorial game.
2012-06-03 18:46:08 -04:00
Tom Rothamel d2de95afc1 More work on the automatic updater. 2012-06-03 16:58:22 -04:00
Tom Rothamel 718a8fb4f8 Mac transform, include update.json, progress reporting. 2012-06-01 23:37:16 -04:00
Tom Rothamel 7c603578db Basic package building, to the point where we can build a linux
tarball.
2012-06-01 01:02:43 -04:00
Tom Rothamel 86e3c7f12f Change to look of theme changer. 2012-05-23 00:25:32 -04:00
Tom Rothamel 7d8f8b8f12 Add theme chooser. 2012-05-22 00:14:17 -04:00
Tom Rothamel 546a16e23c Add xinitial and yinitial parameters to a viewport. This lets us set the
initial positioning of the viewport.
2012-05-22 00:02:15 -04:00
Tom Rothamel 80571b8fbd Creating new projects.
This is the main part - creating the project - and not the theme-picking
part of it.
2012-05-20 16:42:23 -04:00
Tom Rothamel 7b1a634701 Add projects directory picking. 2012-05-20 15:34:16 -04:00
Tom Rothamel 3e4efa344e Add text input support. 2012-05-19 23:05:10 -04:00
Tom Rothamel 13c76f6cb5 If an input would be empty, display a ZWSP instead.
This ensures the size of the input won't change when text is added to
it.
2012-05-19 23:00:01 -04:00
Tom Rothamel a71e6cf6ec Add a preferences screen and editor selection code to launcher4. 2012-05-17 10:11:07 -04:00
Tom Rothamel b1dbbeeef8 Tweak colors. 2012-05-16 23:55:19 -04:00
Tom Rothamel 1d3216b6c9 Update the navigation data whenever the game is launched, load it whenever it is needed. 2012-05-16 23:46:32 -04:00
Tom Rothamel 11bbe2cff8 Dumps can now take place when the script is launched using any
commmand, so we can auto-refresh when another command is run.

Also, dump even when errors occur.
2012-05-15 00:08:58 -04:00
Tom Rothamel ff83ef5676 Improve navigation screens and look. 2012-05-15 00:08:44 -04:00
Tom Rothamel dcfc3a173e Make launcher into a game. Add directory opening support.
The idea is that we can now use the script navigation to help with developing the new launcher itself.
2012-05-13 12:57:52 -04:00
Tom Rothamel 2f83caea2d Add support of launching all script files in the editor. 2012-05-12 23:35:39 -04:00
Tom Rothamel 17ed25387d l4: Editor support, and hooking the editor up to navigation. 2012-05-12 22:44:27 -04:00
Tom Rothamel 4d8c1031cd l4: Work on navigation screen. 2012-05-12 00:42:01 -04:00
Tom Rothamel 89f4b81b57 Read the dump information into launcher4. 2012-05-11 00:16:34 -04:00
Tom Rothamel ad50aa7602 l4: Information, progress, and error handling functions. 2012-05-09 00:25:38 -04:00
Tom Rothamel 316c64bb48 Various tweaks to the dump format. 2012-05-09 00:25:28 -04:00
Tom Rothamel 19920b37ca Add support for dumping various types of symbols to a file. 2012-05-08 19:52:27 -04:00
Tom Rothamel ef5d6a4b66 Dump additional name types. 2012-05-08 00:03:05 -04:00
Tom Rothamel 2ea0299615 Implement the ability to dump label locations. 2012-05-07 23:41:27 -04:00
Tom Rothamel 4cd605c134 Fix the example colorizer in the demo game.
It was overloading the Python regexp compiler.
2012-05-07 21:00:56 -04:00
Tom Rothamel c2ddd39f2c Better handling of arguments.
Now, we handle subcommands using two-pass parsing, rather than relying
on argparse to do it for us.
2012-05-06 17:26:16 -04:00
Tom Rothamel 47209c9f63 l4: Add the ability to open the documentation, launch the game, and return to a project. 2012-05-03 23:12:04 -04:00
Tom Rothamel bb9c7dfe46 Add the OpenURL function. 2012-05-03 23:11:43 -04:00
Tom Rothamel d95192e018 l4: Work on front screen. 2012-05-03 21:01:04 -04:00
Tom Rothamel 68b76e2306 l4: Work on the new launcher. 2012-04-29 23:24:43 -04:00
Tom Rothamel 6f0c5125ae Merge 4+ months of 6.13 development back into 6.14. 2012-04-23 22:59:11 -04:00
Tom Rothamel 7b6da918a7 Distro fixes for the new host. 2012-04-22 19:25:28 -04:00
Tom Rothamel 0c05990db3 Bump version to 6.13.12. 2012-04-17 22:02:06 -04:00
Tom Rothamel a3581860b3 Clear errors at the start of a texture test.
When ANGLE resets, it can leave a spurious error around, which will
then cause the texture test to fail and Ren'Py to crash.
2012-04-17 20:58:26 -04:00
Tom Rothamel f371ed6f5f Deal with keys that are used in the game, but not defined in config.keymap.
This helps when the creator replaces config.keymap wholesale, and we then
upgrade to a new version of Ren'Py.
2012-04-17 20:55:37 -04:00
Tom Rothamel 17ea9736cd Minor changes to non-written building doc. 2012-04-17 20:55:12 -04:00
Tom Rothamel a1e13e3eab Make the style preferences dirty flag survive a rollback. 2012-04-13 00:35:57 -04:00
Tom Rothamel 1de06e650e Also log to the temp directory if we can't log to the Ren'Py base directory. 2012-04-12 20:44:16 -04:00
Tom Rothamel f92f14f68a Place error handling files in a temp directory if the current
directory isn't writable.
2012-04-12 19:46:45 -04:00
Tom Rothamel a3c5e57616 Allow the screenshot pattern to be configured by the creator. 2012-04-12 18:03:15 -04:00
Tom Rothamel 5840d6c464 Tweak the step size of a FieldValue, and allow it to be configured
by the user.
2012-04-11 23:23:25 -04:00
Tom Rothamel ba751a8a93 Fix run() to recurse into nested lists.
Allow Adjustment to compute a step even if page is 0.
2012-04-11 23:05:04 -04:00
Tom Rothamel 29c7d33c0a Restart the current interaction on a window resize.
This allows the buttons to update their state in response to a resize event.
2012-04-09 17:27:49 -04:00
Tom Rothamel dfb053dbd6 Reset the key modifiers when the game loses or gains focus.
This is a bad solution, but it's better than leaving ALT stuck on,
which makes a bunch of things not work.
2012-04-03 22:17:46 -04:00
Tom Rothamel 5918606f33 Bump version. 2012-03-27 22:37:23 -04:00
Tom Rothamel 794f8955e3 Deal with reuse of an swdraw object. 2012-03-27 22:25:29 -04:00
Tom Rothamel e90754e2dc Fix crashing on windows when minimizing and maximizing in GL mode.
Fix windows icon rendering.
2012-03-27 21:59:42 -04:00
Tom Rothamel 976b4fc2fc Better handling of errors in error handling.
We try to show the original exception, not the error handling one.
2012-03-25 10:37:38 -04:00
Tom Rothamel ddb7bd2167 Do not substitute in a parse error. 2012-03-25 10:20:00 -04:00
Tom Rothamel 74fd442303 Bump version to 6.13.10. 2012-03-24 23:04:38 -04:00
Tom Rothamel 66555facd5 More paranoia in error handling, to prevent errors from being masked. 2012-03-24 23:04:28 -04:00
Tom Rothamel 83b9ca6b96 If the display fails to initialize during error handling, fall back
to the traditional error handling.
2012-03-24 22:57:12 -04:00
Tom Rothamel dddeb56b91 Do not set renpy.display.draw to None when doing a display reset.
We now only do a display reset from inside Ren'Py - we've given up the
ability to change the renderer on the fly.
2012-03-24 22:46:11 -04:00
Tom Rothamel 39a799e995 Ensure that we use integer pixel coordinates when doing is_pixel_opaque
in the software renderer.
2012-03-24 21:55:29 -04:00
Tom Rothamel 88032a1478 Trim the rollback log even if there is no label in it, to prevent it
from growing to an infinite size.
2012-03-24 18:15:30 -04:00
Tom Rothamel 90e547b0a5 Doc fix. 2012-03-24 16:54:47 -04:00
Tom Rothamel cc9ea22354 Various fixes to package loading, to make it work closer to the
way Python does it.
2012-03-23 23:34:13 -04:00
Tom Rothamel ea3d409c19 Fix a regression with tiled frames.
The change to floating-point render widths made a call to range() not
work.
2012-03-11 10:23:41 -04:00
Tom Rothamel 5ef40f8c3e Improve new text editor support to be production quality. 2012-03-10 17:45:52 -05:00
Tom Rothamel 71ccf249f2 Merge 6.14 editor code.
This starts the process or working around windows argument handling,
which would be very difficult to do with the old design.
2012-03-08 16:43:53 -05:00
Tom Rothamel 45d9d640ee Add a check for non-ASCII filenames to lint. 2012-03-08 00:00:36 -05:00
Tom Rothamel 14c38ded81 Use execfile to run the editor file. (Since for some reason, exec didn't
work.)
2012-03-07 23:59:58 -05:00
Tom Rothamel d90d68fd68 Fsencode filenames we hand off to pygame, since it seems to convert at
least some of them if we don't.
2012-03-07 19:48:40 -05:00
Tom Rothamel 9abd26d76c Remove unnecessary module from calls to FsPopen.
(Not just unnecessary, but totally wrong.)
2012-03-07 17:01:08 -05:00
Tom Rothamel 3f0b27ba26 Ensure that all filesystem access occurs using the filesystem
encoding, rather than unicode or utf-8.
2012-03-07 01:33:39 -05:00
Tom Rothamel 70276655c8 Wherever we call sys.getfilesystemencoding(), ensure we use utf-8 if it
returns None.

For whatever reason, we don't know what the filesystem encoding is on
Android.
2012-03-06 22:30:43 -05:00
Tom Rothamel b07b6aa32f Minor fixes to distribute.py to work with my new drive layout. 2012-03-06 21:54:04 -05:00
Tom Rothamel bcce21b0d5 Make save_dump work on Python 2.6. 2012-03-06 12:39:52 -05:00
Tom Rothamel 967e0d6539 Invalidate displayables that are rendered as part of a size_group.
This fixes previous code that used .kill(), which is now a no-op.
2012-03-06 11:36:43 -05:00
Tom Rothamel 383193d478 Bump version to 6.13.9. 2012-03-05 22:45:08 -05:00
Tom Rothamel 6b640a7070 Update changelog. 2012-03-05 22:43:16 -05:00
Tom Rothamel e22a2c16bd Update Android building docs to reflect RAPT. 2012-03-05 22:20:37 -05:00
Tom Rothamel 67f356f1b4 Use doubles instead of ints to represent character widths in texwrap.
This fixes a bug that would cause lines to be too long - the lines
were correct in texwrap, since widths were fine as ints, but expanded
when rendered with the full glyph advances.
2012-03-05 21:18:39 -05:00
Tom Rothamel 2eee3c772b Log menu choices with an index of 0 as choices.
Thanks to Spiky Caterpillar.
2012-03-05 14:03:23 -05:00
Tom Rothamel 7b14755607 Switch all path handling to using unicode.
This prevents us from getting errors when trying to convert encodings
in path names.
2012-03-01 23:24:21 -05:00
Tom Rothamel 8c8940dcbb Change a use of GL_BYTE to GL_UNSIGNED_BYTE.
Since the latter isn't supported on OpenGL ES. Also, one would never
want to use the former. (I have no idea why OpenGL even has it.)
2012-02-29 22:50:09 -05:00
Tom Rothamel 5aadfa5ca4 Add headers for cdef extern functions.
This allows things to compile on Windows. I'm not sure what changed to
make them not compile - probably something in Cython.
2012-02-29 01:05:53 -05:00
Tom Rothamel 46ef0cbf04 Change the type of height and width in Render to float.
This is for compatibility with 6.10 and prior versions of Ren'Py, and
because it makes sense. Zooming an image wants to create an image with
a non-integer width and height. This is especially true when xalign is
non-zero - we need to take the precise width into account when
centering the displayable (at least when using subpixel precision).
2012-02-27 23:43:53 -05:00
Tom Rothamel be6d4fdf77 Add config.save_dump, to allow people to configure save dumping. 2012-02-26 23:04:36 -05:00
Tom Rothamel c663b71114 Discard all displayables when saving a screen.
Previously, we didn't clear the widgets and transforms variables,
which kept almost everything - and made Cradle Song much slower.
2012-02-26 22:33:11 -05:00
Tom Rothamel e9b8a16a80 Code to dump a representation of the contents of the save file
when it's created.

This helps us determine why save-space is leaking.
2012-02-26 19:40:55 -05:00
Tom Rothamel 2750bcf927 Remove blacklist test code. 2012-01-30 17:56:05 -05:00
Tom Rothamel 320dc92092 Improvements to the blacklist.
Some versions of Mesa randomly fail when trying to compile shaders. We catch
those, and fall back to fixed-function mode to prevent the crash.
2012-01-24 23:48:35 -05:00
Tom Rothamel 790bdb03e7 Fix crash in Render.fill.
We were using SolidImage, which has been replaced by Solid.
2012-01-18 21:44:51 -05:00
Tom Rothamel 619addc5f0 Better catch autosave errors. 2012-01-17 22:27:48 -05:00
Tom Rothamel 47fb3f9438 Update copyright to 2012. 2012-01-15 09:50:38 -05:00
Tom Rothamel 7ac22328b2 Quote values displayed in the variable viewer, when they have [ in them.
Bug reported at:  http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=12726
2012-01-11 22:51:45 -05:00
Tom Rothamel 91989a56e9 Bound outlined blits.
This is in response to http://lemmasoft.renai.us/forums/viewtopic.php?p=177213#p177213
a bug where we were stuck drawing outside the screen.
2012-01-11 22:46:55 -05:00
Tom Rothamel 34070e63e6 Prefer modules from local directory.
Previously, if we had installed the Ren'Py modules, we would use those in
preference to the modules that exist in the current directory.
2012-01-11 22:45:55 -05:00
Tom Rothamel 1a5a7ef82a Fix roll-forward. 2012-01-11 22:27:27 -05:00
Tom Rothamel e2ae6828be Update changelog. 2012-01-07 19:58:10 -05:00
Tom Rothamel 9f02ad9a82 Use glTexParameteri instead of glTexParameterf for the texture test.
This is more consistent with how the normal code does it, and
also compiles on Windows.
2012-01-07 19:32:35 -05:00
Tom Rothamel 0289c770b4 Improvments to SideImage support.
Can track a single tag. Can only show a SideImage for characters
that are not on screen.
2012-01-07 19:12:15 -05:00
Tom Rothamel 6c5ce3198e Make a more useful error report if we can't import pygame.
Users can get this if they have ; or : in the directory, so
we inform them about that before creating a traceback.
2012-01-07 17:53:25 -05:00
Tom Rothamel 7acc54daa3 Protect the call to time.ctime().
It failed once on one user's machine, but since it isn't really
critical path, might as well just continue on in the case of
a failure.
2012-01-07 17:53:01 -05:00
Tom Rothamel 08192c47fc Do not allow a roll_forward when we're not in a context that
allows rollback.

Fixes bug #882807.
2012-01-05 22:44:41 -05:00
Tom Rothamel b94a84b931 Ren'Py now builds with libpng 1.5
Thanks to James Broadhead for the patch.
2012-01-05 21:55:08 -05:00
Tom Rothamel 82576c5ed6 Re-enable old-style interpolation.
This is in response to Bug #909023, and in recognition that there's a
lot of code out there that uses the old syntax.
2012-01-05 20:44:38 -05:00
Tom Rothamel 19333248d9 Ignore attempts to load from a non-existent directory.
This gets KS running.
2012-01-05 20:18:20 -05:00
Tom Rothamel 4774017317 Fix a bug with fonts.
It's possible to have a font's bitmap go above its ascent. When this
happened, we would write outside of memory. This fixes that bug by not
drawing - it might render the font wrong, but it should prevent
crashing.
2012-01-04 22:28:20 -05:00
Tom Rothamel 21a667d645 More accurate wording. 2012-01-01 00:20:06 -05:00
Tom Rothamel 81276aeb26 Added config.python_callbacks.
This is a list of functions that are called at the end of each Python
block. One use of this would be to allow variables to manipulated with
normal mathematical operators, and then have a callback ensure that
they remain within a range.
2012-01-01 00:18:02 -05:00
Tom Rothamel 8e975217f5 Modify the DSE game so that it uses the new-style interpolation syntax. 2011-12-31 23:56:11 -05:00
Tom Rothamel 3d47c7bae3 Quote square brackets in the old launcher. 2011-12-31 23:55:57 -05:00
Tom Rothamel c93a2ed5d5 Fix shebang in renpy.py. 2011-12-31 23:55:43 -05:00
Tom Rothamel eb9b83860b Fix more eclipse warnings.
Figured out how to get eclipse to scan the modules, so we can dispense
with the typeinfo stuff.
2011-12-31 23:03:00 -05:00
Tom Rothamel d9b7c73e8f Round up the width of text before drawing it.
When using negative kerning, we can have a line of text with a
fractional computed width. Rounding down this case lead to the last
pixel being cut off.
2011-12-31 19:14:20 -05:00
Tom Rothamel 0f5b7267fb Test textures before attempting to use them.
The hope is that we never use an overly-large texture.
2011-12-26 23:53:23 -05:00
Tom Rothamel eac1b02212 Remove all PyDev-generated warnings and problems.
(Updated to a new version of PyDev, which generated new warnings.)
2011-12-25 12:17:11 -05:00
Tom Rothamel cc8396a8ab Don't save the child of a screen. 2011-12-18 21:41:22 -05:00
Tom Rothamel 31a8cd2a3c Doc fix. 2011-12-17 23:26:23 -05:00
Tom Rothamel 295e64a02c Merge fixes from mainline. 2011-12-17 23:24:29 -05:00
Tom Rothamel ee566fc6c8 Import minstore into default store.
This ensures that sets created in the default store have the right
(RevertableSet) type.
2011-12-14 22:45:26 -05:00
Tom Rothamel fb60c4acfe New editor code. 2011-12-14 22:35:51 -05:00
Tom Rothamel 8381b5184c Add navigate page. 2011-11-30 21:47:00 -05:00
Tom Rothamel 9e5570b1b4 Only use the transform path for non-identity transforms. 2011-11-27 15:22:11 -05:00
Tom Rothamel 2caaebc1f5 Fix problems w/ rendering.
#1: Operation is not copied during a subsurface operation.

#2: A transformed dissolve (or IMAGEDISSOLVE) isn't rendered properly.
2011-11-27 14:46:17 -05:00
Tom Rothamel abb99e19e2 Start work on the settings screen.
Right now, it has the projects directory choice, and a checkbox to
disable transitions.
2011-11-24 12:29:13 -05:00
Tom Rothamel 63ed2b8632 l3: checkboxes. 2011-11-23 22:56:07 -05:00
Tom Rothamel 07d1391c4a Overlay pages.
We want one layer of overlay pages in the launcher. This lets
us replace the current page with other info, and then easily and
automatically get back to the main page.

Tried a stack, but it's too complex for our needs.
2011-11-22 23:25:56 -05:00
Tom Rothamel b69c0c2007 Refactor launcher, add jsondump command.
The launcher now is based on "pages". The jsondump command will dump
game information to a json file.
2011-11-22 22:42:49 -05:00
Tom Rothamel 6bda5fa459 Implement commands.
Commands are given on the command line after the base
directory. Implemented the lint, quit, and rmpersistent commands.
2011-11-19 22:55:38 -05:00
Tom Rothamel 5e9f4e71c8 Hook up arguments. Remove remote-control support.
Removed the remote control support since it was never documented or used.
2011-11-19 16:23:33 -05:00
Tom Rothamel d2188c860f Create arguments.py, begin switching Ren'Py to use argparse.
Moved the list of arguments to arguments.py.
2011-11-19 00:58:06 -05:00
Tom Rothamel b60ad5f3ec Launcher now launches. Viewport takes a scrollbars parameter. A screen
language block may now contain multiple has statements.
2011-11-13 22:15:40 -05:00
Tom Rothamel 5305670f1c Add launch button 2011-11-11 23:46:23 -05:00
Tom Rothamel bfb9380de0 The :ref:sl-textbutton and :ref:sl-label screen language statements now take
properties prefixed with ``text_``. These properties have the text_
prefix stripped, and are then passed to the internal text displayable.
2011-11-11 22:17:09 -05:00
Tom Rothamel 25c7bc5726 More look improvements. 2011-11-09 22:43:26 -05:00
Tom Rothamel 63acf7eb05 Transitions in the launcher. 2011-11-07 21:14:13 -05:00
Tom Rothamel 2f134f69f1 Improve multiple store support. 2011-11-06 23:37:00 -05:00
Tom Rothamel bf17e281c9 Start work on next-generation launcher. 2011-11-06 23:36:27 -05:00
Tom Rothamel 2b40f1b84d Implement additional store modules. 2011-10-30 19:06:01 -04:00
Tom Rothamel e6617caeef Rewrite store handling. 2011-10-24 23:36:49 -04:00
383 changed files with 21658 additions and 6698 deletions
-93
View File
@@ -1,93 +0,0 @@
build
dist
dists
renpy.app
**/*.rpyc
**/*.rpyb
**/*.rpymc
jedit
lint.txt
renpy.code
traceback.txt
doc/common.css
doc/images
doc/index.html
doc/monobook.css
doc/monobook2.css
doc/reference
doc/shared.css
doc/tutorials
doc/www.renpy.org
testing*
translations.rpy
launchertrans.rpy
jcc
scite/scite.zip
screenshot*
.ropeproject
release_cardgame.sh
cardgame
dse.split
empty
empty-linux-x86.tar.bz2
empty-mac.zip
empty.zip
errors.txt
icons
iliad-icon.png
iliad-work
kuroi
lsprofcalltree.py
manifest.xml
mediatest
musicroom
nobmtest
renpy-iliad.sh
renpy.kcg
renpy.stats
renpygame-1.2.zip
speedtest
styles.txt
renpygame-demo/game/saves
Lucy Sprites.zip
translate
close_bugs.py
.logplayer
scite-6.10.zip
scite-renpy-20090803.zip
module/cython.sh
old_demo
opengl.txt
Microsoft.VC90.CRT.manifest
console.exe
msvcr90.dll
python26.dll
renpy.exe
lib/windows-x86
doc/*
updates/prerelease
module/gen
log.txt
lib/linux-x86
lib/python
lib/update-version.txt
sphinx/game/saves
tutorial/game/saves
doc
unparse.py
module/glrtt_fbo.c
module/glrtt_fbo.html
tutorial/game/cache
renpy.exe.log
renpy/vc_version.py
.pydevproject
.project
.settings
LICENSE.txt
template/README.html
the_question/README.html
tutorial/README.html
trace.txt
renpy/angle/*.pyx
renpy/angle/*.pxd
renpy-ppc.zip
+54
View File
@@ -0,0 +1,54 @@
*.rpyc
*.rpyb
*.rpymc
*.pyc
*.pyo
*~
*.bak
saves
tmp
cache
log.txt
/build
/dist
/dists
/renpy.app
/jedit
/lint.txt
/renpy.code
/traceback.txt
/testing*
/screenshot*
/errors.txt
/styles.txt
/Microsoft.VC90.CRT.manifest
/console.exe
/msvcr90.dll
/python27.dll
/renpy.exe
/lib/windows-x86
/lib/linux-x86_64
/lib/linux-i686
/lib/python2.7
/doc
/.pydevproject
/.pydevproject.bak
/.project
/.settings
/LICENSE.txt
/template/README.html
/the_question/README.html
/tutorial/README.html
/renpy/angle/*.pyx
/renpy/angle/*.pxd
/renpy-ppc.zip
/module/build
/module/gen
/editra
dl
renpy/vc_version.py
-11
View File
@@ -1,15 +1,4 @@
#!/bin/sh
if [ "x$1" = "x" ]; then
echo need version
exit
fi
rsync -av updates tom@onegeek.org:/home/tom/WWW.update/renpy/
mkdir ~/ab/website/renpy/dl/$1
cp dists/renpy-$1-* ~/ab/website/renpy/dl/$1
cp renpy-ppc.zip ~/ab/website/renpy/dl/$1
cd ~/ab/website
./upload.sh
+1
View File
@@ -5,3 +5,4 @@ ln -s ../help.html the_question/README.html
ln -s ../help.html template/README.html
ln -s sphinx/source/license.rst LICENSE.txt
ln -s sphinx/build/html doc
+10
View File
@@ -0,0 +1,10 @@
# This file sets up the normal python modules. It's used to help eclipse
# do type detection, by providing an importable version of the cython code.
from distutils.core import setup
setup(
packages=['renpy', 'renpy.gl', 'renpy.angle', 'renpy.display', 'renpy.audio', 'renpy.text', 'pysdlsound'],
package_dir={ 'pysdlsound' : 'module' },
)
+6 -5
View File
@@ -54,10 +54,10 @@ def main():
'win32con',
'win32api',
'Numeric',
'locale',
'gettext',
'os2emxpath',
'macpath',
'multiprocessing',
'_multiprocessing',
],
'optimize' : 2,
} },
@@ -93,15 +93,16 @@ def main():
os.unlink("dist/lib/windows-x86/renpy.code")
os.rename("dist/lib/windows-x86/renpy.code.new", "dist/lib/windows-x86/renpy.code")
# Take these files from the old python.
shutil.copy("c:/Python26/Microsoft.VC90.CRT.manifest", "Microsoft.VC90.CRT.manifest")
shutil.copy("c:/Python26/msvcr90.dll", "msvcr90.dll")
move_from_dist("lib/windows-x86")
move_from_dist("console.exe")
move_from_dist("python26.dll")
move_from_dist("python27.dll")
move_from_dist("renpy.exe")
try:
main()
except:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
# This file contains warpers that are used by ATL. They need to be defined
+301
View File
@@ -0,0 +1,301 @@
# Contains functions and variables that control the building of
# distributions.
init -1000 python in build:
def make_file_lists(s):
"""
Turns `s` into a (perhaps empty) list of file_lists.
If `s` is a list or None, then returns it. If it's a string, splits
it on whitespace. Otherwise, errors out.
"""
if s is None:
return s
elif isinstance(s, list):
return s
elif isinstance(s, basestring):
return s.split()
raise Exception("Expected a string, list, or None.")
def pattern_list(l):
"""
Apply file_lists to the second argument of each tuple in a list.
"""
rv = [ ]
for pattern, groups in l:
rv.append((pattern, make_file_lists(groups)))
return rv
# Patterns that are used to classify Ren'Py.
renpy_patterns = pattern_list([
( "**~", None),
( "**/#*", None),
( "**/.*", None),
( "**.old", None),
( "**.new", None),
( "**.rpa", None),
( "**/*.pyc", None),
( "renpy.py", "all"),
( "renpy/**", "all"),
( "common/**", "all"),
# Windows-specific patterns.
( "python*.dll", "windows" ),
( "msvcr*.dll", "windows"),
( "Microsoft.VC*.CRT.manifest", "windows"),
( "lib/dxwebsetup.exe", "windows"),
( "lib/windows-x86/**", "windows"),
# Linux patterns.
( "renpy.sh", "linux"),
( "lib/linux-x86_64/**", "linux"),
( "lib/linux-i686/**", "linux"),
( "lib/python2.7/**", "linux"),
# Mac patterns.
( "renpy.app/Contents/Ren'Py Launcher", None),
( "renpy.app/Contents/Info.plist", None),
( "renpy.app/Contents/Resources/launcher.py", None),
( "renpy.app/Contents/Resources/launcher.icns", None),
( "renpy.app/**", "mac"),
# Shared patterns.
( "/lib/", "windows linux"),
])
def classify_renpy(pattern, groups):
"""
Classifies files in the Ren'Py base directory according to pattern.
"""
renpy_patterns.append((pattern, make_file_lists(groups)))
# Patterns that are relative to the base directory.
early_base_patterns = pattern_list([
("*.py", None),
("*.sh", None),
("*.app/", None),
("*.dll", None),
("*.manifest", None),
("lib/", None),
("renpy/", None),
("update/", None),
("common/", None),
("update/", None),
("icon.ico", None),
("icon.icns", None),
("project.json", None),
("tmp/", None),
("game/saves/", None),
("archived/", None),
("launcherinfo.py", None),
("android.txt", None),
])
base_patterns = [ ]
late_base_patterns = pattern_list([
("**", "all")
])
def classify(pattern, file_list):
"""
:doc: build
Classifies files that match `pattern` into `file_list`.
"""
base_patterns.append((pattern, make_file_lists(file_list)))
def clear():
"""
:doc: build
Clears the list of patterns used to classify files.
"""
base_patterns[:] = [ ]
def remove(l, pattern):
"""
Removes the pattern from the list.
"""
l[:] = [ (p, fl) for i in l if p != pattern ]
# Archiving.
archives = [ ]
def archive(name, file_list="all"):
"""
:doc: build
Declares the existence of an archive. If one or more files are
classified with `name`, `name`.rpa is build as an archive. The
archive is included in the named file lists.
"""
archives.append((name, make_file_lists(file_list)))
archive("archive", "all")
# Documentation patterns.
documentation_patterns = [ ]
def documentation(pattern):
"""
:doc: build
Declares a pattern that matches documentation. In a mac app build,
files matching the documentation pattern are stored twice - once
inside the app package, and again outside of it.
"""
documentation_patterns.append(pattern)
xbit_patterns = [
"**.sh",
"**/*.so.*",
"**/*.so",
"**/*.dylib",
"**.app/Contents/MacOS/*",
"lib/**/python",
"lib/**/zsync",
"lib/**/zsyncmake",
]
def executable(pattern):
"""
:doc: build
Adds a pattern marking files as executable on platforms that support it.
(Linux and Macintosh)
"""
xbit_patterns.append(pattern)
# Packaging.
packages = [ ]
def package(name, format, file_lists, description=None, update=True, dlc=False):
"""
:doc: build
Declares a package that can be built by the packaging
tool.
`name`
The name of the package.
`format`
The format of the package. A string containing a space separated
list of:
zip
A zip file.
app-zip
A zip file containing a macintosh application.
tar.bz2
A tar.bz2 file.
The empty string will not build any package formats (this
makes dlc possible).
`file_lists`
A list containing the file lists that will be contained
within the package.
`description`
An optional description of the package to be built.
`update`
If true and updates are being built, an update will be
built for this package.
`dlc`
If true, any zip or tar.bz2 file will be built in
standalone DLC mode, without an update directory.
"""
formats = format.split()
for i in formats:
if i not in [ "zip", "app-zip", "tar.bz2" ]:
raise Exception("Format {} not known.".format(i))
if description is None:
description = name
d = {
"name" : name,
"formats" : formats,
"file_lists" : make_file_lists(file_lists),
"description" : description,
"update" : update,
"dlc" : dlc,
}
packages.append(d)
package("all", "zip", "windows mac linux all", "All Desktop Platforms")
package("linux", "tar.bz2", "linux all", "Linux x86/x86_64")
package("mac", "app-zip", "mac all", "Macintosh x86")
package("win", "zip", "windows all", "Windows x86")
# Data that we expect the user to set.
# The name of directories in the archives.
directory_name = ""
# The name of executables.
executable_name = ""
# Should we include update information into the archives?
include_update = False
# A verbose version to include in the update.
version = None
# Are we building Ren'Py?
renpy = False
# This function is called by the json_dump command to dump the build data
# into the json file.
def dump():
rv = { }
rv["directory_name"] = directory_name
rv["executable_name"] = executable_name
rv["include_update"] = include_update
rv["packages"] = packages
rv["archives"] = archives
rv["documentation_patterns"] = documentation_patterns
rv["base_patterns"] = early_base_patterns + base_patterns + late_base_patterns
rv["renpy_patterns"] = renpy_patterns
rv["xbit_patterns"] = xbit_patterns
rv["version"] = version or directory_name
rv["renpy"] = renpy
return rv
+10 -4
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init -1210 python:
@@ -58,11 +58,17 @@ init -1210 python:
if version <= (6, 12, 2):
style.default.language = "western"
style.default.layout = "greedy"
config.old_substitutions = True
config.new_substitutions = False
config.broken_line_spacing = True
if (6, 12, 2) < version <= (6, 13, 8):
config.old_substitutions = False
if version <= (6, 13, 12):
global MoveTransition
MoveTransition = OldMoveTransition
init 1210 python hide::
# This returns true if the script_version is <= the
+61 -29
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
# This file contains a number of definitions of standard
@@ -47,6 +47,20 @@ init -1110:
alpha 1 rotate None zoom 1 xzoom 1 yzoom 1 align (0, 0) alignaround (0, 0) subpixel False size None crop None
xpos 0.5 xanchor 0.5 ypos 1.0 yanchor 1.0
# These are used by the transitions to move things offscreen. We don't
# expect them to be used by user code.
transform _moveleft:
xpos 0.0 xanchor 1.0
transform _moveright:
xpos 1.0 xanchor 0.0
transform _movetop:
ypos 0.0 yanchor 1.0
transform _movebottom:
ypos 1.0 yanchor 0.0
python:
config.default_transform = default
@@ -83,6 +97,7 @@ init -1110 python:
# Ease images around. These are basically cosine-warped moves.
def _ease_out_time_warp(x):
print "ZZZ"
import math
return 1.0 - math.cos(x * math.pi / 2.0)
@@ -94,7 +109,12 @@ init -1110 python:
import math
return .5 - math.cos(math.pi * x) / 2.0
# This defines a family of move transitions.
# Back up the move transition, so that if MoveTransition gets replaced by
# renpy.compat, this still works.
__MoveTransition = MoveTransition
# This defines a family of move transitions, using the old-style methods.
def move_transitions(prefix, delay, time_warp=None, in_time_warp=None, out_time_warp=None, old=False, layers=[ 'master' ], **kwargs):
"""
:doc: transition_family
@@ -132,10 +152,6 @@ init -1110 python:
`layers`
The layers the transition will apply to.
Additional keyword arguments are passed (indirectly) to the moves. The
most useful additional keyword argument is probably subpixel=True,
which causes a subpixel move to be used.
::
# This defines all of the pre-defined transitions beginning
@@ -150,63 +166,79 @@ init -1110 python:
delay,
old=old,
layers=layers,
factory=MoveFactory(time_warp=time_warp, **kwargs)),
time_warp=time_warp),
"inright" : MoveTransition(
delay,
old=old,
layers=layers,
factory=MoveFactory(time_warp=time_warp, **kwargs),
enter_factory=MoveIn((1.0, None, 0.0, None), time_warp=in_time_warp, **kwargs)),
enter=_moveright,
time_warp=time_warp,
enter_time_warp=in_time_warp,
),
"inleft" : MoveTransition(
delay,
old=old,
layers=layers,
factory=MoveFactory(time_warp=time_warp, **kwargs),
enter_factory=MoveIn((0.0, None, 1.0, None), time_warp=in_time_warp, **kwargs)),
enter=_moveleft,
time_warp=time_warp,
enter_time_warp=in_time_warp,
),
"intop" : MoveTransition(
delay,
old=old,
layers=layers,
factory=MoveFactory(time_warp=time_warp, **kwargs),
enter_factory=MoveIn((None, 0.0, None, 1.0), time_warp=in_time_warp, **kwargs)),
enter=_movetop,
time_warp=time_warp,
enter_time_warp=in_time_warp,
),
"inbottom" : MoveTransition(
delay,
old=old,
layers=layers,
factory=MoveFactory(time_warp=time_warp, **kwargs),
enter_factory=MoveIn((None, 1.0, None, 0.0), time_warp=in_time_warp, **kwargs)),
enter=_movebottom,
time_warp=time_warp,
enter_time_warp=in_time_warp,
),
"outright" : MoveTransition(
delay,
old=old,
layers=layers,
factory=MoveFactory(time_warp=time_warp, **kwargs),
leave_factory=MoveOut((1.0, None, 0.0, None), time_warp=out_time_warp, **kwargs)),
leave=_moveright,
time_warp=time_warp,
leave_time_warp=out_time_warp,
),
"outleft" : MoveTransition(
delay,
old=old,
layers=layers,
factory=MoveFactory(time_warp=time_warp, **kwargs),
leave_factory=MoveOut((0.0, None, 1.0, None), time_warp=out_time_warp, **kwargs)),
leave=_moveleft,
time_warp=time_warp,
leave_time_warp=out_time_warp,
),
"outtop" : MoveTransition(
delay,
old=old,
layers=layers,
factory=MoveFactory(time_warp=time_warp, **kwargs),
leave_factory=MoveOut((None, 0.0, None, 1.0), time_warp=out_time_warp, **kwargs)),
leave=_movetop,
time_warp=time_warp,
leave_time_warp=out_time_warp,
),
"outbottom" : MoveTransition(
delay,
old=old,
layers=layers,
factory=MoveFactory(time_warp=time_warp, **kwargs),
leave_factory=MoveOut((None, 1.0, None, 0.0), time_warp=time_warp, **kwargs)),
leave=_movebottom,
time_warp=time_warp,
leave_time_warp=out_time_warp,
),
}
for k, v in moves.iteritems():
@@ -218,10 +250,10 @@ init -1110 python:
define.move_transitions("move", 0.5)
define.move_transitions("ease", 0.5, _ease_time_warp, _ease_in_time_warp, _ease_out_time_warp)
# Zoom-based transitions.
zoomin = MoveTransition(0.5, enter_factory=ZoomInOut(0.01, 1.0))
zoomout = MoveTransition(0.5, leave_factory=ZoomInOut(1.0, 0.01))
zoominout = MoveTransition(0.5, enter_factory=ZoomInOut(0.01, 1.0), leave_factory=ZoomInOut(1.0, 0.01))
# Zoom-based transitions. Legacy - nowadays, these are probably best done with ATL.
zoomin = OldMoveTransition(0.5, enter_factory=ZoomInOut(0.01, 1.0))
zoomout = OldMoveTransition(0.5, leave_factory=ZoomInOut(1.0, 0.01))
zoominout = OldMoveTransition(0.5, enter_factory=ZoomInOut(0.01, 1.0), leave_factory=ZoomInOut(1.0, 0.01))
# These shake the screen up and down for a quarter second.
# The delay needs to be an integer multiple of the period.
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init -1135 python:
+3 -3
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
# This contains code to choose between OpenGL and Software rendering, when
@@ -357,9 +357,9 @@ label _directx_update_main:
import subprocess
import sys
# Start dxsetup. We have to go through start to ensure that UAC
# Start dxsetup. We have to go through startfile to ensure that UAC
# doesn't cause problems.
subprocess.Popen(["start", __dxwebsetup], shell=True)
os.startfile(__dxwebsetup)
renpy.show_screen("_directx_update")
ui.interact(suppress_overlay=True, suppress_underlay=True)
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init -1105 python:
+14 -7
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
# This file consists of renpy functions that aren't expected to be
@@ -196,15 +196,12 @@ init -1180 python:
except:
pass
# Called to make a screenshot happen.
def _screenshot():
import os.path
import os
import __main__
pattern = os.environ.get("RENPY_SCREENSHOT_PATTERN", "screenshot%04d.png")
# Pick the directory to save into.
dest = config.renpy_base.rstrip("/")
@@ -215,11 +212,11 @@ init -1180 python:
dest = os.path.dirname(dest)
dest = os.path.dirname(dest)
dest = os.path.dirname(dest)
# Try to pick a filename.
i = 1
while True:
fn = dest + "/" + pattern % i
fn = os.path.join(dest, config.screenshot_pattern % i)
if not os.path.exists(fn):
break
i += 1
@@ -241,6 +238,9 @@ init -1180 python:
_predict_screens = [ ]
init -1180 python hide:
import os
config.screenshot_pattern = os.environ.get("RENPY_SCREENSHOT_PATTERN", "screenshot%04d.png")
def dump_styles():
if config.developer:
@@ -562,6 +562,8 @@ init -1180 python:
ui.interact()
def _enter_menu():
config.skipping = None
renpy.movie_stop(only_fullscreen=True)
renpy.take_screenshot((config.thumbnail_width, config.thumbnail_height))
@@ -870,12 +872,17 @@ init 1180 python hide:
create_automatic_images()
# Load the developer screen, if necessary.
# After init, make some changes based on if config.developer is True.
init 1180 python hide:
if config.developer:
if config.debug_sound is None:
config.debug_sound = True
renpy.load_module("_developer")
# Entry point for the developer screen. The rest of it is loaded from
# _developer.rpym
label _developer:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
# Common stuff that's used by the various Ren'Py menus. This includes
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
# This file contains code that sets up the various mixers, based on how
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
# This file contains the code to implement Ren'Py's music room function,
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
# This is an implementation of NVL-mode, which can be used to show
+140 -19
View File
@@ -1,3 +1,6 @@
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
# Screen system support.
init -1140 python:
@@ -119,6 +122,7 @@ init -1140 python:
def __call__(self):
_screenshot()
def HideInterface():
"""
:doc other_action
@@ -128,7 +132,25 @@ init -1140 python:
return ui.callsinnewcontext("_hide_windows")
class OpenURL(Action):
"""
:doc: other_action
Causes `url` to be opened in a web browser.
"""
def __init__(self, url):
self.url = url
def __call__(self):
try:
import webbrowser
webbrowser.open_new(self.url)
except:
pass
class With(Action):
"""
:doc: other_action
@@ -868,11 +890,14 @@ init -1140 python:
The styles of the bar created.
`offset`
An offset to add to the value.
`step`
The amount to change the bar by. If None, defaults to 1/10th of
the bar.
"""
offset = 0
def __init__(self, object, field, range, max_is_zero=False, style="bar", offset=0):
def __init__(self, object, field, range, max_is_zero=False, style="bar", offset=0, step=None):
self.object = object
self.field = field
self.range = range
@@ -880,6 +905,14 @@ init -1140 python:
self.style = style
self.offset = offset
if step is None:
if isinstance(range, float):
step = range / 10.0
else:
step = max(range / 10, 1)
self.step = step
def changed(self, value):
if self.max_is_zero:
@@ -907,7 +940,8 @@ init -1140 python:
return ui.adjustment(
range=self.range,
value=value,
changed=self.changed)
changed=self.changed,
step=self.step)
def get_style(self):
return self.style, "v" + self.style
@@ -1004,9 +1038,63 @@ init -1140 python:
return str((page - 1) * config.linear_saves_page_size + name)
except ValueError:
pass
return str(page) + "-" + str(name)
def __unused_slot_name(page):
"""
Returns an unused slot name.
"""
import time
rv = int(time.time())
while True:
if not renpy.can_load(__filename(str(rv), page)):
return str(rv)
rv += 1
def FileCurrentPage():
"""
:doc: file_action_function
Returns the current file page as a string.
"""
return str(persistent._file_page)
def FileUsedSlots(page=None, highest_first=True):
"""
:doc: file_action_function
Returns a list of used numeric file slots on the page.
`page`
The name of the page that will be scanned. If None, the current page
is used.
`highest_first`
If true, the highest-numbered file slot is listed first.
Otherwise, the lowest-numbered slot is listed first.
"""
regexp = __filename(r'\d+', page)
rv = [ ]
for fn in renpy.list_saved_games(regexp=regexp, fast=True):
_page, _, slot = fn.partition('-')
rv.append(int(slot))
rv.sort()
if highest_first:
rv.reverse()
return rv
def FileLoadable(name, page=None):
"""
:doc: file_action_function
@@ -1015,10 +1103,7 @@ init -1140 python:
if the file is loadable, and false otherwise.
"""
if renpy.scan_saved_game(__filename(name, page)):
return True
else:
return False
return renpy.can_load(__filename(name, page))
def FileScreenshot(name, empty=None, page=None):
"""
@@ -1093,6 +1178,11 @@ init -1140 python:
The button with this slot is selected if it's marked as the
newest save file.
`name`
The name of the slot to save to. If None, an unused slot
(a large number based on the current time) will be
will be used.
`confirm`
If true, then we will prompt before overwriting a file.
@@ -1101,7 +1191,8 @@ init -1140 python:
file when it's saved.
`page`
The name of the page that it will be saved to.
The name of the page that the slot is on. If None, the current
page is used.
`cycle`
If true, then saves on the supplied page will be cycled before
@@ -1109,6 +1200,9 @@ init -1140 python:
"""
def __init__(self, name, confirm=True, newest=True, page=None, cycle=False):
if name is None:
name = __unused_slot_name(page)
self.name = name
self.confirm = confirm
self.page = page
@@ -1161,14 +1255,26 @@ init -1140 python:
Loads the file.
`name`
The name of the slot to load from. If None, an unused slot
the file will not be loadable.
`confirm`
If true, prompt if loading the file will end the game.
`page`
The page that the file will be loaded from. If None, the
current page is used.
`newest`
If true, the button is selected if this is the newest file.
"""
def __init__(self, name, confirm=True, page=None, newest=True):
if name is None:
name = __unused_slot_name(page)
self.name = name
self.confirm = confirm
self.page = page
@@ -1189,7 +1295,7 @@ init -1140 python:
renpy.load(fn)
def get_sensitive(self):
return renpy.scan_saved_game(__filename(self.name, self.page))
return renpy.can_load(__filename(self.name, self.page))
def get_selected(self):
if not self.confirm or not self.newest:
@@ -1226,7 +1332,7 @@ init -1140 python:
renpy.unlink_save(fn)
def get_sensitive(self):
return renpy.scan_saved_game(__filename(self.name, self.page))
return renpy.can_load(__filename(self.name, self.page))
def get_selected(self):
return persistent._file_newest == __filename(self.name, self.page)
@@ -1238,6 +1344,15 @@ init -1140 python:
"Does the right thing" with the file. This means loading it if the
load screen is showing, and saving to it otherwise.
`name`
The name of the slot to save to or load from. If None, an unused slot
(a large number based on the current time) will be
will be used.
`page`
The page that the file will be saved to or loaded from. If None, the
current page is used.
"""
if renpy.current_screen().screen_name[0] == "load":
@@ -1433,7 +1548,7 @@ init -1140 python:
def __call__(self):
renpy.take_screenshot()
def QuickSave(message="Quick save complete."):
def QuickSave(message="Quick save complete.", newest=False):
"""
:doc: file_action
@@ -1441,11 +1556,14 @@ init -1140 python:
`message`
A message to display to the user when the quick save finishes.
"""
`newest`
Set to true to mark the quicksave as the newest save.
"""
return [
FileTakeScreenshot(),
FileSave(1, page="quick", confirm=False, cycle=True),
FileSave(1, page="quick", confirm=False, cycle=True, newest=newest),
Notify("Quick save complete.") ]
def QuickLoad():
@@ -1461,7 +1579,10 @@ init -1140 python:
##########################################################################
# Side Images
def SideImage(tag="side"):
config.side_image_tag = None
config.side_image_only_not_showing = False
def SideImage(prefix_tag="side"):
"""
:doc: side_image_function
@@ -1469,7 +1590,7 @@ init -1140 python:
or a Null displayable if no such side image exists.
"""
name = renpy.get_side_image(tag)
name = renpy.get_side_image(prefix_tag, image_tag=config.side_image_tag, not_showing=config.side_image_only_not_showing)
if name is None:
return Null()
else:
@@ -1524,14 +1645,14 @@ init -1140 python:
* Preference("transitions", "none") - do not show transitions.
* Preference("transitions", "toggle") - toggle transitions.
* Preference("text speed", 0) - make test appear instantaneously.
* Preference("text speed", 0) - make text appear instantaneously.
* Preference("text speed", 142) - set text speed to 142 characters per second.
* Preference("joystick") - Show the joystick preferences.
* Preference("skip", "seen") - Only skip seen messages.
* Preference("skip", "all") - Skip unseen messages.
* Preference("skip", "toggle") - Toggle skipping.
* Preference("skip", "toggle") - Toggle between skip seen and skip all.
* Preference("begin skipping") - Starts skipping.
@@ -1556,7 +1677,7 @@ init -1140 python:
* Preference("voice mute", "enable") - Mute the voice mixer.
* Preference("voice mute", "disable") - Un-mute the voice mixer.
* Preference("voice mute", "toggle") - Toggle voice mute.
* Preference("voice mute", "toggle") - Toggle voice mute.
* Preference("music volume", 0.5) - Set the music volume.
* Preference("sound volume", 0.5) - Set the sound volume.
+1 -1
View File
@@ -1,4 +1,4 @@
# This file contains the spline motion code contributed by Aenakume, at
# This file contains the spline motion code contributed by Aenakume, at
# http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=3977
init -1080 python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
# This file contains code that creates a few new statements. We'll
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
# This file is responsible for creating and defining the default styles
+6 -9
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
# This file contains code for the style preferences system, which allows
@@ -15,7 +15,8 @@ init -1135 python:
# Are style preferences dirty? If so, we need to update them at the start of
# the next operation.
__dirty = True
__spdirty = object()
__spdirty.flag = True
# A map from preference name to alternative.
if persistent._style_preferences is None:
@@ -71,9 +72,7 @@ init -1135 python:
Called at least once per interaction, to update the styles if necessary.
"""
global __dirty
if not __dirty:
if not __spdirty.flag:
return
for preference, alternatives in __preferences.iteritems():
@@ -86,7 +85,7 @@ init -1135 python:
renpy.style.rebuild()
__dirty = False
__spdirty.flag = False
def __check(preference, alternative=None):
@@ -112,12 +111,10 @@ init -1135 python:
A string giving the name of the alternative.
"""
global __dirty
__check(preference, alternative)
persistent._style_preferences[preference] = alternative
__dirty = True
__spdirty.flag = True
renpy.restart_interaction()
+497 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init -1110 python:
@@ -724,6 +724,502 @@ init -1110 python hide:
config.image_buttons = { }
config.image_labels = { }
# Theme: A White Tulip
# Coding: Jake Staines (http://www.eviscerate.net/)
# Graphics: Ren (http://x-Ren-x.deviantart.com/)
# Font: Andrew Paglinawan (www.andrewpaglinawan.com)
init -1110 python:
def __AWTBox(colour):
base_image = im.MatrixColor("_theme_awt/frame.png", im.matrix.opacity(0.45))
colour_tint = im.MatrixColor("_theme_awt/frame.png", im.matrix.colorize(colour, colour))
colour_tint = im.MatrixColor(colour_tint, im.matrix.opacity(0.4))
frame_image = im.Composite(
(220, 147),
(0, 0), base_image,
(0, 0), colour_tint,
(0, 0), "_theme_awt/frame_overlay.png"
)
return Frame(frame_image, 4, 4)
def __AWTButton(image, colour, highlight, low_sat=False):
base_image = "_theme_awt/" + image + ".png"
colour_tint = im.MatrixColor("_theme_awt/" + image + ".png", im.matrix.colorize(colour, colour))
opacity = 0.5
if highlight:
opacity = 0.3
if low_sat:
opacity = opacity * 0.4
colour_tint = im.MatrixColor(colour_tint, im.matrix.opacity(opacity))
if highlight:
button_image = im.Composite(
(203, 47),
(0, 0), base_image,
(0, 0), colour_tint,
(0, 0), "_theme_awt/" + image + "_overlay_highlight.png"
)
else:
button_image = im.Composite(
(203, 47),
(0, 0), base_image,
(0, 0), colour_tint,
(0, 0), "_theme_awt/" + image + "_overlay.png"
)
return Frame(button_image, 4, 6)
def __AWTBullet(image):
return Transform(image, yalign=0.5, xalign=0.0)
init -1110 python hide:
@theme
def a_white_tulip_frames(frame):
theme.clear_frames()
style.frame.background = __AWTBox(frame)
style.frame.xpadding = 9
style.frame.ypadding = 9
@theme
def a_white_tulip_buttons(text_size,
widget,
widget_hover,
widget_text,
widget_selected,
disabled,
disabled_text,
small):
theme.clear_buttons()
style.button.background = __AWTButton("button", widget, False)
style.button.hover_background = __AWTButton("button", widget_hover, True)
style.button.selected_background = __AWTButton("button_selected", widget_hover, False, low_sat=True)
style.button.selected_hover_background = __AWTButton("button_selected", widget_hover, True, low_sat=True)
style.button.insensitive_background = __AWTButton("button", disabled, False)
style.button_text.font = "_theme_awt/Quicksand-Regular.ttf"
style.button_text.size = text_size
style.button_text.color = widget_text
style.button_text.selected_color = widget_text
style.button_text.selected_xoffset = 2
style.button_text.selected_yoffset = 2
style.button_text.insensitive_color = "#0000"
style.button_text.outlines = [
(2, "#20202008", 2, 2),
(1, "#40404015", 2, 2),
(0, "#80808030", 2, 2),
(0, widget_text, 1, 0),
]
style.button_text.hover_outlines = [
(2, "#20202008", 2, 2),
(1, "#40404015", 2, 2),
(0, "#80808030", 2, 2),
(0, widget_text, 1, 0),
]
style.button_text.selected_outlines = [
(2, "#20202008", 2, 2),
(1, "#40404015", 2, 2),
(0, "#80808030", 2, 2),
(0, widget_text, 1, 0),
]
style.button_text.insensitive_outlines = [
(1, "#fff4", 2, 1),
(1, "#3334", 0, -1),
]
style.button.xpadding = 9
if small:
style.button.ypadding = 2
else:
style.button.ypadding = 6
style.button.xmargin = 3
style.button.ymargin = 3
style.button_text.xalign = 0.5
style.button_text.yalign = 0.5
style.button_text.text_align = 0.5
# Radio Buttons
def set_radio_style(s, colour):
selected = im.MatrixColor("_theme_awt/radio_base.png", im.matrix.colorize(colour, colour))
selected = im.MatrixColor(selected, im.matrix.opacity(0.75))
selected = im.Composite( (17, 18),
(0, 0), "_theme_awt/radio_unselected.png",
(0, 0), "_theme_awt/radio_base.png",
(0, 0), selected,
(0, 0), "_theme_awt/radio_base_overlay.png"
)
hover = im.MatrixColor("_theme_awt/radio_base.png", im.matrix.colorize(colour, colour))
hover = im.MatrixColor(hover, im.matrix.opacity(0.75))
hover = im.Composite( (17, 18),
(0, 0), "_theme_awt/radio_unselected.png",
(0, 0), "_theme_awt/radio_base.png",
(0, 0), hover,
(0, 0), "_theme_awt/radio_selected_hover.png"
)
s.background = __AWTBullet("_theme_awt/radio_unselected.png")
s.hover_background = __AWTBullet("_theme_awt/radio_unselected_hover.png")
s.insensitive_background = __AWTBullet("_theme_awt/radio_unselected.png")
s.selected_background = __AWTBullet(selected)
s.selected_hover_background = __AWTBullet(hover)
s.left_padding = 23
s.left_margin = 10
def set_radio_text_style(s):
s.selected_color = widget_text
s.xoffset = 2
s.yoffset = 2
s.xalign = 0.0
s.text_align = 0.0
set_radio_style(style.radio_button, widget)
set_radio_text_style(style.radio_button_text)
set_radio_style(style.check_button, widget)
set_radio_text_style(style.check_button_text)
@theme
def a_white_tulip_large_buttons(text_size,
widget,
widget_hover,
widget_text,
widget_selected,
disabled,
disabled_text,
small):
theme.clear_large_buttons()
style.large_button.background = __AWTButton("button", widget, False)
style.large_button.hover_background = __AWTButton("button", widget_hover, True)
style.large_button.selected_background = __AWTButton("button_selected", widget_hover, False)
style.large_button.selected_hover_background = __AWTButton("button_selected", widget_hover, True)
style.large_button.insensitive_background = __AWTButton("button", disabled, False)
style.large_button_text.font = "_theme_awt/Quicksand-Regular.ttf"
style.large_button_text.size = text_size
style.large_button_text.color = widget_text
style.large_button_text.selected_color = widget_selected
style.large_button_text.insensitive_color = disabled_text
style.large_button_text.outlines = [
(2, "#20202008", 2, 2),
(1, "#40404015", 2, 2),
(0, "#80808030", 2, 2),
(0, widget_text, 1, 0),
]
style.large_button_text.selected_outlines = [
(2, "#20202008", 2, 2),
(1, "#40404015", 2, 2),
(0, "#80808030", 2, 2),
(0, widget_selected, 1, 0),
]
style.large_button_text.insensitive_outlines = [
(2, "#20202008", 2, 2),
(1, "#40404015", 2, 2),
(0, "#80808030", 2, 2),
(0, disabled_text, 1, 0),
]
style.large_button.xpadding = 9
if small:
style.large_button.top_padding = 2
style.large_button.bottom_padding = 4
else:
style.large_button.top_padding = 6
style.large_button.bottom_padding = 9
style.large_button.xmargin = 3
style.large_button.ymargin = 3
style.large_button_text.xalign = 0.5
style.large_button_text.yalign = 0.5
style.large_button_text.text_align = 0.5
@theme
def a_white_tulip_labels(
text_size,
label):
theme.clear_labels()
style.label_text.size = text_size
style.label_text.color = label
style.label_text.outlines = [
(0, label, 1, 0),
(1, "#FFF", 0, 0),
(1, "#FFF", 1, 0),
(2, "#FFF4", 0, 0),
(2, "#FFF4", 1, 0),
]
style.label.bottom_margin = 5
@theme
def a_white_tulip_prompts(
text_size,
label):
theme.clear_prompts()
style.prompt_text.size = text_size
style.prompt_text.color = label
style.prompt.xalign = 0.5
style.prompt_text.text_align = 0.5
style.prompt_text.layout = "subtitle"
@theme
def a_white_tulip_bars(
widget,
widget_hover):
theme.clear_bars()
def img(name, colour, width, height, x, y):
i = im.MatrixColor("_theme_awt/" + name + ".png", im.matrix.colorize(colour, colour))
i = im.MatrixColor(i, im.matrix.opacity(0.5))
i = im.Composite(
(width, height),
(0, 0), "_theme_awt/" + name + ".png",
(0, 0), i,
)
if x is not None:
i = Frame(i, x, y, tile=True)
return i
def himg(name, colour, width, height, x, y):
i = im.MatrixColor("_theme_awt/" + name + ".png", im.matrix.colorize(colour, colour))
i = im.MatrixColor(i, im.matrix.opacity(0.5))
i = im.Composite(
(width, height),
(0, 0), "_theme_awt/" + name + ".png",
(0, 0), i,
(0, 0), "_theme_awt/" + name + "_overlay.png"
)
if x is not None:
i = Frame(i, x, y, tile=True)
return i
# Bars.
style.bar.ymaximum = 27
style.bar.left_gutter = 14
style.bar.right_gutter = 12
style.bar.thumb_offset = 10
style.bar.left_bar = himg("bar_full", widget, 42, 27, 13, 0)
style.bar.right_bar = Frame("_theme_awt/slider_empty_all.png", 13, 0, tile=True)
style.bar.thumb = himg("bar_thumb", widget, 20, 25, None, None)
style.vbar.xmaximum = 27
style.vbar.top_gutter = 11
style.vbar.bottom_gutter = 14
style.vbar.thumb_offset = 10
style.vbar.right_bar = himg("v_bar_full", widget, 27, 42, 0, 15)
style.vbar.left_bar = Frame("_theme_awt/vslider_empty_all.png", 0, 13, tile=True)
style.vbar.thumb = himg("v_bar_thumb", widget, 25, 20, None, None)
# Sliders
style.slider.ymaximum = 27
style.slider.left_gutter = 13
style.slider.right_gutter = 12
style.slider.thumb_offset = 14.5
style.slider.left_bar = himg("slider_full", widget, 42, 27, 13, 0)
style.slider.right_bar = Frame("_theme_awt/slider_empty_all.png", 13, 0, tile=True)
style.slider.thumb = himg("vthumb", widget, 29, 30, None, None)
style.slider.hover_left_bar = himg("slider_full", widget_hover, 42, 27, 13, 0)
style.slider.hover_thumb = himg("vthumb", widget_hover, 29, 30, None, None)
style.vslider.xmaximum = 27
style.vslider.top_gutter = 14
style.vslider.bottom_gutter = 10
style.vslider.thumb_offset = 15
style.vslider.right_bar = himg("vslider_full", widget, 27, 42, 0, 13)
style.vslider.left_bar = Frame("_theme_awt/vslider_empty_all.png", 0, 13, tile=True)
style.vslider.thumb = himg("vthumb", widget, 29, 30, None, None)
style.vslider.hover_right_bar = himg("vslider_full", widget_hover, 27, 42, 0, 13)
style.vslider.hover_thumb = himg("vthumb", widget_hover, 29, 30, None, None)
# Scrollbars.
style.scrollbar.left_gutter = 30
style.scrollbar.right_gutter = 30
style.scrollbar.thumb_offset = 32.5
style.scrollbar.ymaximum = 27
style.scrollbar.left_bar = Frame("_theme_awt/slider_empty_all.png", 13, 0, tile=True)
style.scrollbar.right_bar = Frame("_theme_awt/slider_empty_all.png", 13, 0, tile=True)
style.scrollbar.thumb = himg("scroller", widget, 65, 29, None, None)
style.scrollbar.hover_left_bar = Frame("_theme_awt/slider_empty_all.png", 13, 0, tile=True)
style.scrollbar.hover_thumb = himg("scroller", widget_hover, 65, 29, None, None)
style.vscrollbar.top_gutter = 30
style.vscrollbar.bottom_gutter = 29
style.vscrollbar.thumb_offset = 32.5
style.vscrollbar.xmaximum = 27
style.vscrollbar.left_bar = Frame("_theme_awt/vslider_empty_all.png", 0, 13, tile=True)
style.vscrollbar.right_bar = Frame("_theme_awt/vslider_empty_all.png", 0, 13, tile=True)
style.vscrollbar.thumb = himg("vscroller", widget, 28, 65, None, None)
style.vscrollbar.hover_left_bar = Frame("_theme_awt/vslider_empty_all.png", 0, 13, tile=True)
style.vscrollbar.hover_thumb = himg("vscroller", widget_hover, 28, 65, None, None)
@theme
def a_white_tulip(
widget = "#c1c6d3",
widget_hover = "#d7dbe5",
widget_text = "#6b6b6b",
widget_selected = "#c1c6d3",
disabled = "#b4b4b4",
disabled_text = "#6b6b6b",
label = "#6b6b6b",
frame = "#9391c9",
text_size=None,
small_text_size=None,
window = None,
button_menu = None,
mm_root = "#ffffff",
gm_root = "#ffffff",
# for compatibility - unused:
**properties
):
# First off, we're hard-coding the text because we're already making everything
# brighter and whiter than it was before, so light-coloured text - even when it was
# previously over a dark background - just won't look right.
widget_text = "#636363"
disabled_text = "#6b6b6b"
label = "#6b6b6b"
if button_menu is None:
if (config.script_version is not None) and (config.script_version < (6, 9, 0)):
button_menu = True
else:
button_menu = False
layout.defaults()
small = False
if config.screen_width <= 640:
text_size = text_size or 12
small_text_size = small_text_size or 8
small = True
else:
text_size = text_size or 17
small_text_size = small_text_size or 12
theme.a_white_tulip_frames(frame)
theme.a_white_tulip_buttons(
text_size,
widget,
widget_hover,
widget_text,
widget_selected,
disabled,
disabled_text,
small)
theme.a_white_tulip_large_buttons(
small_text_size,
widget,
widget_hover,
widget_text,
widget_selected,
disabled,
disabled_text,
small)
theme.a_white_tulip_labels(
text_size,
label)
theme.a_white_tulip_prompts(
text_size,
label)
theme.a_white_tulip_bars(
widget,
widget_hover)
if mm_root is not None:
style.mm_root.background = mm_root
if gm_root is not None:
style.gm_root.background = gm_root
if window is None:
window = frame
style.window.background = __AWTBox(window)
style.window.xpadding = 9
style.window.xmargin = 6
style.window.top_padding = 9
style.window.bottom_padding = 35
style.window.ymargin = 6
style.say_dialogue.font = "_theme_awt/Quicksand-Regular.ttf"
style.say_dialogue.color = widget_text
style.say_dialogue.outlines = [
(0, widget_text, 1, 0)
]
style.say_label.font = "_theme_awt/Quicksand-Bold.ttf"
style.say_label.color = widget_text
style.say_label.outlines = [
(2, "#20202008", 2, 2),
(1, "#40404015", 2, 2),
(0, "#80808030", 2, 2)
]
if button_menu:
layout.button_menu()
style.quick_button.bottom_margin = 15
style.quick_button.right_margin = 15
style.file_picker_text.first_indent = 9
style.file_picker_text.rest_indent = 9
init 1110 python:
if not "compat" in _layout.provided:
+1290
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
# This extra contains a basic implementation of voice support. Right
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init -1170 python hide:
+2 -2
View File
@@ -1,7 +1,7 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
# Copyright 2004-2011 Tom Rothamel
# Copyright 2004-2012 Tom Rothamel
#
# Please see the LICENSE.txt distributed with Ren'Py for permission to
# copy and modify.
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python hide:
+2 -2
View File
@@ -1,7 +1,7 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
# Copyright 2004-2011 Tom Rothamel
# Copyright 2004-2012 Tom Rothamel
#
# Please see the LICENSE.txt distributed with Ren'Py for permission to
# copy and modify.
+39 -28
View File
@@ -57,7 +57,7 @@ label _debugger_screen:
entries = [ ]
ebc = renpy.game.log.ever_been_changed
ebc = store.__dict__.ever_been_changed
ebc = list(ebc)
ebc.sort()
@@ -78,7 +78,10 @@ label _debugger_screen:
continue
val = aRepr.repr(getattr(store, var))
entries.append((0, (var + " = " + val).replace("{", "{{")))
s = (var + " = " + val)
s = s.replace("{", "{{")
s = s.replace("[", "[[")
entries.append((0, s))
if entries:
vp = ui.viewport(mousewheel=True)
@@ -161,7 +164,7 @@ label _theme_test:
ui.frame(style='menu_frame', xmaximum=0.95)
ui.vbox(box_spacing=20)
layout.prompt("This a prompt. Hopefully, we've made this long enough to wrap around at least once.", None)
layout.prompt("This is a prompt. We've made this text long enough to wrap around so it fills multiple lines.", None)
ui.close()
ui.close() # hbox
@@ -207,29 +210,11 @@ label _style_hierarchy:
ui.interact()
jump _developer_screen
init -1050 python:
config.missing_background = "black"
init 1050 python:
if renpy.game.options.remote:
config.window_title = "Preview: " + config.window_title
class Remote(renpy.Displayable):
def render(self, width, height, st, at):
return renpy.Render(0, 0)
def event(self, ev, x, y, st):
renpy.remote.remote()
renpy.timeout(.05)
config.underlay.append(Remote())
del Remote
if config.developer:
@@ -257,7 +242,7 @@ init 1050 python:
renpy.show(name, what=config.missing_background)
__missing_scene = False
what = " ".join(what).replace("{", "{{")
what = " ".join(what).replace("{", "{{").replace("[", "[[")
__missing()[name[0]] = what
return True
@@ -455,7 +440,7 @@ label _image_location_picker:
for fn in image_files:
ui.button(clicked=ui.returns(fn), size_group="files", xminimum=1.0)
ui.text(fn.replace("{", "{{"), style="button_text", xalign=0.0)
ui.text(fn.replace("{", "{{").replace("[", "[["), style="button_text", xalign=0.0)
ui.close()
@@ -496,8 +481,8 @@ label _filename_list:
for fn in files:
fn = os.path.join(dirname, fn)
fn = fn[len(config.gamedir) + 1:]
print >>f, fn
print fn
print >>f, fn.encode("utf-8", "replace")
print fn.encode("utf-8", "replace")
f.close()
@@ -534,7 +519,7 @@ screen _inspector:
"style=%s, " % (__format_style(d.style),) +
"size=(%dx%d)" % (width, height) )
text t
text "[t!q]"
null height 20
@@ -542,8 +527,34 @@ screen _inspector:
python:
ui.saybehavior()
init python:
def _image_load_log_function(st, at):
ill = list(renpy.get_image_load_log(3))
if not ill:
return Null(), .25
vbox = VBox()
for when, filename, preload in ill:
if preload:
color="#ffffff"
else:
color="#ffcccc"
vbox.add(Text(filename.replace("{", "{{").replace("[", "[["), size=12, color=color, style="_default"))
rv = Window(vbox, style="_frame", background="#0004", xpadding=5, ypadding=5, xminimum=200)
return rv, .25
screen _image_load_log:
zorder 1000
add DynamicDisplayable(_image_load_log_function)
init python:
def __format_style(s):
+49 -64
View File
@@ -1,13 +1,14 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
#
# This file contains the code for in-game Ren'Py error handling. It's a
# module (as opposed to a .rpy file) because that allows us to ensure
# that it is fully loaded or run before any other Ren'Py code runs.
# These styles define the look of the Ren'Py in-game interface (the
# amie2 look). Despite being defined here (so they're available for
# error handling), they may be used in other code, like the launcher.
# amie2-inspired look). They're also used in the launcher.
init python:
# default
style._default = Style(None)
@@ -37,7 +38,7 @@ init python:
style._default.text_y_fudge = 0
style._default.first_indent = 0
style._default.rest_indent = 0
style._default.line_spacing = 4
style._default.line_spacing = 0
style._default.line_leading = 0
style._default.line_overlap_split = 0
style._default.layout = "tex"
@@ -97,16 +98,14 @@ init python:
style._default.activate_sound = None
style._default.clipping = False
##########################################################################
# frame
style._frame = Style(style._default)
style._frame.background = Frame("_theme_amie2/frame.png", 40, 40)
style._frame.xmargin = 10
style._frame.ymargin = 10
style._frame.xpadding = 20
style._frame.xmargin = 0
style._frame.ymargin = 0
style._frame.xpadding = 15
style._frame.ypadding = 10
# text
@@ -136,29 +135,40 @@ init python:
style._button_text.size = 16
style._button_text.color = "#111"
style._button_text.selected_color = "#11f"
style._button_text.insensitive_color = "#ccc"
style._button_text.xalign = 0.5
style._button_text.yoffset = 2
style._button_text.yoffset = 0
# label
style._label = Style(style._default)
style._label_text = Style(style._default)
style._label.top_margin = 10
style._label.bottom_margin = 5
style._label_text.size = 20
style._label_text.color = "#000"
style._label_text.bold = True
# bar
style._bar = Style(style._default)
style._scrollbar = Style(style._bar)
style._vscrollbar = Style(style._bar)
style._bar.left_bar = Frame("_theme_amie2/bar.png", 10, 10)
style._bar.left_bar = Frame("_theme_amie2/hover_frame.png", 10, 10)
style._bar.right_bar = Frame("_theme_amie2/bar.png", 10, 10)
style._bar.thumb = Frame("_theme_amie2/button.png", 10, 10)
style._bar.thumb_offset = 10
style._bar.left_gutter = 5
style._bar.right_gutter = 5
style._bar.unscrollable = "hide"
style._bar.thumb = None
style._bar.hover_thumb = None
style._bar.ymaximum = 20
style._scrollbar = Style(style._default)
style._vscrollbar = Style(style._default)
style._scrollbar.left_bar = Frame("_theme_amie2/bar.png", 10, 10)
style._scrollbar.right_bar = Frame("_theme_amie2/bar.png", 10, 10)
style._scrollbar.thumb = Frame("_theme_amie2/frame.png", 10, 10)
style._scrollbar.hover_thumb = Frame("_theme_amie2/hover_frame.png", 10, 10)
style._scrollbar.thumb_offset = 10
style._scrollbar.left_gutter = 5
style._scrollbar.right_gutter = 5
style._scrollbar.unscrollable = "hide"
style._scrollbar.ymaximum = 20
style._vscrollbar.xmaximum = 20
@@ -187,11 +197,9 @@ init python hide:
line = int(line)
renpy.launch_editor([ filename ], line)
style._default.hyperlink_functions = (hyperlink_styler, hyperlink_function, None)
init python:
# Null translation function. This gets redefined once things start
@@ -209,8 +217,7 @@ init python:
rv = [ "{b}" + lines[0] + "{/b}" ]
for i in lines[1:]:
if config.editor:
i = re.sub(r'(File "(.*)", line (\d+))', r'{a=edit:\3:\2}\1{/a}', i)
i = re.sub(r'(File "(.*)", line (\d+))', r'{a=edit:\3:\2}\1{/a}', i)
rv.append(i)
return "\n".join(rv)
@@ -256,42 +263,22 @@ init python:
rv += "\n"
if config.editor:
rv = re.sub(r'(File "(.*)", line (\d+))', r'{a=edit:\3:\2}\1{/a}', rv)
rv = re.sub(r'(File "(.*)", line (\d+))', r'{a=edit:\3:\2}\1{/a}', rv)
return rv
# Opens the traceback.txt file in an editor.
def __open_traceback():
try:
if config.editor:
renpy.launch_editor([ 'traceback.txt' ], 1, transient=1)
else:
os.startfile('traceback.txt')
except:
pass
# Opens the errors.txt file in an editor.
def __open_parse_errors():
try:
if config.editor:
renpy.launch_editor([ 'errors.txt' ], 1, transient=1)
else:
os.startfile('errors.txt')
except:
pass
def __can_open_traceback():
if config.editor:
return True
class __EditFile(Action):
def __init__(self, filename):
self.filename = filename
import os
def __call__(self):
try:
renpy.launch_editor([ self.filename ], 1, transient=1)
except:
pass
if hasattr(os, 'startfile'):
return True
return False
def __can_open_traceback():
return True
# The transform used for errors. ATL isn't ready yet.
def __transform_function(state, st, at):
@@ -421,10 +408,9 @@ screen _exception:
action reload_action
hovered tt.action(_("Reloads the game from disk, saving and restoring game state if possible."))
if __can_open_traceback():
textbutton _("Open Traceback"):
action __open_traceback
hovered tt.action(_("Opens the traceback.txt file in a text editor."))
textbutton _("Open Traceback"):
action __EditFile(traceback_fn)
hovered tt.action(_("Opens the traceback.txt file in a text editor."))
null width 30
@@ -465,7 +451,7 @@ screen _parse_errors:
mousewheel True
has vbox
text fmt_errors
text fmt_errors substitute False
bar:
style "_vscrollbar"
@@ -484,10 +470,9 @@ screen _parse_errors:
action reload_action
hovered tt.action(_("Reloads the game from disk, saving and restoring game state if possible."))
if __can_open_traceback():
textbutton _("Open Parse Errors"):
action __open_parse_errors
hovered tt.action(_("Opens the errors.txt file in a text editor."))
textbutton _("Open Parse Errors"):
action __EditFile(error_fn)
hovered tt.action(_("Opens the errors.txt file in a text editor."))
null width 30
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python hide:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python hide:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python hide:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
+1 -1
View File
@@ -1,4 +1,4 @@
# Copyright 2004-2011 Tom Rothamel <pytom@bishoujo.us>
# Copyright 2004-2012 Tom Rothamel <pytom@bishoujo.us>
# See LICENSE.txt for license details.
init python:
Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 B

+94
View File
@@ -0,0 +1,94 @@
Copyright (c) 2011, Andrew Paglinawan (www.andrewpaglinawan.com),
with Reserved Font Name "Quicksand".
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 719 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 765 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 963 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 997 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 674 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 958 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Regular → Executable
+117 -113
View File
@@ -1,4 +1,4 @@
#!/home/tom/bin/renpython -O
#!/home/tom/bin/renpython
# Builds a distributions of Ren'Py.
import sys
@@ -9,11 +9,11 @@ import zlib
import compileall
import shutil
import subprocess
import makeupdate
import glob
import time
import argparse
CWD = os.getcwdu()
zlib.Z_DEFAULT_COMPRESSION = 9
# Gets the data for the given file.
@@ -116,148 +116,152 @@ def tree(root):
def main():
ap = argparse.ArgumentParser()
ap.add_argument("version")
ap.add_argument("--fast", action="store_true")
ap.add_argument("prefix")
args = ap.parse_args()
# Revision updating is done early, so we can do it even if the rest
# of the program fails.
# Determine the version. We grab the current revision, and if any
# file has changed, bump it by 1.
p = subprocess.Popen(["bzr", "revno"], stdout=subprocess.PIPE)
revno = p.stdout.read().strip()
revno = int(revno)
p.wait()
import renpy
p = subprocess.Popen(["bzr", "status", "-V"], stdout=subprocess.PIPE)
status = p.stdout.read().strip()
p.wait()
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", "--dirty", "--match", match_version ])
parts = s.strip().split("-")
vc_version = int(parts[1])
if status:
revno += 1
if parts[-1] == "dirty":
vc_version += 1
with open("renpy/vc_version.py", "w") as f:
f.write("vc_version = {}".format(vc_version))
reload(sys.modules['renpy.vc_version']) #@UndefinedVariable
reload(sys.modules['renpy'])
# Check that the versions match.
full_version = ".".join(str(i) for i in renpy.version_tuple) #@UndefinedVariable
if args.version != "experimental" and not full_version.startswith(args.version):
raise Exception("The command-line and Ren'Py versions do not match.")
print "Version {} ({})".format(args.version, full_version)
# Write the revno to the necessary files.
f = file("lib/update-version.txt", "w")
f.write("{revno}-{now} base\n".format(revno=revno, now=time.time()))
f.close()
f = file("renpy/vc_version.py", "w")
f.write("""\
# The version of Ren'Py reported by the version control software.
vc_version = {revno}
""".format(revno=revno))
f.close()
prefix = args.prefix
# Copy over the screens, to keep them up to date.
shutil.copy("tutorial/game/screens.rpy", "template/game/screens.rpy")
# Copy in the windows version of zsync
shutil.copy("../zsync.exe", "lib/windows-x86/zsync.exe")
shutil.copy("../zsyncmake.exe", "lib/windows-x86/zsyncmake.exe")
# Compile all the python files.
compileall.compile_dir("renpy/", ddir="renpy/", force=1)
# os.environ['RENPY_PATH_ELIDE'] = '/home/tom/ab/renpy:' + prefix
# Chmod the mac app.
os.chmod("./renpy.app/Contents/MacOS/Ren'Py Launcher", 0755)
# Chmod down renpy.py, for now.
os.chmod("renpy.py", 0644)
compileall.compile_dir("renpy/", ddir="renpy/", force=1, quiet=1)
# Compile the various games
for i in [ 'tutorial/game', 'launcher', 'template/game', 'the_question/game' ]:
os.system("./renpy.sh --compile --game " + i)
files = [ ]
more_files = [ ]
if not args.fast:
for i in [ 'tutorial', 'launcher', 'template', 'the_question' ]:
print "Compiling", i
subprocess.check_call(["./renpy.sh", i, "compile" ])
# files.append("CHANGELOG.txt")
files.append("LICENSE.txt")
files.extend(tree("common"))
files.extend(tree("launcher"))
files.extend(tree("tutorial"))
files.extend(tree("the_question"))
more_files.extend(tree("jedit"))
more_files.extend(tree("lib"))
more_files.extend(tree("lib/linux-x86"))
# The destination directory.
destination = os.path.join("dl", args.version)
module_files = [
"README.txt",
"*.c",
"gen/*.c",
"*.h",
"*.py*",
"include/*.pxd",
"pysdlsound/*.py",
"pysdlsound/*.pyx",
]
if not os.path.exists(destination):
os.makedirs(destination)
for i in module_files:
files.extend(glob.glob('module/' + i))
if args.fast:
files.extend(tree('renpy'))
files.append('renpy.py')
cmd = [
"./renpy.sh",
"launcher",
"distribute",
"launcher",
"--package",
"sdk",
"--destination",
destination,
"--no-update",
]
more_files.append('python26.dll')
more_files.append('msvcr90.dll')
more_files.append('Microsoft.VC90.CRT.manifest')
more_files.extend(tree('renpy.app'))
more_files.append('renpy.exe')
more_files.append("console.exe")
more_files.append('renpy.sh')
else:
cmd = [
"./renpy.sh",
"launcher",
"distribute",
"launcher",
"--destination",
destination,
]
print
subprocess.check_call(cmd)
files.extend(tree('template'))
files.extend(tree('doc'))
# Sign the update.
if not args.fast:
subprocess.check_call([
"scripts/sign_update.py",
"/home/tom/ab/keys/renpy_private.pem",
os.path.join(destination, "updates.json"),
])
files.sort()
more_files.sort()
for fn in files + more_files:
if "~" in fn or "#" in fn:
raise Exception("Bad filename {0}.".format(fn))
zipup("dists/" + prefix + "-sdk.zip", prefix, files + more_files)
# Write 7z.exe.
sdk = "renpy-{}-sdk".format(zip_version)
if not args.fast:
print "----"
tarup("dists/" + prefix + "-sdk.tar.bz2", prefix, files + more_files)
print "----"
tarup("dists/" + prefix + "-source.tar.bz2", prefix, files)
print "----"
# Make the 7zip.
os.chdir("dists")
os.system("unzip " + prefix + "-sdk.zip")
try:
os.unlink(prefix + "-sdk.7z")
except:
pass
os.system("7z a " + prefix + "-sdk.7z " + prefix)
os.system("cat ../7z.sfx " + prefix + "-sdk.7z > " + prefix + "-sdk.7z.exe""")
os.unlink(prefix + "-sdk.7z")
os.chdir("..")
if os.path.exists("updates/prerelease"):
shutil.rmtree("updates/prerelease")
os.rename("dists/" + prefix, "updates/prerelease")
os.unlink("updates/prerelease/lib/update-version.txt")
makeupdate.make_update("updates/prerelease", str(revno))
os.chmod("renpy.py", 0755)
shutil.copy("renpy-ppc.zip", os.path.join(destination, "renpy-ppc.zip"))
print
print "Did you remember to rebuild the exe after the last change?"
with open("7z.sfx", "rb") as f:
sfx = f.read()
os.chdir(destination)
if os.path.exists(sdk):
shutil.rmtree(sdk)
subprocess.check_call([ "unzip", "-q", sdk + ".zip" ])
if os.path.exists(sdk + ".7z"):
os.unlink(sdk + ".7z")
sys.stdout.write("Creating -sdk.7z")
p = subprocess.Popen([ "7z", "a", sdk +".7z", sdk], stdout=subprocess.PIPE)
for i, _l in enumerate(p.stdout):
if i % 10 != 0:
continue
sys.stdout.write(".")
sys.stdout.flush()
if p.wait() != 0:
raise Exception("7z failed")
with open(sdk + ".7z", "rb") as f:
data = f.read()
with open(sdk + ".7z.exe", "wb") as f:
f.write(sfx)
f.write(data)
os.unlink(sdk + ".7z")
shutil.rmtree(sdk)
else:
os.chdir(destination)
if os.path.exists(sdk + ".7z.exe"):
os.unlink(sdk + ".7z.exe")
print
print "Did you run me with renpython -OO?"
print "Did you update renpy.py and launcher/script_version.rpy?"
print "Did you run with a RENPY_SCALE_FACTOR?"
if __name__ == "__main__":
main()
-1
View File
@@ -1 +0,0 @@
sphinx/build/html/

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