[Scummvm-git-logs] scummvm master -> a5d4f6ba6cba0567584461ec52350bf5fee0afeb
sev-
noreply at scummvm.org
Mon May 26 15:49:15 UTC 2025
This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
352fab947e QDENGINE: Fix tag dates
568ba16a65 QDENGINE: Fix character being uncontrollable in rybalka
6186e3c2a6 QDENGINE: Fix camera scrolling issue in karliknos
a5d4f6ba6c QDENGINE: Fix path straightening for older game versions
Commit: 352fab947e074685f66e004e435320f40c633e6e
https://github.com/scummvm/scummvm/commit/352fab947e074685f66e004e435320f40c633e6e
Author: Alikhan Balpykov (luxrage1990 at gmail.com)
Date: 2025-05-26T17:49:11+02:00
Commit Message:
QDENGINE: Fix tag dates
Changed paths:
engines/qdengine/parser/qdscr_parser.h
diff --git a/engines/qdengine/parser/qdscr_parser.h b/engines/qdengine/parser/qdscr_parser.h
index 5b9805f966c..6bdf6ee6458 100644
--- a/engines/qdengine/parser/qdscr_parser.h
+++ b/engines/qdengine/parser/qdscr_parser.h
@@ -583,13 +583,13 @@ const int idTagVersionAll[490] = {
20040428, QDSCR_ATTACH_SHIFT,
20030704, QDSCR_PERSONAGE_CONTROL, // 155
20030716, QDSCR_PERSONAGE_MOVEMENT_TYPE,
- 20050101, QDSCR_ROTATION_ANGLE_PER_QUANT,
+ 20041201, QDSCR_ROTATION_ANGLE_PER_QUANT,
// Inventory
20021114, QDSCR_INVENTORY_CELL_TYPE,
20021114, QDSCR_INVENTORY_CELL_SET,
20021114, QDSCR_INVENTORY_CELL_SET_SIZE, // 160
- 20041201, QDSCR_INVENTORY_CELL_SET_ADDITIONAL_CELLS,
+ 20050101, QDSCR_INVENTORY_CELL_SET_ADDITIONAL_CELLS,
20021114, QDSCR_INVENTORY_CELL_SET_POS,
20021114, QDSCR_INVENTORY,
Commit: 568ba16a6520b99aaf01ee1a1e16c1bfcc97a4c8
https://github.com/scummvm/scummvm/commit/568ba16a6520b99aaf01ee1a1e16c1bfcc97a4c8
Author: Alikhan Balpykov (luxrage1990 at gmail.com)
Date: 2025-05-26T17:49:11+02:00
Commit Message:
QDENGINE: Fix character being uncontrollable in rybalka
Changed paths:
engines/qdengine/qdcore/qd_game_scene.cpp
diff --git a/engines/qdengine/qdcore/qd_game_scene.cpp b/engines/qdengine/qdcore/qd_game_scene.cpp
index 26bbca2861d..02637c47de4 100644
--- a/engines/qdengine/qdcore/qd_game_scene.cpp
+++ b/engines/qdengine/qdcore/qd_game_scene.cpp
@@ -896,6 +896,10 @@ void qdGameScene::set_active_personage(qdGameObjectMoving *p) {
_camera.set_default_object(p);
+ if (g_engine->_gameVersion <= 20040601) {
+ _selected_object->set_last_move_order(_selected_object->R());
+ }
+
if (p && p->has_camera_mode()) {
_camera.set_mode(p->camera_mode(), p);
_camera.set_default_mode(p->camera_mode());
Commit: 6186e3c2a686a4d4adec052cb3466d6f5bd4ed38
https://github.com/scummvm/scummvm/commit/6186e3c2a686a4d4adec052cb3466d6f5bd4ed38
Author: Alikhan Balpykov (luxrage1990 at gmail.com)
Date: 2025-05-26T17:49:11+02:00
Commit Message:
QDENGINE: Fix camera scrolling issue in karliknos
Changed paths:
engines/qdengine/qdcore/qd_game_scene.cpp
diff --git a/engines/qdengine/qdcore/qd_game_scene.cpp b/engines/qdengine/qdcore/qd_game_scene.cpp
index 02637c47de4..ba4be37df1f 100644
--- a/engines/qdengine/qdcore/qd_game_scene.cpp
+++ b/engines/qdengine/qdcore/qd_game_scene.cpp
@@ -1723,7 +1723,7 @@ void qdGameScene::create_minigame_objects() {
}
bool qdGameScene::set_camera_mode(const qdCameraMode &mode, qdGameObjectAnimated *object) {
- if (!_camera.can_change_mode())
+ if (g_engine->_gameVersion > 20040601 && !_camera.can_change_mode())
return false;
if (object && object->named_object_type() == QD_NAMED_OBJECT_MOVING_OBJ && object != _selected_object)
Commit: a5d4f6ba6cba0567584461ec52350bf5fee0afeb
https://github.com/scummvm/scummvm/commit/a5d4f6ba6cba0567584461ec52350bf5fee0afeb
Author: Alikhan Balpykov (luxrage1990 at gmail.com)
Date: 2025-05-26T17:49:11+02:00
Commit Message:
QDENGINE: Fix path straightening for older game versions
Changed paths:
engines/qdengine/qdcore/qd_game_object_moving.cpp
engines/qdengine/qdcore/qd_game_object_moving.h
engines/qdengine/qdcore/util/AIAStar_API.cpp
diff --git a/engines/qdengine/qdcore/qd_game_object_moving.cpp b/engines/qdengine/qdcore/qd_game_object_moving.cpp
index 92a66645ec3..f559f12e9bf 100644
--- a/engines/qdengine/qdcore/qd_game_object_moving.cpp
+++ b/engines/qdengine/qdcore/qd_game_object_moving.cpp
@@ -2305,8 +2305,8 @@ bool qdGameObjectMoving::del_coll_pts(Std::list<Vect2i> &path) const {
}
// ÐÑпомогаÑелÑÐ½Ð°Ñ ÑÑнкÑÐ¸Ñ - пÑÑаеÑÑÑ ÑпÑÑмиÑÑ Ð¾ÑÑезок пÑÑи из ÑеÑÑÑеÑ
ÑоÑек, наÑÐ¸Ð½Ð°Ñ Ñ cur
-/*
-bool qdGameObjectMoving::four_pts_eight_dir_straight(Std::list<Vect2i> path,
+
+bool qdGameObjectMoving::four_pts_eight_dir_straight_old(Std::list<Vect2i> path,
const Std::list<Vect2i>::iterator cur) const
{
// Ðзвлекаем ÑеÑÑÑе ÑоÑки
@@ -2318,6 +2318,9 @@ bool qdGameObjectMoving::four_pts_eight_dir_straight(Std::list<Vect2i> path,
pts[i] = (*buf);
++buf;
}
+
+ const double SQRT_2_DIV_2 = 0.7071067811865475244;
+
// ÐÑовеÑÑем - ÑвлÑеÑÑÑ Ð»Ð¸ ÑеÑвеÑка ÑоÑек "вÑÑÑнÑÑÑм зигзагом"
if ((fabs(vec_cos(pts[1] - pts[0], pts[2] - pts[1]) - SQRT_2_DIV_2) > 0.0001) ||
(fabs(vec_cos(pts[2] - pts[1], pts[3] - pts[2]) - SQRT_2_DIV_2) > 0.0001) ||
@@ -2349,7 +2352,6 @@ bool qdGameObjectMoving::four_pts_eight_dir_straight(Std::list<Vect2i> path,
return false;
}
-*/
bool qdGameObjectMoving::four_pts_eight_dir_straight(Std::list<Vect2i> &path, Std::list<Vect2i>::reverse_iterator cur) const {
// Ðзвлекаем ÑеÑÑÑе ÑоÑки
@@ -2390,13 +2392,27 @@ bool qdGameObjectMoving::four_pts_eight_dir_straight(Std::list<Vect2i> &path, St
}
void qdGameObjectMoving::optimize_path_eight_dirs(Std::list<Vect2i> &path) const {
- // СпÑÑмлÑем, пока ÑпÑÑмлÑеÑÑÑ, но не более Ñем EIGHT_DIRS_OPT_ITER_MAX Ñаз
+ if (g_engine->_gameVersion <= 20041201) {
+ bool changed;
+ int step = 0;
+ do {
+ step++;
+ del_coll_pts(path); // ÐÐ»Ñ ÑÑпеÑного ÑпÑÑÐ¼Ð»ÐµÐ½Ð¸Ñ Ð¿ÑÑÑ Ð½Ðµ должен ÑодеÑжаÑÑ Ð±Ð¾Ð»ÐµÐµ
+ // двÑÑ
поÑледоваÑелÑнÑÑ
ÑоÑек, лежаÑиÑ
на одной пÑÑмой
+ changed = false;
+ for (Std::list<Vect2i>::iterator it = path.begin(); it != path.end(); ++it)
+ if (four_pts_eight_dir_straight_old(path, it) && !changed)
+ changed = true;
+ } while (changed && (step < 2));
+ } else {
+ // СпÑÑмлÑем, пока ÑпÑÑмлÑеÑÑÑ, но не более Ñем EIGHT_DIRS_OPT_ITER_MAX Ñаз
- for (int i = 0; i < EIGHT_DIRS_OPT_ITER_MAX; i++) {
- for (Std::list<Vect2i>::reverse_iterator it = path.rbegin(); it != path.rend(); ++it)
- four_pts_eight_dir_straight(path, it);
+ for (int i = 0; i < EIGHT_DIRS_OPT_ITER_MAX; i++) {
+ for (Std::list<Vect2i>::reverse_iterator it = path.rbegin(); it != path.rend(); ++it)
+ four_pts_eight_dir_straight(path, it);
- if (!del_coll_pts(path)) break;
+ if (!del_coll_pts(path)) break;
+ }
}
}
diff --git a/engines/qdengine/qdcore/qd_game_object_moving.h b/engines/qdengine/qdcore/qd_game_object_moving.h
index 17b30c5d22d..b234a70a361 100644
--- a/engines/qdengine/qdcore/qd_game_object_moving.h
+++ b/engines/qdengine/qdcore/qd_game_object_moving.h
@@ -450,6 +450,7 @@ private:
// СпÑÑмление ÑеÑÑÑеÑ
ÑоÑек Ð´Ð»Ñ Ð¿ÑÑи Ñ Ð²Ð¾ÑемÑÑ Ð½Ð°Ð¿ÑавлениÑми
bool four_pts_eight_dir_straight(Std::list<Vect2i> &path,
Std::list<Vect2i>::reverse_iterator cur) const;
+ bool four_pts_eight_dir_straight_old(Std::list<Vect2i> path, Std::list<Vect2i>::iterator cur) const;
// УдалÑем ÑоÑки, лежаÑие внÑÑÑи пÑÑмÑÑ
оÑÑезков пÑÑи
bool del_coll_pts(Std::list<Vect2i> &path) const;
void optimize_path_eight_dirs(Std::list<Vect2i> &path) const;
diff --git a/engines/qdengine/qdcore/util/AIAStar_API.cpp b/engines/qdengine/qdcore/util/AIAStar_API.cpp
index 9e13081441c..5684c2c3d2c 100644
--- a/engines/qdengine/qdcore/util/AIAStar_API.cpp
+++ b/engines/qdengine/qdcore/util/AIAStar_API.cpp
@@ -19,6 +19,7 @@
*
*/
+#include "qdengine/qdengine.h"
#include "qdengine/qd_fwd.h"
#include "qdengine/xmath.h"
#include "qdengine/qdcore/qd_camera.h"
@@ -38,9 +39,12 @@ int qdHeuristic::getH(int x, int y) {
x -= _target.x;
y -= _target.y;
- //return sqrt(static_cast<float>(x * x + y * y));
- // ÐоÑÑаÑоÑно бÑÐ´ÐµÑ ÑвÑиÑÑики без квадÑаÑного коÑнÑ, коÑоÑÑй медленнÑй
- return static_cast<float>(x * x + y * y);
+ if (g_engine->_gameVersion <= 20041201) {
+ return sqrt(static_cast<float>(x * x + y * y));
+ } else {
+ // ÐоÑÑаÑоÑно бÑÐ´ÐµÑ ÑвÑиÑÑики без квадÑаÑного коÑнÑ, коÑоÑÑй медленнÑй
+ return static_cast<float>(x * x + y * y);
+ }
}
int qdHeuristic::getG(int x1, int y1, int x2, int y2) {
More information about the Scummvm-git-logs
mailing list