pk.Ary and pk.Array using generic now

This commit is contained in:
Tnze
2022-03-20 01:17:25 +08:00
parent 7997a5faea
commit 4c2510565d
15 changed files with 95 additions and 155 deletions

View File

@ -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
View File

@ -0,0 +1 @@
package server

View File

@ -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)
}

View File

@ -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) {

View File

@ -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}
}