aboutsummaryrefslogtreecommitdiff
path: root/engines/teenagent/teenagent.cpp
diff options
context:
space:
mode:
authorVladimir Menshakov2010-01-02 22:30:43 +0000
committerVladimir Menshakov2010-01-02 22:30:43 +0000
commit09a197d125b92035db7bbc487cd29f3fea40d998 (patch)
tree2775d4f4553521525ba5c907a5914e40fe02597f /engines/teenagent/teenagent.cpp
parentbaf8575e36badf6d8379087e4fc7b2a2cc7b42ad (diff)
downloadscummvm-rg350-09a197d125b92035db7bbc487cd29f3fea40d998.tar.gz
scummvm-rg350-09a197d125b92035db7bbc487cd29f3fea40d998.tar.bz2
scummvm-rg350-09a197d125b92035db7bbc487cd29f3fea40d998.zip
added unlogic logo
svn-id: r46903
Diffstat (limited to 'engines/teenagent/teenagent.cpp')
-rw-r--r--engines/teenagent/teenagent.cpp80
1 files changed, 71 insertions, 9 deletions
diff --git a/engines/teenagent/teenagent.cpp b/engines/teenagent/teenagent.cpp
index f709ce332b..ab97233052 100644
--- a/engines/teenagent/teenagent.cpp
+++ b/engines/teenagent/teenagent.cpp
@@ -22,21 +22,21 @@
* $Id$
*/
-#include "teenagent/teenagent.h"
-#include "common/system.h"
-#include "common/events.h"
+#include "common/config-manager.h"
#include "common/debug.h"
+#include "common/events.h"
#include "common/savefile.h"
-#include "common/config-manager.h"
+#include "common/system.h"
#include "engines/advancedDetector.h"
#include "sound/mixer.h"
+#include "graphics/cursorman.h"
#include "graphics/thumbnail.h"
-#include "teenagent/scene.h"
-#include "teenagent/objects.h"
-#include "teenagent/music.h"
#include "teenagent/console.h"
-
-#include "graphics/cursorman.h"
+#include "teenagent/music.h"
+#include "teenagent/objects.h"
+#include "teenagent/pack.h"
+#include "teenagent/scene.h"
+#include "teenagent/teenagent.h"
namespace TeenAgent {
@@ -244,6 +244,66 @@ Common::Error TeenAgentEngine::saveGameState(int slot, const char *desc) {
return Common::kNoError;
}
+bool TeenAgentEngine::showLogo(const Common::String &name) {
+ Pack logo;
+ if (!logo.open(name))
+ return true;
+
+ Common::EventManager *_event = _system->getEventManager();
+
+ byte bg[0xfa00];
+ byte palette[0x400];
+
+ Common::SeekableReadStream *frame = logo.getStream(1);
+ if (frame == NULL)
+ return true;
+
+ frame->read(bg, sizeof(bg));
+ memset(palette, 0, sizeof(palette));
+
+ for(uint c = 0; c < 0x100; ++c) {
+ uint idx = c * 4;
+ frame->read(palette + idx, 3);
+ palette[idx] *= 4;
+ palette[idx + 1] *= 4;
+ palette[idx + 2] *= 4;
+ }
+ _system->setPalette(palette, 0, 0x100);
+
+ uint n = logo.files_count();
+ for(uint f = 0; f < 4; ++f)
+ for(uint i = 2; i <= n; ++i) {
+ _system->copyRectToScreen(bg, 320, 0, 0, 320, 200);
+
+ frame = logo.getStream(i);
+ if (frame == NULL)
+ return true;
+
+ Common::Event event;
+ while (_event->pollEvent(event)) {
+ switch(event.type) {
+ case Common::EVENT_RTL:
+ return false;
+ case Common::EVENT_LBUTTONDOWN:
+ case Common::EVENT_RBUTTONDOWN:
+ case Common::EVENT_KEYDOWN:
+ return true;
+ default: ;
+ }
+ }
+ Surface s;
+ s.load(frame, Surface::kTypeOns);
+ if (s.empty())
+ return true;
+
+ _system->copyRectToScreen((const byte *)s.pixels, s.w, s.x, s.y, s.w, s.h);
+ _system->updateScreen();
+
+ _system->delayMillis(100);
+ }
+ return true;
+}
+
Common::Error TeenAgentEngine::run() {
Resources *res = Resources::instance();
if (!res->loadArchives(_gameDescription))
@@ -252,6 +312,8 @@ Common::Error TeenAgentEngine::run() {
Common::EventManager *_event = _system->getEventManager();
initGraphics(320, 200, false);
+ if (!showLogo("unlogic.res"))
+ return Common::kNoError;
scene = new Scene;
inventory = new Inventory;