aboutsummaryrefslogtreecommitdiff
path: root/engines/illusions/talkresource.cpp
diff options
context:
space:
mode:
authorjohndoe1232014-12-02 15:43:28 +0100
committerEugene Sandulenko2018-07-20 06:43:33 +0000
commita173329ae9ed9c666d998553e6e414a258231436 (patch)
tree03a3c2265d41c6e1f07ba828c76222c020c5d92d /engines/illusions/talkresource.cpp
parentfaf7b31ff802786ded2bd177da6503e98fca3ebf (diff)
downloadscummvm-rg350-a173329ae9ed9c666d998553e6e414a258231436.tar.gz
scummvm-rg350-a173329ae9ed9c666d998553e6e414a258231436.tar.bz2
scummvm-rg350-a173329ae9ed9c666d998553e6e414a258231436.zip
ILLUSIONS: Move resource-related files into resources subdirectory
Diffstat (limited to 'engines/illusions/talkresource.cpp')
-rw-r--r--engines/illusions/talkresource.cpp174
1 files changed, 0 insertions, 174 deletions
diff --git a/engines/illusions/talkresource.cpp b/engines/illusions/talkresource.cpp
deleted file mode 100644
index 17672bae2a..0000000000
--- a/engines/illusions/talkresource.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-
-#include "illusions/illusions.h"
-#include "illusions/talkresource.h"
-#include "illusions/dictionary.h"
-
-namespace Illusions {
-
-// TalkResourceLoader
-
-void TalkResourceLoader::load(Resource *resource) {
- resource->_instance = _vm->_talkItems->createTalkInstance(resource);
-}
-
-void TalkResourceLoader::buildFilename(Resource *resource) {
- resource->_filename = Common::String::format("%08X.tlk", resource->_resId);
-}
-
-bool TalkResourceLoader::isFlag(int flag) {
- return
- flag == kRlfLoadFile;
-}
-
-// TalkEntry
-
-void TalkEntry::load(byte *dataStart, Common::SeekableReadStream &stream) {
- _talkId = stream.readUint32LE();
- stream.readUint32LE(); // Skip unknown
- uint32 textOffs = stream.readUint32LE();
- uint32 tblOffs = stream.readUint32LE();
- uint32 voiceNameOffs = stream.readUint32LE();
- _text = dataStart + textOffs;
- _tblPtr = dataStart + tblOffs;
- _voiceName = dataStart + voiceNameOffs;
- debug(0, "TalkEntry::load() _talkId: %08X; textOffs: %08X; tblOffs: %08X; voiceNameOffs: %08X",
- _talkId, textOffs, tblOffs, voiceNameOffs);
-}
-
-// TalkResource
-
-TalkResource::TalkResource()
- : _talkEntriesCount(0), _talkEntries(0) {
-}
-
-TalkResource::~TalkResource() {
- delete[] _talkEntries;
-}
-
-void TalkResource::load(byte *data, uint32 dataSize) {
- Common::MemoryReadStream stream(data, dataSize, DisposeAfterUse::NO);
- stream.skip(4); // Skip size
- _talkEntriesCount = stream.readUint16LE();
- stream.skip(2); // Skip padding
- _talkEntries = new TalkEntry[_talkEntriesCount];
- for (uint i = 0; i < _talkEntriesCount; ++i) {
- stream.seek(8 + i * 0x14);
- _talkEntries[i].load(data, stream);
- }
-}
-
-// TalkInstance
-
-TalkInstance::TalkInstance(IllusionsEngine *vm)
- : _vm(vm), _pauseCtr(0) {
-}
-
-void TalkInstance::load(Resource *resource) {
- TalkResource *talkResource = new TalkResource();
- talkResource->load(resource->_data, resource->_dataSize);
- _talkRes = talkResource;
- _talkId = resource->_resId;
- _tag = resource->_tag;
- registerResources();
-}
-
-void TalkInstance::unload() {
- unregisterResources();
- _vm->_talkItems->removeTalkInstance(this);
- delete _talkRes;
-}
-
-void TalkInstance::pause() {
- ++_pauseCtr;
- if (_pauseCtr == 1)
- unregisterResources();
-}
-
-void TalkInstance::unpause() {
- --_pauseCtr;
- if (_pauseCtr == 0)
- registerResources();
-}
-
-void TalkInstance::registerResources() {
- for (uint i = 0; i < _talkRes->_talkEntriesCount; ++i) {
- TalkEntry *talkEntry = &_talkRes->_talkEntries[i];
- _vm->_dict->addTalkEntry(talkEntry->_talkId, talkEntry);
- }
-}
-
-void TalkInstance::unregisterResources() {
- for (uint i = 0; i < _talkRes->_talkEntriesCount; ++i) {
- TalkEntry *talkEntry = &_talkRes->_talkEntries[i];
- _vm->_dict->removeTalkEntry(talkEntry->_talkId);
- }
-}
-
-// TalkInstanceList
-
-TalkInstanceList::TalkInstanceList(IllusionsEngine *vm)
- : _vm(vm) {
-}
-
-TalkInstanceList::~TalkInstanceList() {
-}
-
-TalkInstance *TalkInstanceList::createTalkInstance(Resource *resource) {
- TalkInstance *talkInstance = new TalkInstance(_vm);
- talkInstance->load(resource);
- _items.push_back(talkInstance);
- return talkInstance;
-}
-
-void TalkInstanceList::removeTalkInstance(TalkInstance *talkInstance) {
- _items.remove(talkInstance);
-}
-
-TalkInstance *TalkInstanceList::findTalkItem(uint32 talkId) {
- for (ItemsIterator it = _items.begin(); it != _items.end(); ++it)
- if ((*it)->_talkId == talkId)
- return (*it);
- return 0;
-}
-
-TalkInstance *TalkInstanceList::findTalkItemByTag(uint32 tag) {
- for (ItemsIterator it = _items.begin(); it != _items.end(); ++it)
- if ((*it)->_tag == tag)
- return (*it);
- return 0;
-}
-
-void TalkInstanceList::pauseByTag(uint32 tag) {
- TalkInstance *talkInstance = findTalkItemByTag(tag);
- if (talkInstance)
- talkInstance->pause();
-}
-
-void TalkInstanceList::unpauseByTag(uint32 tag) {
- TalkInstance *talkInstance = findTalkItemByTag(tag);
- if (talkInstance)
- talkInstance->unpause();
-}
-
-} // End of namespace Illusions