[Scummvm-git-logs] scummvm master -> e014a177953c4f8b34ef93cc658c6a3b96d8cb6d

sev- noreply at scummvm.org
Tue Nov 26 15:43:34 UTC 2024


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
56a2b37cff QDENGINE: Got rid of g_runtime in ObjectContainer in adv minigames
c75af72fb6 QDENINGE: Added m_puzzle minigame to the engine
e014a17795 QDENGINE: Added m_scores minigame to the engine


Commit: 56a2b37cff47dfc131a77965b8172b039f996499
    https://github.com/scummvm/scummvm/commit/56a2b37cff47dfc131a77965b8172b039f996499
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-11-26T16:43:18+01:00

Commit Message:
QDENGINE: Got rid of g_runtime in ObjectContainer in adv minigames

Changed paths:
    engines/qdengine/minigames/adv/ObjectContainer.cpp
    engines/qdengine/minigames/adv/ObjectContainer.h
    engines/qdengine/minigames/adv/TextManager.cpp
    engines/qdengine/minigames/adv/m_triangles.cpp


diff --git a/engines/qdengine/minigames/adv/ObjectContainer.cpp b/engines/qdengine/minigames/adv/ObjectContainer.cpp
index 0eae062118a..88133498822 100644
--- a/engines/qdengine/minigames/adv/ObjectContainer.cpp
+++ b/engines/qdengine/minigames/adv/ObjectContainer.cpp
@@ -31,9 +31,9 @@ ObjectContainer::ObjectContainer() {
 
 }
 
