Initial
This commit is contained in:
157
proto/source/CLIENT.CPP
Normal file
157
proto/source/CLIENT.CPP
Normal file
@@ -0,0 +1,157 @@
|
||||
#include <iostream.h>
|
||||
#include <common/windows.hpp>
|
||||
#include <common/openfile.hpp>
|
||||
#include <proto/pakentry.hpp>
|
||||
#include <proto/mediapak.hpp>
|
||||
#include <sample/wave.hpp>
|
||||
#include <sample/purewave.hpp>
|
||||
|
||||
// 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<BYTE> 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<mediaPak.entries();index++)
|
||||
{
|
||||
mediaPak.getEntry(pakEntry,index);
|
||||
if(PakEntry::Sound==pakEntry.type())strType="SOUND";
|
||||
else if(PakEntry::Bitmap==pakEntry.type())strType="BITMAP";
|
||||
else strType="BLOB";
|
||||
cout << pakEntry.name() << " " << strType << " id:" << pakEntry.id() << endl;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL handleCreate(const String &strCommand)
|
||||
{
|
||||
String pathMediaPak;
|
||||
MediaPak mediaPak;
|
||||
|
||||
pathMediaPak=strCommand.betweenString('(',')');
|
||||
if(pathMediaPak.isNull())return FALSE;
|
||||
return mediaPak.open(pathMediaPak,TRUE);
|
||||
}
|
||||
|
||||
void displayUsage(void)
|
||||
{
|
||||
cout << "USAGE: mediapak add(pathmediapak,pathfilename,type,id) type=SOUND|BITMAP|BLOB" << endl;
|
||||
cout << " delete(pathmediapak,id)" << endl;
|
||||
cout << " list(pathmediapak)" << endl;
|
||||
cout << " create(pathmediapak)" << endl;
|
||||
return;
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
MediaPak mediaPak;
|
||||
PakEntry pakEntry;
|
||||
GlobalData<BYTE> 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
|
||||
Reference in New Issue
Block a user