From 22efe13cd7a489c13e91f166cff80cbae350785b Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 13 Oct 2013 18:57:40 +0000 Subject: Added the actual NPC class files. --- src/game/base/npc.h | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 src/game/base/npc.h (limited to 'src/game/base/npc.h') diff --git a/src/game/base/npc.h b/src/game/base/npc.h new file mode 100644 index 0000000..4a89529 --- /dev/null +++ b/src/game/base/npc.h @@ -0,0 +1,102 @@ +/* + base/npc.h + This file is part of the Osirion project and is distributed under + the terms and conditions of the GNU General Public License version 2 +*/ + +#ifndef __INCLUDED_BASE_NPC_H__ +#define __INCLUDED_BASE_NPC_H__ + +#include "base/ship.h" + +namespace game +{ + +class NPC : public Ship { + +public: + /** + * @brief Definse the general profile of the NPC + * The NPC profile is set at creating time and can not be altered. + * + * Freelancer fallback value + * Trader Trade convoy member, prefers trade routes + * Military Police or military, prefers patrol routes + * Wingman wingman, prefers protecting its leader + * */ + enum Profile { ProfileFreelancer = 0, ProfileTrader = 1, ProfileMilitary = 2, ProfilePirate = 3, ProfileWingman = 4 }; + + /** + * @brief Defines the general moode of the NPC + * Wander Wamder around + * Formation Follow the leader in formation + * */ + enum Mood { MoodWander = 0, MoodFormation = 1 }; + + NPC(const Profile profile, const ShipModel *shipmodel); + + /* ---- inspectors ----------------------------------------- */ + + /** + * @brief Treturns te general profile of the NPC + * The NPC profile is set at creating time and can not be altered. + * */ + inline const Profile profile() const + { + return npc_profile; + } + + /** + * @brief returns the general moode of the NPC + * */ + inline const Mood mood() const + { + return npc_mood; + } + + /** + * @brief returns this NPC's leader. + * */ + inline Ship *leader() + { + return npc_leader; + } + + /* ---- mutators ------------------------------------------- */ + + /** + * @brief Set the general moode of the NPC + * */ + void set_mood(const Mood mood); + + /** + * @brief set the NPC's leader + * */ + void set_leader(Ship *leader); + + /** + * @brief game frame + * */ + virtual void frame(const unsigned long elapsed); + + + /** + * @brief factory function for wingman NPCs + * */ + static NPC *add_wingman(Ship *leader); + +private: + Profile npc_profile; + + Mood npc_mood; + + Ship *npc_leader; + + unsigned long npc_destroyed_timestamp; + +}; // class NPC + +} // namespace game + +#endif // __INCLUDED_BASE_NPC_H__ + -- cgit v1.2.3