2
// C++ Implementation: OutfitMatch
7
// Author: Erik Hjortsberg <erik.hjortsberg@gmail.com>, (C) 2007
9
// This program is free software; you can redistribute it and/or modify
10
// it under the terms of the GNU General Public License as published by
11
// the Free Software Foundation; either version 2 of the License, or
12
// (at your option) any later version.
14
// This program is distributed in the hope that it will be useful,
15
// but WITHOUT ANY WARRANTY; without even the implied warranty of
16
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
// GNU General Public License for more details.
19
// You should have received a copy of the GNU General Public License
20
// along with this program; if not, write to the Free Software
21
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.//
27
#include "OutfitMatch.h"
28
#include "Observers/EntityCreationObserver.h"
34
namespace EntityMapping {
38
OutfitMatch::OutfitMatch(const std::string& outfitName, Eris::View* view)
39
: mOutfitName(outfitName), mView(view), mEntityObserver(0)
43
void OutfitMatch::testAttribute(const Atlas::Message::Element& attribute, bool triggerEvaluation)
45
if (attribute.isMap()) {
46
Eris::Entity* entity(0);
47
const Atlas::Message::MapType & tmap = attribute.asMap();
48
Atlas::Message::MapType::const_iterator I = tmap.find(mOutfitName);
49
if (I != tmap.end() && I->second.isString()) {
50
entity = mView->getEntity(I->second.asString());
51
///the entity might not be available yet, so we need to create an observer for it
53
if (mEntityObserver.get()) {
54
mEntityObserver->observeCreation(mView, I->second.asString());
63
if (triggerEvaluation) {
68
void OutfitMatch::setEntity(Eris::Entity* entity)
70
///observe the attribute by the use of an AttributeObserver
71
mAttributeObserver->observeEntity(entity);
74
void OutfitMatch::setEntityCreationObserver(Observers::EntityCreationObserver* observer)
76
mEntityObserver = std::auto_ptr<Observers::EntityCreationObserver>(observer);
79
void OutfitMatch::testEntity(Eris::Entity* entity)
82
// mEntityObserver.release();
85
AbstractMatch<Cases::OutfitCase>::setEntity(entity);
87
for (std::vector<Cases::OutfitCase*>::iterator I = mCases.begin(); I != mCases.end(); ++I) {
88
(*I)->testMatch(entity);