diff options
Diffstat (limited to 'src/npc.h')
-rw-r--r-- | src/npc.h | 51 |
1 files changed, 38 insertions, 13 deletions
@@ -1,50 +1,68 @@ /* * The Mana World - * Copyright 2004 The Mana World Development Team + * Copyright (C) 2004 The Mana World Development Team * * This file is part of The Mana World. * - * The Mana World is free software; you can redistribute it and/or modify + * 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 * any later version. * - * The Mana World is distributed in the hope that it will be useful, + * 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 The Mana World; if not, write to the Free Software + * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef _TMW_NPC_H -#define _TMW_NPC_H +#ifndef NPC_H +#define NPC_H -#include "being.h" +#include "player.h" +#ifdef EATHENA_SUPPORT +class Network; +#endif class Graphics; +class Text; -class NPC : public Being +class NPC : public Player { public: +#ifdef TMWSERV_SUPPORT NPC(Uint16 id, int sprite, Map *map); +#else + NPC(Uint32 id, Uint16 job, Map *map, Network *network); +#endif - virtual Type - getType() const; + ~NPC(); - virtual void - drawName(Graphics *graphics, Sint32 offsetX, Sint32 offsetY); + void setName(const std::string &name); + void setGender(Gender gender); + void setSprite(int slot, int id, std::string color); + + virtual Type getType() const; void talk(); void nextDialog(); - void dialogChoice(int choice); + void dialogChoice(char choice); + void integerInput(int value); + void stringInput(const std::string &value); void buy(); void sell(); /** + * Call this to ease clean up of the current NPC, without causing + * interface problems + */ + void handleDeath(); + + /** * Gets the way an NPC is blocked by other things on the map */ virtual unsigned char getWalkMask() const @@ -56,6 +74,13 @@ class NPC : public Being */ virtual Map::BlockType getBlockType() const { return Map::BLOCKTYPE_CHARACTER; } //blocks like a player character + +#ifdef EATHENA_SUPPORT + Network *mNetwork; +#endif + void updateCoords(); + private: + Text *mName; }; extern NPC *current_npc; |