#include #include #include #include #include #include #include // create(mediapakfilename) // add(mediapak,filename,type,id) // remove(mediapak,id) // display(mediapakfilename) void displayUsage(void); BOOL handleAdd(const String &strCommand); BOOL handleRemove(const String &strCommand); BOOL handleList(const String &strCommand); BOOL handleCreate(const String &strCommand); //int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE /*hPrevInstance*/,LPSTR /*lpszCmdLine*/,int /*nCmdShow*/) void main(int argc,char **argv) { String strCommandLine; String strCommand; if(1==argc){displayUsage();return;} strCommandLine=argv[1]; strCommand=strCommandLine.betweenString(0,'('); if(strCommand.isNull())strCommand=strCommandLine; if(strCommand==String("add"))handleAdd(strCommandLine); else if(strCommand==String("remove"))handleRemove(strCommandLine); else if(strCommand==String("list"))handleList(strCommandLine); else if(strCommand==String("create")) { if(handleCreate(strCommandLine))cout << "creation completed" << endl; else cout << "creation failed"<< endl; } else displayUsage(); return; } BOOL handleAdd(const String &strCommand) { String strPathMediaPak; String strPathFileName; String strID; String strType; MediaPak mediaPak; PakEntry pakEntry; GlobalData mediaData; FileHandle openFile; strPathMediaPak=strCommand.betweenString('(',','); strPathFileName=strCommand.betweenString(',',','); strType=strCommand.betweenString(',',')').betweenString(',',','); strID=strCommand.betweenString(',',')').betweenString(',',0).betweenString(',',0); if(strPathMediaPak.isNull())return FALSE; if(strPathFileName.isNull())return FALSE; if(strID.isNull())return FALSE; if(strType.isNull())return FALSE; mediaPak.open(strPathMediaPak); if(strType==String("SOUND"))pakEntry.type(PakEntry::Sound); else if(strType==String("BITMAP"))pakEntry.type(PakEntry::Bitmap); else pakEntry.type(PakEntry::Blob); openFile.open(strPathFileName); mediaData.size(openFile.size()); openFile.read((BYTE*)&mediaData[0],mediaData.size()); pakEntry.name(strPathFileName); pakEntry.id(::atoi(strID)); pakEntry.rawData(mediaData); mediaPak.add(pakEntry); return TRUE; } BOOL handleRemove(const String &strCommand) { return FALSE; } BOOL handleList(const String &strCommand) { String pathMediaPak; String strType; MediaPak mediaPak; PakEntry pakEntry; pathMediaPak=strCommand.betweenString('(',')'); if(pathMediaPak.isNull())return FALSE; if(!mediaPak.open(pathMediaPak))return FALSE; for(int index=0;index soundData; FileHandle openFile; WaveForm waveForm; mediaPak.open("c:\\multimed.pak",TRUE); pakEntry.type(PakEntry::Sound); openFile.open("C:\\GAMES\\DOOM2\\DSTELEPT.WAV"); soundData.size(openFile.size()); openFile.read((BYTE*)soundData,soundData.size()); pakEntry.name("DSTELEPT"); pakEntry.id(0); pakEntry.rawData(soundData); mediaPak.add(pakEntry); openFile.open("C:\\GAMES\\DOOM2\\DSPISTOL.WAV"); soundData.size(openFile.size()); openFile.read((BYTE*)soundData,soundData.size()); pakEntry.name("DSPISTOL"); pakEntry.id(0); pakEntry.rawData(soundData); mediaPak.add(pakEntry); mediaPak.open("c:\\multimed.pak"); if(!mediaPak.getEntry(waveForm,0))return FALSE; PureWave pureWave; pureWave.play(waveForm,DeviceHandler::Wait); mediaPak.close(); #endif