[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