Compare commits
5 Commits
c659d3d83b
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| e098d95fb0 | |||
| 151d088004 | |||
| 4ac1cb4a23 | |||
| 185518257f | |||
| 146c1734fa |
22
app/app.go
22
app/app.go
@@ -2,11 +2,11 @@ package app
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.hlsq.asia/mmorpg/service-common/discover/common"
|
"git.hlsq.asia/alex/service-common/discover/common"
|
||||||
"git.hlsq.asia/mmorpg/service-common/log"
|
"git.hlsq.asia/alex/service-common/log"
|
||||||
"git.hlsq.asia/mmorpg/service-common/module"
|
"git.hlsq.asia/alex/service-common/module"
|
||||||
"git.hlsq.asia/mmorpg/service-scene/config"
|
"git.hlsq.asia/alex/service-scene/config"
|
||||||
"git.hlsq.asia/mmorpg/service-scene/internal/grpc_server"
|
"git.hlsq.asia/alex/service-scene/internal/grpcserver"
|
||||||
"github.com/judwhite/go-svc"
|
"github.com/judwhite/go-svc"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
@@ -16,14 +16,12 @@ type Program struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *Program) Init(_ svc.Environment) error {
|
func (p *Program) Init(_ svc.Environment) error {
|
||||||
if err := config.LoadConfig(); err != nil {
|
p.moduleList = append(p.moduleList, &module.Log{Cfg: config.Get().Log})
|
||||||
return err
|
|
||||||
}
|
|
||||||
p.moduleList = append(p.moduleList, &module.Base{Log: config.Get().Log})
|
|
||||||
p.moduleList = append(p.moduleList, &module.DB{Cfg: config.Get().DB, AppName: config.Get().App.Name})
|
p.moduleList = append(p.moduleList, &module.DB{Cfg: config.Get().DB, AppName: config.Get().App.Name})
|
||||||
p.moduleList = append(p.moduleList, &module.Grpc{Server: grpc_server.NewServer(config.Get().Serve.Grpc)})
|
p.moduleList = append(p.moduleList, &module.Snowflake{})
|
||||||
p.moduleList = append(p.moduleList, &module.Prometheus{MetricCfg: config.Get().Metric})
|
p.moduleList = append(p.moduleList, &module.Grpc{Server: grpcserver.NewServer(config.Get().Serve.Grpc)})
|
||||||
p.moduleList = append(p.moduleList, &module.Tracer{MetricCfg: config.Get().Metric, ServiceName: common.KeyDiscoverServiceNameScene})
|
p.moduleList = append(p.moduleList, &module.Prometheus{Cfg: config.Get().Metric})
|
||||||
|
p.moduleList = append(p.moduleList, &module.Tracer{Cfg: config.Get().Metric, ServiceName: common.KeyDiscoverServiceNameScene})
|
||||||
p.moduleList = append(p.moduleList, &module.Discover{})
|
p.moduleList = append(p.moduleList, &module.Discover{})
|
||||||
|
|
||||||
for _, m := range p.moduleList {
|
for _, m := range p.moduleList {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
import "git.hlsq.asia/mmorpg/service-common/config"
|
import "git.hlsq.asia/alex/service-common/config"
|
||||||
|
|
||||||
const path = "./config"
|
const path = "./config"
|
||||||
|
|
||||||
|
|||||||
2
deploy/Jenkinsfile
vendored
2
deploy/Jenkinsfile
vendored
@@ -3,7 +3,7 @@ pipeline {
|
|||||||
|
|
||||||
environment {
|
environment {
|
||||||
// 仓库
|
// 仓库
|
||||||
REPO_URL = 'https://git.hlsq.asia/mmorpg/service-scene.git'
|
REPO_URL = 'https://git.hlsq.asia/alex/service-scene.git'
|
||||||
REPO_CREDENTIALS_ID = '80805ba2-f4ac-4d84-aee6-d4cce5fc0a96'
|
REPO_CREDENTIALS_ID = '80805ba2-f4ac-4d84-aee6-d4cce5fc0a96'
|
||||||
|
|
||||||
// Registry
|
// Registry
|
||||||
|
|||||||
4
go.mod
4
go.mod
@@ -1,9 +1,9 @@
|
|||||||
module git.hlsq.asia/mmorpg/service-scene
|
module git.hlsq.asia/alex/service-scene
|
||||||
|
|
||||||
go 1.24.0
|
go 1.24.0
|
||||||
|
|
||||||
require (
|
require (
|
||||||
git.hlsq.asia/mmorpg/service-common v0.0.0-20260206145147-5a0f4b71d430
|
git.hlsq.asia/alex/service-common master
|
||||||
github.com/judwhite/go-svc v1.2.1
|
github.com/judwhite/go-svc v1.2.1
|
||||||
go.uber.org/zap v1.27.0
|
go.uber.org/zap v1.27.0
|
||||||
google.golang.org/grpc v1.77.0
|
google.golang.org/grpc v1.77.0
|
||||||
|
|||||||
4
go.sum
4
go.sum
@@ -1,7 +1,7 @@
|
|||||||
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
||||||
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
||||||
git.hlsq.asia/mmorpg/service-common v0.0.0-20260206145147-5a0f4b71d430 h1:8aNIgKpU6HBg7h4ENjuGWshap+VxeKUmLE0IvFoWbug=
|
git.hlsq.asia/alex/service-common v0.0.0-20260211064821-558677bc3a2e h1:MNVS1NXNVn4DeTZPcvvA8YFM8afCzZedLPUYMffNgZs=
|
||||||
git.hlsq.asia/mmorpg/service-common v0.0.0-20260206145147-5a0f4b71d430/go.mod h1:mMhZcumphj6gaVTppVYsMTkd+5HupmQgAc53Pd4MH9I=
|
git.hlsq.asia/alex/service-common v0.0.0-20260211064821-558677bc3a2e/go.mod h1:mMhZcumphj6gaVTppVYsMTkd+5HupmQgAc53Pd4MH9I=
|
||||||
github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0=
|
github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0=
|
||||||
github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||||
github.com/IBM/sarama v1.46.3 h1:njRsX6jNlnR+ClJ8XmkO+CM4unbrNr/2vB5KK6UA+IE=
|
github.com/IBM/sarama v1.46.3 h1:njRsX6jNlnR+ClJ8XmkO+CM4unbrNr/2vB5KK6UA+IE=
|
||||||
|
|||||||
@@ -1,45 +1,45 @@
|
|||||||
package grpc_server
|
package grpcserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"git.hlsq.asia/mmorpg/service-common/log"
|
"git.hlsq.asia/alex/service-common/log"
|
||||||
"git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb"
|
"git.hlsq.asia/alex/service-common/proto/rs/rspb"
|
||||||
"git.hlsq.asia/mmorpg/service-common/proto/ss/ss_pb"
|
"git.hlsq.asia/alex/service-common/proto/ss/sspb"
|
||||||
"git.hlsq.asia/mmorpg/service-scene/internal/instance"
|
"git.hlsq.asia/alex/service-scene/internal/instance"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *Server) Enter(ctx context.Context, req *grpc_pb.EnterReq) (*grpc_pb.EnterResp, error) {
|
func (s *Server) Enter(ctx context.Context, req *rspb.EnterReq) (*rspb.EnterResp, error) {
|
||||||
ins, loaded := instance.Mgr.LoadOrStoreByInstanceID(req.InstanceID, instance.NewScene(s.SID, req.InstanceID))
|
ins, loaded := instance.Mgr.LoadOrStoreByInstanceID(req.InstanceID, instance.NewScene(s.SID, req.InstanceID))
|
||||||
if !loaded {
|
if !loaded {
|
||||||
ins.Start(s.Cfg.TTL)
|
ins.Start(s.Cfg.TTL)
|
||||||
}
|
}
|
||||||
ins.EventIn <- req
|
ins.EventIn <- req
|
||||||
|
|
||||||
payload, _ := proto.Marshal(&ss_pb.S2C_EnterInstance{
|
payload, _ := proto.Marshal(&sspb.S2C_EnterInstance{
|
||||||
Info: &ss_pb.PositionInfo{
|
Info: &sspb.PositionInfo{
|
||||||
USN: req.USN,
|
USN: req.USN,
|
||||||
X: 1,
|
X: 1,
|
||||||
Y: 1,
|
Y: 1,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
return &grpc_pb.EnterResp{
|
return &rspb.EnterResp{
|
||||||
SceneSID: s.SID,
|
SceneSID: s.SID,
|
||||||
UniqueNo: ins.UniqueNo,
|
UniqueNo: ins.UniqueNo,
|
||||||
MessageID: int32(ss_pb.MessageID_MESSAGE_ID_ENTER_INSTANCE),
|
MessageID: int32(sspb.MessageID_MESSAGE_ID_ENTER_INSTANCE),
|
||||||
Payload: payload,
|
Payload: payload,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Leave(ctx context.Context, req *grpc_pb.LeaveReq) (*grpc_pb.LeaveResp, error) {
|
func (s *Server) Leave(ctx context.Context, req *rspb.LeaveReq) (*rspb.LeaveResp, error) {
|
||||||
if i := instance.Mgr.GetByUniqueNo(req.UniqueNo); i != nil {
|
if i := instance.Mgr.GetByUniqueNo(req.UniqueNo); i != nil {
|
||||||
i.EventIn <- req
|
i.EventIn <- req
|
||||||
}
|
}
|
||||||
return &grpc_pb.LeaveResp{}, nil
|
return &rspb.LeaveResp{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Action(server grpc_pb.Scene_ActionServer) error {
|
func (s *Server) Action(server rspb.Scene_ActionServer) error {
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func() {
|
go func() {
|
||||||
@@ -64,5 +64,5 @@ func (s *Server) Action(server grpc_pb.Scene_ActionServer) error {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
return server.SendAndClose(&grpc_pb.ActionResp{})
|
return server.SendAndClose(&rspb.ActionResp{})
|
||||||
}
|
}
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
package grpc_server
|
package grpcserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"git.hlsq.asia/mmorpg/service-common/config"
|
"git.hlsq.asia/alex/service-common/config"
|
||||||
"git.hlsq.asia/mmorpg/service-common/discover/common"
|
"git.hlsq.asia/alex/service-common/discover/common"
|
||||||
"git.hlsq.asia/mmorpg/service-common/net/grpc/service"
|
"git.hlsq.asia/alex/service-common/net/grpc/service"
|
||||||
"git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb"
|
"git.hlsq.asia/alex/service-common/proto/rs/rspb"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Server struct {
|
type Server struct {
|
||||||
grpc_pb.UnimplementedSceneServer
|
rspb.UnimplementedSceneServer
|
||||||
service.Base
|
service.Base
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ func (s *Server) OnCustomGrpcServerOption() []grpc.ServerOption {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) OnInit(serve *grpc.Server) {
|
func (s *Server) OnInit(serve *grpc.Server) {
|
||||||
grpc_pb.RegisterSceneServer(serve, s)
|
rspb.RegisterSceneServer(serve, s)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) OnClose() {
|
func (s *Server) OnClose() {
|
||||||
@@ -3,13 +3,13 @@ package instance
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.hlsq.asia/mmorpg/service-common/discover"
|
"git.hlsq.asia/alex/service-common/discover"
|
||||||
"git.hlsq.asia/mmorpg/service-common/log"
|
"git.hlsq.asia/alex/service-common/log"
|
||||||
"git.hlsq.asia/mmorpg/service-common/net/grpc/grpc_client"
|
"git.hlsq.asia/alex/service-common/net/grpc/grpcclient"
|
||||||
"git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb"
|
"git.hlsq.asia/alex/service-common/proto/rs/rspb"
|
||||||
"git.hlsq.asia/mmorpg/service-common/proto/ss/ss_pb"
|
"git.hlsq.asia/alex/service-common/proto/ss/sspb"
|
||||||
"git.hlsq.asia/mmorpg/service-common/utils"
|
"git.hlsq.asia/alex/service-common/utils"
|
||||||
"git.hlsq.asia/mmorpg/service-scene/internal/npc"
|
"git.hlsq.asia/alex/service-scene/internal/npc"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
"runtime/debug"
|
"runtime/debug"
|
||||||
@@ -90,25 +90,25 @@ func (i *Instance) Start(ttl int64) {
|
|||||||
// 网络帧,将玩家的操作储存起来,到逻辑帧再处理玩家操作
|
// 网络帧,将玩家的操作储存起来,到逻辑帧再处理玩家操作
|
||||||
func (i *Instance) onEvent(e proto.Message) {
|
func (i *Instance) onEvent(e proto.Message) {
|
||||||
switch v := e.(type) {
|
switch v := e.(type) {
|
||||||
case *grpc_pb.EnterReq:
|
case *rspb.EnterReq:
|
||||||
i.players[v.USN] = npc.NewPlayerNode(v.GatewaySID, v.USN)
|
i.players[v.USN] = npc.NewPlayerNode(v.GatewaySID, v.USN)
|
||||||
case *grpc_pb.ActionReq:
|
case *rspb.ActionReq:
|
||||||
if node, ok := i.players[v.USN]; ok {
|
if node, ok := i.players[v.USN]; ok {
|
||||||
node.AddAction(v)
|
node.AddAction(v)
|
||||||
}
|
}
|
||||||
case *grpc_pb.LeaveReq:
|
case *rspb.LeaveReq:
|
||||||
delete(i.players, v.USN)
|
delete(i.players, v.USN)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 逻辑帧
|
// 逻辑帧
|
||||||
func (i *Instance) onLogic(delta int64) {
|
func (i *Instance) onLogic(delta int64) {
|
||||||
positionUpdate := make([]*ss_pb.PositionInfo, 0)
|
positionUpdate := make([]*sspb.PositionInfo, 0)
|
||||||
sid := int64(0)
|
sid := int64(0)
|
||||||
// 处理玩家指令
|
// 处理玩家指令
|
||||||
for _, node := range i.players {
|
for _, node := range i.players {
|
||||||
if node.LogicAction(delta) {
|
if node.LogicAction(delta) {
|
||||||
positionUpdate = append(positionUpdate, &ss_pb.PositionInfo{
|
positionUpdate = append(positionUpdate, &sspb.PositionInfo{
|
||||||
USN: node.USN,
|
USN: node.USN,
|
||||||
X: int32(node.Position[0] * 100),
|
X: int32(node.Position[0] * 100),
|
||||||
Y: int32(node.Position[1] * 100),
|
Y: int32(node.Position[1] * 100),
|
||||||
@@ -117,12 +117,12 @@ func (i *Instance) onLogic(delta int64) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(positionUpdate) > 0 {
|
if len(positionUpdate) > 0 {
|
||||||
payload, _ := proto.Marshal(&ss_pb.S2C_Position{
|
payload, _ := proto.Marshal(&sspb.S2C_Position{
|
||||||
Info: positionUpdate,
|
Info: positionUpdate,
|
||||||
})
|
})
|
||||||
if err := grpc_client.SendMessageToGateway(sid, grpc_client.FunToClient, &grpc_pb.ToClientReq{
|
if err := grpcclient.SendMessageToGateway(sid, grpcclient.FunToClient, &rspb.ToClientReq{
|
||||||
USN: -1,
|
USN: -1,
|
||||||
MessageID: int32(ss_pb.MessageID_MESSAGE_ID_POSITION),
|
MessageID: int32(sspb.MessageID_MESSAGE_ID_POSITION),
|
||||||
Payload: payload,
|
Payload: payload,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
i.logger.Errorf("send action err: %v", err)
|
i.logger.Errorf("send action err: %v", err)
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package npc
|
package npc
|
||||||
|
|
||||||
import (
|
import "git.hlsq.asia/alex/service-common/proto/rs/rspb"
|
||||||
"git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb"
|
|
||||||
)
|
|
||||||
|
|
||||||
// NPCNode 定义NPC节点
|
// NPCNode 定义NPC节点
|
||||||
type NPCNode struct {
|
type NPCNode struct {
|
||||||
@@ -11,7 +9,7 @@ type NPCNode struct {
|
|||||||
|
|
||||||
Position [2]float64 // 二维坐标 [x, y]
|
Position [2]float64 // 二维坐标 [x, y]
|
||||||
MoveCross int8 // 移动十字,1 上 2 下 4 左 8 右
|
MoveCross int8 // 移动十字,1 上 2 下 4 左 8 右
|
||||||
Action []*grpc_pb.ActionReq // 其他操作
|
Action []*rspb.ActionReq // 其他操作
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewNPCNode(gatewaySID int64, usn int64) *NPCNode {
|
func NewNPCNode(gatewaySID int64, usn int64) *NPCNode {
|
||||||
@@ -20,6 +18,6 @@ func NewNPCNode(gatewaySID int64, usn int64) *NPCNode {
|
|||||||
GatewaySID: gatewaySID,
|
GatewaySID: gatewaySID,
|
||||||
Position: [2]float64{0, 0},
|
Position: [2]float64{0, 0},
|
||||||
MoveCross: 0,
|
MoveCross: 0,
|
||||||
Action: make([]*grpc_pb.ActionReq, 0),
|
Action: make([]*rspb.ActionReq, 0),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package npc
|
package npc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb"
|
"git.hlsq.asia/alex/service-common/proto/rs/rspb"
|
||||||
"git.hlsq.asia/mmorpg/service-common/proto/ss/ss_pb"
|
"git.hlsq.asia/alex/service-common/proto/ss/sspb"
|
||||||
)
|
)
|
||||||
|
|
||||||
// PlayerNode 定义玩家节点结构体
|
// PlayerNode 定义玩家节点结构体
|
||||||
@@ -14,7 +14,7 @@ type PlayerNode struct {
|
|||||||
Position [2]float32 // 二维坐标 [x, y]
|
Position [2]float32 // 二维坐标 [x, y]
|
||||||
MoveDirection [2]int8 // 移动方向 [x, y]
|
MoveDirection [2]int8 // 移动方向 [x, y]
|
||||||
MoveCount int8 // 移动指令使用计数
|
MoveCount int8 // 移动指令使用计数
|
||||||
Action []*grpc_pb.ActionReq // 其他操作
|
Action []*rspb.ActionReq // 其他操作
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPlayerNode(gatewaySID int64, usn int64) *PlayerNode {
|
func NewPlayerNode(gatewaySID int64, usn int64) *PlayerNode {
|
||||||
@@ -23,12 +23,12 @@ func NewPlayerNode(gatewaySID int64, usn int64) *PlayerNode {
|
|||||||
GatewaySID: gatewaySID,
|
GatewaySID: gatewaySID,
|
||||||
MoveSpeed: 5 * 0.00001,
|
MoveSpeed: 5 * 0.00001,
|
||||||
Position: [2]float32{0, 0},
|
Position: [2]float32{0, 0},
|
||||||
Action: make([]*grpc_pb.ActionReq, 0),
|
Action: make([]*rspb.ActionReq, 0),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddAction 将指令存储到玩家身上
|
// AddAction 将指令存储到玩家身上
|
||||||
func (p *PlayerNode) AddAction(e *grpc_pb.ActionReq) {
|
func (p *PlayerNode) AddAction(e *rspb.ActionReq) {
|
||||||
p.Action = append(p.Action, e)
|
p.Action = append(p.Action, e)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,14 +36,14 @@ func (p *PlayerNode) AddAction(e *grpc_pb.ActionReq) {
|
|||||||
// return 是否更新玩家状态
|
// return 是否更新玩家状态
|
||||||
func (p *PlayerNode) LogicAction(delta int64) bool {
|
func (p *PlayerNode) LogicAction(delta int64) bool {
|
||||||
for _, a := range p.Action {
|
for _, a := range p.Action {
|
||||||
switch ss_pb.ActionID(a.Action) {
|
switch sspb.ActionID(a.Action) {
|
||||||
case ss_pb.ActionID_ACTION_ID_MOVE:
|
case sspb.ActionID_ACTION_ID_MOVE:
|
||||||
p.MoveDirection = [2]int8{int8(a.DirX), int8(a.DirY)}
|
p.MoveDirection = [2]int8{int8(a.DirX), int8(a.DirY)}
|
||||||
p.MoveCount = 0
|
p.MoveCount = 0
|
||||||
case ss_pb.ActionID_ACTION_ID_ATTACK:
|
case sspb.ActionID_ACTION_ID_ATTACK:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
p.Action = make([]*grpc_pb.ActionReq, 0)
|
p.Action = make([]*rspb.ActionReq, 0)
|
||||||
|
|
||||||
return p.move(delta)
|
return p.move(delta)
|
||||||
}
|
}
|
||||||
|
|||||||
6
main.go
6
main.go
@@ -2,12 +2,16 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.hlsq.asia/mmorpg/service-scene/app"
|
"git.hlsq.asia/alex/service-scene/app"
|
||||||
|
"git.hlsq.asia/alex/service-scene/config"
|
||||||
"github.com/judwhite/go-svc"
|
"github.com/judwhite/go-svc"
|
||||||
"syscall"
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
if err := config.LoadConfig(); err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
if err := svc.Run(&app.Program{}, syscall.SIGINT, syscall.SIGTERM, syscall.SIGKILL); err != nil {
|
if err := svc.Run(&app.Program{}, syscall.SIGINT, syscall.SIGTERM, syscall.SIGKILL); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user