game_sync/machine/action/action_server.go

106 lines
3.0 KiB
Go

package action
import (
"fmt"
"mongo.games.com/game/machine/machinedoll"
"mongo.games.com/game/protocol/machine"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/netlib"
"time"
)
// 移动
func SMDollMachinePerateHandler(session *netlib.Session, packetId int, data interface{}) error {
msg, ok := data.(*machine.SMDollMachineoPerate)
if !ok {
return nil
}
conn := machinedoll.ConnMap[int(msg.Id)]
if conn == nil {
return nil
}
if msg.Perate == 1 {
//向前移动
machinedoll.Backward(conn)
time.Sleep(200 * time.Millisecond)
machinedoll.BackwardStop(conn)
} else if msg.Perate == 2 {
//向后移动
machinedoll.Forward(conn)
time.Sleep(200 * time.Millisecond)
machinedoll.ForwardStop(conn)
} else if msg.Perate == 3 {
//向左移动
machinedoll.Left(conn)
time.Sleep(200 * time.Millisecond)
machinedoll.LeftStop(conn)
} else if msg.Perate == 4 {
//向右移动
machinedoll.Right(conn)
time.Sleep(200 * time.Millisecond)
machinedoll.RightStop(conn)
} else if msg.Perate == 5 {
//投币
machinedoll.Coin(conn)
machinedoll.Backward(conn)
time.Sleep(200 * time.Millisecond)
machinedoll.BackwardStop(conn)
}
return nil
}
// 下抓
func SMDollMachineGrabHandler(session *netlib.Session, packetId int, data interface{}) error {
msg, ok := data.(*machine.SMDollMachineGrab)
if !ok {
return nil
}
conn := machinedoll.ConnMap[int(msg.Id)]
if conn == nil {
return nil
}
typeId := msg.TypeId
if typeId == 1 {
//弱抓
machinedoll.WeakGrab(conn)
} else if typeId == 2 {
//强力抓
machinedoll.Grab(conn)
} else if typeId == 3 {
//必中抓
machinedoll.SetPower(conn)
time.Sleep(200 * time.Millisecond)
machinedoll.Grab(conn)
}
//返回消息
session.Send(int(machine.DollMachinePacketID_PACKET_SMDollMachineGrab), &machine.MSDollMachineGrab{
Snid: msg.Snid,
Id: msg.GetId(),
Result: 1,
})
return nil
}
// 与游戏服务器连接成功,向游戏服务器推送所有娃娃机连接
func SMGameLinkSucceedHandler(session *netlib.Session, packetId int, data interface{}) error {
logger.Logger.Trace("与游戏服务器连接成功!!\n")
fmt.Printf("与游戏服务器连接成功!!\n")
//开始向游戏服务器发送娃娃机连接信息
msg := &machine.MSDollMachineList{}
for i, _ := range machinedoll.ConnMap {
info := &machine.DollMachine{}
info.Id = int32(i)
info.VideoAddr = "www.baidu.com"
msg.Data = append(msg.Data, info)
}
session.Send(int(machine.DollMachinePacketID_PACKET_MSDollMachineList), msg)
fmt.Printf("开始向游戏服务器发送娃娃机连接信息!\n", msg)
return nil
}
func init() {
netlib.Register(int(machine.DollMachinePacketID_PACKET_SMDollMachinePerate), &machine.SMDollMachineoPerate{}, SMDollMachinePerateHandler)
netlib.Register(int(machine.DollMachinePacketID_PACKET_SMDollMachineGrab), &machine.SMDollMachineGrab{}, SMDollMachineGrabHandler)
//链接成功 返回消息
netlib.Register(int(machine.DollMachinePacketID_PACKET_SMGameLinkSucceed), &machine.SMGameLinkSucceed{}, SMGameLinkSucceedHandler)
}