SCI32: The view related functions pass a view object as parameter, and the engine should deduce the parameters it needs from that object. Added stub view functions based on that fact. Also, added a sanity check in kCelHigh and kCelWide
svn-id: r46527
This commit is contained in:
parent
f5d8bb1d5e
commit
69fa167902
4 changed files with 51 additions and 1 deletions
|
@ -342,6 +342,9 @@ SciKernelFunction kfunct_mappers[] = {
|
||||||
DEFUN("IsHiRes", kIsHiRes, ""),
|
DEFUN("IsHiRes", kIsHiRes, ""),
|
||||||
DEFUN("Array", kArray, ".*"),
|
DEFUN("Array", kArray, ".*"),
|
||||||
DEFUN("String", kString, ".*"),
|
DEFUN("String", kString, ".*"),
|
||||||
|
DEFUN("AddScreenItem", kAddScreenItem, "o"),
|
||||||
|
DEFUN("UpdateScreenItem", kUpdateScreenItem, "o"),
|
||||||
|
DEFUN("DeleteScreenItem", kDeleteScreenItem, "o"),
|
||||||
|
|
||||||
// SCI2.1 Kernel Functions
|
// SCI2.1 Kernel Functions
|
||||||
DEFUN("Save", kSave, ".*"),
|
DEFUN("Save", kSave, ".*"),
|
||||||
|
|
|
@ -395,6 +395,9 @@ reg_t kTextFonts(EngineState *s, int argc, reg_t *argv);
|
||||||
reg_t kIsHiRes(EngineState *s, int argc, reg_t *argv);
|
reg_t kIsHiRes(EngineState *s, int argc, reg_t *argv);
|
||||||
reg_t kArray(EngineState *s, int argc, reg_t *argv);
|
reg_t kArray(EngineState *s, int argc, reg_t *argv);
|
||||||
reg_t kString(EngineState *s, int argc, reg_t *argv);
|
reg_t kString(EngineState *s, int argc, reg_t *argv);
|
||||||
|
reg_t kAddScreenItem(EngineState *s, int argc, reg_t *argv);
|
||||||
|
reg_t kUpdateScreenItem(EngineState *s, int argc, reg_t *argv);
|
||||||
|
reg_t kDeleteScreenItem(EngineState *s, int argc, reg_t *argv);
|
||||||
|
|
||||||
// SCI2.1 Kernel Functions
|
// SCI2.1 Kernel Functions
|
||||||
reg_t kSave(EngineState *s, int argc, reg_t *argv);
|
reg_t kSave(EngineState *s, int argc, reg_t *argv);
|
||||||
|
|
|
@ -589,6 +589,46 @@ reg_t kSave(EngineState *s, int argc, reg_t *argv) {
|
||||||
return NULL_REG;
|
return NULL_REG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reg_t kAddScreenItem(EngineState *s, int argc, reg_t *argv) {
|
||||||
|
reg_t viewObj = argv[0];
|
||||||
|
int16 viewId = GET_SEL32V(s->_segMan, viewObj, view);
|
||||||
|
int16 loopNo = GET_SEL32V(s->_segMan, viewObj, loop);
|
||||||
|
int16 celNo = GET_SEL32V(s->_segMan, viewObj, cel);
|
||||||
|
//int16 leftPos = 0;
|
||||||
|
//int16 topPos = 0;
|
||||||
|
int16 priority = GET_SEL32V(s->_segMan, viewObj, priority);
|
||||||
|
//int16 control = 0;
|
||||||
|
warning("kAddScreenItem, view %d, loop %d, cel %d, pri %d", viewId, loopNo, celNo, priority);
|
||||||
|
//s->_gui->addToPicView(viewId, loopNo, celNo, leftPos, topPos, priority, control);
|
||||||
|
return NULL_REG;
|
||||||
|
}
|
||||||
|
|
||||||
|
reg_t kUpdateScreenItem(EngineState *s, int argc, reg_t *argv) {
|
||||||
|
reg_t viewObj = argv[0];
|
||||||
|
int16 viewId = GET_SEL32V(s->_segMan, viewObj, view);
|
||||||
|
int16 loopNo = GET_SEL32V(s->_segMan, viewObj, loop);
|
||||||
|
int16 celNo = GET_SEL32V(s->_segMan, viewObj, cel);
|
||||||
|
//int16 leftPos = 0;
|
||||||
|
//int16 topPos = 0;
|
||||||
|
int16 priority = GET_SEL32V(s->_segMan, viewObj, priority);
|
||||||
|
//int16 control = 0;
|
||||||
|
warning("kUpdateScreenItem, view %d, loop %d, cel %d, pri %d", viewId, loopNo, celNo, priority);
|
||||||
|
return NULL_REG;
|
||||||
|
}
|
||||||
|
|
||||||
|
reg_t kDeleteScreenItem(EngineState *s, int argc, reg_t *argv) {
|
||||||
|
reg_t viewObj = argv[0];
|
||||||
|
int16 viewId = GET_SEL32V(s->_segMan, viewObj, view);
|
||||||
|
int16 loopNo = GET_SEL32V(s->_segMan, viewObj, loop);
|
||||||
|
int16 celNo = GET_SEL32V(s->_segMan, viewObj, cel);
|
||||||
|
//int16 leftPos = 0;
|
||||||
|
//int16 topPos = 0;
|
||||||
|
int16 priority = GET_SEL32V(s->_segMan, viewObj, priority);
|
||||||
|
//int16 control = 0;
|
||||||
|
warning("kDeleteScreenItem, view %d, loop %d, cel %d, pri %d", viewId, loopNo, celNo, priority);
|
||||||
|
return NULL_REG;
|
||||||
|
}
|
||||||
|
|
||||||
} // End of namespace Sci
|
} // End of namespace Sci
|
||||||
|
|
||||||
#endif // ENABLE_SCI32
|
#endif // ENABLE_SCI32
|
||||||
|
|
|
@ -403,6 +403,8 @@ reg_t kIsItSkip(EngineState *s, int argc, reg_t *argv) {
|
||||||
|
|
||||||
reg_t kCelHigh(EngineState *s, int argc, reg_t *argv) {
|
reg_t kCelHigh(EngineState *s, int argc, reg_t *argv) {
|
||||||
GuiResourceId viewId = argv[0].toSint16();
|
GuiResourceId viewId = argv[0].toSint16();
|
||||||
|
if (viewId == -1) // Happens in SCI32
|
||||||
|
return NULL_REG;
|
||||||
int16 loopNo = argv[1].toSint16();
|
int16 loopNo = argv[1].toSint16();
|
||||||
int16 celNo = (argc >= 3) ? argv[2].toSint16() : 0;
|
int16 celNo = (argc >= 3) ? argv[2].toSint16() : 0;
|
||||||
|
|
||||||
|
@ -411,6 +413,8 @@ reg_t kCelHigh(EngineState *s, int argc, reg_t *argv) {
|
||||||
|
|
||||||
reg_t kCelWide(EngineState *s, int argc, reg_t *argv) {
|
reg_t kCelWide(EngineState *s, int argc, reg_t *argv) {
|
||||||
GuiResourceId viewId = argv[0].toSint16();
|
GuiResourceId viewId = argv[0].toSint16();
|
||||||
|
if (viewId == -1) // Happens in SCI32
|
||||||
|
return NULL_REG;
|
||||||
int16 loopNo = argv[1].toSint16();
|
int16 loopNo = argv[1].toSint16();
|
||||||
int16 celNo = (argc >= 3) ? argv[2].toSint16() : 0;
|
int16 celNo = (argc >= 3) ? argv[2].toSint16() : 0;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue