/* base/jumppoint.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_JUMPPOINT_H__ #define __INCLUDED_BASE_JUMPPOINT_H__ #include "core/entity.h" #include "math/mathlib.h" #include namespace game { /// a jumppoint /** * jumppoints are used to define hyperspace routes between systems. * If a ship actives its jump drive, a jump point will be opened * between the current system and the target of the nearest jumppoint. * */ class JumpPoint : public core::EntityDynamic { public: JumpPoint(); virtual ~JumpPoint(); inline std::string const & targetlabel() { return jumppoint_targetlabel; } inline JumpPoint *target() { return jumppoint_target; } /// set trget label void set_targetlabel(const std::string &label); /// validate the targetlabel and set target() virtual void validate(); private: std::string jumppoint_targetlabel; JumpPoint *jumppoint_target; }; /// a jumpgate class JumpGate : public JumpPoint { public: JumpGate(); virtual ~JumpGate(); /// validate the targetlabel and set target() virtual void validate(); /// entity received a docking request virtual void dock(core::Entity *entity); inline bool activated() const { return (jumpgate_timer > 0); } void activate(); virtual void frame(float elapsed); private: float jumpgate_timer; }; } #endif // __INCLUDED_BASE_JUMPPOINT_H__