Irrlicht - from Noob to Pro: GUI.hpp

Aus Wikibooks
using namespace irr;
using namespace gui;
using namespace core;

#ifndef GUI_H_INCLUDED
#define GUI_H_INCLUDED
#include "DatenSonnenSystem.h"
#include <exception>

IGUIWindow* GUI_InfoWindow = 0;//Für das Info-Fenster
IGUIStaticText* GUI_Info_Text = 0; //Text des Info-Fensters
IGUIWindow* GUI_HelpWindow = 0; //Für das Hilfe-Fenster
IGUIStaticText* GUI_Help_Text = 0; //Text des Hilfe-Fensters
//Die erste Zeile des Hilfe-Fensters
core::stringw tempStr(L"Steuerung ueber das Hauptmenue\n"); 

//Für die Zeitberechnung
u32 uDeltaTime = 1000; //Berechnungszeitabstand (Delta)
u32 uZuletztGestoppt = 0; //Zeitpunkt der letzten Messung
u32 uZuAddierendeZeit = 1; //Zu addierende Zeit in Sekunden
u32 uAktuellerPlanet = 3; //Welcher Planet soll verfolgt werden ? 0=Sonne
bool bZeigeGitter = true; //Soll das Gitter angezeigt werden ?

core::stringw FormatiereFloat(f32 fWert, char FormStr[])
{
	char buf[30];
	snprintf(buf,sizeof(buf),FormStr,fWert);
	core::stringw swRes;
	swRes += buf;
	return swRes;
};

enum
{
	GUID_BEENDE_PROGRAMM = 101, //Datei -> Beenden
	GUID_HILFE,					//-> Hilfe
	GUID_GEHEZU_SONNE,			//Anzeigen -> Sonne
	GUID_GEHEZU_MERKUR,			//Anzeigen -> Merkur
	GUID_GEHEZU_VENUS,			//Anzeigen -> Venus
	GUID_GEHEZU_ERDE,			//Anzeigen -> Erde
	GUID_GEHEZU_MARS,			//Anzeigen -> Mars
	GUID_GEHEZU_JUPITER,		//Anzeigen -> Jupiter
	GUID_GEHEZU_SATURN,			//Anzeigen -> Saturn
	GUID_GEHEZU_URANUS,			//Anzeigen -> Uranus
	GUID_GEHEZU_NEPTUN,			//Anzeigen -> Neptun
	GUID_GEHEZU_PLUTO,			//Anzeigen -> Pluto	
	GUID_ZEITRECHUNG_ALLE10MS,		//Datei -> Zeitsteuerung -> Positionsberechnung alle 10 ms
	GUID_ZEITRECHUNG_ALLE20MS,		//Datei -> Zeitsteuerung -> Positionsberechnung alle 20 ms
	GUID_ZEITRECHUNG_ALLE50MS,		//...
	GUID_ZEITRECHUNG_ALLE100MS,
	GUID_ZEITRECHUNG_ALLE500MS,
	GUID_ZEITRECHUNG_ALLE1000MS,
	GUID_ZEITRECHUNG_1SEK_IST_1SEK,		//Datei -> Zeitsteuerung -> 1 Sekunde = 1 Sekunde
	GUID_ZEITRECHUNG_1SEK_IST_1MIN,		//Datei -> Zeitsteuerung -> 1 Sekunde = 1 Minute
	GUID_ZEITRECHUNG_1SEK_IST_1STD,		//Datei -> Zeitsteuerung -> 1 Sekunde = 1 Stunde
	GUID_ZEITRECHUNG_1SEK_IST_1TAG,		//...
	GUID_ZEITRECHUNG_1SEK_IST_2TAGE,
	GUID_ZEITRECHUNG_1SEK_IST_1WOCHE,
	GUID_ZEITRECHUNG_1SEK_IST_2WOCHEN,
	GUID_ZEITRECHUNG_1SEK_IST_3WOCHEN,
	GUID_ZEITRECHUNG_1SEK_IST_4WOCHEN
};

