[Scummvm-git-logs] scummvm master -> b9cdcbdb209775bc1b00761ea0f0203292dca08e
sev-
noreply at scummvm.org
Thu Sep 19 17:24:47 UTC 2024
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
b9cdcbdb20 QDENGINE: Turn more flags into human-readable form in XML dumps
Commit: b9cdcbdb209775bc1b00761ea0f0203292dca08e
https://github.com/scummvm/scummvm/commit/b9cdcbdb209775bc1b00761ea0f0203292dca08e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-09-19T19:24:25+02:00
Commit Message:
QDENGINE: Turn more flags into human-readable form in XML dumps
Changed paths:
engines/qdengine/qdcore/qd_animation.cpp
engines/qdengine/qdcore/qd_game_object_state.cpp
engines/qdengine/qdcore/qd_grid_zone.cpp
engines/qdengine/qdcore/qd_interface_element_state_mode.cpp
engines/qdengine/qdcore/qd_music_track.cpp
engines/qdengine/qdcore/qd_music_track.h
engines/qdengine/qdcore/qd_sound_info.cpp
engines/qdengine/qdcore/qd_sound_info.h
diff --git a/engines/qdengine/qdcore/qd_animation.cpp b/engines/qdengine/qdcore/qd_animation.cpp
index 4698329cc60..e7b9e24e0c4 100644
--- a/engines/qdengine/qdcore/qd_animation.cpp
+++ b/engines/qdengine/qdcore/qd_animation.cpp
@@ -508,7 +508,10 @@ bool qdAnimation::save_script(Common::WriteStream &fh, int indent) const {
}
if (flags()) {
- fh.writeString(Common::String::format(" flags=\"%d\"", flags()));
+ if (debugChannelSet(-1, kDebugLog))
+ fh.writeString(Common::String::format(" flags=\"%s\"", flag2str(flags()).c_str()));
+ else
+ fh.writeString(Common::String::format(" flags=\"%d\"", flags()));
}
if (!qda_file().empty()) {
diff --git a/engines/qdengine/qdcore/qd_game_object_state.cpp b/engines/qdengine/qdcore/qd_game_object_state.cpp
index 45f3a0c1c7c..9eb84e61aa6 100644
--- a/engines/qdengine/qdcore/qd_game_object_state.cpp
+++ b/engines/qdengine/qdcore/qd_game_object_state.cpp
@@ -502,7 +502,10 @@ bool qdGameObjectState::save_script_body(Common::WriteStream &fh, int indent) co
fh.writeString("<sound");
if (_sound_info.flags()) {
- fh.writeString(Common::String::format(" flags=\"%d\"", _sound_info.flags()));
+ if (debugChannelSet(-1, kDebugLog))
+ fh.writeString(Common::String::format(" flags=\"%s\"", qdSoundInfo::flag2str(_sound_info.flags()).c_str()));
+ else
+ fh.writeString(Common::String::format(" flags=\"%d\"", flags()));
}
fh.writeString(Common::String::format(">%s</sound>\r\n", qdscr_XML_string(_sound_info.name())));
diff --git a/engines/qdengine/qdcore/qd_grid_zone.cpp b/engines/qdengine/qdcore/qd_grid_zone.cpp
index 6e2064eee9b..2caa4c61264 100644
--- a/engines/qdengine/qdcore/qd_grid_zone.cpp
+++ b/engines/qdengine/qdcore/qd_grid_zone.cpp
@@ -127,7 +127,10 @@ bool qdGridZone::save_script(Common::WriteStream &fh, int indent) const {
fh.writeString(Common::String::format("<grid_zone name=\"%s\" grid_zone_height=\"%d\"", qdscr_XML_string(name()), _height));
if (flags()) {
- fh.writeString(Common::String::format(" flags=\"%d\"", flags()));
+ if (debugChannelSet(-1, kDebugLog))
+ fh.writeString(Common::String::format(" flags=\"%s\"", flags() == 1 ? "ZONE_EXIT_FLAG" : flags() == 0 ? "" : "<error>"));
+ else
+ fh.writeString(Common::String::format(" flags=\"%d\"", flags()));
}
if (_state) {
diff --git a/engines/qdengine/qdcore/qd_interface_element_state_mode.cpp b/engines/qdengine/qdcore/qd_interface_element_state_mode.cpp
index cac5ce0bb00..3fe07ca43cc 100644
--- a/engines/qdengine/qdcore/qd_interface_element_state_mode.cpp
+++ b/engines/qdengine/qdcore/qd_interface_element_state_mode.cpp
@@ -19,7 +19,10 @@
*
*/
+#include "common/debug.h"
+
#include "qdengine/qd_fwd.h"
+#include "qdengine/qdcore/qd_animation.h"
#include "qdengine/parser/xml_tag_buffer.h"
#include "qdengine/parser/qdscr_parser.h"
@@ -78,7 +81,10 @@ bool qdInterfaceElementStateMode::save_script(Common::WriteStream &fh, int type_
}
if (_animation_flags) {
- fh.writeString(Common::String::format(" animation_flags=\"%d\"", _animation_flags));
+ if (debugChannelSet(-1, kDebugLog))
+ fh.writeString(Common::String::format(" animation_flags=\"%s\"", qdAnimation::flag2str(_animation_flags).c_str()));
+ else
+ fh.writeString(Common::String::format(" animation_flags=\"%d\"", _animation_flags));
}
if (has_sound()) {
diff --git a/engines/qdengine/qdcore/qd_music_track.cpp b/engines/qdengine/qdcore/qd_music_track.cpp
index 6a4dda60a32..0ebc9acaf1f 100644
--- a/engines/qdengine/qdcore/qd_music_track.cpp
+++ b/engines/qdengine/qdcore/qd_music_track.cpp
@@ -19,13 +19,14 @@
*
*/
+#include "common/debug.h"
+
#include "qdengine/qd_fwd.h"
#include "qdengine/parser/xml_tag_buffer.h"
#include "qdengine/parser/qdscr_parser.h"
#include "qdengine/qdcore/qd_game_dispatcher.h"
#include "qdengine/qdcore/qd_music_track.h"
-
namespace QDEngine {
qdMusicTrack::qdMusicTrack() : _volume(256) {
@@ -91,7 +92,10 @@ bool qdMusicTrack::save_script(Common::WriteStream &fh, int indent) const {
fh.writeString(Common::String::format(" name=\"%s\"", qdscr_XML_string(name())));
}
- fh.writeString(Common::String::format(" flags=\"%d\"", flags()));
+ if (debugChannelSet(-1, kDebugLog))
+ fh.writeString(Common::String::format(" flags=\"%s\"", flag2str(flags()).c_str()));
+ else
+ fh.writeString(Common::String::format(" flags=\"%d\"", flags()));
if (!_file_name.empty()) {
fh.writeString(Common::String::format(" file=\"%s\"", qdscr_XML_string(_file_name.toString('\\'))));
@@ -119,6 +123,37 @@ bool qdMusicTrack::save_script(Common::WriteStream &fh, int indent) const {
return true;
}
+#define defFlag(x) { x, #x }
+
+struct FlagsList {
+ int f;
+ const char *s;
+} static flagList[] = {
+ defFlag(QD_MUSIC_TRACK_CYCLED),
+ defFlag(QD_MUSIC_TRACK_DISABLE_RESTART),
+ defFlag(QD_MUSIC_TRACK_DISABLE_SWITCH_OFF),
+};
+
+Common::String qdMusicTrack::flag2str(int fl) {
+ Common::String res;
+
+ for (int i = 0; i < ARRAYSIZE(flagList); i++) {
+ if (fl & flagList[i].f) {
+ if (!res.empty())
+ res += " | ";
+
+ res += flagList[i].s;
+
+ fl &= ~flagList[i].f;
+ }
+ }
+
+ if (fl)
+ res += Common::String::format(" | %x", fl);
+
+ return res;
+}
+
qdConditionalObject::trigger_start_mode qdMusicTrack::trigger_start() {
if (qdGameDispatcher * dp = qd_get_game_dispatcher()) {
dp->play_music_track(this);
diff --git a/engines/qdengine/qdcore/qd_music_track.h b/engines/qdengine/qdcore/qd_music_track.h
index 0325e9f0bcc..e3497bf6519 100644
--- a/engines/qdengine/qdcore/qd_music_track.h
+++ b/engines/qdengine/qdcore/qd_music_track.h
@@ -86,6 +86,8 @@ public:
qdConditionalObject::trigger_start_mode trigger_start();
+ static Common::String flag2str(int fl);
+
private:
//! ÐÐ¼Ñ mp+ Ñайла.
diff --git a/engines/qdengine/qdcore/qd_sound_info.cpp b/engines/qdengine/qdcore/qd_sound_info.cpp
index dfa98f1135d..9004fbd8443 100644
--- a/engines/qdengine/qdcore/qd_sound_info.cpp
+++ b/engines/qdengine/qdcore/qd_sound_info.cpp
@@ -41,4 +41,34 @@ qdSound *qdSoundInfo::sound() const {
return NULL;
}
+
+#define defFlag(x) { qdSoundInfo::x, #x }
+
+struct FlagsList {
+ int f;
+ const char *s;
+} static flagList[] = {
+ defFlag(LOOP_SOUND_FLAG),
+};
+
+Common::String qdSoundInfo::flag2str(int fl) {
+ Common::String res;
+
+ for (int i = 0; i < ARRAYSIZE(flagList); i++) {
+ if (fl & flagList[i].f) {
+ if (!res.empty())
+ res += " | ";
+
+ res += flagList[i].s;
+
+ fl &= ~flagList[i].f;
+ }
+ }
+
+ if (fl)
+ res += Common::String::format(" | %x", fl);
+
+ return res;
+}
+
} // namespace QDEngine
diff --git a/engines/qdengine/qdcore/qd_sound_info.h b/engines/qdengine/qdcore/qd_sound_info.h
index 98ba34d5283..0f0aa2ecd5b 100644
--- a/engines/qdengine/qdcore/qd_sound_info.h
+++ b/engines/qdengine/qdcore/qd_sound_info.h
@@ -47,6 +47,8 @@ public:
}
qdSound *sound() const;
+
+ static Common::String flag2str(int fl);
};
} // namespace QDEngine
More information about the Scummvm-git-logs
mailing list