[Scummvm-git-logs] scummvm master -> 47cbae39ca61950135fda840a356a6ea01ceb8e4
sev-
noreply at scummvm.org
Mon Dec 18 22:21:50 UTC 2023
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:
47cbae39ca DIRECTOR: Added stubs for XObjects for Jewels of the Oracle
Commit: 47cbae39ca61950135fda840a356a6ea01ceb8e4
https://github.com/scummvm/scummvm/commit/47cbae39ca61950135fda840a356a6ea01ceb8e4
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-12-18T23:21:40+01:00
Commit Message:
DIRECTOR: Added stubs for XObjects for Jewels of the Oracle
Changed paths:
A engines/director/lingo/xlibs/colorcursorxobj.cpp
A engines/director/lingo/xlibs/colorcursorxobj.h
A engines/director/lingo/xlibs/cursorxobj.cpp
A engines/director/lingo/xlibs/cursorxobj.h
A engines/director/lingo/xlibs/mapnavigatorxobj.cpp
A engines/director/lingo/xlibs/mapnavigatorxobj.h
A engines/director/lingo/xlibs/memcheckxobj.cpp
A engines/director/lingo/xlibs/memcheckxobj.h
A engines/director/lingo/xlibs/mmaskxobj.cpp
A engines/director/lingo/xlibs/mmaskxobj.h
A engines/director/lingo/xlibs/movieidxxobj.cpp
A engines/director/lingo/xlibs/movieidxxobj.h
A engines/director/lingo/xlibs/qtcatmovieplayerxobj.cpp
A engines/director/lingo/xlibs/qtcatmovieplayerxobj.h
engines/director/lingo/lingo-object.cpp
engines/director/lingo/xlibs/palxobj.cpp
engines/director/module.mk
diff --git a/engines/director/lingo/lingo-object.cpp b/engines/director/lingo/lingo-object.cpp
index f3200935215..7a27ea7c29a 100644
--- a/engines/director/lingo/lingo-object.cpp
+++ b/engines/director/lingo/lingo-object.cpp
@@ -37,7 +37,9 @@
#include "director/lingo/xlibs/blitpict.h"
#include "director/lingo/xlibs/cdromxobj.h"
#include "director/lingo/xlibs/colorxobj.h"
+#include "director/lingo/xlibs/colorcursorxobj.h"
#include "director/lingo/xlibs/consumer.h"
+#include "director/lingo/xlibs/cursorxobj.h"
#include "director/lingo/xlibs/darkenscreen.h"
#include "director/lingo/xlibs/developerStack.h"
#include "director/lingo/xlibs/dialogsxobj.h"
@@ -64,11 +66,15 @@
#include "director/lingo/xlibs/jitdraw3.h"
#include "director/lingo/xlibs/labeldrvxobj.h"
#include "director/lingo/xlibs/maniacbg.h"
+#include "director/lingo/xlibs/mapnavigatorxobj.h"
+#include "director/lingo/xlibs/memcheckxobj.h"
#include "director/lingo/xlibs/memoryxobj.h"
#include "director/lingo/xlibs/misc.h"
#include "director/lingo/xlibs/miscx.h"
+#include "director/lingo/xlibs/mmaskxobj.h"
#include "director/lingo/xlibs/moovxobj.h"
#include "director/lingo/xlibs/movemousexobj.h"
+#include "director/lingo/xlibs/movieidxxobj.h"
#include "director/lingo/xlibs/movutils.h"
#include "director/lingo/xlibs/orthoplayxobj.h"
#include "director/lingo/xlibs/palxobj.h"
@@ -77,6 +83,7 @@
#include "director/lingo/xlibs/prefpath.h"
#include "director/lingo/xlibs/printomatic.h"
#include "director/lingo/xlibs/qtmovie.h"
+#include "director/lingo/xlibs/qtcatmovieplayerxobj.h"
#include "director/lingo/xlibs/qtvr.h"
#include "director/lingo/xlibs/quicktime.h"
#include "director/lingo/xlibs/registercomponent.h"
@@ -172,7 +179,9 @@ static struct XLibProto {
{ BlitPictXObj::fileNames, BlitPictXObj::open, BlitPictXObj::close, kXObj, 400 }, // D4
{ CDROMXObj::fileNames, CDROMXObj::open, CDROMXObj::close, kXObj, 200 }, // D2
{ ColorXObj::fileNames, ColorXObj::open, ColorXObj::close, kXObj, 400 }, // D4
+ { ColorCursorXObj::fileNames, ColorCursorXObj::open, ColorCursorXObj::close, kXObj, 400 }, // D4
{ ConsumerXObj::fileNames, ConsumerXObj::open, ConsumerXObj::close, kXObj, 400 }, // D4
+ { CursorXObj::fileNames, CursorXObj::open, CursorXObj::close, kXObj, 400 }, // D4
{ DarkenScreen::fileNames, DarkenScreen::open, DarkenScreen::close, kXObj, 300 }, // D3
{ DeveloperStack::fileNames, DeveloperStack::open, DeveloperStack::close, kXObj, 300 }, // D3
{ DialogsXObj::fileNames, DialogsXObj::open, DialogsXObj::close, kXObj, 400 }, // D4
@@ -199,11 +208,15 @@ static struct XLibProto {
{ JourneyWareXINIXObj::fileNames, JourneyWareXINIXObj::open, JourneyWareXINIXObj::close, kXObj, 400 }, // D4
{ LabelDrvXObj::fileNames, LabelDrvXObj::open, LabelDrvXObj::close, kXObj, 400 }, // D4
{ ManiacBgXObj::fileNames, ManiacBgXObj::open, ManiacBgXObj::close, kXObj, 300 }, // D3
+ { MapNavigatorXObj::fileNames, MapNavigatorXObj::open, MapNavigatorXObj::close, kXObj, 400 }, // D4
+ { MemCheckXObj::fileNames, MemCheckXObj::open, MemCheckXObj::close, kXObj, 400 }, // D4
{ MemoryXObj::fileNames, MemoryXObj::open, MemoryXObj::close, kXObj, 300 }, // D3
{ Misc::fileNames, Misc::open, Misc::close, kXObj, 400 }, // D4
{ MiscX::fileNames, MiscX::open, MiscX::close, kXObj, 400 }, // D4
+ { MMaskXObj::fileNames, MMaskXObj::open, MMaskXObj::close, kXObj, 400 }, // D4
{ MoovXObj::fileNames, MoovXObj::open, MoovXObj::close, kXObj, 300 }, // D3
{ MoveMouseXObj::fileNames, MoveMouseXObj::open, MoveMouseXObj::close, kXObj, 400 }, // D4
+ { MovieIdxXObj::fileNames, MovieIdxXObj::open, MovieIdxXObj::close, kXObj, 400 }, // D4
{ MovUtilsXObj::fileNames, MovUtilsXObj::open, MovUtilsXObj::close, kXObj, 400 }, // D4
{ OrthoPlayXObj::fileNames, OrthoPlayXObj::open, OrthoPlayXObj::close, kXObj, 400 }, // D4
{ PalXObj::fileNames, PalXObj::open, PalXObj::close, kXObj, 400 }, // D4
@@ -211,8 +224,9 @@ static struct XLibProto {
{ Porta::fileNames, Porta::open, Porta::close, kXObj, 300 }, // D3
{ PrefPath::fileNames, PrefPath::open, PrefPath::close, kXObj, 400 }, // D4
{ PrintOMaticXObj::fileNames, PrintOMaticXObj::open, PrintOMaticXObj::close, kXObj, 400 }, // D4
- { QTVR::fileNames, QTVR::open, QTVR::close, kXObj, 400 }, // D4
+ { QTCatMoviePlayerXObj::fileNames, QTCatMoviePlayerXObj::open, QTCatMoviePlayerXObj::close,kXObj, 400 }, // D4
{ QTMovie::fileNames, QTMovie::open, QTMovie::close, kXObj, 400 }, // D4
+ { QTVR::fileNames, QTVR::open, QTVR::close, kXObj, 400 }, // D4
{ Quicktime::fileNames, Quicktime::open, Quicktime::close, kXObj, 300 }, // D3
{ RearWindowXObj::fileNames, RearWindowXObj::open, RearWindowXObj::close, kXObj, 400 }, // D4
{ RegisterComponent::fileNames, RegisterComponent::open, RegisterComponent::close, kXObj, 400 }, // D4
diff --git a/engines/director/lingo/xlibs/colorcursorxobj.cpp b/engines/director/lingo/xlibs/colorcursorxobj.cpp
new file mode 100644
index 00000000000..c7fe582254c
--- /dev/null
+++ b/engines/director/lingo/xlibs/colorcursorxobj.cpp
@@ -0,0 +1,96 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "common/system.h"
+
+#include "director/director.h"
+#include "director/lingo/lingo.h"
+#include "director/lingo/lingo-object.h"
+#include "director/lingo/lingo-utils.h"
+#include "director/lingo/xlibs/colorcursorxobj.h"
+
+/**************************************************
+ *
+ * USED IN:
+ * Jewels of the Oracle - Mac
+ *
+ **************************************************/
+
+/*
+-- ColorCursor, and X-Object for using color cursor resources
+-- by Chris Perkins 1993. (CPerkins at aol.com)
+I mNew
+XI mGetSetCursor, crsrID -- crsrID is the resource ID number of a 'crsr' type resource
+X mReleaseCursor -- CALL THIS BEFORE DISPOSING OBJECT or using the lingo <cursor> routine
+*/
+
+namespace Director {
+
+const char *ColorCursorXObj::xlibName = "colorcursorxobj";
+const char *ColorCursorXObj::fileNames[] = {
+ "CCURSOR.XOB",
+ nullptr
+};
+
+static MethodProto xlibMethods[] = {
+ { "new", ColorCursorXObj::m_new, 0, 0, 400 },
+ { "dispose", ColorCursorXObj::m_dispose, 0, 0, 400 },
+ { "getsetcursor", ColorCursorXObj::m_getSetCursor, 1, 1, 400 },
+ { "releasecursor", ColorCursorXObj::m_releaseCursor, 0, 0, 400 },
+ { nullptr, nullptr, 0, 0, 0 }
+};
+
+ColorCursorXObject::ColorCursorXObject(ObjectType ObjectType) :Object<ColorCursorXObject>("ColorCursorXObj") {
+ _objType = ObjectType;
+}
+
+void ColorCursorXObj::open(int type) {
+ if (type == kXObj) {
+ ColorCursorXObject::initMethods(xlibMethods);
+ ColorCursorXObject *xobj = new ColorCursorXObject(kXObj);
+ g_lingo->exposeXObject(xlibName, xobj);
+ } else if (type == kXtraObj) {
+ // TODO - Implement Xtra
+ }
+}
+
+void ColorCursorXObj::close(int type) {
+ if (type == kXObj) {
+ ColorCursorXObject::cleanupMethods();
+ g_lingo->_globalvars[xlibName] = Datum();
+ } else if (type == kXtraObj) {
+ // TODO - Implement Xtra
+ }
+}
+
+void ColorCursorXObj::m_new(int nargs) {
+ if (nargs != 0) {
+ warning("ColorCursorXObj::m_new: expected 0 arguments");
+ g_lingo->dropStack(nargs);
+ }
+ g_lingo->push(g_lingo->_state->me);
+}
+
+XOBJSTUBNR(ColorCursorXObj::m_dispose)
+XOBJSTUBNR(ColorCursorXObj::m_getSetCursor)
+XOBJSTUBNR(ColorCursorXObj::m_releaseCursor)
+
+}
diff --git a/engines/director/lingo/xlibs/colorcursorxobj.h b/engines/director/lingo/xlibs/colorcursorxobj.h
new file mode 100644
index 00000000000..6f49dbf5f45
--- /dev/null
+++ b/engines/director/lingo/xlibs/colorcursorxobj.h
@@ -0,0 +1,49 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef DIRECTOR_LINGO_XLIBS_COLORCURSORXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_COLORCURSORXOBJ_H
+
+namespace Director {
+
+class ColorCursorXObject : public Object<ColorCursorXObject> {
+public:
+ ColorCursorXObject(ObjectType objType);
+};
+
+namespace ColorCursorXObj {
+
+extern const char *xlibName;
+extern const char *fileNames[];
+
+void open(int type);
+void close(int type);
+
+void m_new(int nargs);
+void m_dispose(int nargs);
+void m_getSetCursor(int nargs);
+void m_releaseCursor(int nargs);
+
+} // End of namespace ColorCursorXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/lingo/xlibs/cursorxobj.cpp b/engines/director/lingo/xlibs/cursorxobj.cpp
new file mode 100644
index 00000000000..2193d3eff38
--- /dev/null
+++ b/engines/director/lingo/xlibs/cursorxobj.cpp
@@ -0,0 +1,94 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "common/system.h"
+
+#include "director/director.h"
+#include "director/lingo/lingo.h"
+#include "director/lingo/lingo-object.h"
+#include "director/lingo/lingo-utils.h"
+#include "director/lingo/xlibs/cursorxobj.h"
+
+/**************************************************
+ *
+ * USED IN:
+ * Jewels of the Oracle - Win
+ *
+ **************************************************/
+
+/*
+-- Cursor External Factory. 16/03/95 - AAF - Changed to play concatenated movies
+Cursor
+I mNew --Creates a new instance of the XObject
+X mDispose --Disposes of XObject instance
+XSS mSetCursor, cursorName, windowName --Sets the window cursor
+ */
+
+namespace Director {
+
+const char *CursorXObj::xlibName = "cursorxobj";
+const char *CursorXObj::fileNames[] = {
+ "CURSOR",
+ nullptr
+};
+
+static MethodProto xlibMethods[] = {
+ { "new", CursorXObj::m_new, 0, 0, 400 },
+ { "dispose", CursorXObj::m_dispose, 0, 0, 400 },
+ { "setCursor", CursorXObj::m_setCursor, 2, 2, 400 },
+ { nullptr, nullptr, 0, 0, 0 }
+};
+
+CursorXObject::CursorXObject(ObjectType ObjectType) :Object<CursorXObject>("CursorXObj") {
+ _objType = ObjectType;
+}
+
+void CursorXObj::open(int type) {
+ if (type == kXObj) {
+ CursorXObject::initMethods(xlibMethods);
+ CursorXObject *xobj = new CursorXObject(kXObj);
+ g_lingo->exposeXObject(xlibName, xobj);
+ } else if (type == kXtraObj) {
+ // TODO - Implement Xtra
+ }
+}
+
+void CursorXObj::close(int type) {
+ if (type == kXObj) {
+ CursorXObject::cleanupMethods();
+ g_lingo->_globalvars[xlibName] = Datum();
+ } else if (type == kXtraObj) {
+ // TODO - Implement Xtra
+ }
+}
+
+void CursorXObj::m_new(int nargs) {
+ if (nargs != 0) {
+ warning("CursorXObj::m_new: expected 0 arguments");
+ g_lingo->dropStack(nargs);
+ }
+ g_lingo->push(g_lingo->_state->me);
+}
+
+XOBJSTUBNR(CursorXObj::m_dispose)
+XOBJSTUBNR(CursorXObj::m_setCursor)
+
+}
diff --git a/engines/director/lingo/xlibs/cursorxobj.h b/engines/director/lingo/xlibs/cursorxobj.h
new file mode 100644
index 00000000000..49767c5f455
--- /dev/null
+++ b/engines/director/lingo/xlibs/cursorxobj.h
@@ -0,0 +1,48 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef DIRECTOR_LINGO_XLIBS_CURSORXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_CURSORXOBJ_H
+
+namespace Director {
+
+class CursorXObject : public Object<CursorXObject> {
+public:
+ CursorXObject(ObjectType objType);
+};
+
+namespace CursorXObj {
+
+extern const char *xlibName;
+extern const char *fileNames[];
+
+void open(int type);
+void close(int type);
+
+void m_new(int nargs);
+void m_dispose(int nargs);
+void m_setCursor(int nargs);
+
+} // End of namespace CursorXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/lingo/xlibs/mapnavigatorxobj.cpp b/engines/director/lingo/xlibs/mapnavigatorxobj.cpp
new file mode 100644
index 00000000000..cd0df48522b
--- /dev/null
+++ b/engines/director/lingo/xlibs/mapnavigatorxobj.cpp
@@ -0,0 +1,161 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "common/system.h"
+
+#include "director/director.h"
+#include "director/lingo/lingo.h"
+#include "director/lingo/lingo-object.h"
+#include "director/lingo/lingo-utils.h"
+#include "director/lingo/xlibs/mapnavigatorxobj.h"
+
+/**************************************************
+ *
+ * USED IN:
+ * Jewels of the Oracle - Win
+ * Jewels of the Oracle - Mac
+ *
+ **************************************************/
+
+/*
+-- MapNav External Factory. 16/03/95 - AAF - New
+MapNav
+IS mNew, fileName -- read map given file name
+X mDispose -- dispose of map
+I mGetFirstNode -- return index of first node
+X mResetHidden -- reset hidden flags to initial values
+SI mGetNodeName, node -- given index, return node name
+IS mGetNodeIndex, name -- given name, return node index
+II mGetBackgroundPicture, node -- return picture number for node
+II mGetHotSpotCount, node -- return no. of hot spots for node
+XIII mSetHidden, node, hotspot, flag -- set/clear hidden flag
+III mGetHidden, node, hotspot -- set/clear hidden flag
+IIIII mPointInside, node, hotspot, x, y -- return true if x,y inside hot spot
+SII mGetHotSpotRect, node, hotspot -- return list of l,t,r,b for hot spot
+III mGetHotSpotCursor, node, hotspot -- return cursor number for node
+SII mGetEvaluationFcn, node, hotspot -- return function name to call to get condition number
+IIII mGetDestinationNode, node, hotspot, condition -- return destination node for hot spot
+IIII mGetInstructionCount, node, hotspot, condition -- return number of instructions
+IIIII mGetInstructionType, node, hotspot, condition, index -- return type of instruction 'Q' or 'L'
+SIIII mGetInstruction, node, hotspot, condition, index -- return ith instruction
+
+-- Navigator, Navigation XObject - aep 95.03.28
+IS mNew, fileName -- read map given file name
+X mDispose -- dispose of map
+I mGetFirstNode -- return index of first node
+X mResetHidden -- reset hidden flags to initial values
+SI mGetNodeName, node -- given index, return node name
+IS mGetNodeIndex, name -- given name, return node index
+II mGetBackgroundPicture, node -- return picture number for node
+II mGetHotSpotCount, node -- return no. of hot spots for node
+XIII mSetHidden, node, hotspot, flag -- set/clear hidden flag
+III mGetHidden, node, hotspot -- set/clear hidden flag
+IIIII mPointInside, node, hotspot, h, v -- return true if h,v inside hot spot
+SII mGetHotSpotRect, node, hotspot -- return list of l,t,r,b for hot spot
+III mGetHotSpotCursor, node, hotspot -- return cursor number for node
+SII mGetEvaluationFcn, node, hotspot -- return function name to call to get condition no.
+IIII mGetDestinationNode, node, hotspot, condition -- return destination node for hot spot
+IIII mGetInstructionCount, node, hotspot, condition -- return number of instructions
+IIIII mGetInstructionType, node, hotspot, condition, i -- return type of instruction 'Q' or 'L'
+SIIII mGetInstruction, node, hotspot, condition, i -- return ith instruction
+ */
+
+namespace Director {
+
+const char *MapNavigatorXObj::xlibName = "mapnavigatorxobj";
+const char *MapNavigatorXObj::fileNames[] = {
+ "MAPNAV", // Jewels of the Oracle - Win
+ "MapNavigator.XObj", // Jewels of the Oracle - Mac
+ nullptr
+};
+
+static MethodProto xlibMethods[] = {
+ { "new", MapNavigatorXObj::m_new, 1, 1, 400 },
+ { "dispose", MapNavigatorXObj::m_dispose, 0, 0, 400 },
+ { "getFirstNode", MapNavigatorXObj::m_getFirstNode, 0, 0, 400 },
+ { "resetHidden", MapNavigatorXObj::m_resetHidden, 0, 0, 400 },
+ { "getNodeName", MapNavigatorXObj::m_getNodeName, 1, 1, 400 },
+ { "getNodeIndex", MapNavigatorXObj::m_getNodeIndex, 1, 1, 400 },
+ { "getBackgroundPicture", MapNavigatorXObj::m_getBackgroundPicture,1, 1, 400 },
+ { "getHotSpotCount", MapNavigatorXObj::m_getHotSpotCount, 1, 1, 400 },
+ { "setHidden", MapNavigatorXObj::m_setHidden, 3, 3, 400 },
+ { "getHidden", MapNavigatorXObj::m_getHidden, 2, 2, 400 },
+ { "pointInside", MapNavigatorXObj::m_pointInside, 4, 4, 400 },
+ { "getHotSpotRect", MapNavigatorXObj::m_getHotSpotRect, 2, 2, 400 },
+ { "getHotSpotCursor", MapNavigatorXObj::m_getHotSpotCursor, 2, 2, 400 },
+ { "getEvaluationFcn", MapNavigatorXObj::m_getEvaluationFcn, 2, 2, 400 },
+ { "getDestinationNode", MapNavigatorXObj::m_getDestinationNode, 3, 3, 400 },
+ { "getInstructionCount", MapNavigatorXObj::m_getInstructionCount, 3, 3, 400 },
+ { "getInstructionType", MapNavigatorXObj::m_getInstructionType, 4, 4, 400 },
+ { "getInstruction", MapNavigatorXObj::m_getInstruction, 4, 4, 400 },
+ { nullptr, nullptr, 0, 0, 0 }
+};
+
+MapNavigatorXObject::MapNavigatorXObject(ObjectType ObjectType) :Object<MapNavigatorXObject>("MapNavigatorXObj") {
+ _objType = ObjectType;
+}
+
+void MapNavigatorXObj::open(int type) {
+ if (type == kXObj) {
+ MapNavigatorXObject::initMethods(xlibMethods);
+ MapNavigatorXObject *xobj = new MapNavigatorXObject(kXObj);
+ g_lingo->exposeXObject(xlibName, xobj);
+ } else if (type == kXtraObj) {
+ // TODO - Implement Xtra
+ }
+}
+
+void MapNavigatorXObj::close(int type) {
+ if (type == kXObj) {
+ MapNavigatorXObject::cleanupMethods();
+ g_lingo->_globalvars[xlibName] = Datum();
+ } else if (type == kXtraObj) {
+ // TODO - Implement Xtra
+ }
+}
+
+void MapNavigatorXObj::m_new(int nargs) {
+ if (nargs != 0) {
+ warning("MapNavigatorXObj::m_new: expected 0 arguments");
+ g_lingo->dropStack(nargs);
+ }
+ g_lingo->push(g_lingo->_state->me);
+}
+
+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)
+XOBJSTUB(MapNavigatorXObj::m_getHotSpotRect, "")
+XOBJSTUB(MapNavigatorXObj::m_getHotSpotCursor, 0)
+XOBJSTUB(MapNavigatorXObj::m_getEvaluationFcn, "")
+XOBJSTUB(MapNavigatorXObj::m_getDestinationNode, 0)
+XOBJSTUB(MapNavigatorXObj::m_getInstructionCount, 0)
+XOBJSTUB(MapNavigatorXObj::m_getInstructionType, 0)
+XOBJSTUB(MapNavigatorXObj::m_getInstruction, "")
+
+}
diff --git a/engines/director/lingo/xlibs/mapnavigatorxobj.h b/engines/director/lingo/xlibs/mapnavigatorxobj.h
new file mode 100644
index 00000000000..792453d9f9e
--- /dev/null
+++ b/engines/director/lingo/xlibs/mapnavigatorxobj.h
@@ -0,0 +1,63 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef DIRECTOR_LINGO_XLIBS_MAPNAVIGATORXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_MAPNAVIGATORXOBJ_H
+
+namespace Director {
+
+class MapNavigatorXObject : public Object<MapNavigatorXObject> {
+public:
+ MapNavigatorXObject(ObjectType objType);
+};
+
+namespace MapNavigatorXObj {
+
+extern const char *xlibName;
+extern const char *fileNames[];
+
+void open(int type);
+void close(int type);
+
+void m_new(int nargs);
+void m_dispose(int nargs);
+void m_getFirstNode(int nargs);
+void m_resetHidden(int nargs);
+void m_getNodeName(int nargs);
+void m_getNodeIndex(int nargs);
+void m_getBackgroundPicture(int nargs);
+void m_getHotSpotCount(int nargs);
+void m_setHidden(int nargs);
+void m_getHidden(int nargs);
+void m_pointInside(int nargs);
+void m_getHotSpotRect(int nargs);
+void m_getHotSpotCursor(int nargs);
+void m_getEvaluationFcn(int nargs);
+void m_getDestinationNode(int nargs);
+void m_getInstructionCount(int nargs);
+void m_getInstructionType(int nargs);
+void m_getInstruction(int nargs);
+
+} // End of namespace MapNavigatorXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/lingo/xlibs/memcheckxobj.cpp b/engines/director/lingo/xlibs/memcheckxobj.cpp
new file mode 100644
index 00000000000..767a8a72379
--- /dev/null
+++ b/engines/director/lingo/xlibs/memcheckxobj.cpp
@@ -0,0 +1,105 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "common/system.h"
+
+#include "director/director.h"
+#include "director/lingo/lingo.h"
+#include "director/lingo/lingo-object.h"
+#include "director/lingo/lingo-utils.h"
+#include "director/lingo/xlibs/memcheckxobj.h"
+
+/**************************************************
+ *
+ * USED IN:
+ * Jewels of the Oracle - Win
+ * Jewels of the Oracle - Mac
+ *
+ **************************************************/
+
+/*
+-- MemCheck External Factory. 16/03/95 - AAF - New
+MemCheck
+IS mNew, virtualFile --Creates a new instance of the XObject
+X mDispose --Disposes of XObject instance
+I mMemoryCheck --Checks memory status
+X mMemoryPurge --Purges memory
+
+-- Memory Check XObject - aep 95.06.20
+IS mNew, msg -- Open the XObject
+X mDispose -- Dispose of XObject
+I mMemoryCheck -- Return memory info
+X mMemoryPurge -- Clear chunk o' mem
+ */
+
+namespace Director {
+
+const char *MemCheckXObj::xlibName = "memcheckxobj";
+const char *MemCheckXObj::fileNames[] = {
+ "MemCheck", // Jewels of the Oracle - Win
+ "MemCheck.XObj", // Jewels of the Oracle - Mac
+ nullptr
+};
+
+static MethodProto xlibMethods[] = {
+ { "new", MemCheckXObj::m_new, 1, 1, 400 },
+ { "dispose", MemCheckXObj::m_dispose, 0, 0, 400 },
+ { "memoryCheck", MemCheckXObj::m_memoryCheck, 0, 0, 400 },
+ { "memoryPurge", MemCheckXObj::m_memoryPurge, 0, 0, 400 },
+ { nullptr, nullptr, 0, 0, 0 }
+};
+
+MemCheckXObject::MemCheckXObject(ObjectType ObjectType) :Object<MemCheckXObject>("MemCheckXObj") {
+ _objType = ObjectType;
+}
+
+void MemCheckXObj::open(int type) {
+ if (type == kXObj) {
+ MemCheckXObject::initMethods(xlibMethods);
+ MemCheckXObject *xobj = new MemCheckXObject(kXObj);
+ g_lingo->exposeXObject(xlibName, xobj);
+ } else if (type == kXtraObj) {
+ // TODO - Implement Xtra
+ }
+}
+
+void MemCheckXObj::close(int type) {
+ if (type == kXObj) {
+ MemCheckXObject::cleanupMethods();
+ g_lingo->_globalvars[xlibName] = Datum();
+ } else if (type == kXtraObj) {
+ // TODO - Implement Xtra
+ }
+}
+
+void MemCheckXObj::m_new(int nargs) {
+ if (nargs != 0) {
+ warning("MemCheckXObj::m_new: expected 0 arguments");
+ g_lingo->dropStack(nargs);
+ }
+ g_lingo->push(g_lingo->_state->me);
+}
+
+XOBJSTUBNR(MemCheckXObj::m_dispose)
+XOBJSTUB(MemCheckXObj::m_memoryCheck, 0)
+XOBJSTUBNR(MemCheckXObj::m_memoryPurge)
+
+}
diff --git a/engines/director/lingo/xlibs/memcheckxobj.h b/engines/director/lingo/xlibs/memcheckxobj.h
new file mode 100644
index 00000000000..9a183117808
--- /dev/null
+++ b/engines/director/lingo/xlibs/memcheckxobj.h
@@ -0,0 +1,49 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef DIRECTOR_LINGO_XLIBS_MEMCHECKXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_MEMCHECKXOBJ_H
+
+namespace Director {
+
+class MemCheckXObject : public Object<MemCheckXObject> {
+public:
+ MemCheckXObject(ObjectType objType);
+};
+
+namespace MemCheckXObj {
+
+extern const char *xlibName;
+extern const char *fileNames[];
+
+void open(int type);
+void close(int type);
+
+void m_new(int nargs);
+void m_dispose(int nargs);
+void m_memoryCheck(int nargs);
+void m_memoryPurge(int nargs);
+
+} // End of namespace MemCheckXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/lingo/xlibs/mmaskxobj.cpp b/engines/director/lingo/xlibs/mmaskxobj.cpp
new file mode 100644
index 00000000000..c3a1e4320a0
--- /dev/null
+++ b/engines/director/lingo/xlibs/mmaskxobj.cpp
@@ -0,0 +1,92 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "common/system.h"
+
+#include "director/director.h"
+#include "director/lingo/lingo.h"
+#include "director/lingo/lingo-object.h"
+#include "director/lingo/lingo-utils.h"
+#include "director/lingo/xlibs/mmaskxobj.h"
+
+/**************************************************
+ *
+ * USED IN:
+ * Jewels of the Oracle - Mac
+ *
+ **************************************************/
+
+/*
+-- MMEX Mask
+I mNew
+II mMask, state
+ */
+
+namespace Director {
+
+const char *MMaskXObj::xlibName = "mmaskxobj";
+const char *MMaskXObj::fileNames[] = {
+ "MMASK.XOB",
+ nullptr
+};
+
+static MethodProto xlibMethods[] = {
+ { "new", MMaskXObj::m_new, 0, 0, 400 },
+ { "dispose", MMaskXObj::m_dispose, 0, 0, 400 },
+ { "mask", MMaskXObj::m_mask, 1, 1, 400 },
+ { nullptr, nullptr, 0, 0, 0 }
+};
+
+MMaskXObject::MMaskXObject(ObjectType ObjectType) :Object<MMaskXObject>("MMaskXObj") {
+ _objType = ObjectType;
+}
+
+void MMaskXObj::open(int type) {
+ if (type == kXObj) {
+ MMaskXObject::initMethods(xlibMethods);
+ MMaskXObject *xobj = new MMaskXObject(kXObj);
+ g_lingo->exposeXObject(xlibName, xobj);
+ } else if (type == kXtraObj) {
+ // TODO - Implement Xtra
+ }
+}
+
+void MMaskXObj::close(int type) {
+ if (type == kXObj) {
+ MMaskXObject::cleanupMethods();
+ g_lingo->_globalvars[xlibName] = Datum();
+ } else if (type == kXtraObj) {
+ // TODO - Implement Xtra
+ }
+}
+
+void MMaskXObj::m_new(int nargs) {
+ if (nargs != 0) {
+ warning("MMaskXObj::m_new: expected 0 arguments");
+ g_lingo->dropStack(nargs);
+ }
+ g_lingo->push(g_lingo->_state->me);
+}
+
+XOBJSTUBNR(MMaskXObj::m_dispose)
+XOBJSTUBNR(MMaskXObj::m_mask)
+
+}
diff --git a/engines/director/lingo/xlibs/mmaskxobj.h b/engines/director/lingo/xlibs/mmaskxobj.h
new file mode 100644
index 00000000000..92dbb2ddf89
--- /dev/null
+++ b/engines/director/lingo/xlibs/mmaskxobj.h
@@ -0,0 +1,48 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef DIRECTOR_LINGO_XLIBS_MMASKXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_MMASKXOBJ_H
+
+namespace Director {
+
+class MMaskXObject : public Object<MMaskXObject> {
+public:
+ MMaskXObject(ObjectType objType);
+};
+
+namespace MMaskXObj {
+
+extern const char *xlibName;
+extern const char *fileNames[];
+
+void open(int type);
+void close(int type);
+
+void m_new(int nargs);
+void m_dispose(int nargs);
+void m_mask(int nargs);
+
+} // End of namespace MMaskXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/lingo/xlibs/movieidxxobj.cpp b/engines/director/lingo/xlibs/movieidxxobj.cpp
new file mode 100644
index 00000000000..af135c27695
--- /dev/null
+++ b/engines/director/lingo/xlibs/movieidxxobj.cpp
@@ -0,0 +1,101 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "common/system.h"
+
+#include "director/director.h"
+#include "director/lingo/lingo.h"
+#include "director/lingo/lingo-object.h"
+#include "director/lingo/lingo-utils.h"
+#include "director/lingo/xlibs/movieidxxobj.h"
+
+/**************************************************
+ *
+ * USED IN:
+ * Jewels of the Oracle - Win
+ * Jewels of the Oracle - Mac
+ *
+ **************************************************/
+
+/*
+-- MovieIdx External Factory. 16/03/95 - AAF - New
+MovieIdx
+I mNew --Creates a new instance of the XObject
+X mDispose --Disposes of XObject instance
+SS mMovieInfo, movieName --Returns movie information for a given name
+
+-- MovieIdx, Movie Index XObject - aep 95.05.01
+I mNew -- read map given file name
+X mDispose -- dispose of map
+SS mMovieInfo -- return info given name
+ */
+
+namespace Director {
+
+const char *MovieIdxXObj::xlibName = "movieidxxobj";
+const char *MovieIdxXObj::fileNames[] = {
+ "MovieIdx", // Jewels of the Oracle - Win
+ "MovieIdx.XObj", // Jewels of the Oracle - Mac
+ nullptr
+};
+
+static MethodProto xlibMethods[] = {
+ { "new", MovieIdxXObj::m_new, 0, 0, 400 },
+ { "dispose", MovieIdxXObj::m_dispose, 0, 0, 400 },
+ { "movieInfo", MovieIdxXObj::m_movieInfo, 1, 1, 400 },
+ { nullptr, nullptr, 0, 0, 0 }
+};
+
+MovieIdxXObject::MovieIdxXObject(ObjectType ObjectType) :Object<MovieIdxXObject>("MovieIdxXObj") {
+ _objType = ObjectType;
+}
+
+void MovieIdxXObj::open(int type) {
+ if (type == kXObj) {
+ MovieIdxXObject::initMethods(xlibMethods);
+ MovieIdxXObject *xobj = new MovieIdxXObject(kXObj);
+ g_lingo->exposeXObject(xlibName, xobj);
+ } else if (type == kXtraObj) {
+ // TODO - Implement Xtra
+ }
+}
+
+void MovieIdxXObj::close(int type) {
+ if (type == kXObj) {
+ MovieIdxXObject::cleanupMethods();
+ g_lingo->_globalvars[xlibName] = Datum();
+ } else if (type == kXtraObj) {
+ // TODO - Implement Xtra
+ }
+}
+
+void MovieIdxXObj::m_new(int nargs) {
+ if (nargs != 0) {
+ warning("MovieIdxXObj::m_new: expected 0 arguments");
+ g_lingo->dropStack(nargs);
+ }
+ g_lingo->push(g_lingo->_state->me);
+}
+
+XOBJSTUBNR(MovieIdxXObj::m_dispose)
+XOBJSTUB(MovieIdxXObj::m_movieInfo, "")
+
+}
diff --git a/engines/director/lingo/xlibs/movieidxxobj.h b/engines/director/lingo/xlibs/movieidxxobj.h
new file mode 100644
index 00000000000..c719393633b
--- /dev/null
+++ b/engines/director/lingo/xlibs/movieidxxobj.h
@@ -0,0 +1,48 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef DIRECTOR_LINGO_XLIBS_MOVIEIDXXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_MOVIEIDXXOBJ_H
+
+namespace Director {
+
+class MovieIdxXObject : public Object<MovieIdxXObject> {
+public:
+ MovieIdxXObject(ObjectType objType);
+};
+
+namespace MovieIdxXObj {
+
+extern const char *xlibName;
+extern const char *fileNames[];
+
+void open(int type);
+void close(int type);
+
+void m_new(int nargs);
+void m_dispose(int nargs);
+void m_movieInfo(int nargs);
+
+} // End of namespace MovieIdxXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/lingo/xlibs/palxobj.cpp b/engines/director/lingo/xlibs/palxobj.cpp
index bfc961140e0..29a02bd8d80 100644
--- a/engines/director/lingo/xlibs/palxobj.cpp
+++ b/engines/director/lingo/xlibs/palxobj.cpp
@@ -24,6 +24,7 @@
* USED IN:
* Majestic-mac
* chopsuey-mac
+ * Jewels of the Oracle - Mac
*
*************************************/
@@ -59,6 +60,7 @@ const char *PalXObj::fileNames[] = {
"PalXObj",
"FixPalette",
"FixPaletteXObj",
+ "PALETTE.XOB", // Jewels of the Oracle - Mac
nullptr
};
diff --git a/engines/director/lingo/xlibs/qtcatmovieplayerxobj.cpp b/engines/director/lingo/xlibs/qtcatmovieplayerxobj.cpp
new file mode 100644
index 00000000000..cdd3add5a13
--- /dev/null
+++ b/engines/director/lingo/xlibs/qtcatmovieplayerxobj.cpp
@@ -0,0 +1,103 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "common/system.h"
+
+#include "director/director.h"
+#include "director/lingo/lingo.h"
+#include "director/lingo/lingo-object.h"
+#include "director/lingo/lingo-utils.h"
+#include "director/lingo/xlibs/qtcatmovieplayerxobj.h"
+
+/**************************************************
+ *
+ * USED IN:
+ * Jewels of the Oracle - Win
+ * Jewels of the Oracle - Mac
+ *
+ **************************************************/
+
+/*
+-- CatPlayr External Factory. 16/03/95 - AAF - Changed to play concatenated movies
+CatPlayr
+IS mNew, fileName --Creates a new instance of the XObject
+X mDispose --Disposes of XObject instance
+IIIIIIIIIS mPlay, movieOffset, startTime, duration, interruptable, horizontal, vertical, hideCursor, everyFrame, siblingWindowName --Plays QT
+
+
+-- QTCatMoviePlayer, QuickTime Player XObject - js 95.05.01
+IS mNew, fileName, -- Open movie and place at h,v
+X mDispose -- Dispose of movie and close file
+XIIIIIIIIS mPlay, filesOffset, startTime, duration, interruptable, h, v, hideCursor, playEveryFrame, windowName -- Play movie from start to end
+
+ */
+
+namespace Director {
+
+const char *QTCatMoviePlayerXObj::xlibName = "qtcatmovieplayerxobj";
+const char *QTCatMoviePlayerXObj::fileNames[] = {
+ "CATPLAYR", // Jewels of the Oracle - Win
+ "QTCatMoviePlayer.XObj", // Jewels of the Oracle - Mac
+ nullptr
+};
+
+static MethodProto xlibMethods[] = {
+ { "new", QTCatMoviePlayerXObj::m_new, 1, 1, 400 },
+ { "dispose", QTCatMoviePlayerXObj::m_dispose, 0, 0, 400 },
+ { "play", QTCatMoviePlayerXObj::m_play, 9, 9, 400 },
+ { nullptr, nullptr, 0, 0, 0 }
+};
+
+QTCatMoviePlayerXObject::QTCatMoviePlayerXObject(ObjectType ObjectType) :Object<QTCatMoviePlayerXObject>("QTCatMoviePlayerXObj") {
+ _objType = ObjectType;
+}
+
+void QTCatMoviePlayerXObj::open(int type) {
+ if (type == kXObj) {
+ QTCatMoviePlayerXObject::initMethods(xlibMethods);
+ QTCatMoviePlayerXObject *xobj = new QTCatMoviePlayerXObject(kXObj);
+ g_lingo->exposeXObject(xlibName, xobj);
+ } else if (type == kXtraObj) {
+ // TODO - Implement Xtra
+ }
+}
+
+void QTCatMoviePlayerXObj::close(int type) {
+ if (type == kXObj) {
+ QTCatMoviePlayerXObject::cleanupMethods();
+ g_lingo->_globalvars[xlibName] = Datum();
+ } else if (type == kXtraObj) {
+ // TODO - Implement Xtra
+ }
+}
+
+void QTCatMoviePlayerXObj::m_new(int nargs) {
+ if (nargs != 0) {
+ warning("QTCatMoviePlayerXObj::m_new: expected 0 arguments");
+ g_lingo->dropStack(nargs);
+ }
+ g_lingo->push(g_lingo->_state->me);
+}
+
+XOBJSTUBNR(QTCatMoviePlayerXObj::m_dispose)
+XOBJSTUB(QTCatMoviePlayerXObj::m_play, 0)
+
+}
diff --git a/engines/director/lingo/xlibs/qtcatmovieplayerxobj.h b/engines/director/lingo/xlibs/qtcatmovieplayerxobj.h
new file mode 100644
index 00000000000..5d05a225e0a
--- /dev/null
+++ b/engines/director/lingo/xlibs/qtcatmovieplayerxobj.h
@@ -0,0 +1,48 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef DIRECTOR_LINGO_XLIBS_QTCATMOVIEPLAYERXOBJ_H
+#define DIRECTOR_LINGO_XLIBS_QTCATMOVIEPLAYERXOBJ_H
+
+namespace Director {
+
+class QTCatMoviePlayerXObject : public Object<QTCatMoviePlayerXObject> {
+public:
+ QTCatMoviePlayerXObject(ObjectType objType);
+};
+
+namespace QTCatMoviePlayerXObj {
+
+extern const char *xlibName;
+extern const char *fileNames[];
+
+void open(int type);
+void close(int type);
+
+void m_new(int nargs);
+void m_dispose(int nargs);
+void m_play(int nargs);
+
+} // End of namespace QTCatMoviePlayerXObj
+
+} // End of namespace Director
+
+#endif
diff --git a/engines/director/module.mk b/engines/director/module.mk
index 47cc721bd1d..f473b5b6481 100644
--- a/engines/director/module.mk
+++ b/engines/director/module.mk
@@ -60,7 +60,9 @@ MODULE_OBJS = \
lingo/xlibs/blitpict.o \
lingo/xlibs/cdromxobj.o \
lingo/xlibs/colorxobj.o \
+ lingo/xlibs/colorcursorxobj.o \
lingo/xlibs/consumer.o \
+ lingo/xlibs/cursorxobj.o \
lingo/xlibs/darkenscreen.o \
lingo/xlibs/developerStack.o \
lingo/xlibs/dialogsxobj.o \
@@ -87,11 +89,15 @@ MODULE_OBJS = \
lingo/xlibs/jwxini.o \
lingo/xlibs/labeldrvxobj.o \
lingo/xlibs/maniacbg.o \
+ lingo/xlibs/mapnavigatorxobj.o \
+ lingo/xlibs/memcheckxobj.o \
lingo/xlibs/memoryxobj.o \
lingo/xlibs/misc.o \
lingo/xlibs/miscx.o \
+ lingo/xlibs/mmaskxobj.o \
lingo/xlibs/moovxobj.o \
lingo/xlibs/movemousexobj.o \
+ lingo/xlibs/movieidxxobj.o \
lingo/xlibs/movutils.o \
lingo/xlibs/orthoplayxobj.o \
lingo/xlibs/palxobj.o \
@@ -99,6 +105,7 @@ MODULE_OBJS = \
lingo/xlibs/porta.o \
lingo/xlibs/prefpath.o \
lingo/xlibs/printomatic.o \
+ lingo/xlibs/qtcatmovieplayerxobj.o \
lingo/xlibs/qtmovie.o \
lingo/xlibs/qtvr.o \
lingo/xlibs/quicktime.o \
More information about the Scummvm-git-logs
mailing list