[Scummvm-git-logs] scummvm master -> bab94a1719060b5b630223928bb562f01bc4eace
sev-
noreply at scummvm.org
Tue Apr 28 23:10:21 UTC 2026
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
bab94a1719 DIRECTOR: LINGO: Implemented several methods for MapNavigatorXObj
Commit: bab94a1719060b5b630223928bb562f01bc4eace
https://github.com/scummvm/scummvm/commit/bab94a1719060b5b630223928bb562f01bc4eace
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2026-04-29T01:10:08+02:00
Commit Message:
DIRECTOR: LINGO: Implemented several methods for MapNavigatorXObj
Changed paths:
engines/director/lingo/xlibs/m/mapnavigatorxobj.cpp
engines/director/lingo/xlibs/m/mapnavigatorxobj.h
diff --git a/engines/director/lingo/xlibs/m/mapnavigatorxobj.cpp b/engines/director/lingo/xlibs/m/mapnavigatorxobj.cpp
index 0f196ca3523..b05eabbde56 100644
--- a/engines/director/lingo/xlibs/m/mapnavigatorxobj.cpp
+++ b/engines/director/lingo/xlibs/m/mapnavigatorxobj.cpp
@@ -130,6 +130,16 @@ void MapNavigatorXObj::close(ObjectType type) {
}
}
+void mapnav_initialize_hidden_flags(MapNavigatorXObject *me) {
+ int n = 0;
+ for (int i = 0; i < me->_nodeCount; i++) {
+ for (int j = 0; j < me->_nodes[i].hotspot_count; j++) {
+ me->_hiddenFlags[n++] = me->_nodes[i].hotspots[j].initially_hidden;
+ }
+ }
+}
+
+
void MapNavigatorXObj::m_new(int nargs) {
MapNavigatorXObject *me = static_cast<MapNavigatorXObject *>(g_lingo->_state->me.u.obj);
@@ -242,17 +252,73 @@ void MapNavigatorXObj::m_new(int nargs) {
}
}
+ me->_hiddenFlags.resize(me->_hotspotCount);
+
+ mapnav_initialize_hidden_flags(me);
+
g_lingo->push(g_lingo->_state->me);
+}
+void MapNavigatorXObj::m_resetHidden(int nargs) {
+ MapNavigatorXObject *me = static_cast<MapNavigatorXObject *>(g_lingo->_state->me.u.obj);
+
+ mapnav_initialize_hidden_flags(me);
+}
+
+void MapNavigatorXObj::m_getFirstNode(int nargs) {
+ MapNavigatorXObject *me = static_cast<MapNavigatorXObject *>(g_lingo->_state->me.u.obj);
+
+ g_lingo->push(me->_firstNodeIndex + 1); // Lingo node indices are 1-based
}
+void MapNavigatorXObj::m_getNodeName(int nargs) {
+ MapNavigatorXObject *me = static_cast<MapNavigatorXObject *>(g_lingo->_state->me.u.obj);
+
+ Common::String nodeName = "";
+ int16 nodeIndex = g_lingo->pop().asInt();
+
+ if (nodeIndex >= 0 && nodeIndex < me->_nodeCount) {
+ nodeName = me->_nodes[nodeIndex].name;
+ } else {
+ warning("MapNavigatorXObj::m_getNodeName: Invalid node index %d", nodeIndex);
+ }
+
+ g_lingo->push(nodeName);
+}
+
+void MapNavigatorXObj::m_getBackgroundPicture(int nargs) {
+ MapNavigatorXObject *me = static_cast<MapNavigatorXObject *>(g_lingo->_state->me.u.obj);
+
+ int result = 0;
+ int16 nodeIndex = g_lingo->pop().asInt();
+
+ if (nodeIndex >= 0 && nodeIndex < me->_nodeCount) {
+ result = me->_nodes[nodeIndex].background_picture;
+ } else {
+ warning("MapNavigatorXObj::m_getBackgroundPicture: Invalid node index %d", nodeIndex);
+ }
+
+ g_lingo->push(result);
+}
+
+void MapNavigatorXObj::m_getHotSpotCount(int nargs) {
+ MapNavigatorXObject *me = static_cast<MapNavigatorXObject *>(g_lingo->_state->me.u.obj);
+
+ int result = 0;
+ int16 nodeIndex = g_lingo->pop().asInt();
+
+ if (nodeIndex >= 0 && nodeIndex < me->_nodeCount) {
+ result = me->_nodes[nodeIndex].hotspot_count;
+ } else {
+ warning("MapNavigatorXObj::m_getHotSpotCount: Invalid node index %d", nodeIndex);
+ }
+
+ g_lingo->push(result);
+}
+
+
XOBJSTUBNR(MapNavigatorXObj::m_dispose)
-XOBJSTUB(MapNavigatorXObj::m_getFirstNode, 0)
-XOBJSTUBNR(MapNavigatorXObj::m_resetHidden)
-XOBJSTUB(MapNavigatorXObj::m_getNodeName, "")
XOBJSTUB(MapNavigatorXObj::m_getNodeIndex, 0)
-XOBJSTUB(MapNavigatorXObj::m_getBackgroundPicture, 0)
-XOBJSTUB(MapNavigatorXObj::m_getHotSpotCount, 0)
XOBJSTUBNR(MapNavigatorXObj::m_setHidden)
XOBJSTUB(MapNavigatorXObj::m_getHidden, 0)
XOBJSTUB(MapNavigatorXObj::m_pointInside, 0)
diff --git a/engines/director/lingo/xlibs/m/mapnavigatorxobj.h b/engines/director/lingo/xlibs/m/mapnavigatorxobj.h
index ea8c152b300..6f4f1576e94 100644
--- a/engines/director/lingo/xlibs/m/mapnavigatorxobj.h
+++ b/engines/director/lingo/xlibs/m/mapnavigatorxobj.h
@@ -72,6 +72,7 @@ public:
int16 _hotspotCount;
int16 _firstNodeIndex;
Common::Array<NavNode> _nodes;
+ Common::Array<byte> _hiddenFlags;
};
namespace MapNavigatorXObj {
More information about the Scummvm-git-logs
mailing list