void CIFXMetaData::SetStringValueX(const IFXString& rKey, const IFXString& rValue) { IFXString key = rKey; IFXSubattributes sa; UnpackKey(key, sa); U32 index; IFXMetaDataContainer* ExistingMD = FindTheKey(key, &index); if (ExistingMD) { ExistingMD->Subattributes = sa; if (ExistingMD->Attribute & IFXMETADATAATTRIBUTE_BINARY) delete [] (U8*)ExistingMD->pBuffer; else delete (IFXString*)ExistingMD->pBuffer; ExistingMD->pBuffer = new IFXString; (*(IFXString*)(ExistingMD->pBuffer)) = rValue; ExistingMD->Attribute = (IFXMetaDataAttribute)(ExistingMD->Attribute & ~IFXMETADATAATTRIBUTE_BINARY); ExistingMD->Persistence = IFX_TRUE; } else { m_pEmptyMetaData->Key = key; m_pEmptyMetaData->Subattributes = sa; m_pEmptyMetaData->pBuffer = new IFXString; (*(IFXString*)(m_pEmptyMetaData->pBuffer)) = rValue; m_pEmptyMetaData->Attribute = (IFXMetaDataAttribute)(m_pEmptyMetaData->Attribute & ~IFXMETADATAATTRIBUTE_BINARY); m_pEmptyMetaData->Persistence = IFX_TRUE; m_pEmptyMetaData->pNext = new(IFXMetaDataContainer); m_pEmptyMetaData->pNext->pPrev = m_pEmptyMetaData; m_pEmptyMetaData = m_pEmptyMetaData->pNext; m_uMDCount++; } }
IFXRESULT CIFXMetaData::GetIndex(const IFXString& rKey, U32& rIndex) { U32 index; if (FindTheKey(rKey, &index)) { rIndex = index; return IFX_OK; } return IFX_E_NO_METADATA; }
BOOL CIFXMetaData::IsKeyExists(const IFXString& rValue) { BOOL rc = IFX_FALSE; U32 index; if (FindTheKey(rValue, &index)) { rc = IFX_TRUE; } return rc; }
void CIFXMetaData::SetBinaryValueX(const IFXString& rKey, U32 size, const U8* pData) { IFXString key = rKey; IFXSubattributes sa; UnpackKey(key, sa); U32 index; IFXMetaDataContainer* ExistingMD = FindTheKey(key, &index); if (ExistingMD) { ExistingMD->Subattributes = sa; if (ExistingMD->Attribute & IFXMETADATAATTRIBUTE_BINARY) delete [] (U8*)ExistingMD->pBuffer; else delete (IFXString*)ExistingMD->pBuffer; ExistingMD->pBuffer = (U8*)new U8[size]; memcpy(ExistingMD->pBuffer, pData, size); ExistingMD->Size = size; ExistingMD->Attribute = (IFXMetaDataAttribute)(ExistingMD->Attribute | IFXMETADATAATTRIBUTE_BINARY); ExistingMD->Persistence = IFX_TRUE; } else { m_pEmptyMetaData->Key = key; m_pEmptyMetaData->Subattributes = sa; m_pEmptyMetaData->pBuffer = (U8*)new U8[size]; memcpy(m_pEmptyMetaData->pBuffer, pData, size); m_pEmptyMetaData->Size = size; m_pEmptyMetaData->Attribute = (IFXMetaDataAttribute)(m_pEmptyMetaData->Attribute | IFXMETADATAATTRIBUTE_BINARY); m_pEmptyMetaData->Persistence = IFX_TRUE; m_pEmptyMetaData->pNext = new(IFXMetaDataContainer); m_pEmptyMetaData->pNext->pPrev = m_pEmptyMetaData; m_pEmptyMetaData = m_pEmptyMetaData->pNext; m_uMDCount++; } }
void GameEventManager::PlayEvent(Player * pPlayer,Cell*Room[20][20]) { if(*m_pEventPosition !=0 && Room[GetRow()][GetColumn()] !=NULL) { Room[GetRow()][GetColumn()]->Reset(); //Resets the Cell the event is in } switch(GetEvent()) { //Floor 1 case 0: GameStart(pPlayer); *m_pEventPosition=+1; break; case 1: FirstRadioContact(pPlayer); CreateNextEvent(Room); break; case 2: FindTheKey(pPlayer); CreateNextEvent(Room); break; case 3: GoToElevator(pPlayer); //There is no create here because this is the end of the room, the next room will deal with continuing it on *m_pEventPosition+=1; //So the next event will be loaded *m_pRoom1Clear = true; break; //Floor 2 case 4: YouFoundTheGenerator(pPlayer); CreateNextEvent(Room); break; case 5: FindGasoline(pPlayer); CreateNextEvent(Room); break; case 6: FindTools(pPlayer); CreateNextEvent(Room); break; case 7: FindKey(pPlayer); CreateNextEvent(Room); break; case 8: UnderAttack(pPlayer); *m_pEventPosition+=1; //So the next event will be loaded (since the Create new isnt called) *m_pRoom2Clear = true; break; case 9: GetThroughTheDoor(); *m_pEventPosition+=1; break; //Floor 3 case 10: DarkRevelations(pPlayer); CreateNextEvent(Room); break; case 11: Choices(pPlayer); break; } }