diff options
| author | Stijn Buys <ingar@osirion.org> | 2008-10-18 17:58:45 +0000 | 
|---|---|---|
| committer | Stijn Buys <ingar@osirion.org> | 2008-10-18 17:58:45 +0000 | 
| commit | 35613f0860a2d8cb643ca8de006de08503e48e53 (patch) | |
| tree | 8a5436de643e818e68a82df2e5cb2df2145f5062 /src/game/example/example.cc | |
| parent | db287e4a5133125bb6f25ba21ea97c47b19ac67f (diff) | |
example module
Diffstat (limited to 'src/game/example/example.cc')
| -rw-r--r-- | src/game/example/example.cc | 125 | 
1 files changed, 125 insertions, 0 deletions
diff --git a/src/game/example/example.cc b/src/game/example/example.cc new file mode 100644 index 0000000..d8e18ea --- /dev/null +++ b/src/game/example/example.cc @@ -0,0 +1,125 @@ +/* +   intro/intro.cc +   This file is part of the Osirion project and is distributed under  +   the terms of the GNU General Public License version 2  +*/ + +#include "core/gameserver.h" +#include "example/example.h" +#include "example/spectator.h" + +namespace example { + +Example::Example() : core::Module("example", "The Osirion Project Example", true) +{ +} + +Example::~Example() +{ +} + +void Example::init() +{ +	/* +		Initialize engine game variables +	*/ +	Spectator::g_spectatorspeed = core::Cvar::get("g_spectatorspeed", "4", core::Cvar::Game | core::Cvar::Archive); +	Spectator::g_spectatorspeed->set_info("[float] speed of the spectator"); + +	Spectator::g_spectatorrotation = core::Cvar::get("g_spectatorrotation", "45", core::Cvar::Game | core::Cvar::Archive); +	Spectator::g_spectatorrotation->set_info("[float] rotation speed of the spectator in degrees per second"); + +	/* +		The Osirion world consists of Zones. Zones are different +		areas in the game. The example has only one zone. +	*/ +	zone = new core::Zone("example");			// create a Zone object +	zone->set_name("Example Zone");				// set the zone name +	core::Zone::add(zone);					// add the zone to the world + +	/* +		Every object in the Osirion world is derived from core::Entity. +		We create a few basic entities +	*/ + +	core::Entity *cube = new core::Entity();		// a new entity +	cube->set_label("cube"); +	cube->set_name("The Red Cube"); +	cube->entity_shape = core::Entity::Cube;		// set the shape to cube +	cube->entity_location.assign(16, -8, 0);		// set location +	cube->entity_color.assign(1, 0, 0);			// set RGB color red +	cube->entity_radius = 0.25f;				// set radius, in game units +	cube->set_zone(zone);					// add the entity to the zone +	 +	core::Entity *sphere = new core::Entity();		// a new entity +	sphere->set_label("sphere"); +	sphere->set_name("The Green Sphere"); +	sphere->entity_shape = core::Entity::Sphere;		// set the shape to sphere +	sphere->entity_location.assign(16, 0, 0);		// set location +	sphere->entity_color.assign(0, 1, 0);			// set RGB color green +	sphere->entity_radius = 0.25f;				// set radius, in game units +	sphere->set_zone(zone);					// add the entity to the zone + +	core::Entity *diamond = new core::Entity();		// a new entity +	diamond->set_label("diamond"); +	diamond->set_name("The Blue Diamond"); +	diamond->entity_shape = core::Entity::Diamond;		// set the shape to cube +	diamond->entity_location.assign(16, 8, 0);		// set location +	diamond->entity_color.assign(0, 0, 1);			// set RGB color blue +	diamond->entity_radius = 0.25f;				// set radius, in game units +	diamond->set_zone(zone);					// add the entity to the zone + +	core::Entity *axis = new core::Entity();		// a new entity +	axis->set_label("origin"); +	axis->set_name("The Origin"); +	axis->entity_shape = core::Entity::Axis;		// set the shape to axis +	axis->entity_location.assign(0, 0, 0);			// set location +	axis->entity_color.assign(1);				// set greyscale color white +	axis->entity_color_second.assign(0.5f, 0.0f, 0.5f);	// set RGB secondary color +	axis->entity_radius = 0.25f;				// set radius, in game units +	axis->set_zone(zone);					// add the entity to the zone + +} + + +void Example::player_connect(core::Player *player) +{ +	// add a spectator object for the new player +	Spectator *spectator; +	spectator = new Spectator(player); +	spectator->set_zone(zone); +	spectator->set_dirty(); + +	// set the player's control to the spectator object +	player->set_zone(zone); +	player->set_control(spectator); +	player->set_dirty(); + +	// send a message to the player +	core::server()->send(player, "Welcome to " + name()); + +	// broadcast a message to all players +	core::server()->broadcast("^B" + player->name() + " entered."); +} + +void Example::player_disconnect(core::Player *player) +{ +	// broadcast a message to all players +	core::server()->broadcast("^B" + player->name() + " has left."); +} + +void Example::frame(float elapsed) +{ + +} + +void Example::shutdown() +{ +	/* +		The world is automaticly deleted on shutdown, +		but local variables have to be cleaned up +	*/ +	zone = 0; +} + +}  | 
