package stonehenge import ( "context" "go_dreamfactory/comm" "go_dreamfactory/lego/base" "go_dreamfactory/lego/core" "go_dreamfactory/modules" "go_dreamfactory/pb" cfg "go_dreamfactory/sys/configure/structs" ) const moduleName = "石阵秘境" func NewModule() core.IModule { m := new(Stonehenge) return m } type Stonehenge struct { modules.ModuleBase service base.IRPCXService battle comm.IBattle api_comp *apiComp configure *configureComp modelStonehenge *MStonehenge modelStonehengeBook *ModelStonehengeBook } //模块名 func (this *Stonehenge) GetType() core.M_Modules { return comm.ModuleStone } //模块初始化接口 注册用户创建角色事件 func (this *Stonehenge) Init(service core.IService, module core.IModule, options core.IModuleOptions) (err error) { if err = this.ModuleBase.Init(service, module, options); err != nil { return } this.service = service.(base.IRPCXService) return } func (this *Stonehenge) Start() (err error) { if err = this.ModuleBase.Start(); err != nil { return } var module core.IModule if module, err = this.service.GetModule(comm.ModuleBattle); err != nil { return } this.battle = module.(comm.IBattle) this.service.RegisterFunctionName(string(comm.Rpc_ModuleStoneBossSettlement), this.Rpc_ModuleStoneBossSettlement) return } //装备组件 func (this *Stonehenge) OnInstallComp() { this.ModuleBase.OnInstallComp() this.api_comp = this.RegisterComp(new(apiComp)).(*apiComp) this.modelStonehenge = this.RegisterComp(new(MStonehenge)).(*MStonehenge) this.modelStonehengeBook = this.RegisterComp(new(ModelStonehengeBook)).(*ModelStonehengeBook) this.configure = this.RegisterComp(new(configureComp)).(*configureComp) } // 工会Boos战结算通知 func (this *Stonehenge) Rpc_ModuleStoneBossSettlement(ctx context.Context, args *pb.EmptyReq, reply *pb.EmptyResp) (err error) { this.Debug("Rpc_ModuleStoneBossSettlement 石阵秘境Boos结算通知 !") this.modelStonehenge.reLoadStoneBoos() return } // gm 加事件 func (this *Stonehenge) GmAddStoneEvent(uid string, eventid int32) { if stone, err := this.modelStonehenge.GetStonehengeData(uid); err == nil { if stone.Rooms != nil { stone.Rooms.Eventid[eventid] = false update := make(map[string]interface{}) this.modelStonehenge.AddNewEvent([]int32{eventid}, stone) update["rooms"] = stone.Rooms this.modelStonehenge.ChangeStonehengeData(uid, update) } return } return } func (this *Stonehenge) ReloadStageData() { this.modelStonehenge.reLoadStoneBoos() return } // 红点需求 func (this *Stonehenge) Reddot(session comm.IUserSession, rid map[comm.ReddotType]struct{}) (items map[comm.ReddotType]*pb.ReddotItem) { var ( selfrid []comm.ReddotType = []comm.ReddotType{comm.Reddot38104} confs []*cfg.GameStoneWeekData info *pb.DBStonehenge err error ok bool ) items = make(map[comm.ReddotType]*pb.ReddotItem) for _, v := range selfrid { if _, ok = rid[v]; ok { break } } if !ok { return } if info, err = this.modelStonehenge.GetStonehengeData(session.GetUserId()); err != nil { return } for _, v := range selfrid { if _, ok = rid[v]; ok { switch v { case comm.Reddot38104: if confs, err = this.configure.getGameStoneWeekDatas(); err != nil { return } for _, v := range confs { if _, ok = info.Weeklyreward[v.Id]; !ok { if info.Integral >= v.Point { items[comm.Reddot38104] = &pb.ReddotItem{ Rid: int32(comm.Reddot38104), Activated: true, } } } } break } } } return }