You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
2.6 KiB
112 lines
2.6 KiB
|
1 year ago
|
package game
|
||
|
|
|
||
|
|
import (
|
||
|
|
"server/call"
|
||
|
|
"server/common"
|
||
|
|
"server/config"
|
||
|
|
"server/natsClient"
|
||
|
|
"server/pb"
|
||
|
|
"strconv"
|
||
|
|
"time"
|
||
|
|
|
||
|
|
"github.com/gogo/protobuf/proto"
|
||
|
|
"github.com/liangdas/mqant/conf"
|
||
|
|
"github.com/liangdas/mqant/log"
|
||
|
|
"github.com/liangdas/mqant/module"
|
||
|
|
basemodule "github.com/liangdas/mqant/module/base"
|
||
|
|
"github.com/liangdas/mqant/server"
|
||
|
|
"github.com/nats-io/nats.go"
|
||
|
|
)
|
||
|
|
|
||
|
|
func InitNats(conn *nats.Conn) {
|
||
|
|
// natsClient.NewReloadNats(conn, reload)
|
||
|
|
call.InitReload(conn)
|
||
|
|
natsClient.NewCommonNatsImp(conn, natsClient.TopicClientDisconnect, func(data []byte) {
|
||
|
|
msg := new(pb.ClientDisConnectNotify)
|
||
|
|
if err := proto.Unmarshal(data, msg); err != nil {
|
||
|
|
log.Error("err:%v", err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
DisConnect(msg)
|
||
|
|
})
|
||
|
|
natsClient.NewCommonNatsImp(conn, natsClient.TopicInnerOptPlayer, func(data []byte) {
|
||
|
|
msg := new(pb.InnerOptPlayer)
|
||
|
|
if err := proto.Unmarshal(data, msg); err != nil {
|
||
|
|
log.Error("err:%v", err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
OptPlayer(msg)
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
func InitModule(b *basemodule.BaseModule, subclass module.RPCModule, app module.App, settings *conf.ModuleSettings) {
|
||
|
|
metadata := make(map[string]string)
|
||
|
|
metadata["workID"] = strconv.Itoa(config.GetConfig().WorkID)
|
||
|
|
metadata["version"] = strconv.Itoa(config.GetConfig().Version)
|
||
|
|
b.OnInit(subclass, app, settings,
|
||
|
|
server.RegisterInterval(5*time.Second),
|
||
|
|
server.RegisterTTL(10*time.Second),
|
||
|
|
server.Metadata(metadata),
|
||
|
|
)
|
||
|
|
}
|
||
|
|
|
||
|
|
func LoadConfigs() {
|
||
|
|
c := map[int][]func(*pb.ReloadGameConfig) error{}
|
||
|
|
c[common.ReloadConfigGameRoom] = []func(rgc *pb.ReloadGameConfig) error{func(rgc *pb.ReloadGameConfig) error {
|
||
|
|
if err := call.LoadConfigGameRooms(); err != nil {
|
||
|
|
log.Error("err:%v", err)
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
if rgc != nil {
|
||
|
|
ReloadRooms(NewTable)
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}}
|
||
|
|
call.LoadConfigs(c)
|
||
|
|
}
|
||
|
|
|
||
|
|
func InitRooms(newTable func() SubTable) {
|
||
|
|
list := call.GetConfigGameRoom(ThisGameID)
|
||
|
|
for _, v := range list {
|
||
|
|
if !v.Open {
|
||
|
|
continue
|
||
|
|
}
|
||
|
|
log.Debug("init room:%+v", *v)
|
||
|
|
r := NewRoom(v)
|
||
|
|
if ThisGameType == GameTypeRoom {
|
||
|
|
continue
|
||
|
|
}
|
||
|
|
table, err := r.CreateById(call.GetCaller().GetApp(), r.GetTableID(), r.NewTable)
|
||
|
|
if err != nil {
|
||
|
|
log.Error("err:%v", err)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
log.Debug("create table:%v", table.TableId())
|
||
|
|
t := table.(*Table)
|
||
|
|
sub := r.NewSubTable()
|
||
|
|
sub.Init(t)
|
||
|
|
t.SubTable = sub
|
||
|
|
t.Init()
|
||
|
|
t.Reset()
|
||
|
|
t.List = r.TableList[0]
|
||
|
|
t.Ele = r.TableList[0].PushBack(t)
|
||
|
|
if MainTable == nil {
|
||
|
|
MainTable = t
|
||
|
|
}
|
||
|
|
table.Run()
|
||
|
|
r.Tables.Store(t.TableIDInt(), t)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func ReloadRooms(newTable func() SubTable) {
|
||
|
|
list := call.GetConfigGameRoom(ThisGameID)
|
||
|
|
for _, v := range list {
|
||
|
|
if r, ok := RoomMap.Load(v.RoomID); ok {
|
||
|
|
room := r.(*GameRoom)
|
||
|
|
room.Reload(v)
|
||
|
|
} else {
|
||
|
|
NewRoom(v)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|