Commit Graph
81 Commits
Author SHA1 Message Date
Walter Agazzi 0b50067abb AGS: Engine: implement add_waypoint_direct(), fix AddWaypoint's resolution
This fixes Character.AddWaypoint not applying room<->mask resolution conversion,
which result in character's speed being different if room has non 1:1 mask resolution.

Hide calculate_move_stage() inside pathfinder, and expose add_waypoint_direct()
in the pathfinder interface instead.
From upstream 093354d78849dc3b4f13a244d4400c4e71f7d687
2024-03-28 12:01:52 +01:00
Walter Agazzi dacccc343e AGS: Engine: fix use of global "walkspeed" variables in the pathfinder
These variables had to be set using set_route_move_speed() call in order for
the find_route() and calculate_move_stage() work properly.
But it's not obvious, and easy to forget. So turn them into function arguments instead.

This fixes Character.AddWaypoint potentially using wrong walkspeed, if there are
multiple characters or objects moving simultaneously.
An example of a script that would cause a bug:

    cEgo.AddWaypoint(20, 20);
    oObject0.Move(0, 160, 1, eNoBlock, eAnywhere);
    cEgo.AddWaypoint(200, 200);

from upstream 9a00255a2699845bd0e53054d81c24e6955f663e
2024-03-28 12:01:52 +01:00
Walter Agazzi 092ef64fc6 AGS: Engine: fixed speech stuck in "post state" under some conditions
This fixes repeated post-state on/off switching, and as a consequence - endless loop
 in cause of a "..." sentence, that  is run until messagetime reaches -1 on its own,
  which did not happen because of repeated post-state.

NOTE: looks like an original bug introduced along with the DisplayPostTimeMs property.

From upstream 37360990b22a79380f2a5b34e686a2d2fbcf7de1
2024-03-28 12:00:55 +01:00
Walter Agazzi d18f7cac25 AGS: Engine: replaced another case of strncpy with snprintf
From upstream 73e49b44db8042aa307bff7fadf51f67156658be
2024-01-17 03:12:31 +01:00
Walter Agazzi c688b1d586 AGS: Engine: log warnings when Display or Say is called during fade-out
From upstream d7235fcef3c3ff042f9a4f9eed6ac0a250296927
2023-11-02 20:06:27 +01:00
Walter Agazzi 6166993f42 AGS: Engine: fixed WalkStraight() was resetting animation
if called again

This makes Character.WalkStraight() have the same animation
keeping logic as Character.Walk().
Also reduce code duplication by calling walk_or_move_character()
 which handles blocking movement already.
 From upstream c5b04eb0c8991026ebca593d6f3254dfe96fd290
2023-09-16 13:32:59 +02:00
Walter Agazzi 94a8518dd7 AGS: Engine: don't reset idle animation during speech with no speech view
This fixes idle animation getting reset to frame 0 at the blocking speech start
 if there's no speech view set. In such case the idle anim is expected to continue
 playing seamlessly.
 From upstream 7b399933a291a05e868cd9589b02d83d05f33314
