/*
* anchor.h
* Magical anchors
* ____ _
* | _ \ ___ __ _| |_ __ ___ ___
* | |_) / _ \/ _` | | '_ ` _ \/ __|
* | _ < __/ (_| | | | | | | \__ \
* |_| \_\___|\__,_|_|_| |_| |_|___/
*
* Permission to use, modify and distribute is granted via the
* Creative Commons - Attribution - Non Commercial - Share Alike 3.0 License
* http://creativecommons.org/licenses/by-nc-sa/3.0/
*
* Copyright (C) 2007-2012 Jason Mitchell, Randi Mitchell
* Contributions by Tim Callahan, Jonathan Hseu
* Based on Mordor (C) Brooke Paul, Brett J. Vickers, John P. Freeman
*
*/
#ifndef _ANCHOR_H
#define _ANCHOR_H
class AreaRoom;
class BaseRoom;
class Anchor {
public:
Anchor();
Anchor(bstring a, const Player* player);
~Anchor();
void reset();
Anchor& operator=(const Anchor& a);
void load(xmlNodePtr curNode);
void save(xmlNodePtr curNode) const;
void bind(const Player* player);
void bind(const UniqueRoom* uRoom);
void bind(const AreaRoom* aRoom);
void setRoom(CatRef r);
bool is(const BaseRoom* room) const;
bool is(const Player* player) const;
bool is(const UniqueRoom* uRoom) const;
bool is(const AreaRoom* aRoom) const;
bstring getAlias() const;
bstring getRoomName() const;
CatRef getRoom() const;
const MapMarker* getMapMarker() const;
protected:
bstring alias;
bstring roomName;
CatRef room;
MapMarker *mapmarker;
};
#endif /* _ANCHOR_H */