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.
111 lines
2.6 KiB
111 lines
2.6 KiB
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) |
|
} |
|
} |
|
}
|
|
|