|
Inventar
Registriert seit: 11.06.2001
Alter: 39
Beiträge: 2.397
|
Hallo!
Also zuallererst einmal: Ich bin kein C Gauges Designer, ich mach meine Gauges mit XML. Diese sind viel schneller gebaut, und für den Freeware Bereich reichen sie allemal aus(von der Komplexität her).
Weil ein FMC mit XML zu realisieren ist nicht möglich. Aber das möchte ich auch garnicht!
Lade dir das SDK herunter, dort sind einige Bsp. drinnen. HIER
Und auf Flightsim.com findest du das Gauges Tuturial von Dai Griffits. Musst ein bisschen suchen. Aber es lohnt sich allemal, weil dort wirklich alles erklärt ist.
Und im "IdeHowTo" wird erklärt, wie man mit dem MS Visual Studio die Gauges "compiled". Zu finden auf Flightsim.com.
Ich jedenfalls bleibe nach einem kleinen Exkurs zu den C gauges doch bei "meinen" XML Gauges.
Bei XML kann ich dir weiterhelfen, bei C gauges frag leiber im Avsim Forum nach!
Viele Grüße
Harri
P.S.:Und damit du ungefähr weißt, mit was du es hier zu tun hast, hier ein kurzer Ausschnitt aus dem SDK Gauge! Das ist nur das eigentliche (Sub-)Gauge. Man braucht dann noch ein .c, wo alle Subgauges registriert werden, dann noch ein paar .h, und dann noch die Bilder. Alles zusammenmischen und dann hoffen, dass man nicht 55Errors bekommt.
// SDK.Attitude.c
// Copyright (c) 2000 Microsoft Corporation(auweh, das heißt nie was gutes). All rights reserved.(jaja, wer klaut euch den schon euren fehlerhaften Source Code...?)
// Set up gauge header
char attitude_gauge_name[] = GAUGE_NAME;
extern PELEMENT_HEADER attitude_list;
extern MOUSERECT attitude_mouse_rect[];
GAUGE_HEADER_FS700(GAUGE_W, attitude_gauge_name, &attitude_list, \
attitude_mouse_rect, 0, 0, 0, 0);
/////////////////////////////////////////////////////////////////////////////
FAILURE_RECORD attitude_fail[] =
{
{FAIL_GAUGE_ATTITUDE, FAIL_ACTION_NONE},
{FAIL_NONE, FAIL_ACTION_NONE}
};
/////////////////////////////////////////////////////////////////////////////
MAKE_SPRITE
(
attitude_sprite_outer,
BMP_ATTITUDE_SMALL_CARD2,
NULL,
attitude_fail,
IMAGE_USE_TRANSPARENCY|IMAGE_BILINEAR_COLOR,
0,
16, 13,
137,134,
1.05, 1.05,
MODULE_VAR_NONE, NULL, 0,
MODULE_VAR_NONE, NULL, 0,
ATTITUDE_INDICATOR_BANK_DEGREES, NULL, -1
)
PELEMENT_HEADER attitude_sprite_outer_list[] =
{
&attitude_sprite_outer.header,
NULL
};
/////////////////////////////////////////////////////////////////////////////
#define PITCH_LIMIT 43.0 // stop at 43 degrees
FLOAT64 FSAPI attitude_sprite_inner_cb( PELEMENT_SPRITE pelement )
{
FLOAT64 val = pelement->source_var_y.var_value.n;
if( val > PITCH_LIMIT )
val = PITCH_LIMIT;
else if( val < -PITCH_LIMIT )
val = -PITCH_LIMIT;
return val;
}
MAKE_SPRITE
(
attitude_sprite_inner,
BMP_ATTITUDE_SMALL_CARD1,
attitude_sprite_outer_list,
attitude_fail,
IMAGE_USE_TRANSPARENCY|IMAGE_BILINEAR_COLOR,
0,
55, 53,
137, 134,
0.55, 0.55,
MODULE_VAR_NONE, NULL, 0,
ATTITUDE_INDICATOR_PITCH_DEGREES, attitude_sprite_inner_cb, 2.0,
ATTITUDE_INDICATOR_BANK_DEGREES, NULL, -1
)
PELEMENT_HEADER attitude_sprite_inner_list[] =
{
&attitude_sprite_inner.header,
NULL
};
/////////////////////////////////////////////////////////////////////////////
MAKE_STATIC
(
attitude_background,
BMP_ATTITUDE_SMALL_BACKGROUND,
attitude_sprite_inner_list,
attitude_fail,
IMAGE_USE_TRANSPARENCY,
0,
0,0
)
PELEMENT_HEADER attitude_list = &attitude_background.header;
/////////////////////////////////////////////////////////////////////////////
MOUSE_BEGIN( attitude_mouse_rect, HELPID_GAUGE_ATTITUDE_INDICATOR, 0, 0 )
MOUSE_END
/////////////////////////////////////////////////////////////////////////////
#undef GAUGE_NAME
#undef GAUGEHDR_VAR_NAME
#undef GAUGE_W
|