| Line 11... | Line 11... | 
          
            | 11 | {
 | 11 | {
 | 
          
            | 12 | 	this->ClearLists();
 | 12 | 	this->ClearLists();
 | 
          
            | 13 | }
 | 13 | }
 | 
          
            | 14 |  
 | 14 |  
 | 
          
            | 15 |  
 | 15 |  
 | 
          
            | 16 | CyString CShipData::CreateData()
 | 16 | Utils::String CShipData::createData() const
 | 
          
            | 17 | {
 | 17 | {
 | 
          
            | 18 | 	CyStringdata = this->sModel;
 | 18 | 	Utils::String data = this->sModel;
 | 
          
            | 19 | 	data.AddToken(";",CyString::Number(this->iPictureID));
 | 19 | 	data.addToken(";", Utils::String::Number(this->iPictureID));
 | 
          
            | 20 | 	data.AddToken(";",CyString::CreateFromFloat(this->fRotX, -1));
 | 20 | 	data.addToken(";", Utils::String::FromFloat(this->fRotX, -1));
 | 
          
            | 21 | 	data.AddToken(";",CyString::CreateFromFloat(this->fRotY, -1));
 | 21 | 	data.addToken(";", Utils::String::FromFloat(this->fRotY, -1));
 | 
          
            | 22 | 	data.AddToken(";",CyString::CreateFromFloat(this->fRotZ, -1));
 | 22 | 	data.addToken(";", Utils::String::FromFloat(this->fRotZ, -1));
 | 
          
            | 23 | 	data.AddToken(";", CShipData::ConvertShipSubType(this->iSubType));
 | 23 | 	data.addToken(";", CShipData::ConvertShipSubType(this->iSubType));
 | 
          
            | 24 | 	data.AddToken(";",CyString::Number(this->iDesc));
 | 24 | 	data.addToken(";", Utils::String::Number(this->iDesc));
 | 
          
            | 25 | 	data.AddToken(";",CyString::Number(this->iSpeed));
 | 25 | 	data.addToken(";", Utils::String::Number(this->iSpeed));
 | 
          
            | 26 | 	data.AddToken(";",CyString::Number(this->iAccel));
 | 26 | 	data.addToken(";", Utils::String::Number(this->iAccel));
 | 
          
            | 27 | 	data.AddToken(";",CyString::Number(this->iEngineSound));
 | 27 | 	data.addToken(";", Utils::String::Number(this->iEngineSound));
 | 
          
            | 28 | 	data.AddToken(";",CyString::Number(this->iReactionDelay));
 | 28 | 	data.addToken(";", Utils::String::Number(this->iReactionDelay));
 | 
          
            | 29 | 	data.AddToken(";",CyString::Number(this->iEngineEffect));
 | 29 | 	data.addToken(";", Utils::String::Number(this->iEngineEffect));
 | 
          
            | 30 | 	data.AddToken(";",CyString::Number(this->iEngineGlow));
 | 30 | 	data.addToken(";", Utils::String::Number(this->iEngineGlow));
 | 
          
            | 31 | 	data.AddToken(";",CyString::Number(this->iPower));
 | 31 | 	data.addToken(";", Utils::String::Number(this->iPower));
 | 
          
            | 32 | 	data.AddToken(";",CyString::Number(this->iSoundMin));
 | 32 | 	data.addToken(";", Utils::String::Number(this->iSoundMin));
 | 
          
            | 33 | 	data.AddToken(";",CyString::Number(this->iSoundMax));
 | 33 | 	data.addToken(";", Utils::String::Number(this->iSoundMax));
 | 
          
            | 34 | 	data.AddToken(";", this->sModelScene);
 | 34 | 	data.addToken(";", this->sModelScene);
 | 
          
            | 35 | 	data.AddToken(";", this->sCockpitScene);
 | 35 | 	data.addToken(";", this->sCockpitScene);
 | 
          
            | 36 | 	data.AddToken(";",CyString::Number(this->iLaserMask));
 | 36 | 	data.addToken(";", Utils::String::Number(this->iLaserMask));
 | 
          
            | 37 | 	data.AddToken(";",CyString::Number(this->iGunCount));
 | 37 | 	data.addToken(";", Utils::String::Number(this->iGunCount));
 | 
          
            | 38 | 	data.AddToken(";",CyString::Number(this->iLaserEnergy));
 | 38 | 	data.addToken(";", Utils::String::Number(this->iLaserEnergy));
 | 
          
            | 39 | 	data.AddToken(";",CyString::CreateFromFloat(this->fLaserRecharge, -1));
 | 39 | 	data.addToken(";", Utils::String::FromFloat(this->fLaserRecharge, -1));
 | 
          
            | 40 | 	data.AddToken(";",CyString::Number(this->iShieldType));
 | 40 | 	data.addToken(";", Utils::String::Number(this->iShieldType));
 | 
          
            | 41 | 	data.AddToken(";",CyString::Number(this->iMaxShields));
 | 41 | 	data.addToken(";", Utils::String::Number(this->iMaxShields));
 | 
          
            | 42 | 	data.AddToken(";",CyString::Number(this->iMissileMask));
 | 42 | 	data.addToken(";", Utils::String::Number(this->iMissileMask));
 | 
          
            | 43 | 	data.AddToken(";",CyString::Number(this->iMissileCount));
 | 43 | 	data.addToken(";", Utils::String::Number(this->iMissileCount));
 | 
          
            | 44 | 	data.AddToken(";",CyString::Number(this->iSpeedExtension));
 | 44 | 	data.addToken(";", Utils::String::Number(this->iSpeedExtension));
 | 
          
            | 45 | 	data.AddToken(";",CyString::Number(this->iSteeringExtension));
 | 45 | 	data.addToken(";", Utils::String::Number(this->iSteeringExtension));
 | 
          
            | 46 | 	data.AddToken(";",CyString::Number(this->iCargoMin));
 | 46 | 	data.addToken(";", Utils::String::Number(this->iCargoMin));
 | 
          
            | 47 | 	data.AddToken(";",CyString::Number(this->iCargoMax));
 | 47 | 	data.addToken(";", Utils::String::Number(this->iCargoMax));
 | 
          
            | 48 | 	data.AddToken(";",CyString::Number(this->iWareListID));
 | 48 | 	data.addToken(";", Utils::String::Number(this->iWareListID));
 | 
          
            | 49 |  
 | 49 |  
 | 
          
            | 50 | 	// 6 turrets next
 | 50 | 	// 6 turrets next
 | 
          
            | 51 | 	for ( int i = 0; i < 6; i++ )
 | 51 | 	for ( int i = 0; i < 6; i++ )
 | 
          
            | 52 | 	{
 | 52 | 	{
 | 
          
            | 53 | 		if ( this->cockpits[i].sCockpit.Empty() )
 | 53 | 		if ( this->cockpits[i].sCockpit.empty() )
 | 
          
            | 54 | 			data.AddToken(";",CyString::Number(this->cockpits[i].iCockpit));
 | 54 | 			data.addToken(";", Utils::String::Number(this->cockpits[i].iCockpit));
 | 
          
            | 55 | 		else
 | 55 | 		else
 | 
          
            | 56 | 		{
 | 56 | 		{
 | 
          
            | 57 | 			if ( this->cockpits[i].iCockpit > -1 )
 | 57 | 			if ( this->cockpits[i].iCockpit > -1 )
 | 
          
            | 58 | 				data.AddToken(";", this->cockpits[i].sCockpit + "(" + (long)this->cockpits[i].iCockpit + ")");
 | 58 | 				data.addToken(";", this->cockpits[i].sCockpit + "(" + (long)this->cockpits[i].iCockpit + ")");
 | 
          
            | 59 | 			else
 | 59 | 			else
 | 
          
            | 60 | 				data.AddToken(";", this->cockpits[i].sCockpit);
 | 60 | 				data.addToken(";", this->cockpits[i].sCockpit);
 | 
          
            | 61 | 		}
 | 61 | 		}
 | 
          
            | 62 | 		data.AddToken(";",CyString::Number(this->cockpits[i].iPos));
 | 62 | 		data.addToken(";", Utils::String::Number(this->cockpits[i].iPos));
 | 
          
            | 63 | 	}
 | 63 | 	}
 | 
          
            | 64 |  
 | 64 |  
 | 
          
            | 65 | 	data.AddToken(";",CyString::Number(this->iDocking));
 | 65 | 	data.addToken(";", Utils::String::Number(this->iDocking));
 | 
          
            | 66 | 	data.AddToken(";",CyString::Number(this->iCargoClass));
 | 66 | 	data.addToken(";", Utils::String::Number(this->iCargoClass));
 | 
          
            | 67 | 	data.AddToken(";",CyString::Number(this->iRace));
 | 67 | 	data.addToken(";", Utils::String::Number(this->iRace));
 | 
          
            | 68 | 	data.AddToken(";",CyString::Number(this->iHull));
 | 68 | 	data.addToken(";", Utils::String::Number(this->iHull));
 | 
          
            | 69 | 	data.AddToken(";",CyString::Number(this->iExplosionDef));
 | 69 | 	data.addToken(";", Utils::String::Number(this->iExplosionDef));
 | 
          
            | 70 | 	data.AddToken(";",CyString::Number(this->iExplosionBody));
 | 70 | 	data.addToken(";", Utils::String::Number(this->iExplosionBody));
 | 
          
            | 71 | 	data.AddToken(";",CyString::Number(this->iParticle));
 | 71 | 	data.addToken(";", Utils::String::Number(this->iParticle));
 | 
          
            | 72 | 	data.AddToken(";",CyString::Number(this->iVariation));
 | 72 | 	data.addToken(";", Utils::String::Number(this->iVariation));
 | 
          
            | 73 | 	data.AddToken(";",CyString::Number(this->iRotationAccel));
 | 73 | 	data.addToken(";", Utils::String::Number(this->iRotationAccel));
 | 
          
            | 74 | 	data.AddToken(";",CyString::Number(this->iClass));
 | 74 | 	data.addToken(";", Utils::String::Number(this->iClass));
 | 
          
            | 75 | 	data.AddToken(";",CyString::Number(this->iTurretCount));
 | 75 | 	data.addToken(";", Utils::String::Number(this->iTurretCount));
 | 
          
            | 76 |  
 | 76 |  
 | 
          
            | 77 | 	// now do the turrets
 | 77 | 	// now do the turrets
 | 
          
            | 78 | 	for ( int i = 0; i < this->iTurretCount; i++ )
 | 78 | 	for ( int i = 0; i < this->iTurretCount; i++ )
 | 
          
            | 79 | 	{
 | 79 | 	{
 | 
          
            | 80 | 		STurretEntry *t = this->lTurrets[i];
 | 80 | 		STurretEntry *t = this->lTurrets[i];
 | 
          
            | 81 | 		data.AddToken(";",CyString::Number(t->iIndex));
 | 81 | 		data.addToken(";", Utils::String::Number(t->iIndex));
 | 
          
            | 82 | 		data.AddToken(";",CyString::Number(t->iTurret));
 | 82 | 		data.addToken(";", Utils::String::Number(t->iTurret));
 | 
          
            | 83 | 		data.AddToken(";", t->sModel);
 | 83 | 		data.addToken(";", t->sModel);
 | 
          
            | 84 | 		data.AddToken(";",CyString::Number(t->iSceneNode));
 | 84 | 		data.addToken(";", Utils::String::Number(t->iSceneNode));
 | 
          
            | 85 | 	}
 | 85 | 	}
 | 
          
            | 86 |  
 | 86 |  
 | 
          
            | 87 | 	// the gun entries next
 | 87 | 	// the gun entries next
 | 
          
            | 88 | 	data.AddToken(";",CyString::Number(this->iGunsCount));
 | 88 | 	data.addToken(";", Utils::String::Number(this->iGunsCount));
 | 
          
            | 89 | 	for ( int i = 0; i < this->iGunsCount; i++ )
 | 89 | 	for ( int i = 0; i < this->iGunsCount; i++ )
 | 
          
            | 90 | 	{
 | 90 | 	{
 | 
          
            | 91 | 		SGunGroup *g = this->lGuns[i];
 | 91 | 		SGunGroup *g = this->lGuns[i];
 | 
          
            | 92 | 		data.AddToken(";",CyString::Number(g->iGunIndex));
 | 92 | 		data.addToken(";", Utils::String::Number(g->iGunIndex));
 | 
          
            | 93 | 		data.AddToken(";",CyString::Number(g->iLaserCount));
 | 93 | 		data.addToken(";", Utils::String::Number(g->iLaserCount));
 | 
          
            | 94 | 		data.AddToken(";",CyString::Number(g->iIndex));
 | 94 | 		data.addToken(";", Utils::String::Number(g->iIndex));
 | 
          
            | 95 | 		data.AddToken(";",CyString::Number(g->iWeaponCount));
 | 95 | 		data.addToken(";", Utils::String::Number(g->iWeaponCount));
 | 
          
            | 96 | 		for ( int j = 0; j < g->iWeaponCount; j++ )
 | 96 | 		for ( int j = 0; j < g->iWeaponCount; j++ )
 | 
          
            | 97 | 		{
 | 97 | 		{
 | 
          
            | 98 | 			SWeaponGroup *w = g->lWeapons[j];
 | 98 | 			SWeaponGroup *w = g->lWeapons[j];
 | 
          
            | 99 | 			data.AddToken(";",CyString::Number(w->iGunIndex));
 | 99 | 			data.addToken(";", Utils::String::Number(w->iGunIndex));
 | 
          
            | 100 | 			data.AddToken(";",CyString::Number(w->iLaser));
 | 100 | 			data.addToken(";", Utils::String::Number(w->iLaser));
 | 
          
            | 101 | 			data.AddToken(";", w->sModel1);
 | 101 | 			data.addToken(";", w->sModel1);
 | 
          
            | 102 | 			data.AddToken(";",CyString::Number(w->iNode1));
 | 102 | 			data.addToken(";", Utils::String::Number(w->iNode1));
 | 
          
            | 103 | 			data.AddToken(";", w->sModel2);
 | 103 | 			data.addToken(";", w->sModel2);
 | 
          
            | 104 | 			data.AddToken(";",CyString::Number(w->iNode2));
 | 104 | 			data.addToken(";", Utils::String::Number(w->iNode2));
 | 
          
            | 105 | 		}
 | 105 | 		}
 | 
          
            | 106 | 	}
 | 106 | 	}
 | 
          
            | 107 |  
 | 107 |  
 | 
          
            | 108 | 	// now the rest of the data
 | 108 | 	// now the rest of the data
 | 
          
            | 109 | 	data.AddToken(";",CyString::Number(this->iVolumn));
 | 109 | 	data.addToken(";", Utils::String::Number(this->iVolumn));
 | 
          
            | 110 | 	data.AddToken(";",CyString::Number(this->iRelVal));
 | 110 | 	data.addToken(";", Utils::String::Number(this->iRelVal));
 | 
          
            | 111 | 	data.AddToken(";",CyString::Number(this->iPriceMod1));
 | 111 | 	data.addToken(";", Utils::String::Number(this->iPriceMod1));
 | 
          
            | 112 | 	data.AddToken(";",CyString::Number(this->iPriceMod2));
 | 112 | 	data.addToken(";", Utils::String::Number(this->iPriceMod2));
 | 
          
            | 113 | 	data.AddToken(";",CyString::Number(this->iSize));
 | 113 | 	data.addToken(";", Utils::String::Number(this->iSize));
 | 
          
            | 114 | 	data.AddToken(";",CyString::Number(this->iRelValPlayer));
 | 114 | 	data.addToken(";", Utils::String::Number(this->iRelValPlayer));
 | 
          
            | 115 | 	data.AddToken(";",CyString::Number(this->iMinNoto));
 | 115 | 	data.addToken(";", Utils::String::Number(this->iMinNoto));
 | 
          
            | 116 | 	data.AddToken(";",CyString::Number(this->iVideoID));
 | 116 | 	data.addToken(";", Utils::String::Number(this->iVideoID));
 | 
          
            | 117 | 	data.AddToken(";",CyString::Number(this->iSkin));
 | 117 | 	data.addToken(";", Utils::String::Number(this->iSkin));
 | 
          
            | 118 | 	data.AddToken(";", this->sID);
 | 118 | 	data.addToken(";", this->sID);
 | 
          
            | 119 | 	data += ";"; // add the end ;
 | 119 | 	data += ";"; // add the end ;
 | 
          
            | 120 |  
 | 120 |  
 | 
          
            | 121 | 	return data;
 | 121 | 	return data;
 | 
          
            | 122 | }
 | 122 | }
 | 
          
            | 123 |  
 | 123 |  
 | 
          
            | Line 187... | Line 187... | 
          
            | 187 | 	for ( SGunGroup *g = this->lGuns.First(); g; g = this->lGuns.Next() )
 | 187 | 	for ( SGunGroup *g = this->lGuns.First(); g; g = this->lGuns.Next() )
 | 
          
            | 188 | 		g->lWeapons.MemoryClear();
 | 188 | 		g->lWeapons.MemoryClear();
 | 
          
            | 189 | 	this->lGuns.MemoryClear();
 | 189 | 	this->lGuns.MemoryClear();
 | 
          
            | 190 | }
 | 190 | }
 | 
          
            | 191 |  
 | 191 |  
 | 
          
            | 192 | bool CShipData::ReadShipData(CyStringa_data)
 | 192 | bool CShipData::readShipData(const Utils::String &a_data)
 | 
          
            | 193 | {
 | 193 | {
 | 
          
            | 194 | 	int max;
 | 194 | 	int max;
 | 
          
            | 195 | 	CyString*entries = a_data.SplitToken(";", &max);
 | 195 | 	Utils::String *entries = a_data.tokenise(";", &max);
 | 
          
            | 196 | 	if ( max >= 60 && entries )
 | 196 | 	if ( max >= 60 && entries )
 | 
          
            | 197 | 	{
 | 197 | 	{
 | 
          
            | 198 | 		this->sModel = entries[0];
 | 198 | 		this->sModel = entries[0];
 | 
          
            | 199 | 		this->iPictureID = entries[1].ToInt();
 | 199 | 		this->iPictureID = entries[1].toInt();
 | 
          
            | 200 | 		this->fRotX = entries[2].ToFloat();
 | 200 | 		this->fRotX = entries[2].toFloat();
 | 
          
            | 201 | 		this->fRotY = entries[3].ToFloat();
 | 201 | 		this->fRotY = entries[3].toFloat();
 | 
          
            | 202 | 		this->fRotZ = entries[4].ToFloat();
 | 202 | 		this->fRotZ = entries[4].toFloat();
 | 
          
            | 203 | 		if ( entries[5].IsNumber() )
 | 203 | 		if ( entries[5].isNumber() )
 | 
          
            | 204 | 			this->iSubType = entries[5].ToInt();
 | 204 | 			this->iSubType = entries[5].toInt();
 | 
          
            | 205 | 		else
 | 205 | 		else
 | 
          
            | 206 | 			this->iSubType = CShipData::ConvertShipSubType(entries[5]);
 | 206 | 			this->iSubType = CShipData::ConvertShipSubType(entries[5]);
 | 
          
            | 207 | 		this->iDesc = entries[6].ToInt();
 | 207 | 		this->iDesc = entries[6].toInt();
 | 
          
            | 208 | 		this->iSpeed = entries[7].ToInt();
 | 208 | 		this->iSpeed = entries[7].toInt();
 | 
          
            | 209 | 		this->iAccel = entries[8].ToInt();
 | 209 | 		this->iAccel = entries[8].toInt();
 | 
          
            | 210 | 		this->iEngineSound = entries[9].ToInt();
 | 210 | 		this->iEngineSound = entries[9].toInt();
 | 
          
            | 211 | 		this->iReactionDelay = entries[10].ToInt();
 | 211 | 		this->iReactionDelay = entries[10].toInt();
 | 
          
            | 212 | 		this->iEngineEffect = entries[11].ToInt();
 | 212 | 		this->iEngineEffect = entries[11].toInt();
 | 
          
            | 213 | 		this->iEngineGlow = entries[12].ToInt();
 | 213 | 		this->iEngineGlow = entries[12].toInt();
 | 
          
            | 214 | 		this->iPower = entries[13].ToInt();
 | 214 | 		this->iPower = entries[13].toInt();
 | 
          
            | 215 | 		this->iSoundMin = entries[14].ToInt();
 | 215 | 		this->iSoundMin = entries[14].toInt();
 | 
          
            | 216 | 		this->iSoundMax = entries[15].ToInt();
 | 216 | 		this->iSoundMax = entries[15].toInt();
 | 
          
            | 217 | 		this->sModelScene = entries[16];
 | 217 | 		this->sModelScene = entries[16];
 | 
          
            | 218 | 		this->sCockpitScene = entries[17];
 | 218 | 		this->sCockpitScene = entries[17];
 | 
          
            | 219 | 		this->iLaserMask = entries[18].ToInt();
 | 219 | 		this->iLaserMask = entries[18].toInt();
 | 
          
            | 220 | 		this->iGunCount = entries[19].ToInt();
 | 220 | 		this->iGunCount = entries[19].toInt();
 | 
          
            | 221 | 		this->iLaserEnergy = entries[20].ToInt();
 | 221 | 		this->iLaserEnergy = entries[20].toInt();
 | 
          
            | 222 | 		this->fLaserRecharge = entries[21].ToFloat();
 | 222 | 		this->fLaserRecharge = entries[21].toFloat();
 | 
          
            | 223 | 		this->iShieldType = entries[22].ToInt();
 | 223 | 		this->iShieldType = entries[22].toInt();
 | 
          
            | 224 | 		this->iMaxShields = entries[23].ToInt();
 | 224 | 		this->iMaxShields = entries[23].toInt();
 | 
          
            | 225 | 		this->iMissileMask = entries[24].ToInt();
 | 225 | 		this->iMissileMask = entries[24].toInt();
 | 
          
            | 226 | 		this->iMissileCount = entries[25].ToInt();
 | 226 | 		this->iMissileCount = entries[25].toInt();
 | 
          
            | 227 | 		this->iSpeedExtension = entries[26].ToInt();
 | 227 | 		this->iSpeedExtension = entries[26].toInt();
 | 
          
            | 228 | 		this->iSteeringExtension = entries[27].ToInt();
 | 228 | 		this->iSteeringExtension = entries[27].toInt();
 | 
          
            | 229 | 		this->iCargoMin = entries[28].ToInt();
 | 229 | 		this->iCargoMin = entries[28].toInt();
 | 
          
            | 230 | 		this->iCargoMax = entries[29].ToInt();
 | 230 | 		this->iCargoMax = entries[29].toInt();
 | 
          
            | 231 | 		this->iWareListID = entries[30].ToInt();
 | 231 | 		this->iWareListID = entries[30].toInt();
 | 
          
            | 232 |  
 | 232 |  
 | 
          
            | 233 | 		for ( int i = 0; i < 6; i++ )
 | 233 | 		for ( int i = 0; i < 6; i++ )
 | 
          
            | 234 | 		{
 | 234 | 		{
 | 
          
            | 235 | 			this->cockpits[i].iPos = entries[(i * 2) + 32].ToInt();
 | 235 | 			this->cockpits[i].iPos = entries[(i * 2) + 32].toInt();
 | 
          
            | 236 | 			if ( entries[(i * 2) + 31].IsNumber() )
 | 236 | 			if ( entries[(i * 2) + 31].isNumber() )
 | 
          
            | 237 | 				this->cockpits[i].iCockpit = entries[(i * 2) + 31].ToInt();
 | 237 | 				this->cockpits[i].iCockpit = entries[(i * 2) + 31].toInt();
 | 
          
            | 238 | 			else
 | 238 | 			else
 | 
          
            | 239 | 			{
 | 239 | 			{
 | 
          
            | 240 | 				this->cockpits[i].sCockpit = entries[(i * 2) + 31];
 | 240 | 				this->cockpits[i].sCockpit = entries[(i * 2) + 31];
 | 
          
            | 241 | 				this->cockpits[i].iCockpit = -1; // custom cockpit
 | 241 | 				this->cockpits[i].iCockpit = -1; // custom cockpit
 | 
          
            | 242 | 				if ( this->cockpits[i].sCockpit.IsIn("(") ) {
 | 242 | 				if ( this->cockpits[i].sCockpit.contains("(") ) {
 | 
          
            | 243 | 					this->cockpits[i].iCockpit = this->cockpits[i].sCockpit.GetToken("(", 2).GetToken(")", 1,1).ToInt();
 | 243 | 					this->cockpits[i].iCockpit = this->cockpits[i].sCockpit.tokens("(", 2).token(")", 1).toInt();
 | 
          
            | 244 | 					this->cockpits[i].sCockpit = this->cockpits[i].sCockpit.GetToken("(", 1,1);
 | 244 | 					this->cockpits[i].sCockpit = this->cockpits[i].sCockpit.token("(", 1);
 | 
          
            | 245 | 				}
 | 245 | 				}
 | 
          
            | 246 | 			}
 | 246 | 			}
 | 
          
            | 247 | 		}
 | 247 | 		}
 | 
          
            | 248 |  
 | 248 |  
 | 
          
            | 249 | 		this->iDocking = entries[43].ToInt();
 | 249 | 		this->iDocking = entries[43].toInt();
 | 
          
            | 250 | 		this->iCargoClass = entries[44].ToInt();
 | 250 | 		this->iCargoClass = entries[44].toInt();
 | 
          
            | 251 | 		this->iRace = entries[45].ToInt();
 | 251 | 		this->iRace = entries[45].toInt();
 | 
          
            | 252 | 		this->iHull = entries[46].ToInt();
 | 252 | 		this->iHull = entries[46].toInt();
 | 
          
            | 253 | 		this->iExplosionDef = entries[47].ToInt();
 | 253 | 		this->iExplosionDef = entries[47].toInt();
 | 
          
            | 254 | 		this->iExplosionBody = entries[48].ToInt();
 | 254 | 		this->iExplosionBody = entries[48].toInt();
 | 
          
            | 255 | 		this->iParticle = entries[49].ToInt();
 | 255 | 		this->iParticle = entries[49].toInt();
 | 
          
            | 256 | 		this->iVariation = entries[50].ToInt();
 | 256 | 		this->iVariation = entries[50].toInt();
 | 
          
            | 257 | 		this->iRotationAccel = entries[51].ToInt();
 | 257 | 		this->iRotationAccel = entries[51].toInt();
 | 
          
            | 258 | 		if ( entries[52].IsNumber() )
 | 258 | 		if ( entries[52].isNumber() )
 | 
          
            | 259 | 			this->iClass = entries[52].ToInt();
 | 259 | 			this->iClass = entries[52].toInt();
 | 
          
            | 260 | 		else
 | 260 | 		else
 | 
          
            | 261 | 			this->iClass = CShipData::ConvertShipClass(entries[52].ToString());
 | 261 | 			this->iClass = CShipData::ConvertShipClass(entries[52]);
 | 
          
            | 262 | 		this->iTurretCount = entries[53].ToInt();
 | 262 | 		this->iTurretCount = entries[53].toInt();
 | 
          
            | 263 |  
 | 263 |  
 | 
          
            | 264 | 		// now read in the turret data
 | 264 | 		// now read in the turret data
 | 
          
            | 265 | 		int pos = 54;
 | 265 | 		int pos = 54;
 | 
          
            | 266 | 		for ( int i = 0; i < this->iTurretCount; i++ )
 | 266 | 		for ( int i = 0; i < this->iTurretCount; i++ )
 | 
          
            | 267 | 		{
 | 267 | 		{
 | 
          
            | 268 | 			STurretEntry *t = new STurretEntry;
 | 268 | 			STurretEntry *t = new STurretEntry;
 | 
          
            | 269 | 			t->iIndex = entries[pos].ToInt();
 | 269 | 			t->iIndex = entries[pos].toInt();
 | 
          
            | 270 | 			t->iTurret = entries[pos + 1].ToInt();
 | 270 | 			t->iTurret = entries[pos + 1].toInt();
 | 
          
            | 271 | 			t->sModel = entries[pos + 2];
 | 271 | 			t->sModel = entries[pos + 2];
 | 
          
            | 272 | 			t->iSceneNode = entries[pos + 3].ToInt();
 | 272 | 			t->iSceneNode = entries[pos + 3].toInt();
 | 
          
            | 273 | 			this->lTurrets.push_back(t);
 | 273 | 			this->lTurrets.push_back(t);
 | 
          
            | 274 | 			pos += 4;
 | 274 | 			pos += 4;
 | 
          
            | 275 | 		}
 | 275 | 		}
 | 
          
            | 276 |  
 | 276 |  
 | 
          
            | 277 | 		if ( this->iTurretCount == 0 )
 | 277 | 		if ( this->iTurretCount == 0 )
 | 
          
            | Line 283... | Line 283... | 
          
            | 283 | 			t->iSceneNode = 0;
 | 283 | 			t->iSceneNode = 0;
 | 
          
            | 284 | 			t->sModel = "0";
 | 284 | 			t->sModel = "0";
 | 
          
            | 285 | 		}
 | 285 | 		}
 | 
          
            | 286 |  
 | 286 |  
 | 
          
            | 287 | 		// next pos should be gun count
 | 287 | 		// next pos should be gun count
 | 
          
            | 288 | 		this->iGunsCount = entries[pos].ToInt();
 | 288 | 		this->iGunsCount = entries[pos].toInt();
 | 
          
            | 289 | 		++pos;
 | 289 | 		++pos;
 | 
          
            | 290 | 		for ( int i = 0; i < this->iGunsCount; i++ )
 | 290 | 		for ( int i = 0; i < this->iGunsCount; i++ )
 | 
          
            | 291 | 		{
 | 291 | 		{
 | 
          
            | 292 | 			SGunGroup *gun = new SGunGroup;
 | 292 | 			SGunGroup *gun = new SGunGroup;
 | 
          
            | 293 | 			gun->iGunIndex = entries[pos].ToInt();
 | 293 | 			gun->iGunIndex = entries[pos].toInt();
 | 
          
            | 294 | 			gun->iLaserCount = entries[pos + 1].ToInt();
 | 294 | 			gun->iLaserCount = entries[pos + 1].toInt();
 | 
          
            | 295 | 			gun->iIndex = entries[pos + 2].ToInt();
 | 295 | 			gun->iIndex = entries[pos + 2].toInt();
 | 
          
            | 296 | 			gun->iWeaponCount = entries[pos + 3].ToInt();
 | 296 | 			gun->iWeaponCount = entries[pos + 3].toInt();
 | 
          
            | 297 | 			pos += 4;
 | 297 | 			pos += 4;
 | 
          
            | 298 |  
 | 298 |  
 | 
          
            | 299 | 			for ( int j = 0; j < gun->iWeaponCount; j++ )
 | 299 | 			for ( int j = 0; j < gun->iWeaponCount; j++ )
 | 
          
            | 300 | 			{
 | 300 | 			{
 | 
          
            | 301 | 				SWeaponGroup *weapon = new SWeaponGroup;
 | 301 | 				SWeaponGroup *weapon = new SWeaponGroup;
 | 
          
            | 302 | 				weapon->iGunIndex = entries[pos].ToInt();
 | 302 | 				weapon->iGunIndex = entries[pos].toInt();
 | 
          
            | 303 | 				weapon->iLaser = entries[pos + 1].ToInt();
 | 303 | 				weapon->iLaser = entries[pos + 1].toInt();
 | 
          
            | 304 | 				weapon->sModel1 = entries[pos + 2];
 | 304 | 				weapon->sModel1 = entries[pos + 2];
 | 
          
            | 305 | 				weapon->iNode1 = entries[pos + 3].ToInt();
 | 305 | 				weapon->iNode1 = entries[pos + 3].toInt();
 | 
          
            | 306 | 				weapon->sModel2 = entries[pos + 4];
 | 306 | 				weapon->sModel2 = entries[pos + 4];
 | 
          
            | 307 | 				weapon->iNode2 = entries[pos + 5].ToInt();
 | 307 | 				weapon->iNode2 = entries[pos + 5].toInt();
 | 
          
            | 308 |  
 | 308 |  
 | 
          
            | 309 | 				pos += 6;
 | 309 | 				pos += 6;
 | 
          
            | 310 | 				gun->lWeapons.push_back(weapon);
 | 310 | 				gun->lWeapons.push_back(weapon);
 | 
          
            | 311 | 			}
 | 311 | 			}
 | 
          
            | 312 |  
 | 312 |  
 | 
          
            | Line 321... | Line 321... | 
          
            | 321 | 			gun->iIndex = 0;
 | 321 | 			gun->iIndex = 0;
 | 
          
            | 322 | 			gun->iLaserCount = 0;
 | 322 | 			gun->iLaserCount = 0;
 | 
          
            | 323 | 			gun->iWeaponCount = 0;
 | 323 | 			gun->iWeaponCount = 0;
 | 
          
            | 324 | 		}
 | 324 | 		}
 | 
          
            | 325 |  
 | 325 |  
 | 
          
            | 326 | 		this->iVolumn = entries[pos].ToInt();
 | 326 | 		this->iVolumn = entries[pos].toInt();
 | 
          
            | 327 | 		this->iRelVal = entries[pos + 1].ToInt();
 | 327 | 		this->iRelVal = entries[pos + 1].toInt();
 | 
          
            | 328 | 		this->iPriceMod1 = entries[pos + 2].ToInt();
 | 328 | 		this->iPriceMod1 = entries[pos + 2].toInt();
 | 
          
            | 329 | 		this->iPriceMod2 = entries[pos + 3].ToInt();
 | 329 | 		this->iPriceMod2 = entries[pos + 3].toInt();
 | 
          
            | 330 | 		this->iSize = entries[pos + 4].ToInt();
 | 330 | 		this->iSize = entries[pos + 4].toInt();
 | 
          
            | 331 | 		this->iRelValPlayer = entries[pos + 5].ToInt();
 | 331 | 		this->iRelValPlayer = entries[pos + 5].toInt();
 | 
          
            | 332 | 		this->iMinNoto = entries[pos + 6].ToInt();
 | 332 | 		this->iMinNoto = entries[pos + 6].toInt();
 | 
          
            | 333 | 		this->iVideoID = entries[pos + 7].ToInt();
 | 333 | 		this->iVideoID = entries[pos + 7].toInt();
 | 
          
            | 334 | 		this->iSkin = entries[pos + 8].ToInt();
 | 334 | 		this->iSkin = entries[pos + 8].toInt();
 | 
          
            | 335 | 		this->sID = entries[pos + 9];
 | 335 | 		this->sID = entries[pos + 9];
 | 
          
            | 336 |  
 | 336 |  
 | 
          
            | 337 | 		this->UpdateGunEntries();
 | 337 | 		this->UpdateGunEntries();
 | 
          
            | 338 |  
 | 338 |  
 | 
          
            | 339 | 		CLEANSPLIT(entries, max);
 | 339 | 		CLEANSPLIT(entries, max);
 | 
          
            | Line 458... | Line 458... | 
          
            | 458 | 	}
 | 458 | 	}
 | 
          
            | 459 |  
 | 459 |  
 | 
          
            | 460 | 	return "OBJ_SHIP_TL";
 | 460 | 	return "OBJ_SHIP_TL";
 | 
          
            | 461 | }
 | 461 | }
 | 
          
            | 462 |  
 | 462 |  
 | 
          
            | 463 | CyStringCShipData::ConvertShipSubType(int subtype)
 | 463 | Utils::String CShipData::ConvertShipSubType(int subtype)
 | 
          
            | 464 | {
 | 464 | {
 | 
          
            | 465 | 	switch ( subtype )
 | 465 | 	switch ( subtype )
 | 
          
            | 466 | 	{
 | 466 | 	{
 | 
          
            | 467 | 		case SG_SH_TL:
 | 467 | 		case SG_SH_TL:
 | 
          
            | 468 | 			return "SG_SH_TL";
 | 468 | 			return "SG_SH_TL";
 | 
          
            | Line 499... | Line 499... | 
          
            | 499 | 	}
 | 499 | 	}
 | 
          
            | 500 |  
 | 500 |  
 | 
          
            | 501 | 	return "SG_SH_TL";
 | 501 | 	return "SG_SH_TL";
 | 
          
            | 502 | }
 | 502 | }
 | 
          
            | 503 |  
 | 503 |  
 | 
          
            | 504 | int CShipData::ConvertShipSubType(CyStringsubtype)
 | 504 | int CShipData::ConvertShipSubType(const Utils::String &subtype)
 | 
          
            | 505 | {
 | 505 | {
 | 
          
            | 506 | 	int num = 0;
 | 506 | 	int num = 0;
 | 
          
            | 507 | 	for ( int i = 0; i < SG_SH_MAX; i++ )
 | 507 | 	for ( int i = 0; i < SG_SH_MAX; i++ )
 | 
          
            | 508 | 	{
 | 508 | 	{
 | 
          
            | 509 | 		if ( subtype.Compare(CShipData::ConvertShipSubType(i)) )
 | 509 | 		if ( subtype.Compare(CShipData::ConvertShipSubType(i)) )
 | 
          
            | Line 571... | Line 571... | 
          
            | 571 | 		g->iLaserCount = 0;
 | 571 | 		g->iLaserCount = 0;
 | 
          
            | 572 | 		for ( CListNode<SWeaponGroup> *wNode = g->lWeapons.Front(); wNode; wNode = wNode->next() )
 | 572 | 		for ( CListNode<SWeaponGroup> *wNode = g->lWeapons.Front(); wNode; wNode = wNode->next() )
 | 
          
            | 573 | 		{
 | 573 | 		{
 | 
          
            | 574 | 			SWeaponGroup *w = wNode->Data();
 | 574 | 			SWeaponGroup *w = wNode->Data();
 | 
          
            | 575 |  
 | 575 |  
 | 
          
            | 576 | 			if ( (w->iNode1 > 0 || (w->iNode1 == 0 && w->sModel1 != "0")) && !w->sModel1.Empty() )
 | 576 | 			if ( (w->iNode1 > 0 || (w->iNode1 == 0 && w->sModel1 != "0")) && !w->sModel1.empty() )
 | 
          
            | 577 | 			{
 | 577 | 			{
 | 
          
            | 578 | 				w->iLaser = 1;
 | 578 | 				w->iLaser = 1;
 | 
          
            | 579 | 				if ( (w->iNode2 > 0 || (w->iNode2 == 0 && w->sModel2 != "0")) && !w->sModel2.Empty() )
 | 579 | 				if ( (w->iNode2 > 0 || (w->iNode2 == 0 && w->sModel2 != "0")) && !w->sModel2.empty() )
 | 
          
            | 580 | 					w->iLaser = 2;
 | 580 | 					w->iLaser = 2;
 | 
          
            | 581 | 			}
 | 581 | 			}
 | 
          
            | 582 | 			else
 | 582 | 			else
 | 
          
            | 583 | 			{
 | 583 | 			{
 | 
          
            | 584 | 				w->iLaser = 0;
 | 584 | 				w->iLaser = 0;
 | 
          
            | Line 652... | Line 652... | 
          
            | 652 | 	++this->iGunsCount;
 | 652 | 	++this->iGunsCount;
 | 
          
            | 653 |  
 | 653 |  
 | 
          
            | 654 | 	this->UpdateGunEntries();
 | 654 | 	this->UpdateGunEntries();
 | 
          
            | 655 | }
 | 655 | }
 | 
          
            | 656 |  
 | 656 |  
 | 
          
            | 657 | CyStringCShipData::ConvertMissileGroup(int type)
 | 657 | Utils::String CShipData::ConvertMissileGroup(int type)
 | 
          
            | 658 | {
 | 658 | {
 | 
          
            | 659 | 	switch ( type )
 | 659 | 	switch ( type )
 | 
          
            | 660 | 	{
 | 660 | 	{
 | 
          
            | 661 | 		case SG_MISSILE_LIGHT:
 | 661 | 		case SG_MISSILE_LIGHT:
 | 
          
            | 662 | 			return "SG_MISSILE_LIGHT";
 | 662 | 			return "SG_MISSILE_LIGHT";
 | 
          
            | Line 704... | Line 704... | 
          
            | 704 | 	}
 | 704 | 	}
 | 
          
            | 705 |  
 | 705 |  
 | 
          
            | 706 | 	return 0; 
 | 706 | 	return 0; 
 | 
          
            | 707 | }
 | 707 | }
 | 
          
            | 708 |  
 | 708 |  
 | 
          
            | 709 | int CShipData::ConvertMissileGroupToID(CyStringtype)
 | 709 | int CShipData::ConvertMissileGroupToID(const Utils::String &type)
 | 
          
            | 710 | {
 | 710 | {
 | 
          
            | 711 | 	return CShipData::ConvertMissileGroupToID(CShipData::ConvertMissileGroup(type));
 | 711 | 	return CShipData::ConvertMissileGroupToID(CShipData::ConvertMissileGroup(type));
 | 
          
            | 712 | }
 | 712 | }
 | 
          
            | 713 |  
 | 713 |  
 | 
          
            | 714 | int CShipData::ConvertMissileGroup(CyStringtype)
 | 714 | int CShipData::ConvertMissileGroup(const Utils::String &type)
 | 
          
            | 715 | {
 | 715 | {
 | 
          
            | 716 | 	if ( type.Compare("SG_MISSILE_LIGHT") )
 | 716 | 	if ( type.Compare("SG_MISSILE_LIGHT") )
 | 
          
            | 717 | 		return SG_MISSILE_LIGHT;
 | 717 | 		return SG_MISSILE_LIGHT;
 | 
          
            | 718 | 	if ( type.Compare("SG_MISSILE_MEDIUM") )
 | 718 | 	if ( type.Compare("SG_MISSILE_MEDIUM") )
 | 
          
            | 719 | 		return SG_MISSILE_MEDIUM;
 | 719 | 		return SG_MISSILE_MEDIUM;
 |