From d289e0eacbd00538ee2bcaedeba4366cc1e98231 Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Sun, 12 Jun 2011 17:52:31 +0200 Subject: Handle and render players with a placeholder texture. --- scene.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'scene.cpp') diff --git a/scene.cpp b/scene.cpp index a2b802b..0f68011 100644 --- a/scene.cpp +++ b/scene.cpp @@ -52,6 +52,7 @@ Scene::Scene() { soil_texture = load_texture("textures/zooboing-469-sand-modified.jpg"); water_texture = load_texture("textures/zooboing-688-water.jpg"); marker_texture = load_texture("textures/cross.png"); + placeholder_texture = load_texture("textures/placeholder.png"); /* init terrain */ terrain = new Terrain(); @@ -142,6 +143,12 @@ bool Scene::select(int x, int y, float& px, float& py, float& pz) { void Scene::update() { terrain->update(pos.x, pos.z); + + // sort players once a second + if(SDL_GetTicks() - last_sort > 1000) { + sort_players(); + last_sort = SDL_GetTicks(); + } } void Scene::events() { @@ -521,8 +528,21 @@ void Scene::render() { glEnd(); glPopMatrix(); + // player rendering + glPushMatrix(); + glTranslatef(-pos.x, -pos.y, -pos.z); + glColor3f(1, 1, 1); + + font->FaceSize(30); + for(PlayerList::iterator it = players.begin(); it != players.end(); it++) { + (*it)->render(font, steps, placeholder_texture); + } + + glPopMatrix(); + // HUD video::ortho(); + font->FaceSize(10); float height = font->LineHeight(); glColor3f(1, 1, 1); glTranslatef(0, video::height-height, 0); @@ -577,3 +597,11 @@ GLuint Scene::load_texture(const char *filename) { return texture; } + +static bool playerlist_sort(Vector3 pos, Player::p a, Player::p b) { + return (a->get_pos() - pos).length() > (b->get_pos() - pos).length(); +} + +void Scene::sort_players() { + players.sort(boost::bind(&playerlist_sort, pos, _1, _2)); +} -- cgit v1.2.3