[Scummvm-cvs-logs] SF.net SVN: scummvm:[47799] scummvm/trunk/engines/sci
thebluegr at users.sourceforge.net
thebluegr at users.sourceforge.net
Mon Feb 1 18:04:21 CET 2010
Revision: 47799
http://scummvm.svn.sourceforge.net/scummvm/?rev=47799&view=rev
Author: thebluegr
Date: 2010-02-01 17:04:20 +0000 (Mon, 01 Feb 2010)
Log Message:
-----------
Added an initial implementation of kGetHighPlanePri
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/kernel.cpp
scummvm/trunk/engines/sci/engine/kernel.h
scummvm/trunk/engines/sci/engine/kernel32.cpp
scummvm/trunk/engines/sci/graphics/gui32.cpp
scummvm/trunk/engines/sci/graphics/gui32.h
Modified: scummvm/trunk/engines/sci/engine/kernel.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.cpp 2010-02-01 16:58:17 UTC (rev 47798)
+++ scummvm/trunk/engines/sci/engine/kernel.cpp 2010-02-01 17:04:20 UTC (rev 47799)
@@ -348,6 +348,7 @@
DEFUN("DeletePlane", kDeletePlane, "o"),
DEFUN("UpdatePlane", kUpdatePlane, "o"),
DEFUN("RepaintPlane", kRepaintPlane, "o"),
+ DEFUN("GetHighPlanePri", kGetHighPlanePri, ""),
DEFUN("FrameOut", kFrameOut, ""),
DEFUN("ListEachElementDo", kListEachElementDo, "li.*"),
DEFUN("ListFirstTrue", kListFirstTrue, "li.*"),
Modified: scummvm/trunk/engines/sci/engine/kernel.h
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.h 2010-02-01 16:58:17 UTC (rev 47798)
+++ scummvm/trunk/engines/sci/engine/kernel.h 2010-02-01 17:04:20 UTC (rev 47799)
@@ -413,6 +413,7 @@
reg_t kDeletePlane(EngineState *s, int argc, reg_t *argv);
reg_t kUpdatePlane(EngineState *s, int argc, reg_t *argv);
reg_t kRepaintPlane(EngineState *s, int argc, reg_t *argv);
+reg_t kGetHighPlanePri(EngineState *s, int argc, reg_t *argv);
reg_t kFrameOut(EngineState *s, int argc, reg_t *argv);
reg_t kListIndexOf(EngineState *s, int argc, reg_t *argv);
reg_t kListEachElementDo(EngineState *s, int argc, reg_t *argv);
Modified: scummvm/trunk/engines/sci/engine/kernel32.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel32.cpp 2010-02-01 16:58:17 UTC (rev 47798)
+++ scummvm/trunk/engines/sci/engine/kernel32.cpp 2010-02-01 17:04:20 UTC (rev 47799)
@@ -721,6 +721,11 @@
return NULL_REG;
}
+reg_t kGetHighPlanePri(EngineState *s, int argc, reg_t *argv) {
+ warning("kGetHighPlanePri: %d", s->_gui32->getHighPlanePri());
+ return make_reg(0, s->_gui32->getHighPlanePri());
+}
+
reg_t kFrameOut(EngineState *s, int argc, reg_t *argv) {
// This kernel call likely seems to be doing the screen updates,
// as its called right after a view is updated
Modified: scummvm/trunk/engines/sci/graphics/gui32.cpp
===================================================================
--- scummvm/trunk/engines/sci/graphics/gui32.cpp 2010-02-01 16:58:17 UTC (rev 47798)
+++ scummvm/trunk/engines/sci/graphics/gui32.cpp 2010-02-01 17:04:20 UTC (rev 47799)
@@ -44,7 +44,7 @@
namespace Sci {
SciGui32::SciGui32(EngineState *state, GfxScreen *screen, GfxPalette *palette, GfxCache *cache, Cursor *cursor)
- : _s(state), _screen(screen), _palette(palette), _cache(cache), _cursor(cursor) {
+ : _s(state), _screen(screen), _palette(palette), _cache(cache), _cursor(cursor), _highPlanePri(0) {
_compare = new GfxCompare(_s->_segMan, _s->_kernel, _cache, _screen);
}
@@ -231,6 +231,9 @@
void SciGui32::addPlane(reg_t object) {
_planes.push_back(object);
+ byte planePri = GET_SEL32V(_s->_segMan, object, priority) & 0xF;
+ if (planePri > _highPlanePri)
+ _highPlanePri = planePri;
}
void SciGui32::updatePlane(reg_t object) {
@@ -240,9 +243,18 @@
for (uint32 planeNr = 0; planeNr < _planes.size(); planeNr++) {
if (_planes[planeNr] == object) {
_planes.remove_at(planeNr);
- return;
+ break;
}
}
+
+ // Recalculate highPlanePri
+ _highPlanePri = 0;
+
+ for (uint32 planeNr = 0; planeNr < _planes.size(); planeNr++) {
+ byte planePri = GET_SEL32V(_s->_segMan, _planes[planeNr], priority) & 0xF;
+ if (planePri > _highPlanePri)
+ _highPlanePri = planePri;
+ }
}
void SciGui32::frameOut() {
Modified: scummvm/trunk/engines/sci/graphics/gui32.h
===================================================================
--- scummvm/trunk/engines/sci/graphics/gui32.h 2010-02-01 16:58:17 UTC (rev 47798)
+++ scummvm/trunk/engines/sci/graphics/gui32.h 2010-02-01 17:04:20 UTC (rev 47799)
@@ -69,6 +69,7 @@
void addPlane(reg_t object);
void updatePlane(reg_t object);
void deletePlane(reg_t object);
+ byte getHighPlanePri() { return _highPlanePri; }
void frameOut();
void globalToLocal(int16 *x, int16 *y, reg_t planeObj);
void localToGlobal(int16 *x, int16 *y, reg_t planeObj);
@@ -91,6 +92,7 @@
private:
Common::Array<reg_t> _screenItems;
Common::Array<reg_t> _planes;
+ byte _highPlanePri;
};
} // End of namespace Sci
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list