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: 768 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,544 @@
//-----------------------------------------------------------------------------
// File: Donuts.h
//
// Desc: Header for Donuts3D game
//
// Copyright (C) 1995-2001 Microsoft Corporation. All Rights Reserved.
//-----------------------------------------------------------------------------
#ifndef DONUTS_H
#define DONUTS_H
//-----------------------------------------------------------------------------
// Defines, and constants
//-----------------------------------------------------------------------------
// This GUID must be unique for every game, and the same for
// every instance of this app. // {2014BAAC-F1FD-458e-9091-0F85C8CF6AFE}
// The GUID allows DirectInput to remember input settings
GUID g_guidApp = { 0x2014baac, 0xf1fd, 0x458e, { 0x90, 0x91, 0xf, 0x85, 0xc8, 0xcf, 0x6a, 0xfe } };
// Error codes
#define DONUTS3DERR_NODIRECT3D 0x00000001
#define DONUTS3DERR_NOD3DDEVICE 0x00000002
#define DONUTS3DERR_NOTEXTURES 0x00000003
#define DONUTS3DERR_NOGEOMETRY 0x00000004
#define DONUTS3DERR_NO3DRESOURCES 0x00000005
#define DONUTS3DERR_NOINPUT 0x00000006
// States the app can be in
enum{ APPSTATE_LOADSPLASH, APPSTATE_DISPLAYSPLASH, APPSTATE_ACTIVE,
APPSTATE_BEGINLEVELSCREEN, APPSTATE_DISPLAYLEVELSCREEN };
// Game object types
enum{ OBJ_DONUT=0, OBJ_PYRAMID, OBJ_CUBE, OBJ_SPHERE, OBJ_CLOUD, OBJ_SHIP,
OBJ_BULLET };
// Object dimensions and fixed properties
#define DONUT_WIDTH 32
#define DONUT_HEIGHT 32
#define PYRAMID_WIDTH 32
#define PYRAMID_HEIGHT 32
#define SPHERE_WIDTH 16
#define SPHERE_HEIGHT 16
#define CUBE_WIDTH 16
#define CUBE_HEIGHT 16
#define CLOUD_WIDTH 32
#define CLOUD_HEIGHT 32
#define BULLET_WIDTH 3
#define BULLET_HEIGHT 3
#define NUM_DONUT_FRAMES 30
#define NUM_PYRAMID_FRAMES 40
#define NUM_SPHERE_FRAMES 40
#define NUM_CUBE_FRAMES 40
#define NUM_BULLET_FRAMES 400
#define BULLET_XOFFSET 304
#define BULLET_YOFFSET 0
// Defines for the in-game menu
#define MENU_MAIN 1
#define MENU_SOUND 2
#define MENU_VIDEO 3
#define MENU_INPUT 4
#define MENU_VIEWDEVICES 5
#define MENU_CONFIGDEVICES 6
#define MENU_WINDOWED 7
#define MENU_640x480 8
#define MENU_800x600 9
#define MENU_1024x768 10
#define MENU_BACK 11
#define MENU_SOUNDON 12
#define MENU_SOUNDOFF 13
#define MENU_QUIT 14
TCHAR* g_strShipFiles[] = { _T("Concept Plane 3.x"), _T("Spaceship 2.x"), _T("Shusui.x"),
_T("Space Station 7.x"), _T("Spaceship 8.x"), _T("Orbiter.x"),
_T("Spaceship 13.x"), _T("Spaceship 5.x"), _T("Star Sail.x"),
_T("Heli.x"), };
TCHAR* g_strShipNames[] = { _T("Concept Plane"), _T("Green Machine"), _T("Purple Prowler"),
_T("Drone Clone"), _T("Canyon Fighter"), _T("Roundabout"),
_T("Tie-X7"), _T("Gunner"), _T("Star Sail"),
_T("Helicopter"), };
//-----------------------------------------------------------------------------
// Name: struct DisplayObject
// Desc: A game object that goes in the display list
//-----------------------------------------------------------------------------
struct DisplayObject
{
DisplayObject* pNext; // Link to next object
DisplayObject* pPrev; // Link to previous object
DWORD dwType; // Type of object
BOOL bVisible; // Whether the object is visible
D3DXVECTOR3 vPos; // Position
D3DXVECTOR3 vVel; // Velocity
FLOAT fSize;
// Constructor
DisplayObject( DWORD type, D3DVECTOR p, D3DVECTOR v );
};
//-----------------------------------------------------------------------------
// Derived classes for displayable game objects
//-----------------------------------------------------------------------------
struct C3DSprite : public DisplayObject
{
DWORD dwFramesPerLine; // How anim frames are packed in bitmap
FLOAT frame; // Current animation frame
FLOAT fMaxFrame; // Max animation frame value
FLOAT delay; // Frame/second
DWORD dwColor;
DWORD dwTextureOffsetX; // Pixel offsets into the game texture
DWORD dwTextureOffsetY;
DWORD dwTextureWidth; // Width and height in pixels
DWORD dwTextureHeight;
C3DSprite( DWORD type, D3DVECTOR p, D3DVECTOR v );
};
class CDonut : public C3DSprite
{
public:
CDonut( D3DVECTOR p, D3DVECTOR v );
};
class CPyramid : public C3DSprite
{
public:
CPyramid( D3DVECTOR p, D3DVECTOR v );
};
class CSphere : public C3DSprite
{
public:
CSphere( D3DVECTOR p, D3DVECTOR v );
};
class CCube : public C3DSprite
{
public:
CCube( D3DVECTOR p, D3DVECTOR v );
};
class CCloud : public C3DSprite
{
public:
CCloud( D3DVECTOR p, D3DVECTOR v );
};
class CBullet : public C3DSprite
{
public:
CBullet( D3DVECTOR p, D3DVECTOR v, DWORD dwType );
};
class CShip : public DisplayObject
{
public:
FLOAT fRoll;
FLOAT fAngle;
BOOL bExploded;
FLOAT fShowDelay;
public:
CShip( D3DVECTOR p );
};
//-----------------------------------------------------------------------------
// Custom Direct3D vertex types
//-----------------------------------------------------------------------------
struct SCREENVERTEX
{
D3DXVECTOR4 p;
DWORD color;
};
struct SPRITEVERTEX
{
D3DXVECTOR3 p;
DWORD color;
FLOAT tu, tv;
};
struct MODELVERTEX
{
D3DXVECTOR3 p;
D3DXVECTOR3 n;
FLOAT tu, tv;
};
#define D3DFVF_SCREENVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)
#define D3DFVF_SPRITEVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1)
#define D3DFVF_MODELVERTEX (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1)
//-----------------------------------------------------------------------------
// App defined structures
//-----------------------------------------------------------------------------
// DirectInput action mapper reports events only when buttons/axis change
// so we need to remember the present state of relevant axis/buttons for
// each DirectInput device. The CInputDeviceManager will store a
// pointer for each device that points to this struct
struct InputDeviceState
{
FLOAT fAxisMoveUD;
BOOL bButtonForwardThrust;
BOOL bButtonReverseThrust;
FLOAT fAxisRotateLR;
BOOL bButtonRotateLeft;
BOOL bButtonRotateRight;
BOOL bButtonFireWeapons;
// Menu input variables
FLOAT fAxisMenuUD;
};
// Struct to store the current input state
struct UserInput
{
FLOAT fAxisMoveUD;
FLOAT fAxisRotateLR;
BOOL bButtonFireWeapons;
BOOL bButtonEnableShield;
// One-shot variables
BOOL bDoChangeView;
// Menu input variables
BOOL bDoMenuUp;
BOOL bDoMenuDown;
BOOL bDoMenuSelect;
BOOL bDoMenuQuit;
};
//-----------------------------------------------------------------------------
// Game actions (using DInput semantic mapper). The definitions here are kind
// of the whole point of this sample. The game uses these actions to map
// physical input like, "the user pressed the 'W' key", to a more useable
// constant for the game, like "if( dwInput == INPUT_CHANGEWEAPONS )...".
//-----------------------------------------------------------------------------
// Input semantics used by this game
enum INPUT_SEMANTICS
{
// Gameplay semantics
INPUT_AXIS_LR=1, INPUT_AXIS_UD,
INPUT_MOUSE_LR, INPUT_MOUSE_UD, INPUT_MOUSE_SHIPTYPE,
INPUT_TURNLEFT, INPUT_TURNRIGHT, INPUT_FORWARDTHRUST,
INPUT_REVERSETHRUST, INPUT_FIREWEAPONS, INPUT_CHANGESHIPTYPE,
INPUT_CHANGEVIEW, INPUT_CHANGEWEAPONS, INPUT_DISPLAYGAMEMENU,
INPUT_QUITGAME, INPUT_START,
// Menu semantics
INPUT_MENU_UD, INPUT_MENU_WHEEL,
INPUT_MENU_UP, INPUT_MENU_DOWN,
INPUT_MENU_SELECT, INPUT_MENU_QUIT,
};
// Game actions used by this game.
DIACTION g_rgGameAction[] =
{
// (C:\Program Files\DirectX\DirectInput\User Maps\*.ini)
// after changing this, otherwise settings won't reset and will be read
// from the out of date ini files
// Device input (joystick, etc.) that is pre-defined by DInput, according
// to genre type. The genre for this app is space simulators.
{ INPUT_AXIS_LR, DIAXIS_SPACESIM_LATERAL, 0, TEXT("Turn"), },
{ INPUT_AXIS_UD, DIAXIS_SPACESIM_MOVE, 0, TEXT("Move"), },
{ INPUT_FIREWEAPONS, DIBUTTON_SPACESIM_FIRE, 0, TEXT("Fire weapons"), },
{ INPUT_CHANGEVIEW, DIBUTTON_SPACESIM_VIEW, 0, TEXT("Change view"), },
{ INPUT_CHANGEWEAPONS, DIBUTTON_SPACESIM_WEAPONS, 0, TEXT("Change weapons"), },
{ INPUT_CHANGESHIPTYPE, DIBUTTON_SPACESIM_LOWER, 0, TEXT("Change ship type"), },
{ INPUT_DISPLAYGAMEMENU, DIBUTTON_SPACESIM_DEVICE, 0, TEXT("Display game menu"), },
{ INPUT_START, DIBUTTON_SPACESIM_MENU, 0, TEXT("Start/pause"), },
// Keyboard input mappings
{ INPUT_TURNLEFT, DIKEYBOARD_LEFT, 0, TEXT("Turn left"), },
{ INPUT_TURNRIGHT, DIKEYBOARD_RIGHT, 0, TEXT("Turn right"), },
{ INPUT_FORWARDTHRUST, DIKEYBOARD_UP, 0, TEXT("Forward thrust"), },
{ INPUT_REVERSETHRUST, DIKEYBOARD_DOWN, 0, TEXT("Reverse thrust"), },
{ INPUT_FIREWEAPONS, DIKEYBOARD_SPACE, 0, TEXT("Fire weapons"), },
{ INPUT_CHANGESHIPTYPE, DIKEYBOARD_A, 0, TEXT("Change ship type"), },
{ INPUT_CHANGEVIEW, DIKEYBOARD_V, 0, TEXT("Change view"), },
{ INPUT_CHANGEWEAPONS, DIKEYBOARD_W, 0, TEXT("Change weapons"), },
{ INPUT_DISPLAYGAMEMENU, DIKEYBOARD_F1, DIA_APPFIXED, TEXT("Display game menu"), },
{ INPUT_START, DIKEYBOARD_PAUSE, 0, TEXT("Start/pause"), },
{ INPUT_QUITGAME, DIKEYBOARD_ESCAPE, DIA_APPFIXED, TEXT("Quit game"), },
// Mouse input mappings
{ INPUT_MOUSE_LR, DIMOUSE_XAXIS, 0, TEXT("Turn"), },
{ INPUT_MOUSE_UD, DIMOUSE_YAXIS, 0, TEXT("Move"), },
{ INPUT_MOUSE_SHIPTYPE, DIMOUSE_WHEEL, 0, TEXT("Change ship type"), },
{ INPUT_FIREWEAPONS, DIMOUSE_BUTTON0, 0, TEXT("Fire weapons"), },
{ INPUT_CHANGEWEAPONS, DIMOUSE_BUTTON1, 0, TEXT("Change weapons"), },
};
// Game actions used by this game.
DIACTION g_rgBrowserAction[] =
{
// (C:\Program Files\DirectX\DirectInput\User Maps\*.ini)
// after changing this, otherwise settings won't reset and will be read
// from the out of date ini files
// Device input (joystick, etc.) that is pre-defined by DInput, according
// to genre type. The genre for this app is space simulators.
{ INPUT_MENU_UD, DIAXIS_BROWSER_MOVE, 0, TEXT("Up/down"), },
{ INPUT_MENU_UP, DIBUTTON_BROWSER_PREVIOUS, 0, TEXT("Up"), },
{ INPUT_MENU_DOWN, DIBUTTON_BROWSER_NEXT, 0, TEXT("Down"), },
{ INPUT_MENU_SELECT, DIBUTTON_BROWSER_SELECT, 0, TEXT("Select"), },
{ INPUT_MENU_QUIT, DIBUTTON_BROWSER_DEVICE, 0, TEXT("Quit menu"), },
// Keyboard input mappings
{ INPUT_MENU_UP, DIKEYBOARD_UP, 0, TEXT("Up"), },
{ INPUT_MENU_DOWN, DIKEYBOARD_DOWN, 0, TEXT("Down"), },
{ INPUT_MENU_SELECT, DIKEYBOARD_SPACE, 0, TEXT("Select"), },
{ INPUT_MENU_SELECT, DIKEYBOARD_RETURN, 0, TEXT("Select"), },
{ INPUT_MENU_SELECT, DIKEYBOARD_NUMPADENTER, 0, TEXT("Select"), },
{ INPUT_MENU_QUIT, DIKEYBOARD_ESCAPE, 0, TEXT("Quit menu"), },
// Mouse input mappings
{ INPUT_MENU_WHEEL, DIMOUSE_WHEEL, 0, TEXT("Up/down"), },
{ INPUT_MENU_SELECT, DIMOUSE_BUTTON0, 0, TEXT("Select"), },
};
// Number of actions
#define NUMBER_OF_GAMEACTIONS (sizeof(g_rgGameAction)/sizeof(DIACTION))
#define NUMBER_OF_BROWSERACTIONS (sizeof(g_rgBrowserAction)/sizeof(DIACTION))
//-----------------------------------------------------------------------------
// Inline helper functions
//-----------------------------------------------------------------------------
// Simple function to define "hilliness" for terrain
inline FLOAT HeightField( FLOAT x, FLOAT z )
{
return (cosf(x/2.0f+0.2f)*cosf(z/1.5f-0.2f)+1.0f) - 2.0f;
}
// Simple function for generating random numbers
inline FLOAT rnd( FLOAT low, FLOAT high )
{
return low + ( high - low ) * ( (FLOAT)rand() ) / RAND_MAX;
}
FLOAT rnd( FLOAT low=-1.0f, FLOAT high=1.0f );
// Convenient macros for playing sounds
inline VOID PlaySound( CMusicSegment* pSound )
{
if( pSound ) pSound->Play( DMUS_SEGF_SECONDARY );
}
inline VOID StopSound( CMusicSegment* pSound )
{
if( pSound ) pSound->Stop();
}
//-----------------------------------------------------------------------------
// Function prototypes
//-----------------------------------------------------------------------------
LRESULT CALLBACK StaticMsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );
//-----------------------------------------------------------------------------
// Name: class CMyApplication
// Desc: Application class.
//-----------------------------------------------------------------------------
class CMyApplication
{
public:
HRESULT Create( HINSTANCE hInstance );
INT Run();
LRESULT MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
CMyApplication();
HRESULT InputAddDeviceCB( CInputDeviceManager::DeviceInfo* pDeviceInfo, const DIDEVICEINSTANCE* pdidi );
static HRESULT CALLBACK StaticInputAddDeviceCB( CInputDeviceManager::DeviceInfo* pDeviceInfo, const DIDEVICEINSTANCE* pdidi, LPVOID pParam );
BOOL ConfigureInputDevicesCB( IUnknown* pUnknown );
static BOOL CALLBACK StaticConfigureInputDevicesCB( IUnknown* pUnknown, VOID* pUserData );
protected:
HRESULT OneTimeSceneInit( HWND hWnd );
HRESULT FrameMove();
HRESULT RenderFrame();
VOID FinalCleanup();
// Sound functions
HRESULT CreateSoundObjects( HWND hWnd );
VOID DestroySoundObjects();
// Input functions
HRESULT CreateInputObjects( HWND hWnd );
VOID DestroyInputObjects();
void UpdateInput( UserInput* pUserInput );
// Display functions
HRESULT CreateDisplayObjects( HWND hWnd );
HRESULT RestoreDisplayObjects();
HRESULT InvalidateDisplayObjects();
HRESULT DestroyDisplayObjects();
HRESULT SwitchDisplayModes( BOOL bFullScreen, DWORD dwWidth, DWORD dwHeight );
// Menu functions
VOID ConstructMenus();
VOID DestroyMenus();
VOID UpdateMenus();
// Rendering functions
VOID UpdateDisplayList();
VOID DrawDisplayList();
VOID ShowFrame();
VOID DarkenScene( FLOAT fAmount );
VOID RenderFieryText( CD3DFont* pFont, TCHAR* strText );
// Misc game functions
VOID DisplayLevelIntroScreen( DWORD dwLevel );
VOID AdvanceLevel();
BOOL IsDisplayListEmpty();
VOID AddToList( DisplayObject* pObject );
VOID DeleteFromList( DisplayObject* pObject );
VOID CheckForHits();
HRESULT LoadTerrainModel();
HRESULT LoadShipModel();
HRESULT SwitchModel();
// Error handling
VOID CleanupAndDisplayError( DWORD dwError );
protected:
TCHAR* m_strAppName;
HWND m_hWndMain; // Main window
DWORD m_dwScreenWidth; // Dimensions for fullscreen modes
DWORD m_dwScreenHeight;
D3DDISPLAYMODE m_DesktopMode;
D3DFORMAT m_d3dfmtFullscreen; // Pixel format for fullscreen modes
D3DFORMAT m_d3dfmtTexture; // Pixel format for textures
BOOL m_bFullScreen; // Whether app is fullscreen (or windowed)
BOOL m_bIsActive; // Whether app is active
BOOL m_bDisplayReady; // Whether display class is initialized
BOOL m_bMouseVisible; // Whether mouse is visible
HBITMAP m_hSplashBitmap; // Bitmap for splash screen
DWORD m_dwAppState; // Current state the app is in
DWORD m_dwLevel; // Current game level
DWORD m_dwScore; // Current game score
// Player view mode
#define NUMVIEWMODES 3
CD3DCamera m_Camera; // Camera used for 3D scene
DWORD m_dwViewMode; // Which view mode is being used
FLOAT m_fViewTransition; // Amount used to transittion views
BOOL m_bAnimatingViewChange; // Whether view is transitioning
BOOL m_bFirstPersonView; // Whether view is first-person
// Bullet mode
FLOAT m_fBulletRechargeTime; // Recharge time for firing bullets
DWORD m_dwBulletType; // Current bullet type
// Display list and player ship
DisplayObject* m_pDisplayList; // Global display list
CShip* m_pShip; // Player's display object
// DirectDraw/Direct3D objects
LPDIRECT3DDEVICE8 m_pd3dDevice; // Class to handle D3D device
D3DPRESENT_PARAMETERS m_d3dpp;
LPDIRECT3DSURFACE8 m_pConfigSurface; // Surface for config'ing DInput devices
LPDIRECT3DVERTEXBUFFER8 m_pViewportVB;
LPDIRECT3DVERTEXBUFFER8 m_pSpriteVB;
// Support for the ship model
CD3DMesh* m_pShipFileObject; // Geometry model of player's ship
DWORD m_dwNumShipTypes;
DWORD m_dwCurrentShipType;
// DirectMusic objects
CMusicManager* m_pMusicManager; // Class to manage DMusic objects
CMusicSegment* m_pBeginLevelSound; // Sounds for the app
CMusicSegment* m_pEngineIdleSound;
CMusicSegment* m_pEngineRevSound;
CMusicSegment* m_pShieldBuzzSound;
CMusicSegment* m_pShipExplodeSound;
CMusicSegment* m_pFireBulletSound;
CMusicSegment* m_pShipBounceSound;
CMusicSegment* m_pDonutExplodeSound;
CMusicSegment* m_pPyramidExplodeSound;
CMusicSegment* m_pCubeExplodeSound;
CMusicSegment* m_pSphereExplodeSound;
// Game objects
LPDIRECT3DTEXTURE8 m_pGameTexture1; // Texture with game object animations
LPDIRECT3DTEXTURE8 m_pGameTexture2; // Texture with game object animations
CD3DMesh* m_pTerrain; // Geometry model of terrain
CD3DFont* m_pGameFont; // Font for displaying score, etc.
CD3DFont* m_pMenuFont; // Font for displaying in-game menus
// Menu objects
CMenuItem* m_pMainMenu; // Menu class for in-game menus
CMenuItem* m_pQuitMenu;
CMenuItem* m_pCurrentMenu;
// DirectInput objects
CInputDeviceManager* m_pInputDeviceManager; // Class for managing DInput devices
UserInput m_UserInput; // Struct for storing user input
DIACTIONFORMAT m_diafGame; // Action format for game play
DIACTIONFORMAT m_diafBrowser; // Action format for menu navigation
BOOL m_bPaused;
};
#endif

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

