void CDialogueManager::LoadDialogue(const char *szFilename) { int scriptNum; int sentenceNum; int strLen; char* buffer; // Load in all the dialogue from file at beginning of game ifstream in; in.open(szFilename,ios_base::in | ios_base::binary); if( in.is_open() ) { in.read((char*)&scriptNum,sizeof(int)); for( int script = 0; script < scriptNum; script++ ) { in.read((char*)&strLen,sizeof(int)); buffer = new char[strLen+1]; in.read(buffer,strLen); buffer[strLen] = '\0'; string szName = buffer; CScript* newScript = new CScript(szName); delete[] buffer; in.read((char*)&sentenceNum,sizeof(int)); for( int sentence = 0; sentence < sentenceNum; sentence++ ) { in.read((char*)&strLen,sizeof(int)); buffer = new char[strLen+1]; in.read(buffer,strLen); buffer[strLen] = '\0'; string szSentence = buffer; delete[] buffer; in.read((char*)&strLen,sizeof(int)); buffer = new char[strLen+1]; in.read(buffer,strLen); buffer[strLen] = '\0'; string szTrigger = buffer; delete[] buffer; CSentence* newSentence = new CSentence(szSentence,szTrigger); if( strLen < 1 ) newSentence->SetEventBool(false); else newSentence->SetEventBool(true); newScript->AddSentence(newSentence); } m_vScripts.push_back(newScript); } } in.close(); }