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:
@@ -0,0 +1,121 @@
|
||||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#define IDC_STATIC -1
|
||||
#include <Windows.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
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#define IDC_STATIC -1\r\n"
|
||||
"#include <Windows.h>\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_MAIN_ICON ICON DISCARDABLE "DirectX.ico"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO DISCARDABLE
|
||||
BEGIN
|
||||
IDD_MAIN, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 251
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 65
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_MAIN DIALOG DISCARDABLE 0, 0, 258, 74
|
||||
STYLE DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE |
|
||||
WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "DirectInput ActionMapper Sample"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
PUSHBUTTON "E&xit",IDCANCEL,187,51,64,14
|
||||
PUSHBUTTON "Configure &Input",IDM_CONFIGINPUT,187,7,64,14
|
||||
RTEXT "Left/Right Axis:",IDC_STATIC,7,37,59,8
|
||||
RTEXT "World State:",IDC_STATIC,7,57,59,8
|
||||
LTEXT "Use arrow keys or joystick to update input state",
|
||||
IDC_STATIC,7,7,150,8
|
||||
RTEXT "Up/Down Axis:",IDC_STATIC,7,27,59,8
|
||||
LTEXT "Static",IDC_UD_AXIS_STATE,70,27,76,8
|
||||
LTEXT "Static",IDC_LR_AXIS_STATE,70,37,76,8
|
||||
LTEXT "Static",IDC_WORLD_STATE,70,57,76,8
|
||||
RTEXT "Button State:",IDC_STATIC,7,47,59,8
|
||||
LTEXT "Static",IDC_BUTTON_STATE,70,47,76,8
|
||||
LTEXT "Click 'Configure Input' to view or change input settings",
|
||||
IDC_STATIC,7,16,171,8
|
||||
END
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,671 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// File: ActionMapper.cpp
|
||||
//
|
||||
// Desc: This is a simple sample to demonstrate how to code using the DInput
|
||||
// action mapper feature.
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
#define STRICT
|
||||
#include <windows.h>
|
||||
#include <basetsd.h>
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <DXErr8.h>
|
||||
#include <tchar.h>
|
||||
#include <dinput.h>
|
||||
#include "DIUtil.h"
|
||||
#include "DXUtil.h"
|
||||
#include "resource.h"
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Defines, and constants
|
||||
//-----------------------------------------------------------------------------
|
||||
// This GUID must be unique for every game, and the same for
|
||||
// every instance of this app. // {67131584-2938-4857-8A2E-D99DC2C82068}
|
||||
// The GUID allows DirectInput to remember input settings
|
||||
GUID g_guidApp = { 0x67131584, 0x2938, 0x4857, { 0x8a, 0x2e, 0xd9, 0x9d, 0xc2, 0xc8, 0x20, 0x68 } };
|
||||
|
||||
|
||||
// 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;
|
||||
BOOL bButtonEnableShield;
|
||||
};
|
||||
|
||||
|
||||
// Struct to store the current input state
|
||||
struct UserInput
|
||||
{
|
||||
FLOAT fAxisMoveUD;
|
||||
FLOAT fAxisRotateLR;
|
||||
BOOL bButtonFireWeapons;
|
||||
BOOL bButtonEnableShield;
|
||||
|
||||
BOOL bDoConfigureInput;
|
||||
BOOL bDoQuitGame;
|
||||
};
|
||||
|
||||
|
||||
// Input semantics used by this app
|
||||
enum INPUT_SEMANTICS
|
||||
{
|
||||
// Gameplay semantics
|
||||
INPUT_ROTATE_AXIS_LR=1, INPUT_MOVE_AXIS_UD,
|
||||
INPUT_FIREWEAPONS, INPUT_ENABLESHIELD,
|
||||
INPUT_TURNLEFT, INPUT_TURNRIGHT,
|
||||
INPUT_FORWARDTHRUST, INPUT_REVERSETHRUST,
|
||||
INPUT_DISPLAYGAMEMENU, INPUT_QUITGAME,
|
||||
};
|
||||
|
||||
// Actions used by this app
|
||||
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_ROTATE_AXIS_LR, DIAXIS_SPACESIM_LATERAL, 0, TEXT("Rotate left/right"), },
|
||||
{ INPUT_MOVE_AXIS_UD, DIAXIS_SPACESIM_MOVE, 0, TEXT("Move"), },
|
||||
{ INPUT_FIREWEAPONS, DIBUTTON_SPACESIM_FIRE, 0, TEXT("Fire weapons"), },
|
||||
{ INPUT_ENABLESHIELD, DIBUTTON_SPACESIM_GEAR, 0, TEXT("Enable shield"), },
|
||||
{ INPUT_DISPLAYGAMEMENU, DIBUTTON_SPACESIM_DISPLAY, 0, TEXT("Configure"), },
|
||||
|
||||
// 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_F, 0, TEXT("Fire weapons"), },
|
||||
{ INPUT_ENABLESHIELD, DIKEYBOARD_S, 0, TEXT("Enable shield"), },
|
||||
{ INPUT_DISPLAYGAMEMENU, DIKEYBOARD_D, DIA_APPFIXED, TEXT("Configure"), },
|
||||
{ INPUT_QUITGAME, DIKEYBOARD_ESCAPE, DIA_APPFIXED, TEXT("Quit game"), },
|
||||
};
|
||||
|
||||
#define NUMBER_OF_GAMEACTIONS (sizeof(g_rgGameAction)/sizeof(DIACTION))
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Function prototypes
|
||||
//-----------------------------------------------------------------------------
|
||||
INT_PTR CALLBACK StaticMsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam );
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: class CMyApplication
|
||||
// Desc: Application class.
|
||||
//-----------------------------------------------------------------------------
|
||||
class CMyApplication
|
||||
{
|
||||
TCHAR* m_strWindowTitle; // Title for the app's window
|
||||
HWND m_hWnd; // The main app window
|
||||
FLOAT m_fTime; // Current time in seconds
|
||||
FLOAT m_fElapsedTime; // Time elapsed since last frame
|
||||
|
||||
CInputDeviceManager* m_pInputDeviceManager; // DirectInput device manager
|
||||
DIACTIONFORMAT m_diafGame; // Action format for game play
|
||||
UserInput m_UserInput; // Struct for storing user input
|
||||
|
||||
FLOAT m_fWorldRotX; // World rotation state X-axis
|
||||
FLOAT m_fWorldRotY; // World rotation state Y-axis
|
||||
|
||||
protected:
|
||||
HRESULT OneTimeSceneInit();
|
||||
HRESULT Render();
|
||||
HRESULT FrameMove();
|
||||
HRESULT FinalCleanup();
|
||||
HRESULT InitInput( HWND hWnd );
|
||||
void UpdateInput( UserInput* pUserInput );
|
||||
void CleanupDirectInput();
|
||||
|
||||
public:
|
||||
HRESULT Create( HINSTANCE hInstance );
|
||||
INT Run();
|
||||
INT_PTR 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 );
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Global access to the app (needed for the global WndProc())
|
||||
//-----------------------------------------------------------------------------
|
||||
CMyApplication* g_pApp = NULL;
|
||||
HINSTANCE g_hInst = NULL;
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: WinMain()
|
||||
// Desc: Application entry point
|
||||
//-----------------------------------------------------------------------------
|
||||
INT WINAPI WinMain( HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow )
|
||||
{
|
||||
CMyApplication app;
|
||||
|
||||
g_hInst = hInstance;
|
||||
|
||||
if( FAILED( app.Create( hInstance ) ) )
|
||||
return 0;
|
||||
|
||||
return app.Run();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: CMyApplication()
|
||||
// Desc: Constructor
|
||||
//-----------------------------------------------------------------------------
|
||||
CMyApplication::CMyApplication()
|
||||
{
|
||||
g_pApp = this;
|
||||
m_hWnd = NULL;
|
||||
m_strWindowTitle = TEXT( "DirectInput ActionMapper Sample" );
|
||||
m_pInputDeviceManager = NULL;
|
||||
|
||||
ZeroMemory( &m_UserInput, sizeof(m_UserInput) );
|
||||
m_fWorldRotX = 0.0f;
|
||||
m_fWorldRotY = 0.0f;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: Create()
|
||||
// Desc: Creates the window
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CMyApplication::Create( HINSTANCE hInstance )
|
||||
{
|
||||
// Display the main dialog box.
|
||||
CreateDialog( hInstance, MAKEINTRESOURCE(IDD_MAIN),
|
||||
NULL, StaticMsgProc );
|
||||
if( NULL == m_hWnd )
|
||||
return E_FAIL;
|
||||
|
||||
// Initialize the application timer
|
||||
DXUtil_Timer( TIMER_START );
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: Run()
|
||||
// Desc: Handles the message loop and calls FrameMove() and Render() when
|
||||
// idle.
|
||||
//-----------------------------------------------------------------------------
|
||||
INT CMyApplication::Run()
|
||||
{
|
||||
MSG msg;
|
||||
|
||||
// Message loop to run the app
|
||||
while( TRUE )
|
||||
{
|
||||
if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
|
||||
{
|
||||
// Skip WM_KEYDOWN so they aren't handled by the dialog
|
||||
if( msg.message == WM_KEYDOWN )
|
||||
continue;
|
||||
|
||||
if( !IsDialogMessage( m_hWnd, &msg ) )
|
||||
{
|
||||
TranslateMessage( &msg );
|
||||
DispatchMessage( &msg );
|
||||
}
|
||||
|
||||
if( msg.message == WM_QUIT )
|
||||
{
|
||||
DestroyWindow( m_hWnd );
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Update the time variables
|
||||
m_fTime = DXUtil_Timer( TIMER_GETAPPTIME );
|
||||
m_fElapsedTime = DXUtil_Timer( TIMER_GETELAPSEDTIME );
|
||||
|
||||
// This app uses idle time processing for the game loop
|
||||
if( FAILED( FrameMove() ) )
|
||||
SendMessage( m_hWnd, WM_DESTROY, 0, 0 );
|
||||
if( FAILED( Render() ) )
|
||||
SendMessage( m_hWnd, WM_DESTROY, 0, 0 );
|
||||
|
||||
Sleep( 20 );
|
||||
}
|
||||
}
|
||||
|
||||
FinalCleanup();
|
||||
|
||||
return (INT)msg.wParam;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: OneTimeSceneInit()
|
||||
// Desc: Called during initial app startup, this function performs all the
|
||||
// permanent initialization.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CMyApplication::OneTimeSceneInit()
|
||||
{
|
||||
// Initialize DirectInput
|
||||
InitInput( m_hWnd );
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: StaticInputAddDeviceCB()
|
||||
// Desc: Static callback helper to call into CMyApplication class
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CALLBACK CMyApplication::StaticInputAddDeviceCB(
|
||||
CInputDeviceManager::DeviceInfo* pDeviceInfo,
|
||||
const DIDEVICEINSTANCE* pdidi,
|
||||
LPVOID pParam )
|
||||
{
|
||||
CMyApplication* pApp = (CMyApplication*) pParam;
|
||||
return pApp->InputAddDeviceCB( pDeviceInfo, pdidi );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: InputAddDeviceCB()
|
||||
// Desc: Called from CInputDeviceManager whenever a device is added.
|
||||
// Set the dead zone, and creates a new InputDeviceState for each device
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CMyApplication::InputAddDeviceCB( CInputDeviceManager::DeviceInfo* pDeviceInfo,
|
||||
const DIDEVICEINSTANCE* pdidi )
|
||||
{
|
||||
// Setup the deadzone
|
||||
DIPROPDWORD dipdw;
|
||||
dipdw.diph.dwSize = sizeof(DIPROPDWORD);
|
||||
dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER);
|
||||
dipdw.diph.dwObj = 0;
|
||||
dipdw.diph.dwHow = DIPH_DEVICE;
|
||||
dipdw.dwData = 500;
|
||||
pDeviceInfo->pdidDevice->SetProperty( DIPROP_DEADZONE, &dipdw.diph );
|
||||
|
||||
// Create a new InputDeviceState for each device so the
|
||||
// app can record its state
|
||||
InputDeviceState* pNewInputDeviceState = new InputDeviceState;
|
||||
if (!pNewInputDeviceState)
|
||||
return E_FAIL;
|
||||
|
||||
ZeroMemory( pNewInputDeviceState, sizeof(InputDeviceState) );
|
||||
pDeviceInfo->pParam = (LPVOID) pNewInputDeviceState;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: InitInput()
|
||||
// Desc: Initialize DirectInput objects
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CMyApplication::InitInput( HWND hWnd )
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
// Setup action format for the actual gameplay
|
||||
ZeroMemory( &m_diafGame, sizeof(DIACTIONFORMAT) );
|
||||
m_diafGame.dwSize = sizeof(DIACTIONFORMAT);
|
||||
m_diafGame.dwActionSize = sizeof(DIACTION);
|
||||
m_diafGame.dwDataSize = NUMBER_OF_GAMEACTIONS * sizeof(DWORD);
|
||||
m_diafGame.guidActionMap = g_guidApp;
|
||||
m_diafGame.dwGenre = DIVIRTUAL_SPACESIM;
|
||||
m_diafGame.dwNumActions = NUMBER_OF_GAMEACTIONS;
|
||||
m_diafGame.rgoAction = g_rgGameAction;
|
||||
m_diafGame.lAxisMin = -100;
|
||||
m_diafGame.lAxisMax = 100;
|
||||
m_diafGame.dwBufferSize = 16;
|
||||
_tcscpy( m_diafGame.tszActionMap, _T("ActionMapper Sample") );
|
||||
|
||||
// Create a new input device manager
|
||||
m_pInputDeviceManager = new CInputDeviceManager();
|
||||
|
||||
if( FAILED( hr = m_pInputDeviceManager->Create( hWnd, NULL, m_diafGame,
|
||||
StaticInputAddDeviceCB, this ) ) )
|
||||
return DXTRACE_ERR_NOMSGBOX( TEXT("m_pInputDeviceManager->Create"), hr );
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: FrameMove()
|
||||
// Desc: Called once per frame, the call is the entry point for animating
|
||||
// the scene.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CMyApplication::FrameMove()
|
||||
{
|
||||
// Update user input state
|
||||
UpdateInput( &m_UserInput );
|
||||
|
||||
// Respond to input
|
||||
if( m_UserInput.bDoConfigureInput )
|
||||
{
|
||||
// One-shot per keypress
|
||||
m_UserInput.bDoConfigureInput = FALSE;
|
||||
|
||||
// Get access to the list of semantically-mapped input devices
|
||||
// to delete all InputDeviceState structs before calling ConfigureDevices()
|
||||
CInputDeviceManager::DeviceInfo* pDeviceInfos;
|
||||
DWORD dwNumDevices;
|
||||
m_pInputDeviceManager->GetDevices( &pDeviceInfos, &dwNumDevices );
|
||||
|
||||
for( DWORD i=0; i<dwNumDevices; i++ )
|
||||
{
|
||||
InputDeviceState* pInputDeviceState = (InputDeviceState*) pDeviceInfos[i].pParam;
|
||||
SAFE_DELETE( pInputDeviceState );
|
||||
pDeviceInfos[i].pParam = NULL;
|
||||
}
|
||||
|
||||
// Configure the devices (with edit capability)
|
||||
m_pInputDeviceManager->ConfigureDevices( m_hWnd, NULL, NULL, DICD_EDIT, NULL );
|
||||
}
|
||||
|
||||
// Update the world state according to user input
|
||||
if( m_UserInput.fAxisRotateLR )
|
||||
m_fWorldRotY += m_fElapsedTime * m_UserInput.fAxisRotateLR;
|
||||
|
||||
if( m_UserInput.fAxisMoveUD )
|
||||
m_fWorldRotX += m_fElapsedTime * m_UserInput.fAxisMoveUD;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: UpdateInput()
|
||||
// Desc: Update the user input. Called once per frame
|
||||
//-----------------------------------------------------------------------------
|
||||
void CMyApplication::UpdateInput( UserInput* pUserInput )
|
||||
{
|
||||
if( NULL == m_pInputDeviceManager )
|
||||
return;
|
||||
|
||||
// Get access to the list of semantically-mapped input devices
|
||||
CInputDeviceManager::DeviceInfo* pDeviceInfos;
|
||||
DWORD dwNumDevices;
|
||||
m_pInputDeviceManager->GetDevices( &pDeviceInfos, &dwNumDevices );
|
||||
|
||||
// Loop through all devices and check game input
|
||||
for( DWORD i=0; i<dwNumDevices; i++ )
|
||||
{
|
||||
DIDEVICEOBJECTDATA rgdod[10];
|
||||
DWORD dwItems = 10;
|
||||
HRESULT hr;
|
||||
LPDIRECTINPUTDEVICE8 pdidDevice = pDeviceInfos[i].pdidDevice;
|
||||
InputDeviceState* pInputDeviceState = (InputDeviceState*) pDeviceInfos[i].pParam;
|
||||
|
||||
hr = pdidDevice->Acquire();
|
||||
hr = pdidDevice->Poll();
|
||||
hr = pdidDevice->GetDeviceData( sizeof(DIDEVICEOBJECTDATA),
|
||||
rgdod, &dwItems, 0 );
|
||||
if( FAILED(hr) )
|
||||
continue;
|
||||
|
||||
// Get the sematics codes for the game menu
|
||||
for( DWORD j=0; j<dwItems; j++ )
|
||||
{
|
||||
BOOL bButtonState = (rgdod[j].dwData==0x80) ? TRUE : FALSE;
|
||||
FLOAT fButtonState = (rgdod[j].dwData==0x80) ? 1.0f : 0.0f;
|
||||
FLOAT fAxisState = (FLOAT)((int)rgdod[j].dwData)/100.0f;
|
||||
|
||||
switch( rgdod[j].uAppData )
|
||||
{
|
||||
// Handle relative axis data
|
||||
case INPUT_ROTATE_AXIS_LR:
|
||||
pInputDeviceState->fAxisRotateLR = fAxisState;
|
||||
break;
|
||||
case INPUT_MOVE_AXIS_UD:
|
||||
pInputDeviceState->fAxisMoveUD = -fAxisState;
|
||||
break;
|
||||
|
||||
// Handle buttons separately so the button state data
|
||||
// doesn't overwrite the axis state data, and handle
|
||||
// each button separately so they don't overwrite each other
|
||||
case INPUT_TURNLEFT: pInputDeviceState->bButtonRotateLeft = bButtonState; break;
|
||||
case INPUT_TURNRIGHT: pInputDeviceState->bButtonRotateRight = bButtonState; break;
|
||||
case INPUT_FORWARDTHRUST: pInputDeviceState->bButtonForwardThrust = bButtonState; break;
|
||||
case INPUT_REVERSETHRUST: pInputDeviceState->bButtonReverseThrust = bButtonState; break;
|
||||
case INPUT_FIREWEAPONS: pInputDeviceState->bButtonFireWeapons = bButtonState; break;
|
||||
case INPUT_ENABLESHIELD: pInputDeviceState->bButtonEnableShield = bButtonState; break;
|
||||
|
||||
// Handle one-shot buttons
|
||||
case INPUT_DISPLAYGAMEMENU: if( bButtonState ) pUserInput->bDoConfigureInput = TRUE; break;
|
||||
case INPUT_QUITGAME: if( bButtonState ) pUserInput->bDoQuitGame = TRUE; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Process user input and store result into pUserInput struct
|
||||
pUserInput->fAxisRotateLR = 0.0f;
|
||||
pUserInput->fAxisMoveUD = 0.0f;
|
||||
pUserInput->bButtonFireWeapons = FALSE;
|
||||
pUserInput->bButtonEnableShield = FALSE;
|
||||
|
||||
// Concatinate the data from all the DirectInput devices
|
||||
for( i=0; i<dwNumDevices; i++ )
|
||||
{
|
||||
InputDeviceState* pInputDeviceState = (InputDeviceState*) pDeviceInfos[i].pParam;
|
||||
|
||||
// Use the axis data that is furthest from zero
|
||||
if( fabs(pInputDeviceState->fAxisRotateLR) > fabs(pUserInput->fAxisRotateLR) )
|
||||
pUserInput->fAxisRotateLR = pInputDeviceState->fAxisRotateLR;
|
||||
|
||||
if( fabs(pInputDeviceState->fAxisMoveUD) > fabs(pUserInput->fAxisMoveUD) )
|
||||
pUserInput->fAxisMoveUD = pInputDeviceState->fAxisMoveUD;
|
||||
|
||||
// Process the button data
|
||||
if( pInputDeviceState->bButtonRotateLeft )
|
||||
pUserInput->fAxisRotateLR = -1.0f;
|
||||
else if( pInputDeviceState->bButtonRotateRight )
|
||||
pUserInput->fAxisRotateLR = 1.0f;
|
||||
|
||||
if( pInputDeviceState->bButtonForwardThrust )
|
||||
pUserInput->fAxisMoveUD = 1.0f;
|
||||
else if( pInputDeviceState->bButtonReverseThrust )
|
||||
pUserInput->fAxisMoveUD = -1.0f;
|
||||
|
||||
if( pInputDeviceState->bButtonFireWeapons )
|
||||
pUserInput->bButtonFireWeapons = TRUE;
|
||||
if( pInputDeviceState->bButtonEnableShield )
|
||||
pUserInput->bButtonEnableShield = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: Render()
|
||||
// Desc: Called once per frame, the call is the entry point for rendering the
|
||||
// world.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CMyApplication::Render()
|
||||
{
|
||||
TCHAR szMsg[MAX_PATH];
|
||||
TCHAR szMsgCurrent[MAX_PATH];
|
||||
|
||||
_stprintf( szMsg, TEXT("%0.2f"), m_UserInput.fAxisMoveUD );
|
||||
GetWindowText( GetDlgItem(m_hWnd,IDC_UD_AXIS_STATE), szMsgCurrent, MAX_PATH );
|
||||
if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
|
||||
SetWindowText( GetDlgItem(m_hWnd,IDC_UD_AXIS_STATE), szMsg );
|
||||
|
||||
_stprintf( szMsg, TEXT("%0.2f"), m_UserInput.fAxisRotateLR );
|
||||
GetWindowText( GetDlgItem(m_hWnd,IDC_LR_AXIS_STATE), szMsgCurrent, MAX_PATH );
|
||||
if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
|
||||
SetWindowText( GetDlgItem(m_hWnd,IDC_LR_AXIS_STATE), szMsg );
|
||||
|
||||
if( !m_UserInput.bButtonEnableShield && !m_UserInput.bButtonFireWeapons )
|
||||
{
|
||||
_stprintf( szMsg, TEXT("None") );
|
||||
}
|
||||
else
|
||||
{
|
||||
_stprintf( szMsg, TEXT("%s%s"), m_UserInput.bButtonEnableShield ? TEXT("Shield ") : TEXT(""),
|
||||
m_UserInput.bButtonFireWeapons ? TEXT("Fire ") : TEXT("") );
|
||||
}
|
||||
|
||||
GetWindowText( GetDlgItem(m_hWnd,IDC_BUTTON_STATE), szMsgCurrent, MAX_PATH );
|
||||
if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
|
||||
SetWindowText( GetDlgItem(m_hWnd,IDC_BUTTON_STATE), szMsg );
|
||||
|
||||
_stprintf( szMsg, TEXT("%0.3f, %0.3f"), m_fWorldRotX, m_fWorldRotY );
|
||||
GetWindowText( GetDlgItem(m_hWnd,IDC_WORLD_STATE), szMsgCurrent, MAX_PATH );
|
||||
if( lstrcmp( szMsgCurrent, szMsg ) != 0 )
|
||||
SetWindowText( GetDlgItem(m_hWnd,IDC_WORLD_STATE), szMsg );
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: StaticMsgProc()
|
||||
// Desc: Static msg handler which passes messages to the application class.
|
||||
//-----------------------------------------------------------------------------
|
||||
INT_PTR CALLBACK StaticMsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
return g_pApp->MsgProc( hWnd, uMsg, wParam, lParam );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: MsgProc()
|
||||
// Desc: Callback for all Windows messages
|
||||
//-----------------------------------------------------------------------------
|
||||
INT_PTR CMyApplication::MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
switch( msg )
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
m_hWnd = hWnd;
|
||||
|
||||
// Initialize the app's custom scene stuff
|
||||
if( FAILED( hr = OneTimeSceneInit() ) )
|
||||
{
|
||||
DXTRACE_ERR( TEXT("OneTimeSceneInit"), hr );
|
||||
MessageBox( hWnd, TEXT("Error initializing DirectInput. Sample will now exit."),
|
||||
TEXT("DirectInput Sample"), MB_OK | MB_ICONERROR );
|
||||
PostQuitMessage( IDCANCEL );
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_COMMAND:
|
||||
{
|
||||
switch( LOWORD(wParam) )
|
||||
{
|
||||
case IDCANCEL:
|
||||
PostQuitMessage( IDCANCEL );
|
||||
break;
|
||||
|
||||
case IDM_CONFIGINPUT:
|
||||
m_UserInput.bDoConfigureInput = TRUE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: FinalCleanup()
|
||||
// Desc: Called before the app exits, this function gives the app the chance
|
||||
// to cleanup after itself.
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CMyApplication::FinalCleanup()
|
||||
{
|
||||
// Cleanup DirectInput
|
||||
CleanupDirectInput();
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: CleanupDirectInput()
|
||||
// Desc: Cleanup DirectInput
|
||||
//-----------------------------------------------------------------------------
|
||||
VOID CMyApplication::CleanupDirectInput()
|
||||
{
|
||||
if( NULL == m_pInputDeviceManager )
|
||||
return;
|
||||
|
||||
// Get access to the list of semantically-mapped input devices
|
||||
// to delete all InputDeviceState structs
|
||||
CInputDeviceManager::DeviceInfo* pDeviceInfos;
|
||||
DWORD dwNumDevices;
|
||||
m_pInputDeviceManager->GetDevices( &pDeviceInfos, &dwNumDevices );
|
||||
|
||||
for( DWORD i=0; i<dwNumDevices; i++ )
|
||||
{
|
||||
InputDeviceState* pInputDeviceState = (InputDeviceState*) pDeviceInfos[i].pParam;
|
||||
SAFE_DELETE( pInputDeviceState );
|
||||
pDeviceInfos[i].pParam = NULL;
|
||||
}
|
||||
|
||||
// Cleanup DirectX input objects
|
||||
SAFE_DELETE( m_pInputDeviceManager );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,183 @@
|
||||
# Microsoft Developer Studio Project File - Name="ActionMapper" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||
|
||||
CFG=ActionMapper - 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 "ActionMapper.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 "ActionMapper.mak" CFG="ActionMapper - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "ActionMapper - Win32 Release Unicode" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "ActionMapper - Win32 Debug Unicode" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "ActionMapper - Win32 Release" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "ActionMapper - 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)" == "ActionMapper - 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 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 dsound.lib dinput8.lib dxerr8.lib d3dx8dt.lib d3d8.lib d3dxof.lib dxguid.lib winmm.lib 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 dsound.lib dinput8.lib dxerr8.lib d3dx8dt.lib d3d8.lib d3dxof.lib dxguid.lib winmm.lib 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 /stack:0x200000,0x200000 /subsystem:windows /machine:I386
|
||||
|
||||
!ELSEIF "$(CFG)" == "ActionMapper - 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 Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\common\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
|
||||
# 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 dsound.lib dinput8.lib dxerr8.lib d3dx8dt.lib d3d8.lib d3dxof.lib dxguid.lib winmm.lib 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 dsound.lib dinput8.lib dxerr8.lib d3dx8dt.lib d3d8.lib d3dxof.lib dxguid.lib winmm.lib 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 /stack:0x200000,0x200000 /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
|
||||
!ELSEIF "$(CFG)" == "ActionMapper - Win32 Release Unicode"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "ActionMapper___Win32_Release_Unicode"
|
||||
# PROP BASE Intermediate_Dir "ActionMapper___Win32_Release_Unicode"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "ActionMapper___Win32_Release_Unicode"
|
||||
# PROP Intermediate_Dir "ActionMapper___Win32_Release_Unicode"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /I "..\..\common\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /W3 /GX /O2 /I "..\..\common\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "UNICODE" /D "_UNICODE" /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 dsound.lib dinput8.lib dxerr8.lib d3dx8dt.lib d3d8.lib d3dxof.lib dxguid.lib winmm.lib 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 /stack:0x200000,0x200000 /subsystem:windows /machine:I386
|
||||
# ADD LINK32 dsound.lib dinput8.lib dxerr8.lib d3dx8dt.lib d3d8.lib d3dxof.lib dxguid.lib winmm.lib 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 /stack:0x200000,0x200000 /subsystem:windows /machine:I386
|
||||
|
||||
!ELSEIF "$(CFG)" == "ActionMapper - Win32 Debug Unicode"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "ActionMapper___Win32_Debug_Unicode"
|
||||
# PROP BASE Intermediate_Dir "ActionMapper___Win32_Debug_Unicode"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "ActionMapper___Win32_Debug_Unicode"
|
||||
# PROP Intermediate_Dir "ActionMapper___Win32_Debug_Unicode"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\common\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "..\..\common\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "UNICODE" /D "_UNICODE" /YX /FD /GZ /c
|
||||
# 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 dsound.lib dinput8.lib dxerr8.lib d3dx8dt.lib d3d8.lib d3dxof.lib dxguid.lib winmm.lib 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 /stack:0x200000,0x200000 /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 dsound.lib dinput8.lib dxerr8.lib d3dx8dt.lib d3d8.lib d3dxof.lib dxguid.lib winmm.lib 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 /stack:0x200000,0x200000 /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "ActionMapper - Win32 Release"
|
||||
# Name "ActionMapper - Win32 Debug"
|
||||
# Name "ActionMapper - Win32 Release Unicode"
|
||||
# Name "ActionMapper - Win32 Debug Unicode"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ActionMapper.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ActionMapper.rc
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\DirectX.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\resource.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Common"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# 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\dxutil.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\common\include\dxutil.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,29 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "ActionMapper"=.\ActionMapper.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,221 @@
|
||||
# Microsoft Developer Studio Generated NMAKE File, Based on actionmapper.dsp
|
||||
!IF "$(CFG)" == ""
|
||||
CFG=ActionMapper - Win32 Debug
|
||||
!MESSAGE No configuration specified. Defaulting to ActionMapper - Win32 Debug.
|
||||
!ENDIF
|
||||
|
||||
!IF "$(CFG)" != "ActionMapper - Win32 Release" && "$(CFG)" != "ActionMapper - 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 "actionmapper.mak" CFG="ActionMapper - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "ActionMapper - Win32 Release" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "ActionMapper - 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)" == "ActionMapper - Win32 Release"
|
||||
|
||||
OUTDIR=.\Release
|
||||
INTDIR=.\Release
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Release
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "$(OUTDIR)\actionmapper.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\ActionMapper.obj"
|
||||
-@erase "$(INTDIR)\ActionMapper.res"
|
||||
-@erase "$(INTDIR)\diutil.obj"
|
||||
-@erase "$(INTDIR)\dxutil.obj"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(OUTDIR)\actionmapper.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)\actionmapper.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)\ActionMapper.res" /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\actionmapper.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=dsound.lib dinput8.lib dxerr8.lib d3dx8dt.lib d3d8.lib d3dxof.lib dxguid.lib winmm.lib 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 /incremental:no /pdb:"$(OUTDIR)\actionmapper.pdb" /machine:I386 /out:"$(OUTDIR)\actionmapper.exe" /stack:0x200000,0x200000
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\ActionMapper.obj" \
|
||||
"$(INTDIR)\diutil.obj" \
|
||||
"$(INTDIR)\dxutil.obj" \
|
||||
"$(INTDIR)\ActionMapper.res"
|
||||
|
||||
"$(OUTDIR)\actionmapper.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ELSEIF "$(CFG)" == "ActionMapper - Win32 Debug"
|
||||
|
||||
OUTDIR=.\Debug
|
||||
INTDIR=.\Debug
|
||||
# Begin Custom Macros
|
||||
OutDir=.\Debug
|
||||
# End Custom Macros
|
||||
|
||||
ALL : "$(OUTDIR)\actionmapper.exe"
|
||||
|
||||
|
||||
CLEAN :
|
||||
-@erase "$(INTDIR)\ActionMapper.obj"
|
||||
-@erase "$(INTDIR)\ActionMapper.res"
|
||||
-@erase "$(INTDIR)\diutil.obj"
|
||||
-@erase "$(INTDIR)\dxutil.obj"
|
||||
-@erase "$(INTDIR)\vc60.idb"
|
||||
-@erase "$(INTDIR)\vc60.pdb"
|
||||
-@erase "$(OUTDIR)\actionmapper.exe"
|
||||
-@erase "$(OUTDIR)\actionmapper.ilk"
|
||||
-@erase "$(OUTDIR)\actionmapper.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" /Fp"$(INTDIR)\actionmapper.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /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)\ActionMapper.res" /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
BSC32_FLAGS=/nologo /o"$(OUTDIR)\actionmapper.bsc"
|
||||
BSC32_SBRS= \
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=dsound.lib dinput8.lib dxerr8.lib d3dx8dt.lib d3d8.lib d3dxof.lib dxguid.lib winmm.lib 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 /incremental:yes /pdb:"$(OUTDIR)\actionmapper.pdb" /debug /machine:I386 /out:"$(OUTDIR)\actionmapper.exe" /pdbtype:sept /stack:0x200000,0x200000
|
||||
LINK32_OBJS= \
|
||||
"$(INTDIR)\ActionMapper.obj" \
|
||||
"$(INTDIR)\diutil.obj" \
|
||||
"$(INTDIR)\dxutil.obj" \
|
||||
"$(INTDIR)\ActionMapper.res"
|
||||
|
||||
"$(OUTDIR)\actionmapper.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(NO_EXTERNAL_DEPS)" != "1"
|
||||
!IF EXISTS("actionmapper.dep")
|
||||
!INCLUDE "actionmapper.dep"
|
||||
!ELSE
|
||||
!MESSAGE Warning: cannot find "actionmapper.dep"
|
||||
!ENDIF
|
||||
!ENDIF
|
||||
|
||||
|
||||
!IF "$(CFG)" == "ActionMapper - Win32 Release" || "$(CFG)" == "ActionMapper - Win32 Debug"
|
||||
SOURCE=.\ActionMapper.cpp
|
||||
|
||||
"$(INTDIR)\ActionMapper.obj" : $(SOURCE) "$(INTDIR)"
|
||||
|
||||
|
||||
SOURCE=.\ActionMapper.rc
|
||||
|
||||
"$(INTDIR)\ActionMapper.res" : $(SOURCE) "$(INTDIR)"
|
||||
$(RSC) $(RSC_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
SOURCE=..\..\common\src\diutil.cpp
|
||||
|
||||
"$(INTDIR)\diutil.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
SOURCE=..\..\common\src\dxutil.cpp
|
||||
|
||||
"$(INTDIR)\dxutil.obj" : $(SOURCE) "$(INTDIR)"
|
||||
$(CPP) $(CPP_PROJ) $(SOURCE)
|
||||
|
||||
|
||||
|
||||
!ENDIF
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Developer Studio generated include file.
|
||||
// Used by ActionMapper.rc
|
||||
//
|
||||
#define IDI_MAIN_ICON 101
|
||||
#define IDD_MAIN 101
|
||||
#define IDC_UD_AXIS_STATE 1031
|
||||
#define IDC_LR_AXIS_STATE 1032
|
||||
#define IDC_WORLD_STATE 1033
|
||||
#define IDC_BUTTON_STATE 1034
|
||||
#define IDM_CONFIGINPUT 40011
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_3D_CONTROLS 1
|
||||
#define _APS_NEXT_RESOURCE_VALUE 146
|
||||
#define _APS_NEXT_COMMAND_VALUE 40013
|
||||
#define _APS_NEXT_CONTROL_VALUE 1035
|
||||
#define _APS_NEXT_SYMED_VALUE 102
|
||||
#endif
|
||||
#endif
|
||||
Reference in New Issue
Block a user