Exemple #1
0
void			CIDEEntry_PATH_Node::unserialize(void)
{
	CDataReader *pDataReader = CDataReader::getInstance();

	if (getLatestPathGroup() == nullptr)
	{
		// path node found before path group
		throw EXCEPTION_INVALID_DATA_ORDER;
	}

	switch (pDataReader->getLineTokens().size())
	{
	case 9:
		CIDEEntry_PATH::unserialize();

		setFormatType(0);
		setFormatGames(GAME_FLAG_GTA_III | GAME_FLAG_GTA_VC);

		m_uiNodeType = pDataReader->readTokenUint32();
		m_uiNextNode = pDataReader->readTokenUint32();
		m_uiIsCrossRoad = pDataReader->readTokenUint32();
		m_vecPosition = pDataReader->readVector3D() / 16.0f;
		m_fUnknown1 = pDataReader->readTokenFloat32();
		m_uiLeftLaneCount = pDataReader->readTokenUint32();
		m_uiRightLaneCount = pDataReader->readTokenUint32();
		break;
	}

	getLatestPathGroup()->addEntry(this);
}
void			CIDEEntry_2DFX_SpawnPoint::unserialize(void)
{
	CDataReader *pDataReader = CDataReader::getInstance();
	
	CIDEEntry_2DFX::unserialize();
	
	m_vecFlags.m_x = pDataReader->readTokenUint32();
	m_vecFlags.m_y = pDataReader->readTokenUint32();
	m_vecFlags.m_z = pDataReader->readTokenUint32();
	m_vecFlags.m_w = pDataReader->readTokenUint32();
}
Exemple #3
0
void			CIDEEntry_2DFX_Ladder::unserialize(void)
{
	CDataReader *pDataReader = CDataReader::getInstance();
	
	CIDEEntry_2DFX::unserialize();
	
	m_vecLadderStartPosition = pDataReader->readVector3D();
	m_vecLadderEndPosition = pDataReader->readVector3D();
	m_vecClimbDirectionPosition = pDataReader->readVector3D();
	m_uiFlags = pDataReader->readTokenUint32();
}
Exemple #4
0
void			CIDEEntry_PATH_Group::unserialize(void)
{
	CDataReader *pDataReader = CDataReader::getInstance();

	switch (pDataReader->getLineTokens().size())
	{
	case 3:
		CIDEEntry_PATH::unserialize();

		setFormatType(0);
		setFormatGames(GAME_FLAG_GTA_III | GAME_FLAG_GTA_VC);

		m_strGroupType = pDataReader->readTokenString();
		m_uiObjectId = pDataReader->readTokenUint32();
		m_strModelName = pDataReader->readTokenUint32();
		break;
	}

	setLatestPathGroup(this);
}
Exemple #5
0
void			CIPLEntry_TCYC::unserialize(void)
{
	CDataReader *pDataReader = CDataReader::getInstance();

	switch (pDataReader->getLineTokens().size())
	{
	case 11:
		setFormatType(0);
		setFormatGames(GAME_FLAG_GTA_SA);

		m_vecPositionLower = pDataReader->readTokenVector3D();
		m_vecPositionUpper = pDataReader->readTokenVector3D();
		m_uiUnknown1 = pDataReader->readTokenUint32();
		m_uiWeatherId = pDataReader->readTokenUint32();
		m_iBrightness = pDataReader->readTokenInt32();
		m_uiTime = pDataReader->readTokenUint32();
		m_uiDrawDistance = pDataReader->readTokenUint32();
		break;
	default:
		throw EXCEPTION_UNKNOWN_FORMAT_TYPE;
	}
}
Exemple #6
0
void			CIDEEntry_ANIM::unserialize(void)
{
	CDataReader *pDataReader = CDataReader::getInstance();

	switch (pDataReader->getLineTokens().size())
	{
	case 6:
		// GTA SA
		setFormatType(0);
		setFormatGames(GAME_FLAG_GTA_SA);
		m_uiObjectId = pDataReader->readTokenUint32();
		m_strModelName = pDataReader->readTokenString();
		m_strTXDName = pDataReader->readTokenString();
		m_strAnimationName = pDataReader->readTokenString();
		m_fDrawDistance = pDataReader->readTokenFloat32();
		m_uiFlags = pDataReader->readTokenUint32();
		break;
	case 16:
		// GTA IV
		setFormatType(1);
		setFormatGames(GAME_FLAG_GTA_IV);
		m_strModelName = pDataReader->readTokenString();
		m_strTXDName = pDataReader->readTokenString();
		m_strAnimationName = pDataReader->readTokenString();
		m_fDrawDistance = pDataReader->readTokenFloat32();
		m_uiFlags = pDataReader->readTokenUint32();
		m_uiUnknown1 = pDataReader->readTokenUint32();
		m_vecBoundingBoxLowerLeftCorner = pDataReader->readVector3D();
		m_vecBoundingBoxUpperRightCorner = pDataReader->readVector3D();
		m_vecBoundingSphereCenterPosition = pDataReader->readVector3D();
		m_fBoundingSphereRadius = pDataReader->readTokenFloat32();
		m_strLODModel = pDataReader->readTokenString();
		break;
	default:
		throw EXCEPTION_UNKNOWN_FORMAT_TYPE;
	}
}
Exemple #7
0
void			CIPLEntry_PICK::unserialize(void)
{
	CDataReader *pDataReader = CDataReader::getInstance();

	switch (pDataReader->getLineTokens().size())
	{
	case 4:
		setFormatType(0);
		setFormatGames(GAME_FLAG_GTA_SA);

		m_uiWeaponId = pDataReader->readTokenUint32();
		m_vecPosition = pDataReader->readTokenVector3D();
		break;
	default:
		throw EXCEPTION_UNKNOWN_FORMAT_TYPE;
	}
}
Exemple #8
0
void			CIDEEntry_HIER::unserialize(void)
{
	CDataReader *pDataReader = CDataReader::getInstance();

	switch (pDataReader->getLineTokens().size())
	{
	case 3:
		// GTA III, GTA VC, GTA SA
		setFormatType(0);
		setFormatGames(GAME_FLAG_GTA_III | GAME_FLAG_GTA_VC | GAME_FLAG_GTA_SA);
		m_uiObjectId = pDataReader->readTokenUint32();
		m_strModelName = pDataReader->readTokenString();
		m_strTXDName = pDataReader->readTokenString();
		break;
	default:
		throw EXCEPTION_UNKNOWN_FORMAT_TYPE;
	}
}
Exemple #9
0
void			CIPLEntry_JUMP::unserialize(void)
{
    CDataReader *pDataReader = CDataReader::getInstance();

    switch (pDataReader->getLineTokens().size())
    {
    case 16:
        setFormatType(0);
        setFormatGames(GAME_FLAG_GTA_SA);

        m_vecStartLowerPosition = pDataReader->readTokenVector3D();
        m_vecStartUpperPosition = pDataReader->readTokenVector3D();
        m_vecTargetLowerPosition = pDataReader->readTokenVector3D();
        m_vecTargetUpperPosition = pDataReader->readTokenVector3D();
        m_vecCameraPosition = pDataReader->readTokenVector3D();
        m_uiReward = pDataReader->readTokenUint32();
        break;
    default:
        throw EXCEPTION_UNKNOWN_FORMAT_TYPE;
    }
}
Exemple #10
0
void			CIDEEntry_TOBJ::unserialize(void)
{
	CDataReader *pDataReader = CDataReader::getInstance();

	switch (pDataReader->getLineTokens().size())
	{
	case 4: // Type 0: GTA III, VC, SA
		setFormatType(0);
		setFormatGames(GAME_FLAG_GTA_III | GAME_FLAG_GTA_VC | GAME_FLAG_GTA_SA);
		m_uiObjectId = pDataReader->readTokenUint32();
		m_strModelName = pDataReader->readTokenString();
		m_strTXDName = pDataReader->readTokenString();
		m_uiUnknown2 = pDataReader->readTokenUint32();
		break;
	case 8: // Type 1: GTA III, VC, SA
		setFormatType(1);
		setFormatGames(GAME_FLAG_GTA_III | GAME_FLAG_GTA_VC | GAME_FLAG_GTA_SA);
		m_uiObjectId = pDataReader->readTokenUint32();
		m_strModelName = pDataReader->readTokenString();
		m_strTXDName = pDataReader->readTokenString();
		m_uiClumpCount = pDataReader->readTokenUint32();
		m_vecDrawDistances = {
			pDataReader->readTokenFloat32()
		};
		m_uiFlags = pDataReader->readTokenUint32();
		m_uiTimeOn = pDataReader->readTokenUint32();
		m_uiTimeOff = pDataReader->readTokenUint32();
		break;
	case 9: // Type 2: GTA III, VC, SA
		setFormatType(2);
		setFormatGames(GAME_FLAG_GTA_III | GAME_FLAG_GTA_VC | GAME_FLAG_GTA_SA);
		m_uiObjectId = pDataReader->readTokenUint32();
		m_strModelName = pDataReader->readTokenString();
		m_strTXDName = pDataReader->readTokenString();
		m_uiClumpCount = pDataReader->readTokenUint32();
		m_vecDrawDistances = {
			pDataReader->readTokenFloat32(),
			pDataReader->readTokenFloat32()
		};
		m_uiFlags = pDataReader->readTokenUint32();
		m_uiTimeOn = pDataReader->readTokenUint32();
		m_uiTimeOff = pDataReader->readTokenUint32();
		break;
	case 10: // Type 3: GTA III, VC, SA
		setFormatType(3);
		setFormatGames(GAME_FLAG_GTA_III | GAME_FLAG_GTA_VC | GAME_FLAG_GTA_SA);
		m_uiObjectId = pDataReader->readTokenUint32();
		m_strModelName = pDataReader->readTokenString();
		m_strTXDName = pDataReader->readTokenString();
		m_uiClumpCount = pDataReader->readTokenUint32();
		m_vecDrawDistances = {
			pDataReader->readTokenFloat32(),
			pDataReader->readTokenFloat32(),
			pDataReader->readTokenFloat32()
		};
		m_uiFlags = pDataReader->readTokenUint32();
		m_uiTimeOn = pDataReader->readTokenUint32();
		m_uiTimeOff = pDataReader->readTokenUint32();
		break;
	case 7: // Type 4: GTA SA
		setFormatType(4);
		setFormatGames(GAME_FLAG_GTA_SA);
		m_uiObjectId = pDataReader->readTokenUint32();
		m_strModelName = pDataReader->readTokenString();
		m_strTXDName = pDataReader->readTokenString();
		m_vecDrawDistances = {
			pDataReader->readTokenFloat32()
		};
		m_uiFlags = pDataReader->readTokenUint32();
		m_uiTimeOn = pDataReader->readTokenUint32();
		m_uiTimeOff = pDataReader->readTokenUint32();
		break;
	case 17:
		// TOBJ - type 5: GTA IV [type 1 for GTA IV]
		setFormatType(5);
		setFormatGames(GAME_FLAG_GTA_IV);
		m_strModelName = pDataReader->readTokenString();
		m_strTXDName = pDataReader->readTokenString();
		m_vecDrawDistances.push_back(pDataReader->readTokenFloat32());
		m_uiFlags = pDataReader->readTokenUint32();
		m_uiUnknown2 = pDataReader->readTokenUint32();
		m_vecBoundingBoxLowerLeftCorner = pDataReader->readVector3D();
		m_vecBoundingBoxUpperRightCorner = pDataReader->readVector3D();
		m_vecBoundingSphereCenterPosition = pDataReader->readVector3D();
		m_fBoundingSphereRadius = pDataReader->readTokenFloat32();
		m_strLODModel = pDataReader->readTokenString();
		m_uiNightFlags = pDataReader->readTokenUint32();
		break;
	default:
	{
		uint32 uiLineTokenCount = pDataReader->getLineTokenCount();
		uint32 uiTokenIndex = 4; // starting at 1, so it can be compared directly with line token count

		setFormatType(6);
		setTokenCount(uiLineTokenCount);

		// first 4 tokens
		m_uiObjectId = pDataReader->readTokenUint32();
		m_strModelName = pDataReader->readTokenString();
		m_strTXDName = pDataReader->readTokenString();
		m_uiClumpCount = pDataReader->readTokenUint32();

		// draw distances
		if (uiLineTokenCount < (uiTokenIndex + m_uiClumpCount))
		{
			throw EXCEPTION_UNKNOWN_FORMAT_TYPE;
		}
		m_vecDrawDistances.resize(m_uiClumpCount);
		for (uint32 i = 0; i < m_uiClumpCount; i++)
		{
			m_vecDrawDistances[i] = pDataReader->readTokenFloat32();;
		}
		uiTokenIndex += m_uiClumpCount;

		// flags
		if (uiLineTokenCount < (uiTokenIndex + 1))
		{
			throw EXCEPTION_UNKNOWN_FORMAT_TYPE;
		}
		m_uiFlags = pDataReader->readTokenUint32();
		uiTokenIndex++;

		if (uiLineTokenCount >= (uiTokenIndex + 1))
		{
			// time on - optional
			m_uiTimeOn = pDataReader->readTokenUint32();
			uiTokenIndex++;

			if (uiLineTokenCount >= (uiTokenIndex + 1))
			{
				// time off - optional
				m_uiTimeOff = pDataReader->readTokenUint32();
				uiTokenIndex++;
			}
		}
		break;
	}
	}
}
Exemple #11
0
void			CIDEEntry_PEDS::unserialize(void)
{
	CDataReader *pDataReader = CDataReader::getInstance();

	uint32 uiLineTokenCount = pDataReader->getLineTokens().size();
	bool bMatchFound = false;
	if (uiLineTokenCount == 7 || uiLineTokenCount == 11 || uiLineTokenCount == 15)
	{
		// GTA III, GTA VC, GTA SA
		bMatchFound = true;
		setFormatType(0);
		setFormatGames(GAME_FLAG_GTA_III | GAME_FLAG_GTA_VC | GAME_FLAG_GTA_SA);
		m_uiObjectId = pDataReader->readTokenUint32();
		m_strModelName = pDataReader->readTokenString();
		m_strTXDName = pDataReader->readTokenString();
		m_strDefaultPedType = pDataReader->readTokenString();
		m_strBehaviour = pDataReader->readTokenString();
		m_strAnimationGroup = pDataReader->readTokenString();
		m_uiCarsCanDrive = pDataReader->readTokenUint32();

		if (uiLineTokenCount == 11 || uiLineTokenCount == 15)
		{
			// GTA VC, GTA SA
			setFormatType(1);
			setFormatGames(GAME_FLAG_GTA_VC | GAME_FLAG_GTA_SA);
			m_strAnimationFile = pDataReader->readTokenString();
			m_vecPreferredRadioStations.m_x = pDataReader->readTokenUint32();
			m_vecPreferredRadioStations.m_y = pDataReader->readTokenUint32();

			if (uiLineTokenCount == 15)
			{
				// GTA SA
				setFormatType(2);
				setFormatGames(GAME_FLAG_GTA_SA);
				m_strVoiceArchive = pDataReader->readTokenString();
				m_strVoices[0] = pDataReader->readTokenString();
				m_strVoices[1] = pDataReader->readTokenString();
			}
		}
	}

	if (uiLineTokenCount == 16)
	{
		// GTA IV
		bMatchFound = true;
		setFormatType(3);
		setFormatGames(GAME_FLAG_GTA_IV);
		m_strModelName = pDataReader->readTokenString();
		m_strProps = pDataReader->readTokenString();
		m_strDefaultPedType = pDataReader->readTokenString();
		m_strAnimationGroup = pDataReader->readTokenString();
		m_strGestureGroup = pDataReader->readTokenString();
		m_strGesturePhoneGroup = pDataReader->readTokenString();
		m_strFacialGroup = pDataReader->readTokenString();
		m_strVisemeGroup = pDataReader->readTokenString();
		m_strFlags = pDataReader->readTokenString();
		m_strAnimationFile = pDataReader->readTokenString();
		m_strBlendShapeFile = pDataReader->readTokenString();
		m_vecPreferredRadioStations.m_x = pDataReader->readTokenUint32();
		m_vecPreferredRadioStations.m_y = pDataReader->readTokenUint32();
		m_strAudioType = pDataReader->readTokenString();
		m_strFirstVoice = pDataReader->readTokenString();
		m_strLastVoice = pDataReader->readTokenString();
	}

	if (!bMatchFound)
	{
		throw EXCEPTION_UNKNOWN_FORMAT_TYPE;
	}
}