From 25ea76c5bc878b1f536649811c7e282d18606618 Mon Sep 17 00:00:00 2001 From: wh_zcy Date: Wed, 22 Feb 2023 14:39:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BE=E9=89=B4=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/json/game_smithytask.json | 226 +++++++++++++++++++ comm/const.go | 3 +- modules/smithy/api_receive.go | 27 +++ modules/smithy/api_refuse.go | 34 +++ modules/smithy/api_trade.go | 7 +- modules/smithy/comp_configure.go | 15 +- modules/smithy/model_task.go | 73 ++++++ modules/smithy/model_trade.go | 16 +- pb/errorcode.pb.go | 23 +- sys/configure/structs/Game.SmithyTask.go | 42 ++++ sys/configure/structs/Game.SmithyTaskData.go | 56 +++++ 11 files changed, 504 insertions(+), 18 deletions(-) create mode 100644 bin/json/game_smithytask.json create mode 100644 modules/smithy/api_receive.go create mode 100644 modules/smithy/api_refuse.go create mode 100644 modules/smithy/model_task.go create mode 100644 sys/configure/structs/Game.SmithyTask.go create mode 100644 sys/configure/structs/Game.SmithyTaskData.go diff --git a/bin/json/game_smithytask.json b/bin/json/game_smithytask.json new file mode 100644 index 000000000..092b1cafb --- /dev/null +++ b/bin/json/game_smithytask.json @@ -0,0 +1,226 @@ +[ + { + "key": 10001, + "id_list": 1, + "task_display": { + "key": "task_10001", + "text": "进行1次普通招募" + }, + "type_id": 2018001, + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 10 + } + ] + }, + { + "key": 10002, + "id_list": 2, + "task_display": { + "key": "task_10002", + "text": "为任意英雄提升1次等级" + }, + "type_id": 2024001, + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 10 + } + ] + }, + { + "key": 10004, + "id_list": 4, + "task_display": { + "key": "task_10004", + "text": "强化任意装备成功1次" + }, + "type_id": 2047001, + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 10 + } + ] + }, + { + "key": 10006, + "id_list": 6, + "task_display": { + "key": "task_10006", + "text": "在商店购买任意1件商品" + }, + "type_id": 2064001, + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 10 + } + ] + }, + { + "key": 10007, + "id_list": 7, + "task_display": { + "key": "task_10007", + "text": "使用好友助战英雄战斗1次" + }, + "type_id": 2012001, + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 10 + } + ] + }, + { + "key": 10008, + "id_list": 8, + "task_display": { + "key": "task_10008", + "text": "进行竞技场挑战1次" + }, + "type_id": 2130001, + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 10 + } + ] + }, + { + "key": 10009, + "id_list": 9, + "task_display": { + "key": "task_10009", + "text": "进行10次普通招募" + }, + "type_id": 3018001, + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 10 + } + ] + }, + { + "key": 10010, + "id_list": 10, + "task_display": { + "key": "task_10010", + "text": "为任意英雄提升10次等级" + }, + "type_id": 3024001, + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 10 + } + ] + }, + { + "key": 10011, + "id_list": 12, + "task_display": { + "key": "task_10011", + "text": "强化任意装备成功6次" + }, + "type_id": 3047001, + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 10 + } + ] + }, + { + "key": 10012, + "id_list": 14, + "task_display": { + "key": "task_10012", + "text": "在商店购买任意7件商品" + }, + "type_id": 3064001, + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 10 + } + ] + }, + { + "key": 10013, + "id_list": 15, + "task_display": { + "key": "task_10013", + "text": "使用好友助战英雄战斗7次" + }, + "type_id": 3012001, + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 10 + } + ] + }, + { + "key": 10014, + "id_list": 17, + "task_display": { + "key": "task_10014", + "text": "刷新商店10次" + }, + "type_id": 3105001, + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 10 + } + ] + }, + { + "key": 10015, + "id_list": 18, + "task_display": { + "key": "task_10015", + "text": "消费1000颗钻石" + }, + "type_id": 3104001, + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 10 + } + ] + }, + { + "key": 10016, + "id_list": 19, + "task_display": { + "key": "task_10016", + "text": "进行30场竞技场挑战" + }, + "type_id": 3130001, + "reword": [ + { + "a": "attr", + "t": "diamond", + "n": 10 + } + ] + } +] \ No newline at end of file diff --git a/comm/const.go b/comm/const.go index c561e9c38..8af666b23 100644 --- a/comm/const.go +++ b/comm/const.go @@ -142,7 +142,8 @@ const ( TableSeasonRecord = "seasonRecord" // 赛季塔记录 /// 美食馆 TableSmithy = "smithy" - TableSmithyTrade = "trade" + TableSmithyTrade = "smithytrade" + TableSmithyTask = "smithytask" /// 赛季塔数据表 TableSeasonPagoda = "seasonpagoda" // diff --git a/modules/smithy/api_receive.go b/modules/smithy/api_receive.go new file mode 100644 index 000000000..222afe047 --- /dev/null +++ b/modules/smithy/api_receive.go @@ -0,0 +1,27 @@ +package smithy + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" + + "google.golang.org/protobuf/proto" +) + +// 图鉴任务奖励领取 +func (this *apiComp) TaskAwardCheck(session comm.IUserSession, req *pb.SmithyTaskAwardReq) (code pb.ErrorCode) { + if req.TaskId == 0 { + return pb.ErrorCode_ReqParameterError + } + return +} + +func (this *apiComp) TaskAward(session comm.IUserSession, req *pb.SmithyTaskAwardReq) (code pb.ErrorCode, data proto.Message) { + if code = this.TaskAwardCheck(session, req); code != pb.ErrorCode_Success { + return + } + + resp:= &pb.SmithyTaskAwardResp{} + + session.SendMsg(string(this.module.GetType()),"taskaward", resp) + return +} diff --git a/modules/smithy/api_refuse.go b/modules/smithy/api_refuse.go new file mode 100644 index 000000000..3439578dd --- /dev/null +++ b/modules/smithy/api_refuse.go @@ -0,0 +1,34 @@ +package smithy + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" + + "google.golang.org/protobuf/proto" +) + +func (this *apiComp) RefuseCheck(session comm.IUserSession, req *pb.SmithyRefuseReq) (code pb.ErrorCode) { + if req.CustomerId == 0 { + code = pb.ErrorCode_ReqParameterError + } + return +} + +func (this *apiComp) Refuse(session comm.IUserSession, req *pb.SmithyRefuseReq) (code pb.ErrorCode, data proto.Message) { + if code = this.RefuseCheck(session, req); code != pb.ErrorCode_Success { + return + } + + cus, err := this.module.modelTrade.updateCustomer(session.GetUserId(), req.CustomerId) + if err != nil { + code = pb.ErrorCode_DBError + return + } + + resp := &pb.SmithyRefuseResp{ + Customers: cus.Customers, + } + + session.SendMsg(string(this.module.GetType()), "refuse", resp) + return +} diff --git a/modules/smithy/api_trade.go b/modules/smithy/api_trade.go index 725f7f014..9b2160a5e 100644 --- a/modules/smithy/api_trade.go +++ b/modules/smithy/api_trade.go @@ -32,7 +32,11 @@ func (this *apiComp) Sell(session comm.IUserSession, req *pb.SmithySellReq) (cod this.module.ModuleEquipment.RecycleEquipments(session, req.EquipIds, this.module.modelStove.StoveToolsSellUp(session.GetUserId())) - _ = this.module.modelTrade.updateCustomer(session.GetUserId(), req.CustomerId) + cus, err := this.module.modelTrade.updateCustomer(session.GetUserId(), req.CustomerId) + if err != nil { + code = pb.ErrorCode_DBError + return + } conf := this.module.configure.GetSmithyCustomerConf(req.CustomerId) if conf == nil { @@ -46,6 +50,7 @@ func (this *apiComp) Sell(session comm.IUserSession, req *pb.SmithySellReq) (cod rsp := &pb.SmithySellResp{ CustomerId: req.CustomerId, EquipIds: req.EquipIds, + Customers: cus.Customers, } session.SendMsg(string(this.module.GetType()), "sell", rsp) diff --git a/modules/smithy/comp_configure.go b/modules/smithy/comp_configure.go index f6adcef32..e7edce6f6 100644 --- a/modules/smithy/comp_configure.go +++ b/modules/smithy/comp_configure.go @@ -21,6 +21,7 @@ const ( game_smithyatlas = "game_smithyatlas.json" // 收藏图鉴 game_smithyatlaslv = "game_smithyatlaslv.json" // 收藏等级积分 game_smithyatlasscore = "game_smithyatlasscore.json" // 图鉴积分 + game_smithytask = "game_smithytask.json" //图鉴任务 ) // /配置管理基础组件 @@ -70,7 +71,7 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp err = this.LoadConfigure(game_smithyatlas, cfg.NewGameSmithyAtlas) err = this.LoadConfigure(game_smithyatlaslv, cfg.NewGameSmithyAtlasLv) err = this.LoadConfigure(game_smithyatlasscore, cfg.NewGameSmithyAtlasScore) - + err = this.LoadConfigure(game_smithytask, cfg.NewGameSmithyTask) return } @@ -290,3 +291,15 @@ func (this *configureComp) LoadSmithyAtlasScoreConf() { log.Errorf("get LoadSmithyAtlasScoreConf conf err:%v", err) } } + +// 获取图鉴任务配置 +func(this *configureComp) GetSmithyTask(taskId int32) (data *cfg.GameSmithyTaskData) { + if v, err := this.GetConfigure(game_smithytask); err == nil { + if configure, ok := v.(*cfg.GameSmithyTask); ok { + data = configure.Get(taskId) + return + } + } + this.module.Errorf("GetSmithyTask notfound taskId:%d", taskId) + return +} \ No newline at end of file diff --git a/modules/smithy/model_task.go b/modules/smithy/model_task.go new file mode 100644 index 000000000..87ea1aef2 --- /dev/null +++ b/modules/smithy/model_task.go @@ -0,0 +1,73 @@ +package smithy + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/lego/core" + "go_dreamfactory/modules" + "go_dreamfactory/pb" + + "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/x/bsonx" +) + +type modelTask struct { + modules.MCompModel + module *Smithy +} + +func (this *modelTask) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { + this.TableName = string(comm.TableSmithyTask) + err = this.MCompModel.Init(service, module, comp, options) + this.module = module.(*Smithy) + this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{ + Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}}, + }) + return +} + +func (this *modelTask) getTaskRecord(uid string) (*pb.DBTujianTask, error) { + tt := &pb.DBTujianTask{} + if err := this.Get(uid, tt); err != nil { + return tt, err + } + return tt, nil +} + +func (this *modelTask) updateTaskRecord(uid string, taskId int32) error { + if !this.CheckTaskStatus(uid, taskId) { + return comm.NewCustomError(pb.ErrorCode_SmithyTaskNoFinished) + } + dt, err := this.getTaskRecord(uid) + if err != nil { + return err + } + + if dt.Uid == "" { + this.Add(uid, &pb.DBTujianTask{Uid: uid, TaskId: taskId, Received: 2}) + } else { + // 已存在 重复领取 + if dt.Received == 2 { + return comm.NewCustomError(pb.ErrorCode_SmithyTaskReceived) + } else { + update := map[string]interface{}{ + "received": 2, + } + if err := this.Change(uid, update); err != nil { + return err + } + } + } + return nil +} + +// 检查任务状态 +func (this *modelTask) CheckTaskStatus(uid string, taskId int32) bool { + conf := this.module.configure.GetSmithyTask(taskId) + if conf == nil { + return false + } + if ec := this.module.ModuleRtask.CheckCondi(uid, conf.TypeId); ec != pb.ErrorCode_Success { + return false + } + return true +} diff --git a/modules/smithy/model_trade.go b/modules/smithy/model_trade.go index 9af59a2ad..94c8c599c 100644 --- a/modules/smithy/model_trade.go +++ b/modules/smithy/model_trade.go @@ -119,16 +119,16 @@ func (s *modelTrade) removeCustomer(cus *pb.DBCustomer, customerId int32) *pb.DB } // 随机新顾客 -func (s *modelTrade) updateCustomer(uid string, customerId int32) error { +func (s *modelTrade) updateCustomer(uid string, customerId int32) (*pb.DBCustomer, error) { cus, err := s.getDBCustomer(uid) if err == nil { cus = s.removeCustomer(cus, customerId) cus.Total++ //上限 - limit := 20 - left := limit - int(cus.Total) + limit := s.module.modelStove.StoveSkillAddCustomer(uid) + left := limit - cus.Total if left <= 0 { - return comm.NewCustomError(pb.ErrorCode_SmithyCustomerLimit) + return nil, comm.NewCustomError(pb.ErrorCode_SmithyCustomerLimit) } cus.Customers = append(cus.Customers, &pb.CustomerInfo{ @@ -143,10 +143,10 @@ func (s *modelTrade) updateCustomer(uid string, customerId int32) error { "lastRefreshTime": cus.LastRefreshTime, } if err := s.Change(uid, update); err != nil { - return err + return nil, err } } - return nil + return cus, nil } // 返回概率下的套装 @@ -166,8 +166,8 @@ func (s *modelTrade) GetSuitRandom(uid string) (suiteId int32) { } //获取玩家已有装备 ec, suites := s.module.ModuleEquipment.GetActionableSuit(uid) - if ec!=pb.ErrorCode_Success { - s.module.Error("获取玩家已有装备:", log.Field{Key:"code",Value: ec}) + if ec != pb.ErrorCode_Success { + s.module.Error("获取玩家已有装备:", log.Field{Key: "code", Value: ec}) return } var ownerSuiteItems []*WeightItem diff --git a/pb/errorcode.pb.go b/pb/errorcode.pb.go index b911596e5..ffac4b35e 100644 --- a/pb/errorcode.pb.go +++ b/pb/errorcode.pb.go @@ -327,7 +327,9 @@ const ( ErrorCode_SmithyLackLava ErrorCode = 4107 // 缺少熔岩 ErrorCode_SmithyAtlasMaxLv ErrorCode = 4108 // 图鉴奖励满级 ErrorCode_SmithyAtlasLackLv ErrorCode = 4109 // 图鉴奖励等级不足 - ErrorCode_SmithyNoFoundAtlas ErrorCode = 4110 // 没有找到图鉴数据 + ErrorCode_SmithyTaskNoFinished ErrorCode = 4110 //图鉴任务未完成 + ErrorCode_SmithyTaskReceived ErrorCode = 4111 //图鉴任务奖励已领 + ErrorCode_SmithyNoFoundAtlas ErrorCode = 4112 // 没有找到图鉴数据 ) // Enum value maps for ErrorCode. @@ -605,7 +607,9 @@ var ( 4107: "SmithyLackLava", 4108: "SmithyAtlasMaxLv", 4109: "SmithyAtlasLackLv", - 4110: "SmithyNoFoundAtlas", + 4110: "SmithyTaskNoFinished", + 4111: "SmithyTaskReceived", + 4112: "SmithyNoFoundAtlas", } ErrorCode_value = map[string]int32{ "Success": 0, @@ -880,7 +884,9 @@ var ( "SmithyLackLava": 4107, "SmithyAtlasMaxLv": 4108, "SmithyAtlasLackLv": 4109, - "SmithyNoFoundAtlas": 4110, + "SmithyTaskNoFinished": 4110, + "SmithyTaskReceived": 4111, + "SmithyNoFoundAtlas": 4112, } ) @@ -915,7 +921,7 @@ var File_errorcode_proto protoreflect.FileDescriptor var file_errorcode_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2a, 0xc7, 0x31, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x6f, 0x2a, 0xfb, 0x31, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x10, 0x0a, 0x12, 0x1b, 0x0a, 0x17, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, @@ -1310,9 +1316,12 @@ var file_errorcode_proto_rawDesc = []byte{ 0x10, 0x8b, 0x20, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x4d, 0x61, 0x78, 0x4c, 0x76, 0x10, 0x8c, 0x20, 0x12, 0x16, 0x0a, 0x11, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x4c, 0x61, 0x63, 0x6b, 0x4c, 0x76, 0x10, - 0x8d, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x4e, 0x6f, 0x46, 0x6f, - 0x75, 0x6e, 0x64, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x10, 0x8e, 0x20, 0x42, 0x06, 0x5a, 0x04, 0x2e, - 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x8d, 0x20, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x61, 0x73, 0x6b, + 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0x8e, 0x20, 0x12, 0x17, 0x0a, + 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x65, 0x69, + 0x76, 0x65, 0x64, 0x10, 0x8f, 0x20, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x6d, 0x69, 0x74, 0x68, 0x79, + 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x41, 0x74, 0x6c, 0x61, 0x73, 0x10, 0x90, 0x20, 0x42, + 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/sys/configure/structs/Game.SmithyTask.go b/sys/configure/structs/Game.SmithyTask.go new file mode 100644 index 000000000..7331b44ff --- /dev/null +++ b/sys/configure/structs/Game.SmithyTask.go @@ -0,0 +1,42 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg + +type GameSmithyTask struct { + _dataMap map[int32]*GameSmithyTaskData + _dataList []*GameSmithyTaskData +} + +func NewGameSmithyTask(_buf []map[string]interface{}) (*GameSmithyTask, error) { + _dataList := make([]*GameSmithyTaskData, 0, len(_buf)) + dataMap := make(map[int32]*GameSmithyTaskData) + for _, _ele_ := range _buf { + if _v, err2 := DeserializeGameSmithyTaskData(_ele_); err2 != nil { + return nil, err2 + } else { + _dataList = append(_dataList, _v) + dataMap[_v.Key] = _v + } + } + return &GameSmithyTask{_dataList:_dataList, _dataMap:dataMap}, nil +} + +func (table *GameSmithyTask) GetDataMap() map[int32]*GameSmithyTaskData { + return table._dataMap +} + +func (table *GameSmithyTask) GetDataList() []*GameSmithyTaskData { + return table._dataList +} + +func (table *GameSmithyTask) Get(key int32) *GameSmithyTaskData { + return table._dataMap[key] +} + + diff --git a/sys/configure/structs/Game.SmithyTaskData.go b/sys/configure/structs/Game.SmithyTaskData.go new file mode 100644 index 000000000..83bc2e71e --- /dev/null +++ b/sys/configure/structs/Game.SmithyTaskData.go @@ -0,0 +1,56 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg + +import "errors" + +type GameSmithyTaskData struct { + Key int32 + IdList int32 + TaskDisplay string + TypeId int32 + Reword []*Gameatn +} + +const TypeId_GameSmithyTaskData = -1483471039 + +func (*GameSmithyTaskData) GetTypeId() int32 { + return -1483471039 +} + +func (_v *GameSmithyTaskData)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 _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id_list"].(float64); !_ok_ { err = errors.New("id_list error"); return }; _v.IdList = int32(_tempNum_) } + {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["task_display"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.TaskDisplay error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.TaskDisplay, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type_id"].(float64); !_ok_ { err = errors.New("type_id error"); return }; _v.TypeId = int32(_tempNum_) } + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["reword"].([]interface{}); !_ok_ { err = errors.New("reword error"); return } + + _v.Reword = make([]*Gameatn, 0, len(_arr_)) + + for _, _e_ := range _arr_ { + var _list_v_ *Gameatn + { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = DeserializeGameatn(_x_); err != nil { return } } + _v.Reword = append(_v.Reword, _list_v_) + } + } + + return +} + +func DeserializeGameSmithyTaskData(_buf map[string]interface{}) (*GameSmithyTaskData, error) { + v := &GameSmithyTaskData{} + if err := v.Deserialize(_buf); err == nil { + return v, nil + } else { + return nil, err + } +}