Merge branch 'meixiongfeng' of http://git.legu.cc/liwei_3d/go_dreamfactory into dev
This commit is contained in:
commit
a60a40d760
21
bin/json/game_seasonloop.json
Normal file
21
bin/json/game_seasonloop.json
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"key": 2,
|
||||||
|
"disposable_loop": [
|
||||||
|
201,
|
||||||
|
203,
|
||||||
|
202,
|
||||||
|
204,
|
||||||
|
203,
|
||||||
|
202,
|
||||||
|
201,
|
||||||
|
204
|
||||||
|
],
|
||||||
|
"fixed_loop": [
|
||||||
|
201,
|
||||||
|
202,
|
||||||
|
203,
|
||||||
|
204
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
@ -2,12 +2,11 @@ package hero
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"go_dreamfactory/lego/core"
|
"go_dreamfactory/lego/core"
|
||||||
"go_dreamfactory/lego/core/cbase"
|
|
||||||
"go_dreamfactory/modules"
|
"go_dreamfactory/modules"
|
||||||
)
|
)
|
||||||
|
|
||||||
type apiComp struct {
|
type apiComp struct {
|
||||||
cbase.ModuleCompBase
|
//cbase.ModuleCompBase
|
||||||
modules.MCompGate
|
modules.MCompGate
|
||||||
service core.IService
|
service core.IService
|
||||||
module *Hero
|
module *Hero
|
||||||
|
@ -72,11 +72,11 @@ func (this *apiComp) Fusion(session comm.IUserSession, req *pb.HeroFusionReq) (c
|
|||||||
}
|
}
|
||||||
// 获得新卡
|
// 获得新卡
|
||||||
newHero, err := this.module.modelHero.createHeroOverlying(session.GetUserId(), conf.Hero, 1)
|
newHero, err := this.module.modelHero.createHeroOverlying(session.GetUserId(), conf.Hero, 1)
|
||||||
if err != nil {
|
if err == nil {
|
||||||
|
session.SendMsg(string(this.module.GetType()), HeroFusionResp, &pb.HeroFusionResp{Heroid: conf.Hero})
|
||||||
ChangeList = append(ChangeList, newHero)
|
ChangeList = append(ChangeList, newHero)
|
||||||
}
|
}
|
||||||
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: ChangeList})
|
session.SendMsg(string(this.module.GetType()), "change", &pb.HeroChangePush{List: ChangeList})
|
||||||
|
|
||||||
session.SendMsg(string(this.module.GetType()), HeroFusionResp, &pb.HeroFusionResp{Heroid: conf.Hero})
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import (
|
|||||||
"go_dreamfactory/lego/sys/cron"
|
"go_dreamfactory/lego/sys/cron"
|
||||||
"go_dreamfactory/lego/sys/log"
|
"go_dreamfactory/lego/sys/log"
|
||||||
|
|
||||||
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
"google.golang.org/protobuf/types/known/anypb"
|
"google.golang.org/protobuf/types/known/anypb"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -77,6 +78,7 @@ func (this *ChatComp) Start() (err error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
this.module.chat.module.rank.DB.Find("heor", bson.M{})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,22 +10,21 @@ import (
|
|||||||
/*
|
/*
|
||||||
装备模块 API
|
装备模块 API
|
||||||
*/
|
*/
|
||||||
type forumComp struct {
|
type ForumComp struct {
|
||||||
modules.MCompModel
|
modules.MCompModel
|
||||||
service core.IService
|
service core.IService
|
||||||
}
|
}
|
||||||
|
|
||||||
//组件初始化接口
|
func (this *ForumComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
|
||||||
func (this *forumComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
|
|
||||||
|
|
||||||
this.TableName = comm.TablePagodaRecord
|
this.TableName = comm.TableHuntingRankList
|
||||||
this.MCompModel.Init(service, module, comp, options)
|
this.MCompModel.Init(service, module, comp, options)
|
||||||
this.service = service
|
this.service = service
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *forumComp) Start() (err error) {
|
func (this *ForumComp) Start() (err error) {
|
||||||
err = this.MCompModel.Start()
|
err = this.MCompModel.Start()
|
||||||
//cron.AddFunc("*/5 * * * * ?", this.Timer) //每五秒执行一次
|
//cron.AddFunc("*/60 * * * * ?", this.Timer) //每60s执行一次
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,8 @@ type Timer struct {
|
|||||||
rank2 *VikingRank
|
rank2 *VikingRank
|
||||||
rank3 *HuntingRank
|
rank3 *HuntingRank
|
||||||
chat *ChatComp //俩天系统定时任务
|
chat *ChatComp //俩天系统定时任务
|
||||||
|
season *SeasonPagoda
|
||||||
|
forum *ForumComp
|
||||||
}
|
}
|
||||||
|
|
||||||
//模块名
|
//模块名
|
||||||
@ -59,6 +61,8 @@ func (this *Timer) OnInstallComp() {
|
|||||||
this.rank2 = this.RegisterComp(new(VikingRank)).(*VikingRank)
|
this.rank2 = this.RegisterComp(new(VikingRank)).(*VikingRank)
|
||||||
this.rank3 = this.RegisterComp(new(HuntingRank)).(*HuntingRank)
|
this.rank3 = this.RegisterComp(new(HuntingRank)).(*HuntingRank)
|
||||||
this.chat = this.RegisterComp(new(ChatComp)).(*ChatComp)
|
this.chat = this.RegisterComp(new(ChatComp)).(*ChatComp)
|
||||||
|
this.season = this.RegisterComp(new(SeasonPagoda)).(*SeasonPagoda)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//日志
|
//日志
|
||||||
|
@ -1,23 +1,38 @@
|
|||||||
package timer
|
package timer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
"go_dreamfactory/comm"
|
"go_dreamfactory/comm"
|
||||||
"go_dreamfactory/modules"
|
"go_dreamfactory/modules"
|
||||||
|
"go_dreamfactory/pb"
|
||||||
|
"go_dreamfactory/sys/configure"
|
||||||
|
cfg "go_dreamfactory/sys/configure/structs"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"go_dreamfactory/lego/core"
|
"go_dreamfactory/lego/core"
|
||||||
|
"go_dreamfactory/lego/core/cbase"
|
||||||
"go_dreamfactory/lego/sys/cron"
|
"go_dreamfactory/lego/sys/cron"
|
||||||
|
"go_dreamfactory/lego/sys/log"
|
||||||
|
|
||||||
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
game_seasonloop = "game_seasonloop.json"
|
||||||
)
|
)
|
||||||
|
|
||||||
type SeasonPagoda struct {
|
type SeasonPagoda struct {
|
||||||
|
cbase.ModuleCompBase
|
||||||
|
modules.MCompConfigure
|
||||||
modules.MCompModel
|
modules.MCompModel
|
||||||
service core.IService
|
service core.IService
|
||||||
dbName string
|
|
||||||
module *Timer
|
module *Timer
|
||||||
}
|
}
|
||||||
|
|
||||||
//组件初始化接口
|
//组件初始化接口
|
||||||
func (this *SeasonPagoda) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
|
func (this *SeasonPagoda) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
|
||||||
|
this.MCompConfigure.Init(service, module, comp, options)
|
||||||
this.TableName = comm.TableSeasonPagoda
|
this.TableName = comm.TableSeasonPagoda
|
||||||
this.MCompModel.Init(service, module, comp, options)
|
this.MCompModel.Init(service, module, comp, options)
|
||||||
this.service = service
|
this.service = service
|
||||||
@ -27,14 +42,66 @@ func (this *SeasonPagoda) Init(service core.IService, module core.IModule, comp
|
|||||||
|
|
||||||
func (this *SeasonPagoda) Start() (err error) {
|
func (this *SeasonPagoda) Start() (err error) {
|
||||||
err = this.MCompModel.Start()
|
err = this.MCompModel.Start()
|
||||||
|
err = this.MCompConfigure.Start()
|
||||||
|
configure.RegisterConfigure(game_seasonloop, cfg.NewGameSeasonLoop, nil)
|
||||||
cron.AddFunc("0 0 23 L * ?", this.TimerSeasonOver) //每月最后一天23点执行一次
|
cron.AddFunc("0 0 23 L * ?", this.TimerSeasonOver) //每月最后一天23点执行一次
|
||||||
cron.AddFunc("0 0 5 /* * ?", this.TimerSeasonStar) //每月第一天5点执行一次
|
cron.AddFunc("0 0 5 /* * ?", this.TimerSeasonStar) //每月第一天5点执行一次
|
||||||
|
|
||||||
|
// _data := this.GetSeasonLoop(2)
|
||||||
|
// this.module.Debugf("%v", _data)
|
||||||
|
|
||||||
|
// this.TimerSeasonOver()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
func (this *SeasonPagoda) GetSeasonLoop(id int32) *cfg.GameSeasonLoopData {
|
||||||
|
|
||||||
|
if v, err := this.GetConfigure(game_seasonloop); err != nil {
|
||||||
|
log.Errorf("get global conf err:%v", err)
|
||||||
|
return nil
|
||||||
|
} else {
|
||||||
|
if configure, ok := v.(*cfg.GameSeasonLoop); ok {
|
||||||
|
return configure.Get(id)
|
||||||
|
}
|
||||||
|
log.Errorf("%T no is *cfg.Game_global", v)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// // 赛季塔结束
|
// // 赛季塔结束
|
||||||
func (this *SeasonPagoda) TimerSeasonOver() {
|
func (this *SeasonPagoda) TimerSeasonOver() {
|
||||||
this.module.Debugf("TimerSeasonOver:%d", time.Now().Unix())
|
this.module.Debugf("TimerSeasonOver:%d", time.Now().Unix())
|
||||||
|
// 修改
|
||||||
|
conf := this.GetSeasonLoop(2)
|
||||||
|
rest, err := this.DB.Find(comm.TableServerData, bson.M{})
|
||||||
|
if err != nil {
|
||||||
|
serverData := &pb.DBServerData{}
|
||||||
|
for rest.Next(context.TODO()) {
|
||||||
|
rest.Decode(serverData)
|
||||||
|
if serverData.FixedLoop == 0 {
|
||||||
|
if len(conf.DisposableLoop) >= int(serverData.DisposableLoop) && len(conf.FixedLoop) > 0 { // 开始执行循环逻辑
|
||||||
|
serverData.FixedLoop = 1
|
||||||
|
serverData.DisposableLoop = 0
|
||||||
|
serverData.SeasonType = conf.FixedLoop[int(serverData.FixedLoop)-1]
|
||||||
|
} else {
|
||||||
|
serverData.DisposableLoop++
|
||||||
|
serverData.SeasonType = conf.DisposableLoop[int(serverData.DisposableLoop)-1]
|
||||||
|
}
|
||||||
|
|
||||||
|
} else { // 循环
|
||||||
|
if len(conf.FixedLoop) >= int(serverData.FixedLoop) {
|
||||||
|
serverData.FixedLoop = 1
|
||||||
|
} else {
|
||||||
|
serverData.FixedLoop++
|
||||||
|
}
|
||||||
|
serverData.SeasonType = conf.FixedLoop[int(serverData.FixedLoop)-1]
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("%v", serverData)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
this.DB.UpdateOne(comm.TableServerData, bson.M{}, serverData)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 赛季塔开始
|
// 赛季塔开始
|
||||||
|
@ -120,6 +120,14 @@ func (this *Service) InitSys() {
|
|||||||
conn, err := db.Local()
|
conn, err := db.Local()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
model := db.NewDBModel(comm.TableServerData, 0, conn)
|
model := db.NewDBModel(comm.TableServerData, 0, conn)
|
||||||
|
// rest, err1 := model.DB.Find(comm.TableServerData, bson.M{})
|
||||||
|
// server1 := &pb.DBServerData{}
|
||||||
|
// for rest.Next(context.TODO()) {
|
||||||
|
// rest.Decode(server1)
|
||||||
|
// fmt.Printf("%v", server1)
|
||||||
|
// break
|
||||||
|
// }
|
||||||
|
|
||||||
_len, err1 := model.DB.CountDocuments(comm.TableServerData, bson.M{})
|
_len, err1 := model.DB.CountDocuments(comm.TableServerData, bson.M{})
|
||||||
if err1 != nil && _len > 0 {
|
if err1 != nil && _len > 0 {
|
||||||
fmt.Printf("%v,%v", _len, err1)
|
fmt.Printf("%v,%v", _len, err1)
|
||||||
|
42
sys/configure/structs/Game.SeasonLoop.go
Normal file
42
sys/configure/structs/Game.SeasonLoop.go
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
package cfg
|
||||||
|
|
||||||
|
type GameSeasonLoop struct {
|
||||||
|
_dataMap map[int32]*GameSeasonLoopData
|
||||||
|
_dataList []*GameSeasonLoopData
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewGameSeasonLoop(_buf []map[string]interface{}) (*GameSeasonLoop, error) {
|
||||||
|
_dataList := make([]*GameSeasonLoopData, 0, len(_buf))
|
||||||
|
dataMap := make(map[int32]*GameSeasonLoopData)
|
||||||
|
for _, _ele_ := range _buf {
|
||||||
|
if _v, err2 := DeserializeGameSeasonLoopData(_ele_); err2 != nil {
|
||||||
|
return nil, err2
|
||||||
|
} else {
|
||||||
|
_dataList = append(_dataList, _v)
|
||||||
|
dataMap[_v.Key] = _v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return &GameSeasonLoop{_dataList:_dataList, _dataMap:dataMap}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (table *GameSeasonLoop) GetDataMap() map[int32]*GameSeasonLoopData {
|
||||||
|
return table._dataMap
|
||||||
|
}
|
||||||
|
|
||||||
|
func (table *GameSeasonLoop) GetDataList() []*GameSeasonLoopData {
|
||||||
|
return table._dataList
|
||||||
|
}
|
||||||
|
|
||||||
|
func (table *GameSeasonLoop) Get(key int32) *GameSeasonLoopData {
|
||||||
|
return table._dataMap[key]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
65
sys/configure/structs/Game.SeasonLoopData.go
Normal file
65
sys/configure/structs/Game.SeasonLoopData.go
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
package cfg
|
||||||
|
|
||||||
|
import "errors"
|
||||||
|
|
||||||
|
type GameSeasonLoopData struct {
|
||||||
|
Key int32
|
||||||
|
DisposableLoop []int32
|
||||||
|
FixedLoop []int32
|
||||||
|
}
|
||||||
|
|
||||||
|
const TypeId_GameSeasonLoopData = 1327247853
|
||||||
|
|
||||||
|
func (*GameSeasonLoopData) GetTypeId() int32 {
|
||||||
|
return 1327247853
|
||||||
|
}
|
||||||
|
|
||||||
|
func (_v *GameSeasonLoopData)Deserialize(_buf map[string]interface{}) (err error) {
|
||||||
|
{ var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["key"].(float64); !_ok_ { err = errors.New("key error"); return }; _v.Key = int32(_tempNum_) }
|
||||||
|
{
|
||||||
|
var _arr_ []interface{}
|
||||||
|
var _ok_ bool
|
||||||
|
if _arr_, _ok_ = _buf["disposable_loop"].([]interface{}); !_ok_ { err = errors.New("disposable_loop error"); return }
|
||||||
|
|
||||||
|
_v.DisposableLoop = make([]int32, 0, len(_arr_))
|
||||||
|
|
||||||
|
for _, _e_ := range _arr_ {
|
||||||
|
var _list_v_ int32
|
||||||
|
{ var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
|
||||||
|
_v.DisposableLoop = append(_v.DisposableLoop, _list_v_)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
var _arr_ []interface{}
|
||||||
|
var _ok_ bool
|
||||||
|
if _arr_, _ok_ = _buf["fixed_loop"].([]interface{}); !_ok_ { err = errors.New("fixed_loop error"); return }
|
||||||
|
|
||||||
|
_v.FixedLoop = make([]int32, 0, len(_arr_))
|
||||||
|
|
||||||
|
for _, _e_ := range _arr_ {
|
||||||
|
var _list_v_ int32
|
||||||
|
{ var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) }
|
||||||
|
_v.FixedLoop = append(_v.FixedLoop, _list_v_)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func DeserializeGameSeasonLoopData(_buf map[string]interface{}) (*GameSeasonLoopData, error) {
|
||||||
|
v := &GameSeasonLoopData{}
|
||||||
|
if err := v.Deserialize(_buf); err == nil {
|
||||||
|
return v, nil
|
||||||
|
} else {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
@ -63,6 +63,7 @@ type Tables struct {
|
|||||||
Opencond *GameOpencond
|
Opencond *GameOpencond
|
||||||
Stroy *GameStroy
|
Stroy *GameStroy
|
||||||
Pagoda *GamePagoda
|
Pagoda *GamePagoda
|
||||||
|
SeasonLoop *GameSeasonLoop
|
||||||
PagodaTaskReward *GamePagodaTaskReward
|
PagodaTaskReward *GamePagodaTaskReward
|
||||||
PagodaSeasonReward *GamePagodaSeasonReward
|
PagodaSeasonReward *GamePagodaSeasonReward
|
||||||
Rdtask *GameRdtask
|
Rdtask *GameRdtask
|
||||||
@ -430,6 +431,12 @@ func NewTables(loader JsonLoader) (*Tables, error) {
|
|||||||
if tables.Pagoda, err = NewGamePagoda(buf) ; err != nil {
|
if tables.Pagoda, err = NewGamePagoda(buf) ; err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if buf, err = loader("game_seasonloop") ; err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if tables.SeasonLoop, err = NewGameSeasonLoop(buf) ; err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
if buf, err = loader("game_pagodataskreward") ; err != nil {
|
if buf, err = loader("game_pagodataskreward") ; err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user