/* base/game.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_BASE_H__ #define __INCLUDED_BASE_H__ #include #include #include "base/ship.h" #include "base/shipmodel.h" #include "base/star.h" #include "core/module.h" #include "core/application.h" #include "core/gameinterface.h" #include "filesystem/inifile.h" #include "sys/sys.h" /// the base game module /** the base game module contains the game-specific code for Project::OSiRiON */ namespace game { // entity type constants const unsigned int ship_enttype = 256; const unsigned int star_enttype = 257; const unsigned int planet_enttype = 258; const unsigned int navpoint_enttype = 259; const unsigned int jumppoint_enttype = 260; const unsigned int jumpgate_enttype = 261; const unsigned int station_enttype = 262; /// default player settings class Default { public: static core::Zone *zone; static core::Entity *view; static ShipModel *shipmodel; static long credits; static void clear(); }; /// the base Project::OSiRiON game model class Game : public core::Module { public: Game(); virtual ~Game(); /// run one game frame void frame(float seconds); /// is called when a player connects void player_connect(core::Player *player); /// is called when a player disconnects void player_disconnect(core::Player *player); /* --- game variables -------------------------------------- */ /// game variable: speed of the impulse drive static core::Cvar *g_impulsespeed; /// game variable: acceleration of the impulse drive static core::Cvar *g_impulseacceleration; /// game variable: jumppoint range static core::Cvar *g_jumppointrange; /// game variable: enable or disable development mode static core::Cvar *g_devel; private: bool load_world(); bool load_zone(core::Zone *zone); bool validate_zone(core::Zone *zone); bool load_menus(core::Entity *entity, const std::string &menufilename); bool load_ships(); bool load_player(); /* ---- engine functions ----------------------------------- */ static void func_list_ship(std::string const &args); static void func_join(core::Player *player, std::string const &args); static void func_spectate(core::Player *player, std::string const &args); static void func_hail(core::Player *player, std::string const &args); static void func_jump(core::Player *player, std::string const &args); static void func_impulse(core::Player *player, std::string const &args); static void func_dock(core::Player *player, core::Entity *entity); static void func_launch(core::Player *player, std::string const &args); static void func_respawn(core::Player *player, std::string const &args); static void func_goto(core::Player *player, const std::string &args); static void func_buy(core::Player *player, std::string const &args); }; /// factory function core::Module *factory(); } #endif // __INCLUDED_BASE_H__