印度包网
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

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)
}
}
}