// Deklarieren einer Struktur zum Speichern
// Des Irrlicht-Kontexts zum Zugriff innerhalb der
// OnEvent()-Ereignisbehandlung
struct SAppContext
{
	IrrlichtDevice *device;	
};


class MyEventReceiver : public IEventReceiver
{
public:
	MyEventReceiver(SAppContext & context) : Context(context) { }

	virtual bool OnEvent(const SEvent& event)
	{	
		
		//Tastendruck abfangen
		if (event.EventType == EET_KEY_INPUT_EVENT &&
			event.KeyInput.PressedDown == false)
		{
			if ( OnKeyUp(event.KeyInput.Key) )
				return true;
		}	
		
		//GUI-Messages abfangen
		if (event.EventType == EET_GUI_EVENT)
		{
			s32 id = event.GUIEvent.Caller->getID();
			IGUIEnvironment* env = Context.device->getGUIEnvironment();
			switch(event.GUIEvent.EventType)
			{
			case EGET_MENU_ITEM_SELECTED:
					//Ein Menüeintrag wurde selektiert
					OnMenuItemSelected( (IGUIContextMenu*)event.GUIEvent.Caller );
				break;
			default:
				break;
			}
		}
		return false;
	}
	
	//Routine zum verarbeiten von Tastatureingaben
	bool OnKeyUp(irr::EKEY_CODE keyCode)
	{
		if (keyCode == irr::KEY_ESCAPE)
		{
			Context.device->closeDevice();
			return true;
		}
	return false;
	}

