pk.Ary and pk.Array using generic now
This commit is contained in:
@ -45,13 +45,10 @@ func (s *SimpleDim) Info() LevelInfo {
|
||||
|
||||
func (s *SimpleDim) PlayerJoin(p *Player) {
|
||||
for pos, column := range s.columns {
|
||||
column.Lock()
|
||||
packet := pk.Marshal(
|
||||
packetid.ClientboundLevelChunkWithLight,
|
||||
pos, column,
|
||||
)
|
||||
column.Unlock()
|
||||
|
||||
p.WritePacket(Packet758(packet))
|
||||
}
|
||||
}
|
||||
|
1
server/entities.go
Normal file
1
server/entities.go
Normal file
@ -0,0 +1 @@
|
||||
package server
|
@ -191,7 +191,7 @@ func TouchPoint[Vec any, B interface{ WithIn(Vec) bool }](point Vec) func(bound
|
||||
}
|
||||
}
|
||||
|
||||
func TouchBound[Vec any, B interface{ Touch(B) bool }](other B) func(bound B) bool {
|
||||
func TouchBound[B interface{ Touch(B) bool }](other B) func(bound B) bool {
|
||||
return func(bound B) bool {
|
||||
return bound.Touch(other)
|
||||
}
|
||||
|
@ -56,9 +56,9 @@ func TestTree2_Find_vec(t *testing.T) {
|
||||
t.Log(find(TouchPoint[Vec2d, AABBVec2d](Vec2d{1.5, 1.5})))
|
||||
t.Log(find(TouchPoint[Vec2d, AABBVec2d](Vec2d{-1.5, 0})))
|
||||
|
||||
t.Log(find(TouchBound[Vec2d, AABBVec2d](AABBVec2d{Upper: Vec2d{1, 1}, Lower: Vec2d{-1, -1}})))
|
||||
t.Log(find(TouchBound[Vec2d, AABBVec2d](AABBVec2d{Upper: Vec2d{1, 1}, Lower: Vec2d{1.5, 1.5}})))
|
||||
t.Log(find(TouchBound[Vec2d, AABBVec2d](AABBVec2d{Upper: Vec2d{-1.5, 0.5}, Lower: Vec2d{-2.5, -0.5}})))
|
||||
t.Log(find(TouchBound[AABBVec2d](AABBVec2d{Upper: Vec2d{1, 1}, Lower: Vec2d{-1, -1}})))
|
||||
t.Log(find(TouchBound[AABBVec2d](AABBVec2d{Upper: Vec2d{1, 1}, Lower: Vec2d{1.5, 1.5}})))
|
||||
t.Log(find(TouchBound[AABBVec2d](AABBVec2d{Upper: Vec2d{-1.5, 0.5}, Lower: Vec2d{-2.5, -0.5}})))
|
||||
}
|
||||
|
||||
func BenchmarkTree_Insert(b *testing.B) {
|
||||
|
@ -12,18 +12,18 @@ import (
|
||||
)
|
||||
|
||||
type PlayerInfo struct {
|
||||
updateDelay chan playerInfo
|
||||
updateDelay chan playerDelayInfo
|
||||
join chan *Player
|
||||
quit chan *Player
|
||||
ticker *time.Ticker
|
||||
}
|
||||
|
||||
type playerInfo struct {
|
||||
type playerDelayInfo struct {
|
||||
player *Player
|
||||
delay time.Duration
|
||||
}
|
||||
|
||||
func (p *playerInfo) WriteTo(w io.Writer) (n int64, err error) {
|
||||
func (p *playerDelayInfo) WriteTo(w io.Writer) (n int64, err error) {
|
||||
return pk.Tuple{
|
||||
pk.UUID(p.player.UUID),
|
||||
pk.String(p.player.Name),
|
||||
@ -35,7 +35,7 @@ func (p *playerInfo) WriteTo(w io.Writer) (n int64, err error) {
|
||||
}
|
||||
|
||||
type playerInfoList struct {
|
||||
list map[uuid.UUID]playerInfo
|
||||
list map[uuid.UUID]playerDelayInfo
|
||||
}
|
||||
|
||||
func (p *playerInfoList) WriteTo(w io.Writer) (n int64, err error) {
|
||||
@ -54,7 +54,7 @@ func (p *playerInfoList) WriteTo(w io.Writer) (n int64, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
type playerDelayUpdate playerInfo
|
||||
type playerDelayUpdate playerDelayInfo
|
||||
|
||||
func (p playerDelayUpdate) WriteTo(w io.Writer) (n int64, err error) {
|
||||
return pk.Tuple{
|
||||
@ -77,7 +77,7 @@ type PlayerDelaySource interface {
|
||||
|
||||
func NewPlayerInfo(updateFreq time.Duration, delaySource PlayerDelaySource) *PlayerInfo {
|
||||
p := &PlayerInfo{
|
||||
updateDelay: make(chan playerInfo),
|
||||
updateDelay: make(chan playerDelayInfo),
|
||||
join: make(chan *Player),
|
||||
quit: make(chan *Player),
|
||||
ticker: time.NewTicker(updateFreq),
|
||||
@ -91,12 +91,12 @@ func NewPlayerInfo(updateFreq time.Duration, delaySource PlayerDelaySource) *Pla
|
||||
func (p *PlayerInfo) Init(*Game) {}
|
||||
|
||||
func (p *PlayerInfo) Run(ctx context.Context) {
|
||||
players := &playerInfoList{list: make(map[uuid.UUID]playerInfo)}
|
||||
players := &playerInfoList{list: make(map[uuid.UUID]playerDelayInfo)}
|
||||
var delayBuffer []playerDelayUpdate
|
||||
for {
|
||||
select {
|
||||
case player := <-p.join:
|
||||
info := playerInfo{player: player, delay: 0}
|
||||
info := playerDelayInfo{player: player, delay: 0}
|
||||
pack := Packet758(pk.Marshal(
|
||||
packetid.ClientboundPlayerInfo,
|
||||
pk.VarInt(actionAddPlayer),
|
||||
@ -144,5 +144,5 @@ func (p *PlayerInfo) Run(ctx context.Context) {
|
||||
func (p *PlayerInfo) AddPlayer(player *Player) { p.join <- player }
|
||||
func (p *PlayerInfo) RemovePlayer(player *Player) { p.quit <- player }
|
||||
func (p *PlayerInfo) onPlayerDelayUpdate(player *Player, delay time.Duration) {
|
||||
p.updateDelay <- playerInfo{player: player, delay: delay}
|
||||
p.updateDelay <- playerDelayInfo{player: player, delay: delay}
|
||||
}
|
||||
|
Reference in New Issue
Block a user