63 lines
1.2 KiB
Go
63 lines
1.2 KiB
Go
package ws
|
|
|
|
import (
|
|
"common/log"
|
|
"common/proto/sc/sc_pb"
|
|
"google.golang.org/protobuf/proto"
|
|
"math"
|
|
"math/rand"
|
|
"time"
|
|
)
|
|
|
|
type EnterInstance struct {
|
|
}
|
|
|
|
func (_ *EnterInstance) Handle(data []byte, client *Client) {
|
|
msg := &sc_pb.S2C_EnterInstance{}
|
|
if err := proto.Unmarshal(data, msg); err != nil {
|
|
log.Errorf("handle msg error")
|
|
client.Stop()
|
|
return
|
|
}
|
|
|
|
randDir := func() (float64, float64) {
|
|
randX := float64(rand.Intn(201) - 100)
|
|
randY := float64(rand.Intn(201) - 100)
|
|
|
|
var normalizedX, normalizedY float64
|
|
if length := math.Sqrt(randX*randX + randY*randY); length > 0 {
|
|
normalizedX = randX / length
|
|
normalizedY = randY / length
|
|
}
|
|
|
|
return normalizedX, normalizedY
|
|
}
|
|
|
|
go func() {
|
|
for {
|
|
x, y := randDir()
|
|
_ = client.WriteMessage(sc_pb.MessageID_MESSAGE_ID_ACTION, &sc_pb.C2S_Action{
|
|
Sequence: 0,
|
|
Timestamp: 0,
|
|
Action: sc_pb.ActionID_ACTION_ID_MOVE,
|
|
DirX: int32(x * 100),
|
|
DirY: int32(y * 100),
|
|
SkillID: 0,
|
|
})
|
|
time.Sleep(500 * time.Millisecond)
|
|
}
|
|
}()
|
|
}
|
|
|
|
type Position struct {
|
|
}
|
|
|
|
func (_ *Position) Handle(data []byte, client *Client) {
|
|
msg := &sc_pb.S2C_Position{}
|
|
if err := proto.Unmarshal(data, msg); err != nil {
|
|
log.Errorf("handle msg error")
|
|
client.Stop()
|
|
return
|
|
}
|
|
}
|