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,200 @@
|
||||
VERSION 5.00
|
||||
Begin VB.Form frmCanvas
|
||||
AutoRedraw = -1 'True
|
||||
BackColor = &H80000005&
|
||||
Caption = "Visual Basic Scrawl Sample"
|
||||
ClientHeight = 6150
|
||||
ClientLeft = 165
|
||||
ClientTop = 450
|
||||
ClientWidth = 9990
|
||||
Icon = "ScrawlB.frx":0000
|
||||
LinkTopic = "Form1"
|
||||
ScaleHeight = 410
|
||||
ScaleMode = 3 'Pixel
|
||||
ScaleWidth = 666
|
||||
StartUpPosition = 2 'CenterScreen
|
||||
Begin VB.Image imgPencil
|
||||
Appearance = 0 'Flat
|
||||
Height = 480
|
||||
Left = 840
|
||||
Picture = "ScrawlB.frx":0442
|
||||
Top = 600
|
||||
Width = 480
|
||||
End
|
||||
Begin VB.Menu mnuContext
|
||||
Caption = "none"
|
||||
Visible = 0 'False
|
||||
Begin VB.Menu mnuSpeed1
|
||||
Caption = "Speed 1"
|
||||
End
|
||||
Begin VB.Menu mnuSpeed2
|
||||
Caption = "Speed 2"
|
||||
End
|
||||
Begin VB.Menu mnuSpeed3
|
||||
Caption = "Speed 3"
|
||||
End
|
||||
Begin VB.Menu Sep1
|
||||
Caption = "-"
|
||||
End
|
||||
Begin VB.Menu mnuClear
|
||||
Caption = "Clear"
|
||||
End
|
||||
Begin VB.Menu Sep2
|
||||
Caption = "-"
|
||||
End
|
||||
Begin VB.Menu mnuSuspend
|
||||
Caption = "Suspend"
|
||||
End
|
||||
Begin VB.Menu mnuExit
|
||||
Caption = "Exit"
|
||||
End
|
||||
End
|
||||
End
|
||||
Attribute VB_Name = "frmCanvas"
|
||||
Attribute VB_GlobalNameSpace = False
|
||||
Attribute VB_Creatable = False
|
||||
Attribute VB_PredeclaredId = True
|
||||
Attribute VB_Exposed = False
|
||||
Implements DirectXEvent
|
||||
|
||||
|
||||
Dim Suspended As Boolean
|
||||
|
||||
Private Sub DirectXEvent_DXCallback(ByVal eventid As Long)
|
||||
Dim diDeviceData(1 To BufferSize) As DIDEVICEOBJECTDATA
|
||||
Dim NumItems As Integer
|
||||
Dim i As Integer
|
||||
Dim windowRect As RECT
|
||||
Static OldSequence As Long
|
||||
|
||||
On Error GoTo INPUTLOST
|
||||
NumItems = objDIDev.GetDeviceData(diDeviceData, 0)
|
||||
For i = 1 To NumItems
|
||||
Select Case diDeviceData(i).lOfs
|
||||
Case DIMOFS_X
|
||||
g_cursorx = g_cursorx + diDeviceData(i).lData * g_Sensitivity
|
||||
|
||||
' We don't want to update the cursor or draw a line is response to
|
||||
' separate axis movements, or we will get a staircase instead of diagonal lines.
|
||||
' A diagonal movement of the mouse results in two events with the same sequence number.
|
||||
If OldSequence <> diDeviceData(i).lSequence Then
|
||||
UpdateCursor
|
||||
End If
|
||||
OldSequence = diDeviceData(i).lSequence
|
||||
|
||||
Case DIMOFS_Y
|
||||
g_cursory = g_cursory + diDeviceData(i).lData * g_Sensitivity
|
||||
If OldSequence <> diDeviceData(i).lSequence Then
|
||||
UpdateCursor
|
||||
End If
|
||||
OldSequence = diDeviceData(i).lSequence
|
||||
|
||||
Case DIMOFS_BUTTON0
|
||||
If diDeviceData(i).lData And &H80 Then
|
||||
Drawing = True
|
||||
CurrentX = g_cursorx
|
||||
CurrentY = g_cursory
|
||||
Else
|
||||
Drawing = False
|
||||
End If
|
||||
|
||||
Case DIMOFS_BUTTON1
|
||||
If diDeviceData(i).lData = 0 Then ' button up
|
||||
objDIDev.Unacquire
|
||||
|
||||
' Get the system cursor into the same position as the private cursor
|
||||
Call GetWindowRect(hwnd, windowRect)
|
||||
Call SetCursorPos(g_cursorx + windowRect.Left, g_cursory + windowRect.Top)
|
||||
|
||||
' Pop up menu at that position
|
||||
Call PopupMenu(mnuContext)
|
||||
End If
|
||||
|
||||
|
||||
End Select
|
||||
Next i
|
||||
Exit Sub
|
||||
|
||||
INPUTLOST:
|
||||
' Since no events are signalled if the device is not acquired, this can only happen
|
||||
' if the device is lost between signalling and retrieval.
|
||||
|
||||
If Err.Number = DIERR_INPUTLOST Then
|
||||
objDIDev.Acquire
|
||||
Else
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
Public Sub UpdateCursor()
|
||||
|
||||
If g_cursorx < 1 Then g_cursorx = 1
|
||||
If g_cursorx >= Canvas.ScaleWidth Then g_cursorx = Canvas.ScaleWidth - 1
|
||||
If g_cursory < 1 Then g_cursory = 1
|
||||
If g_cursory >= Canvas.ScaleHeight Then g_cursory = Canvas.ScaleHeight - 1
|
||||
Canvas.imgPencil.Left = g_cursorx
|
||||
Canvas.imgPencil.Top = g_cursory
|
||||
If Drawing Then
|
||||
Line -(g_cursorx, g_cursory)
|
||||
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub Form_Click()
|
||||
' Allow user to resume drawing after suspending
|
||||
|
||||
Suspended = False
|
||||
End Sub
|
||||
|
||||
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
|
||||
' This is a bit of a kludge. We need a way to force acquisition of the mouse whenever
|
||||
' the context menu is closed, whenever we switch back to the application, or in any other
|
||||
' circumstance where Windows is finished with the cursor. If a MouseMove event happens,
|
||||
' we know the cursor is in our app window and Windows is generating mouse messages, therefore
|
||||
' it's time to reacquire.
|
||||
' Note: this event appears to happen even when there's no mouse activity, e.g. we have just
|
||||
' Alt+Tabbed back, or cancelled out of the context menu with the Esc key.
|
||||
|
||||
If Suspended Then Exit Sub ' Allow use of Windows cursor
|
||||
On Error Resume Next
|
||||
objDIDev.Acquire
|
||||
End Sub
|
||||
|
||||
Private Sub mnuClear_Click()
|
||||
Cls
|
||||
End Sub
|
||||
|
||||
Private Sub mnuExit_Click()
|
||||
End
|
||||
End Sub
|
||||
|
||||
Private Sub mnuSpeed1_Click()
|
||||
g_Sensitivity = 1
|
||||
mnuSpeed1.Checked = True
|
||||
mnuSpeed2.Checked = False
|
||||
mnuSpeed3.Checked = False
|
||||
objDIDev.Acquire
|
||||
End Sub
|
||||
|
||||
Private Sub mnuSpeed2_Click()
|
||||
g_Sensitivity = 2
|
||||
mnuSpeed2.Checked = True
|
||||
mnuSpeed1.Checked = False
|
||||
mnuSpeed3.Checked = False
|
||||
objDIDev.Acquire
|
||||
End Sub
|
||||
|
||||
Private Sub mnuSpeed3_Click()
|
||||
g_Sensitivity = 3
|
||||
mnuSpeed3.Checked = True
|
||||
mnuSpeed1.Checked = False
|
||||
mnuSpeed2.Checked = False
|
||||
objDIDev.Acquire
|
||||
End Sub
|
||||
|
||||
Private Sub mnuSuspend_Click()
|
||||
Suspended = True
|
||||
objDIDev.Unacquire
|
||||
End Sub
|
||||
Reference in New Issue
Block a user