Commit Graph
137148 Commits
Author SHA1 Message Date
lolbot-iichan b3ce06ab87 WINTERMUTE: Removed pointless checks 2020-01-11 18:05:39 +02:00
lolbot-iichan 7e40598f53 WINTERMUTE: Add FoxTail hint properties to entities
FoxTail require SCENE's ENTITY to support additional HINT_X and HINT_Y properties.
Those properties are accessed by scripts to display hints: node_object.HintX.
2020-01-11 18:05:39 +02:00
lolbot-iichan 924241cf2a WINTERMUTE: Suppress FoxTail runtimeError on game load
FoxTail reloads in-hand items and cursor during AfterLoad by calling
wrapped Game.LoadItems() method.
This does not work in WME, as WME explicitly disables methods call at
"AfterLoad" event.
Somehow, everything seems to work fine without it. Let's supress this
error by now...

TODO: inspect actor.TakeItem and SetItemCursor for possible effects
TODO: make a fake game that calls some methods on AfterLoad, test with FoxTail engine
2020-01-11 18:05:39 +02:00
lolbot-iichan 3f61c4b5f0 WINTERMUTE: Add FoxTail saveload indicator hack
Wintermute games usually display save/load progress bar as a rectangle drawn above an image.
FoxTail's progress bar is drawn below semitransparent image instead.

TODO: I have no idea how to make this work with "dirty_rect=true" mode.
2020-01-11 18:05:39 +02:00
lolbot-iichan 259a7e89e6 WINTERMUTE: Add FoxTail color token for bitmap fonts
Some FoxTail versions have bitmap fonts with white letters and COLOR properties.
Alpha value of subframe can be used to recolor white letters to desired color.
2020-01-11 18:05:39 +02:00
lolbot-iichan 2de4a1b5d3 WINTERMUTE: Add FoxTail dialogues UI hack
FoxTail fork of WME seems to have hard-coded modifications for dialogue UI.
Buttons are ignoring hover-font and pressed-font settings.
Buttons also have hard-coded-path scripts attached to them.
2020-01-11 18:05:39 +02:00
lolbot-iichan 767913d2d5 WINTERMUTE: Add FoxTail text spacing hack
FoxTail fork of WME seems to have hard-coded modifications for getting inter-line and inter-character spaces smaller.
2020-01-11 18:05:39 +02:00
lolbot-iichan 1754aed61d WINTERMUTE: Add FoxTail key codes mapping
FoxTail code is hacked to use key codes from different from usual WME.
Got correct mapping using script decompiling, verified with sample game.
2020-01-11 18:05:39 +02:00
lolbot-iichan 7d9b584a84 WINTERMUTE: Add FoxTail registry flush method
FoxTail requires Game.RegistryFlush() method to force saving of persistent settings
2020-01-11 18:05:39 +02:00
lolbot-iichan 86b53e55d8 WINTERMUTE: Add FoxTail screen methods
FoxTail use 2x, 3x, 4x, etc so-called "screen modes", that are switched between in Options menu.
Current implementation makes FoxTail no choice but to think that 640x360 is the only option avaliable, since we don't want game engine to mess with ScummVM's render filter settings.
2020-01-11 18:05:39 +02:00
lolbot-iichan e68e82cd8c WINTERMUTE: Add FoxTail saveslot timestamp getter
FoxTail requires Game.GetSaveSlotDescriptionTimestamp for getting
information about saved games.
Engine 1.2.362 and below returns object with Description and Timestamp
fields.
Engine 1.2.527 and above returns array[2] with Description and Timestamp
as items.
2020-01-11 18:05:39 +02:00
lolbot-iichan 4bd18fd25e WINTERMUTE: GetSaveSlotDescription refactoring 2020-01-11 18:05:39 +02:00
lolbot-iichan e3595393c8 WINTERMUTE: Add FoxTail arrays methods
Game.Split(str,sep) is added to split string into array of substrings with separator
array.Delete(index) is added to delete an array item by index
2020-01-11 18:05:39 +02:00
lolbot-iichan 04d47de5d6 WINTERMUTE: Add FoxTail item methods
FoxTail have flexible cursor settings system that require things like toggling visability of inventory items.
2020-01-11 18:05:39 +02:00
lolbot-iichan 46f523d773 WINTERMUTE: Add FoxTail actor walking methods
There are two new methods: immidiate stop and changing walking speed
For stopping, I'm reusing turnTo() code to finalize moving.
I talked to FoxTail devs about what SetSpeedWalkAnim actually does and answer was to set animation delays with given number of milliseconds.
2020-01-11 18:05:39 +02:00
lolbot-iichan 755d6deb17 WINTERMUTE: Add FoxTail dynamic light methods
FoxTail requires access to SubFrame's pixels to set actor.AlphaColor
with lighting map pixel value at x,y of actor's position.
2020-01-11 18:05:39 +02:00
lolbot-iichan b3901a3d57 WINTERMUTE: Add FoxTail game&engine version properties
FoxTail requires Game to have 2 string options with engine build and
game package version.
BuildVersion is provided with detection tables
GameVersion is extracted from data.dcp and stored in a hashmap
2020-01-11 18:05:39 +02:00
lolbot-iichan 197a954264 WINTERMUTE: Add FoxTail language property
FoxTail gets a Steam API language code on 1st start from Game.SystemLanguage property

