From 0fc3e909749f3d1af3e617fbcbc83c3f7819c392 Mon Sep 17 00:00:00 2001 From: Borja Lorente Date: Fri, 17 Jun 2016 20:46:22 +0200 Subject: MACVENTURE: Small fixed --- engines/macventure/image.h | 19 +++++++++++++++---- engines/macventure/macventure.cpp | 4 ++++ engines/macventure/macventure.h | 5 ++++- engines/macventure/script.h | 24 +++++++++++++++++++++++- engines/macventure/text.cpp | 23 ++++++++++++++--------- engines/macventure/text.h | 1 + 6 files changed, 61 insertions(+), 15 deletions(-) (limited to 'engines') diff --git a/engines/macventure/image.h b/engines/macventure/image.h index 5bf6ccf7ac..4cc40f1ed0 100644 --- a/engines/macventure/image.h +++ b/engines/macventure/image.h @@ -27,12 +27,23 @@ namespace MacVenture { -class Image { +class ImageAsset { public: - Image(); - ~Image(); + ImageAsset(ObjID id, Container *container) { + _id = id; + _container = container; + } + ~ImageAsset() { - void blit(Graphics::ManagedSurface *target); + } + + void blit(Graphics::ManagedSurface *target) { + debug("Blitting image %x ", _id); + } + +private: + ObjID _id; + Container *_container; }; } // End of namespace MacVenture diff --git a/engines/macventure/macventure.cpp b/engines/macventure/macventure.cpp index 2054c5eab6..da192628fe 100644 --- a/engines/macventure/macventure.cpp +++ b/engines/macventure/macventure.cpp @@ -59,6 +59,9 @@ MacVentureEngine::~MacVentureEngine() { if (_filenames) delete _filenames; + if (_decodingArticles) + delete _decodingArticles; + if (_textHuffman) delete _textHuffman; } @@ -84,6 +87,7 @@ Common::Error MacVentureEngine::run() { _oldTextEncoding = !loadTextHuffman(); _filenames = new StringTable(this, _resourceManager, kFilenamesStringTableID); + _decodingArticles = new StringTable(this, _resourceManager, kCommonArticlesStringTableID); // Big class instantiation _gui = new Gui(this, _resourceManager); diff --git a/engines/macventure/macventure.h b/engines/macventure/macventure.h index 656aeaf2b6..a4340bf2bc 100644 --- a/engines/macventure/macventure.h +++ b/engines/macventure/macventure.h @@ -192,10 +192,13 @@ private: // Attributes World *_world; ScriptEngine *_scriptEngine; + // String tables + StringTable *_filenames; + StringTable *_decodingArticles; + // Engine state GameState _gameState; GlobalSettings _globalSettings; - StringTable *_filenames; HuffmanLists *_textHuffman; bool _oldTextEncoding; bool _paused, _halted, _cmdReady, _prepared; diff --git a/engines/macventure/script.h b/engines/macventure/script.h index 66376924b0..9814c01ad4 100644 --- a/engines/macventure/script.h +++ b/engines/macventure/script.h @@ -24,6 +24,7 @@ #define MACVENTURE_SCRIPT_H #include "macventure/macventure.h" +#include "macventure/container.h" namespace MacVenture { @@ -47,7 +48,28 @@ enum ControlAction { }; typedef uint32 ObjID; - + +class ScriptAsset { +public: + ScriptAsset(ObjID id, Container *container, MacVentureEngine *engine) { + _id = id; + _container = container; + _engine = engine; + } + ~ScriptAsset() { + + } + + void execute() { + debug("SCRIPT: Executing script %x ", _id); + } + +private: + ObjID _id; + Container *_container; + MacVentureEngine *_engine; +}; + class ScriptEngine { public: ScriptEngine() {} diff --git a/engines/macventure/text.cpp b/engines/macventure/text.cpp index adac94bdd2..49df7ed9a0 100644 --- a/engines/macventure/text.cpp +++ b/engines/macventure/text.cpp @@ -27,8 +27,9 @@ TextAsset::TextAsset(ObjID objid, Container *container, bool isOld, const Huffma _id = objid; _container = container; _huffman = huffman; + _isOld = isOld; - if (isOld) { + if (_isOld) { decodeOld(); } else { @@ -99,7 +100,7 @@ void TextAsset::decodeOld() { } void TextAsset::decodeHuffman() { - _decoded = Common::String("Huffman string"); + _decoded = Common::String(""); Common::SeekableReadStream *res = _container->getItem(_id); Common::BitStream32BEMSB stream(res); uint16 strLen = 0; @@ -110,7 +111,6 @@ void TextAsset::decodeHuffman() { strLen = stream.getBits(7); } - char* str = new char[strLen + 1]; uint32 mask = 0; uint32 symbol = 0; char c; @@ -130,17 +130,22 @@ void TextAsset::decodeHuffman() { c = stream.getBits(7); } else if (symbol == 2) { // Composite - warning("Composite huffman strings not implemented"); + warning("Composite huffman strings not tested"); + if (stream.getBit()) { // TextID + ObjID embedId = stream.getBits(15); + TextAsset embedded(embedId, _container, _isOld, _huffman); + _decoded += *embedded.decode(); + } else { //Composite obj string + _decoded += Common::String("Unimplemented"); + } } else { // Plain ascii c = symbol & 0xFF; } - str[i] = c; + _decoded += c; } - - str[strLen] = '\0'; - debug(7, "Decoded %d'th string (new): %s", _id, str); - _decoded = Common::String(str); + _decoded += '\0'; + debug(7, "Decoded %d'th string (new): %s", _id, _decoded.c_str()); } } // End of namespace MacVenture \ No newline at end of file diff --git a/engines/macventure/text.h b/engines/macventure/text.h index 3b3af926be..cfe76d6e11 100644 --- a/engines/macventure/text.h +++ b/engines/macventure/text.h @@ -46,6 +46,7 @@ private: Container *_container; ObjID _id; const HuffmanLists *_huffman; + bool _isOld; Common::String _decoded; -- cgit v1.2.3