[Gcblue-commits] gcb_wx/src/ai tcCAPMission.cpp, 1.1, 1.2 tcMission.cpp, 1.1, 1.2 tcMissionManager.
Status: Alpha
Brought to you by:
ddcforge
From: Dewitt C. <ddc...@us...> - 2006-10-01 21:07:45
|
Update of /cvsroot/gcblue/gcb_wx/src/ai In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv6071/src/ai Modified Files: tcCAPMission.cpp tcMission.cpp tcMissionManager.cpp Log Message: Airbase automation updates Index: tcMission.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/ai/tcMission.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** tcMission.cpp 28 Sep 2006 02:01:54 -0000 1.1 --- tcMission.cpp 1 Oct 2006 21:07:40 -0000 1.2 *************** *** 35,38 **** --- 35,63 ---- unsigned long tcMission::nextId = 1; + /** + * @return true if all mission aircraft do not exist within flightport + * Normally this occurs when all have launched (could also be due to damage) + */ + bool tcMission::AllMissionAircraftDeparted() const + { + for (size_t n=0; n<missionAircraft.size(); n++) + { + if (missionManager->GetAircraft(missionAircraft[n]) != 0) + { + return false; + } + } + + return true; + } + + /** + * End mission (safely deletes from mission manager) + */ + void tcMission::EndMission() + { + missionManager->DeleteMission(id); + } + unsigned int tcMission::GetId() const { Index: tcCAPMission.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/ai/tcCAPMission.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** tcCAPMission.cpp 28 Sep 2006 02:01:53 -0000 1.1 --- tcCAPMission.cpp 1 Oct 2006 21:07:40 -0000 1.2 *************** *** 101,104 **** --- 101,108 ---- { // verify all aircraft have launched and end mission + if (AllMissionAircraftDeparted()) + { + EndMission(); + } } Index: tcMissionManager.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/ai/tcMissionManager.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** tcMissionManager.cpp 28 Sep 2006 02:01:54 -0000 1.1 --- tcMissionManager.cpp 1 Oct 2006 21:07:40 -0000 1.2 *************** *** 45,48 **** --- 45,53 ---- } + void tcMissionManager::DeleteMission(unsigned int missionId) + { + missionsToDelete.push_back(missionId); + } + tcAirObject* tcMissionManager::GetAircraft(long id) { *************** *** 95,98 **** --- 100,134 ---- + /** + * Called internally to perform queued deletions + */ + void tcMissionManager::PerformDeletions() + { + if (missionsToDelete.size() == 0) return; + + std::vector<tcMission*> temp; + + for (size_t n=0; n<missions.size(); n++) + { + unsigned int missionId = missions[n]->GetId(); + bool deleteMatch = false; + for (size_t k=0; (k<missionsToDelete.size()) && (!deleteMatch); k++) + { + if (missionsToDelete[k] == missionId) deleteMatch = true; + } + + if (!deleteMatch) + { + temp.push_back(missions[n]); + } + else + { + delete missions[n]; + } + } + + missions = temp; + } + void tcMissionManager::Update(double t) { *************** *** 104,107 **** --- 140,147 ---- missions[n]->Update(t); } + + PerformDeletions(); + + UpdateReserved(); } |