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