	//Ereignisbehandlung : Menüpunkt ausgewählt.
	void OnMenuItemSelected( IGUIContextMenu* menu )
	{
		s32 id = menu->getItemCommandId(menu->getSelectedItem());
		IGUIEnvironment* env = Context.device->getGUIEnvironment();
		switch(id)
		{
		case GUID_BEENDE_PROGRAMM: //Datei -> Beenden
			Context.device->closeDevice();
			break;
		case GUID_HILFE: //Hilfe
			GUI_HelpWindow = env->addWindow(
							 rect<s32>(350,50,750,200),false,L"Hilfe");
			tempStr += "\nLinke Maustaste halten = Blickrichtung aendern";
			tempStr += "\nMittlere Maustaste halten und die Maus vertikal bewegen =";
			tempStr += "Zommfaktor aendern";
			GUI_Help_Text = env->addStaticText(tempStr.c_str(),rect<s32>(5, 20, 300, 300),false,true,GUI_HelpWindow,-1,false);
			break;
		case GUID_GEHEZU_SONNE : //Anzeigen -> Sonne
			Context.device->getSceneManager()->getActiveCamera()->setTarget(
				Context.device->getSceneManager()->getSceneNodeFromId(1001)->getAbsolutePosition());
			uAktuellerPlanet = 0;
			break;
		case GUID_GEHEZU_MERKUR : //Anzeigen -> Merkur
			Context.device->getSceneManager()->getActiveCamera()->setTarget(
				Context.device->getSceneManager()->getSceneNodeFromId(1004)->getAbsolutePosition());
			uAktuellerPlanet = 1;
			break;
		case GUID_GEHEZU_VENUS : //Anzeigen -> Venus
			Context.device->getSceneManager()->getActiveCamera()->setTarget(
				Context.device->getSceneManager()->getSceneNodeFromId(1005)->getAbsolutePosition());
			uAktuellerPlanet = 2;
			break;
		case GUID_GEHEZU_ERDE : //Anzeigen -> Erde
			Context.device->getSceneManager()->getActiveCamera()->setTarget(
				Context.device->getSceneManager()->getSceneNodeFromId(1002)->getAbsolutePosition());
			uAktuellerPlanet = 3;
			break;
		case GUID_GEHEZU_MARS : //Anzeigen -> Mars
			Context.device->getSceneManager()->getActiveCamera()->setTarget(
				Context.device->getSceneManager()->getSceneNodeFromId(1006)->getAbsolutePosition());
			uAktuellerPlanet = 4;
			break;
		case GUID_GEHEZU_JUPITER : //Anzeigen -> Jupiter
			Context.device->getSceneManager()->getActiveCamera()->setTarget(
				Context.device->getSceneManager()->getSceneNodeFromId(1007)->getAbsolutePosition());
			uAktuellerPlanet = 5;
			break;
		case GUID_GEHEZU_SATURN : //Anzeigen -> Saturn
			Context.device->getSceneManager()->getActiveCamera()->setTarget(
				Context.device->getSceneManager()->getSceneNodeFromId(1008)->getAbsolutePosition());
			uAktuellerPlanet = 6;
			break;
		case GUID_GEHEZU_URANUS : //Anzeigen -> Uranus
			Context.device->getSceneManager()->getActiveCamera()->setTarget(
				Context.device->getSceneManager()->getSceneNodeFromId(1009)->getAbsolutePosition());
			uAktuellerPlanet = 7;
			break;
		case GUID_GEHEZU_NEPTUN : //Anzeigen -> Neptun
			Context.device->getSceneManager()->getActiveCamera()->setTarget(
				Context.device->getSceneManager()->getSceneNodeFromId(1010)->getAbsolutePosition());
			uAktuellerPlanet = 8;
			break;
		case GUID_GEHEZU_PLUTO : //Anzeigen -> Pluto
			Context.device->getSceneManager()->getActiveCamera()->setTarget(
				Context.device->getSceneManager()->getSceneNodeFromId(1011)->getAbsolutePosition());
			uAktuellerPlanet = 9;
			break;
		case GUID_ZEITRECHUNG_1SEK_IST_1SEK: uZuAddierendeZeit = 1; //1 Sekunde = 1 Sekunde			
			break;
		case GUID_ZEITRECHUNG_1SEK_IST_1MIN: uZuAddierendeZeit = 60; //1 Sekunde = 60 Sekunden
			break;
		case GUID_ZEITRECHUNG_1SEK_IST_1STD: uZuAddierendeZeit = 3600; //1 Sekunde = 3600 Sekunden
			break;
		case GUID_ZEITRECHUNG_1SEK_IST_1TAG: uZuAddierendeZeit = 86400; //1 Sekunde = 86400 Sekunden
			break;
		case GUID_ZEITRECHUNG_1SEK_IST_2TAGE: uZuAddierendeZeit = 172800; //1 Sekunde = 172800 Sekunden
			break;
		case GUID_ZEITRECHUNG_1SEK_IST_1WOCHE: uZuAddierendeZeit = 604800; //1 Sekunde = 604800 Sekunden
			break;
		case GUID_ZEITRECHUNG_1SEK_IST_2WOCHEN: uZuAddierendeZeit = 1209600; //1 Sekunde = 1209600 Sekunden
			break;
		case GUID_ZEITRECHUNG_1SEK_IST_3WOCHEN: uZuAddierendeZeit = 1814400; //1 Sekunde = 1814400 Sekunden
			break;
		case GUID_ZEITRECHUNG_1SEK_IST_4WOCHEN: uZuAddierendeZeit = 2419200; //1 Sekunde = 2419200 Sekunden
			break;
		case GUID_ZEITRECHUNG_ALLE10MS: uDeltaTime = 10; break;
		case GUID_ZEITRECHUNG_ALLE20MS: uDeltaTime = 20; break;
		case GUID_ZEITRECHUNG_ALLE50MS: uDeltaTime = 50; break;
		case GUID_ZEITRECHUNG_ALLE100MS: uDeltaTime = 100; break;
		case GUID_ZEITRECHUNG_ALLE500MS: uDeltaTime = 500; break;
		case GUID_ZEITRECHUNG_ALLE1000MS: uDeltaTime = 1000; break;
		}
	}

private:
	SAppContext & Context;
};

