MACVENTURE: Border Loading code

This commit is contained in:
Borja Lorente 2016-06-05 21:34:23 +02:00
parent 6f5997fec6
commit 322836699a
2 changed files with 51 additions and 8 deletions

View File

@ -25,6 +25,10 @@
#include "common/debug.h"
#include "common/error.h"
// For border loading, should be gone later
#include "common/file.h"
#include "image/bmp.h"
#include "engines/util.h"
#include "macventure/macventure.h"
@ -60,14 +64,8 @@ Common::Error MacVentureEngine::run() {
_screen.create(kScreenWidth, kScreenHeight, Graphics::PixelFormat::createFormatCLUT8());
_wm = new Graphics::MacWindowManager();
_wm->setScreen(&_screen);
_screen.fillRect(Common::Rect(0, 0, _screen.w, _screen.h), Graphics::kColorWhite);
Graphics::MacWindow *w = _wm->addWindow(false, true, true);
w->setDimensions(Common::Rect(100, 100));
initGUI();
// Your main even loop should be (invoked from) here.
debug("MacVentureEngine::go: Hello, World!");
@ -98,4 +96,46 @@ void MacVentureEngine::processEvents() {
}
}
void MacVentureEngine::initGUI() {
_wm = new Graphics::MacWindowManager();
_wm->setScreen(&_screen);
Graphics::MacWindow *w = _wm->addWindow(false, true, true);
w->setDimensions(Common::Rect(100, 100));
w->setActive(false);
loadBorder(w, "border_inac.bmp", false);
}
void MacVentureEngine::loadBorder(Graphics::MacWindow *target, Common::String filename, bool active) {
Common::File borderfile;
if (!borderfile.open(filename)) {
debug(1, "Cannot open border file");
return;
}
Image::BitmapDecoder bmpDecoder;
Common::SeekableReadStream *stream = borderfile.readStream(borderfile.size());
Graphics::Surface source;
Graphics::TransparentSurface *surface = new Graphics::TransparentSurface();
if (stream) {
debug(4, "Loading %s border from %s", (active ? "active" : "inactive"), filename);
bmpDecoder.loadStream(*stream);
source = *(bmpDecoder.getSurface());
source.convertToInPlace(surface->getSupportedPixelFormat(), bmpDecoder.getPalette());
surface->create(source.w, source.h, source.format);
surface->copyFrom(source);
surface->applyColorKey(255, 0, 255, false);
target->setBorder(*surface, active);
borderfile.close();
delete stream;
}
}
} // End of namespace MacVenture

View File

@ -62,6 +62,9 @@ public:
private:
void processEvents();
void initGUI();
void loadBorder(Graphics::MacWindow * target, Common::String filename, bool active);
private:
const ADGameDescription *_gameDescription;
Common::RandomSource *_rnd;