Initial commit: ROW Client source code

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>
This commit is contained in:
2025-11-29 16:24:34 +09:00
commit e067522598
5135 changed files with 1745744 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,40 @@
//-----------------------------------------------------------------------------
// Sample Name: SpriteAnimate Sample
//
// Copyright (c) 1999-2001 Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
Description
===========
SpriteAnimate demonstrates a simple technique to animate DirectDraw surfaces.
Path
====
Source: DXSDK\Samples\Multimedia\DDraw\SpriteAnimate
Executable: DXSDK\Samples\Multimedia\DDraw\Bin
User's Guide
============
SpriteAnimate requires no user input. Press the ESC key to quit the program.
Programming Notes
=================
For details on how to setup a full-screen DirectDraw app, see the FullScreenMode
sample.
One simple method to animate sprites in DirectDraw is author a single bitmap
file to contain many frames of animation. The program then stores the current frame
indicator in each sprite's state. From this current frame indicator, it can
progmatically derive a src rect that encompasses only a single frame
of animation in the off-screen plain surface. The rect then is blited from the
off-screen plain surface to the back buffer.
InitDirectDraw() in the sample shows how to build an cached array of these source rects.
DisplayFrame() then access this array based on each sprite's current frame.

View File

@@ -0,0 +1,20 @@
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by SpriteAnimate.rc
//
#define IDI_MAIN 101
#define IDR_MAIN_ACCEL 103
#define IDB_ANIMATE_SHEET 108
#define IDM_EXIT 1001
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 109
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1003
#define _APS_NEXT_SYMED_VALUE 104
#endif
#endif

View File

