aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics/gui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/graphics/gui.cpp')
-rw-r--r--engines/sci/graphics/gui.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/engines/sci/graphics/gui.cpp b/engines/sci/graphics/gui.cpp
index 04b8a75fc0..7228ae925a 100644
--- a/engines/sci/graphics/gui.cpp
+++ b/engines/sci/graphics/gui.cpp
@@ -863,6 +863,39 @@ void SciGui::portraitShow(Common::String resourceName, Common::Point position, u
void SciGui::portraitUnload(uint16 portraitId) {
}
+void SciGui::startPalVary(uint16 paletteId, uint16 ticks) {
+ if (_palVaryId >= 0) // another palvary is taking place, return
+ return;
+
+ _palVaryId = paletteId;
+ _palVaryStart = g_system->getMillis();
+ _palVaryEnd = _palVaryStart + ticks * 1000 / 60;
+ ((SciEngine*)g_engine)->getTimerManager()->installTimerProc(&palVaryCallback, 1000 / 60, this);
+}
+
+void SciGui::togglePalVary(bool pause) {
+ // this call is actually counting states, so calling this 3 times with true will require calling it later
+ // 3 times with false to actually remove pause
+
+ // TODO
+}
+
+void SciGui::stopPalVary() {
+ ((SciEngine*)g_engine)->getTimerManager()->removeTimerProc(&palVaryCallback);
+ _palVaryId = -1; // invalidate the target palette
+
+ // HACK: just set the target palette
+ _palette->setFromResource(_palVaryId, 2);
+}
+
+void SciGui::palVaryCallback(void *refCon) {
+ ((SciGui *)refCon)->doPalVary();
+}
+
+void SciGui::doPalVary() {
+ // TODO: do palette transition here...
+}
+
#ifdef ENABLE_SCI32
void SciGui::addScreenItem(reg_t object) {
_screenItems.push_back(object);