Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
143 lines
4.0 KiB
C++
143 lines
4.0 KiB
C++
//----------------------------------------------------------------------------
|
|
// File: commands.cpp
|
|
//
|
|
// Desc: DirectShow sample code
|
|
// Processes commands from the user.
|
|
//
|
|
// Copyright (c) 2000-2001 Microsoft Corporation. All rights reserved.
|
|
//----------------------------------------------------------------------------
|
|
#include "project.h"
|
|
#include <mmreg.h>
|
|
#include <commctrl.h>
|
|
|
|
#include <stdio.h>
|
|
#include <io.h>
|
|
#include "resrc1.h"
|
|
|
|
// Function prototypes
|
|
void RepositionMovie(HWND hwnd);
|
|
bool FindMediaFile(TCHAR * achFileName, TCHAR * achFoundFile);
|
|
|
|
// External data
|
|
extern TCHAR g_achFileName[];
|
|
extern CMpegMovie * pMpegMovie;
|
|
|
|
|
|
//----------------------------------------------------------------------------
|
|
// ProcessOpen
|
|
//
|
|
// Creates instance of CMpegMovie and plays it. Called from user UI functions.
|
|
//
|
|
// Parameters:
|
|
// achFileName - path to the file to play
|
|
// bPlay - start demonstration if true
|
|
//----------------------------------------------------------------------------
|
|
BOOL
|
|
ProcessOpen(
|
|
TCHAR *achFileName,
|
|
BOOL bPlay
|
|
)
|
|
{
|
|
TCHAR achFoundFile[MAX_PATH];
|
|
|
|
if( !FindMediaFile(achFileName, achFoundFile) )
|
|
{
|
|
InvalidateRect( hwndApp, NULL, FALSE );
|
|
UpdateWindow( hwndApp );
|
|
return false;
|
|
}
|
|
|
|
lstrcpy(g_achFileName, achFoundFile);
|
|
pMpegMovie = new CMpegMovie(hwndApp);
|
|
|
|
if (pMpegMovie) {
|
|
|
|
HRESULT hr = pMpegMovie->OpenMovie(g_achFileName);
|
|
if (SUCCEEDED(hr)) {
|
|
|
|
TCHAR achTmp[MAX_PATH];
|
|
|
|
wsprintf(achTmp, IdStr(STR_APP_TITLE_LOADED), g_achFileName );
|
|
g_State = (VCD_LOADED | VCD_STOPPED);
|
|
|
|
RepositionMovie(hwndApp);
|
|
InvalidateRect(hwndApp, NULL, TRUE);
|
|
|
|
if (bPlay) {
|
|
pMpegMovie->PlayMovie();
|
|
}
|
|
}
|
|
else {
|
|
MessageBox(hwndApp,
|
|
TEXT("Failed to open the movie; "),
|
|
IdStr(STR_APP_TITLE), MB_OK );
|
|
|
|
pMpegMovie->CloseMovie();
|
|
delete pMpegMovie;
|
|
pMpegMovie = NULL;
|
|
}
|
|
}
|
|
|
|
InvalidateRect( hwndApp, NULL, FALSE );
|
|
UpdateWindow( hwndApp );
|
|
return TRUE;
|
|
}
|
|
|
|
//----------------------------------------------------------------------------
|
|
// FindMediaFile
|
|
//
|
|
// Provides FileOpen dialog to select media file or processes command line
|
|
//
|
|
// Parameters:
|
|
// achFileName - command line
|
|
// achFoundFile - path to the file to play
|
|
//
|
|
// Return: true if success
|
|
//----------------------------------------------------------------------------
|
|
bool FindMediaFile(TCHAR * achFileName, TCHAR * achFoundFile)
|
|
{
|
|
long lFindRes;
|
|
struct _finddata_t fileinfo;
|
|
|
|
lFindRes = _findfirst( achFileName, &fileinfo );
|
|
if( -1 != lFindRes )
|
|
{
|
|
lstrcpy(achFoundFile, achFileName);
|
|
return true;
|
|
}
|
|
|
|
OPENFILENAME ofn;
|
|
TCHAR szBuffer[MAX_PATH];
|
|
|
|
lstrcpy(szBuffer, TEXT(""));
|
|
static char szFilter[] = "Video Files (.MOV, .AVI, .MPG, .VOB, .QT)\0*.AVI;*.MOV;*.MPG;*.VOB;*.QT\0" \
|
|
"All Files (*.*)\0*.*\0\0";
|
|
ofn.lStructSize = sizeof(OPENFILENAME);
|
|
ofn.hwndOwner = NULL;
|
|
ofn.hInstance = NULL;
|
|
ofn.lpstrFilter = szFilter;
|
|
ofn.nFilterIndex = 1;
|
|
ofn.lpstrCustomFilter = NULL;
|
|
ofn.nMaxCustFilter = 0;
|
|
ofn.lpstrFile = szBuffer;
|
|
ofn.nMaxFile = _MAX_PATH;
|
|
ofn.lpstrFileTitle = NULL;
|
|
ofn.nMaxFileTitle = 0;
|
|
ofn.lpstrInitialDir = NULL;
|
|
ofn.lpstrTitle = "VMRXCL: Select a video file to play...";
|
|
ofn.Flags = OFN_HIDEREADONLY;
|
|
ofn.nFileOffset = 0;
|
|
ofn.nFileExtension = 0;
|
|
ofn.lpstrDefExt = "mov";
|
|
ofn.lCustData = 0L;
|
|
ofn.lpfnHook = NULL;
|
|
ofn.lpTemplateName = NULL;
|
|
|
|
if (GetOpenFileName (&ofn)) // user specified a file
|
|
{
|
|
lstrcpy(achFoundFile, ofn.lpstrFile);
|
|
return true;
|
|
}// if
|
|
|
|
return false;
|
|
} |