diff options
Diffstat (limited to 'engines')
-rwxr-xr-x | engines/pegasus/Game_Shell/CInventory.cpp | 175 | ||||
-rwxr-xr-x | engines/pegasus/Game_Shell/CItem.cpp | 111 | ||||
-rwxr-xr-x | engines/pegasus/MMShell/Utilities/MMIDObject.h | 14 | ||||
-rwxr-xr-x | engines/pegasus/gamestate.cpp | 8 | ||||
-rwxr-xr-x | engines/pegasus/gamestate.h | 6 | ||||
-rwxr-xr-x | engines/pegasus/items/inventory.cpp | 175 | ||||
-rwxr-xr-x | engines/pegasus/items/inventory.h (renamed from engines/pegasus/Game_Shell/CInventory.h) | 58 | ||||
-rwxr-xr-x | engines/pegasus/items/item.cpp | 111 | ||||
-rwxr-xr-x | engines/pegasus/items/item.h (renamed from engines/pegasus/Game_Shell/CItem.h) | 48 | ||||
-rwxr-xr-x | engines/pegasus/items/itemlist.cpp (renamed from engines/pegasus/Game_Shell/CItemList.cpp) | 28 | ||||
-rwxr-xr-x | engines/pegasus/items/itemlist.h (renamed from engines/pegasus/Game_Shell/CItemList.h) | 22 | ||||
-rw-r--r-- | engines/pegasus/menu.cpp | 15 | ||||
-rw-r--r-- | engines/pegasus/module.mk | 8 | ||||
-rwxr-xr-x | engines/pegasus/sound.cpp (renamed from engines/pegasus/MMShell/Sounds/MMSound.cpp) | 56 | ||||
-rwxr-xr-x | engines/pegasus/sound.h (renamed from engines/pegasus/MMShell/Sounds/MMSound.h) | 30 |
15 files changed, 432 insertions, 433 deletions
diff --git a/engines/pegasus/Game_Shell/CInventory.cpp b/engines/pegasus/Game_Shell/CInventory.cpp deleted file mode 100755 index 64e62b4406..0000000000 --- a/engines/pegasus/Game_Shell/CInventory.cpp +++ /dev/null @@ -1,175 +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. - * - * Additional copyright for this file: - * Copyright (C) 1995-1997 Presto Studios, Inc. - * - * 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 "pegasus/constants.h" -#include "pegasus/Game_Shell/CItem.h" -#include "pegasus/Game_Shell/CInventory.h" - -namespace Pegasus { - -CInventory::CInventory() { - fWeightLimit = 100; - fOwnerID = kNoActorID; - fReferenceCount = 0; -} - -CInventory::~CInventory() { -} - -void CInventory::SetWeightLimit(tWeightType limit) { - fWeightLimit = limit; - // *** What to do if the new weight limit is greater than the current weight? -} - -tWeightType CInventory::GetWeight() { - tWeightType result = 0; - - for (CItemIterator it = fInventoryList.begin(); it != fInventoryList.end(); it++) - result += (*it)->GetItemWeight(); - - return result; -} - -// If the item already belongs, just return kInventoryOK. -tInventoryResult CInventory::AddItem(CItem *item) { - if (ItemInInventory(item)) - return kInventoryOK; - - if (GetWeight() + item->GetItemWeight() > fWeightLimit) - return kTooMuchWeight; - - fInventoryList.push_back(item); - item->SetItemOwner(fOwnerID); - - ++fReferenceCount; - return kInventoryOK; -} - -tInventoryResult CInventory::RemoveItem(CItem *item) { - for (CItemIterator it = fInventoryList.begin(); it != fInventoryList.end(); it++) { - if (*it == item) { - fInventoryList.erase(it); - item->SetItemOwner(kNoActorID); - - ++fReferenceCount; - return kInventoryOK; - } - } - - return kItemNotInInventory; -} - -tInventoryResult CInventory::RemoveItem(tItemID id) { - CItem *item = FindItemByID(id); - - if (item) { - fInventoryList.remove(item); - item->SetItemOwner(kNoActorID); - - ++fReferenceCount; - return kInventoryOK; - } - - return kItemNotInInventory; -} - -void CInventory::RemoveAllItems() { - fInventoryList.clear(); - ++fReferenceCount; -} - -bool CInventory::ItemInInventory(CItem *item) { - for (CItemIterator it = fInventoryList.begin(); it != fInventoryList.end(); it++) - if (*it == item) - return true; - - return false; -} - -bool CInventory::ItemInInventory(tItemID id) { - return FindItemByID(id) != NULL; -} - -CItem *CInventory::GetItemAt(int32 index) { - int32 i = 0; - for (CItemIterator it = fInventoryList.begin(); it != fInventoryList.end(); it++, i++) - if (i == index) - return *it; - - return 0; -} - -tItemID CInventory::GetItemIDAt(int32 index) { - CItem *item = GetItemAt(index); - - if (item) - return item->GetObjectID(); - - return kNoItemID; -} - -CItem *CInventory::FindItemByID(tItemID id) { - return fInventoryList.FindItemByID(id); -} - -// Return -1 if not found. - -int32 CInventory::FindIndexOf(CItem *item) { - uint32 i = 0; - for (CItemIterator it = fInventoryList.begin(); it != fInventoryList.end(); it++, i++) - if (*it == item) - return i; - - return -1; -} - -// Return -1 if not found. - -int32 CInventory::FindIndexOf(tItemID id) { - uint32 i = 0; - for (CItemIterator it = fInventoryList.begin(); it != fInventoryList.end(); it++, i++) - if ((*it)->GetObjectID() == id) - return i; - - return -1; -} - -tWeightType CInventory::GetWeightLimit() { - return fWeightLimit; -} - -int32 CInventory::GetNumItems() { - return fInventoryList.size(); -} - -void CInventory::SetOwnerID(const tActorID id) { - fOwnerID = id; -} - -tActorID CInventory::GetOwnerID() const { - return fOwnerID; -} - -} // End of namespae Pegasus diff --git a/engines/pegasus/Game_Shell/CItem.cpp b/engines/pegasus/Game_Shell/CItem.cpp deleted file mode 100755 index b96c24ce49..0000000000 --- a/engines/pegasus/Game_Shell/CItem.cpp +++ /dev/null @@ -1,111 +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. - * - * Additional copyright for this file: - * Copyright (C) 1995-1997 Presto Studios, Inc. - * - * 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 "common/error.h" -#include "common/stream.h" - -#include "pegasus/constants.h" -#include "pegasus/Game_Shell/CItem.h" -#include "pegasus/Game_Shell/CItemList.h" - -namespace Pegasus { - -CItem::CItem(const tItemID id, const tNeighborhoodID neighborhood, const tRoomID room, const tDirectionConstant direction) : MMIDObject(id) { - fItemNeighborhood = neighborhood; - fItemRoom = room; - fItemDirection = direction; - fItemWeight = 1; - fItemOwnerID = kNoActorID; - fItemState = 0; - - gAllItems.push_back(this); -} - -CItem::~CItem() { -} - -Common::Error CItem::WriteToStream(Common::WriteStream *stream) { - stream->writeUint16BE(fItemNeighborhood); - stream->writeUint16BE(fItemRoom); - stream->writeByte(fItemDirection); - stream->writeUint16BE(fItemOwnerID); - stream->writeUint16BE(fItemState); - - if (stream->err()) - return Common::kWritingFailed; - - return Common::kNoError; -} - -Common::Error CItem::ReadFromStream(Common::ReadStream *stream) { - fItemNeighborhood = stream->readUint16BE(); - fItemRoom = stream->readUint16BE(); - fItemDirection = stream->readByte(); - fItemOwnerID = stream->readUint16BE(); - fItemState = stream->readUint16BE(); - - if (stream->err()) - return Common::kReadingFailed; - - return Common::kNoError; -} - -tActorID CItem::GetItemOwner() const { - return fItemOwnerID; -} - -void CItem::SetItemOwner(const tActorID owner) { - fItemOwnerID = owner; -} - -tWeightType CItem::GetItemWeight() { - return fItemWeight; -} - -tItemState CItem::GetItemState() const { - return fItemState; -} - -void CItem::SetItemState(const tItemState state) { - fItemState = state; -} - -void CItem::GetItemRoom(tNeighborhoodID &neighborhood, tRoomID &room, tDirectionConstant &direction) const { - neighborhood = fItemNeighborhood; - room = fItemRoom; - direction = fItemDirection; -} - -void CItem::SetItemRoom(const tNeighborhoodID neighborhood, const tRoomID room, const tDirectionConstant direction) { - fItemNeighborhood = neighborhood; - fItemRoom = room; - fItemDirection = direction; -} - -tNeighborhoodID CItem::GetItemNeighborhood() const { - return fItemNeighborhood; -} - -} // End of namespace Pegasus diff --git a/engines/pegasus/MMShell/Utilities/MMIDObject.h b/engines/pegasus/MMShell/Utilities/MMIDObject.h index b45c7544b3..112d3b8275 100755 --- a/engines/pegasus/MMShell/Utilities/MMIDObject.h +++ b/engines/pegasus/MMShell/Utilities/MMIDObject.h @@ -38,29 +38,29 @@ public: MMIDObject(const tMM32BitID id); ~MMIDObject(); - tMM32BitID GetObjectID() const; + tMM32BitID getObjectID() const; private: - tMM32BitID fObjectID; + tMM32BitID _objectID; }; inline MMIDObject::MMIDObject(const tMM32BitID id) { - fObjectID = id; + _objectID = id; } inline MMIDObject::~MMIDObject() { } -inline tMM32BitID MMIDObject::GetObjectID() const { - return fObjectID; +inline tMM32BitID MMIDObject::getObjectID() const { + return _objectID; } inline int operator==(const MMIDObject &arg1, const MMIDObject &arg2) { - return arg1.fObjectID == arg2.fObjectID; + return arg1._objectID == arg2._objectID; } inline int operator!=(const MMIDObject &arg1, const MMIDObject &arg2) { - return arg1.fObjectID != arg2.fObjectID; + return arg1._objectID != arg2._objectID; } } // End of namespace Pegasus diff --git a/engines/pegasus/gamestate.cpp b/engines/pegasus/gamestate.cpp index 2f4aed6188..bc88c5ed22 100755 --- a/engines/pegasus/gamestate.cpp +++ b/engines/pegasus/gamestate.cpp @@ -1530,12 +1530,12 @@ bool GameStateManager::isTakenItemID(tItemID id) { return _itemTakenFlags.getFlag(id); } -void GameStateManager::setTakenItem(CItem *item, bool value) { - setTakenItemID(item->GetObjectID(), value); +void GameStateManager::setTakenItem(Item *item, bool value) { + setTakenItemID(item->getObjectID(), value); } -bool GameStateManager::isTakenItem(CItem *item) { - return isTakenItemID(item->GetObjectID()); +bool GameStateManager::isTakenItem(Item *item) { + return isTakenItemID(item->getObjectID()); } void GameStateManager::setCaldoriaFuseTimeLimit(const TimeValue timeLimit) { diff --git a/engines/pegasus/gamestate.h b/engines/pegasus/gamestate.h index af790ce283..4118b5d519 100755 --- a/engines/pegasus/gamestate.h +++ b/engines/pegasus/gamestate.h @@ -29,7 +29,7 @@ #include "common/singleton.h" #include "pegasus/types.h" -#include "pegasus/Game_Shell/CItem.h" +#include "pegasus/items/item.h" namespace Common { class Error; @@ -615,8 +615,8 @@ public: bool allTimeZonesFinished(); void setTakenItemID(tItemID, bool); bool isTakenItemID(tItemID); - void setTakenItem(CItem*, bool); - bool isTakenItem(CItem*); + void setTakenItem(Item*, bool); + bool isTakenItem(Item*); // Caldoria void setCaldoriaFuseTimeLimit(const TimeValue); diff --git a/engines/pegasus/items/inventory.cpp b/engines/pegasus/items/inventory.cpp new file mode 100755 index 0000000000..8f7eb46fd4 --- /dev/null +++ b/engines/pegasus/items/inventory.cpp @@ -0,0 +1,175 @@ +/* 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. + * + * Additional copyright for this file: + * Copyright (C) 1995-1997 Presto Studios, Inc. + * + * 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 "pegasus/constants.h" +#include "pegasus/items/item.h" +#include "pegasus/items/inventory.h" + +namespace Pegasus { + +Inventory::Inventory() { + _weightLimit = 100; + _ownerID = kNoActorID; + _referenceCount = 0; +} + +Inventory::~Inventory() { +} + +void Inventory::setWeightLimit(tWeightType limit) { + _weightLimit = limit; + // *** What to do if the new weight limit is greater than the current weight? +} + +tWeightType Inventory::getWeight() { + tWeightType result = 0; + + for (ItemIterator it = _inventoryList.begin(); it != _inventoryList.end(); it++) + result += (*it)->getItemWeight(); + + return result; +} + +// If the item already belongs, just return kInventoryOK. +tInventoryResult Inventory::addItem(Item *item) { + if (itemInInventory(item)) + return kInventoryOK; + + if (getWeight() + item->getItemWeight() > _weightLimit) + return kTooMuchWeight; + + _inventoryList.push_back(item); + item->setItemOwner(_ownerID); + + ++_referenceCount; + return kInventoryOK; +} + +tInventoryResult Inventory::removeItem(Item *item) { + for (ItemIterator it = _inventoryList.begin(); it != _inventoryList.end(); it++) { + if (*it == item) { + _inventoryList.erase(it); + item->setItemOwner(kNoActorID); + + ++_referenceCount; + return kInventoryOK; + } + } + + return kItemNotInInventory; +} + +tInventoryResult Inventory::removeItem(tItemID id) { + Item *item = findItemByID(id); + + if (item) { + _inventoryList.remove(item); + item->setItemOwner(kNoActorID); + + ++_referenceCount; + return kInventoryOK; + } + + return kItemNotInInventory; +} + +void Inventory::removeAllItems() { + _inventoryList.clear(); + ++_referenceCount; +} + +bool Inventory::itemInInventory(Item *item) { + for (ItemIterator it = _inventoryList.begin(); it != _inventoryList.end(); it++) + if (*it == item) + return true; + + return false; +} + +bool Inventory::itemInInventory(tItemID id) { + return findItemByID(id) != NULL; +} + +Item *Inventory::getItemAt(int32 index) { + int32 i = 0; + for (ItemIterator it = _inventoryList.begin(); it != _inventoryList.end(); it++, i++) + if (i == index) + return *it; + + return 0; +} + +tItemID Inventory::getItemIDAt(int32 index) { + Item *item = getItemAt(index); + + if (item) + return item->getObjectID(); + + return kNoItemID; +} + +Item *Inventory::findItemByID(tItemID id) { + return _inventoryList.findItemByID(id); +} + +// Return -1 if not found. + +int32 Inventory::findIndexOf(Item *item) { + uint32 i = 0; + for (ItemIterator it = _inventoryList.begin(); it != _inventoryList.end(); it++, i++) + if (*it == item) + return i; + + return -1; +} + +// Return -1 if not found. + +int32 Inventory::findIndexOf(tItemID id) { + uint32 i = 0; + for (ItemIterator it = _inventoryList.begin(); it != _inventoryList.end(); it++, i++) + if ((*it)->getObjectID() == id) + return i; + + return -1; +} + +tWeightType Inventory::getWeightLimit() { + return _weightLimit; +} + +int32 Inventory::getNumItems() { + return _inventoryList.size(); +} + +void Inventory::setOwnerID(const tActorID id) { + _ownerID = id; +} + +tActorID Inventory::getOwnerID() const { + return _ownerID; +} + +} // End of namespae Pegasus diff --git a/engines/pegasus/Game_Shell/CInventory.h b/engines/pegasus/items/inventory.h index 45af5c379c..7da782f00e 100755 --- a/engines/pegasus/Game_Shell/CInventory.h +++ b/engines/pegasus/items/inventory.h @@ -23,15 +23,15 @@ * */ -#ifndef PEGASUS_GAMESHELL_CINVENTORY_H -#define PEGASUS_GAMESHELL_CINVENTORY_H +#ifndef PEGASUS_ITEMS_INVENTORY_H +#define PEGASUS_ITEMS_INVENTORY_H #include "pegasus/types.h" -#include "pegasus/Game_Shell/CItemList.h" +#include "pegasus/items/itemlist.h" namespace Pegasus { -class CItem; +class Item; // Inventories have a "current item". This item is the default item the player can // use. In a text adventure system, the current item would be "it", as in @@ -39,40 +39,40 @@ class CItem; // item. In a graphic adventure, the current item would be the item the user selects // to use with the mouse or other pointing device. -class CInventory { +class Inventory { public: - CInventory(); - virtual ~CInventory(); + Inventory(); + virtual ~Inventory(); - tWeightType GetWeightLimit(); - void SetWeightLimit(tWeightType limit); - tWeightType GetWeight(); + tWeightType getWeightLimit(); + void setWeightLimit(tWeightType limit); + tWeightType getWeight(); - virtual tInventoryResult AddItem(CItem *item); - virtual tInventoryResult RemoveItem(CItem *item); - virtual tInventoryResult RemoveItem(tItemID id); - virtual bool ItemInInventory(CItem *item); - virtual bool ItemInInventory(tItemID id); - virtual CItem *GetItemAt(int32 index); - virtual tItemID GetItemIDAt(int32 index); - virtual CItem *FindItemByID(tItemID id); - virtual int32 FindIndexOf(CItem *item); - virtual int32 FindIndexOf(tItemID id); - int32 GetNumItems(); - virtual void RemoveAllItems(); + virtual tInventoryResult addItem(Item *item); + virtual tInventoryResult removeItem(Item *item); + virtual tInventoryResult removeItem(tItemID id); + virtual bool itemInInventory(Item *item); + virtual bool itemInInventory(tItemID id); + virtual Item *getItemAt(int32 index); + virtual tItemID getItemIDAt(int32 index); + virtual Item *findItemByID(tItemID id); + virtual int32 findIndexOf(Item *item); + virtual int32 findIndexOf(tItemID id); + int32 getNumItems(); + virtual void removeAllItems(); - void SetOwnerID(const tActorID id); - tActorID GetOwnerID() const; + void setOwnerID(const tActorID id); + tActorID getOwnerID() const; - uint32 GetReferenceCount() { return fReferenceCount; } + uint32 getReferenceCount() { return _referenceCount; } protected: - tWeightType fWeightLimit; - tActorID fOwnerID; - CItemList fInventoryList; + tWeightType _weightLimit; + tActorID _ownerID; + ItemList _inventoryList; private: - uint32 fReferenceCount; + uint32 _referenceCount; }; } // End of namespace Pegasus diff --git a/engines/pegasus/items/item.cpp b/engines/pegasus/items/item.cpp new file mode 100755 index 0000000000..934dce6f2d --- /dev/null +++ b/engines/pegasus/items/item.cpp @@ -0,0 +1,111 @@ +/* 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. + * + * Additional copyright for this file: + * Copyright (C) 1995-1997 Presto Studios, Inc. + * + * 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 "common/error.h" +#include "common/stream.h" + +#include "pegasus/constants.h" +#include "pegasus/items/item.h" +#include "pegasus/items/itemlist.h" + +namespace Pegasus { + +Item::Item(const tItemID id, const tNeighborhoodID neighborhood, const tRoomID room, const tDirectionConstant direction) : MMIDObject(id) { + _itemNeighborhood = neighborhood; + _itemRoom = room; + _itemDirection = direction; + _itemWeight = 1; + _itemOwnerID = kNoActorID; + _itemState = 0; + + g_allItems.push_back(this); +} + +Item::~Item() { +} + +Common::Error Item::writeToStream(Common::WriteStream *stream) { + stream->writeUint16BE(_itemNeighborhood); + stream->writeUint16BE(_itemRoom); + stream->writeByte(_itemDirection); + stream->writeUint16BE(_itemOwnerID); + stream->writeUint16BE(_itemState); + + if (stream->err()) + return Common::kWritingFailed; + + return Common::kNoError; +} + +Common::Error Item::readFromStream(Common::ReadStream *stream) { + _itemNeighborhood = stream->readUint16BE(); + _itemRoom = stream->readUint16BE(); + _itemDirection = stream->readByte(); + _itemOwnerID = stream->readUint16BE(); + _itemState = stream->readUint16BE(); + + if (stream->err()) + return Common::kReadingFailed; + + return Common::kNoError; +} + +tActorID Item::getItemOwner() const { + return _itemOwnerID; +} + +void Item::setItemOwner(const tActorID owner) { + _itemOwnerID = owner; +} + +tWeightType Item::getItemWeight() { + return _itemWeight; +} + +tItemState Item::getItemState() const { + return _itemState; +} + +void Item::setItemState(const tItemState state) { + _itemState = state; +} + +void Item::getItemRoom(tNeighborhoodID &neighborhood, tRoomID &room, tDirectionConstant &direction) const { + neighborhood = _itemNeighborhood; + room = _itemRoom; + direction = _itemDirection; +} + +void Item::setItemRoom(const tNeighborhoodID neighborhood, const tRoomID room, const tDirectionConstant direction) { + _itemNeighborhood = neighborhood; + _itemRoom = room; + _itemDirection = direction; +} + +tNeighborhoodID Item::getItemNeighborhood() const { + return _itemNeighborhood; +} + +} // End of namespace Pegasus diff --git a/engines/pegasus/Game_Shell/CItem.h b/engines/pegasus/items/item.h index c923e1c69c..37ad54e5e7 100755 --- a/engines/pegasus/Game_Shell/CItem.h +++ b/engines/pegasus/items/item.h @@ -23,8 +23,8 @@ * */ -#ifndef PEGASUS_GAMESHELL_CITEM_H -#define PEGASUS_GAMESHELL_CITEM_H +#ifndef PEGASUS_ITEMS_ITEM_H +#define PEGASUS_ITEMS_ITEM_H #include "pegasus/MMShell/Utilities/MMIDObject.h" #include "pegasus/types.h" @@ -39,12 +39,12 @@ namespace Pegasus { /* - CItem is an object which can be picked up and carried around. - CItems have + Item is an object which can be picked up and carried around. + Items have a location an ID. weight - an owner (kNoActorID if no one is carrying the CItem) + an owner (kNoActorID if no one is carrying the Item) */ @@ -219,35 +219,35 @@ const uint32 kRemoveGlass = 10; const uint32 kRemoveDart = 11; const uint32 kRemoveSinclairKey = 12; -class CItem : public MMIDObject { +class Item : public MMIDObject { public: - CItem(const tItemID id, const tNeighborhoodID neighborhood, const tRoomID room, const tDirectionConstant direction); - virtual ~CItem(); + Item(const tItemID id, const tNeighborhoodID neighborhood, const tRoomID room, const tDirectionConstant direction); + virtual ~Item(); // WriteToStream writes everything EXCEPT the item's ID. // It is assumed that the calling function will write and read the ID. - virtual Common::Error WriteToStream(Common::WriteStream *stream); - virtual Common::Error ReadFromStream(Common::ReadStream *stream); + virtual Common::Error writeToStream(Common::WriteStream *stream); + virtual Common::Error readFromStream(Common::ReadStream *stream); - virtual tActorID GetItemOwner() const; - virtual void SetItemOwner(const tActorID owner); + virtual tActorID getItemOwner() const; + virtual void setItemOwner(const tActorID owner); - void GetItemRoom(tNeighborhoodID &neighborhood, tRoomID &room, tDirectionConstant &direction) const; - void SetItemRoom(const tNeighborhoodID neighborhood, const tRoomID room, const tDirectionConstant direction); - tNeighborhoodID GetItemNeighborhood() const; + void getItemRoom(tNeighborhoodID &neighborhood, tRoomID &room, tDirectionConstant &direction) const; + void setItemRoom(const tNeighborhoodID neighborhood, const tRoomID room, const tDirectionConstant direction); + tNeighborhoodID getItemNeighborhood() const; - virtual tWeightType GetItemWeight(); + virtual tWeightType getItemWeight(); - virtual void SetItemState(const tItemState state); - virtual tItemState GetItemState() const; + virtual void setItemState(const tItemState state); + virtual tItemState getItemState() const; protected: - tNeighborhoodID fItemNeighborhood; - tRoomID fItemRoom; - tDirectionConstant fItemDirection; - tActorID fItemOwnerID; - tWeightType fItemWeight; - tItemState fItemState; + tNeighborhoodID _itemNeighborhood; + tRoomID _itemRoom; + tDirectionConstant _itemDirection; + tActorID _itemOwnerID; + tWeightType _itemWeight; + tItemState _itemState; }; } // End of namespace Pegasus diff --git a/engines/pegasus/Game_Shell/CItemList.cpp b/engines/pegasus/items/itemlist.cpp index 256a895797..2b980d6f5f 100755 --- a/engines/pegasus/Game_Shell/CItemList.cpp +++ b/engines/pegasus/items/itemlist.cpp @@ -26,26 +26,26 @@ #include "common/error.h" #include "common/stream.h" -#include "engines/pegasus/Game_Shell/CItem.h" -#include "engines/pegasus/Game_Shell/CItemList.h" +#include "engines/pegasus/items/item.h" +#include "engines/pegasus/items/itemlist.h" namespace Pegasus { // TODO: Don't use global construction! -CItemList gAllItems; +ItemList g_allItems; -CItemList::CItemList() { +ItemList::ItemList() { } -CItemList::~CItemList() { +ItemList::~ItemList() { } -Common::Error CItemList::WriteToStream(Common::WriteStream *stream) { +Common::Error ItemList::writeToStream(Common::WriteStream *stream) { stream->writeUint32BE(size()); - for (CItemIterator it = begin(); it != end(); it++) { - stream->writeUint16BE((*it)->GetObjectID()); - (*it)->WriteToStream(stream); + for (ItemIterator it = begin(); it != end(); it++) { + stream->writeUint16BE((*it)->getObjectID()); + (*it)->writeToStream(stream); } if (stream->err()) @@ -54,12 +54,12 @@ Common::Error CItemList::WriteToStream(Common::WriteStream *stream) { return Common::kNoError; } -Common::Error CItemList::ReadFromStream(Common::ReadStream *stream) { +Common::Error ItemList::readFromStream(Common::ReadStream *stream) { uint32 itemCount = stream->readUint32BE(); for (uint32 i = 0; i < itemCount; i++) { tItemID itemID = stream->readUint16BE(); - gAllItems.FindItemByID(itemID)->ReadFromStream(stream); + g_allItems.findItemByID(itemID)->readFromStream(stream); } if (stream->err()) @@ -68,9 +68,9 @@ Common::Error CItemList::ReadFromStream(Common::ReadStream *stream) { return Common::kNoError; } -CItem *CItemList::FindItemByID(const tItemID id) { - for (CItemIterator it = begin(); it != end(); it++) - if ((*it)->GetObjectID() == id) +Item *ItemList::findItemByID(const tItemID id) { + for (ItemIterator it = begin(); it != end(); it++) + if ((*it)->getObjectID() == id) return *it; return 0; diff --git a/engines/pegasus/Game_Shell/CItemList.h b/engines/pegasus/items/itemlist.h index d4c0d56272..dd9a4ba023 100755 --- a/engines/pegasus/Game_Shell/CItemList.h +++ b/engines/pegasus/items/itemlist.h @@ -23,8 +23,8 @@ * */ -#ifndef PEGASUS_GAMESHELL_CITEMLIST_H -#define PEGASUS_GAMESHELL_CITEMLIST_H +#ifndef PEGASUS_ITEMS_ITEMLIST_H +#define PEGASUS_ITEMS_ITEMLIST_H #include "common/list.h" @@ -37,23 +37,23 @@ namespace Common { namespace Pegasus { -class CItem; +class Item; -class CItemList : public Common::List<CItem *> { +class ItemList : public Common::List<Item *> { public: - CItemList(); - virtual ~CItemList(); + ItemList(); + virtual ~ItemList(); - virtual Common::Error WriteToStream(Common::WriteStream *stream); - virtual Common::Error ReadFromStream(Common::ReadStream *stream); + virtual Common::Error writeToStream(Common::WriteStream *stream); + virtual Common::Error readFromStream(Common::ReadStream *stream); - CItem *FindItemByID(const tItemID id); + Item *findItemByID(const tItemID id); }; -typedef CItemList::iterator CItemIterator; +typedef ItemList::iterator ItemIterator; // TODO: Don't use global construction! -extern CItemList gAllItems; +extern ItemList g_allItems; } // End of namespace Pegasus diff --git a/engines/pegasus/menu.cpp b/engines/pegasus/menu.cpp index 577d96aa82..49d60144d6 100644 --- a/engines/pegasus/menu.cpp +++ b/engines/pegasus/menu.cpp @@ -25,8 +25,7 @@ #include "pegasus/console.h" #include "pegasus/pegasus.h" - -#include "pegasus/MMShell/Sounds/MMSound.h" +#include "pegasus/sound.h" namespace Pegasus { @@ -46,9 +45,9 @@ enum { }; void PegasusEngine::runMainMenu() { - MMSound sound; - sound.InitFromAIFFFile("Sounds/Main Menu.aiff"); - sound.LoopSound(); + Sound sound; + sound.initFromAIFFFile("Sounds/Main Menu.aiff"); + sound.loopSound(); // Note down how long since the last click uint32 lastClickTime = _system->getMillis(); @@ -86,14 +85,14 @@ void PegasusEngine::runMainMenu() { case Common::KEYCODE_RETURN: if (buttonSelected != kDifficultyButton) { drawMenuButtonSelected(buttonSelected); - sound.StopSound(); + sound.stopSound(); setGameMode(buttonSelected); if (_gameMode != kMainMenuMode) return; drawMenu(buttonSelected); - sound.LoopSound(); + sound.loopSound(); } break; case Common::KEYCODE_d: @@ -122,7 +121,7 @@ void PegasusEngine::runMainMenu() { return; // Too slow! Go back and show the intro again. - sound.StopSound(); + sound.stopSound(); _video->playMovie(_introDirectory + "/LilMovie.movie"); _gameMode = kIntroMode; } diff --git a/engines/pegasus/module.mk b/engines/pegasus/module.mk index 4840190a00..4f44050787 100644 --- a/engines/pegasus/module.mk +++ b/engines/pegasus/module.mk @@ -9,15 +9,15 @@ MODULE_OBJS = \ menu.o \ overview.o \ pegasus.o \ + sound.o \ video.o \ - Game_Shell/CInventory.o \ - Game_Shell/CItem.o \ - Game_Shell/CItemList.o \ + items/inventory.o \ + items/item.o \ + items/itemlist.o \ MMShell/Base_Classes/MMFunctionPtr.o \ MMShell/Notification/MMNotification.o \ MMShell/Notification/MMNotificationManager.o \ MMShell/Notification/MMNotificationReceiver.o \ - MMShell/Sounds/MMSound.o \ MMShell/Utilities/MMResourceFile.o \ MMShell/Utilities/MMTimeValue.o \ MMShell/Utilities/MMUtilities.o \ diff --git a/engines/pegasus/MMShell/Sounds/MMSound.cpp b/engines/pegasus/sound.cpp index 23ac60bced..5fcac1134a 100755 --- a/engines/pegasus/MMShell/Sounds/MMSound.cpp +++ b/engines/pegasus/sound.cpp @@ -28,25 +28,25 @@ #include "common/file.h" #include "common/system.h" -#include "engines/pegasus/MMShell/Sounds/MMSound.h" +#include "pegasus/sound.h" namespace Pegasus { -MMSound::MMSound() { +Sound::Sound() { _aiffStream = 0; _volume = 0xFF; } -MMSound::~MMSound() { - DisposeSound(); +Sound::~Sound() { + disposeSound(); } -void MMSound::DisposeSound() { - StopSound(); +void Sound::disposeSound() { + stopSound(); delete _aiffStream; _aiffStream = 0; } -void MMSound::InitFromAIFFFile(const Common::String &fileName) { +void Sound::initFromAIFFFile(const Common::String &fileName) { Common::File *file = new Common::File(); if (!file->open(fileName)) { delete file; @@ -58,37 +58,37 @@ void MMSound::InitFromAIFFFile(const Common::String &fileName) { #if 0 // TODO! -void MMSound::AttachFader(MMSoundFader *theFader) { - if (fTheFader) - fTheFader->AttachSound(NULL); +void Sound::attachFader(SoundFader *fader) { + if (_fader) + _fader->attachSound(NULL); - fTheFader = theFader; + _fader = fader; - if (fTheFader) - fTheFader->AttachSound(this); + if (_fader) + _fader->attachSound(this); } #endif -void MMSound::PlaySound() { - if (!SoundLoaded()) +void Sound::playSound() { + if (!isSoundLoaded()) return; - StopSound(); + stopSound(); #if 0 // TODO! - if (fTheFader) - this->SetVolume(fTheFader->GetFaderValue()); + if (_fader) + setVolume(_fader->getFaderValue()); #endif g_system->getMixer()->playStream(Audio::Mixer::kPlainSoundType, &_handle, _aiffStream, -1, _volume, 0, DisposeAfterUse::NO); } -void MMSound::LoopSound() { - if (!SoundLoaded()) +void Sound::loopSound() { + if (!isSoundLoaded()) return; - StopSound(); + stopSound(); // Create a looping stream Audio::AudioStream *loopStream = new Audio::LoopingAudioStream(_aiffStream, 0, DisposeAfterUse::NO); @@ -96,18 +96,18 @@ void MMSound::LoopSound() { #if 0 // TODO! // Assume that if there is a fader, we're going to fade the sound in. - if (fTheFader) - this->SetVolume(0); + if (_fader) + setVolume(0); #endif g_system->getMixer()->playStream(Audio::Mixer::kPlainSoundType, &_handle, loopStream, -1, _volume, 0, DisposeAfterUse::YES); } -void MMSound::StopSound(void) { +void Sound::stopSound(void) { g_system->getMixer()->stopHandle(_handle); } -void MMSound::SetVolume(const uint16 volume) { +void Sound::setVolume(const uint16 volume) { // Clipping the volume to [0x00, 0xFF] instead of Apple's [0, 0x100] // We store the volume in case SetVolume is called before the sound starts @@ -115,11 +115,11 @@ void MMSound::SetVolume(const uint16 volume) { g_system->getMixer()->setChannelVolume(_handle, _volume); } -bool MMSound::IsPlaying() { - return SoundLoaded() && g_system->getMixer()->isSoundHandleActive(_handle); +bool Sound::isPlaying() { + return isSoundLoaded() && g_system->getMixer()->isSoundHandleActive(_handle); } -bool MMSound::SoundLoaded() const { +bool Sound::isSoundLoaded() const { return _aiffStream != 0; } diff --git a/engines/pegasus/MMShell/Sounds/MMSound.h b/engines/pegasus/sound.h index bb5578266d..62ce51a605 100755 --- a/engines/pegasus/MMShell/Sounds/MMSound.h +++ b/engines/pegasus/sound.h @@ -23,8 +23,8 @@ * */ -#ifndef PEGASUS_MMSHELL_SOUNDS_MMSOUND_H -#define PEGASUS_MMSHELL_SOUNDS_MMSOUND_H +#ifndef PEGASUS_SOUND_H +#define PEGASUS_SOUND_H #include "audio/mixer.h" #include "common/str.h" @@ -49,26 +49,26 @@ namespace Pegasus { // Pan the sound // Change these settings dynamically over time -class MMSound { +class Sound { public: - MMSound(); - ~MMSound(); + Sound(); + ~Sound(); // We only have one access point here because we should // only be opening an AIFF file from a file name. We're // not using the resource fork string resources. - void InitFromAIFFFile(const Common::String &fileName); + void initFromAIFFFile(const Common::String &fileName); - void DisposeSound(); - bool SoundLoaded() const; - void PlaySound(); - void LoopSound(); - void StopSound(); - void SetVolume(const uint16 volume); - bool IsPlaying(); + void disposeSound(); + bool isSoundLoaded() const; + void playSound(); + void loopSound(); + void stopSound(); + void setVolume(const uint16 volume); + bool isPlaying(); // TODO! - //void AttachFader(MMSoundFader*); + //void attachFader(SoundFader *fader); protected: Audio::RewindableAudioStream *_aiffStream; @@ -76,7 +76,7 @@ protected: byte _volume; // TODO! - //MMSoundFader *fTheFader; + //SoundFader *_fader; }; } // End of namespace Pegasus |