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,258 @@
|
||||
VERSION 5.00
|
||||
Begin VB.Form Form1
|
||||
BorderStyle = 0 'None
|
||||
Caption = "DD Animation"
|
||||
ClientHeight = 5625
|
||||
ClientLeft = 2355
|
||||
ClientTop = 1620
|
||||
ClientWidth = 7065
|
||||
Icon = "DDtut4.frx":0000
|
||||
LinkTopic = "Form1"
|
||||
ScaleHeight = 375
|
||||
ScaleMode = 3 'Pixel
|
||||
ScaleWidth = 471
|
||||
End
|
||||
Attribute VB_Name = "Form1"
|
||||
Attribute VB_GlobalNameSpace = False
|
||||
Attribute VB_Creatable = False
|
||||
Attribute VB_PredeclaredId = True
|
||||
Attribute VB_Exposed = False
|
||||
Option Explicit
|
||||
'NOTE THIS SAMPLES SHOWS HOW TO BLIT TO AREAS OF THE SCREEN
|
||||
Dim binit As Boolean
|
||||
Dim dx As New DirectX7
|
||||
Dim dd As DirectDraw7
|
||||
Dim lakesurf As DirectDrawSurface7
|
||||
Dim spritesurf As DirectDrawSurface7
|
||||
Dim primary As DirectDrawSurface7
|
||||
Dim backbuffer As DirectDrawSurface7
|
||||
Dim ddsd1 As DDSURFACEDESC2
|
||||
Dim ddsd2 As DDSURFACEDESC2
|
||||
Dim ddsd3 As DDSURFACEDESC2
|
||||
Dim ddsd4 As DDSURFACEDESC2
|
||||
Dim spriteWidth As Integer
|
||||
Dim spriteHeight As Integer
|
||||
Dim cols As Integer
|
||||
Dim rows As Integer
|
||||
Dim row As Integer
|
||||
Dim col As Integer
|
||||
Dim currentFrame As Integer
|
||||
Dim brunning As Boolean
|
||||
Dim CurModeActiveStatus As Boolean
|
||||
Dim bRestore As Boolean
|
||||
Dim sMedia As String
|
||||
|
||||
Sub Init()
|
||||
On Local Error GoTo errOut
|
||||
|
||||
Dim file As String
|
||||
|
||||
Set dd = dx.DirectDrawCreate("")
|
||||
Me.Show
|
||||
|
||||
'indicate that we dont need to change display depth
|
||||
Call dd.SetCooperativeLevel(Me.hWnd, DDSCL_FULLSCREEN Or DDSCL_ALLOWMODEX Or DDSCL_EXCLUSIVE)
|
||||
Call dd.SetDisplayMode(640, 480, 16, 0, DDSDM_DEFAULT)
|
||||
|
||||
'get the screen surface and create a back buffer too
|
||||
ddsd1.lFlags = DDSD_CAPS Or DDSD_BACKBUFFERCOUNT
|
||||
ddsd1.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE Or DDSCAPS_FLIP Or DDSCAPS_COMPLEX
|
||||
ddsd1.lBackBufferCount = 1
|
||||
Set primary = dd.CreateSurface(ddsd1)
|
||||
|
||||
'Get the backbuffer
|
||||
Dim caps As DDSCAPS2
|
||||
caps.lCaps = DDSCAPS_BACKBUFFER
|
||||
Set backbuffer = primary.GetAttachedSurface(caps)
|
||||
backbuffer.GetSurfaceDesc ddsd4
|
||||
|
||||
'Create DrawableSurface class form backbuffer
|
||||
|
||||
backbuffer.SetFontTransparency True
|
||||
backbuffer.SetForeColor vbGreen
|
||||
|
||||
' init the surfaces
|
||||
InitSurfaces
|
||||
|
||||
binit = True
|
||||
brunning = True
|
||||
Do While brunning
|
||||
blt
|
||||
DoEvents
|
||||
Loop
|
||||
|
||||
errOut:
|
||||
EndIt
|
||||
End Sub
|
||||
|
||||
Sub InitSurfaces()
|
||||
|
||||
|
||||
Set lakesurf = Nothing
|
||||
Set spritesurf = Nothing
|
||||
|
||||
sMedia = FindMediaDir("lake.bmp")
|
||||
If sMedia = vbNullString Then sMedia = AddDirSep(CurDir)
|
||||
|
||||
'load the bitmap into a surface - lake
|
||||
ddsd2.lFlags = DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH
|
||||
ddsd2.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN
|
||||
ddsd2.lWidth = ddsd4.lWidth
|
||||
ddsd2.lHeight = ddsd4.lHeight
|
||||
Set lakesurf = dd.CreateSurfaceFromFile(sMedia & "lake.bmp", ddsd2)
|
||||
|
||||
'load the bitmap into a surface
|
||||
'this bitmap has many frames of animation
|
||||
'each is 32 by 32 in layed out in cols x rows
|
||||
ddsd3.lFlags = DDSD_CAPS
|
||||
ddsd3.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN
|
||||
Set spritesurf = dd.CreateSurfaceFromFile(sMedia & "animate.bmp", ddsd3)
|
||||
spriteWidth = 32
|
||||
spriteHeight = 32
|
||||
cols = ddsd3.lWidth / spriteWidth
|
||||
rows = ddsd3.lHeight / spriteHeight
|
||||
|
||||
'use black for transparent color key which is on
|
||||
'the source bitmap -> use src keying
|
||||
Dim key As DDCOLORKEY
|
||||
key.low = 0
|
||||
key.high = 0
|
||||
spritesurf.SetColorKey DDCKEY_SRCBLT, key
|
||||
End Sub
|
||||
|
||||
|
||||
Sub blt()
|
||||
On Local Error GoTo errOut
|
||||
If binit = False Then Exit Sub
|
||||
|
||||
Dim ddrval As Long
|
||||
Static i As Integer
|
||||
|
||||
Dim rBack As RECT
|
||||
Dim rLake As RECT
|
||||
Dim rSprite As RECT
|
||||
Dim rSprite2 As RECT
|
||||
Dim rPrim As RECT
|
||||
|
||||
Static a As Single
|
||||
Static x As Single
|
||||
Static y As Single
|
||||
Static t As Single
|
||||
Static t2 As Single
|
||||
Static tLast As Single
|
||||
Static fps As Single
|
||||
|
||||
|
||||
' this will keep us from trying to blt in case we lose the surfaces (alt-tab)
|
||||
bRestore = False
|
||||
Do Until ExModeActive
|
||||
DoEvents
|
||||
bRestore = True
|
||||
Loop
|
||||
|
||||
' if we lost and got back the surfaces, then restore them
|
||||
DoEvents
|
||||
If bRestore Then
|
||||
bRestore = False
|
||||
dd.RestoreAllSurfaces
|
||||
InitSurfaces ' must init the surfaces again if they we're lost
|
||||
End If
|
||||
|
||||
'get the area of the screen where our window is
|
||||
|
||||
rBack.Bottom = ddsd4.lHeight
|
||||
rBack.Right = ddsd4.lWidth
|
||||
|
||||
'get the area of the bitmap we want ot blt
|
||||
rLake.Bottom = ddsd2.lHeight
|
||||
rLake.Right = ddsd2.lWidth
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
'blt to the backbuffer from our surface to
|
||||
'the screen surface such that our bitmap
|
||||
'appears over the window
|
||||
ddrval = backbuffer.BltFast(0, 0, lakesurf, rLake, DDBLTFAST_WAIT)
|
||||
|
||||
|
||||
'Calculate the frame rate
|
||||
If i = 30 Then
|
||||
If tLast <> 0 Then fps = 30 / (Timer - tLast)
|
||||
tLast = Timer
|
||||
i = 0
|
||||
End If
|
||||
i = i + 1
|
||||
Call backbuffer.DrawText(10, 10, "640x480x16 Frames per Second " + Format$(fps, "#.0"), False)
|
||||
Call backbuffer.DrawText(10, 30, "Click Screen to Exit", False)
|
||||
|
||||
'calculate the angle from the center
|
||||
'at witch to place the sprite
|
||||
'calcultate wich frame# we are on in the sprite bitmap
|
||||
t2 = Timer
|
||||
If t <> 0 Then
|
||||
a = a + (t2 - t) * 40
|
||||
If a > 360 Then a = a - 360
|
||||
currentFrame = currentFrame + (t2 - t) * 40
|
||||
If currentFrame > rows * cols - 1 Then currentFrame = 0
|
||||
End If
|
||||
t = t2
|
||||
|
||||
'calculat the x and y position of the sprite
|
||||
x = Cos((a / 360) * 2 * 3.141) * 100
|
||||
y = Sin((a / 360) * 2 * 3.141) * 100
|
||||
rSprite2.Top = y + Me.ScaleHeight / 2
|
||||
rSprite2.Left = x + Me.ScaleWidth / 2
|
||||
rSprite2.Right = rSprite2.Left + spriteWidth
|
||||
rSprite2.Bottom = rSprite2.Top + spriteHeight
|
||||
|
||||
'from the current frame select the bitmap we want
|
||||
col = currentFrame Mod cols
|
||||
row = Int(currentFrame / cols)
|
||||
rSprite.Left = col * spriteWidth
|
||||
rSprite.Top = row * spriteHeight
|
||||
rSprite.Right = rSprite.Left + spriteWidth
|
||||
rSprite.Bottom = rSprite.Top + spriteHeight
|
||||
|
||||
|
||||
'blt to the backbuffer our animated sprite
|
||||
ddrval = backbuffer.BltFast(rSprite2.Left, rSprite2.Top, spritesurf, rSprite, DDBLTFAST_SRCCOLORKEY Or DDBLTFAST_WAIT)
|
||||
|
||||
'flip the back buffer to the screen
|
||||
primary.Flip Nothing, DDFLIP_WAIT
|
||||
|
||||
errOut:
|
||||
|
||||
End Sub
|
||||
|
||||
Sub EndIt()
|
||||
Call dd.RestoreDisplayMode
|
||||
Call dd.SetCooperativeLevel(Me.hWnd, DDSCL_NORMAL)
|
||||
End
|
||||
End Sub
|
||||
|
||||
Private Sub Form_Click()
|
||||
EndIt
|
||||
End Sub
|
||||
|
||||
Private Sub Form_Load()
|
||||
Init
|
||||
End Sub
|
||||
|
||||
Private Sub Form_Paint()
|
||||
blt
|
||||
End Sub
|
||||
|
||||
Function ExModeActive() As Boolean
|
||||
Dim TestCoopRes As Long
|
||||
|
||||
TestCoopRes = dd.TestCooperativeLevel
|
||||
|
||||
If (TestCoopRes = DD_OK) Then
|
||||
ExModeActive = True
|
||||
Else
|
||||
ExModeActive = False
|
||||
End If
|
||||
|
||||
End Function
|
||||
Binary file not shown.
@@ -0,0 +1,31 @@
|
||||
Type=Exe
|
||||
Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#stdole2.tlb#OLE Automation
|
||||
Reference=*\G{E1211242-8E94-11D1-8808-00C04FC2C602}#1.0#0#dx7vb.dll#DirectX 7 for Visual Basic Type Library
|
||||
Form=DDtut4.frm
|
||||
Module=MediaDir; ..\..\..\common\media.bas
|
||||
Startup="Form1"
|
||||
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
|
||||
Reference in New Issue
Block a user