diff options
Diffstat (limited to 'src/equipment.cpp')
-rw-r--r-- | src/equipment.cpp | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/src/equipment.cpp b/src/equipment.cpp index 558df216..c8e58b8c 100644 --- a/src/equipment.cpp +++ b/src/equipment.cpp @@ -1,9 +1,8 @@ /* - * Aethyra + * The Mana World * Copyright (C) 2004 The Mana World Development Team * - * This file is part of Aethyra based on original code - * from The Mana World. + * This file is part of The Mana World. * * 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 @@ -22,19 +21,57 @@ #include "equipment.h" #include "item.h" +#ifdef EATHENA_SUPPORT #include "inventory.h" #include "localplayer.h" +#endif -Equipment::Equipment(): - mArrows(0) +#include <algorithm> + +Equipment::Equipment() +#ifdef EATHENA_SUPPORT + : mArrows(0) +#endif { +#ifdef TMWSERV_SUPPORT + std::fill_n(mEquipment, EQUIPMENT_SIZE, (Item*) 0); +#else std::fill_n(mEquipment, EQUIPMENT_SIZE, 0); +#endif +} + +#ifdef TMWSERV_SUPPORT + +Equipment::~Equipment() +{ + clear(); } +void Equipment::clear() +{ + for (int i = 0; i < EQUIPMENT_SIZE; ++i) + delete mEquipment[i]; + + std::fill_n(mEquipment, EQUIPMENT_SIZE, (Item*) 0); +} + +void Equipment::setEquipment(int index, int id) +{ + if (mEquipment[index] && mEquipment[index]->getId() == id) + return; + + delete mEquipment[index]; + mEquipment[index] = (id > 0) ? new Item(id) : 0; +} + +#else + void Equipment::setEquipment(int index, int inventoryIndex) { mEquipment[index] = inventoryIndex; - Item* item = player_node->getInventory()->getItem(inventoryIndex); + Item *item = player_node->getInventory()->getItem(inventoryIndex); if (item) item->setEquipped(true); } + +#endif |