This furthermore makes the returned time be the wall time instead of UTC.
Thanks to Chris Warren-Smith for testing and improving a patch based
on pull request #248.
These are useful in cases where the files can be used in the original
interpreters (such as the exported characters from QFG), in order to avoid
confusion in cases where the users are unaware that these saves are
compressed and are trying to load them in the original interpreters.
This removes the need to convert the parameter to copyRectToScreen to
"const byte *", which is commonly used in games, which use Graphics::Surface
to store their graphics data.
All uses of the old target scale API actually wanted to disallow scaling of
the mouse cursor. This commit adapts our API to this and thus simplifies
backend implementations.
Some backends, most notable the Wii and Android, did some implementation of
the cursor target scale, which I didn't adapt yet. I added a TODO for the
porters there.
Android NDK 5 and SDK 7 (Android 2.1) are needed to provide full multitouch support. Otherwise MotionEvent.getPointerCount() and MotionEvent.getX(int) are not available.
In addition GLES2 headers are only available in Android 2.1 and newer revisions.
Do not compress zip-files added to the apk archive. This is very slow on android 2.3 devices if the zip-file is big (e.g. modern.zip theme) and devices with android < 2.3 do not support assets with an uncompressed size greater than 1 MB at all.
As most zip-file entries (like themes) are just stored and not compressed, zip-file assets are recompressed before adding them to the apk to avoid wasting space.
- controls in non-mouse mode:
- use the touchpad borders as arrow keys
- double tap on one of the borders triggers run mode
- tap into the center area triggers the use-action (ENTER)
- double-tap into the center area triggers the lookat-action ('u')
- long press into the center area shows inventory in grim ('i')
- a fling in the center area skips the current sentence ('.')
TODO: Instead of hardcoding the keys, they should be mapped later.
Note that passing events from onTouch() to the GestureListener does not seem to work correctly (most double-taps are ignored). Instead onTouchEvent() is used now which worked much better with the GestureListener.