2013-07-06 01:52:45 -05:00
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers , whose names
* are too numerous to list here . Please refer to the COPYRIGHT
* file distributed with this source distribution .
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version .
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 , USA .
*
*/
# include "common/scummsys.h"
# include "gui/debugger.h"
2013-07-13 11:34:28 -05:00
# include "common/file.h"
# include "common/bufferedstream.h"
# include "audio/mixer.h"
2013-07-06 01:52:45 -05:00
# include "zvision/console.h"
# include "zvision/zvision.h"
2013-08-03 13:44:29 -05:00
# include "zvision/script_manager.h"
2013-07-19 11:07:58 -05:00
# include "zvision/render_manager.h"
2013-07-08 16:14:02 -05:00
# include "zvision/zork_avi_decoder.h"
2013-07-13 11:34:28 -05:00
# include "zvision/zork_raw.h"
2013-07-18 14:40:02 -05:00
# include "zvision/utility.h"
2013-07-06 01:52:45 -05:00
namespace ZVision {
2013-07-08 16:14:02 -05:00
Console : : Console ( ZVision * engine ) : GUI : : Debugger ( ) , _engine ( engine ) {
DCmd_Register ( " loadimage " , WRAP_METHOD ( Console , cmdLoadImage ) ) ;
DCmd_Register ( " loadvideo " , WRAP_METHOD ( Console , cmdLoadVideo ) ) ;
2013-07-13 11:34:28 -05:00
DCmd_Register ( " loadsound " , WRAP_METHOD ( Console , cmdLoadSound ) ) ;
2013-07-18 14:40:02 -05:00
DCmd_Register ( " raw2wav " , WRAP_METHOD ( Console , cmdRawToWav ) ) ;
2013-07-24 11:36:11 -05:00
DCmd_Register ( " setrenderstate " , WRAP_METHOD ( Console , cmdSetRenderState ) ) ;
2013-07-29 15:08:03 -05:00
DCmd_Register ( " generaterendertable " , WRAP_METHOD ( Console , cmdGenerateRenderTable ) ) ;
2013-07-29 15:20:51 -05:00
DCmd_Register ( " setpanoramafov " , WRAP_METHOD ( Console , cmdSetPanoramaFoV ) ) ;
DCmd_Register ( " setpanoramascale " , WRAP_METHOD ( Console , cmdSetPanoramaScale ) ) ;
2013-08-03 13:44:29 -05:00
DCmd_Register ( " changelocation " , WRAP_METHOD ( Console , cmdChangeLocation ) ) ;
2013-08-04 23:02:43 -05:00
DCmd_Register ( " dumpfile " , WRAP_METHOD ( Console , cmdDumpFile ) ) ;
2013-08-07 15:26:59 -05:00
DCmd_Register ( " dumpcursorfilenames " , WRAP_METHOD ( Console , cmdDumpAllCursorFileNames ) ) ;
2013-07-08 16:14:02 -05:00
}
bool Console : : cmdLoadImage ( int argc , const char * * argv ) {
2013-07-26 12:27:04 -05:00
if ( argc = = 4 )
_engine - > getRenderManager ( ) - > renderImageToScreen ( argv [ 1 ] , atoi ( argv [ 2 ] ) , atoi ( argv [ 3 ] ) ) ;
else if ( argc = = 8 )
_engine - > getRenderManager ( ) - > renderImageToScreen ( argv [ 1 ] , atoi ( argv [ 2 ] ) , atoi ( argv [ 3 ] ) , Common : : Rect ( atoi ( argv [ 4 ] ) , atoi ( argv [ 5 ] ) , atoi ( argv [ 6 ] ) , atoi ( argv [ 7 ] ) ) ) ;
else {
DebugPrintf ( " Use loadimage <fileName> <destinationX> <destinationY> [ <subRectX1> <subRectY2> <subRectX2> <subRectY2> ] to load an image to the screen \n " ) ;
2013-07-12 00:44:05 -05:00
return true ;
2013-07-06 01:54:05 -05:00
}
2013-07-08 16:14:02 -05:00
return true ;
}
2013-07-06 01:54:05 -05:00
2013-07-08 16:14:02 -05:00
bool Console : : cmdLoadVideo ( int argc , const char * * argv ) {
if ( argc ! = 2 ) {
2013-07-16 16:57:12 -05:00
DebugPrintf ( " Use loadvideo <fileName> to load a video to the screen \n " ) ;
2013-07-12 00:44:05 -05:00
return true ;
2013-07-08 16:14:02 -05:00
}
2013-07-06 01:54:05 -05:00
2013-08-04 23:10:27 -05:00
ZorkAVIDecoder videoDecoder ;
if ( videoDecoder . loadFile ( argv [ 1 ] ) ) {
_engine - > playVideo ( videoDecoder ) ;
2013-07-06 01:52:45 -05:00
}
2013-07-08 16:14:02 -05:00
return true ;
}
2013-07-13 11:34:28 -05:00
bool Console : : cmdLoadSound ( int argc , const char * * argv ) {
2013-07-16 16:57:12 -05:00
if ( argc ! = 2 ) {
DebugPrintf ( " Use loadsound <fileName> to load a sound \n " ) ;
2013-07-13 11:34:28 -05:00
return true ;
}
2013-07-16 16:57:12 -05:00
if ( ! Common : : File : : exists ( argv [ 1 ] ) ) {
DebugPrintf ( " File does not exist \n " ) ;
2013-07-13 11:34:28 -05:00
return true ;
}
2013-07-16 16:57:12 -05:00
Audio : : AudioStream * soundStream = makeRawZorkStream ( argv [ 1 ] , _engine ) ;
2013-07-13 11:34:28 -05:00
Audio : : SoundHandle handle ;
2013-07-16 16:57:12 -05:00
_engine - > _mixer - > playStream ( Audio : : Mixer : : kPlainSoundType , & handle , soundStream , - 1 , 100 , 0 , DisposeAfterUse : : YES , false , false ) ;
2013-07-13 11:34:28 -05:00
return true ;
}
2013-07-18 14:40:02 -05:00
bool Console : : cmdRawToWav ( int argc , const char * * argv ) {
if ( argc ! = 3 ) {
DebugPrintf ( " Use raw2wav <rawFilePath> <wavFileName> to dump a .RAW file to .WAV \n " ) ;
return true ;
}
convertRawToWav ( argv [ 1 ] , _engine , argv [ 2 ] ) ;
2013-07-24 11:36:11 -05:00
return true ;
}
bool Console : : cmdSetRenderState ( int argc , const char * * argv ) {
if ( argc ! = 2 ) {
DebugPrintf ( " Use setrenderstate <RenderState: panorama, tilt, flat> to change the current render state \n " ) ;
return true ;
}
Common : : String renderState ( argv [ 1 ] ) ;
if ( renderState . matchString ( " panorama " , true ) )
2013-07-29 15:05:37 -05:00
_engine - > getRenderManager ( ) - > getRenderTable ( ) - > setRenderState ( RenderTable : : PANORAMA ) ;
2013-07-24 11:36:11 -05:00
else if ( renderState . matchString ( " tilt " , true ) )
2013-07-29 15:05:37 -05:00
_engine - > getRenderManager ( ) - > getRenderTable ( ) - > setRenderState ( RenderTable : : TILT ) ;
2013-07-24 11:36:11 -05:00
else if ( renderState . matchString ( " flat " , true ) )
2013-07-29 15:05:37 -05:00
_engine - > getRenderManager ( ) - > getRenderTable ( ) - > setRenderState ( RenderTable : : FLAT ) ;
2013-07-24 11:36:11 -05:00
else
DebugPrintf ( " Use setrenderstate <RenderState: panorama, tilt, flat> to change the current render state \n " ) ;
return true ;
2013-07-18 14:40:02 -05:00
}
2013-07-29 15:08:03 -05:00
bool Console : : cmdGenerateRenderTable ( int argc , const char * * argv ) {
_engine - > getRenderManager ( ) - > getRenderTable ( ) - > generateRenderTable ( ) ;
return true ;
}
bool Console : : cmdSetPanoramaFoV ( int argc , const char * * argv ) {
2013-07-29 15:20:51 -05:00
if ( argc ! = 2 ) {
DebugPrintf ( " Use setpanoramafov <fieldOfView> to change the current panorama field of view \n " ) ;
return true ;
}
_engine - > getRenderManager ( ) - > getRenderTable ( ) - > setPanoramaFoV ( atof ( argv [ 1 ] ) ) ;
2013-07-29 15:08:03 -05:00
return true ;
}
bool Console : : cmdSetPanoramaScale ( int argc , const char * * argv ) {
2013-07-29 15:20:51 -05:00
if ( argc ! = 2 ) {
DebugPrintf ( " Use setpanoramascale <scale> to change the current panorama scale \n " ) ;
return true ;
}
_engine - > getRenderManager ( ) - > getRenderTable ( ) - > setPanoramaScale ( atof ( argv [ 1 ] ) ) ;
2013-07-29 15:08:03 -05:00
return true ;
}
2013-08-03 13:44:29 -05:00
bool Console : : cmdChangeLocation ( int argc , const char * * argv ) {
if ( argc ! = 6 ) {
DebugPrintf ( " Use changelocation <char: world> <char: room> <char:node> <char:view> <int: x position> to change your location " ) ;
return true ;
}
_engine - > getScriptManager ( ) - > changeLocation ( * ( argv [ 1 ] ) , * ( argv [ 2 ] ) , * ( argv [ 3 ] ) , * ( argv [ 4 ] ) , atoi ( argv [ 5 ] ) ) ;
return true ;
}
2013-08-04 23:02:43 -05:00
bool Console : : cmdDumpFile ( int argc , const char * * argv ) {
if ( argc ! = 2 ) {
DebugPrintf ( " Use dumpfile <fileName> to dump a file " ) ;
return true ;
}
writeFileContentsToFile ( argv [ 1 ] , argv [ 1 ] ) ;
return true ;
}
2013-08-07 15:26:59 -05:00
bool Console : : cmdDumpAllCursorFileNames ( int argc , const char * * argv ) {
Common : : DumpFile outputFile ;
outputFile . open ( " cursorFileNames.txt " ) ;
Common : : ArchiveMemberList list ;
SearchMan . listMatchingMembers ( list , " *.zcr " ) ;
// Register the file entries within the zfs archives with the SearchMan
for ( Common : : ArchiveMemberList : : iterator iter = list . begin ( ) ; iter ! = list . end ( ) ; + + iter ) {
outputFile . writeString ( ( * iter ) - > getName ( ) ) ;
outputFile . writeByte ( ' \n ' ) ;
}
return true ;
}
2013-07-06 01:52:45 -05:00
} // End of namespace ZVision