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:
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,420 @@
|
||||
VERSION 5.00
|
||||
Begin VB.Form frmMain
|
||||
BorderStyle = 1 'Fixed Single
|
||||
Caption = "JoyStick Sample"
|
||||
ClientHeight = 6240
|
||||
ClientLeft = 45
|
||||
ClientTop = 330
|
||||
ClientWidth = 6000
|
||||
Icon = "frmMain.frx":0000
|
||||
LinkTopic = "Form1"
|
||||
MaxButton = 0 'False
|
||||
MinButton = 0 'False
|
||||
ScaleHeight = 6240
|
||||
ScaleWidth = 6000
|
||||
StartUpPosition = 3 'Windows Default
|
||||
Begin VB.ListBox lstHat
|
||||
Enabled = 0 'False
|
||||
Height = 1230
|
||||
ItemData = "frmMain.frx":0442
|
||||
Left = 4080
|
||||
List = "frmMain.frx":0444
|
||||
TabIndex = 6
|
||||
Top = 3240
|
||||
Width = 1695
|
||||
End
|
||||
Begin VB.ListBox lstButton
|
||||
Enabled = 0 'False
|
||||
Height = 2790
|
||||
ItemData = "frmMain.frx":0446
|
||||
Left = 2160
|
||||
List = "frmMain.frx":0448
|
||||
TabIndex = 2
|
||||
Top = 3240
|
||||
Width = 1695
|
||||
End
|
||||
Begin VB.ListBox lstJoyAxis
|
||||
Enabled = 0 'False
|
||||
Height = 2790
|
||||
ItemData = "frmMain.frx":044A
|
||||
Left = 240
|
||||
List = "frmMain.frx":044C
|
||||
TabIndex = 1
|
||||
Top = 3240
|
||||
Width = 1695
|
||||
End
|
||||
Begin VB.ListBox lstJoySticks
|
||||
Height = 1815
|
||||
ItemData = "frmMain.frx":044E
|
||||
Left = 240
|
||||
List = "frmMain.frx":0450
|
||||
TabIndex = 0
|
||||
Top = 720
|
||||
Width = 5535
|
||||
End
|
||||
Begin VB.Label lblHats
|
||||
Caption = "POVs"
|
||||
BeginProperty Font
|
||||
Name = "MS Sans Serif"
|
||||
Size = 18
|
||||
Charset = 0
|
||||
Weight = 400
|
||||
Underline = 0 'False
|
||||
Italic = 0 'False
|
||||
Strikethrough = 0 'False
|
||||
EndProperty
|
||||
Height = 375
|
||||
Left = 4080
|
||||
TabIndex = 7
|
||||
Top = 2760
|
||||
Width = 1335
|
||||
End
|
||||
Begin VB.Label lblButtons
|
||||
Caption = "Buttons"
|
||||
BeginProperty Font
|
||||
Name = "MS Sans Serif"
|
||||
Size = 18
|
||||
Charset = 0
|
||||
Weight = 400
|
||||
Underline = 0 'False
|
||||
Italic = 0 'False
|
||||
Strikethrough = 0 'False
|
||||
EndProperty
|
||||
Height = 375
|
||||
Left = 2160
|
||||
TabIndex = 5
|
||||
Top = 2760
|
||||
Width = 1575
|
||||
End
|
||||
Begin VB.Label lblAxis
|
||||
Caption = "Axes"
|
||||
BeginProperty Font
|
||||
Name = "MS Sans Serif"
|
||||
Size = 18
|
||||
Charset = 0
|
||||
Weight = 400
|
||||
Underline = 0 'False
|
||||
Italic = 0 'False
|
||||
Strikethrough = 0 'False
|
||||
EndProperty
|
||||
Height = 495
|
||||
Left = 240
|
||||
TabIndex = 4
|
||||
Top = 2760
|
||||
Width = 1335
|
||||
End
|
||||
Begin VB.Label lblJoy
|
||||
Caption = "Joysticks"
|
||||
BeginProperty Font
|
||||
Name = "MS Sans Serif"
|
||||
Size = 18
|
||||
Charset = 0
|
||||
Weight = 400
|
||||
Underline = 0 'False
|
||||
Italic = 0 'False
|
||||
Strikethrough = 0 'False
|
||||
EndProperty
|
||||
Height = 375
|
||||
Left = 240
|
||||
TabIndex = 3
|
||||
Top = 120
|
||||
Width = 4215
|
||||
End
|
||||
End
|
||||
Attribute VB_Name = "frmMain"
|
||||
Attribute VB_GlobalNameSpace = False
|
||||
Attribute VB_Creatable = False
|
||||
Attribute VB_PredeclaredId = True
|
||||
Attribute VB_Exposed = False
|
||||
|
||||
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
'
|
||||
' Copyright (C) 1999-2001 Microsoft Corporation. All Rights Reserved.
|
||||
'
|
||||
' File: FrmMain.Frm
|
||||
' Content: This sample shows one way to use DirectInput with a Joystick device
|
||||
'
|
||||
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
Option Explicit
|
||||
Implements DirectXEvent8
|
||||
|
||||
|
||||
Dim dx As New DirectX8
|
||||
Dim di As DirectInput8
|
||||
Dim diDev As DirectInputDevice8
|
||||
Dim diDevEnum As DirectInputEnumDevices8
|
||||
Dim EventHandle As Long
|
||||
Dim joyCaps As DIDEVCAPS
|
||||
Dim js As DIJOYSTATE
|
||||
Dim DiProp_Dead As DIPROPLONG
|
||||
Dim DiProp_Range As DIPROPRANGE
|
||||
Dim DiProp_Saturation As DIPROPLONG
|
||||
Dim AxisPresent(1 To 8) As Boolean
|
||||
Dim running As Boolean
|
||||
|
||||
Sub InitDirectInput()
|
||||
|
||||
Set di = dx.DirectInputCreate()
|
||||
Set diDevEnum = di.GetDIDevices(DI8DEVCLASS_GAMECTRL, DIEDFL_ATTACHEDONLY)
|
||||
If diDevEnum.GetCount = 0 Then
|
||||
MsgBox "No joystick attached."
|
||||
Unload Me
|
||||
End If
|
||||
|
||||
'Add attached joysticks to the listbox
|
||||
Dim i As Integer
|
||||
For i = 1 To diDevEnum.GetCount
|
||||
Call lstJoySticks.AddItem(diDevEnum.GetItem(i).GetInstanceName)
|
||||
Next
|
||||
|
||||
' Get an event handle to associate with the device
|
||||
EventHandle = dx.CreateEvent(Me)
|
||||
Exit Sub
|
||||
|
||||
Error_Out:
|
||||
MsgBox "Error initializing DirectInput."
|
||||
Unload Me
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub DirectXEvent8_DXCallback(ByVal eventid As Long)
|
||||
|
||||
' This is called whenever there's a change in the joystick state.
|
||||
' We check the new state and update the display.
|
||||
|
||||
|
||||
Dim i As Integer
|
||||
Dim ListPos As Integer
|
||||
Dim S As String
|
||||
|
||||
If diDev Is Nothing Then Exit Sub
|
||||
|
||||
'' Get the device info
|
||||
On Local Error Resume Next
|
||||
diDev.GetDeviceStateJoystick js
|
||||
If Err.Number = DIERR_NOTACQUIRED Or Err.Number = DIERR_INPUTLOST Then
|
||||
diDev.Acquire
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
|
||||
On Error GoTo err_out
|
||||
|
||||
' Display axis coordinates
|
||||
ListPos = 0
|
||||
For i = 1 To 8
|
||||
If AxisPresent(i) Then
|
||||
Select Case i
|
||||
Case 1
|
||||
S = "X: " & js.x
|
||||
Case 2
|
||||
S = "Y: " & js.y
|
||||
Case 3
|
||||
S = "Z: " & js.z
|
||||
Case 4
|
||||
S = "RX: " & js.rx
|
||||
Case 5
|
||||
S = "RY: " & js.ry
|
||||
Case 6
|
||||
S = "RZ: " & js.rz
|
||||
Case 7
|
||||
S = "Slider0: " & js.slider(0)
|
||||
Case 8
|
||||
S = "Slider1: " & js.slider(1)
|
||||
|
||||
End Select
|
||||
lstJoyAxis.List(ListPos) = S
|
||||
ListPos = ListPos + 1
|
||||
|
||||
End If
|
||||
Next
|
||||
|
||||
' Buttons
|
||||
|
||||
For i = 0 To joyCaps.lButtons - 1
|
||||
Select Case js.Buttons(i)
|
||||
Case 0
|
||||
lstButton.List(i) = "Button " + CStr(i + 1) + ": Up"
|
||||
|
||||
Case Else
|
||||
lstButton.List(i) = "Button " + CStr(i + 1) + ": Down"
|
||||
|
||||
End Select
|
||||
Next
|
||||
|
||||
' Hats
|
||||
For i = 0 To joyCaps.lPOVs - 1
|
||||
lstHat.List(i) = "POV " + CStr(i + 1) + ": " + CStr(js.POV(i))
|
||||
Next
|
||||
|
||||
Me.Caption = "Joystick Sample: Available"
|
||||
|
||||
Exit Sub
|
||||
|
||||
err_out:
|
||||
MsgBox Err.Description & " : " & Err.Number, vbApplicationModal
|
||||
End
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub Form_Load()
|
||||
running = True
|
||||
InitDirectInput
|
||||
End Sub
|
||||
|
||||
|
||||
Private Sub Form_Unload(cancel As Integer)
|
||||
On Local Error Resume Next
|
||||
If EventHandle <> 0 Then dx.DestroyEvent EventHandle
|
||||
|
||||
running = False
|
||||
|
||||
'Unacquire if we are holding a device
|
||||
If Not diDev Is Nothing Then
|
||||
diDev.Unacquire
|
||||
End If
|
||||
|
||||
DoEvents
|
||||
End
|
||||
End Sub
|
||||
|
||||
Private Sub lstJoySticks_Click()
|
||||
|
||||
|
||||
On Local Error Resume Next
|
||||
|
||||
Call CLRLISTS
|
||||
|
||||
|
||||
'Unacquire the current device
|
||||
'if we are holding a device
|
||||
If Not diDev Is Nothing Then
|
||||
diDev.Unacquire
|
||||
End If
|
||||
|
||||
'Create the joystick device
|
||||
Set diDev = Nothing
|
||||
Set diDev = di.CreateDevice(diDevEnum.GetItem(lstJoySticks.ListIndex + 1).GetGuidInstance)
|
||||
diDev.SetCommonDataFormat DIFORMAT_JOYSTICK
|
||||
diDev.SetCooperativeLevel Me.hWnd, DISCL_BACKGROUND Or DISCL_NONEXCLUSIVE
|
||||
|
||||
' Find out what device objects it has
|
||||
diDev.GetCapabilities joyCaps
|
||||
Call IdentifyAxes(diDev)
|
||||
|
||||
' Ask for notification of events
|
||||
Call diDev.SetEventNotification(EventHandle)
|
||||
|
||||
' Set deadzone for X and Y axis to 10 percent of the range of travel
|
||||
With DiProp_Dead
|
||||
.lData = 1000
|
||||
.lHow = DIPH_BYOFFSET
|
||||
|
||||
.lObj = DIJOFS_X
|
||||
diDev.SetProperty "DIPROP_DEADZONE", DiProp_Dead
|
||||
|
||||
.lObj = DIJOFS_Y
|
||||
diDev.SetProperty "DIPROP_DEADZONE", DiProp_Dead
|
||||
|
||||
End With
|
||||
|
||||
' Set saturation zones for X and Y axis to 5 percent of the range
|
||||
With DiProp_Saturation
|
||||
.lData = 9500
|
||||
.lHow = DIPH_BYOFFSET
|
||||
|
||||
.lObj = DIJOFS_X
|
||||
diDev.SetProperty "DIPROP_SATURATION", DiProp_Saturation
|
||||
|
||||
.lObj = DIJOFS_Y
|
||||
diDev.SetProperty "DIPROP_SATURATION", DiProp_Saturation
|
||||
|
||||
End With
|
||||
|
||||
SetPropRange
|
||||
|
||||
|
||||
diDev.Acquire
|
||||
Me.Caption = "Joystick Sample: Querying Properties"
|
||||
|
||||
' Get the list of current properties
|
||||
' USB joysticks wont call this callback until you play with the joystick
|
||||
' so we call the callback ourselves the first time
|
||||
DirectXEvent8_DXCallback 0
|
||||
|
||||
' Poll the device so that events are sure to be signaled.
|
||||
' Usually this would be done in Sub Main or in the game rendering loop.
|
||||
|
||||
While running = True
|
||||
DoEvents
|
||||
diDev.Poll
|
||||
Wend
|
||||
End Sub
|
||||
|
||||
Sub SetPropRange()
|
||||
' NOTE Some devices do not let you set the range
|
||||
On Local Error Resume Next
|
||||
|
||||
' Set range for all axes
|
||||
With DiProp_Range
|
||||
.lHow = DIPH_DEVICE
|
||||
.lMin = 0
|
||||
.lMax = 10000
|
||||
End With
|
||||
diDev.SetProperty "DIPROP_RANGE", DiProp_Range
|
||||
End Sub
|
||||
|
||||
Sub CLRLISTS()
|
||||
lstJoyAxis.Clear
|
||||
lstButton.Clear
|
||||
lstHat.Clear
|
||||
End Sub
|
||||
|
||||
Sub IdentifyAxes(diDev As DirectInputDevice8)
|
||||
|
||||
' It's not enough to count axes; we need to know which in particular
|
||||
' are present.
|
||||
|
||||
Dim didoEnum As DirectInputEnumDeviceObjects
|
||||
Dim dido As DirectInputDeviceObjectInstance
|
||||
Dim i As Integer
|
||||
|
||||
For i = 1 To 8
|
||||
AxisPresent(i) = False
|
||||
Next
|
||||
|
||||
' Enumerate the axes
|
||||
Set didoEnum = diDev.GetDeviceObjectsEnum(DIDFT_AXIS)
|
||||
|
||||
' Check data offset of each axis to learn what it is
|
||||
Dim sGuid As String
|
||||
For i = 1 To didoEnum.GetCount
|
||||
|
||||
Set dido = didoEnum.GetItem(i)
|
||||
|
||||
sGuid = dido.GetGuidType
|
||||
Select Case sGuid
|
||||
Case "GUID_XAxis"
|
||||
AxisPresent(1) = True
|
||||
Case "GUID_YAxis"
|
||||
AxisPresent(2) = True
|
||||
Case "GUID_ZAxis"
|
||||
AxisPresent(3) = True
|
||||
Case "GUID_RxAxis"
|
||||
AxisPresent(4) = True
|
||||
Case "GUID_RyAxis"
|
||||
AxisPresent(5) = True
|
||||
Case "GUID_RzAxis"
|
||||
AxisPresent(6) = True
|
||||
Case "GUID_Slider"
|
||||
AxisPresent(8) = True
|
||||
AxisPresent(7) = True
|
||||
End Select
|
||||
|
||||
Next
|
||||
End Sub
|
||||
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,34 @@
|
||||
Type=Exe
|
||||
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#stdole2.tlb#OLE Automation
|
||||
Reference=*\G{E1211242-8E94-11D1-8808-00C04FC2C603}#1.0#0#dx8vb.dll#DirectX 8 for Visual Basic Type Library
|
||||
Form=frmMain.frm
|
||||
Startup="frmMain"
|
||||
ExeName32="vb_joystick.exe"
|
||||
Command32=""
|
||||
Name="Project1"
|
||||
HelpContextID="0"
|
||||
CompatibleMode="0"
|
||||
MajorVer=1
|
||||
MinorVer=0
|
||||
RevisionVer=0
|
||||
AutoIncrementVer=0
|
||||
ServerSupportFiles=0
|
||||
VersionCompanyName="Microsoft"
|
||||
CompilationType=0
|
||||
OptimizationType=0
|
||||
FavorPentiumPro(tm)=0
|
||||
CodeViewDebugInfo=0
|
||||
NoAliasing=0
|
||||
BoundsCheck=0
|
||||
OverflowCheck=0
|
||||
FlPointCheck=0
|
||||
FDIVCheck=0
|
||||
UnroundedFP=0
|
||||
StartMode=0
|
||||
Unattended=0
|
||||
Retained=0
|
||||
ThreadPerObject=0
|
||||
MaxNumberOfThreads=1
|
||||
|
||||
[MS Transaction Server]
|
||||
AutoRefresh=1
|
||||
@@ -0,0 +1,29 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Name: Joystick DirectInput Sample
|
||||
//
|
||||
// Copyright (C) 1999-2001 Microsoft Corporation. All rights reserved.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
Description
|
||||
===========
|
||||
The Joystick sample illustrates the use of DirectInput to poll for joystick position
|
||||
and button information.
|
||||
|
||||
|
||||
Path
|
||||
====
|
||||
Source: DXSDK\Samples\Multimedia\Vbsamples\DirectInput\Joystick
|
||||
Executable: DXSDK\Samples\Multimedia\vbsamples\DirectInput\Bin
|
||||
|
||||
|
||||
User's Guide
|
||||
============
|
||||
Observe how the displayed data changes when you move and twist the stick,
|
||||
rotate the throttle wheel, and press buttons in various combinations.
|
||||
|
||||
|
||||
Programming Notes
|
||||
=================
|
||||
The application retrieves joystick input via a DirectXEvent8 callback.
|
||||
|
||||
Reference in New Issue
Block a user