game_sync/gamesrv/base/waitquene.go

42 lines
810 B
Go

package base
type WaitOpPlayer struct {
pos int
flag int
}
type WaitQuene struct {
quene [8]WaitOpPlayer
cnt int
}
func (wq *WaitQuene) Compress() {
if wq.cnt < 2 {
return
}
var flag int
//for i := 0; i < wq.cnt-1; {
// if wq.quene[i].pos == wq.quene[i+1].pos {
// flag = wq.quene[i].flag | wq.quene[i+1].flag
// copy(wq.quene[i:], wq.quene[i+1:wq.cnt])
// wq.quene[i].flag = flag
// wq.cnt--
// wq.quene[i+1].flag = 0
// } else {
// i++
// }
//}
for i := 0; i < wq.cnt; i++ {
for j := i + 1; j < wq.cnt; j++ {
if wq.quene[i].flag != 0 && wq.quene[i].pos == wq.quene[j].pos && wq.quene[j].flag != 0 {
flag = wq.quene[i].flag | wq.quene[j].flag
copy(wq.quene[i:], wq.quene[j:wq.cnt])
wq.quene[i].flag = flag
wq.cnt--
wq.quene[j].flag = 0
}
}
}
}