class shipptrs *shipptrs::getshipptrs() { OBJHANDLE hcraft=oapiGetFocusObject(); class shipptrs *ptr=findship(hcraft); if (ptr==NULL) ptr=new shipptrs(); return ptr; }
ship *getship(const struct region * r) { ship *sh, *sx = findship(getshipid()); for (sh = r->ships; sh; sh = sh->next) { if (sh == sx) return sh; } return NULL; }
void shipptrs::restoreallships(FILEHANDLE scn) { char *buffer,*member; Parser parser; int length; while (oapiReadScenario_nextline(scn,buffer)) { parser.parseline(buffer); bool ok=parser.getlineelement(0,&member,&length); if (!ok) return; if (strcmp("Ship",member)==0) { if (!parser.getlineelement(1,&member,&length)) return;//return if ship label doesn't exist if (length>30) return;//return if ship label is bad class shipptrs *temp=findship(member); if (temp==NULL) { OBJHANDLE temphandle=oapiGetVesselByName(member); if (temphandle!=NULL) temp=new shipptrs(temphandle); } if (temp!=NULL) temp->restorecurrent(scn); } } }
class shipptrs *shipptrs::findship(OBJHANDLE hcraft) { char tname[30]; oapiGetObjectName(hcraft,tname,30); return findship(tname); }