1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
/* 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.
*
*/
#ifndef MADS_INVENTORY_H
#define MADS_INVENTORY_H
#include "common/scummsys.h"
#include "common/array.h"
#include "common/serializer.h"
namespace MADS {
enum {
PLAYER_INVENTORY = 2, NOWHERE = 1
};
class MADSEngine;
#define MAX_VOCAB 5
#define MAX_QUALITIES 4
class InventoryObject {
public:
int _descId;
int _roomNumber;
int _article;
int _vocabCount;
int _qualitiesCount;
int syntax;
struct {
int _vocabId;
VerbType _verbType;
PrepType _prepType;
} _vocabList[MAX_VOCAB];
int _qualityId[MAX_QUALITIES];
int _qualityValue[MAX_QUALITIES];
/**
* Synchronizes the data for a given object
*/
void synchronize(Common::Serializer &s);
/**
* Returns true if the given object has the specified quality
*/
bool hasQuality(int qualityId) const;
/**
* Sets the quality value for a given quality Id
*/
void setQuality(int qualityId, int qualityValue);
/**
* Gets the quality value for a given quality Id
*/
int getQuality(int qualityId) const;
};
class InventoryObjects : public Common::Array<InventoryObject> {
private:
MADSEngine *_vm;
public:
SynchronizedList _inventoryList;
/**
* Constructor
*/
InventoryObjects(MADSEngine *vm) : _vm(vm) {}
/**
* Loads the game's object list
*/
void load();
/**
* Synchronize the objects list in a savegame
*/
void synchronize(Common::Serializer &s);
/**
* Returns the inventory item from the player's inventory
*/
InventoryObject &getItem(int itemIndex) {
return (*this)[_inventoryList[itemIndex]];
}
/**
* Sets an item's scene number
*/
void setRoom(int objectId, int sceneNumber);
/**
* Returns true if a given object is in the player's current scene
*/
bool isInRoom(int objectId) const;
/**
* Returns true if a given object is in the player's inventory
*/
bool isInInventory(int objectId) const;
/**
* Removes the specified object from the player's inventory
*/
void addToInventory(int objectId);
/**
* Removes the specified object to the player's inventory
* @param objectId Object to remove
* @param newScene Specifies the new scene to set the item to
*/
void removeFromInventory(int objectId, int newScene);
int getIdFromDesc(int objectId);
};
} // End of namespace MADS
#endif /* MADS_INVENTORY_H */
|