[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