(no commit message)
[asgard.git] / Container.cpp
blob3e973270ccc0afd251ca8ad239e0e3a24d0b5ffd
1 /*****************************************************************************
2 * Copyright (c) 2006 Russ Adams, Sean Eubanks, Asgard Contributors
3 * This file is part of Asgard.
5 * Asgard is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * Asgard is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with Asgard; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18 ****************************************************************************/
19 #include "Container.h"
21 /* Constructor */
22 Container::Container() : StaticMapObject()
24 items.reserve(MAX_ITEMS);
26 vector<Item*>::iterator currentItem;
27 for(currentItem = items.begin(); currentItem != items.end(); currentItem++)
29 *currentItem = NULL;
34 /* Returns number of Items in Container */
35 int Container::getItemCount()
37 int validItemCount;
38 vector<Item*>::iterator currentItem;
39 for(currentItem = items.begin(); currentItem != items.end(); currentItem++)
41 if(*currentItem != NULL) validItemCount++;
43 return validItemCount;
46 /* Retrieve Item */
47 Item* Container::getItem(int index)
49 Item* itemToReturn = NULL;
51 if(!items.empty() && index < MAX_ITEMS)
53 itemToReturn = items[index];
54 items[index] = NULL;
57 return itemToReturn;
60 /* Insert Item in Container */
61 bool Container::putItem(Item* item)
63 bool itemAdded = false;
65 assert(item);
67 vector<Item*>::iterator currentItem;
68 for(currentItem = items.begin(); currentItem != items.end() && !itemAdded; currentItem++)
70 if(*currentItem != NULL)
72 *currentItem = item;
73 itemAdded = true;
77 return itemAdded;
80 /* Can Container be opened? */
81 bool Container::isOpenable()
83 return true;
86 /* What Item is cursor pointing at? */
87 string Container::peek(int index)
89 assert(index < MAX_ITEMS);
91 return items[index]->getName();