2023-09-02 14:02:10 +02:00
Walter Agazzi 7cd860207d AGS: Engine: add object and char assertions in Get/SetProperty functions
Since older commit 5f3b8eb the properties are stored in vectors,
strictly resized to the number of characters and objects.
But the script functions that access these do not do any assertion
whether the object or char is valid, which could cause bad mem
access in case script loops over a array of objects of MAX_OBJECTS
size, or tries to access something using Object* pointer from another room.
From upstream 6ad4b220d75a32ea8df959e9a7b7f1ecb21d0c26
2023-09-02 13:23:59 +02:00
Walter Agazzi 4966d2a896 AGS: Engine: apply character's anim volume to portrait animation
+ process frame features for the first portrait frame too.
From upstream 59d4f740001b61af370ec0bca676a24d597f66b2
2023-08-13 10:58:26 +02:00
Thierry Crozat 4dcde68f4a AGS: Remove unnecessary include of std/math.h 2023-06-06 08:59:58 +01:00
Walter Agazzi efdd2bdf27 AGS: Engine: fixed possible vector idx error in start_character_turning()
This replaces the previous commit, to keep in sync with upstream.
From upstream fca247a28fe2d0609cdbd71ab734929c1c451f1c
2023-06-03 13:13:49 +02:00
Walter Agazzi e97a4ac06a AGS: Add sanity check for frame in turning animation
Before checking if an animation frame is not used (numFrames < 1),
make sure that the addressed frame is actually present in the loops vector.
Fixes #14491 affecting blackwell2, mountainsofmadness and possibly others
2023-06-01 14:57:50 +02:00
Walter Agazzi 503e06a1a1 AGS: Engine: picked out basic Animate params check and warn instead of quit
This avoids the Gobliiins5 errors.
From upstream ecb4ae13031c32c2793d1d6a2b2af9f2af7bd911
2023-05-12 12:00:39 +02:00
Eugene Sandulenko 073d89eb66 AGS: Added more debug output 2023-05-03 12:20:13 +02:00
Walter Agazzi 150df392b4 AGS: Engine: fixed <3.6.0 Animate functions default volume parameter
From upstream d8d94b36a3e4e7fe201e93965952698fc6c8da5e
2023-04-29 14:32:39 +02:00
Walter Agazzi 49e61b6ea2 AGS: Engine: let use dummy frame 0 if the speech view's loop is empty
This complements / fixes previous fix attempt 08aef03
From upstream 95c99fc325f8550f220e7a0f67d6555bb23c8c5a
2023-03-12 20:58:28 +00:00
Walter Agazzi 2ef1dfd3a6 AGS: Engine: fixed few typos in error messages
From upstream dd961852cf3e94c202dd0d9a7984f90e48ccd2fa
2023-01-20 14:14:56 +00:00
Thierry Crozat 9619169132 AGS: Use 100 as a default animation volume, as it's relative anyway
From upstream 90a60fffd5f010e957a53721f860997835216308
Also includes upstream 951f60c4dc25aa1d4320f595e01b048b53f6bf5f
2022-06-19 00:46:56 +01:00
Paul Gilbert 4718557ac8 AGS: Made Animate's volume be relative to Character.AnimateVolume
From upstream e079deb39511994cfb741a5f9dcf42335835c002
2022-05-10 21:17:59 -07:00
Paul Gilbert 214ef6eec3 AGS: Implemented Character.AnimationVolume
From upstream a2cbdac3ebc79c59b0ee44df2ce85a7017d724cc
2022-05-10 21:17:59 -07:00
Paul Gilbert d39c6cb31f AGS: Added "sound volume" param to all Animate() functions
From upstream 926220f9706baafa80d05ff6264f7fa13296dc16
2022-05-10 21:17:59 -07:00
Paul Gilbert 7282304951 AGS: Script API: implemented room overlays
From upstream 65a7cd7e7566d3a1111be10b70dcb51b1853cd88
2022-05-06 20:16:42 -07:00
Paul Gilbert 0e1350a8d0 AGS: Make sure custom overlays connect with script ref properly
From upstream c5a99b1f07b51dfc28bb72dd235ce731e6b94dce
2022-05-05 23:06:49 -07:00
Paul Gilbert 86c363a8dd AGS: Remove ScriptOverlay.hasInternalRef flag, add actual ref
From update ef0655b601004983d13dab99092d708b080eef23
2022-05-05 22:41:10 -07:00
Paul Gilbert 6482e38803 AGS: CharacterExtras and MoveLists are stored in std::vector
From upstream 0c81cfefb788c0dcfdb2cad914f939f28110edca
2022-05-05 22:41:08 -07:00
Paul Gilbert 8ecb108f93 AGS: Rename ScriptOverlay's member to better reflect its purpose
From upstream 55a0b521c2f7c269ec4d9f41b4fd7f43d2a85af0
2022-04-27 20:25:30 -07:00
Paul Gilbert 8f01b30061 AGS: Reactored ScriptOverlay, removed duplicate offset variables
From upstream 634d6e20a1d2249de3125774491ff00959294dc8
2022-04-27 20:25:30 -07:00
Paul Gilbert 67628b9c6a AGS: Suppress endless "unused param" warnings in script api
From upstream b4a5ec72c059bc3c65e89a45a8b1218068a2015a
2022-04-24 16:00:05 -07:00
Paul Gilbert a1a0323d28 AGS: Removed few redundant function args
From upstream 4c80a7fb3afdfd8d7b82f16b7aeac5418565f608
2022-04-24 16:00:03 -07:00
Paul Gilbert dbcebe50d4 AGS: Added Character.IdleAnimationDelay and editor property
From upstream 73b2aaaa859f92b5a73d5ab78118653974529402
2022-04-10 19:39:09 -07:00
Paul Gilbert cb95772ad9 AGS: Update @OVERHOTSPOT@ when object/hotspot name changes
From upstream 64bb4fe130908d078c7945c000e0b43dfea49a14
2022-04-10 19:39:08 -07:00
Paul Gilbert 9986e16a3a AGS: AnimateCharacter better invalid loop error
From upstream 546e85323e5c79566f7c6712363c593fcde64080
2022-04-10 19:39:04 -07:00
Paul Gilbert 3c062750ed AGS: Remove random limit of 50 walk speed and clamp to int16 limits
From upstream c3b286539df21180300c282c415c15f56d444be4
2022-03-19 21:25:11 -07:00
Paul Gilbert a3dda03cf1 AGS: Store Views in std::vector
From upstream 095db88ae0f1acceb298f793a2e1b81dbe06fcff
2022-03-18 21:29:56 -07:00
Paul Gilbert 6bf83c7f39 AGS: Removed Overlays' arbitrary limit
From upstream 735dcfb14069b38aace4cef9468d44b63349d1bd
2022-03-15 22:28:36 -07:00
Paul Gilbert 255a739eca AGS: Encapsulate game object draw caches in draw.cpp
From upstream e04ebc0039580faf017ceb0acbeeab975bf44fcc
2022-03-14 21:04:09 -07:00
Eugene Sandulenko abea37c9bb ALL: Update ScummVM project license to GPLv3+ 2021-12-26 18:48:43 +01:00
Paul Gilbert 301689e870 AGS: In old games put player to walkable area when changing rooms
From upstream f33e064cd148c6a709ccbf25a5fd4939272a7814
2021-08-03 18:56:36 -07:00
Paul Gilbert 28102f13ab AGS: allow Character.Scaling full range (1-32767)
From upstream fe9b19e2d9868b3c953aa4b71c44be3c712987b7
2021-07-27 22:03:38 -07:00
Paul Gilbert c133e51620 AGS: Speech.TextOverlay for accessing blocking speech overlay
From upstream 1affbd4d57686e3080ebdb21a0cd33ee4af04b75
2021-07-27 22:03:37 -07:00
Paul Gilbert 9612b5cb35 AGS: distinct overlay types of speech and messagebox
From upstream d7c091890d2cde07776cca4ebbed7352d379612d
2021-07-27 22:03:37 -07:00
Paul Gilbert 9742dfb163 AGS: Shifting multiple classes to plugins/core/ 2021-07-16 19:48:14 -07:00
Paul Gilbert dffa2633cb AGS: Workaround for missing frames in the speech view loops
From upstream 08aef03ac693c28cc632f566d0a3a17dba48e157

This is a better fix for the crash in the Fatman intro, so
my original workaround has been removed
2021-07-11 14:06:26 -07:00
Paul Gilbert 46eeb0aa2a AGS: Fix crash quitting app when speech dialog is active 2021-07-10 20:23:52 -07:00
Paul Gilbert 2a11ab1824 AGS: Re-introduce fix for Fatman intro crash 2021-06-13 21:09:17 -07:00
Paul Gilbert c04665d442 AGS: fixed ChangeRoom for <=2.72 games moving character too early
From upstream 037185cc42bc693dd5f2fc234f6f295122c70e33
2021-06-13 21:09:03 -07:00
Paul Gilbert 73347d4559 AGS: Remove _G macros from comments 2021-06-13 21:09:00 -07:00
Paul Gilbert b104d78888 AGS: Enabling disabled blocks, and making ScummVM needed changes 2021-06-13 21:08:50 -07:00
Paul Gilbert 701396361c AGS: Import of fresh codebase 2021-06-13 21:08:44 -07:00
Paul Gilbert f95499dbbb AGS: Fixed ChangeRoom for <= 2.72 games moving character too early 2021-05-13 19:50:59 -07:00