[Gcblue-commits] gcb_wx/src/database tcDatabase.cpp,1.28,1.29 tcMissileDBObject.cpp,1.18,1.19 tcSens
Status: Alpha
Brought to you by:
ddcforge
|
From: Dewitt C. <ddc...@us...> - 2005-06-22 01:22:24
|
Update of /cvsroot/gcblue/gcb_wx/src/database In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2354/src/database Modified Files: tcDatabase.cpp tcMissileDBObject.cpp tcSensorDBObject.cpp Log Message: Misc housekeeping, updates for infrared and anti-radiation seekers, more info for multiplayer airfield units, icon gui enhancements Index: tcMissileDBObject.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/database/tcMissileDBObject.cpp,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** tcMissileDBObject.cpp 1 Jun 2005 00:13:29 -0000 1.18 --- tcMissileDBObject.cpp 22 Jun 2005 01:22:08 -0000 1.19 *************** *** 66,82 **** } ! long tcMissileDBObject::GetPrimarySeekerKey() { wxASSERT(database); ! if (primarySeekerKey != NULL_INDEX) return primarySeekerKey; ! primarySeekerKey = database->GetKey(maSensorClass[0]); // do not report error for missiles with no sensor (e.g. some AGMs) ! if ((primarySeekerKey == NULL_INDEX) && (strlen(maSensorClass[0].mz) > 0)) { ! fprintf(stderr, "tcMissileDBObject::GetPrimarySeekerKey -- not found " ! "(%s)\n", maSensorClass[0].mz); } ! return primarySeekerKey; } --- 66,82 ---- } ! long tcMissileDBObject::GetSensorKey() { wxASSERT(database); ! if (sensorKey != NULL_INDEX) return sensorKey; ! sensorKey = database->GetKey(maSensorClass); // do not report error for missiles with no sensor (e.g. some AGMs) ! if ((sensorKey == NULL_INDEX) && (strlen(maSensorClass.mz) > 0)) { ! fprintf(stderr, "tcMissileDBObject::GetSensorKey -- not found " ! "(%s)\n", maSensorClass.mz); } ! return sensorKey; } *************** *** 88,92 **** if (seekerFOV_rad >= 0) return seekerFOV_rad; ! long seekerKey = GetPrimarySeekerKey(); tcDatabaseObject* obj = database->GetObject(seekerKey); if (tcSensorDBObject* sensor = dynamic_cast<tcSensorDBObject*>(obj)) --- 88,92 ---- if (seekerFOV_rad >= 0) return seekerFOV_rad; ! long seekerKey = GetSensorKey(); tcDatabaseObject* obj = database->GetObject(seekerKey); if (tcSensorDBObject* sensor = dynamic_cast<tcSensorDBObject*>(obj)) *************** *** 115,119 **** unsigned int nEmitters = emitters.size(); ! long seekerKey = GetPrimarySeekerKey(); for (unsigned int k=0; k<nEmitters; k++) --- 115,119 ---- unsigned int nEmitters = emitters.size(); ! long seekerKey = GetSensorKey(); for (unsigned int k=0; k<nEmitters; k++) *************** *** 127,130 **** --- 127,138 ---- /** + * @return true if this missile relies on a fire control sensor from the parent platform for any of its guidance + */ + bool tcMissileDBObject::NeedsFireControl() const + { + return needsFireControl; + } + + /** * workaround for write serialization issue * @return true if db obj is a leaf obj *************** *** 170,175 **** file.Read(&mfRange_km,sizeof(mfRange_km)); file.Read(&mfShutdownSpeed_mps,sizeof(mfShutdownSpeed_mps)); ! maSensorClass[0].Serialize(file,mbLoad); ! maSensorClass[1].Serialize(file,mbLoad); file.Read(&mnNumSegments,sizeof(mnNumSegments)); if (mnNumSegments > MAX_MISSILE_FLIGHT_SEGMENTS) --- 178,182 ---- file.Read(&mfRange_km,sizeof(mfRange_km)); file.Read(&mfShutdownSpeed_mps,sizeof(mfShutdownSpeed_mps)); ! maSensorClass.Serialize(file,mbLoad); file.Read(&mnNumSegments,sizeof(mnNumSegments)); if (mnNumSegments > MAX_MISSILE_FLIGHT_SEGMENTS) *************** *** 203,208 **** file.Write(&mfRange_km,sizeof(mfRange_km)); file.Write(&mfShutdownSpeed_mps,sizeof(mfShutdownSpeed_mps)); ! maSensorClass[0].Serialize(file,mbLoad); ! maSensorClass[1].Serialize(file,mbLoad); file.Write(&mnNumSegments,sizeof(mnNumSegments)); for(unsigned i=0;i<mnNumSegments;i++) { --- 210,214 ---- file.Write(&mfRange_km,sizeof(mfRange_km)); file.Write(&mfShutdownSpeed_mps,sizeof(mfShutdownSpeed_mps)); ! maSensorClass.Serialize(file,mbLoad); file.Write(&mnNumSegments,sizeof(mnNumSegments)); for(unsigned i=0;i<mnNumSegments;i++) { *************** *** 240,245 **** *csv >> mfRange_km; *csv >> mfShutdownSpeed_mps; ! *csv >> s; maSensorClass[0] = s.c_str(); ! *csv >> s; maSensorClass[1] = s.c_str(); mnNumSegments = 0; for(unsigned i=0;i<MAX_MISSILE_FLIGHT_SEGMENTS;i++) --- 246,251 ---- *csv >> mfRange_km; *csv >> mfShutdownSpeed_mps; ! *csv >> s; maSensorClass = s.c_str(); ! mnNumSegments = 0; for(unsigned i=0;i<MAX_MISSILE_FLIGHT_SEGMENTS;i++) *************** *** 262,266 **** // set other params that do not come from database file ! primarySeekerKey = NULL_INDEX; } else --- 268,272 ---- // set other params that do not come from database file ! sensorKey = NULL_INDEX; } else *************** *** 285,290 **** *csv << mfRange_km; *csv << mfShutdownSpeed_mps; ! *csv << std::string(maSensorClass[0].mz); ! *csv << std::string(maSensorClass[1].mz); for(unsigned i=0;i<MAX_MISSILE_FLIGHT_SEGMENTS;i++) { --- 291,296 ---- *csv << mfRange_km; *csv << mfShutdownSpeed_mps; ! *csv << std::string(maSensorClass.mz); ! for(unsigned i=0;i<MAX_MISSILE_FLIGHT_SEGMENTS;i++) { *************** *** 340,345 **** localNode->SetAttribute("range_km", mfRange_km); localNode->SetAttribute("shutdownSpeed_mps", mfShutdownSpeed_mps); ! localNode->SetAttribute("primarySensor", maSensorClass[0].mz); ! localNode->SetAttribute("secondarySensor", maSensorClass[1].mz); for(unsigned int i=0;(i<mnNumSegments)&&(i<MAX_MISSILE_FLIGHT_SEGMENTS);i++) --- 346,350 ---- localNode->SetAttribute("range_km", mfRange_km); localNode->SetAttribute("shutdownSpeed_mps", mfShutdownSpeed_mps); ! localNode->SetAttribute("primarySensor", maSensorClass.mz); for(unsigned int i=0;(i<mnNumSegments)&&(i<MAX_MISSILE_FLIGHT_SEGMENTS);i++) *************** *** 428,433 **** columnString += "Range_km number(5),"; columnString += "ShutdownSpeed_mps number(5),"; ! columnString += "SensorClass1 varchar(30),"; ! columnString += "SensorClass2 varchar(30),"; for(unsigned i=0;i<MAX_MISSILE_FLIGHT_SEGMENTS;i++) --- 433,438 ---- columnString += "Range_km number(5),"; columnString += "ShutdownSpeed_mps number(5),"; ! columnString += "SensorClass varchar(30),"; ! columnString += "NeedsFireControl number(1),"; for(unsigned i=0;i<MAX_MISSILE_FLIGHT_SEGMENTS;i++) *************** *** 475,480 **** mfRange_km = entry.GetDouble("Range_km"); mfShutdownSpeed_mps = entry.GetDouble("ShutdownSpeed_mps"); ! maSensorClass[0] = entry.GetString("SensorClass1").c_str(); ! maSensorClass[1] = entry.GetString("SensorClass2").c_str(); mnNumSegments = 0; --- 480,485 ---- mfRange_km = entry.GetDouble("Range_km"); mfShutdownSpeed_mps = entry.GetDouble("ShutdownSpeed_mps"); ! maSensorClass = entry.GetString("SensorClass").c_str(); ! needsFireControl = entry.GetInt("NeedsFireControl") != 0; mnNumSegments = 0; *************** *** 500,504 **** // set other params that do not come from database file ! primarySeekerKey = NULL_INDEX; } --- 505,509 ---- // set other params that do not come from database file ! sensorKey = NULL_INDEX; } *************** *** 529,534 **** s << mfRange_km << ","; s << mfShutdownSpeed_mps << ","; ! s << "'" << std::string(maSensorClass[0].mz) << "',"; ! s << "'" << std::string(maSensorClass[1].mz) << "',"; for(unsigned i=0;i<MAX_MISSILE_FLIGHT_SEGMENTS;i++) --- 534,539 ---- s << mfRange_km << ","; s << mfShutdownSpeed_mps << ","; ! s << "'" << std::string(maSensorClass.mz) << "',"; ! s << needsFireControl << ","; for(unsigned i=0;i<MAX_MISSILE_FLIGHT_SEGMENTS;i++) *************** *** 587,592 **** mfRange_km = obj.mfRange_km; ! maSensorClass[0] = obj.maSensorClass[0]; ! maSensorClass[1] = obj.maSensorClass[1]; mnNumSegments = obj.mnNumSegments; --- 592,597 ---- mfRange_km = obj.mfRange_km; ! maSensorClass = obj.maSensorClass; ! needsFireControl = obj.needsFireControl; mnNumSegments = obj.mnNumSegments; *************** *** 595,599 **** maFlightProfile[i] = obj.maFlightProfile[i]; } ! primarySeekerKey = NULL_INDEX; } --- 600,604 ---- maFlightProfile[i] = obj.maFlightProfile[i]; } ! sensorKey = NULL_INDEX; } *************** *** 625,630 **** mfRange_km = 123.4f; // sensor info ! maSensorClass[0] = ""; ! maSensorClass[1] = ""; // flight profile, array of flight segment info mnNumSegments = 1; --- 630,636 ---- mfRange_km = 123.4f; // sensor info ! maSensorClass = ""; ! needsFireControl = false; ! // flight profile, array of flight segment info mnNumSegments = 1; *************** *** 633,637 **** maFlightProfile[0].meAltitudeMode = AM_ASL; maFlightProfile[0].meGuidanceMode = GM_COMMAND; ! primarySeekerKey = NULL_INDEX; } --- 639,643 ---- maFlightProfile[0].meAltitudeMode = AM_ASL; maFlightProfile[0].meGuidanceMode = GM_COMMAND; ! sensorKey = NULL_INDEX; } Index: tcSensorDBObject.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/database/tcSensorDBObject.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** tcSensorDBObject.cpp 1 Jun 2005 00:13:29 -0000 1.12 --- tcSensorDBObject.cpp 22 Jun 2005 01:22:08 -0000 1.13 *************** *** 191,216 **** ! tcSensorDBObject::tcSensorDBObject() : tcDatabaseObject() { mzClass = "Default Sensor"; mnClassID = DTYPE_SENSOR; ! mfMaxRange_km = 100.0f; ! mfRefRange_km = 80.0f; ! mfFieldOfView_deg = 360.0f; ! mfScanPeriod_s = 4.0f; ! isSurveillance = true; } tcSensorDBObject::tcSensorDBObject(tcSensorDBObject& obj) ! : tcDatabaseObject(obj) { mnClassID = DTYPE_SENSOR; - - mfMaxRange_km = obj.mfMaxRange_km; - mfRefRange_km = obj.mfRefRange_km; - mfFieldOfView_deg = obj.mfFieldOfView_deg; - mfScanPeriod_s = obj.mfScanPeriod_s; - isSurveillance = obj.isSurveillance; } --- 191,216 ---- ! tcSensorDBObject::tcSensorDBObject() : tcDatabaseObject(), ! mfMaxRange_km(100.0f), ! mfRefRange_km(80.0f), ! mfFieldOfView_deg(360.0f), ! mfScanPeriod_s(4.0f), ! isSurveillance(true) { mzClass = "Default Sensor"; mnClassID = DTYPE_SENSOR; ! } tcSensorDBObject::tcSensorDBObject(tcSensorDBObject& obj) ! : tcDatabaseObject(obj), ! mfMaxRange_km(obj.mfMaxRange_km), ! mfRefRange_km(obj.mfRefRange_km), ! mfFieldOfView_deg(obj.mfFieldOfView_deg), ! mfScanPeriod_s(obj.mfScanPeriod_s), ! isSurveillance(obj.isSurveillance) { mnClassID = DTYPE_SENSOR; } Index: tcDatabase.cpp =================================================================== RCS file: /cvsroot/gcblue/gcb_wx/src/database/tcDatabase.cpp,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** tcDatabase.cpp 12 Jun 2005 20:46:57 -0000 1.28 --- tcDatabase.cpp 22 Jun 2005 01:22:07 -0000 1.29 *************** *** 520,736 **** } - void tcDatabase::CreateDefaultDB() { - tnPoolIndex nKey; - tcGenericDBObject *pgeneric; - tcLauncherDBObject *plauncher; - - int nResult; - - mcObjectData.RemoveAll(); - - pgeneric = new tcGenericDBObject; - strcpy(pgeneric->mzClass.mz,"Destroyer"); - pgeneric->mfMaxSpeed_kts = 30; - pgeneric->mfAccel_ktsps = 1; - pgeneric->mfTurnRate_degps = 2; - pgeneric->mnType = PTYPE_LARGESURFACE; - pgeneric->mnModelType = MTYPE_SURFACE; - mcObjectData.AddElement(pgeneric,nKey); - pgeneric->mnKey = nKey; - - pgeneric = new tcGenericDBObject; - strcpy(pgeneric->mzClass.mz,"Cruiser"); - pgeneric->mfMaxSpeed_kts = 32; - pgeneric->mfAccel_ktsps = 1; - pgeneric->mfTurnRate_degps = 1; - pgeneric->mnType = PTYPE_LARGESURFACE; - pgeneric->mnModelType = MTYPE_SURFACE; - pgeneric->mnNumLaunchers = 1; - pgeneric->maLauncherClass[0] = "ML1"; - mcObjectData.AddElement(pgeneric,nKey); - pgeneric->mnKey = nKey; - - pgeneric = new tcGenericDBObject; - strcpy(pgeneric->mzClass.mz,"Patrol Boat"); - pgeneric->mfMaxSpeed_kts = 50; - pgeneric->mfAccel_ktsps = 2; - pgeneric->mfTurnRate_degps = 5; - pgeneric->mnType = PTYPE_SMALLSURFACE; - pgeneric->mnModelType = MTYPE_SURFACE; - mcObjectData.AddElement(pgeneric,nKey); - pgeneric->mnKey = nKey; - - pgeneric = new tcGenericDBObject; - strcpy(pgeneric->mzClass.mz,"Aircraft"); - pgeneric->mfMaxSpeed_kts = 500; - pgeneric->mfAccel_ktsps = 10; - pgeneric->mfTurnRate_degps = 20; - pgeneric->mnType = PTYPE_FIXEDWING; - pgeneric->mnModelType = MTYPE_AIR; - mcObjectData.AddElement(pgeneric,nKey); - pgeneric->mnKey = nKey; - - pgeneric = new tcGenericDBObject; - strcpy(pgeneric->mzClass.mz,"Missile"); - pgeneric->mfMaxSpeed_kts = 1400; - pgeneric->mfAccel_ktsps = 100; - pgeneric->mfTurnRate_degps = 30; - pgeneric->mfAltitudeRate_mps = 20.0f; - pgeneric->mnType = PTYPE_MISSILE; - pgeneric->mnModelType = MTYPE_MISSILE; - pgeneric->mnNumLaunchers = 0; - pgeneric->maLauncherClass[0] = "NONE"; - mcObjectData.AddElement(pgeneric,nKey); - pgeneric->mnKey = nKey; - - pgeneric = new tcGenericDBObject; - strcpy(pgeneric->mzClass.mz,"Missile2"); - pgeneric->mfMaxSpeed_kts = 1400; - pgeneric->mfAccel_ktsps = 100; - pgeneric->mfTurnRate_degps = 30; - pgeneric->mnType = PTYPE_MISSILE; - pgeneric->mnModelType = MTYPE_MISSILE; - pgeneric->mnNumLaunchers = 0; - pgeneric->maLauncherClass[0] = "NONE"; - mcObjectData.AddElement(pgeneric,nKey); - pgeneric->mnKey = nKey; - - pgeneric = new tcGenericDBObject; - strcpy(pgeneric->mzClass.mz,"Carrier 1"); - pgeneric->mfMaxSpeed_kts = 29; - pgeneric->mfAccel_ktsps = 2; - pgeneric->mfTurnRate_degps = 1; - pgeneric->mnType = PTYPE_LARGESURFACE; - pgeneric->mnModelType = MTYPE_SURFACE; - mcObjectData.AddElement(pgeneric,nKey); - pgeneric->mnKey = nKey; - - pgeneric = new tcGenericDBObject; - strcpy(pgeneric->mzClass.mz,"Submarine 1"); - pgeneric->mfMaxSpeed_kts = 35; - pgeneric->mfAccel_ktsps = 2; - pgeneric->mfTurnRate_degps = 1; - pgeneric->mnType = PTYPE_SUBMARINE; - pgeneric->mnModelType = MTYPE_SUBMARINE; - mcObjectData.AddElement(pgeneric,nKey); - pgeneric->mnKey = nKey; - - pgeneric = new tcGenericDBObject; - strcpy(pgeneric->mzClass.mz,"Torpedo 1"); - pgeneric->mfMaxSpeed_kts = 42; - pgeneric->mfAccel_ktsps = 2; - pgeneric->mfTurnRate_degps = 1; - pgeneric->mnType = PTYPE_TORPEDO; - pgeneric->mnModelType = MTYPE_TORPEDO; - mcObjectData.AddElement(pgeneric,nKey); - pgeneric->mnKey = nKey; - - pgeneric = new tcGenericDBObject; - strcpy(pgeneric->mzClass.mz,"Helo 1"); - pgeneric->mfMaxSpeed_kts = 150; - pgeneric->mfAccel_ktsps = 2; - pgeneric->mfTurnRate_degps = 5; - pgeneric->mnType = PTYPE_HELO; - pgeneric->mnModelType = MTYPE_HELO; - mcObjectData.AddElement(pgeneric,nKey); - pgeneric->mnKey = nKey; - - pgeneric = new tcGenericDBObject; - strcpy(pgeneric->mzClass.mz,"Fixed Wing 1"); - pgeneric->mfMaxSpeed_kts = 350; - pgeneric->mfAccel_ktsps = 5; - pgeneric->mfTurnRate_degps = 7; - pgeneric->mnType = PTYPE_FIXEDWING; - pgeneric->mnModelType = MTYPE_FIXEDWING; - pgeneric->mnNumLaunchers = 1; - pgeneric->maLauncherClass[0] = "ML1"; - mcObjectData.AddElement(pgeneric,nKey); - pgeneric->mnKey = nKey; - - pgeneric = new tcGenericDBObject; - strcpy(pgeneric->mzClass.mz,"Fixed 1"); - pgeneric->mfMaxSpeed_kts = 0; - pgeneric->mfAccel_ktsps = 1; - pgeneric->mfTurnRate_degps = 1; - pgeneric->mnType = PTYPE_FIXED; - pgeneric->mnModelType = MTYPE_FIXED; - mcObjectData.AddElement(pgeneric,nKey); - pgeneric->mnKey = nKey; - - plauncher = new tcLauncherDBObject; - plauncher->mzClass = "ML1"; - plauncher->mzChildClass = "Missile"; - plauncher->mnCapacity = 10; - mcObjectData.AddElement(plauncher,nKey); - plauncher->mnKey = nKey; - - tcMissileDBObject *pmissile = new tcMissileDBObject; - pmissile->mnClassID = DTYPE_MISSILE; - pgeneric->mnModelType = MTYPE_MISSILE; - pmissile->mzClass = "Inspired Dart"; - // flight model - pmissile->mfMass_kg = 100.0f; - pmissile->mfDragArea_sm = 1.0f; - pmissile->mfGmax = 20.0f; - pmissile->mfMaxTurnRate_degps = 15.0f; - pmissile->mfCdpsub = 0.2f; - pmissile->mfCdptran = 0.4f; - pmissile->mfCdpsup = 0.3f; - pmissile->mfMcm = 0.9f; - pmissile->mfMsupm = 1.1f; - pmissile->mfKdi = 0.1f; - pmissile->mfBoostThrust_N = 4000.0f; - pmissile->mfBoostTime_s = 20.0f; - pmissile->mfSustThrust_N = 400.0f; - pmissile->mfSustTime_s = 60.0f; - pmissile->mfShutdownSpeed_mps = 400.0f; - // other parameters - pmissile->mfDamage = 100.0f; - //pmissile->meDamageType = DT_GENERIC; - pmissile->mfRcs_dbsm = 0.0f; - pmissile->mfRange_km = 123.4f; - // sensor info - pmissile->maSensorClass[0] = ""; - pmissile->maSensorClass[1] = ""; - // flight profile, array of flight segment info - pmissile->mnNumSegments = 1; - pmissile->maFlightProfile[0].mfRange_km = 0.0f; - pmissile->maFlightProfile[0].mfAltitude_m = 10000.0f; - pmissile->maFlightProfile[0].meAltitudeMode = AM_ASL; - pmissile->maFlightProfile[0].meGuidanceMode = GM_COMMAND; - mcObjectData.AddElement(pmissile,nKey); - pmissile->mnKey = nKey; - - tcRadarDBObject* pRadarDBObj = new tcRadarDBObject; - pRadarDBObj->mzClass = "Airborne radar"; - mcObjectData.AddElement(pRadarDBObj,nKey); - pRadarDBObj->mnKey = nKey; - - pRadarDBObj = new tcRadarDBObject; - pRadarDBObj->mzClass = "Surface radar"; - pRadarDBObj->mfRefRange_km = 50.0f; - mcObjectData.AddElement(pRadarDBObj,nKey); - pRadarDBObj->mnKey = nKey; - - /* store to new database */ - tcFile file; - nResult = file.Open("defaultdb.dat", tcFile::modeCreate|tcFile::modeWrite); - if (nResult==false) { - MessageBox(NULL,"Error - failed to open defaultdb.dat","Error",MB_OK); - return; - } - - nResult = Serialize(file,false); - file.Close(); - if (nResult==false) { - MessageBox(NULL,"tcDatabase - CreateDefaultDB - serialization error","Error",MB_OK); - return; - } - } /** * creates default object of class anClassID */ ! int tcDatabase::CreateObjectByType(UINT anClassID) { tnPoolIndex nKey; --- 520,529 ---- } /** * creates default object of class anClassID */ ! int tcDatabase::CreateObjectByType(UINT anClassID) ! { tnPoolIndex nKey; |