View File

@@ -0,0 +1,113 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
#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.
DONUTS_ICON ICON DISCARDABLE "donuts.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
SPLASH BITMAP MOVEABLE PURE "SPLASH.BMP"
DONUTS8 BITMAP MOVEABLE PURE "donuts.bmp"
/////////////////////////////////////////////////////////////////////////////
//
// WAV
//
BEGINLEVEL WAV MOVEABLE PURE "level.wav"
ENGINEIDLE WAV MOVEABLE PURE "hum.wav"
ENGINEREV WAV MOVEABLE PURE "rev.wav"
SKIDTOSTOP WAV MOVEABLE PURE "skid.wav"
SHIELDBUZZ WAV MOVEABLE PURE "shield.wav"
GUNFIRE WAV MOVEABLE PURE "gunfire.wav"
SHIPBOUNCE WAV MOVEABLE PURE "bounce.wav"
SHIPEXPLODE WAV MOVEABLE PURE "bangbang.wav"
DONUTEXPLODE WAV MOVEABLE PURE "d_bang.wav"
PYRAMIDEXPLODE WAV MOVEABLE PURE "p_bang.wav"
CUBEEXPLODE WAV MOVEABLE PURE "c_bang.wav"
SPHEREEXPLODE WAV MOVEABLE PURE "s_bang.wav"
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""windows.h""\r\n"
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDR_MAIN_ACCEL ACCELERATORS DISCARDABLE
BEGIN
VK_RETURN, IDM_TOGGLEFULLSCREEN, VIRTKEY, ALT, NOINVERT
END
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View File