void Erstelle_GUI(gui::IGUIEnvironment *guienv)
{	
	IGUISkin* skin = guienv->getSkin(); //Zeiger auf Oberfläche holen
	IGUIFont* font = guienv->getFont("FranklinGothic12.xml"); //Zeiger auf geladene Font
	if (font) //Font erstellt ?
		skin->setFont(font); //Font zuweisen
	
	// Erstelle das Hauptmenü (Haupteinträge)
	gui::IGUIContextMenu* menu = guienv->addMenu();
	
	menu->addItem(L"Datei", -1, true, true);	//Haupteintrag "Datei"
	menu->addItem(L"Anzeigen", -1, true, true);	//Haupteintrag "Anzeigen"
	menu->addItem(L"Hilfe", -1, true, true);	//Haupteintrag "Hilfe"
		
	// Erstelle Untermenüs (Hauptmenüeintrag "Datei")
	gui::IGUIContextMenu* submenu;
	submenu = menu->getSubMenu(0);
	submenu->addItem(L"Zeitsteuerung", -1, true, true);	
	submenu->addSeparator();
	submenu->addItem(L"Beenden", GUID_BEENDE_PROGRAMM);
	// Erstelle Untermenüeinträge für "Datei" -> "Zeitsteuerung"
	submenu = submenu->getSubMenu(0);
	submenu->addItem(L"Positionsberechnung alle 10 ms", GUID_ZEITRECHUNG_ALLE10MS);
	submenu->addItem(L"Positionsberechnung alle 20 ms", GUID_ZEITRECHUNG_ALLE20MS);
	submenu->addItem(L"Positionsberechnung alle 50 ms", GUID_ZEITRECHUNG_ALLE50MS);
	submenu->addItem(L"Positionsberechnung alle 100 ms", GUID_ZEITRECHUNG_ALLE100MS);
	submenu->addItem(L"Positionsberechnung alle 500 ms", GUID_ZEITRECHUNG_ALLE500MS);
	submenu->addItem(L"Positionsberechnung alle 1 Sekunden", GUID_ZEITRECHUNG_ALLE1000MS);
	submenu->addSeparator();
	submenu->addItem(L"1 Sekunde = 1 Sekunde", GUID_ZEITRECHUNG_1SEK_IST_1SEK);
	submenu->addItem(L"1 Sekunde = 1 Minute", GUID_ZEITRECHUNG_1SEK_IST_1MIN);
	submenu->addItem(L"1 Sekunde = 1 Stunde", GUID_ZEITRECHUNG_1SEK_IST_1STD);
	submenu->addItem(L"1 Sekunde = 1 Tag", GUID_ZEITRECHUNG_1SEK_IST_1TAG);
	submenu->addItem(L"1 Sekunde = 2 Tage", GUID_ZEITRECHUNG_1SEK_IST_2TAGE);
	submenu->addItem(L"1 Sekunde = 1 Woche", GUID_ZEITRECHUNG_1SEK_IST_1WOCHE);
	submenu->addItem(L"1 Sekunde = 2 Wochen", GUID_ZEITRECHUNG_1SEK_IST_2WOCHEN);
	submenu->addItem(L"1 Sekunde = 3 Wochen", GUID_ZEITRECHUNG_1SEK_IST_3WOCHEN);
	submenu->addItem(L"1 Sekunde = 4 Wochen", GUID_ZEITRECHUNG_1SEK_IST_4WOCHEN);

	// Erstelle Untermenüeinträge (Hauptmenüeintrag "Anzeigen")
	submenu = menu->getSubMenu(1);
	submenu->addItem(L"Sonne", GUID_GEHEZU_SONNE);
	submenu->addItem(L"Merkur", GUID_GEHEZU_MERKUR);
	submenu->addItem(L"Venus", GUID_GEHEZU_VENUS);
	submenu->addItem(L"Erde", GUID_GEHEZU_ERDE);
	submenu->addItem(L"Mars", GUID_GEHEZU_MARS);
	submenu->addItem(L"Jupiter", GUID_GEHEZU_JUPITER);
	submenu->addItem(L"Saturn", GUID_GEHEZU_SATURN);	
	submenu->addItem(L"Uranus", GUID_GEHEZU_URANUS);
	submenu->addItem(L"Neptun", GUID_GEHEZU_NEPTUN);
	submenu->addItem(L"Pluto", GUID_GEHEZU_PLUTO);
	
	//Erstelle Untermenüs (Hauptmenüeintrag "Hilfe")	
	submenu = menu->getSubMenu(2);
	submenu->addItem(L"Hilfe anzeigen", GUID_HILFE);

	//Erstelle Info-Fenster	
	GUI_InfoWindow = guienv->addWindow(
		rect<s32>(0,50,350,400),false,L"Info - Fenster");
	//Den Schliessen-Button verstecken.
	GUI_InfoWindow->getCloseButton()->setVisible(false);
	//Den Text des Fensters hinzufügen (nur erste Zeile)
	GUI_Info_Text = guienv->addStaticText(
		 L"Info-Fenster",rect<s32>(5, 20, 300, 400),false,true,GUI_InfoWindow,-1,false);

	//Alle GUI-Alpha-Werte gleich setzen
	for (u32 i=0; i<EGDC_COUNT ; ++i)
					{
						//Farbwert abholen
						video::SColor col = guienv->getSkin()->getColor((EGUI_DEFAULT_COLOR)i);
						col.setAlpha(240); //Alpha auf 240 setzen (255 = undurchsichtig)
						//Farbwert neu setzen
						guienv->getSkin()->setColor((EGUI_DEFAULT_COLOR)i, col);
					}

};

