void DOLPHIN::clbkSaveState(FILEHANDLE scn)
{
char cbuf[256];
// ORBITER, default vessel parameters
SaveDefaultState (scn);
hUcgo.SaveCargoToScenario(scn);
sprintf (cbuf, "%d %0.4f", GEAR_status, GEAR_proc);
oapiWriteScenario_string (scn, "GEAR", cbuf);
//sprintf (cbuf, "%d %0.4f", GEAR1_status, GEAR1_proc);
//oapiWriteScenario_string (scn, "GEAR1", cbuf);
sprintf (cbuf, " %0.4f", CABLE_proc);
oapiWriteScenario_string (scn, "CABLE", cbuf);
sprintf (cbuf, "%d %0.4f", DOOR_status, DOOR_proc);
oapiWriteScenario_string (scn, "DOOR", cbuf);
sprintf (cbuf, "%d %0.4f", GEARCOVER_status, GEARCOVER_proc);
oapiWriteScenario_string (scn, "GEARCOVER", cbuf);
// UMmu, this will save all our members of crew in scenario
// as airlock state depend of your ship (you may have a real animated airlock)
// it's your responsabilites to save and reload UMmu's airlock state.
Crew.SaveAllMembersInOrbiterScenarios(scn);
}
void DOLPHIN::clbkLoadStateEx (FILEHANDLE scn, void *status)
{
char *line;
while (oapiReadScenario_nextline (scn, line))
{
// call this method to let PayloadManager to load its internal parameters
PM_LoadState(line);
// UMMU, Load all saved member from scenario.
// Return TRUE when a "UMMUCREW" line is encountered
// FALSE when it must pass this line to you or default parser
if(Crew.LoadAllMembersFromOrbiterScenario(line)==TRUE)
continue;
if(hUcgo.LoadCargoFromScenario(line)==TRUE) // UCGO load cargo
continue;
if (!_strnicmp (line, "GEAR", 4)) {
sscanf (line+4, "%d%lf", &GEAR_status, &GEAR_proc);
}
if (!_strnicmp (line, "CABLE", 5)) {
sscanf (line+5, "%lf", &CABLE_proc);
}
if (!_strnicmp (line, "DOOR", 4)) {
sscanf (line+4, "%d%lf", &DOOR_status, &DOOR_proc);
}
if (!_strnicmp (line, "GEARCOVER", 9)) {
sscanf (line+9, "%d%lf", &GEARCOVER_status, &GEARCOVER_proc);
}
// ORBITER, unrecognised option - pass to Orbiter's generic parser
// ORBITER, unrecognised option - pass to Orbiter's generic parser
ParseScenarioLineEx (line, status);
}
SetAnimation (anim_GEAR, GEAR_proc);
SetAnimation (anim_GEARCOVER, GEARCOVER_proc);
SetAnimation (anim_DOOR, DOOR_proc);
SetAnimation (anim_CABLE, CABLE_proc);
SetAnimation (anim_CABLE1, CABLE_proc);
// as airlock state depend of your ship (you may have a real animated airlock)
// it's your responsabilites to save and reload UMmu airlock state and set it accordingly
// to your airlock. IE: call here "SetAirlockDoorState" TRUE of FALSE depend
// of your animated airlock
}