@@ -0,0 +1,228 @@
# Microsoft Developer Studio Project File - Name="Donuts3D" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Application" 0x0101
CFG=Donuts3D - Win32 Debug
!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 "donuts3d.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 "donuts3d.mak" CFG="Donuts3D - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "Donuts3D - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "Donuts3D - 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)" == "Donuts3D - 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" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "..\..\common\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /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 odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
# ADD LINK32 d3dx8.lib d3d8.lib d3dxof.lib dxguid.lib dinput8.lib dsound.lib winspool.lib dxerr8.lib ole32.lib winmm.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /machine:I386 /stack:0x1f4000,0x1f4000
!ELSEIF "$(CFG)" == "Donuts3D - 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" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\..\common\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FD /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /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 odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# ADD LINK32 d3dx8dt.lib d3d8.lib d3dxof.lib dxguid.lib dinput8.lib dsound.lib winspool.lib dxerr8.lib ole32.lib winmm.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept /stack:0x1f4000,0x1f4000
!ENDIF
# Begin Target
# Name "Donuts3D - Win32 Release"
# Name "Donuts3D - Win32 Debug"
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# Begin Source File
SOURCE=.\bangbang.wav
# End Source File
# Begin Source File
SOURCE=.\bounce.wav
# End Source File
# Begin Source File
SOURCE=.\c_bang.wav
# End Source File
# Begin Source File
SOURCE=.\d_bang.wav
# End Source File
# Begin Source File
SOURCE=.\donuts.bmp
# End Source File
# Begin Source File
SOURCE=.\donuts.ico
# End Source File
# Begin Source File
SOURCE=.\donuts.rc
# End Source File
# Begin Source File
SOURCE=.\gunfire.wav
# End Source File
# Begin Source File
SOURCE=.\hum.wav
# End Source File
# Begin Source File
SOURCE=.\level.wav
# End Source File
# Begin Source File
SOURCE=.\p_bang.wav
# End Source File
# Begin Source File
SOURCE=.\resource.h
# End Source File
# Begin Source File
SOURCE=.\rev.wav
# End Source File
# Begin Source File
SOURCE=.\s_bang.wav
# End Source File
# Begin Source File
SOURCE=.\shield.wav
# End Source File
# Begin Source File
SOURCE=.\skid.wav
# End Source File
# Begin Source File
SOURCE=.\splash.bmp
# End Source File
# End Group
# Begin Group "Common"
# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\common\src\d3dfile.cpp
# End Source File
# Begin Source File
SOURCE=..\..\common\include\d3dfile.h
# End Source File
# Begin Source File
SOURCE=..\..\common\src\d3dfont.cpp
# End Source File
# Begin Source File
SOURCE=..\..\common\include\d3dfont.h
# End Source File
# Begin Source File
SOURCE=..\..\common\src\d3dutil.cpp
# End Source File
# Begin Source File
SOURCE=..\..\common\src\diutil.cpp
# End Source File
# Begin Source File
SOURCE=..\..\common\include\diutil.h
# End Source File
# Begin Source File
SOURCE=..\..\common\src\dmutil.cpp
# End Source File
# Begin Source File
SOURCE=..\..\common\include\dmutil.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=.\donuts.cpp
# End Source File
# Begin Source File
SOURCE=.\donuts.h
# End Source File
# Begin Source File
SOURCE=.\gamemenu.cpp
# End Source File
# Begin Source File
SOURCE=.\gamemenu.h
# 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: "Donuts3D"=.\donuts3d.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@@ -0,0 +1,270 @@
# Microsoft Developer Studio Generated NMAKE File, Based on donuts3d.dsp
!IF "$(CFG)" == ""
CFG=Donuts3D - Win32 Debug
!MESSAGE No configuration specified. Defaulting to Donuts3D - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "Donuts3D - Win32 Release" && "$(CFG)" != "Donuts3D - 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 "donuts3d.mak" CFG="Donuts3D - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "Donuts3D - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "Donuts3D - 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)" == "Donuts3D - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
OutDir=.\Release
# End Custom Macros
ALL : "$(OUTDIR)\donuts3d.exe"
CLEAN :
-@erase "$(INTDIR)\d3dfile.obj"
-@erase "$(INTDIR)\d3dfont.obj"
-@erase "$(INTDIR)\d3dutil.obj"
-@erase "$(INTDIR)\diutil.obj"
-@erase "$(INTDIR)\dmutil.obj"
-@erase "$(INTDIR)\donuts.obj"
-@erase "$(INTDIR)\donuts.res"
-@erase "$(INTDIR)\dxutil.obj"
-@erase "$(INTDIR)\gamemenu.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(OUTDIR)\donuts3d.exe"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "..\..\common\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Fp"$(INTDIR)\donuts3d.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)\donuts.res" /d "NDEBUG"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\donuts3d.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=d3dx8.lib d3d8.lib d3dxof.lib dxguid.lib dinput8.lib dsound.lib winspool.lib dxerr8.lib ole32.lib winmm.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /incremental:no /pdb:"$(OUTDIR)\donuts3d.pdb" /machine:I386 /out:"$(OUTDIR)\donuts3d.exe"
LINK32_OBJS= \
"$(INTDIR)\d3dfile.obj" \
"$(INTDIR)\d3dfont.obj" \
"$(INTDIR)\d3dutil.obj" \
"$(INTDIR)\diutil.obj" \
"$(INTDIR)\dmutil.obj" \
"$(INTDIR)\dxutil.obj" \
"$(INTDIR)\donuts.obj" \
"$(INTDIR)\gamemenu.obj" \
"$(INTDIR)\donuts.res"
"$(OUTDIR)\donuts3d.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "Donuts3D - Win32 Debug"
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
OutDir=.\Debug
# End Custom Macros
ALL : "$(OUTDIR)\donuts3d.exe"
CLEAN :
-@erase "$(INTDIR)\d3dfile.obj"
-@erase "$(INTDIR)\d3dfont.obj"
-@erase "$(INTDIR)\d3dutil.obj"
-@erase "$(INTDIR)\diutil.obj"
-@erase "$(INTDIR)\dmutil.obj"
-@erase "$(INTDIR)\donuts.obj"
-@erase "$(INTDIR)\donuts.res"
-@erase "$(INTDIR)\dxutil.obj"
-@erase "$(INTDIR)\gamemenu.obj"
-@erase "$(INTDIR)\vc60.idb"
-@erase "$(INTDIR)\vc60.pdb"
-@erase "$(OUTDIR)\donuts3d.exe"
-@erase "$(OUTDIR)\donuts3d.ilk"
-@erase "$(OUTDIR)\donuts3d.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" /D "_MBCS" /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)\donuts.res" /d "_DEBUG"
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\donuts3d.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=d3dx8dt.lib d3d8.lib d3dxof.lib dxguid.lib dinput8.lib dsound.lib winspool.lib dxerr8.lib ole32.lib winmm.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /incremental:yes /pdb:"$(OUTDIR)\donuts3d.pdb" /debug /machine:I386 /out:"$(OUTDIR)\donuts3d.exe" /pdbtype:sept
LINK32_OBJS= \
"$(INTDIR)\d3dfile.obj" \
"$(INTDIR)\d3dfont.obj" \
"$(INTDIR)\d3dutil.obj" \
"$(INTDIR)\diutil.obj" \
"$(INTDIR)\dmutil.obj" \
"$(INTDIR)\dxutil.obj" \
"$(INTDIR)\donuts.obj" \
"$(INTDIR)\gamemenu.obj" \
"$(INTDIR)\donuts.res"
"$(OUTDIR)\donuts3d.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ENDIF
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("donuts3d.dep")
!INCLUDE "donuts3d.dep"
!ELSE
!MESSAGE Warning: cannot find "donuts3d.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "Donuts3D - Win32 Release" || "$(CFG)" == "Donuts3D - Win32 Debug"
SOURCE=.\donuts.rc
"$(INTDIR)\donuts.res" : $(SOURCE) "$(INTDIR)"
$(RSC) $(RSC_PROJ) $(SOURCE)
SOURCE=..\..\common\src\d3dfile.cpp
"$(INTDIR)\d3dfile.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\common\src\d3dfont.cpp
"$(INTDIR)\d3dfont.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\common\src\d3dutil.cpp
"$(INTDIR)\d3dutil.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\common\src\diutil.cpp
"$(INTDIR)\diutil.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\common\src\dmutil.cpp
"$(INTDIR)\dmutil.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=..\..\common\src\dxutil.cpp
"$(INTDIR)\dxutil.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
SOURCE=.\donuts.cpp
"$(INTDIR)\donuts.obj" : $(SOURCE) "$(INTDIR)"
SOURCE=.\gamemenu.cpp
"$(INTDIR)\gamemenu.obj" : $(SOURCE) "$(INTDIR)"
!ENDIF

