52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
package action
|
|
|
|
import (
|
|
"mongo.games.com/game/protocol/machine"
|
|
"mongo.games.com/goserver/core/logger"
|
|
"mongo.games.com/goserver/core/netlib"
|
|
"sync"
|
|
)
|
|
|
|
var MachineMap = make(map[int]*DollMachine)
|
|
var MachineMapLock = sync.Mutex{}
|
|
|
|
type DollMachine struct {
|
|
Id int
|
|
Status bool
|
|
VideoAddr string
|
|
}
|
|
|
|
func MSDollMachineList(session *netlib.Session, packetId int, data interface{}) error {
|
|
logger.Logger.Tracef("TestHandler %v", data)
|
|
MachineMap = make(map[int]*DollMachine)
|
|
if msg, ok := data.(*machine.MSDollMachineList); ok {
|
|
for i, info := range msg.Data {
|
|
MachineMap[i+1] = &DollMachine{
|
|
Id: i + 1,
|
|
Status: false,
|
|
VideoAddr: info.VideoAddr,
|
|
}
|
|
logger.Logger.Tracef("MachineMap[%v] = %v", i, info.VideoAddr)
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 获取空闲娃娃机标识
|
|
func GetFreeDollMachineId() int {
|
|
// 获取互斥锁
|
|
MachineMapLock.Lock()
|
|
defer MachineMapLock.Unlock()
|
|
for i, v := range MachineMap {
|
|
if v.Status == false {
|
|
v.Status = true
|
|
return i
|
|
}
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func init() {
|
|
netlib.Register(int(machine.DollMachinePacketID_PACKET_MSDollMachineList), &machine.MSDollMachineList{}, MSDollMachineList)
|
|
}
|