bool GlobalDictionaryWord::operator<( const GlobalDictionaryWord& rhs ) const { int value( wstricmp( text.c_str(), rhs.text.c_str() ) ); if( value == 0 ) value = std::wcscmp( text.c_str(), rhs.text.c_str() ); return value < 0; }
// ---------------------------------------------------------------------- BaseObject* CObjectManager::CreateObject(const wchar* objectName) { EngineObjectReg* optr=g_first_obj; while(optr) { if ( !wstricmp(objectName, optr->ObjName) ) { optr->InstNum++; CON(MSG_INFO, _W("ObjectManager: Creating %s object (%d)."), objectName, optr->InstNum ); return (BaseObject*)optr->CreateFn(); } optr = optr->Next; } CON(MSG_ERR, _W("ObjectManager: Failed to create %s object! Object not found."), objectName ); return NULL; }
CSoundBuffer* CSoundManager::CreateBuffer(const wchar* name) { int arrSize = m_buffers.size(); for(int i = 0; i < arrSize; i++) { if(!wstricmp(m_buffers[i]->GetFilename(), name)) { m_buffers[i]->AddReference(); return m_buffers[i]; } } COggLoader loader(name); const sOggInfo* info = loader.GetInfo(); unsigned int size = 0; const void* data = loader.GetData(size); if(data == 0) return NULL; eSoundFormat fmt; bool stereo = false; switch(info->numChannels) { case 1: stereo = false; break; case 2: stereo = true; break; default: return 0; } switch(info->bitsPerSample) { case 8: fmt = stereo ? SOUNDFORMAT_STEREO8 : SOUNDFORMAT_MONO8; break; case 16: fmt = stereo ? SOUNDFORMAT_STEREO16 : SOUNDFORMAT_MONO16; break; default: return 0; } CSoundBuffer *buffer = new CSoundBuffer(); if(!buffer) return NULL; if(!buffer->Create(fmt, info->freq, (void*)data, size)) { delete buffer; return NULL; } buffer->AddReference(); buffer->SetFilename(name); m_buffers.push_back(buffer); return buffer; }