@@ -0,0 +1,532 @@
//-----------------------------------------------------------------------------
// File: SpriteAnimate.cpp
//
// Desc: This sample demonstrates how to animate sprites using
// DirectDraw. The samples runs in full-screen mode. Pressing any
// key will exit the sample.
//
// Copyright (c) 1999-2001 Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
#define STRICT
#include <windows.h>
#include <ddraw.h>
#include <mmsystem.h>
#include "resource.h"
#include "ddutil.h"
//-----------------------------------------------------------------------------
// Defines, constants, and global variables
//-----------------------------------------------------------------------------
#define SAFE_DELETE(p) { if(p) { delete (p); (p)=NULL; } }
#define SAFE_RELEASE(p) { if(p) { (p)->Release(); (p)=NULL; } }
#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
#define SCREEN_BPP 16
#define SPRITE_DIAMETER 48
#define NUM_SPRITES 25
#define NUM_FRAMES 30
#define NUM_RAND 100
struct SPRITE_STRUCT
{
FLOAT fRotationSpeed;
FLOAT fRotationTick;
LONG lFrame;
BOOL bClockwise;
FLOAT fPosX;
FLOAT fPosY;
FLOAT fVelX;
FLOAT fVelY;
};
CDisplay* g_pDisplay = NULL;
CSurface* g_pAnimationSurface = NULL;
RECT g_rcViewport;
RECT g_rcScreen;
BOOL g_bActive = FALSE;
DWORD g_dwLastTick;
SPRITE_STRUCT g_Sprite[NUM_SPRITES];
RECT g_rcFrame[NUM_FRAMES];
LONG g_lRandTable[NUM_RAND];
DWORD g_dwRandIndex;
//-----------------------------------------------------------------------------
// Function-prototypes
//-----------------------------------------------------------------------------
LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );
HRESULT WinInit( HINSTANCE hInst, int nCmdShow, HWND* phWnd );
HRESULT InitDirectDraw( HWND hWnd );
VOID FreeDirectDraw();
HRESULT ProcessNextFrame();
VOID UpdateSprite( SPRITE_STRUCT* pSprite, FLOAT fTimeDelta );
HRESULT DisplayFrame();
HRESULT RestoreSurfaces();
//-----------------------------------------------------------------------------
// Name: WinMain()
// Desc: Entry point to the program. Initializes everything and calls
// UpdateFrame() when idle from the message pump.
//-----------------------------------------------------------------------------
int APIENTRY WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int nCmdShow )
{
MSG msg;
HWND hWnd;
ZeroMemory( &g_Sprite, sizeof(SPRITE_STRUCT) * NUM_SPRITES );
srand( GetTickCount() );
if( FAILED( WinInit( hInst, nCmdShow, &hWnd ) ) )
return FALSE;
// Make a timer go off to re-init the table of random values every once in a while
SetTimer( hWnd, 0, 1500, NULL );
if( FAILED( InitDirectDraw( hWnd ) ) )
{
if( g_pDisplay )
g_pDisplay->GetDirectDraw()->SetCooperativeLevel( NULL, DDSCL_NORMAL );
MessageBox( hWnd, TEXT("DirectDraw init failed. ")
TEXT("The sample will now exit. "), TEXT("DirectDraw Sample"),
MB_ICONERROR | MB_OK );
return FALSE;
}
g_dwLastTick = timeGetTime();
while( TRUE )
{
// Look for messages, if none are found then
// update the state and display it
if( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )
{
if( 0 == GetMessage(&msg, NULL, 0, 0 ) )
{
// WM_QUIT was posted, so exit
return (int)msg.wParam;
}
// Translate and dispatch the message
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
{
if( g_bActive )
{
// Move the sprites, blt them to the back buffer, then
// flip or blt the back buffer to the primary buffer
if( FAILED( ProcessNextFrame() ) )
{
SAFE_DELETE( g_pDisplay );
MessageBox( hWnd, TEXT("Displaying the next frame failed. ")
TEXT("The sample will now exit. "), TEXT("DirectDraw Sample"),
MB_ICONERROR | MB_OK );
return FALSE;
}
}
else
{
// Make sure we go to sleep if we have nothing else to do
WaitMessage();
// Ignore time spent inactive
g_dwLastTick = timeGetTime();
}
}
}
}
//-----------------------------------------------------------------------------
// Name: WinInit()
// Desc: Init the window
//-----------------------------------------------------------------------------
HRESULT WinInit( HINSTANCE hInst, int nCmdShow, HWND* phWnd )
{
WNDCLASS wc;
HWND hWnd;
// Register the Window Class
wc.lpszClassName = TEXT("SpriteAnimate");
wc.lpfnWndProc = MainWndProc;
wc.style = CS_VREDRAW | CS_HREDRAW;
wc.hInstance = hInst;
wc.hIcon = LoadIcon( hInst, MAKEINTRESOURCE(IDI_MAIN) );
wc.hCursor = LoadCursor( NULL, IDC_ARROW );
wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
wc.lpszMenuName = NULL;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
if( RegisterClass( &wc ) == 0 )
return E_FAIL;
// Create and show the main window
hWnd = CreateWindowEx( 0, TEXT("SpriteAnimate"), TEXT("DirectDraw SpriteAnimate Sample"),
WS_POPUP, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, NULL );
if( hWnd == NULL )
return E_FAIL;
ShowWindow( hWnd, nCmdShow );
UpdateWindow( hWnd );
*phWnd = hWnd;
return S_OK;
}
//-----------------------------------------------------------------------------
// Name: InitDirectDraw()
// Desc: Create the DirectDraw object, and init the surfaces
//-----------------------------------------------------------------------------
HRESULT InitDirectDraw( HWND hWnd )
{
HRESULT hr;
g_pDisplay = new CDisplay();
if( FAILED( hr = g_pDisplay->CreateFullScreenDisplay( hWnd, SCREEN_WIDTH,
SCREEN_HEIGHT, SCREEN_BPP ) ) )
{
MessageBox( hWnd, TEXT("This display card does not support 640x480x16. "),
TEXT("DirectDraw Sample"), MB_ICONERROR | MB_OK );
return hr;
}
// Create a surface, and draw a bitmap resource on it.
if( FAILED( hr = g_pDisplay->CreateSurfaceFromBitmap( &g_pAnimationSurface,
MAKEINTRESOURCE( IDB_ANIMATE_SHEET ),
SPRITE_DIAMETER * 5,
SPRITE_DIAMETER * 6 ) ) )
return hr;
// Set the color key for the logo sprite to black
if( FAILED( hr = g_pAnimationSurface->SetColorKey( 0 ) ) )
return hr;
// Init all the sprites. All of these sprites using the
// same g_pDDSAnimationSheet surface, but depending on the
// sprite's lFrame value, it indexes a different rect on the
// surface.
for( int iSprite = 0; iSprite < NUM_SPRITES; iSprite++ )
{
// Set the sprite's position and velocity
g_Sprite[iSprite].fPosX = (float) (rand() % SCREEN_WIDTH);
g_Sprite[iSprite].fPosY = (float) (rand() % SCREEN_HEIGHT);
g_Sprite[iSprite].fVelX = 500.0f * rand() / RAND_MAX - 250.0f;
g_Sprite[iSprite].fVelY = 500.0f * rand() / RAND_MAX - 250.0f;
g_Sprite[iSprite].lFrame = rand() % NUM_FRAMES;
g_Sprite[iSprite].fRotationTick = 0.0f;
g_Sprite[iSprite].fRotationSpeed = (rand() % 50 + 25 ) / 1000.0f;
g_Sprite[iSprite].bClockwise = rand() % 2;
}
// Precompute the source rects for g_pDDSAnimateSheet. The source rects
// are used during the blt of the dds to the backbuffer.
for( int iFrame = 0; iFrame < NUM_FRAMES; iFrame++ )
{
g_rcFrame[iFrame].top = (iFrame / 5) * SPRITE_DIAMETER;
g_rcFrame[iFrame].left = (iFrame % 5) * SPRITE_DIAMETER;
g_rcFrame[iFrame].bottom = g_rcFrame[iFrame].top + SPRITE_DIAMETER;
g_rcFrame[iFrame].right = g_rcFrame[iFrame].left + SPRITE_DIAMETER;
}
// Init a array of random values. This array is used to create the
// 'flocking' effect the seen in the sample.
g_dwRandIndex = 0;
for( int iRand = 0; iRand < NUM_RAND; iRand++ )
g_lRandTable[ iRand ] = rand();
return S_OK;
}
//-----------------------------------------------------------------------------
// Name: FreeDirectDraw()
// Desc: Release all the DirectDraw objects
//-----------------------------------------------------------------------------
VOID FreeDirectDraw()
{
SAFE_DELETE( g_pAnimationSurface );
SAFE_DELETE( g_pDisplay );
}
//-----------------------------------------------------------------------------
// Name: MainWndProc()
// Desc: The main window procedure
//-----------------------------------------------------------------------------
LRESULT CALLBACK MainWndProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch (msg)
{
case WM_KEYDOWN:
PostMessage( hWnd, WM_CLOSE, 0, 0 );
return 0L;
case WM_TIMER:
{
// The timer triggered, so re-init table of random values
g_dwRandIndex = 0;
for( int iRand = 0; iRand < NUM_RAND; iRand++ )
g_lRandTable[ iRand ] = rand();
}
break;
case WM_SETCURSOR:
// Hide the cursor in fullscreen
SetCursor( NULL );
return TRUE;
case WM_SIZE:
// Check to see if we are losing our window...
if( SIZE_MAXHIDE==wParam || SIZE_MINIMIZED==wParam )
g_bActive = FALSE;
else
g_bActive = TRUE;
break;
case WM_EXITMENULOOP:
// Ignore time spent in menu
g_dwLastTick = timeGetTime();
break;
case WM_EXITSIZEMOVE:
// Ignore time spent resizing
g_dwLastTick = timeGetTime();
break;
case WM_SYSCOMMAND:
// Prevent moving/sizing and power loss in fullscreen mode
switch( wParam )
{
case SC_MOVE:
case SC_SIZE:
case SC_MAXIMIZE:
case SC_MONITORPOWER:
return TRUE;
}
break;
case WM_DESTROY:
// Cleanup and close the app
FreeDirectDraw();
PostQuitMessage( 0 );
return 0L;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
//-----------------------------------------------------------------------------
// Name: ProcessNextFrame()
// Desc: Move the sprites, blt them to the back buffer, then
// flips the back buffer to the primary buffer
//-----------------------------------------------------------------------------
HRESULT ProcessNextFrame()
{
HRESULT hr;
// Figure how much time has passed since the last time
DWORD dwCurrTick = timeGetTime();
DWORD dwTickDiff = dwCurrTick - g_dwLastTick;
// Don't update if no time has passed
if( dwTickDiff == 0 )
return S_OK;
g_dwLastTick = dwCurrTick;
// Update the sprites according to how much time has passed
for( int iSprite = 0; iSprite < NUM_SPRITES; iSprite++ )
UpdateSprite( &g_Sprite[ iSprite ], dwTickDiff / 1000.0f );
// Display the sprites on the screen
if( FAILED( hr = DisplayFrame() ) )
{
if( hr != DDERR_SURFACELOST )
return hr;
// The surfaces were lost so restore them
RestoreSurfaces();
}
return S_OK;
}
//-----------------------------------------------------------------------------
// Name: GetNextRand()
// Desc: Gets the next element from the circular array of random values
//-----------------------------------------------------------------------------
LONG GetNextRand()
{
LONG lRand = g_lRandTable[ g_dwRandIndex++ ];
g_dwRandIndex %= NUM_RAND;
return lRand;
}
//-----------------------------------------------------------------------------
// Name: UpdateSprite()
// Desc: Moves and bounces the sprite based on how much time has passed.
// It also changes the sprite state based on random values it gets
// from the array g_lRandTable
//-----------------------------------------------------------------------------
VOID UpdateSprite( SPRITE_STRUCT* pSprite, FLOAT fTimeDelta )
{
// Update the sprite position
pSprite->fPosX += pSprite->fVelX * fTimeDelta;
pSprite->fPosY += pSprite->fVelY * fTimeDelta;
// See if its time to advance the sprite to the next frame
pSprite->fRotationTick += fTimeDelta;
if( pSprite->fRotationTick > pSprite->fRotationSpeed )
{
// If it is, then either change the frame clockwise or counter-clockwise
if( pSprite->bClockwise )
{
pSprite->lFrame++;
pSprite->lFrame %= NUM_FRAMES;
}
else
{
pSprite->lFrame--;
if( pSprite->lFrame < 0 )
pSprite->lFrame = NUM_FRAMES - 1;
}
pSprite->fRotationTick = 0;
}
// Using the next element from the random arry,
// randomize the velocity of the sprite
if( GetNextRand() % 100 < 2 )
{
pSprite->fVelX = 500.0f * GetNextRand() / RAND_MAX - 250.0f;
pSprite->fVelY = 500.0f * GetNextRand() / RAND_MAX - 250.0f;
}
// Using the next element from the random arry,
// randomize the rotational speed of the sprite
if( GetNextRand() % 100 < 5 )
pSprite->fRotationSpeed = ( GetNextRand() % 50 + 5 ) / 1000.0f;
// Clip the position, and bounce if it hits the edge
if( pSprite->fPosX < 0.0f )
{
pSprite->fPosX = 0;
pSprite->fVelX = -pSprite->fVelX;
}
if( pSprite->fPosX >= SCREEN_WIDTH - SPRITE_DIAMETER )
{
pSprite->fPosX = SCREEN_WIDTH - 1 - SPRITE_DIAMETER;
pSprite->fVelX = -pSprite->fVelX;
}
if( pSprite->fPosY < 0 )
{
pSprite->fPosY = 0;
pSprite->fVelY = -pSprite->fVelY;
}
if( pSprite->fPosY > SCREEN_HEIGHT - SPRITE_DIAMETER )
{
pSprite->fPosY = SCREEN_HEIGHT - 1 - SPRITE_DIAMETER;
pSprite->fVelY = -pSprite->fVelY;
}
}
//-----------------------------------------------------------------------------
// Name: DisplayFrame()
// Desc: Blts a the sprites to the back buffer, then flips the
// back buffer onto the primary buffer.
//-----------------------------------------------------------------------------
HRESULT DisplayFrame()
{
HRESULT hr;
// Fill the back buffer with black, ignoring errors until the flip
g_pDisplay->Clear( 0 );
// Blt all the sprites onto the back buffer using color keying,
// ignoring errors until the flip. Note that all of these sprites
// use the same DirectDraw surface.
for( int iSprite = 0; iSprite < NUM_SPRITES; iSprite++ )
{
g_pDisplay->Blt( (DWORD)g_Sprite[iSprite].fPosX,
(DWORD)g_Sprite[iSprite].fPosY,
g_pAnimationSurface,
&g_rcFrame[ g_Sprite[iSprite].lFrame ] );
}
// We are in fullscreen mode, so perform a flip and return
// any errors like DDERR_SURFACELOST
if( FAILED( hr = g_pDisplay->Present() ) )
return hr;
return S_OK;
}
//-----------------------------------------------------------------------------
// Name: RestoreSurfaces()
// Desc: Restore all the surfaces, and redraw the sprite surfaces.
//-----------------------------------------------------------------------------
HRESULT RestoreSurfaces()
{
HRESULT hr;
if( FAILED( hr = g_pDisplay->GetDirectDraw()->RestoreAllSurfaces() ) )
return hr;
// No need to re-create the surface, just re-draw it.
if( FAILED( hr = g_pAnimationSurface->DrawBitmap( MAKEINTRESOURCE( IDB_ANIMATE_SHEET ),
SPRITE_DIAMETER * 5,
SPRITE_DIAMETER * 6 ) ) )
return hr;
return S_OK;
}

View File

@@ -0,0 +1,135 @@
# Microsoft Developer Studio Project File - Name="SpriteAnimate" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Application" 0x0101
CFG=SpriteAnimate - Win32 Release
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "spriteanimate.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "spriteanimate.mak" CFG="SpriteAnimate - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "SpriteAnimate - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "SpriteAnimate - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "SpriteAnimate - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir ".\Release"
# PROP BASE Intermediate_Dir ".\Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir ".\Release"
# PROP Intermediate_Dir ".\Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /W3 /GX /O2 /I "..\common" /I "..\..\common\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /machine:I386
# ADD LINK32 dxguid.lib winmm.lib dxerr8.lib ddraw.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /machine:I386 /stack:0x200000,0x200000
!ELSEIF "$(CFG)" == "SpriteAnimate - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir ".\Debug"
# PROP BASE Intermediate_Dir ".\Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir ".\Debug"
# PROP Intermediate_Dir ".\Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\common\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /debug /machine:I386
# ADD LINK32 winmm.lib dxguid.lib dxerr8.lib ddraw.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /debug /machine:I386 /stack:0x200000,0x200000
!ENDIF
# Begin Target
# Name "SpriteAnimate - Win32 Release"
# Name "SpriteAnimate - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;for;f90"
# Begin Source File
SOURCE=.\spriteanimate.cpp
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
# Begin Source File
SOURCE=.\resource.h
# End Source File
# Begin Source File
SOURCE=.\spriteanimate.rc
# End Source File
# End Group
# Begin Group "Common"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\common\src\ddutil.cpp
# End Source File
# Begin Source File
SOURCE=..\..\common\include\ddutil.h
# End Source File
# Begin Source File
SOURCE=..\..\common\src\dxutil.cpp
# End Source File
# Begin Source File
SOURCE=..\..\common\include\dxutil.h
# End Source File
# End Group
# Begin Source File
SOURCE=.\readme.txt
# End Source File
# End Target
# End Project

View File

@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "SpriteAnimate"=.\spriteanimate.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@@ -0,0 +1,221 @@
# Microsoft Developer Studio Generated NMAKE File, Based on spriteanimate.dsp
!IF "$(CFG)" == ""
CFG=SpriteAnimate - Win32 Release
!MESSAGE No configuration specified. Defaulting to SpriteAnimate - Win32 Release.
!ENDIF
!IF "$(CFG)" != "SpriteAnimate - Win32 Release" && "$(CFG)" != "SpriteAnimate - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "spriteanimate.mak" CFG="SpriteAnimate - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "SpriteAnimate - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "SpriteAnimate - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
!IF "$(CFG)" == "SpriteAnimate - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
ALL : "$(OUTDIR)\spriteanimate.exe"
CLEAN :
-@erase "$(INTDIR)\ddutil.obj"
-@erase "$(INTDIR)\dxutil.obj"
-@erase "$(INTDIR)\spriteanimate.obj"
-@erase "$(INTDIR)\spriteanimate.res"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(OUTDIR)\spriteanimate.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "..\common" /I "..\..\common\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fp"$(INTDIR)\spriteanimate.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
RSC=rc.exe
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\spriteanimate.res" /d "NDEBUG"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\spriteanimate.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=dxguid.lib winmm.lib dxerr8.lib ddraw.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /incremental:no /pdb:"$(OUTDIR)\spriteanimate.pdb" /machine:I386 /out:"$(OUTDIR)\spriteanimate.exe" /stack:0x200000,0x200000
LINK32_OBJS= \
"$(INTDIR)\spriteanimate.obj" \
"$(INTDIR)\ddutil.obj" \
"$(INTDIR)\dxutil.obj" \
"$(INTDIR)\spriteanimate.res"
"$(OUTDIR)\spriteanimate.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "SpriteAnimate - Win32 Debug"
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
ALL : "$(OUTDIR)\spriteanimate.exe"
CLEAN :
-@erase "$(INTDIR)\ddutil.obj"
-@erase "$(INTDIR)\dxutil.obj"
-@erase "$(INTDIR)\spriteanimate.obj"
-@erase "$(INTDIR)\spriteanimate.res"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(OUTDIR)\spriteanimate.exe"
-@erase "$(OUTDIR)\spriteanimate.ilk"
-@erase "$(OUTDIR)\spriteanimate.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /I "..\..\common\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fp"$(INTDIR)\spriteanimate.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
MTL=midl.exe
MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
RSC=rc.exe
RSC_PROJ=/l 0x409 /fo"$(INTDIR)\spriteanimate.res" /d "_DEBUG"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\spriteanimate.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=winmm.lib dxguid.lib dxerr8.lib ddraw.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /nologo /subsystem:windows /incremental:yes /pdb:"$(OUTDIR)\spriteanimate.pdb" /debug /machine:I386 /out:"$(OUTDIR)\spriteanimate.exe" /stack:0x200000,0x200000
LINK32_OBJS= \
"$(INTDIR)\spriteanimate.obj" \
"$(INTDIR)\ddutil.obj" \
"$(INTDIR)\dxutil.obj" \
"$(INTDIR)\spriteanimate.res"
"$(OUTDIR)\spriteanimate.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("spriteanimate.dep")
!INCLUDE "spriteanimate.dep"
!ELSE
!MESSAGE Warning: cannot find "spriteanimate.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "SpriteAnimate - Win32 Release" || "$(CFG)" == "SpriteAnimate - Win32 Debug"
SOURCE=.\spriteanimate.cpp
"$(INTDIR)\spriteanimate.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\spriteanimate.rc
"$(INTDIR)\spriteanimate.res" : $(SOURCE) "$(INTDIR)"
$(RSC) $(RSC_PROJ) $(SOURCE)
SOURCE=..\..\common\src\ddutil.cpp
"$(INTDIR)\ddutil.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\common\src\dxutil.cpp
"$(INTDIR)\dxutil.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
!ENDIF

View File

@@ -0,0 +1,79 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include <windows.h>
#include <afxres.h>
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_MAIN ICON DISCARDABLE "DirectX.ico"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include <windows.h>\r\n"
"#include <afxres.h>\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
IDB_ANIMATE_SHEET BITMAP DISCARDABLE "animate.bmp"
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED