Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-10-18 17:58:45 +0000
committerStijn Buys <ingar@osirion.org>2008-10-18 17:58:45 +0000
commit35613f0860a2d8cb643ca8de006de08503e48e53 (patch)
tree8a5436de643e818e68a82df2e5cb2df2145f5062 /src/game/example/example.cc
parentdb287e4a5133125bb6f25ba21ea97c47b19ac67f (diff)
example module
Diffstat (limited to 'src/game/example/example.cc')
-rw-r--r--src/game/example/example.cc125
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;
+}
+
+}