diff options
Diffstat (limited to 'engines/macventure/gui.cpp')
-rw-r--r-- | engines/macventure/gui.cpp | 54 |
1 files changed, 32 insertions, 22 deletions
diff --git a/engines/macventure/gui.cpp b/engines/macventure/gui.cpp index d43be9b269..e0fcc5d691 100644 --- a/engines/macventure/gui.cpp +++ b/engines/macventure/gui.cpp @@ -174,6 +174,7 @@ void Gui::setWindowTitle(WindowReference winID, Common::String string) { void Gui::updateWindowInfo(WindowReference ref, ObjID objID, const Common::Array<ObjID> &children) { WindowData &data = findWindowData(ref); data.children.clear(); + data.objRef = objID; uint32 originx = 0x7fff; uint32 originy = 0x7fff; for (uint i = 0; i < children.size(); i++) { @@ -224,6 +225,8 @@ void Gui::initGUI() { initWindows(); + assignObjReferences(); + if (!loadControls()) error("Could not load controls"); @@ -238,43 +241,47 @@ void Gui::initWindows() { _controlsWindow->setDimensions(getWindowData(kCommandsWindow).bounds); _controlsWindow->setActive(false); _controlsWindow->setCallback(commandsWindowCallback, this); - loadBorder(_controlsWindow, "border_command.bmp", false); - loadBorder(_controlsWindow, "border_command.bmp", true); + //loadBorder(_controlsWindow, "border_command.bmp", false); + //loadBorder(_controlsWindow, "border_command.bmp", true); // Main Game Window _mainGameWindow = _wm.addWindow(false, false, false); _mainGameWindow->setDimensions(getWindowData(kMainGameWindow).bounds); _mainGameWindow->setActive(false); _mainGameWindow->setCallback(mainGameWindowCallback, this); - loadBorder(_mainGameWindow, "border_no_scroll_inac.bmp", false); - loadBorder(_mainGameWindow, "border_no_scroll_act.bmp", true); - findWindowData(kMainGameWindow).objRef = 3; + //loadBorder(_mainGameWindow, "border_no_scroll_inac.bmp", false); + //loadBorder(_mainGameWindow, "border_no_scroll_act.bmp", true); // In-game Output Console _outConsoleWindow = _wm.addWindow(false, true, true); _outConsoleWindow->setDimensions(Common::Rect(20, 20, 120, 120)); _outConsoleWindow->setActive(false); _outConsoleWindow->setCallback(outConsoleWindowCallback, this); - loadBorder(_outConsoleWindow, "border_left_scroll_inac.bmp", false); - loadBorder(_outConsoleWindow, "border_left_scroll_inac.bmp", true); + //loadBorder(_outConsoleWindow, "border_left_scroll_inac.bmp", false); + //loadBorder(_outConsoleWindow, "border_left_scroll_inac.bmp", true); // Self Window _selfWindow = _wm.addWindow(false, true, true); _selfWindow->setDimensions(getWindowData(kSelfWindow).bounds); _selfWindow->setActive(false); _selfWindow->setCallback(selfWindowCallback, this); - loadBorder(_selfWindow, "border_no_scroll_inac.bmp", false); - loadBorder(_selfWindow, "border_no_scroll_inac.bmp", true); - findWindowData(kMainGameWindow).objRef = 0; + //loadBorder(_selfWindow, "border_no_scroll_inac.bmp", false); + //loadBorder(_selfWindow, "border_no_scroll_inac.bmp", true); // Exits Window _exitsWindow = _wm.addWindow(false, true, true); _exitsWindow->setDimensions(getWindowData(kExitsWindow).bounds); _exitsWindow->setActive(false); _exitsWindow->setCallback(exitsWindowCallback, this); - loadBorder(_exitsWindow, "border_no_scroll_inac.bmp", false); - loadBorder(_exitsWindow, "border_no_scroll_act.bmp", true); + //loadBorder(_exitsWindow, "border_no_scroll_inac.bmp", false); + //loadBorder(_exitsWindow, "border_no_scroll_act.bmp", true); + + +} +void Gui::assignObjReferences() { + + findWindowData(kSelfWindow).objRef = 0; } @@ -282,7 +289,7 @@ WindowReference Gui::createInventoryWindow(ObjID objRef) { Graphics::MacWindow *newWindow = _wm.addWindow(true, true, true); WindowData newData; GlobalSettings settings = _engine->getGlobalSettings(); - newData.refcon = (WindowReference)ABS(_inventoryWindows.size()); // This is a hack + newData.refcon = (WindowReference)ABS(_inventoryWindows.size()); // This is a HACK if (_windowData->back().refcon < 0x80) { // There is already another inventory window newData.bounds = _windowData->back().bounds; // Inventory windows are always last @@ -303,8 +310,8 @@ WindowReference Gui::createInventoryWindow(ObjID objRef) { newWindow->setDimensions(newData.bounds); newWindow->setCallback(inventoryWindowCallback, this); - loadBorder(newWindow, "border_no_scroll_inac.bmp", false); - loadBorder(newWindow, "border_no_scroll_act.bmp", true); + //loadBorder(newWindow, "border_no_scroll_inac.bmp", false); + //loadBorder(newWindow, "border_no_scroll_act.bmp", true); _inventoryWindows.push_back(newWindow); debug("Create new inventory window. Reference: %d", newData.refcon); @@ -587,7 +594,7 @@ void Gui::drawExitsWindow() { srf->w + border.rightOffset, srf->h + border.bottomOffset), kColorWhite); - drawObjectsInWindow(kExitsWindow, _exitsWindow->getSurface()); + drawObjectsInWindow(kMainGameWindow, _exitsWindow->getSurface()); } void Gui::drawObjectsInWindow(WindowReference target, Graphics::ManagedSurface * surface) { @@ -792,12 +799,6 @@ void Gui::updateWindow(WindowReference winID, bool containerOpen) { it->unselect(); } } - if (winID == kMainGameWindow) { - drawMainGameWindow(); - } else { - Graphics::MacWindow *winRef = findWindow(winID); - winRef->getSurface()->fillRect(data.bounds, kColorGray); - } Common::Array<DrawableObject> &children = data.children; for (uint i = 0; i < children.size(); i++) { uint flag = 0; @@ -812,8 +813,17 @@ void Gui::updateWindow(WindowReference winID, bool containerOpen) { mode = kBlitOR; } children[i] = DrawableObject(child, mode); + } else { + children[i] = DrawableObject(child, kBlitXOR); } } + if (winID == kMainGameWindow) { + drawMainGameWindow(); + } + else { + Graphics::MacWindow *winRef = findWindow(winID); + winRef->getSurface()->fillRect(data.bounds, kColorGray); + } if (data.type == kZoomDoc && data.updateScroll) { warning("Unimplemented: update scroll"); } |