FoxTail currently uses 5 languages: English, German, Polish, Russian, Ukrainian
Even more languages are promised on release, so let's support all possible languages here
There are 22 languages listed both in common/language.h and Steam API, supported them  all
See https://partner.steamgames.com/doc/store/localization for current API language codes
2020-01-11 18:05:39 +02:00
lolbot-iichan 364c9eda55 WINTERMUTE: Display error on running FoxTail without compiled subengine
Game is not playable with standard Wintermute, so we should stop player
from even trying to run it if ENABLE_FOXTAIL is off.
2020-01-11 18:05:39 +02:00
lolbot-iichan 771dd2081b WINTERMUTE: Add FoxTail detection tables
FoxTail is still in "Early Access" status, so this list is not final

All game builds have 1 multilanguage "data.dcp" package
Common::PL_POL is supported since 1.2.527.3377

Steam allows to download 14 public versions of FoxTail's depot:
1.2.527.3391 - 2019 Mar 22; silent bugfix
1.2.527.3389 - 2019 Jan 22; listed in Changelog on GOG and in News on Steam
1.2.527.3377 - 2019 Jan 17; listed in Changelog on GOG and in News on Steam
1.2.362.2047 - 2018 May 31; listed in Changelog on GOG and in News on Steam
1.2.362.2039 - 2018 May 30; listed in Changelog on GOG and in News on Steam
1.2.304.1571 - 2018 Mar 20; listed in Changelog on GOG and in News on Steam
1.2.230.1322 - 2018 Mar 03; silent bugfix
1.2.230.1321 - 2018 Mar 03; silent bugfix; required for GOG 1321->1571 updater
1.2.230.1318 - 2018 Mar 03; silent bugfix
1.2.230.1316 - 2018 Mar 03; silent bugfix
1.2.230.1315 - 2018 Mar 02; silent bugfix
1.2.230.1313 - 2018 Mar 02; listed in Changelog on GOG and in News on Steam
1.2.230.1303 - 2018 Mar 01; silent bugfix
1.2.230.1291 - 2018 Feb 26; listed in News on Steam; first public release

Two more versions seems to be released for nonpublic alpha-testing only:
1.2.227.916  - 2018 Feb 16; listed in News on Steam; not public release
1.2.227.880  - 2018 Feb 06; listed in News on Steam; not public release
2020-01-11 18:05:39 +02:00
lolbot-iichan 665136bb08 WINTERMUTE: Add FoxTail engine versions to WMETargetExecutable enum
FoxTail engine is a WME Light engine fork with closed sources.
Some features have different behaviour in different versions of FoxTail engine.
That's why we need to detect engine version.
Note that FOXTAIL_OLDEST_VERSION > LATEST_VERSION.

