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,264 @@
|
||||
Attribute VB_Name = "modD3D"
|
||||
Option Explicit
|
||||
|
||||
Public dx As New DirectX8
|
||||
|
||||
Public gfDrawRoomText As Boolean
|
||||
Public glScreenWidth As Long
|
||||
Public glScreenHeight As Long
|
||||
|
||||
'Extra misc vars
|
||||
Public gfWireFrame As Boolean
|
||||
|
||||
Public Sub Render()
|
||||
|
||||
Dim lCount As Long
|
||||
|
||||
On Error Resume Next
|
||||
If g_dev Is Nothing Then Exit Sub
|
||||
|
||||
' Clear the backbuffer to a black color
|
||||
g_dev.Clear 0, ByVal 0, D3DCLEAR_TARGET Or D3DCLEAR_ZBUFFER, &H0&, 1#, 0
|
||||
|
||||
' Setup the world, view, and projection matrices
|
||||
SetupMatrices
|
||||
|
||||
' Begin the scene
|
||||
g_dev.BeginScene
|
||||
|
||||
'Draw everything in either a solid fillmode, or wireframe
|
||||
If gfWireFrame Then
|
||||
g_dev.SetRenderState D3DRS_FILLMODE, D3DFILL_WIREFRAME
|
||||
Else
|
||||
g_dev.SetRenderState D3DRS_FILLMODE, D3DFILL_SOLID
|
||||
End If
|
||||
|
||||
'Render the room
|
||||
goRoom.Render g_dev
|
||||
|
||||
'Render the table
|
||||
goTable.Render g_dev
|
||||
|
||||
'Now Paddle (0)
|
||||
goPaddle(0).Render g_dev
|
||||
|
||||
'Now Paddle (1)
|
||||
goPaddle(1).Render g_dev
|
||||
|
||||
'And finally the puck
|
||||
goPuck.Render g_dev
|
||||
'Now lets draw whatever text we need
|
||||
|
||||
'We can draw text (don't draw text if we're currently fading)
|
||||
If Not goFade.AmFading Then
|
||||
goTextLittle.BeginText
|
||||
If gfGameCanBeStarted Then
|
||||
'If the game can be started, then draw the scores at the top of the screen
|
||||
If gfMultiplayer Then
|
||||
If glMyPaddleID = 0 Then
|
||||
goTextLittle.DrawText gsUserName & ":" & glPlayerScore(0), 10, 5, &HFFFFFF00
|
||||
Else
|
||||
goTextLittle.DrawText "Opponent:" & glPlayerScore(0), 10, 5, &HFFFFFFFF
|
||||
End If
|
||||
If glMyPaddleID = 1 Then
|
||||
goTextLittle.DrawText gsUserName & ":" & glPlayerScore(1), glScreenWidth - 75, 5, &HFFFFFF00
|
||||
Else
|
||||
goTextLittle.DrawText "Opponent:" & glPlayerScore(1), glScreenWidth - 75, 5, &HFFFFFFFF
|
||||
End If
|
||||
Else
|
||||
goTextLittle.DrawText "Player:" & glPlayerScore(0), 10, 5, &HFFFFFF00
|
||||
goTextLittle.DrawText "Computer:" & glPlayerScore(1), glScreenWidth - 75, 5, &HFFFFFFFF
|
||||
End If
|
||||
Else
|
||||
'The game can't be started yet (only in multiplayer) Let the host know
|
||||
goTextLittle.DrawText "Waiting for the game to be started...", (glScreenWidth / 2) - 50, 5, &HFFFFFFFF
|
||||
End If
|
||||
'Here is a little helper text letting the user know to press Space
|
||||
'to launch the puck (will show up after 3 seconds, and stay on for 10 seconds)
|
||||
If (timeGetTime - glTimePuckScored > glDefaultDelayTime) And gfScored And Not gfGameOver And ((timeGetTime - glTimePuckScored < glDefaultDelayTimeGone + glDefaultDelayTime)) Then
|
||||
goPuck.DefaultStartPosition
|
||||
goPuck.Spinning = True
|
||||
goTextLittle.DrawText "Press <Space> to launch puck...", (glScreenWidth / 2) - 50, 25, &HFF0000FF
|
||||
End If
|
||||
|
||||
'Here is a little helper text letting the user know to press F1
|
||||
'to turn of the room (will show up after 3 seconds, and stay on for 10 seconds)
|
||||
If (gfDrawRoomText And goRoom.DrawRoom) And (timeGetTime - glTimeNoRoom < glDefaultDelayTimeGone) Then
|
||||
goPuck.DefaultStartPosition
|
||||
goPuck.Spinning = True
|
||||
goTextLittle.DrawText "You can press F1 to turn off the drawing " & vbCrLf & " of the room, which will increase performance.", -15, glScreenHeight - 50, &HFFFF00FF
|
||||
End If
|
||||
If gfGameOver And ((timeGetTime - glTimeGameOver) > glDefaultDelayTime) And ((timeGetTime - glTimeGameOver < glDefaultDelayTimeGone + glDefaultDelayTime)) Then
|
||||
goTextLittle.DrawText "Press F3 to restart...", (glScreenWidth / 2) - 50, 25, &HFF0000FF
|
||||
End If
|
||||
goTextLittle.EndText
|
||||
goTextBig.BeginText
|
||||
If gfGameOver Then
|
||||
If gfMultiplayer Then
|
||||
If glPlayerScore(glMyPaddleID) > glPlayerScore(Abs(glMyPaddleID - 1)) Then
|
||||
goTextBig.DrawText "Game over!!" & vbCrLf & "You win!!", (glScreenWidth / 2) - (glScreenWidth / 4), (glScreenHeight / 2) - (glScreenHeight / 4), &HFFDD11AA
|
||||
Else
|
||||
goTextBig.DrawText "Game over!!" & vbCrLf & "You lose!!", (glScreenWidth / 2) - (glScreenWidth / 4), (glScreenHeight / 2) - (glScreenHeight / 4), &HFFDD11AA
|
||||
End If
|
||||
Else
|
||||
If glPlayerScore(0) > glPlayerScore(1) Then
|
||||
goTextBig.DrawText "Game over!!" & vbCrLf & "You win!!", (glScreenWidth / 2) - (glScreenWidth / 4), (glScreenHeight / 2) - (glScreenHeight / 4), &HFFDD11AA
|
||||
Else
|
||||
goTextBig.DrawText "Game over!!" & vbCrLf & "You lose!!", (glScreenWidth / 2) - (glScreenWidth / 4), (glScreenHeight / 2) - (glScreenHeight / 4), &HFFDD11AA
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
If gfMultiplayer And gfNoSendData Then 'We've been disconnected sometime, notify the user
|
||||
goTextBig.DrawText "The connection with the other" & vbCrLf & "system was lost.", 5, (glScreenHeight / 2) - (glScreenHeight / 4), &HFFFFFF00
|
||||
End If
|
||||
goTextBig.EndText
|
||||
End If
|
||||
' End the scene
|
||||
g_dev.EndScene
|
||||
' Present the backbuffer contents to the front buffer (screen)
|
||||
D3DUtil_PresentAll 0
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub SetupMatrices()
|
||||
|
||||
Dim matView As D3DMATRIX
|
||||
|
||||
D3DXMatrixLookAtLH matView, goCamera.Position, vec3(0#, 0#, 0#), vec3(0#, 1#, 0#)
|
||||
g_dev.SetTransform D3DTS_VIEW, matView
|
||||
|
||||
Dim matProj As D3DMATRIX
|
||||
D3DXMatrixPerspectiveFovLH matProj, g_pi / 4, 1, 1, 110
|
||||
g_dev.SetTransform D3DTS_PROJECTION, matProj
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub RestoreDeviceObjects()
|
||||
|
||||
' Set miscellaneous render states
|
||||
With g_dev
|
||||
' Set world transform
|
||||
Dim matWorld As D3DMATRIX
|
||||
D3DXMatrixIdentity matWorld
|
||||
.SetTransform D3DTS_WORLD, matWorld
|
||||
' Set the projection matrix
|
||||
Dim matProj As D3DMATRIX
|
||||
Dim fAspect As Single
|
||||
fAspect = 1
|
||||
D3DXMatrixPerspectiveFovLH matProj, g_pi / 3, fAspect, 1, 1000
|
||||
.SetTransform D3DTS_PROJECTION, matProj
|
||||
|
||||
.SetTextureStageState 0, D3DTSS_COLORARG1, D3DTA_TEXTURE
|
||||
.SetTextureStageState 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE
|
||||
.SetTextureStageState 0, D3DTSS_COLOROP, D3DTOP_MODULATE
|
||||
.SetTextureStageState 0, D3DTSS_MINFILTER, D3DTEXF_LINEAR
|
||||
.SetTextureStageState 0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR
|
||||
.SetTextureStageState 1, D3DTSS_MINFILTER, D3DTEXF_LINEAR
|
||||
.SetTextureStageState 1, D3DTSS_MAGFILTER, D3DTEXF_LINEAR
|
||||
|
||||
' Set default render states
|
||||
.SetRenderState D3DRS_DITHERENABLE, 1 'True
|
||||
.SetRenderState D3DRS_SPECULARENABLE, 0 'False
|
||||
.SetRenderState D3DRS_ZENABLE, 1 'True
|
||||
.SetRenderState D3DRS_NORMALIZENORMALS, 1 'True
|
||||
|
||||
End With
|
||||
|
||||
Set goTextBig = Nothing
|
||||
Set goTextLittle = Nothing
|
||||
|
||||
'Now create a new text object
|
||||
Set goTextLittle = New cText
|
||||
goTextLittle.InitText g_d3dx, g_dev, "Times New Roman", 8, True
|
||||
Set goTextBig = New cText
|
||||
goTextBig.InitText g_d3dx, g_dev, "Times New Roman", 18, True
|
||||
|
||||
End Sub
|
||||
|
||||
Public Sub InitDefaultLights(Optional ByVal lNumLights As Long = 2, Optional ByVal fFullAmbiantOnly As Boolean = False)
|
||||
With g_dev
|
||||
' Set ambient light
|
||||
.SetRenderState D3DRS_AMBIENT, &HFFFFFFFF
|
||||
goFade.AmbientColor = &HFFFFFFFF
|
||||
goFade.MaxAmbientColor = goFade.AmbientColor
|
||||
If fFullAmbiantOnly Then Exit Sub
|
||||
If lNumLights < 1 Then Exit Sub 'Nothing to do
|
||||
|
||||
' Set ambient light
|
||||
'We will slowly lower the ambient light as each new light gets added
|
||||
.SetRenderState D3DRS_AMBIENT, &HFFBBBBBB
|
||||
goFade.AmbientColor = &HFFBBBBBB
|
||||
' Turn on lighting
|
||||
.SetRenderState D3DRS_LIGHTING, 1
|
||||
|
||||
'Turn on two lights one on each end of the table
|
||||
Dim light As D3DLIGHT8
|
||||
|
||||
If lNumLights > 0 Then
|
||||
With light
|
||||
.Type = D3DLIGHT_DIRECTIONAL
|
||||
.diffuse.r = 0
|
||||
.diffuse.g = 0
|
||||
.diffuse.b = 0
|
||||
.Direction.x = 0
|
||||
.Direction.y = -10
|
||||
.Direction.z = 0
|
||||
.Range = 100000#
|
||||
.Position.x = 0
|
||||
.Position.y = 3
|
||||
.Position.z = 0
|
||||
End With
|
||||
goFade.LightColor(0) = light
|
||||
|
||||
.SetLight 0, light 'let d3d know about the light
|
||||
.LightEnable 0, 1 'turn it on
|
||||
goFade.NumLight = 0
|
||||
End If
|
||||
|
||||
|
||||
If lNumLights > 1 Then
|
||||
.SetRenderState D3DRS_AMBIENT, &HFFAAAAAA
|
||||
goFade.AmbientColor = &HFFAAAAAA
|
||||
'Now turn on the second light if we can
|
||||
With light
|
||||
.Type = D3DLIGHT_DIRECTIONAL
|
||||
.Direction.x = 15
|
||||
.Direction.y = -10
|
||||
.Direction.z = -15
|
||||
.Range = 1000#
|
||||
.Position.x = -15
|
||||
.Position.y = 10
|
||||
.Position.z = 15
|
||||
End With
|
||||
goFade.LightColor(1) = light
|
||||
|
||||
.SetLight 1, light 'let d3d know about the light
|
||||
.LightEnable 1, 1 'turn it on
|
||||
goFade.NumLight = 1
|
||||
End If
|
||||
|
||||
|
||||
If lNumLights > 3 Then
|
||||
.SetRenderState D3DRS_AMBIENT, 0
|
||||
goFade.AmbientColor = 0
|
||||
'Now turn on the third light if we can
|
||||
With light
|
||||
.Type = D3DLIGHT_DIRECTIONAL
|
||||
.Direction.x = -15
|
||||
.Direction.y = 10
|
||||
.Direction.z = 15
|
||||
.Range = 1000#
|
||||
.Position.x = 15
|
||||
.Position.y = -10
|
||||
.Position.z = -15
|
||||
End With
|
||||
goFade.LightColor(2) = light
|
||||
|
||||
.SetLight 2, light 'let d3d know about the light
|
||||
.LightEnable 2, 1 'turn it on
|
||||
goFade.NumLight = 2
|
||||
End If
|
||||
End With
|
||||
goFade.MaxAmbientColor = goFade.AmbientColor
|
||||
|
||||
End Sub
|
||||
Reference in New Issue
Block a user