-void ObjectContainer::release() {
+void ObjectContainer::release(MinigameManager *runtime) {
 	for (auto &it : _objects)
-		g_runtime->release(it);
+		runtime->release(it);
 
 	_objects.clear();
 	_current = 0;
@@ -52,8 +52,8 @@ const char *ObjectContainer::name() const {
 #endif
 }
 
-bool ObjectContainer::load(const char* base_name, bool hide) {
-	if (!g_runtime->testObject(base_name)) {
+bool ObjectContainer::load(const char* base_name, MinigameManager *runtime, bool hide) {
+	if (!runtime->testObject(base_name)) {
 		warning("ObjectContainer::load(): Object '%s' not found", transCyrillic(base_name));
 		return false;
 	}
@@ -62,21 +62,21 @@ bool ObjectContainer::load(const char* base_name, bool hide) {
 	_name = base_name;
 #endif
 
-	QDObject obj = g_runtime->getObject(base_name);
-	_coord = g_runtime->world2game(obj);
+	QDObject obj = runtime->getObject(base_name);
+	_coord = runtime->world2game(obj);
 	pushObject(obj);
 	if (hide)
-		g_runtime->hide(obj);
+		runtime->hide(obj);
 
 	char name[128];
 	name[127] = 0;
 	for (int dubl = 0; ; ++dubl) {
 		snprintf(name, 127, "%s%04d", base_name, dubl);
-		if (g_runtime->testObject(name)) {
-			obj = g_runtime->getObject(name);
+		if (runtime->testObject(name)) {
+			obj = runtime->getObject(name);
 			pushObject(obj);
 			if (hide)
-				g_runtime->hide(obj);
+				runtime->hide(obj);
 		} else
 			break;
 	}
@@ -84,9 +84,9 @@ bool ObjectContainer::load(const char* base_name, bool hide) {
 	return true;
 }
 
-void ObjectContainer::hideAll() {
+void ObjectContainer::hideAll(MinigameManager *runtime) {
 	for (auto &it : _objects)
-		g_runtime->hide(it);
+		runtime->hide(it);
 }
 
 QDObject ObjectContainer::getObject() {
@@ -97,13 +97,13 @@ QDObject ObjectContainer::getObject() {
 
 }
 
-void ObjectContainer::releaseObject(QDObject& obj) {
+void ObjectContainer::releaseObject(QDObject& obj, MinigameManager *runtime) {
 	QDObjects::iterator it = Common::find(_objects.begin(), _objects.end(), obj);
 	if (it != _objects.end()) {
 		if ((int)Common::distance(_objects.begin(), it) >= _current)
 			error("ObjectContainer::releaseObject(): Object released more than once in to the pool: %s", transCyrillic(name()));
 
-		g_runtime->hide(obj);
+		runtime->hide(obj);
 		if (_current > 0)
 			SWAP(*it, _objects[--_current]);
 		obj = 0;
diff --git a/engines/qdengine/minigames/adv/ObjectContainer.h b/engines/qdengine/minigames/adv/ObjectContainer.h
index f4a11304591..49b64df1615 100644
--- a/engines/qdengine/minigames/adv/ObjectContainer.h
+++ b/engines/qdengine/minigames/adv/ObjectContainer.h
@@ -36,17 +36,17 @@ class ObjectContainer {
 
 public:
 	ObjectContainer();
-	void release();
+	void release(MinigameManager *runtime);
 
-	bool load(const char *_name, bool hide = true);
-	void hideAll();
+	bool load(const char *_name, MinigameManager *runtime, bool hide = true);
+	void hideAll(MinigameManager *runtime);
 
 	const mgVect3f &coord() const {
 		return _coord;
 	}
 
 	QDObject getObject();
-	void releaseObject(QDObject& obj);
+	void releaseObject(QDObject& obj, MinigameManager *runtime);
 };
 
 } // namespace QDEngine
diff --git a/engines/qdengine/minigames/adv/TextManager.cpp b/engines/qdengine/minigames/adv/TextManager.cpp
index b3458b9ba1b..7260ba17eae 100644
--- a/engines/qdengine/minigames/adv/TextManager.cpp
+++ b/engines/qdengine/minigames/adv/TextManager.cpp
@@ -39,7 +39,7 @@ TextManager::TextManager(MinigameManager *runtime) {
 		if (const char *descr = _runtime->parameter(str_cache, false)) {
 			sscanf(descr, "%255s", str_cache);
 			Font digit;
-			if (!digit.pool.load(str_cache))
+			if (!digit.pool.load(str_cache, _runtime))
 				break;
 
 			debugCN(2, kDebugMinigames, "TextManager(): %d character set \"%s\" loaded, ", idx, str_cache);
@@ -53,7 +53,7 @@ TextManager::TextManager(MinigameManager *runtime) {
 				QDObject obj = digit.pool.getObject();
 				obj.setState("0");
 				digit.size = _runtime->getSize(obj);
-				digit.pool.releaseObject(obj);
+				digit.pool.releaseObject(obj, _runtime);
 			}
 			debugC(2, kDebugMinigames, "set size to (%5.1f, %5.1f)\n", digit.size.x, digit.size.y);
 			_fonts.push_back(digit);
@@ -153,7 +153,7 @@ TextManager::~TextManager() {
 		sit.release();
 
 	for (auto &dit : _fonts)
-		dit.pool.release();
+		dit.pool.release(_runtime);
 }
 
 int TextManager::createStaticText(const mgVect3f& pos, int fontID, TextAlign align) {
@@ -233,7 +233,7 @@ TextManager::StaticMessage::StaticMessage(MinigameManager *runtime, Font *font,
 
 void TextManager::StaticMessage::release() {
 	for (auto &it : _objects)
-		_font->pool.releaseObject(it);
+		_font->pool.releaseObject(it, _runtime);
 
 	_objects.clear();
 }
@@ -253,7 +253,7 @@ void TextManager::StaticMessage::setText(const char *str) {
 	else
 		while ((int)_objects.size() > len) {
 			if (_objects.back())
-				_font->pool.releaseObject(_objects.back());
+				_font->pool.releaseObject(_objects.back(), _runtime);
 			_objects.pop_back();
 		}
 
@@ -262,7 +262,7 @@ void TextManager::StaticMessage::setText(const char *str) {
 			if (!_objects[idx])
 				_objects[idx] = _font->pool.getObject();
 		} else if (_objects[idx])
-			_font->pool.releaseObject(_objects[idx]);
+			_font->pool.releaseObject(_objects[idx], _runtime);
 	}
 
 	char name[2];
diff --git a/engines/qdengine/minigames/adv/m_triangles.cpp b/engines/qdengine/minigames/adv/m_triangles.cpp
index 6515f95b3eb..eeb1ee79784 100644
--- a/engines/qdengine/minigames/adv/m_triangles.cpp
+++ b/engines/qdengine/minigames/adv/m_triangles.cpp
@@ -137,11 +137,11 @@ MinigameTriangle::MinigameTriangle() {
 	for (int num = 1; num <= 2; ++num) {
 		for (int angle = 1; angle <= 3; ++angle) {
 			snprintf(name, 63, "%s%1d_%1d", backNameBegin, num, angle);
-			if (!_backSides[(num - 1) * 3 + angle - 1].load(name))
+			if (!_backSides[(num - 1) * 3 + angle - 1].load(name, g_runtime))
 				return;
 		}
 		snprintf(name, 63, "%s%1d", selectNameBegin, num);
-		if (!_selectBorders[num - 1].load(name))
+		if (!_selectBorders[num - 1].load(name, g_runtime))
 			return;
 	}
 
@@ -177,10 +177,10 @@ MinigameTriangle::~MinigameTriangle() {
 		it.release();
 
 	for (int idx = 0; idx < 2; ++idx)
-		_selectBorders[idx].release();
+		_selectBorders[idx].release(g_runtime);
 
 	for (int idx = 0; idx < 6; ++idx)
-		_backSides[idx].release();
+		_backSides[idx].release(g_runtime);
 }
 
 void MinigameTriangle::Node::debugInfo() const {
@@ -216,7 +216,7 @@ void MinigameTriangle::releaseNodeBack(Node &node) {
 	if (node._back) {
 		node._back.setState(Node::getBackStateName(false, false, false));
 		for (int type = 0; type < 6; ++type)
-			_backSides[type].releaseObject(node._back);
+			_backSides[type].releaseObject(node._back, g_runtime);
 	}
 }
 
@@ -480,8 +480,8 @@ void MinigameTriangle::quant(float dt) {
 				node._border->update_screen_R();
 				g_runtime->setDepth(node._border, _selectDepth);
 			} else if (node._border) {
-				_selectBorders[0].releaseObject(node._border);
-				_selectBorders[1].releaseObject(node._border);
+				_selectBorders[0].releaseObject(node._border, g_runtime);
+				_selectBorders[1].releaseObject(node._border, g_runtime);
 			}
 		}
 	}


Commit: c75af72fb6b0cc4f32e8af7f63dabf4da599d586
    https://github.com/scummvm/scummvm/commit/c75af72fb6b0cc4f32e8af7f63dabf4da599d586
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-11-26T16:43:19+01:00

Commit Message:
QDENINGE: Added m_puzzle minigame to the engine

Changed paths:
    engines/qdengine/minigames/adv/m_puzzle.cpp
    engines/qdengine/minigames/adv/m_puzzle.h
    engines/qdengine/module.mk


diff --git a/engines/qdengine/minigames/adv/m_puzzle.cpp b/engines/qdengine/minigames/adv/m_puzzle.cpp
index 4db0531f423..4125abc7641 100644
--- a/engines/qdengine/minigames/adv/m_puzzle.cpp
+++ b/engines/qdengine/minigames/adv/m_puzzle.cpp
@@ -19,6 +19,9 @@
  *
  */
 
+#include "common/debug.h"
+
+#include "qdengine/qdengine.h"
 #include "qdengine/minigames/adv/common.h"
 #include "qdengine/minigames/adv/m_puzzle.h"
 #include "qdengine/minigames/adv/RunTime.h"
@@ -54,17 +57,17 @@ const char *Puzzle::getStateName(int angle, bool selected, bool small) const {
 	static char buf[32];
 	buf[31] = 0;
 
-	xassert(angle >= 0 && angle < angles_);
+	assert(angle >= 0 && angle < angles_);
 	angle = (angle + globalAngle_) % angles_;
 
-	_snprintf(buf, 31, "%s%02d%s", !singleSize_ && small ? small_pref : "", angle + 1, selected ? selected_suf : "");
+	snprintf(buf, 31, "%s%02d%s", !singleSize_ && small ? small_pref : "", angle + 1, selected ? selected_suf : "");
 	return buf;
 }
 
 Puzzle::Puzzle() {
 	if (!getParameter("game_size", gameSize_, true))
 		return;
-	xassert(gameSize_ > 0 && gameSize_ < 100);
+	assert(gameSize_ > 0 && gameSize_ < 100);
 
 	field_.resize(gameSize_, -1);
 	globalAngle_ = 0;
@@ -72,7 +75,7 @@ Puzzle::Puzzle() {
 	singleSize_ = getParameter("small_objects", false);
 
 	angles_ = getParameter("angles", 4);
-	xassert(angles_ > 0 &&  angles_ < 10);
+	assert(angles_ > 0 &&  angles_ < 10);
 
 	if (!(stackBottom_ = g_runtime->getObject(g_runtime->parameter("inventory_bottom"))))
 		return;
@@ -80,7 +83,7 @@ Puzzle::Puzzle() {
 		return;
 
 	if (getParameter("rotate_period", rotateTimePeriod_, false)) {
-		xassert(sqr(sqrt((float)gameSize_)) == gameSize_);
+		assert(sqr(sqrt((float)gameSize_)) == gameSize_);
 		if (sqr(sqrt((float)gameSize_)) != gameSize_)
 			return;
 	} else
@@ -88,7 +91,7 @@ Puzzle::Puzzle() {
 	nextRotateTime_ = g_runtime->getTime() + rotateTimePeriod_;
 
 	flySpeed_ = getParameter("inventory_drop_speed", 240.f);
-	xassert(flySpeed_ > 0.f);
+	assert(flySpeed_ > 0.f);
 	returnSpeed_ = getParameter("inventory_return_speed", -1.f);
 
 	const char *name_begin = g_runtime->parameter("obj_name_begin", "obj_");
@@ -96,9 +99,12 @@ Puzzle::Puzzle() {
 	char buf[128];
 	buf[127] = 0;
 
+	warning("STUB: Puzzle::Puzzle()");
+
+#if 0
 	XBuffer gameData;
 	for (int idx = 0; idx < gameSize_; ++idx) {
-		_snprintf(buf, 127, "%s%02d", name_begin, idx + 1);
+		snprintf(buf, 127, "%s%02d", name_begin, idx + 1);
 
 		Node node;
 		node.obj = g_runtime->getObject(buf);
@@ -125,7 +131,7 @@ Puzzle::Puzzle() {
 		nodes_[idx].obj->set_R(crd);
 		positions_.push_back(crd);
 	}
-
+#endif
 	if (g_runtime->debugMode())
 		nodes_[0].angle = angles_ - 1;
 
@@ -135,7 +141,7 @@ Puzzle::Puzzle() {
 	depth_ = nodes_[0].obj.depth();
 
 	stackPlaceSize_ = getParameter("inventory_place_size", size_ * 1.2f);
-	xassert(stackPlaceSize_.x > 0.f && stackPlaceSize_.x < 500.f && stackPlaceSize_.y > 0.f && stackPlaceSize_.y < 500.f);
+	assert(stackPlaceSize_.x > 0.f && stackPlaceSize_.x < 500.f && stackPlaceSize_.y > 0.f && stackPlaceSize_.y < 500.f);
 	debugC(2, kDebugMinigames, "stackPlaceSize = (%5.1f, %5.1f)", stackPlaceSize_.x, stackPlaceSize_.y);
 
 	prevPlace_ = -1;
@@ -149,15 +155,14 @@ Puzzle::Puzzle() {
 }
 
 Puzzle::~Puzzle() {
-	Nodes::iterator it;
-	FOR_EACH(nodes_, it)
-	g_runtime->release(it->obj);
+	for (auto &it : nodes_)
+		g_runtime->release(it.obj);
 
 	g_runtime->release(stackBottom_);
 }
 
 void Puzzle::rotate(int item) {
-	xassert(item >= 0 && item < nodes_.size());
+	assert(item >= 0 && item < nodes_.size());
 	nodes_[item].angle = (nodes_[item].angle + 1) % angles_;
 }
 
@@ -166,15 +171,14 @@ int Puzzle::stidx(int idx) const {
 }
 
 bool Puzzle::testPlace(int item) const {
-	xassert(item >= 0 && item < nodes_.size());
+	assert(item >= 0 && item < nodes_.size());
 	return nodes_[item].pos == item && nodes_[item].angle == 0;
 }
 
 bool Puzzle::isFlying(int idx) const {
-	FlyQDObjects::const_iterator it;
-	FOR_EACH(flyObjs_, it)
-	if (it->data == idx)
-		return true;
+	for (auto &it : flyObjs_)
+		if (it.data == idx)
+			return true;
 	return false;
 }
 
@@ -186,8 +190,8 @@ bool Puzzle::isOnMouse(const Node& node) const {
 }
 
 void Puzzle::put(int where, int what, float flowSpeed) {
-	xassert(where < (int)field_.size());
-	xassert(what >= 0 && what < nodes_.size());
+	assert(where < (int)field_.size());
+	assert(what >= 0 && what < nodes_.size());
 
 	Node& node = nodes_[what];
 	int start = node.pos;
@@ -195,23 +199,23 @@ void Puzzle::put(int where, int what, float flowSpeed) {
 	if (flowSpeed > 0.f || isFlying(what)) {
 		FlyQDObject* flyObj = 0;
 
-		FlyQDObjects::iterator fit;
-		FOR_EACH(flyObjs_, fit)
-		if (fit->data == what)
-			break;
-		if (fit != flyObjs_.end()) // Этот фрагмент уже летит, просто поменять точку назначения
-			flyObj = &*fit;
-		else { // Добавляем новый летящий фрагмент
-			flyObjs_.push_back(FlyQDObject());
-			flyObj = &flyObjs_.back();
+		for (auto &fit : flyObjs_) {
+			if (fit.data == what)
+				break;
+			if (&fit != flyObjs_.end()) // Этот фрагмент уже летит, просто поменять точку назначения
+				flyObj = &fit;
+			else { // Добавляем новый летящий фрагмент
+				flyObjs_.push_back(FlyQDObject());
+				flyObj = &flyObjs_.back();
 
-			flyObj->data = what;
+				flyObj->data = what;
 
-			mgVect3f from = isOnMouse(node) ? node.obj->R() : start < -1 ? stackPosition(stidx(start)) : position(start);
-			flyObj->current = g_runtime->world2game(from);
-			node.obj->set_R(from);
+				mgVect3f from = isOnMouse(node) ? node.obj->R() : start < -1 ? stackPosition(stidx(start)) : position(start);
+				flyObj->current = g_runtime->world2game(from);
+				node.obj->set_R(from);
 
-			flyObj->speed = flowSpeed;
+				flyObj->speed = flowSpeed;
+			}
 		}
 
 		mgVect3f to = where < -1 ? stackPosition(stidx(where)) : position(where);
@@ -231,7 +235,7 @@ void Puzzle::putOnStack(int what, float speed) {
 }
 
 void Puzzle::returnToStack() {
-	xassert(pickedItem_ != -1);
+	assert(pickedItem_ != -1);
 	g_runtime->event(EVENT_RETURN, g_runtime->mousePosition());
 	if (prevPlace_ >= 0)
 		put(prevPlace_, pickedItem_);
@@ -263,7 +267,7 @@ void Puzzle::quant(float dt) {
 			fit = flyObjs_.erase(fit);
 
 	if (inField_ < nodes_.size() && g_runtime->getTime() > nextObjTime_ &&
-	(stack_.size() < stackSize_ - 1 || stack_.size() < stackSize_ && pickedItem_ == -1)) { // нужно добавить в инвентори фишку
+			(stack_.size() < stackSize_ - 1 || (stack_.size() < stackSize_ && pickedItem_ == -1))) { // нужно добавить в инвентори фишку
 		// ищем случайный не выставленный фрагмент
 		int freeIdx = round(g_runtime->rnd(0.f, nodes_.size() - 1));
 		Nodes::iterator it = nodes_.begin();
@@ -274,7 +278,7 @@ void Puzzle::quant(float dt) {
 				if (!freeIdx--)
 					break;
 		}
-		int idx = distance(nodes_.begin(), it);
+		int idx = Common::distance(nodes_.begin(), it);
 
 		++inField_;
 		nextObjTime_ = g_runtime->getTime() + stackPlaceSize_.y / flySpeed_;
@@ -359,7 +363,7 @@ void Puzzle::quant(float dt) {
 				if (hovStack < stack_.size()) { // взять фрагмент из стека на мышь
 					g_runtime->event(EVENT_GET, mouse);
 					Indexes::iterator it = stack_.begin() + hovStack;
-					xassert(*it >= 0);
+					assert(*it >= 0);
 					prevPlace_ = -1;
 					pickedItem_ = *it;
 					nodes_[pickedItem_].pos = mouseObjPose_;
@@ -433,7 +437,7 @@ void Puzzle::quant(float dt) {
 }
 
 const mgVect3f &Puzzle::position(int num) const {
-	xassert(num >= 0 && num < positions_.size());
+	assert(num >= 0 && num < positions_.size());
 	// Если глобальный поворот ненулевой, пересчитываем индекс
 	if (globalAngle_ > 0) {
 		int size = sqrt((float)gameSize_);
@@ -447,7 +451,7 @@ const mgVect3f &Puzzle::position(int num) const {
 		}
 		num = y * (size + 1) + x;
 	}
-	xassert(num >= 0 && num < positions_.size());
+	assert(num >= 0 && num < positions_.size());
 	return positions_[num];
 }
 
diff --git a/engines/qdengine/minigames/adv/m_puzzle.h b/engines/qdengine/minigames/adv/m_puzzle.h
index 37d9127add9..585444b5534 100644
--- a/engines/qdengine/minigames/adv/m_puzzle.h
+++ b/engines/qdengine/minigames/adv/m_puzzle.h
@@ -43,7 +43,7 @@ class Puzzle : public MinigameInterface {
 		Node() : angle(1), pos(-1) {}
 	};
 
-	typedef vector<Node> Nodes;
+	typedef Std::vector<Node> Nodes;
 
 public:
 	Puzzle();
diff --git a/engines/qdengine/module.mk b/engines/qdengine/module.mk
index 189e19ef08e..cc62730261f 100644
--- a/engines/qdengine/module.mk
+++ b/engines/qdengine/module.mk
@@ -13,6 +13,7 @@ MODULE_OBJS = \
 	minigames/adv/Range.o \
 	minigames/adv/RunTime.o \
 	minigames/adv/TextManager.o \
+	minigames/adv/m_puzzle.o \
 	minigames/adv/m_triangles.o \
 	parser/qdscr_parser.o \
 	parser/xml_parser.o \


Commit: e014a177953c4f8b34ef93cc658c6a3b96d8cb6d
    https://github.com/scummvm/scummvm/commit/e014a177953c4f8b34ef93cc658c6a3b96d8cb6d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-11-26T16:43:19+01:00

Commit Message:
QDENGINE: Added m_scores minigame to the engine

Changed paths:
    engines/qdengine/minigames/adv/m_scores.cpp
    engines/qdengine/minigames/adv/m_scores.h
    engines/qdengine/module.mk


diff --git a/engines/qdengine/minigames/adv/m_scores.cpp b/engines/qdengine/minigames/adv/m_scores.cpp
index 178b39eaea4..ac497c7d33d 100644
--- a/engines/qdengine/minigames/adv/m_scores.cpp
+++ b/engines/qdengine/minigames/adv/m_scores.cpp
@@ -19,6 +19,9 @@
  *
  */
 
+#include "common/debug.h"
+
+#include "qdengine/qdengine.h"
 #include "qdengine/minigames/adv/common.h"
 #include "qdengine/minigames/adv/m_scores.h"
 
@@ -29,38 +32,38 @@ MinigameInterface *createGame() {
 }
 
 Scores::Scores() {
-	const char *fileName = runtime->parameter("minigame_list");
+	const char *fileName = g_runtime->parameter("minigame_list");
 	if (!fileName || !*fileName)
 		return;
 
-	if (!_stricmp(fileName, runtime->gameListFileName())) {
-		xxassert(0, (XBuffer() < "[minigame_list] должен ссылаться на \"" < runtime->gameListFileName() < "\"").c_str());
-		return;
+	if (!scumm_stricmp(fileName, g_runtime->gameListFileName())) {
+		error("[minigame_list] must refer to \"%s\"", transCyrillic(g_runtime->gameListFileName()));
 	}
 
-	const char *gameButtonName = runtime->parameter("game_miniature_button");
+	const char *gameButtonName = g_runtime->parameter("game_miniature_button");
 	if (!gameButtonName || !*gameButtonName)
 		return;
 
+	warning("STUB: Scores::Scores()");
+#if 0
 	XBuffer gameData;
 	char name[128];
 	name[127] = 0;
 	for (int num = 1; ; ++num) {
-		_snprintf(name, 127, "%s%02d", gameButtonName, num);
-		if (runtime->testObject(name)) {
-			QDObject obj = runtime->getObject(name);
+		snprintf(name, 127, "%s%02d", gameButtonName, num);
+		if (g_runtime->testObject(name)) {
+			QDObject obj = g_runtime->getObject(name);
 			gameData.write(obj->R());
-			games_.push_back(runtime->getObject(name));
+			games_.push_back(g_runtime->getObject(name));
 		} else
 			break;
 	}
 
 	if (games_.empty()) {
-		xxassert(false, (XBuffer() < "Не найдены образы игр \"" < gameButtonName < "\"").c_str());
-		return;
+		error("Game images not found '%s'", transCyrillic(gameButtonName));
 	}
 
-	if (!runtime->processGameData(gameData))
+	if (!g_runtime->processGameData(gameData))
 		return;
 
 	positions_.resize(games_.size());
@@ -69,8 +72,7 @@ Scores::Scores() {
 
 	XStream file(false);
 	if (!file.open(fileName, XS_IN)) {
-		xxassert(false, (XBuffer() < "Не удалось открыть файл со списком игр \"" < fileName < "\"").c_str());
-		return;
+		error("Failed to open games list file '%s'", transCyrillic(fileName));
 	}
 
 	char read_buf[512];
@@ -82,61 +84,61 @@ Scores::Scores() {
 		unsigned char ch;
 		xbuf > ch;
 		if (ch != ':') {
-			xxassert(ch != ':', "Неправильный формат файла.");
-			return;
+			error("Wrong file format");
 		}
 		Level lvl(level);
 		debugCN(2, kDebugMinigames, "%d: ", level);
 		while (xbuf.tell() < xbuf.size()) {
 			xbuf > ch;
-			if (isdigit(ch)) {
+			if (Common::isDigit(ch)) {
 				--xbuf;
 				int game;
 				xbuf >= game;
 				lvl.games.push_back(game);
 				debugCN(2, kDebugMinigames, "%d, ", game);
-				if (const MinigameData * data = runtime->getScore(level, game))
+				if (const MinigameData * data = g_runtime->getScore(level, game))
 					lvl.data.push_back(GameData(game, *data));
 			}
 		}
 		if (lvl.games.size() > games_.size()) {
-			xxassert(lvl.games.size() <= games_.size(), "Мало образов игр");
-			return;
+			error("Not enough game images");
 		}
-		sort(lvl.data.begin(), lvl.data.end());
+		Common::sort(lvl.data.begin(), lvl.data.end());
 		levels_.push_back(lvl);
 		debugC(2, kDebugMinigames, "");
 	}
+#endif
+
 	if (levels_.empty())
 		return;
-	sort(levels_.begin(), levels_.end());
+	Common::sort(levels_.begin(), levels_.end());
 	level_ = 0;
 	preLevel_ = -1;
 
-	if (!(bestScore_ = runtime->parameter("best_score")))
+	if (!(bestScore_ = g_runtime->parameter("best_score")))
 		return;
-	if (!(bestTime_ = runtime->parameter("best_time")))
+	if (!(bestTime_ = g_runtime->parameter("best_time")))
 		return;
-	if (!(lastScore_ = runtime->parameter("last_score")))
+	if (!(lastScore_ = g_runtime->parameter("last_score")))
 		return;
-	if (!(lastTime_ = runtime->parameter("last_time")))
+	if (!(lastTime_ = g_runtime->parameter("last_time")))
 		return;
-	if (!(currentLevel_ = runtime->parameter("current_level")))
+	if (!(currentLevel_ = g_runtime->parameter("current_level")))
 		return;
 
-	if (!(prev_ = runtime->getObject(runtime->parameter("prev_button"))))
+	if (!(prev_ = g_runtime->getObject(g_runtime->parameter("prev_button"))))
 		return;
-	if (!(next_ = runtime->getObject(runtime->parameter("next_button"))))
+	if (!(next_ = g_runtime->getObject(g_runtime->parameter("next_button"))))
 		return;
 
-	outMaxLevel_ = runtime->getObject(runtime->parameter("for_game_level"));
+	outMaxLevel_ = g_runtime->getObject(g_runtime->parameter("for_game_level"));
 	if (outMaxLevel_) {
 		int level = 0;
 		for (; level < levels_.size(); ++level)
 			if (levels_[level].data.size() < levels_[level].games.size())
 				break;
 		if (level < levels_.size())
-			outMaxLevel_.setState((XBuffer() <= levels_[level].level).c_str());
+			outMaxLevel_.setState(Common::String::format("%d", levels_[level].level).c_str());
 		else
 			outMaxLevel_.setState("all");
 	}
@@ -146,27 +148,26 @@ Scores::Scores() {
 }
 
 Scores::~Scores() {
-	runtime->release(prev_);
-	runtime->release(next_);
+	g_runtime->release(prev_);
+	g_runtime->release(next_);
 
-	QDObjects::iterator it;
-	FOR_EACH(games_, it)
-	runtime->release(*it);
+	for (auto &it : games_)
+		g_runtime->release(it);
 
 }
 
 void Scores::quant(float dt) {
-	xassert(level_ >= 0 && level_ < levels_.size());
+	assert(level_ >= 0 && level_ < levels_.size());
 	const Level& lvl = levels_[level_];
 
 	if (level_ != preLevel_) {
 		preLevel_ = level_;
 
 
-		runtime->setText(currentLevel_, lvl.level);
+		g_runtime->setText(currentLevel_, lvl.level);
 
 		for (int idx = 0; idx < games_.size(); ++idx)
-			runtime->hide(games_[idx]);
+			g_runtime->hide(games_[idx]);
 
 		for (int idx = 0; idx < games_.size(); ++idx) {
 			if (idx < lvl.data.size()) {
@@ -176,27 +177,27 @@ void Scores::quant(float dt) {
 				for (gameNum = 0; gameNum < lvl.games.size(); ++gameNum)
 					if (gameId == lvl.games[gameNum])
 						break;
-				xassert(gameNum < lvl.games.size());
-				xassert(gameNum < games_.size());
-				games_[gameNum].setState((XBuffer() < level_).c_str());
+				assert(gameNum < lvl.games.size());
+				assert(gameNum < games_.size());
+				games_[gameNum].setState(Common::String::format("%d", level_).c_str());
 				games_[gameNum]->set_R(positions_[idx]);
-				runtime->setText(getName(bestScore_, idx), data.info.bestScore_);
-				runtime->setText(getName(bestTime_, idx), data.info.bestTime_);
-				runtime->setText(getName(lastScore_, idx), data.info.lastScore_);
-				runtime->setText(getName(lastTime_, idx), data.info.lastTime_);
+				g_runtime->setText(getName(bestScore_, idx), data.info._bestScore);
+				g_runtime->setText(getName(bestTime_, idx), data.info._bestTime);
+				g_runtime->setText(getName(lastScore_, idx), data.info._lastScore);
+				g_runtime->setText(getName(lastTime_, idx), data.info._lastTime);
 			} else {
-				runtime->setText(getName(bestScore_, idx), "");
-				runtime->setText(getName(bestTime_, idx), "");
-				runtime->setText(getName(lastScore_, idx), "");
-				runtime->setText(getName(lastTime_, idx), "");
+				g_runtime->setText(getName(bestScore_, idx), "");
+				g_runtime->setText(getName(bestTime_, idx), "");
+				g_runtime->setText(getName(lastScore_, idx), "");
+				g_runtime->setText(getName(lastTime_, idx), "");
 			}
 		}
 	}
 
-	if (runtime->mouseLeftPressed()) {
-		if (level_ < levels_.size() - 1 && lvl.data.size() == lvl.games.size() && next_.hit(runtime->mousePosition()))
+	if (g_runtime->mouseLeftPressed()) {
+		if (level_ < levels_.size() - 1 && lvl.data.size() == lvl.games.size() && next_.hit(g_runtime->mousePosition()))
 			++level_;
-		else if (level_ > 0 && prev_.hit(runtime->mousePosition()))
+		else if (level_ > 0 && prev_.hit(g_runtime->mousePosition()))
 			--level_;
 	}
 }
@@ -204,7 +205,7 @@ void Scores::quant(float dt) {
 const char *Scores::getName(const char* begin, int idx) const {
 	static char buf[32];
 	buf[31] = 0;
-	_snprintf(buf, 31, "%s%02d", begin, idx + 1);
+	snprintf(buf, 31, "%s%02d", begin, idx + 1);
 	return buf;
 }
 
diff --git a/engines/qdengine/minigames/adv/m_scores.h b/engines/qdengine/minigames/adv/m_scores.h
index 6e775c5a835..bbf06422f3d 100644
--- a/engines/qdengine/minigames/adv/m_scores.h
+++ b/engines/qdengine/minigames/adv/m_scores.h
@@ -40,10 +40,10 @@ private:
 		int num;
 		MinigameData info;
 		bool operator< (const GameData& rsh) const {
-			return info.sequenceIndex_ < rsh.info.sequenceIndex_;
+			return info._sequenceIndex < rsh.info._sequenceIndex;
 		}
 	};
-	typedef vector<GameData> GameDatas;
+	typedef Std::vector<GameData> GameDatas;
 	struct Level {
 		Level(int lvl = 0) : level(lvl) {}
 		int level;
@@ -53,7 +53,7 @@ private:
 			return level < rsh.level;
 		}
 	};
-	typedef vector<Level> Levels;
+	typedef Std::vector<Level> Levels;
 	Levels levels_;
 
 	const char *currentLevel_;
diff --git a/engines/qdengine/module.mk b/engines/qdengine/module.mk
index cc62730261f..7f746ed4b50 100644
--- a/engines/qdengine/module.mk
+++ b/engines/qdengine/module.mk
@@ -14,6 +14,7 @@ MODULE_OBJS = \
 	minigames/adv/RunTime.o \
 	minigames/adv/TextManager.o \
 	minigames/adv/m_puzzle.o \
+	minigames/adv/m_scores.o \
 	minigames/adv/m_triangles.o \
 	parser/qdscr_parser.o \
 	parser/xml_parser.o \




More information about the Scummvm-git-logs mailing list