Most features are just new methods for Game, Actor, Array, etc. and are not guarded.
Some hacks are common for all FoxTail versions, and are guarded with isFoxTail().
Some changes are specific to versions from v1 to v2, isFoxTail(v1,v2) is checked then.
2020-01-11 18:05:39 +02:00
lolbot-iichan a2f25f301e WINTERMUTE: Add FoxTail subengine
FoxTail is a point-and-click adventure game by Gingertips Game Studio, featuring extended and hacked WinterMute engine fork.
Most features are added by introducing new API methods and properties, but some are just hardcoded to be different from normal WME stuff.
2020-01-11 18:05:39 +02:00
Cameron Cawley 97c3ac5c2c ANDROID: Hide the system mouse cursor on Android N 2020-01-11 18:03:02 +02:00
Harsh Bawari 6bf14cf547 GRIFFON: Fix slugginess in final boss and a crash when loading the Griffon.s03 map 2020-01-11 17:35:55 +02:00
Cameron Cawley a692905eb2 COMMON: Add a function to simplify loading Windows executables 2020-01-11 17:34:12 +02:00
Cameron Cawley 532f382602 MOHAWK: Unify Windows cursor managers 2020-01-11 17:34:12 +02:00
Cameron Cawley 5cd6812b9d GRAPHICS: Unify loading Windows cursor groups 2020-01-11 17:34:12 +02:00
Cameron Cawley e49282577f GRAPHICS: Simplify loading Windows fonts 2020-01-11 17:34:12 +02:00
Cameron Cawley aa9a41545a COMMON: Add a common base class for the Windows resource classes 2020-01-11 17:34:12 +02:00
Cameron Cawley 46056aba3c ENGINES: Reduce winexe_*.h header includes 2020-01-11 17:34:12 +02:00
Cameron Cawley b8e94e1acd COMMON: Rename PEResources::getNameList() to getIDList() 2020-01-11 17:34:12 +02:00
Cameron Cawley 948c555ea6 ALL: Create all instances of NEResources and PEResources using new instead of on the stack
Also adapted WinCursorGroup and MacMenu to reflect this.
2020-01-11 17:34:12 +02:00
lolbot-iichan 395f707203 WINTERMUTE: Add detection for Hor game
"Hor" is a small ("5 minutes"), complete and really nice game by Roman
Koksharov.

It has no in-game text except the game title, so I marked is at
Common::UNK_LANG.

Source: https://gamejolt.com/games/hor/258037
Source: https://www.indiedb.com/games/hor

v1.0 and v1.3 are actually almost the same, difference is only in
"ALLOW_WINDOWED_MODE" game property and settings binary.

P.S. Have you found a secret ending? ^_~
2020-01-11 17:33:09 +02:00
Scott Percival 91f7d856af DIRECTOR: Add V4 builtin palettes, support for loading the movie default 2020-01-11 23:30:40 +08:00
Filippos Karapetis 89e4242d3c NEWS: Add changes for version 2.1.1 from the 2.1 branch 2020-01-11 14:22:34 +02:00
Eugene Sandulenko 75015e02a3 DIRECTOR: Fix loaded cast references 2020-01-11 12:09:15 +01:00
Scott Percival ff6e864392 DIRECTOR: Seperate render pass for shape fill and stroke 2020-01-11 12:31:53 +08:00
Scott Percival 56aa8f3448 GRAPHICS: Fix arguments order in drawRect 2020-01-11 11:55:45 +08:00
Scott Percival b31d5ac2b9 DIRECTOR: Align fill patterns to global origin 2020-01-11 11:27:21 +08:00
Scott Percival c565847240 DIRECTOR: LINGO: Allow b_length to cast from reference 2020-01-11 11:25:23 +08:00
sluicebox 64517fd6a2 SCI: Fix SQ1VGA Russian class names
Fixes bug #10156
2020-01-10 16:47:56 -08:00
sluicebox 172bc97110 SCI: Ignore incorrectly detected volume version
Ignores a detected volume version of SCI3 when the map version is less
than SCI2, as that indicates detectVolVersion's heuristics failed.

SQ1VGA Russian has volume files with a few junk bytes in between
resource entries, which causes detectVolVersion to return SCI3
instead of the expected result of Invalid and then use the
correctly detected map version. The detection algorithm tries each
version until it finds one that fits, and the SCI3 pattern happens
to fit because it's necessarily the most permissive due to the
wCompression bytes containing meaningless values.

Fixes bug #10156
2020-01-10 16:44:37 -08:00
Eugene Sandulenko 53901e7a9d DIRECTOR: Do not crash if movie was not loaded 2020-01-10 23:33:08 +01:00
Eugene Sandulenko d14a840e5e DIRECTOR: Gracefully exit when end of movie list is reached 2020-01-10 23:10:36 +01:00
Eugene Sandulenko a132d6aa78 DIRECTOR: More streamlined movie loading tracing 2020-01-10 22:52:00 +01:00
Eugene Sandulenko 7830f936aa DIRECTOR: Fix crash when built-in is being redefined 2020-01-10 22:51:41 +01:00
Eugene Sandulenko f7a848e65d DIRECTOR: Better track of loaded movies 2020-01-10 17:06:50 +01:00
Eugene Sandulenko 26812078b5 DIRECTOR: Properly iterate over all movies when test-all is requested 2020-01-10 16:58:34 +01:00
Eugene Sandulenko be69970112 DIRECTOR: Fix crashes on ungraceful exit 2020-01-10 16:52:40 +01:00
Paul Gilbert a18eae1067 GUI: Fix crash opening edit game dialog for games with no music 2020-01-09 18:37:19 -08:00