void Erstelle_Info_Text(f32 fJulianischesDatum, struct tm *LokalZeit)
{	
	core::stringw tmp(L"Simuliertes Datum : ");
	tmp += LokalZeit->tm_mday; tmp += ".";
	tmp += LokalZeit->tm_mon+1; tmp += ".";
	tmp += LokalZeit->tm_year+1900;
	tmp	+= L"\nSimulierte Uhrzeit : ";
	tmp += LokalZeit->tm_hour; tmp += " : ";
	tmp += LokalZeit->tm_min; tmp += " : ";	
	tmp += LokalZeit->tm_sec; tmp += " ";	
	tmp += "\nJulianisches Datum: ";
	tmp += fJulianischesDatum;
	tmp += "\n1 Sekunde = "; tmp += uZuAddierendeZeit; tmp += " Sekunde(n)";
	tmp += "\nZeitrechnung alle "; tmp += uDeltaTime; tmp += " Millisekunden";
	tmp += "\n-------------------------------";
	tmp += "\nAusgewaehlter Planet : ";
	switch(uAktuellerPlanet)
	{
	case 0: tmp += "Sonne"; 
			tmp += "\nDurchmesser (km): "; tmp += (int)Info_Sonne.f_Durchmesser;						
			tmp += "\nDauer 360°-Rotation (Tage) : "; 
			tmp += FormatiereFloat(Info_Sonne.f_Rotation,"%.2f");			
		break;
	case 1: tmp += "Merkur"; 
			tmp += "\nDurchmesser (km): "; tmp += (int)Info_Merkur.f_Durchmesser;						
			tmp += "\nDauer 360°-Rotation (Tage) : "; 
			tmp += FormatiereFloat(Info_Merkur.f_Rotation,"%.2f");
			tmp += "\nPeriphel (km) : "; tmp += (int)Info_Merkur.f_Periphel;
			tmp += "\nAphel (km) : "; tmp += (int)Info_Merkur.f_Aphel;
			tmp += "\nNeigung Bahnebene (Grad) : ";
			tmp += FormatiereFloat(Info_Merkur.f_NeigungBahnebene, "%.2f");
			tmp += "\nMittleres Tempo (km/h) : ";
			tmp += FormatiereFloat((Info_Merkur.f_OrbitalGeschwindigkeit * 3600.0f), "%.2f");
		break;
	case 2: tmp += "Venus";
			tmp += "\nDurchmesser (km): "; tmp += (int)Info_Venus.f_Durchmesser;						
			tmp += "\nDauer 360°-Rotation (Tage) : "; 
			tmp += FormatiereFloat(Info_Venus.f_Rotation,"%.2f");
			tmp += "\nPeriphel (km) : "; tmp += (int)Info_Venus.f_Periphel;
			tmp += "\nAphel (km) : "; tmp += (int)Info_Venus.f_Aphel;
			tmp += "\nNeigung Bahnebene (Grad) : ";
			tmp += FormatiereFloat(Info_Venus.f_NeigungBahnebene, "%.2f");
			tmp += "\nMittleres Tempo (km/h) : ";
			tmp += FormatiereFloat((Info_Venus.f_OrbitalGeschwindigkeit * 3600.0f), "%.2f");
			break;
	case 3: tmp += "Erde"; 
			tmp += "\nDurchmesser (km): "; tmp += (int)Info_Erde.f_Durchmesser;						
			tmp += "\nDauer 360°-Rotation (Tage) : "; 
			tmp += FormatiereFloat(Info_Erde.f_Rotation,"%.2f");
			tmp += "\nPeriphel (km) : "; tmp += (int)Info_Erde.f_Periphel;
			tmp += "\nAphel (km) : "; tmp += (int)Info_Erde.f_Aphel;
			tmp += "\nNeigung Bahnebene (Grad) : ";
			tmp += FormatiereFloat(Info_Erde.f_NeigungBahnebene, "%.2f");
			tmp += "\nMittleres Tempo (km/h) : ";
			tmp += FormatiereFloat((Info_Erde.f_OrbitalGeschwindigkeit * 3600.0f), "%.2f");			
		break;
	case 4: tmp += "Mars"; 
			tmp += "\nDurchmesser (km): "; tmp += (int)Info_Mars.f_Durchmesser;						
			tmp += "\nDauer 360°-Rotation (Tage) : "; 
			tmp += FormatiereFloat(Info_Mars.f_Rotation,"%.2f");
			tmp += "\nPeriphel (km) : "; tmp += (int)Info_Mars.f_Periphel;
			tmp += "\nAphel (km) : "; tmp += (int)Info_Mars.f_Aphel;
			tmp += "\nNeigung Bahnebene (Grad) : ";
			tmp += FormatiereFloat(Info_Mars.f_NeigungBahnebene, "%.2f");
			tmp += "\nMittleres Tempo (km/h) : ";
			tmp += FormatiereFloat((Info_Mars.f_OrbitalGeschwindigkeit * 3600.0f), "%.2f");
		break;
	case 5: tmp += "Jupiter"; 
			tmp += "\nDurchmesser (km): "; tmp += (int)Info_Jupiter.f_Durchmesser;						
			tmp += "\nDauer 360°-Rotation (Tage) : "; 
			tmp += FormatiereFloat(Info_Jupiter.f_Rotation,"%.2f");
			tmp += "\nPeriphel (km) : "; tmp += (int)Info_Jupiter.f_Periphel;
			tmp += "\nAphel (km) : "; tmp += (int)Info_Jupiter.f_Aphel;
			tmp += "\nNeigung Bahnebene (Grad) : ";
			tmp += FormatiereFloat(Info_Jupiter.f_NeigungBahnebene, "%.2f");
			tmp += "\nMittleres Tempo (km/h) : ";
			tmp += FormatiereFloat((Info_Jupiter.f_OrbitalGeschwindigkeit * 3600.0f), "%.2f");
		break;
	case 6: tmp += "Saturn"; 
			tmp += "\nDurchmesser (km): "; tmp += (int)Info_Saturn.f_Durchmesser;						
			tmp += "\nDauer 360°-Rotation (Tage) : "; 
			tmp += FormatiereFloat(Info_Saturn.f_Rotation,"%.2f");
			tmp += "\nPeriphel (km) : "; tmp += (int)Info_Saturn.f_Periphel;
			tmp += "\nAphel (km) : "; tmp += (int)Info_Saturn.f_Aphel;
			tmp += "\nNeigung Bahnebene (Grad) : ";
			tmp += FormatiereFloat(Info_Saturn.f_NeigungBahnebene, "%.2f");
			tmp += "\nMittleres Tempo (km/h) : ";
			tmp += FormatiereFloat((Info_Saturn.f_OrbitalGeschwindigkeit * 3600.0f), "%.2f");
		break;
	case 7: tmp += "Uranus"; 
			tmp += "\nDurchmesser (km): "; tmp += (int)Info_Uranus.f_Durchmesser;						
			tmp += "\nDauer 360°-Rotation (Tage) : "; 
			tmp += FormatiereFloat(Info_Uranus.f_Rotation,"%.2f");
			tmp += "\nPeriphel (Mio. km) : "; tmp += (int)(Info_Uranus.f_Periphel / 1000);
			tmp += "\nAphel (Mio. km) : "; tmp += (int)(Info_Uranus.f_Aphel / 1000);
			tmp += "\nNeigung Bahnebene (Grad) : ";
			tmp += FormatiereFloat(Info_Uranus.f_NeigungBahnebene, "%.2f");
			tmp += "\nMittleres Tempo (km/h) : ";
			tmp += FormatiereFloat((Info_Uranus.f_OrbitalGeschwindigkeit * 3600.0f), "%.2f");
		break;
	case 8: tmp += "Neptun"; 
			tmp += "\nDurchmesser (km): "; tmp += (int)Info_Neptun.f_Durchmesser;						
			tmp += "\nDauer 360°-Rotation (Tage) : "; 
			tmp += FormatiereFloat(Info_Neptun.f_Rotation,"%.2f");
			tmp += "\nPeriphel (Mio. km) : "; tmp += (int)(Info_Neptun.f_Periphel / 1000);
			tmp += "\nAphel (Mio. km) : "; tmp += (int)(Info_Neptun.f_Aphel / 1000);
			tmp += "\nNeigung Bahnebene (Grad) : ";
			tmp += FormatiereFloat(Info_Neptun.f_NeigungBahnebene, "%.2f");
			tmp += "\nMittleres Tempo (km/h) : ";
			tmp += FormatiereFloat((Info_Neptun.f_OrbitalGeschwindigkeit * 3600.0f), "%.2f");
		break;
	case 9: tmp += "Pluto"; 
			tmp += "\nDurchmesser (km): "; tmp += (int)Info_Pluto.f_Durchmesser;						
			tmp += "\nDauer 360°-Rotation (Tage) : "; 
			tmp += FormatiereFloat(Info_Pluto.f_Rotation,"%.2f");
			tmp += "\nPeriphel (Mio. km) : "; tmp += (int)(Info_Pluto.f_Periphel / 1000);
			tmp += "\nAphel (Mio. km) : "; tmp += (int)(Info_Pluto.f_Aphel / 1000);
			tmp += "\nNeigung Bahnebene (Grad) : ";
			tmp += FormatiereFloat(Info_Pluto.f_NeigungBahnebene, "%.2f");
			tmp += "\nMittleres Tempo (km/h) : ";
			tmp += FormatiereFloat((Info_Pluto.f_OrbitalGeschwindigkeit * 3600.0f), "%.2f");
		break;		
	};	
	tmp += "\nMassstab : 1:"; 
	tmp += (int)fMassstab;
	if (GUI_InfoWindow) GUI_Info_Text->setText(tmp.c_str());	
};


#endif