View File

@@ -0,0 +1,141 @@
//-----------------------------------------------------------------------------
// File: GameMenu.cpp
//
// Desc: Code for in-game menus
//
// Copyright (C) 1999-2001 Microsoft Corporation. All Rights Reserved.
//-----------------------------------------------------------------------------
#define STRICT
#define D3D_OVERLOADS
#include <D3D8.h>
#include <D3DX8Math.h>
#include <mmsystem.h>
#include "D3DFont.h"
#include "D3DUtil.h"
#include "GameMenu.h"
//-----------------------------------------------------------------------------
// Name:
// Desc:
//-----------------------------------------------------------------------------
CMenuItem::CMenuItem( TCHAR* strNewLabel, DWORD dwNewID )
{
_tcscpy( strLabel, strNewLabel );
dwID = dwNewID;
pParent = NULL;
dwNumChildren = 0L;
dwSelectedMenu = 0L;
}
//-----------------------------------------------------------------------------
// Name:
// Desc:
//-----------------------------------------------------------------------------
CMenuItem::~CMenuItem()
{
while( dwNumChildren )
delete pChild[--dwNumChildren];
}
//-----------------------------------------------------------------------------
// Name:
// Desc:
//-----------------------------------------------------------------------------
CMenuItem* CMenuItem::Add( CMenuItem* pNewChild )
{
pChild[dwNumChildren++] = pNewChild;
pNewChild->pParent = this;
return pNewChild;
}
//-----------------------------------------------------------------------------
// Name: Render()
// Desc:
//-----------------------------------------------------------------------------
HRESULT CMenuItem::Render( LPDIRECT3DDEVICE8 pd3dDevice, CD3DFont* pFont )
{
// Check parameters
if( NULL==pd3dDevice || NULL==pFont )
return E_INVALIDARG;
// Save current matrices
D3DXMATRIX matViewSaved, matProjSaved;
pd3dDevice->GetTransform( D3DTS_VIEW, &matViewSaved );
pd3dDevice->GetTransform( D3DTS_PROJECTION, &matProjSaved );
// Setup new view and proj matrices for head-on viewing
D3DXMATRIX matView, matProj;
D3DXMatrixLookAtLH( &matView, &D3DXVECTOR3(0.0f,0.0f,-30.0f),
&D3DXVECTOR3(0.0f,0.0f,0.0f),
&D3DXVECTOR3(0.0f,1.0f,0.0f) );
D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f );
pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
// Establish colors for selected vs. normal menu items
D3DMATERIAL8 mtrlNormal, mtrlSelected, mtrlTitle;
D3DUtil_InitMaterial( mtrlTitle, 1.0f, 0.0f, 0.0f, 1.0f );
D3DUtil_InitMaterial( mtrlNormal, 1.0f, 1.0f, 1.0f, 0.5f );
D3DUtil_InitMaterial( mtrlSelected, 1.0f, 1.0f, 0.0f, 1.0f );
pd3dDevice->SetRenderState( D3DRS_LIGHTING, TRUE );
pd3dDevice->SetRenderState( D3DRS_AMBIENT, 0xffffffff );
// Translate the menuitem into place
D3DXMATRIX matWorld;
D3DXMatrixScaling( &matWorld, 0.4f, 0.4f, 0.4f );
matWorld._42 = (dwNumChildren*1.0f) + 2.0f;
pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
pd3dDevice->SetMaterial( &mtrlTitle );
// Render the menuitem's label
pFont->Render3DText( strLabel, D3DFONT_CENTERED|D3DFONT_TWOSIDED );
// Loop through and render all menuitem lables
for( DWORD i=0; i<dwNumChildren; i++ )
{
D3DXMATRIX matWorld;
D3DXMatrixScaling( &matWorld, 0.3f, 0.3f, 0.3f );
pd3dDevice->SetMaterial( &mtrlNormal );
// Give a different effect for selected items
if( dwSelectedMenu == i )
{
D3DXMATRIX matRotate;
D3DXMatrixRotationY( &matRotate, (D3DX_PI/3)*sinf(timeGetTime()/200.0f) );
D3DXMatrixMultiply( &matWorld, &matWorld, &matRotate );
pd3dDevice->SetMaterial( &mtrlSelected );
}
// Translate the menuitem into place
matWorld._42 = (dwNumChildren*1.0f) - (i*2.0f);
pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
// Render the menuitem's label
pFont->Render3DText( pChild[i]->strLabel,
D3DFONT_CENTERED|D3DFONT_TWOSIDED );
}
// Restore matrices
pd3dDevice->SetTransform( D3DTS_VIEW, &matViewSaved );
pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProjSaved );
return S_OK;
}

