void TESTVC::clbkSaveState(FILEHANDLE scn)
{
// ORBITER, default vessel parameters
char cbuf[256];
SaveDefaultState(scn);
sprintf(cbuf, "%d %0.4f", CARGO1_status, CARGO1_proc);
oapiWriteScenario_string(scn, "CARGO1", cbuf);
sprintf(cbuf, "%d %0.4f", CARGO2_status, CARGO2_proc);
oapiWriteScenario_string(scn, "CARGO2", cbuf);
sprintf(cbuf, "%d %0.4f", CARGO3_status, CARGO3_proc);
oapiWriteScenario_string(scn, "CARGO3", cbuf);
sprintf(cbuf, "%d %0.4f", CARGO4_status, CARGO4_proc);
oapiWriteScenario_string(scn, "CARGO4", cbuf);
sprintf(cbuf, "%d %0.4f", CARGO5_status, CARGO5_proc);
oapiWriteScenario_string(scn, "CARGO5", cbuf);
sprintf(cbuf, "%d %0.4f", CARGO6_status, CARGO6_proc);
oapiWriteScenario_string(scn, "CARGO6", cbuf);
sprintf(cbuf, "%d %0.4f", CARGO7_status, CARGO7_proc);
oapiWriteScenario_string(scn, "CARGO7", cbuf);
sprintf(cbuf, "%d %0.4f", CARGO8_status, CARGO8_proc);
oapiWriteScenario_string(scn, "CARGO8", cbuf);
sprintf(cbuf, "%d %0.4f", CARGO9_status, CARGO9_proc);
oapiWriteScenario_string(scn, "CARGO9", cbuf);
sprintf(cbuf, "%d %0.4f", CARGO10_status, CARGO10_proc);
oapiWriteScenario_string(scn, "CARGO10", cbuf);
sprintf(cbuf, "%d %0.4f", CARGO11_status, CARGO11_proc);
oapiWriteScenario_string(scn, "CARGO11", cbuf);
sprintf(cbuf, "%d %0.4f", CARGO12_status, CARGO12_proc);
oapiWriteScenario_string(scn, "CARGO12", cbuf);
sprintf(cbuf, "%d %0.4f", CARGO13_status, CARGO13_proc);
oapiWriteScenario_string(scn, "CARGO13", cbuf);
sprintf(cbuf, "%d %0.4f", CARGO14_status, CARGO14_proc);
oapiWriteScenario_string(scn, "CARGO14", cbuf);
sprintf(cbuf, "%d %0.4f", CARGO15_status, CARGO15_proc);
oapiWriteScenario_string(scn, "CARGO15", cbuf);
sprintf(cbuf, "%d %0.4f", CARGO16_status, CARGO16_proc);
oapiWriteScenario_string(scn, "CARGO16", cbuf);
sprintf(cbuf, "%d ", PODSel);
oapiWriteScenario_string(scn, "POD", cbuf);
Crew.SaveAllMembersInOrbiterScenarios(scn);
}
void TESTVC::clbkLoadStateEx(FILEHANDLE scn, void *status)
{
char *line;
while (oapiReadScenario_nextline(scn, 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 (!_strnicmp(line, "CARGO1", 6)) {
sscanf(line + 6, "%d%lf", &CARGO1_status, &CARGO1_proc);
}
if (!_strnicmp(line, "CARGO2", 6)) {
sscanf(line + 6, "%d%lf", &CARGO2_status, &CARGO2_proc);
}
if (!_strnicmp(line, "CARGO3", 6)) {
sscanf(line + 6, "%d%lf", &CARGO3_status, &CARGO3_proc);
}
if (!_strnicmp(line, "CARGO4", 6)) {
sscanf(line + 6, "%d%lf", &CARGO4_status, &CARGO4_proc);
}
if (!_strnicmp(line, "CARGO5", 6)) {
sscanf(line + 6, "%d%lf", &CARGO5_status, &CARGO5_proc);
}
if (!_strnicmp(line, "CARGO6", 6)) {
sscanf(line + 6, "%d%lf", &CARGO6_status, &CARGO6_proc);
}
if (!_strnicmp(line, "CARGO7", 6)) {
sscanf(line + 6, "%d%lf", &CARGO7_status, &CARGO7_proc);
}
if (!_strnicmp(line, "CARGO8", 6)) {
sscanf(line + 6, "%d%lf", &CARGO8_status, &CARGO8_proc);
}
if (!_strnicmp(line, "CARGO9", 6)) {
sscanf(line + 6, "%d%lf", &CARGO9_status, &CARGO9_proc);
}
if (!_strnicmp(line, "10CARGO", 7)) {
sscanf(line + 7, "%d%lf", &CARGO10_status, &CARGO10_proc);
}
if (!_strnicmp(line, "11CARGO", 7)) {
sscanf(line + 7, "%d%lf", &CARGO11_status, &CARGO11_proc);
}
if (!_strnicmp(line, "12CARGO", 7)) {
sscanf(line + 7, "%d%lf", &CARGO12_status, &CARGO12_proc);
}
if (!_strnicmp(line, "13CARGO", 7)) {
sscanf(line + 7, "%d%lf", &CARGO13_status, &CARGO13_proc);
}
if (!_strnicmp(line, "14CARGO", 7)) {
sscanf(line + 7, "%d%lf", &CARGO14_status, &CARGO14_proc);
}
if (!_strnicmp(line, "15CARGO", 7)) {
sscanf(line + 7, "%d%lf", &CARGO15_status, &CARGO15_proc);
}
if (!_strnicmp(line, "16CARGO", 7)) {
sscanf(line + 7, "%d%lf", &CARGO16_status, &CARGO16_proc);
}
if (!_strnicmp(line, "POD", 3)) {
sscanf(line + 3, "%d", &PODSel);
}
// ORBITER, unrecognised option - pass to Orbiter's generic parser
ParseScenarioLineEx(line, status);
CARGO1_pos.z = CARGO1_INT_POS - (CARGO1_proc * 5);
CARGO2_pos.z = CARGO2_INT_POS - (CARGO2_proc * 5);
CARGO3_pos.z = CARGO3_INT_POS - (CARGO3_proc * 5);
CARGO4_pos.z = CARGO4_INT_POS - (CARGO4_proc * 5);
CARGO5_pos.z = CARGO5_INT_POS - (CARGO5_proc * 5);
CARGO6_pos.z = CARGO6_INT_POS - (CARGO6_proc * 5);
CARGO7_pos.z = CARGO7_INT_POS - (CARGO7_proc * 5);
CARGO8_pos.z = CARGO8_INT_POS - (CARGO8_proc * 5);
CARGO9_pos.z = CARGO9_INT_POS - (CARGO9_proc * 5);
CARGO10_pos.z = CARGO10_INT_POS - (CARGO10_proc * 5);
CARGO11_pos.z = CARGO11_INT_POS - (CARGO11_proc * 5);
CARGO12_pos.z = CARGO12_INT_POS - (CARGO12_proc * 5);
CARGO13_pos.z = CARGO13_INT_POS - (CARGO13_proc * 5);
CARGO14_pos.z = CARGO14_INT_POS - (CARGO14_proc * 5);
CARGO15_pos.z = CARGO15_INT_POS - (CARGO15_proc * 5);
CARGO16_pos.z = CARGO16_INT_POS - (CARGO16_proc * 5);
SetAttachmentParams(CARGO1, CARGO1_pos, _V(0, -1, 0), _V(0, 0, -1));
SetAttachmentParams(CARGO2, CARGO2_pos, _V(0, -1, 0), _V(0, 0, -1));
SetAttachmentParams(CARGO3, CARGO3_pos, _V(-.866, -.5, 0), _V(0, 0, -1));
SetAttachmentParams(CARGO4, CARGO4_pos, _V(-.866, -.5, 0), _V(0, 0, -1));
SetAttachmentParams(CARGO5, CARGO5_pos, _V(-1, 0, 0), _V(0, 0, -1));
SetAttachmentParams(CARGO6, CARGO6_pos, _V(-1, 0, 0), _V(0, 0, -1));
SetAttachmentParams(CARGO7, CARGO7_pos, _V(-.866, .5, 0), _V(0, 0, -1));
SetAttachmentParams(CARGO8, CARGO8_pos, _V(-.866, .5, 0), _V(0, 0, -1));
SetAttachmentParams(CARGO9, CARGO9_pos, _V(0, 1, 0), _V(0, 0, -1));
SetAttachmentParams(CARGO10, CARGO10_pos, _V(0, 1, 0), _V(0, 0, -1));
SetAttachmentParams(CARGO11, CARGO11_pos, _V(.866, .5, 0), _V(0, 0, -1));
SetAttachmentParams(CARGO12, CARGO12_pos, _V(.866, .5, 0), _V(0, 0, -1));
SetAttachmentParams(CARGO13, CARGO13_pos, _V(1, 0, 0), _V(0, 0, -1));
SetAttachmentParams(CARGO14, CARGO14_pos, _V(1, 0, 0), _V(0, 0, -1));
SetAttachmentParams(CARGO15, CARGO15_pos, _V(.866, -.5, 0), _V(0, 0, -1));
SetAttachmentParams(CARGO16, CARGO16_pos, _V(.866, -.5, 0), _V(0, 0, -1));
}
// 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
}