69 lines
1.4 KiB
Go
69 lines
1.4 KiB
Go
package types
|
|
|
|
import (
|
|
"time"
|
|
|
|
pb "gitea.boner.be/bdnugget/goonserver/actions"
|
|
rl "github.com/gen2brain/raylib-go/raylib"
|
|
)
|
|
|
|
type Tile struct {
|
|
X, Y int
|
|
Height float32
|
|
Walkable bool
|
|
}
|
|
|
|
type AnimationSet struct {
|
|
Idle []rl.ModelAnimation
|
|
Walk []rl.ModelAnimation
|
|
// Can add more animation types later like:
|
|
// Attack []ModelAnimation
|
|
// Jump []ModelAnimation
|
|
}
|
|
|
|
type ModelAsset struct {
|
|
Model rl.Model
|
|
Texture rl.Texture2D
|
|
Animation []rl.ModelAnimation // Keep this for compatibility
|
|
AnimFrames int32 // Keep this for compatibility
|
|
Animations AnimationSet // New field for organized animations
|
|
YOffset float32 // Additional height offset (added to default 8.0)
|
|
Name string
|
|
}
|
|
|
|
type ChatMessage struct {
|
|
PlayerID int32
|
|
Username string
|
|
Content string
|
|
Time time.Time
|
|
}
|
|
|
|
type FloatingMessage struct {
|
|
Content string
|
|
ExpireTime time.Time
|
|
ScreenPos rl.Vector2 // Store the screen position for 2D rendering
|
|
}
|
|
|
|
type ChatMessageHandler interface {
|
|
HandleServerMessages([]*pb.ChatMessage)
|
|
}
|
|
|
|
type PlayerState struct {
|
|
PlayerId int32
|
|
X int32
|
|
Y int32
|
|
Username string
|
|
}
|
|
|
|
const (
|
|
MapWidth = 50
|
|
MapHeight = 50
|
|
TileSize = 32
|
|
TileHeight = 2.0
|
|
|
|
// RuneScape-style tick rate (600ms)
|
|
ServerTickRate = 600 * time.Millisecond
|
|
ClientTickRate = 50 * time.Millisecond
|
|
MaxTickDesync = 5
|
|
)
|