View File

@@ -0,0 +1,47 @@
//-----------------------------------------------------------------------------
// File: GameMenu.h
//
// Desc: Code for in-game menus
//
// Copyright (C) 1999-2001 Microsoft Corporation. All Rights Reserved.
//-----------------------------------------------------------------------------
#ifndef GAMEMENU_H
#define GAMEMENU_H
//-----------------------------------------------------------------------------
// Name: class CMenuItem
// Desc:
//-----------------------------------------------------------------------------
class CMenuItem
{
public:
TCHAR strLabel[80];
DWORD dwID;
CMenuItem* pParent;
CMenuItem* pChild[10];
DWORD dwNumChildren;
DWORD dwSelectedMenu;
public:
HRESULT Render( LPDIRECT3DDEVICE8 pd3dDevice, CD3DFont* pFont );
CMenuItem* Add( CMenuItem* );
CMenuItem( TCHAR* strLabel, DWORD dwID );
~CMenuItem();
};
#endif

Binary file not shown.

View File

@@ -0,0 +1,18 @@
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by donuts.rc
//
#define DONUTS_ICON 101
#define IDR_MAIN_ACCEL 103
#define IDM_TOGGLEFULLSCREEN 40002
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 105
#define _APS_NEXT_COMMAND_VALUE 40015
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View File

@@ -0,0 +1,17 @@
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by donuts.rc
//
#define IDR_MAIN_ACCEL 103
#define IDM_TOGGLEFULLSCREEN 40002
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 104
#define _APS_NEXT_COMMAND_VALUE 40003
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 750 KiB