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>
285 lines
6.0 KiB
C++
285 lines
6.0 KiB
C++
//------------------------------------------------------------------------------
|
|
// File: commands.cpp
|
|
//
|
|
// Desc: DirectShow sample code - Processes commands from the user
|
|
//
|
|
// Copyright (c) 1994-2001 Microsoft Corporation. All rights reserved.
|
|
//------------------------------------------------------------------------------
|
|
|
|
#include <streams.h>
|
|
#include <mmreg.h>
|
|
#include <commctrl.h>
|
|
|
|
#include "project.h"
|
|
#include <stdio.h>
|
|
|
|
extern void RepositionMovie(HWND hwnd);
|
|
|
|
extern CMpegMovie *pMpegMovie;
|
|
|
|
|
|
/******************************Public*Routine******************************\
|
|
* ProcessOpen
|
|
*
|
|
\**************************************************************************/
|
|
void
|
|
ProcessOpen(
|
|
TCHAR achFileName[][MAX_PATH],
|
|
DWORD dwNumFiles,
|
|
BOOL bPlay
|
|
)
|
|
{
|
|
/*
|
|
** If we currently have a video loaded we need to discard it here.
|
|
*/
|
|
if(g_State & VCD_LOADED)
|
|
{
|
|
VcdPlayerCloseCmd();
|
|
}
|
|
|
|
pMpegMovie = new CMpegMovie(hwndApp);
|
|
if(pMpegMovie)
|
|
{
|
|
HRESULT hr = pMpegMovie->OpenMovie(achFileName, dwNumFiles);
|
|
if(SUCCEEDED(hr))
|
|
{
|
|
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);
|
|
}
|
|
|
|
|
|
/******************************Public*Routine******************************\
|
|
* VcdPlayerOpenCmd
|
|
*
|
|
\**************************************************************************/
|
|
BOOL
|
|
VcdPlayerOpenCmd(
|
|
void
|
|
)
|
|
{
|
|
static OPENFILENAME ofn;
|
|
static BOOL fFirstTime = TRUE;
|
|
BOOL fRet = FALSE;
|
|
TCHAR achFileName[MAXSTREAMS][MAX_PATH];
|
|
TCHAR achFilter[MAX_PATH];
|
|
LPTSTR lp;
|
|
DWORD dwNumFiles = 0;
|
|
|
|
if(fFirstTime)
|
|
{
|
|
ofn.lStructSize = sizeof(ofn);
|
|
ofn.hwndOwner = hwndApp;
|
|
ofn.Flags = OFN_HIDEREADONLY | OFN_FILEMUSTEXIST |
|
|
OFN_SHAREAWARE | OFN_PATHMUSTEXIST;
|
|
}
|
|
|
|
lstrcpy(achFilter, IdStr(STR_FILE_FILTER));
|
|
ofn.lpstrFilter = achFilter;
|
|
|
|
/*
|
|
** Convert the resource string into to something suitable for
|
|
** GetOpenFileName ie. replace '#' characters with '\0' characters.
|
|
*/
|
|
for(lp = achFilter; *lp; lp++)
|
|
{
|
|
if(*lp == TEXT('#'))
|
|
{
|
|
*lp = TEXT('\0');
|
|
}
|
|
}
|
|
|
|
for (DWORD i = 0; i < MAXSTREAMS; i++)
|
|
{
|
|
ofn.lpstrFile = achFileName[i];
|
|
ofn.nMaxFile = sizeof(achFileName[i]) / sizeof(TCHAR);
|
|
ZeroMemory(achFileName[i], sizeof(achFileName[i]));
|
|
|
|
switch (i)
|
|
{
|
|
case 0:
|
|
// load first file
|
|
ofn.lpstrTitle = TEXT("Select First Media File");
|
|
break;
|
|
case 1:
|
|
// load first file
|
|
ofn.lpstrTitle = TEXT("Select Second Media File");
|
|
break;
|
|
case 2:
|
|
// load first file
|
|
ofn.lpstrTitle = TEXT("Select Third Media File");
|
|
break;
|
|
}
|
|
|
|
fRet = GetOpenFileName(&ofn);
|
|
if(!fRet)
|
|
{
|
|
break;
|
|
}
|
|
dwNumFiles++;
|
|
} // for i
|
|
fFirstTime = FALSE;
|
|
|
|
if (0 == dwNumFiles)
|
|
{
|
|
return fRet;
|
|
}
|
|
|
|
ProcessOpen(achFileName, dwNumFiles);
|
|
|
|
return fRet;
|
|
}
|
|
|
|
/******************************Public*Routine******************************\
|
|
* VcdPlayerCloseCmd
|
|
*
|
|
\**************************************************************************/
|
|
BOOL
|
|
VcdPlayerCloseCmd(
|
|
void
|
|
)
|
|
{
|
|
if(pMpegMovie)
|
|
{
|
|
g_State = VCD_NO_CD;
|
|
pMpegMovie->StopMovie();
|
|
pMpegMovie->CloseMovie();
|
|
delete pMpegMovie;
|
|
pMpegMovie = NULL;
|
|
}
|
|
|
|
// Redraw main window
|
|
InvalidateRect(hwndApp, NULL, FALSE);
|
|
UpdateWindow(hwndApp);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/******************************Public*Routine******************************\
|
|
* VcdPlayerPlayCmd
|
|
*
|
|
\**************************************************************************/
|
|
BOOL
|
|
VcdPlayerPlayCmd(
|
|
void
|
|
)
|
|
{
|
|
BOOL fStopped = (g_State & VCD_STOPPED);
|
|
BOOL fPaused = (g_State & VCD_PAUSED);
|
|
|
|
if((fStopped || fPaused))
|
|
{
|
|
if(pMpegMovie)
|
|
{
|
|
pMpegMovie->PlayMovie();
|
|
}
|
|
|
|
g_State &= ~(fStopped ? VCD_STOPPED : VCD_PAUSED);
|
|
g_State |= VCD_PLAYING;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
/******************************Public*Routine******************************\
|
|
* VcdPlayerStopCmd
|
|
*
|
|
\**************************************************************************/
|
|
BOOL
|
|
VcdPlayerStopCmd(
|
|
void
|
|
)
|
|
{
|
|
BOOL fPlaying = (g_State & VCD_PLAYING);
|
|
BOOL fPaused = (g_State & VCD_PAUSED);
|
|
|
|
if((fPlaying || fPaused))
|
|
{
|
|
if(pMpegMovie)
|
|
{
|
|
pMpegMovie->StopMovie();
|
|
}
|
|
|
|
g_State &= ~(fPlaying ? VCD_PLAYING : VCD_PAUSED);
|
|
g_State |= VCD_STOPPED;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
/******************************Public*Routine******************************\
|
|
* VcdPlayerPauseCmd
|
|
*
|
|
\**************************************************************************/
|
|
BOOL
|
|
VcdPlayerPauseCmd(
|
|
void
|
|
)
|
|
{
|
|
BOOL fPlaying = (g_State & VCD_PLAYING);
|
|
BOOL fPaused = (g_State & VCD_PAUSED);
|
|
|
|
if(fPlaying)
|
|
{
|
|
if(pMpegMovie)
|
|
{
|
|
pMpegMovie->PauseMovie();
|
|
}
|
|
|
|
g_State &= ~VCD_PLAYING;
|
|
g_State |= VCD_PAUSED;
|
|
}
|
|
else if(fPaused)
|
|
{
|
|
if(pMpegMovie)
|
|
{
|
|
pMpegMovie->PlayMovie();
|
|
}
|
|
|
|
g_State &= ~VCD_PAUSED;
|
|
g_State |= VCD_PLAYING;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
/******************************Public*Routine******************************\
|
|
* VcdPlayerRewindCmd
|
|
*
|
|
\**************************************************************************/
|
|
BOOL
|
|
VcdPlayerRewindCmd(
|
|
void
|
|
)
|
|
{
|
|
if(pMpegMovie)
|
|
{
|
|
pMpegMovie->SeekToPosition((REFTIME)0,FALSE);
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|