Newbie-Frage
-
Hallo zusammen!
Es geht um folgendes: ich programmiere gerade an einem Addon fuer dem MS-Flight Simulator X. Um jetzt die Aircraft-Systeme umzusetzen benoetige ich einerseits die FS-internen Variablen und andererseits meine Eigenen. Bisher hatte ich das ueber globale Variablen geloest was ich aber nun vermeiden moechte. Nun habe ich mir eine Klasse geschrieben die alle Daten enthaelt, sowohl die FS-internen als auch meine. Meine Eigenen muss ich aber veraendern koennen. Folgendes habe ich versucht:
simdata.h:
class SimData { public: virtual bool GenOneActive() = 0; virtual bool GenOneDriveConnected(int x) = 0; };simdata_fsx.h
class SimData_FSX : public SimData { MODULE_VAR gen_one_active_var; // MODULE_VAR ist eine FS-interne Variable public: bool GenOneActive(); bool GenOneDriveConnected(int x); };simdata_fsx.cpp
SimData_FSX::SimData_FSX() { gen_one_active_var.id = GENERAL_ENGINE1_GENERATOR_ACTIVE; } bool SimData_FSX::GenOneActive() { lookup_var(&gen_one_active_var); // hier lese ich die interne FS-Variable aus return gen_one_active_var.var_value.n; } bool SimData_FSX::GenOneDriveConnected(int x) { return x; // x moechte ich von ausserhalb selbst veraendern }Innerhalb einer Gauge-Callback Funktion in moechte ich SimData_FSX::GenOneDriveConnected veraendern.
overhead.cpp
GAUGE_CALLBACK overhead_gauge_cb; SimData_FSX DataOverhead; void FSAPI overhead_gauge_cb (PGAUGEHDR pgauge, int service_id, UINT32 extra_data) { switch(service_id) case PANEL_SERVICE_PRE_UPDATE: { if(LgenDriveConnected == FALSE) { DataOverhead.GenOneDriveConnected(0); } else { DataOverhead.GenOneDriveConnected(1); } } break; }Frage 1: funktioniert das so ueberhaupt?
Frage 2: Ich moechte den return-Wert von bool SimData_FSX::GenOneDriveConnected(int x) an anderer Stelle verwenden. Bei den FS-internen Variablen geht das z.B. so:case PANEL_SERVICE_PRE_DRAW: { if(!DataOverhead.MainBatteryOn()) { SHOW_LISTELEMENT(pgauge->elements_list[0], 6);// Batt Off Sign } else { HIDE_LISTELEMENT(pgauge->elements_list[0], 6);// Batt Off Sign } } break;Hoffe ihr habt verstanden was ich tun moechte und koennt mir weiterhelfen. Habe schon im Forum gesucht und einige C++ - Tutorials gelesen. Den richtigen Weg dafuer habe ich trotzdem noch nicht gefunden.
Viele Gruesse
Sven
-
Zu viel Sourcecode und keiner weiß eigentlich was du willst. Schon allein der Threadtitel ist nichtssagend, den Thread klickt niemand freiwillig an.