package types import ( "sync" "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 Player struct { sync.Mutex PosActual rl.Vector3 PosTile Tile TargetPath []Tile ActionQueue []*pb.Action Speed float32 Model rl.Model Texture rl.Texture2D ID int32 CurrentTick int64 LastUpdateTime time.Time InterpolationProgress float32 UserData interface{} FloatingMessage *FloatingMessage QuitDone chan struct{} } type ModelAsset struct { Model rl.Model Texture rl.Texture2D } type ChatMessage struct { PlayerID int32 Content string Time time.Time } type FloatingMessage struct { Content string ExpireTime time.Time ScreenPos rl.Vector2 // Store the screen position for 2D rendering } 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 )