package ui import ( "errors" "fmt" "go_dreamfactory/cmd/v2/model" "go_dreamfactory/cmd/v2/service" "go_dreamfactory/cmd/v2/service/observer" formview "go_dreamfactory/cmd/v2/ui/views" "go_dreamfactory/comm" "go_dreamfactory/lego/core" "go_dreamfactory/modules/friend" "go_dreamfactory/modules/growtask" "go_dreamfactory/modules/hero" "go_dreamfactory/modules/library" "go_dreamfactory/modules/linestory" "go_dreamfactory/modules/mainline" "go_dreamfactory/modules/rtask" "go_dreamfactory/modules/sociaty" "go_dreamfactory/modules/sys" "go_dreamfactory/modules/task" "go_dreamfactory/modules/user" "go_dreamfactory/modules/worldtask" "go_dreamfactory/pb" "strings" "fyne.io/fyne/v2" "fyne.io/fyne/v2/widget" "github.com/sirupsen/logrus" "github.com/spf13/cast" "google.golang.org/protobuf/proto" ) type MyCaseView interface { Init(service service.PttService, obs observer.Observer, w fyne.Window, res *widget.Entry) CreateView(t *model.TestCase) fyne.CanvasObject Load() } // 1 注册接口测试的表单试图 var ( viewRegister = map[string]MyCaseView{ // gm ff(comm.ModuleGM, "cmd"): &formview.BingoView{}, // reddot ff(comm.ModuleReddot, "get"): &formview.ReddotView{}, //sys ff(comm.ModuleSys, "funclist"): &formview.SysFuncListView{}, //user ff(comm.ModuleUser, user.UserSubTypeModifyAvatar): &formview.UserModifyavatarView{}, ff(comm.ModuleUser, user.UserSubTypeModifyName): &formview.UserModifynameView{}, ff(comm.ModuleUser, user.UserSubTypeModifyFigure): &formview.UserModifyfigureView{}, ff(comm.ModuleUser, user.UserSubTYpeModifyBgp): &formview.UserModifybgpView{}, ff(comm.ModuleUser, user.UserSubTypeModifySign): &formview.UserSignView{}, ff(comm.ModuleUser, user.UserSubTypeBattlerecord): &formview.UserBattlerecordView{}, // items ff(comm.ModuleItems, "getlist"): &formview.ItemListView{}, ff(comm.ModuleItems, "sellitem"): &formview.ItemsSellView{}, ff(comm.ModuleItems, "useitem"): &formview.ItemsUseView{}, //mail ff(comm.ModuleMail, "getlist"): &formview.MailListView{}, ff(comm.ModuleMail, "readmail"): &formview.MailReadMailView{}, ff(comm.ModuleMail, "delmail"): &formview.MailDelView{}, ff(comm.ModuleMail, "getusermailattachment"): &formview.MailAttachmentView{}, ff(comm.ModuleMail, "getallmailattachment"): &formview.MailAttachmentAllView{}, //task ff(comm.ModuleTask, task.TaskSubTypeList): &formview.TaskListView{}, ff(comm.ModuleTask, task.TaskSubTypeActiveList): &formview.TaskActiveListView{}, ff(comm.ModuleTask, task.TaskSubTypeActiveReceive): &formview.TaskActiveReceiveView{}, // hero ff(comm.ModuleHero, hero.HeroSubTypeList): &formview.HeroListView{}, ff(comm.ModuleHero, hero.StrengthenUplv): &formview.HeroStrengthenUplvView{}, ff(comm.ModuleHero, hero.StrengthenUpStar): &formview.HeroStrengthenUpStarView{}, ff(comm.ModuleHero, hero.DrawCard): &formview.HeroZhaomuView{}, ff(comm.ModuleHero, "info"): &formview.HeroInfoView{}, //equip ff(comm.ModuleEquipment, "getlist"): &formview.EquipListView{}, ff(comm.ModuleEquipment, "equip"): &formview.EquipUpDownView{}, ff(comm.ModuleEquipment, "upgrade"): &formview.EquipUpgradeView{}, //friend ff(comm.ModuleFriend, friend.FriendSubTypeList): &formview.FriendListView{}, // ff(comm.ModuleFriend, friend.FriendSubTypeApply): &formview.FriendApplyView{}, ff(comm.ModuleFriend, friend.FriendSubTypeAgree): &formview.FriendAgreeView{}, ff(comm.ModuleFriend, friend.FriendSubTypeBlacklist): &formview.FriendBlacklistView{}, ff(comm.ModuleFriend, friend.FriendSubTypeAddBlack): &formview.FriendAddBlackView{}, ff(comm.ModuleFriend, friend.FriendSubTypeDelBlack): &formview.FriendDelblackView{}, ff(comm.ModuleFriend, friend.FriendSubTypeSearch): &formview.FriendSearchView{}, // ff(comm.ModuleFriend, friend.FriendSubTypeZanList): &formview.FriendZanView{}, ff(comm.ModuleFriend, friend.FriendSubTypeRandList): &formview.FriendRandListView{}, ff(comm.ModuleFriend, friend.FriendSubTypeGetreward): &formview.FriendGetrewardView{}, ff(comm.ModuleFriend, friend.FriendSubTypeAssistlist): &formview.FriendAssistListView{}, ff(comm.ModuleFriend, friend.FriendSubTypeAssistHero): &formview.FriendAssistHeroView{}, ff(comm.ModuleFriend, friend.FriendSubTypeAssistHeroList): &formview.FriendAssistHeroListView{}, // shop ff(comm.ModuleShop, "getlist"): &formview.ShopListView{}, ff(comm.ModuleShop, "buy"): &formview.ShopBuyView{}, // mailine ff(comm.ModuleMainline, mainline.MainlineGetListResp): &formview.MainlineListView{}, ff(comm.ModuleMainline, mainline.MainlineChallengeResp): &formview.MainlineChallengeView{}, ff(comm.ModuleMainline, mainline.MainlineGetRewardResp): &formview.MainlineRewardView{}, // pagoda ff(comm.ModulePagoda, "getlist"): &formview.PagodaListView{}, // rtask ff(comm.ModuleRtask, rtask.RtaskSubTypeList): &formview.RtaskListView{}, ff(comm.ModuleRtask, rtask.RtaskSubTypeApply): &formview.RtaskDoitView{}, ff(comm.ModuleRtask, rtask.RtaskSubTypeChoose): &formview.RtaskChooseView{}, ff(comm.ModuleRtask, rtask.RtaskSubTypeReward): &formview.RtaskRewardView{}, ff(comm.ModuleRtask, "rtest"): &formview.RtaskTestView{}, ff(comm.ModuleRtask, rtask.RtaskSubTypeBattleStart): &formview.RtaskBattlestartView{}, ff(comm.ModuleRtask, rtask.RtaskSubTypeBattleFinish): &formview.RtaskBattleFinishView{}, ff(comm.ModuleRtask, rtask.RtaskSubTypeGetrecord): &formview.RtaskRecordView{}, // linestory ff(comm.ModuleLinestory, linestory.LinestorySubTypeChapter): &formview.LinestoryMineView{}, ff(comm.ModuleLibrary, library.LibraryFetterstoryTaskResp): &formview.FetterstoryView{}, // gourmet ff(comm.ModuleGourmet, "getranduser"): &formview.GourmentGetRandView{}, // sociaty ff(comm.ModuleSociaty, sociaty.SociatySubTypeList): &formview.SociatyListView{}, ff(comm.ModuleSociaty, sociaty.SociatySubTypeCreate): &formview.SociatyCreateView{}, ff(comm.ModuleSociaty, sociaty.SociatySubTypeMine): &formview.SociatyMineView{}, ff(comm.ModuleSociaty, sociaty.SociatySubTypeTasklist): &formview.SociatyTasklistView{}, ff(comm.ModuleSociaty, sociaty.SociatySubTypeRank): &formview.SociatyRankView{}, // troll ff(comm.ModuleTroll, "getlist"): &formview.TrollGetlistView{}, // growtask ff(comm.ModuleGrowtask, growtask.GrowtaskSubTypeList): &formview.GrowtaskListView{}, //worldtask ff(comm.ModuleWorldtask, worldtask.WorldtaskSubtypeMine): &formview.WorldtaskMineView{}, } ) // 2 添加导航菜单 var ( CaseIndex = map[string][]string{ "": { string(comm.ModuleGM), string(comm.ModuleSys), string(comm.ModuleUser), string(comm.ModuleHero), string(comm.ModuleTask), string(comm.ModuleFriend), string(comm.ModuleMail), string(comm.ModuleItems), string(comm.ModuleEquipment), string(comm.ModuleShop), string(comm.ModuleMainline), string(comm.ModulePagoda), string(comm.ModuleRtask), string(comm.ModuleLinestory), string(comm.ModuleGourmet), string(comm.ModuleSociaty), string(comm.ModuleTroll), string(comm.ModuleGrowtask), string(comm.ModuleWorldtask), string(comm.ModuleReddot), }, "gm": {ff(comm.ModuleGM, "cmd")}, "sys": { ff(comm.ModuleSys, "funclist"), }, "reddot": {ff(comm.ModuleReddot, "get")}, "user": { ff(comm.ModuleUser, user.UserSubTypeModifyAvatar), ff(comm.ModuleUser, user.UserSubTypeModifyName), ff(comm.ModuleUser, user.UserSubTypeModifyFigure), ff(comm.ModuleUser, user.UserSubTYpeModifyBgp), ff(comm.ModuleUser, user.UserSubTypeModifySign), ff(comm.ModuleUser, user.UserSubTypeBattlerecord), }, "items": { ff(comm.ModuleItems, "getlist"), ff(comm.ModuleItems, "sellitem"), ff(comm.ModuleItems, "useitem"), }, "mail": { ff(comm.ModuleMail, "getlist"), ff(comm.ModuleMail, "readmail"), ff(comm.ModuleMail, "delmail"), ff(comm.ModuleMail, "getusermailattachment"), ff(comm.ModuleMail, "getallmailattachment"), }, "hero": { ff(comm.ModuleHero, hero.HeroSubTypeList), ff(comm.ModuleHero, hero.StrengthenUplv), ff(comm.ModuleHero, hero.StrengthenUpStar), ff(comm.ModuleHero, hero.DrawCard), ff(comm.ModuleHero, "info"), }, "equipment": { ff(comm.ModuleEquipment, "getlist"), ff(comm.ModuleEquipment, "equip"), ff(comm.ModuleEquipment, "upgrade"), }, "task": { ff(comm.ModuleTask, task.TaskSubTypeList), ff(comm.ModuleTask, task.TaskSubTypeActiveList), ff(comm.ModuleTask, task.TaskSubTypeActiveReceive), }, "friend": { ff(comm.ModuleFriend, friend.FriendSubTypeList), // ff(comm.ModuleFriend, friend.FriendSubTypeApply), ff(comm.ModuleFriend, friend.FriendSubTypeAgree), ff(comm.ModuleFriend, friend.FriendSubTypeBlacklist), ff(comm.ModuleFriend, friend.FriendSubTypeAddBlack), ff(comm.ModuleFriend, friend.FriendSubTypeDelBlack), // ff(comm.ModuleFriend, friend.FriendSubTypeSearch), // ff(comm.ModuleFriend, friend.FriendSubTypeZanList), ff(comm.ModuleFriend, friend.FriendSubTypeRandList), ff(comm.ModuleFriend, friend.FriendSubTypeGetreward), ff(comm.ModuleFriend, friend.FriendSubTypeAssistHero), ff(comm.ModuleFriend, friend.FriendSubTypeAssistlist), ff(comm.ModuleFriend, friend.FriendSubTypeAssistHeroList), }, "shop": { ff(comm.ModuleShop, "getlist"), ff(comm.ModuleShop, "buy"), }, "mainline": { ff(comm.ModuleMainline, mainline.MainlineGetListResp), ff(comm.ModuleMainline, mainline.MainlineChallengeResp), ff(comm.ModuleMainline, mainline.MainlineGetRewardResp), }, "pagoda": { ff(comm.ModulePagoda, "getlist"), }, "rtask": { ff(comm.ModuleRtask, rtask.RtaskSubTypeList), ff(comm.ModuleRtask, rtask.RtaskSubTypeApply), ff(comm.ModuleRtask, rtask.RtaskSubTypeChoose), ff(comm.ModuleRtask, rtask.RtaskSubTypeReward), ff(comm.ModuleRtask, rtask.RtaskSubTypeBattleStart), ff(comm.ModuleRtask, rtask.RtaskSubTypeBattleFinish), ff(comm.ModuleRtask, rtask.RtaskSubTypeGetrecord), ff(comm.ModuleRtask, "rtest"), }, "linestory": { ff(comm.ModuleLinestory, linestory.LinestorySubTypeChapter), ff(comm.ModuleLibrary, library.LibraryFetterstoryTaskResp), }, "gourmet": { ff(comm.ModuleGourmet, "getranduser"), }, "sociaty": { ff(comm.ModuleSociaty, sociaty.SociatySubTypeList), ff(comm.ModuleSociaty, sociaty.SociatySubTypeCreate), ff(comm.ModuleSociaty, sociaty.SociatySubTypeMine), ff(comm.ModuleSociaty, sociaty.SociatySubTypeTasklist), ff(comm.ModuleSociaty, sociaty.SociatySubTypeRank), }, "troll": { ff(comm.ModuleTroll, "getlist"), }, "growtask": { ff(comm.ModuleGrowtask, growtask.GrowtaskSubTypeList), }, "worldtask": { ff(comm.ModuleWorldtask, worldtask.WorldtaskSubtypeMine), }, } ) // 3 注册测试用例 var ( CaseNav = map[string]*model.TestCase{ // gm "gm": { NavLabel: "GM", MainType: string(comm.ModuleGM), Enabled: true, }, ff(comm.ModuleGM, "cmd"): { Desc: "eg. bingo:item,10001,1 bingo:attr,gold,1000000", MainType: string(comm.ModuleGM), SubType: "cmd", Req: &pb.GMCmdReq{}, Rsp: &pb.GMCmdResp{}, Enabled: true, }, "reddot": { NavLabel: "红点", MainType: string(comm.ModuleReddot), Enabled: true, }, ff(comm.ModuleReddot, "get"): { Desc: "红点", NavLabel: "红点", MainType: string(comm.ModuleReddot), SubType: "get", Enabled: true, }, "sys": { NavLabel: "系统", MainType: string(comm.ModuleSys), Enabled: true, }, ff(comm.ModuleSys, "funclist"): { NavLabel: "功能列表", Desc: "返回未开启的功能列表", MainType: string(comm.ModuleSys), SubType: sys.SysSubTypeFunc, Enabled: true, }, // user "user": { NavLabel: "用户", MainType: "user", Enabled: true, }, ff(comm.ModuleUser, user.UserSubTypeModifyAvatar): { Desc: "用户头像修改", NavLabel: "修改头像", MainType: string(comm.ModuleUser), SubType: user.UserSubTypeModifyAvatar, Enabled: true, }, "user.modifyname": { Desc: "用户昵称修改", NavLabel: "修改昵称", MainType: "user", SubType: "modifyname", Req: &pb.UserModifynameReq{}, Rsp: &pb.UserModifynameResp{}, Print: func(rsp proto.Message) string { logrus.WithFields(logrus.Fields{"main": "user", "stype": "modifyname"}).Debug("print") var formatStr strings.Builder if in, ok := rsp.(*pb.UserMessage); ok { out := &pb.UserModifynameResp{} if !comm.ProtoUnmarshal(in, out) { return errors.New("unmarshal err").Error() } formatStr.WriteString(fmt.Sprintf("Uid:%s count:%d", out.Uid, out.Count)) } return formatStr.String() }, Enabled: true, }, ff(comm.ModuleUser, user.UserSubTypeModifyFigure): { Desc: "用户形象修改", NavLabel: "修改形象", MainType: string(comm.ModuleUser), SubType: user.UserSubTypeModifyFigure, Enabled: true, }, ff(comm.ModuleUser, user.UserSubTYpeModifyBgp): { Desc: "背景修改", NavLabel: "修改背景", MainType: string(comm.ModuleUser), SubType: user.UserSubTYpeModifyBgp, Enabled: true, }, ff(comm.ModuleUser, user.UserSubTypeModifySign): { NavLabel: "修改签名", Desc: "用户签名修改", MainType: string(comm.ModuleUser), SubType: user.UserSubTypeModifySign, Enabled: true, }, ff(comm.ModuleUser, user.UserSubTypeBattlerecord): { NavLabel: "战斗记录", Desc: "玩家在心魔塔、狩猎、维京远征的战斗记录", MainType: string(comm.ModuleUser), SubType: user.UserSubTypeBattlerecord, Enabled: true, }, //items string(comm.ModuleItems): { NavLabel: "道具", MainType: string(comm.ModuleItems), Enabled: true, }, ff(comm.ModuleItems, "getlist"): { NavLabel: "道具列表", Desc: "道具列表", MainType: string(comm.ModuleItems), SubType: "getlist", Enabled: true, }, ff(comm.ModuleItems, "sellitem"): { NavLabel: "道具售卖", Desc: "道具售卖", MainType: string(comm.ModuleItems), SubType: "sellitem", Enabled: true, }, ff(comm.ModuleItems, "useitem"): { NavLabel: "道具使用", Desc: "道具使用", MainType: string(comm.ModuleItems), SubType: "useitem", Enabled: true, }, //mail string(comm.ModuleMail): { NavLabel: "邮箱", MainType: string(comm.ModuleMail), Enabled: true, }, ff(comm.ModuleMail, "getlist"): { NavLabel: "我的邮件", Desc: "我的邮件", MainType: string(comm.ModuleMail), SubType: "getlist", Enabled: true, }, ff(comm.ModuleMail, "readmail"): { NavLabel: "读邮件", Desc: "读取邮件", MainType: string(comm.ModuleMail), SubType: "readmail", Enabled: true, }, ff(comm.ModuleMail, "delmail"): { NavLabel: "删除邮件", Desc: "删除邮件", MainType: string(comm.ModuleMail), SubType: "delmail", Enabled: true, }, ff(comm.ModuleMail, "getusermailattachment"): { NavLabel: "领取附件", Desc: "领取附件", MainType: string(comm.ModuleMail), SubType: "getusermailattachment", Enabled: true, }, ff(comm.ModuleMail, "getallmailattachment"): { NavLabel: "一键领取", Desc: "领取所有附件", MainType: string(comm.ModuleMail), SubType: "getallmailattachment", Enabled: true, }, // task "task": { NavLabel: "任务", MainType: "task", Enabled: true, }, "task.list": { NavLabel: "任务列表", Desc: "用户任务列表", MainType: "task", SubType: "list", Req: &pb.TaskListReq{}, Rsp: &pb.TaskListResp{}, Enabled: true, Print: func(rsp proto.Message) string { logrus.WithFields(logrus.Fields{"main": "task", "stype": "list"}).Debug("print") var formatStr strings.Builder if in, ok := rsp.(*pb.UserMessage); ok { out := &pb.TaskListResp{} if !comm.ProtoUnmarshal(in, out) { return errors.New("unmarshal err").Error() } for i, v := range out.List { formatStr.WriteString(fmt.Sprintf("%d- %v\n", (i + 1), v)) } } return formatStr.String() }, }, ff(comm.ModuleTask, task.TaskSubTypeActiveList): { NavLabel: "活跃度列表", Desc: "用户活跃度列表", MainType: string(comm.ModuleTask), SubType: task.TaskSubTypeActiveList, Req: &pb.TaskActiveListReq{}, Rsp: &pb.TaskActiveListResp{}, Enabled: true, }, ff(comm.ModuleTask, task.TaskSubTypeActiveReceive): { NavLabel: "活跃度领取", Desc: "用户活跃度领取", MainType: string(comm.ModuleTask), SubType: task.TaskSubTypeActiveReceive, Req: &pb.TaskActiveReceiveReq{}, Rsp: &pb.TaskActiveReceiveResp{}, Enabled: true, }, // hero string(comm.ModuleHero): { NavLabel: "英雄", MainType: string(comm.ModuleHero), Enabled: true, }, ff(comm.ModuleHero, hero.HeroSubTypeList): { NavLabel: "英雄列表", Desc: "英雄列表", MainType: string(comm.ModuleHero), SubType: hero.HeroSubTypeList, Print: func(rsp proto.Message) string { logrus.WithFields(logrus.Fields{"main": comm.ModuleHero, "stype": hero.HeroSubTypeList}).Debug("print") var formatStr strings.Builder if in, ok := rsp.(*pb.UserMessage); ok { out := &pb.HeroListResp{} if !comm.ProtoUnmarshal(in, out) { return errors.New("unmarshal err").Error() } for i, v := range out.List { formatStr.WriteString(fmt.Sprintf("%d- %v\n", (i + 1), v)) } } return formatStr.String() }, Enabled: true, }, ff(comm.ModuleHero, hero.StrengthenUplv): { NavLabel: "英雄升级", Desc: "英雄等级升级", MainType: string(comm.ModuleHero), SubType: hero.StrengthenUplv, Req: &pb.HeroStrengthenUplvReq{}, Rsp: &pb.HeroStrengthenUplvResp{}, Enabled: true, }, ff(comm.ModuleHero, hero.StrengthenUpStar): { NavLabel: "英雄升星", Desc: "英雄星级升级", MainType: string(comm.ModuleHero), SubType: hero.StrengthenUpStar, Req: &pb.HeroStrengthenUpStarReq{}, Rsp: &pb.HeroStrengthenUpStarResp{}, Enabled: true, }, ff(comm.ModuleHero, hero.DrawCard): { NavLabel: "招募", Desc: "抽卡招募", MainType: string(comm.ModuleHero), SubType: hero.DrawCard, Enabled: true, }, ff(comm.ModuleHero, "info"): { NavLabel: "英雄信息", Desc: "英雄信息", MainType: string(comm.ModuleHero), SubType: "info", Enabled: true, }, //equipment string(comm.ModuleEquipment): { NavLabel: "装备", MainType: string(comm.ModuleEquipment), Enabled: true, }, ff(comm.ModuleEquipment, "getlist"): { NavLabel: "装备列表", Desc: "装备列表", MainType: string(comm.ModuleEquipment), SubType: "getlist", Enabled: true, }, ff(comm.ModuleEquipment, "equip"): { NavLabel: "穿卸装备", Desc: "穿/卸装备", MainType: string(comm.ModuleEquipment), SubType: "equip", Enabled: true, }, ff(comm.ModuleEquipment, "upgrade"): { NavLabel: "升级装备", Desc: "升级装备", MainType: string(comm.ModuleEquipment), SubType: "upgrade", Enabled: true, }, //friend string(comm.ModuleFriend): { NavLabel: "好友", MainType: string(comm.ModuleFriend), Enabled: true, }, ff(comm.ModuleFriend, friend.FriendSubTypeRandList): { NavLabel: "在线玩家", Desc: "在线玩家列表", MainType: string(comm.ModuleFriend), SubType: friend.FriendSubTypeRandList, Enabled: true, Print: func(rsp proto.Message) string { var formatStr strings.Builder if in, ok := rsp.(*pb.UserMessage); ok { out := &pb.FriendRandlistResp{} if !comm.ProtoUnmarshal(in, out) { return errors.New("unmarshal err").Error() } for i, v := range out.List { formatStr.WriteString(fmt.Sprintf("%d- %v\n", (i + 1), v)) } } return formatStr.String() }, }, ff(comm.ModuleFriend, friend.FriendSubTypeList): { NavLabel: "我的好友", Desc: "我的好友列表", MainType: string(comm.ModuleFriend), SubType: friend.FriendSubTypeList, Req: &pb.FriendListReq{}, Rsp: &pb.FriendListResp{}, Enabled: true, }, ff(comm.ModuleFriend, friend.FriendSubTypeApply): { NavLabel: "好友申请", Desc: "好友申请", MainType: string(comm.ModuleFriend), SubType: friend.FriendSubTypeApply, Req: &pb.FriendApplyReq{}, Rsp: &pb.FriendApplyResp{}, Enabled: false, }, ff(comm.ModuleFriend, friend.FriendSubTypeBlacklist): { NavLabel: "黑名单", Desc: "黑名单列表", MainType: string(comm.ModuleFriend), SubType: friend.FriendSubTypeBlacklist, Req: &pb.FriendBlackListReq{}, Rsp: &pb.FriendBlackListResp{}, Enabled: true, }, ff(comm.ModuleFriend, friend.FriendSubTypeAddBlack): { NavLabel: "加黑名单", Desc: "添加黑名单", MainType: string(comm.ModuleFriend), SubType: friend.FriendSubTypeAddBlack, Req: &pb.FriendAddBlackReq{}, Rsp: &pb.FriendAddBlackResp{}, Enabled: true, }, ff(comm.ModuleFriend, friend.FriendSubTypeDelBlack): { NavLabel: "删黑名单", Desc: "删除黑名单", MainType: string(comm.ModuleFriend), SubType: friend.FriendSubTypeDelBlack, Req: &pb.FriendDelBlackReq{}, Rsp: &pb.FriendDelBlackResp{}, Enabled: true, }, ff(comm.ModuleFriend, friend.FriendSubTypeAgree): { NavLabel: "好友审批", Desc: "好友申请审批", MainType: string(comm.ModuleFriend), SubType: friend.FriendSubTypeAgree, Req: &pb.FriendAgreeReq{}, Rsp: &pb.FriendAgreeResp{}, Enabled: true, }, // ff(comm.ModuleFriend, friend.FriendSubTypeSearch): { // NavLabel: "好友搜索", // Desc: "搜索好友", // MainType: string(comm.ModuleFriend), // SubType: friend.FriendSubTypeSearch, // Req: &pb.FriendSearchReq{}, // Rsp: &pb.FriendSearchResp{}, // Enabled: true, // }, ff(comm.ModuleFriend, friend.FriendSubTypeAssistHero): { NavLabel: "助战英雄", Desc: "助战英雄", MainType: string(comm.ModuleFriend), SubType: friend.FriendSubTypeAssistHero, Enabled: true, }, ff(comm.ModuleFriend, friend.FriendSubTypeAssistlist): { NavLabel: "助战列表", Desc: "助战英雄列表", MainType: string(comm.ModuleFriend), SubType: friend.FriendSubTypeAssistlist, Enabled: true, }, ff(comm.ModuleFriend, friend.FriendSubTypeGetreward): { NavLabel: "助战奖励", Desc: "助战奖励", MainType: string(comm.ModuleFriend), SubType: friend.FriendSubTypeGetreward, Enabled: true, }, ff(comm.ModuleFriend, friend.FriendSubTypeAssistHeroList): { NavLabel: "助战英雄列表", Desc: "我的好友助战英雄列表", MainType: string(comm.ModuleFriend), SubType: friend.FriendSubTypeAssistHeroList, Enabled: true, }, //shop string(comm.ModuleShop): { NavLabel: "商店", MainType: string(comm.ModuleShop), Enabled: true, }, ff(comm.ModuleShop, "getlist"): { NavLabel: "商店列表", Desc: "商店列表", MainType: string(comm.ModuleShop), SubType: "getlist", Enabled: true, }, ff(comm.ModuleShop, "buy"): { NavLabel: "购买商品", Desc: "购买商品", MainType: string(comm.ModuleShop), SubType: "buy", Enabled: true, }, // mainline string(comm.ModuleMainline): { NavLabel: "主线关卡", MainType: string(comm.ModuleShop), Enabled: true, }, ff(comm.ModuleMainline, mainline.MainlineGetListResp): { NavLabel: "主线关卡", Desc: "主线关卡", MainType: string(comm.ModuleMainline), SubType: mainline.MainlineGetListResp, Enabled: true, }, ff(comm.ModuleMainline, mainline.MainlineChallengeResp): { NavLabel: "关卡挑战", Desc: "关卡挑战", MainType: string(comm.ModuleMainline), SubType: mainline.MainlineChallengeResp, Enabled: true, }, ff(comm.ModuleMainline, mainline.MainlineGetRewardResp): { NavLabel: "关卡奖励", Desc: "获取关卡奖励", MainType: string(comm.ModuleMainline), SubType: mainline.MainlineGetRewardResp, Enabled: true, }, //pagoda string(comm.ModulePagoda): { NavLabel: "魔塔", MainType: string(comm.ModulePagoda), Enabled: true, }, ff(comm.ModulePagoda, "getlist"): { NavLabel: "魔塔列表", Desc: "魔塔列表", MainType: string(comm.ModulePagoda), SubType: "getlist", Enabled: true, }, // rtask string(comm.ModuleRtask): { NavLabel: "随机任务", MainType: string(comm.ModuleRtask), Enabled: true, }, ff(comm.ModuleRtask, rtask.RtaskSubTypeList): { NavLabel: "任务列表", MainType: string(comm.ModuleRtask), SubType: rtask.RtaskSubTypeList, Enabled: true, Print: func(rsp proto.Message) string { if in, ok := rsp.(*pb.UserMessage); ok { out := &pb.RtasklistResp{} if !comm.ProtoUnmarshal(in, out) { return errors.New("unmarshal err").Error() } return strings.Join(cast.ToStringSlice(out.RtaskIds), ",") } return "" }, }, ff(comm.ModuleRtask, rtask.RtaskSubTypeApply): { NavLabel: "做任务", Desc: "执行随机任务", MainType: string(comm.ModuleRtask), SubType: rtask.RtaskSubTypeApply, Enabled: true, }, ff(comm.ModuleRtask, rtask.RtaskSubTypeChoose): { NavLabel: "情景对答", Desc: "情景对答", MainType: string(comm.ModuleRtask), SubType: rtask.RtaskSubTypeChoose, Enabled: true, }, ff(comm.ModuleRtask, rtask.RtaskSubTypeReward): { NavLabel: "领奖", Desc: "领奖", MainType: string(comm.ModuleRtask), SubType: rtask.RtaskSubTypeReward, Enabled: true, }, ff(comm.ModuleRtask, rtask.RtaskSubTypeBattleStart): { NavLabel: "战斗开始", Desc: "战斗开始", MainType: string(comm.ModuleRtask), SubType: rtask.RtaskSubTypeBattleStart, Enabled: true, }, ff(comm.ModuleRtask, rtask.RtaskSubTypeBattleFinish): { NavLabel: "战斗结束", Desc: "战斗结束", MainType: string(comm.ModuleRtask), SubType: rtask.RtaskSubTypeBattleFinish, Enabled: true, }, ff(comm.ModuleRtask, rtask.RtaskSubTypeGetrecord): { NavLabel: "任务数据", Desc: "任务数据", MainType: string(comm.ModuleRtask), SubType: rtask.RtaskSubTypeGetrecord, Enabled: true, }, ff(comm.ModuleRtask, "rtest"): { NavLabel: "测试条件", Desc: "测试任务触发", MainType: string(comm.ModuleRtask), SubType: "rtest", Enabled: true, }, //linestory string(comm.ModuleLinestory): { NavLabel: "支线剧情任务", MainType: string(comm.ModuleLinestory), Enabled: true, }, ff(comm.ModuleLinestory, linestory.LinestorySubTypeChapter): { NavLabel: "支线任务", Desc: "我的剧情任务", MainType: string(comm.ModuleLinestory), SubType: linestory.LinestorySubTypeChapter, Enabled: true, }, ff(comm.ModuleLibrary, library.LibraryFetterstoryTaskResp): { NavLabel: "羁绊任务", Desc: "我的剧情任务", MainType: string(comm.ModuleLibrary), SubType: library.LibraryFetterstoryTaskResp, Enabled: true, }, // gourmet string(comm.ModuleGourmet): { NavLabel: "美食馆", MainType: string(comm.ModuleGourmet), Enabled: true, }, ff(comm.ModuleGourmet, "getranduser"): { NavLabel: "随机玩家", Desc: "随机玩家", MainType: string(comm.ModuleGourmet), SubType: "getranduser", Enabled: true, }, // sociaty string(comm.ModuleSociaty): { NavLabel: "公会", MainType: string(comm.ModuleSociaty), Enabled: true, }, ff(comm.ModuleSociaty, sociaty.SociatySubTypeCreate): { NavLabel: "公会创建", Desc: "公会创建", MainType: string(comm.ModuleSociaty), SubType: sociaty.SociatySubTypeCreate, Enabled: true, }, ff(comm.ModuleSociaty, sociaty.SociatySubTypeList): { NavLabel: "公会推荐", Desc: "公会列表", MainType: string(comm.ModuleSociaty), SubType: sociaty.SociatySubTypeList, Enabled: true, Print: func(rsp proto.Message) string { return "不打印" }, }, ff(comm.ModuleSociaty, sociaty.SociatySubTypeMine): { NavLabel: "我的公会", Desc: "我的公会", MainType: string(comm.ModuleSociaty), SubType: sociaty.SociatySubTypeMine, Enabled: true, }, ff(comm.ModuleSociaty, sociaty.SociatySubTypeTasklist): { NavLabel: "任务列表", Desc: "任务列表", MainType: string(comm.ModuleSociaty), SubType: sociaty.SociatySubTypeTasklist, Enabled: true, }, ff(comm.ModuleSociaty, sociaty.SociatySubTypeRank): { NavLabel: "排行榜", Desc: "排行榜", MainType: string(comm.ModuleSociaty), SubType: sociaty.SociatySubTypeRank, Enabled: true, }, //troll string(comm.ModuleTroll): { NavLabel: "巨兽", MainType: string(comm.ModuleTroll), Enabled: true, }, ff(comm.ModuleTroll, "getlist"): { NavLabel: "列表", Desc: "巨兽列表", MainType: string(comm.ModuleTroll), SubType: "getlist", Enabled: true, }, // growtask string(comm.ModuleGrowtask): { NavLabel: "成长任务", MainType: string(comm.ModuleGrowtask), Enabled: true, }, ff(comm.ModuleGrowtask, growtask.GrowtaskSubTypeList): { NavLabel: "列表", Desc: "成长任务列表", MainType: string(comm.ModuleGrowtask), SubType: growtask.GrowtaskSubTypeList, Enabled: true, }, // worldtask string(comm.ModuleWorldtask): { NavLabel: "世界任务", MainType: string(comm.ModuleWorldtask), Enabled: true, }, ff(comm.ModuleWorldtask, worldtask.WorldtaskSubtypeMine): { NavLabel: "我的任务", Desc: "世界任务剧情", MainType: string(comm.ModuleWorldtask), SubType: worldtask.WorldtaskSubtypeMine, Enabled: true, }, } ) func ff(s1 core.M_Modules, s2 string) string { return fmt.Sprintf("%s.%s", s1, s2) }