|
|
- ChildModel = ChildModel or BaseClass(BaseVo, true)
- local ChildModel = ChildModel
-
- function ChildModel:__init()
- self.Instance = self
- self:Reset()
- end
- function ChildModel:Reset()
- self.mainVo = RoleManager.Instance.mainRoleInfo
-
- self.Config_Child_DailyTask = Config.Childdailytask -- 同心前置日常任务配置
- self.Config_Child_VoteReward = Config.Childvotereward -- 投票奖励配置
- self.Config_Child_Skill = Config.Childskill -- 孩子技能配置
- self.Config_Child_ToyNew = Config.Childtoynew -- 孩子玩具配置 新
- self.Config_Child_ToyUpgrade = Config.Childtoyboxupgrade -- 孩子玩具升阶配置
- self.Config_Child_ToySuit = Config.Childtoysuit -- 孩子玩具图鉴
-
- -- 初始化各种配置
- self:InitChildfigureCfg()
- self:InitChildkvCfg()
- self:InitChildLinkHeartInfo()
- self:InitChildgrowupCfg()
- self:InitChildfashionCfg()
- self:InitChildvehicleCfg( )
-
- self.isPlayerHadChild = false
- self.ChildRedDotList = {} --红点集合
- self.childInfo = {} --宝宝信息
- self.childTaskInfo = {} --任务信息
- self.childSkillList = {}--技能信息
- self.skill_list_open_nearest = nil --最近一个为开启的技能, 技能得按顺序的
- self.childVehicleList = {}--载具信息
- self.childVotedRoleList = {}--宝宝已点过的玩家id List
- self.childEquipList = {}--宝宝玩具装备
- self.childEquipBuildList = {}-- 宝宝玩具打造
- self.childDressList = {}-- 宝宝装扮
- self.childSuitToyList = {} -- 宝宝图鉴
- self.childSuitRewardList = {}-- 宝宝图鉴套装集齐奖励
- self.child_acitve_toy_list = {} --- 给分解list计算激活分解用
- self.red_dot_list_handbook = {}
- self.wear_fashion_id = 0 -- 穿戴中的时装id
- self.can_use_skill_list = {} -- 当前可以使用的技能列表
- end
-
- function ChildModel:GetInstance()
- if self.Instance == nil then
- self.Instance = ChildModel.New()
- end
- return self.Instance
- end
-
- function ChildModel:getInstance()
- if self.Instance == nil then
- self.Instance = ChildModel.New()
- end
- return self.Instance
- end
- -------------初始化配置--start-----------
- -- 孩子模型对应关系配置
- function ChildModel:InitChildfigureCfg( )
- self.Config_Child_Figure = {}
- self.Config_Child_Figure[1] = {} -- 男
- self.Config_Child_Figure[2] = {} -- 女
- self.max_grow_state = 0 -- 宝宝最大成长期
- self.child_grow_level = 0 -- 婴儿期对应等级
- for k, v in pairs(Config.Childfigure) do
- if v.model_id == 1011 then
- self.child_grow_level = v.grow_up_level
- elseif v.model_id == 1021 then
- self.max_grow_state = v.grow_up_level
- end
- table.insert(self.Config_Child_Figure[v.child_sex], v)
- end
- local function sort_func(a, b)
- return a.grow_up_level < b.grow_up_level
- end
- table.sort(self.Config_Child_Figure[1], sort_func)
- table.sort(self.Config_Child_Figure[2], sort_func)
- end
-
- -- 常量表
- function ChildModel:InitChildkvCfg( )
- self.Config_Child_kv = {}
- for k, v in pairs(Config.Childkv) do
- self.Config_Child_kv[Trim(v.key)] = v.constant
- end
- end
-
- -- 同心奖励配置
- function ChildModel:InitChildLinkHeartInfo( )
- self.Config_Child_LinkHeart = {}
- local data = self.Config_Child_LinkHeart
- -- 以同心值做key
- local max_value = 0
- for k, v in pairs(Config.Childlinkheart) do
- if max_value < v.need_exp then
- max_value = v.need_exp
- end
- data[v.need_exp] = v
- data[v.need_exp].reward_new = stringtotable(v.reward)
- end
- self.MAX_HERAT_VALUE = max_value
- end
-
- -- 获取最大同心值
- function ChildModel:GetMaxHeartValue( )
- return self.MAX_HERAT_VALUE or 0
- end
-
- -- 孩子成长属性配置
- function ChildModel:InitChildgrowupCfg( )
- self.Config_Child_GrowUp = {}
- local cfg = self.Config_Child_GrowUp
- for k, v in pairs(Config.Childgrowup) do
- cfg[v.month] = v
- end
- end
-
- -- 时装配置
- function ChildModel:InitChildfashionCfg( )
- self.Config_Child_Fashion = {}
- for k,v in pairs(Config.Childfashion) do
- self.Config_Child_Fashion[v.fashion_id] = self.Config_Child_Fashion[v.fashion_id] or {}
- local temp = self.Config_Child_Fashion[v.fashion_id]
- temp[v.lv] = v
-
- -- 设置升到下一级的消耗
- local next_cfg = Config.Childfashion[v.fashion_id .. "@" .. v.lv]
- if next_cfg then
- temp[v.lv].upgrade_cost_next = stringtotable(next_cfg.upgrade_cost)
- else
- temp[v.lv].upgrade_cost_next = false
- end
- end
- end
-
- -- 载具和时装原本是两个功能 现在合并了 所以配置处理成时装配置的格式
- -- 通过is_vehicle字段区分 用原本的不同协议来处理
- function ChildModel:InitChildvehicleCfg( )
- self.Config_Child_Vehicle = {}
- local cfg_list = self.Config_Child_Vehicle
- for k,v in pairs(Config.Childvehicle) do
- cfg_list[v.vehicle_id] = cfg_list[v.vehicle_id] or {}
- local temp = cfg_list[v.vehicle_id]
- temp[v.stage] = {}
- local temp_cfg = temp[v.stage]
- temp_cfg.is_vehicle = true -- 用来区别时装的字段
- temp_cfg.fashion_id = v.vehicle_id
- temp_cfg.lv = v.stage
- temp_cfg.fashion_name = v.vehicle_name
- temp_cfg.attr_list = v.add_attr
- temp_cfg.model_id = v.model_id
- temp_cfg.upgrade_cost = v.upgrade_cost
- temp_cfg.active_skill = v.active_skill
- temp_cfg.can_on_age = v.can_on_age
-
- -- 设置升到下一级的消耗
- local next_cfg = Config.Childvehicle[v.vehicle_id .. "@" .. v.stage]
- if next_cfg then
- temp_cfg.upgrade_cost_next = stringtotable(next_cfg.upgrade_cost)
- else
- temp_cfg.upgrade_cost_next = false
- end
- end
- end
- -------------初始化配置--end---------
-
- function ChildModel:GetChildInfo( )
- return self.childInfo
- end
-
- --[[
- child_age_month :int8 //孩子年龄 - 月
- child_name :string //孩子名字
- child_sex :int8 //孩子性别
- child_age_year :int8 //孩子年龄 - 年
- child_age_month :int8 //孩子年龄 - 月
- child_age_exp :int32 //孩子成长进度(经验值)
- heart_link_exp :int32 //同心度(经验值)
- heart_reward:array{ //同心奖励
- reward_id :int8 //奖励Id
- status :int8 //奖励领取状态0-未领取 1-已领取
- }
- child_power :int64 //孩子战力
- is_follow :int8 //是否跟随
- can_carry :int16 //孩子可负重上限
- adopt_time :int32 //孩子领养时间 0-未领养 其他-领养时间
- share_reward :int8 //分享奖励领取状态 0-未领取 1-已领取
- yest_rank :int16 //昨日排行
- yest_reward :int8 //昨日榜奖励领取状态 0-未领取 1-已领取
- --]]
- function ChildModel:SetChildInfo(vo)
- -- 孩子成长等级需要保存一下上一次的等级
- self:UpdatePreAgeMonth(self.childInfo.child_age_month)
- local temp = {
- child_age_month = vo.child_age_month or self.childInfo.child_age_month or 0,
- child_name = vo.child_name or self.childInfo.child_name or "",
- child_sex = vo.child_sex or self.childInfo.child_sex or 1,
- child_age_year = vo.child_age_year or self.childInfo.child_age_year or 0,
- child_age_exp = vo.child_age_exp or self.childInfo.child_age_exp or 0,
- heart_link_exp = vo.heart_link_exp or self.childInfo.heart_link_exp or 0,
- child_power = vo.child_power or self.childInfo.child_power or 0,
- is_follow = vo.is_follow or self.childInfo.is_follow or false,
- adopt_time = vo.adopt_time or self.childInfo.adopt_time or 0,
- -- 晒娃
- share_reward = vo.share_reward or self.childInfo.share_reward or 0,
- yest_rank = vo.yest_rank or self.childInfo.yest_rank or 0,
- yest_reward = vo.yest_reward or self.childInfo.yest_reward or 0,
- heart_reward = self.childInfo.heart_reward or {}, -- 默认不直接用协议的数据
- }
- self.childInfo = temp
- self:SetHeartRewardData(vo.heart_reward)
-
- if vo.child_sex > 0 then -- 有性别数据 说明已经领养了
- self:SetIsPlayerHadChild(true)
- end
-
- --self:SetChildInfoForRoleModelID()
- end
-
- function ChildModel:UpdatePreAgeMonth( lv )
- -- logWarn('=======Msh:ChildModel.lua[209]=======')
- -- PrintCallStack()
- self.pre_age_month = lv or 0
- end
-
- function ChildModel:GetPreAgeMonth( )
- return self.pre_age_month or -1
- end
-
- -- 获取当前同心度
- function ChildModel:GetCurHeartValue( )
- return self:GetChildInfo( ).heart_link_exp or 0
- end
-
- -- 判断同心值是否已满
- function ChildModel:IsHeartValueMax()
- return self:GetCurHeartValue( ) >= self:GetMaxHeartValue( )
- end
-
- -- 更新数据 need_check:是否强制检查状态变化(用于区分第一次初始化数据)
- function ChildModel:SetHeartRewardData( reward_list, need_check )
- -- 同心奖励
- if not reward_list then return end
-
- local old_get_state
- if need_check then
- old_get_state = self:HasGetAllHeartReward( ) -- 更新数据前的领取状态
- end
-
- -- 更新数据
- self.childInfo.heart_reward = self.childInfo.heart_reward or {}
- local list = self.childInfo.heart_reward
- for k, v in pairs(reward_list) do
- list[v.reward_id] = v.status
-
- end
-
- -- 如果本次刷新刚刚领取最后一个奖励 则打开求子界面
- if need_check then
- local new_get_state = self:HasGetAllHeartReward( ) --更新数据后的领取状态
- if new_get_state and not old_get_state then
- self:Fire(ChildConst.OPEN_CHILD_HEART_TASK_VIEW, false) -- 关闭同心界面
- self:Fire(ChildConst.OPEN_CHILD_GET_VIEW, true) -- 打开领养界面
- self:Fire(ChildConst.UPDATA_CHILD_MAIN_INFO) -- 请求刷新图标
- self:Fire(ChildConst.Child_RED_DOT,ChildConst.TabId.GetChild)
- end
- end
- end
-
- -- 获取领取状态 1已领取 0未领取
- function ChildModel:GetHeartRewardStatus( reward_id )
- if reward_id and self.childInfo.heart_reward and self.childInfo.heart_reward[reward_id] then
- return self.childInfo.heart_reward[reward_id]
- end
- end
-
- -- 完成某个同心任务后 设置数据
- function ChildModel:SetChildInfoForTask(heart_link_exp)
- self.childInfo.heart_link_exp = heart_link_exp or 0 -- 设置同心度
- end
-
- --- 仅自己用
- --- 通过当前的同心度和等级获取孩子模型id (如果有时装穿戴中就用时装对应model_id)
- function ChildModel:GetChildCloth()
- local child_age_month = self.childInfo.child_age_month or 0
- local clothe_res_id_self = 1011 -- 默认模型(供未开放宝宝时显示用)
- if self.childInfo.child_sex and self.childInfo.child_sex ~= 0 then
- if self.wear_fashion_id ~= 0 then -- 有穿时装 直接飞回
- return self:GetFashionModelID( self.wear_fashion_id )
- end
- for k,v in ipairs(self.Config_Child_Figure[self.childInfo.child_sex]) do
- if child_age_month >= v.grow_up_level then
- clothe_res_id_self = v.model_id
- end
- end
- end
- return clothe_res_id_self
- end
-
- -- 获取当前自己的孩子成熟期模型 (有时装就返回时装)
- function ChildModel:GetBigChildCloth( )
- local child_sex = self.childInfo.child_sex and self.childInfo.child_sex or 1 -- 默认值是男宝宝
- -- 有穿时装 直接飞回
- if self.wear_fashion_id ~= 0 then
- return self:GetFashionModelID( self.wear_fashion_id )
- end
- -- 取得成熟期模型
- local clothe_res_id_self = self:GetBigNormalChildCloth( child_sex )
-
- return clothe_res_id_self or 1021
- end
-
- -- 获取宝宝成熟模型(不判断时装)
- function ChildModel:GetBigNormalChildCloth( child_sex )
- if not self.normal_big_child_cloth then
- self.normal_big_child_cloth = {} -- 缓存
- for i=1, 2 do
- local temp_age_month = 0
- for k,v in ipairs(self.Config_Child_Figure[i]) do
- if temp_age_month < v.grow_up_level then
- temp_age_month = v.grow_up_level
- self.normal_big_child_cloth[i] = v.model_id
- end
- end
- end
- end
- return self.normal_big_child_cloth[child_sex]
- end
-
- -- 根据时装id获取对应模型id
- function ChildModel:GetFashionModelID( fashion_id, child_sex )
- local child_sex = child_sex
- if not child_sex then -- 如果没有指定性别 就拿model记录的自己宝宝的性别
- child_sex = self.childInfo.child_sex or 1
- end
- local cfg = self.Config_Child_Fashion[fashion_id][1]
- local model_list = stringtotable(cfg.model_id)
- return tonumber(model_list[child_sex][2])
- end
-
- -- 根据时装id获取对应模型id
- function ChildModel:GetVehicleModelID( fashion_id )
- --print('Msh:ChildModel.lua[282] fashion_id', fashion_id)
- -- PrintCallStack()
- if self.Config_Child_Vehicle[fashion_id] and self.Config_Child_Vehicle[fashion_id][1] then
- local cfg = self.Config_Child_Vehicle[fashion_id][1]
- return cfg.model_id
- else
- return 0 -- 默认值
- end
-
- end
-
- -- 通过传入的 宝宝年龄月份 + 性别 + 时装id = 获取模型id
- function ChildModel:GetChildClothByParam( child_age_month, child_sex, fashion_id )
- -- print('Msh:ChildModel.lua[295] data', child_age_month, child_sex, fashion_id)
- if fashion_id and child_sex and tonumber(fashion_id) ~= 0 then -- 有时装id和性别
- return self:GetFashionModelID( fashion_id, child_sex )
- elseif child_age_month and child_sex then
- local clothe_res_id_self = 1011
- if not (child_sex == 1 or child_sex == 2) then -- 性别数据异常
- -- print('Msh:ChildModel.lua[287] child_sex', child_sex)
- child_sex = 1
- end
- for k,v in ipairs(self.Config_Child_Figure[child_sex]) do
- if child_age_month >= v.grow_up_level then
- clothe_res_id_self = v.model_id
- end
- end
- return clothe_res_id_self
- else
- print('Msh:ChildModel.lua[259] error:', child_age_month, child_sex, fashion_id )
- end
- end
-
- -- 传入child_fashion穿戴时装列表 得到穿戴中的时装(注:类型2装饰已废弃)
- -- fashion_list:array{
- -- type :int8 //时装类型 1-时装 2-装饰
- -- fashion_id :int32 //时装Id 0-没有穿戴时装 其他-具体穿戴时装Id
- -- }
- function ChildModel:GetChildFashionID( fashion_list )
- -- print('Msh:ChildModel.lua[321] data')
- -- PrintTable(fashion_list)
- for i,v in ipairs(fashion_list) do
- if v.type == 1 then
- return v.fashion_id ~= 0 and v.fashion_id or nil
- end
- end
- end
-
- --[[-- 设置当前宝宝模型id
- function ChildModel:SetChildInfoForRoleModel(figure_id)
- if figure_id then
- self.childInfo.figure_id = figure_id
- else
-
- end
- end
-
- function ChildModel:GetChildRoleListData( )
- return self.childInfo.figure_id
- end--]]
-
- -- 获取孩子当前的成长属性
- function ChildModel:GetChildNowGrowUpInfo()
- local cfg = self.Config_Child_GrowUp[self.childInfo.child_age_month]
- assert(cfg, string.format("Msh:error! please check: %s", self.childInfo.child_age_month) )
- return cfg
- end
-
- -- 获取孩子下一级的成长属性
- function ChildModel:GetChildNextGrowUpInfo()
- if not self.childInfo.child_age_month then return end
- local cfg = self.Config_Child_GrowUp[self.childInfo.child_age_month + 1]
- --assert(cfg, string.format("Msh:error! please check: %s", self.childInfo.child_age_month + 1) )
- return cfg
- end
-
- -- 获取同心配置
- function ChildModel:GetChildLinkHeartInfo()
- return self.Config_Child_LinkHeart
- end
-
- -- 获取常量键值
- function ChildModel:GetConfigChildKvVal(keyName)
- assert(self.Config_Child_kv[keyName], string.format('Msh:error! please check: %s', keyName) )
- return self.Config_Child_kv[keyName]
- end
-
- ---获取最基础的一级skillList
- function ChildModel:GetConfigChildSkillBase( )
- local list_base_skill = {}
- for k,v in pairs(self.Config_Child_Skill) do
- if v.level == 1 then
- table.insert(list_base_skill,v)
- end
- end
- return list_base_skill
- end
-
- function ChildModel:GetChildSkillList( )
- return self.childSkillList
- end
-
- --[[
- 与后端结合成目前技能表
- ]]
- function ChildModel:SetChildSkillList( vo )
- local baseList = self:GetConfigChildSkillBase()
- local mixList = {}
- for k,v in pairs(baseList) do
- local skillId = stringtotable(v.active_skill)[1][1]
- local skillLv = 0
- for k_s,v_s in pairs(vo.skill_list) do
- if v_s.skill_id == skillId then
- skillLv = v_s.skill_lv
- end
- end
- local new_list = {}
- new_list.skill_id = skillId
- new_list.skill_lv = skillLv
- new_list.sequence = v.sequence
- table.insert(mixList,new_list)
- end
-
- local function sort_func(a, b)
- return a.sequence < b.sequence
- end
- table.sort(mixList, sort_func)
-
- self.childSkillList = mixList
- self:SetCanUseSkillList()
- end
-
- -- 设置当前可以使用的技能列表
- function ChildModel:SetCanUseSkillList( )
- for k,v in pairs(self.childSkillList) do
- local list = ConfigItemMgr.Instance:GetSkillItem(v.skill_id)
- if list and list.type == 1 and v.skill_lv > 0 then -- 是主动且已经学习
- table.insert(self.can_use_skill_list, v.skill_id)
- end
- end
- end
-
- function ChildModel:GetCanUseSkillList( )
- return self.can_use_skill_list
- end
-
- --
- function ChildModel:GetConfigChildSkillNearActiveLevel(active_skill_lv)
- for k,v in pairs(self.Config_Child_Skill) do
- if stringtotable(v.active_skill)[1][2] == active_skill_lv then
- return v.level
- end
- end
- return false
- end
-
- ---找技能表info
- function ChildModel:GetConfigChildSkillInfo(skill_id,skill_lv)
- for k,v in pairs(self.Config_Child_Skill) do
- local skillId = stringtotable(v.active_skill)[1][1]
- if v.level == skill_lv and skillId == skill_id then
- return v
- elseif skill_lv == 0 then
- local list_first = self:GetConfigChildSkillInfo(skill_id,1)
- return{
- level = 0,
- skill_desc = list_first.skill_desc,
- add_attr_list = {},
- sequence = list_first.sequence,
- skill_name = list_first.skill_name,
- }
- end
- end
- end
-
- -- 检查宝宝技能是否开放
- function ChildModel:CheckSkillIsOpen( )
- return self.childInfo.child_age_month and self.childInfo.child_age_month >= self:GetConfigChildKvVal("skill_open_stage") * 10
- end
-
- --选中当前的v
- function ChildModel:GetChildSkillShowAttrList(sequence,level)
- local skill_list_before = {}
- if level > 0 then
- skill_list_before = self.Config_Child_Skill[sequence.."@"..level]
- end
-
- local skill_list_after = self.Config_Child_Skill[sequence.."@"..level+1]
-
- local attr_list_before = skill_list_before and stringtotable(skill_list_before.add_attr_list) or {}
- local attr_list_after = skill_list_after and stringtotable(skill_list_after.add_attr_list) or {}
- local attr_id,num_after,num_before = 0 -- num_after是配置表的
- local attr_list = {}
-
- if not skill_list_after then
- for k,v in pairs(attr_list_before) do
- attr_id = v[1]
- num_before = v[2]
- num_after = ""
- local list = {}
- list.attr_id = attr_id
- list.num_before = num_before
- list.num_after = num_after
- table.insert(attr_list,list)
- end
- else
- for k,v in pairs(attr_list_after) do
- attr_id = v[1]
- num_before = 0
- num_after = v[2]
- for k_b,v_b in pairs(attr_list_before) do
- if v_b[1] == v[1] then
- num_before = v_b[2]
- end
- end
- local list = {}
- list.attr_id = attr_id
- list.num_before = num_before
- list.num_after = num_after
- table.insert(attr_list,list)
- end
- end
-
- return attr_list
- --self.attr_item_list[k]:SetData(attr_id,num_before,num_after)
- end
-
- --[[
- 与后端结合成目前载具表
- ]]
- --[[function ChildModel:SetChildVehicleList( vo )
- local list_base_vehicle = {}
- for k,v in pairs(self.Config_Child_Vehicle) do
- if v.stage == 1 then
- table.insert(list_base_vehicle,v)
- end
- end
- local mixList = {}
- for k,v in pairs(list_base_vehicle) do
- --local vehicle_id = 0
- local stage = 0
- for k_s,v_s in pairs(vo.vehicle_list) do
- if v_s.vehicle_id == v.vehicle_id then
- stage = v_s.vehicle_stage
- end
- end
- local new_list = {}
- new_list.vehicle_id = v.vehicle_id
- new_list.stage = stage
- table.insert(mixList,new_list)
- end
-
- local function sort_func(a, b)
- return a.vehicle_id < b.vehicle_id
- end
- table.sort(mixList, sort_func)
-
- self.childVehicleList.vehicle_list = mixList
- self.childVehicleList.show_vehicle = vo.show_vehicle
- end
- --]]
-
- -- ---找载具表info
- -- function ChildModel:GetConfigChildVehicleInfo(vehicle_id,stage)
- -- for k,v in pairs(self.Config_Child_Vehicle) do
- -- --local skillId = stringtotable(v.active_skill)[1][1]
- -- if v.stage == stage and v.vehicle_id == vehicle_id then
- -- return v
- -- elseif stage == 0 then
- -- local list_first = self:GetConfigChildVehicleInfo(vehicle_id,1)
- -- return{
- -- level = 0,
- -- --skill_desc = list_first.skill_desc,
- -- add_attr = {},
- -- vehicle_id = list_first.vehicle_id,
- -- --active_skill = {},
- -- --active_cost = {},
- -- vehicle_name = list_first.vehicle_name,
- -- --pre_sequence = 0,
- -- --need_power = 10000,
- -- }
- -- end
- -- end
- -- --return nil
- -- end
-
- --[[function ChildModel:GetChildVehicleShowAttrList(vehicle_id,stage)
- local vehicle_list_before = {}
- if stage > 0 then
- vehicle_list_before = self.Config_Child_Vehicle[vehicle_id.."@"..stage]
- end
-
- local vehicle_list_after = self.Config_Child_Vehicle[vehicle_id.."@"..stage+1]
-
- local attr_list_before = vehicle_list_before and stringtotable(vehicle_list_before.add_attr) or {}
- local attr_list_after = vehicle_list_after and stringtotable(vehicle_list_after.add_attr) or {}
- local attr_id,num_after,num_before = 0 -- num_after是配置表的
- local attr_list = {}
-
- if not vehicle_list_after then
- for k,v in pairs(attr_list_before) do
- attr_id = v[1]
- num_before = v[2]
- num_after = ""
- local list = {}
- list.attr_id = attr_id
- list.num_before = num_before
- list.num_after = num_after
- table.insert(attr_list,list)
- end
- else
- for k,v in pairs(attr_list_after) do
- attr_id = v[1]
- num_before = 0
- num_after = v[2]
- for k_b,v_b in pairs(attr_list_before) do
- if v_b[1] == v[1] then
- num_before = v_b[2]
- end
- end
- local list = {}
- list.attr_id = attr_id
- list.num_before = num_before
- list.num_after = num_after
- table.insert(attr_list,list)
- end
- end
- return attr_list
- end--]]
-
- -- 获取载具技能列表
- function ChildModel:GetChildVehicleSkillList(fashion_id)
- local vehicleSkillList = {}
- -- print('=======Msh:ChildModel.lua[658] ===TABLE====')
- -- PrintTable(self.Config_Child_Vehicle)
- for k,v in pairs(self.Config_Child_Vehicle) do
- if k == fashion_id then
- for ii,vv in pairsByKeys(v) do
- if vv.active_skill and vv.active_skill ~= 0 then
- table.insert(vehicleSkillList, vv)
- end
- end
- break
- end
- end
- -- print('=======Msh:ChildModel.lua[671] ===TABLE====')
- -- PrintTable(vehicleSkillList)
-
- local function sort_func(a, b)
- if a.stage then
- return a.stage < b.stage
- elseif a.lv then
- return a.lv < b.lv
- end
- end
- table.sort(vehicleSkillList, sort_func)
-
- return vehicleSkillList
- end
-
- function ChildModel:IsPlayerHadChild( )
- return self.isPlayerHadChild
- end
-
- function ChildModel:SetIsPlayerHadChild( bool )
- self.isPlayerHadChild = bool
- end
-
- ----------领养宝宝前置同心任务-start---------
- -- 是否领取了所有奖励(需求是领完所有同心奖励才可以打开领养界面)
- function ChildModel:HasGetAllHeartReward( )
- local has_get_all = true
- for k,v in pairs(Config.Childlinkheart) do
- if self:GetHeartRewardStatus(v.reward_id) ~= 1 then
- has_get_all = false
- break
- end
- end
- return has_get_all
- end
-
- -- 检查图标是否应该开启
- function ChildModel:CheckHeartLinkIconShow( )
- if not GetModuleIsOpen(165, 1, true) then -- 模块未开启
- --logWarn('=======Msh:ChildModel.lua[630]=======')
- return false
- end
-
- self.childInfo.adopt_time = self.childInfo.adopt_time or 0
- if self.childInfo.adopt_time == 0 then -- 未领养孩子
- --logWarn('=======Msh:ChildModel.lua[636]=======')
- return true
- end
-
- local is_today = TimeUtil:IsToday( self.childInfo.adopt_time )
- if is_today then -- 当天领养 还没过天
- --logWarn('=======Msh:ChildModel.lua[642]=======')
- return true
- end
- --logWarn('=======Msh:ChildModel.lua[645]=======')
- return false
- end
-
- -- 更新同心任务列表数据 task_state //任务状态 0-未完成 1-已完成未领取 2-已领取
- function ChildModel:SetTaskInfo(vo_16505)
- --logWarn('=======Msh:ChildModel.lua[629]=======')
- if not vo_16505 then return end
- self.childTaskInfo = {}
- local list1 = {}--两个融一
- local list2 = {}
- local has_can_get = false -- 是否有可以领取的奖励
- -- [1] = {task_id = 1,open_level = 0,desc = [[ 获得135点日常活跃 ]],task_content = [[ [{liveness,0,135}] ]],reward_exp = 20,client_skip = [[ [{157,0}] ]]},
- for k,v in pairs(self.Config_Child_DailyTask) do
- if self.mainVo.level >= v.open_level then
- v.task_state = 0
- v.progress = 0
- v.progress_max = stringtotable(v.task_content)[1][3]
- for k_s,v_s in pairs(vo_16505) do
- if v.task_id == v_s.sequence then
- v.progress = v_s.progress
- v.task_state = v_s.task_state
- end
- end
- if v.task_state == 2 then -- 把已领取的单独拉开之后加到最后
- table.insert(list2,v)
- else
- table.insert(list1,v)
- if v.task_state == 1 then -- 可以领未领
- has_can_get = true
- end
- end
- end
- end
- self.heart_main_task_red = has_can_get
- local sort_func = function ( a, b )
- return a.task_state > b.task_state
- end
- table.sort(list1, sort_func)
-
- for k,v in pairs(list2) do
- table.insert(list1,v)
- end
-
- self.childTaskInfo = list1
- end
-
- -- 获取同心任务列表
- function ChildModel:GetChildDailyTaskList()
- return self.childTaskInfo
- end
-
- -- 获取哺乳期的孩子模型id
- function ChildModel:GetChildOriginalModelID( child_sex )
- local model_list = stringtotable( self:GetConfigChildKvVal("original_model") )[1]
- assert(model_list[child_sex], string.format('Msh:error! please check: %s', child_sex) )
- return tonumber( model_list[child_sex] )
- end
-
- -- 需求:每次打开同心任务界面,展示的婴儿宝宝性别变更
- -- 同心任务:变更性别
- function ChildModel:ChangeHeartTaskChildSex( )
- self.heart_child_sex = self.heart_child_sex == 1 and 2 or 1
- end
-
- -- 同心任务:获取性别
- function ChildModel:GetHeartTaskChildSex( )
- return self.heart_child_sex
- end
-
- -- 同心任务红点相关
- function ChildModel:UpdateHeartIconRed( )
- self:UpdateHeartRewardRed()
- self.heart_icon_red = self.heart_main_task_red or self.heart_progress_red
- end
-
- -- 获取同心任务图标红点
- function ChildModel:GetHeartIconRed( )
- return self.heart_icon_red
- end
-
- -- 更新同心任务进度奖励红点
- function ChildModel:UpdateHeartRewardRed( )
- local cur_heart_value = self:GetCurHeartValue( )
- local bool = false
- for heart_value, data in pairsByKeys(self:GetChildLinkHeartInfo()) do
- if heart_value <= cur_heart_value then -- 可以领
- local reward_status = self:GetHeartRewardStatus(data.reward_id)
- if reward_status ~= 1 then -- 还没领
- bool = true
- end
- elseif heart_value > cur_heart_value then -- 没达到条件
- break
- end
- end
- self.heart_progress_red = bool
- end
-
- -- 更新maintaskitem的任务奖励红点
- function ChildModel:UpdateHeartMainTaskRed( )
-
- end
-
- ----------领养宝宝前置同心任务-end-----------
-
- -- 获取孩子投票奖励配置
- function ChildModel:GetConfigChildVoteReward( )
- return self.Config_Child_VoteReward
- end
-
- -- 获取投票角色列表
- function ChildModel:GetChildVotedRoleList()
- return self.childVotedRoleList
- end
-
- -- 设置投票角色列表
- function ChildModel:SetChildVotedRoleList(vo_16519)
- self.childVotedRoleList = vo_16519.role_list
- end
-
- ------------宝宝玩具宝宝装备:
- --[[function ChildModel:GetChildEquipList()
- return self.childEquipList
- end
-
- function ChildModel:RemoveChildEquipList(vo)
- local new_bag_list = {}
- for k,v in pairs(self.childEquipList.bag_list) do
- local isRemove = false
- for k,v_remove in pairs(vo) do
- if v_remove.goods_id == v.goods_id then
- isRemove = true
- end
- end
- if isRemove == false then
- table.insert(new_bag_list,v)
- end
- end
- self.childEquipList.bag_list = new_bag_list
- end
- function ChildModel:SetChildEquipList(vo)
-
- self.childEquipList.carry_weight = vo.carry_weight or 0
- self.childEquipList.can_carry = vo.can_carry or 0
-
- local newEquipList = {}
- local config_equip_list = DeepCopy(self.Config_Child_Toy)
- --print("============>>> YiRan:ChildModel [start:470] ,#vo.bag_list :",#vo.bag_list)
- for had_i,had_v in ipairs(vo.bag_list) do
- for k,v in pairs(config_equip_list) do
- if v.toy_id == had_v.goods_type_id then
- local item_list = {}
- item_list.goods_id = had_v.goods_id
- item_list.goods_type_id = had_v.goods_type_id
- item_list.lv = had_v.lv
- item_list.toy_color = v.toy_color
- item_list.toy_weight = v.toy_weight
- item_list.attr_list = v.attr_list
- table.insert(newEquipList,item_list)
- end
- end
- end
- self.childEquipList.bag_list = newEquipList
- --print("============>>> YiRan:ChildModel [start:485] #newEquipList :",#newEquipList)
- --------穿戴
- local newSlotList = vo.slot_list
-
- for i=1,ChildConst.ChildEquipWearMaxNum do -- 6个槽填满
- local isHave = false
- for k,v in pairs(newSlotList) do
- if v.slot_id == i then
- --print("============>>> YiRan:ChildModel [start:492] v.slot_id :",v.slot_id)
- isHave = true
- for k,v_config in pairs(config_equip_list) do
- if v_config.toy_id == v.goods_type_id then
- print("============>>> YiRan:ChildModel [start:508] v.goods_id :",v.goods_id)
- v.toy_color = v_config.toy_color
- v.toy_weight = v_config.toy_weight
- v.attr_list = v_config.attr_list
- end
- end
- end
- end
- if isHave == false then
- local new_slot_list_item = {}
- new_slot_list_item.goods_type_id = 0
- new_slot_list_item.is_open = 0
- new_slot_list_item.slot_id = i
- new_slot_list_item.lv = 0
- new_slot_list_item.goods_id = 0
- --newSlotList[i] = new_slot_list_item
- table.insert(newSlotList,new_slot_list_item)
- end
- end
-
-
-
-
- local function sort_func(a, b)
- return a.slot_id < b.slot_id
- end
- table.sort(newSlotList, sort_func)
- self.childEquipList.slot_list = newSlotList or {}
- --print("=============>>> YiRan:ChildModel [start:506] self.childEquipList.slot_list ------------------------------------------")
- --PrintTable(self.childEquipList.slot_list)
- --print("=============>>> YiRan:ChildModel [end] ------------------------------------------")
- end
-
- function ChildModel:SetChildEquipBuildList(vo)
- vo = vo or {}
- local mixBulidList = {}
- for i=1,#self.Config_Child_ForgeSlotOpen do
- local isHave = false
- for k,v in pairs(vo) do
- if v.slot_id == i then
- isHave = true
- if v.use_status == 1 then --打造中的把时间加进去
- for c_k,c_v in pairs(self.Config_Child_ForgetTime) do
- if c_v.id == v.select_id then
- v.need_time = c_v.need_time
- table.insert(mixBulidList,v)
- end
- end
- else --
- table.insert(mixBulidList,v)
- end
- end
- end
- if isHave == false then
- local new_list = {}
- new_list.slot_id = i
- new_list.is_open = 0
- new_list.use_status = 0
- new_list.start_time = 0
- new_list.select_id = 0
- new_list.cost = stringtotable(self.Config_Child_ForgeSlotOpen[i].condition)
- --newSlotList[i] = new_list
- table.insert(mixBulidList,new_list)
- end
-
- end
-
-
-
- local function sort_func(a, b)
- return a.slot_id < b.slot_id
- end
- table.sort(mixBulidList, sort_func)
-
- self.childEquipBuildList = mixBulidList
- end
- function ChildModel:GetChildEquipBuildList()
- return self.childEquipBuildList
- end
-
- function ChildModel:GetChildEquipSpeedUpBuildCost( time )
-
- for k,v in pairs(self.Config_Child_SpeedUp) do
- if time >= v.time_low and time < v. time_high and v.time_low ~= 0 then
- print("=============>>> YiRan:ChildModel [start:517] v.cost ------------------------------------------")
- PrintTable(v.cost)
- print("=============>>> YiRan:ChildModel [end] ------------------------------------------")
- local cost_list = stringtotable(v.cost)[1]
- if cost_list[1] == 1 then
- return cost_list[2]
- end
- end
- end
- return 0
- end
-
- function ChildModel:GetChildEquipBagItemList(goods_id)
- for k,v in pairs(self.childEquipList.bag_list) do
- if v.goods_id == goods_id then
- return v
- end
- end
- end
-
- function ChildModel:GetChildEquipWearItemList(goods_id) -- 背包和穿戴的装备两个是不同的list获取
- for k,v in pairs(self.childEquipList.slot_list) do
- if v.goods_id == goods_id then
- return v
- end
- end
- end
-
- function ChildModel:GetChildEquipIdAndColorAndTypeAndLv(goods_id)--唯一ID获取玩具类型和重量type
- local goods_type_id = 0
- local toy_type = 0
- local lv = 0
- local toy_color = 0
- for k,v in pairs(self.childEquipList.bag_list) do
- if v.goods_id == goods_id then
- goods_type_id = v.goods_type_id
- lv = v.lv
- end
- end
- if goods_type_id == 0 then -- 没有的话去穿戴获取
- for k,v in pairs(self.childEquipList.slot_list) do
- if v.goods_id == goods_id then
- goods_type_id = v.goods_type_id
- lv = v.lv
- end
- end
- end
- if self.Config_Child_Toy[goods_type_id] then
- toy_type = self.Config_Child_Toy[goods_type_id].toy_type
- toy_color = self.Config_Child_Toy[goods_type_id].toy_color
- end
-
- return goods_type_id,toy_color,toy_type,lv
- end
-
- function ChildModel:GetChildConfigStrenToyInfo(toy_color,toy_type,stren_lv)
- if stren_lv < 0 then
- return nil
- end
- return self.Config_Child_ToyStren[toy_color.."@"..toy_type.."@"..stren_lv]
-
-
- end
-
- function ChildModel:GetChildStrenShowAttrList(toy_color,toy_type,stren_lv,lvLenth)
- local vehicle_list_before = {}
- if stren_lv > 0 then
- vehicle_list_before = self.Config_Child_ToyStren[toy_color.."@"..toy_type.."@"..stren_lv]
- end
-
- local vehicle_list_after = self.Config_Child_ToyStren[toy_color.."@"..toy_type.."@"..stren_lv+lvLenth]
-
- local attr_list_before = vehicle_list_before and stringtotable(vehicle_list_before.add_attr) or {}
- local attr_list_after = vehicle_list_after and stringtotable(vehicle_list_after.add_attr) or {}
- local attr_id,num_after,num_before = 0 -- num_after是配置表的
- local attr_list = {}
-
- if not vehicle_list_after then
- for k,v in pairs(attr_list_before) do
- attr_id = v[1]
- num_before = v[2]
- num_after = ""
- local list = {}
- list.attr_id = attr_id
- list.num_before = num_before
- list.num_after = num_after
- table.insert(attr_list,list)
- end
- else
- for k,v in pairs(attr_list_after) do
- attr_id = v[1]
- num_before = 0
- num_after = v[2]
- for k_b,v_b in pairs(attr_list_before) do
- if v_b[1] == v[1] then
- num_before = v_b[2]
- end
- end
- local list = {}
- list.attr_id = attr_id
- list.num_before = num_before
- list.num_after = num_after
- table.insert(attr_list,list)
- end
- end
- return attr_list
- end--]]
-
- ----------宝宝时装-start---------
- -- 根据是时装类型获取时装列表
- function ChildModel:GetChildDressList()
- return self.childDressList
- end
-
- -- 判断目标时装是否是满级
- function ChildModel:IsChildFashionLvMax(fashion_id,lv)
- -- local max = 0
- -- for k,v in pairs(self.Config_Child_Fashion) do
- -- if v.fashion_id == fashion_id then
- -- if v.lv > max then
- -- max = v.lv
- -- end
- -- end
- -- end
- -- if max <= lv then
- -- return true
- -- else
- -- return false
- -- end
- -- 没有下一级的配置说明已经满级
- return self.Config_Child_Fashion[fashion_id][lv + 1] == nil
- end
-
- -- 获取时装配置
- function ChildModel:GetConfigChildFashionList(fashionId,lv)
- if self.Config_Child_Fashion[fashionId][lv] then
- return self.Config_Child_Fashion[fashionId][lv]
- else
- return self.Config_Child_Fashion[fashionId][lv - 1]
- end
- end
-
- -- 设置孩子的时装列表 根据类型
- function ChildModel:SetChildDressList(fashionType, fashion_list)
- if fashionType ~= 1 then return end -- 只要类型1才需要赋值
- local fashion_list = fashion_list or {}
-
- self.childDressList = {}
- for fashion_id, v in pairs(self.Config_Child_Fashion) do
- local data = DeepCopy(v[1])
- data.active = false
- data.lv = 0
- data.state = 0
- self.childDressList[fashion_id] = data
- end
-
- local wear_id = 0
- for k, v in pairs(fashion_list) do
- local temp = self.childDressList[v.fashion_id]
- temp.lv = v.lv
- temp.state = v.state
- temp.active = true -- 后端返回了这个数据 说明已激活
- temp.attr_list = self:GetConfigChildFashionList(v.fashion_id,v.lv).attr_list
- temp.upgrade_cost = self:GetConfigChildFashionList(v.fashion_id,v.lv + 1).upgrade_cost
- -- 如果穿戴中 记录一下
- if temp.state == 1 then
- wear_id = v.fashion_id
- end
- end
- -- 更新一下穿戴中的时装id
- if wear_id ~= 0 then
- self.wear_fashion_id = wear_id
- else
- self.wear_fashion_id = 0
- end
- end
-
- --
- function ChildModel:GetCurWearID( )
- return self.wear_fashion_id or 0
- end
-
- -- 检查宝宝时装是否开放
- function ChildModel:CheckDressIsOpen( )
- return self.childInfo.child_age_month and self.childInfo.child_age_month >= self.max_grow_state
- end
-
- -- 获取宝宝成熟期成长等级
- function ChildModel:GetChildMaxGrowState( )
- return self.max_grow_state
- end
-
- -- 根据物品id获取时装id(目前的时装id就是物品id)
- function ChildModel:GetFashionIdByGoodsId( type_id )
- local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id)
- if basic then
- if basic.type == GoodsModel.TYPE.CHILDTOY then
- if self.Config_Child_Fashion[type_id] then
- return type_id
- end
- end
- end
- end
-
- -----------------载具类时装--------------------
- -- 判断目标时装是否是满级
- function ChildModel:IsChildVehicleLvMax(fashion_id,lv)
- -- 没有下一级的配置说明已经满级
- return self.Config_Child_Vehicle[fashion_id][lv + 1] == nil
- end
- -- 拿处理好的载具数据 (后端数据与配置结合)
- function ChildModel:GetChildVehicleList( )
- return self.childVehicleList
- end
-
- -- 获取载具配置
- function ChildModel:GetConfigChildVehicleList(fashionId,lv)
- if self.Config_Child_Vehicle[fashionId][lv] then
- return self.Config_Child_Vehicle[fashionId][lv]
- else
- return self.Config_Child_Vehicle[fashionId][lv - 1]
- end
- end
-
- -- 设置孩子的载具类时装列表 根据类型
- function ChildModel:SetChildVehicleList(fashion_list)
- local fashion_list = fashion_list or {}
-
- self.childVehicleList = {}
- for fashion_id, v in pairs(self.Config_Child_Vehicle) do
- local data = DeepCopy(v[1])
- data.active = false
- data.lv = 0
- data.state = 0
- self.childVehicleList[fashion_id] = data
- end
-
- local wear_id = 0
- for k, v in pairs(fashion_list) do
- local temp = self.childVehicleList[v.vehicle_id]
- temp.lv = v.vehicle_stage
- temp.state = self:GetChildVehicleID( ) == v.vehicle_id and 1 or 0
- --print('Msh:ChildModel.lua[1112] data', self:GetChildVehicleID( ), v.vehicle_id, temp.state)
- temp.active = v.vehicle_stage > 0
- temp.attr_list = self:GetConfigChildVehicleList(v.vehicle_id,v.vehicle_stage).attr_list
- temp.upgrade_cost = self:GetConfigChildVehicleList(v.vehicle_id,v.vehicle_stage + 1).upgrade_cost
- end
- end
-
- -- 设置孩子当前的坐骑 [set_type 0-没有幻化的载具 其他-具体幻化载具Id]
- function ChildModel:SetChildVehicleFollow( set_type,vehicle_id )
- local show_vehicle = 0
- if set_type == 1 then
- show_vehicle = vehicle_id
- end
- self.show_vehicle_id = show_vehicle
- end
-
- -- 获取孩子当前的坐骑
- function ChildModel:GetChildVehicleID( )
- return self.show_vehicle_id or 0
- end
-
- -- 根据物品id获取载具id(目前的载具id就是物品id)
- function ChildModel:GetVehicleIdByGoodsId( type_id )
- local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id)
- if basic then
- if basic.type == GoodsModel.TYPE.CHILDTOY then
- if self.Config_Child_Vehicle[type_id] then
- return type_id
- end
- end
- end
- end
- ----------宝宝时装-end-----------
-
- ----------孩子培养(成长)-start---------
-
- function ChildModel:GetChildFeedList()
- local feedList = {}
- table.insert(feedList,stringtotable(self:GetConfigChildKvVal("low_feed"))[1])
- table.insert(feedList,stringtotable(self:GetConfigChildKvVal("mid_feed"))[1])
- table.insert(feedList,stringtotable(self:GetConfigChildKvVal("high_feed"))[1])
- return feedList
- end
-
- function ChildModel:GetBreakShowList(break_list)
- local config_goods_decompose = Config.Goodsdecompose
- local getList = {}
-
- local AddListSamePorp = function ( porpList,getList )
- for k,v in pairs(porpList) do
- if v[1] == 0 then
- local isHad = false
- for k_g,v_g in pairs(getList) do
- if v_g.good_id == v[2] then
- isHad = true
- v_g.num = v_g.num + v[3]
- end
- end
- if isHad == false then
- local list = {}
- list.good_id = v[2]
- list.num = v[3]
- table.insert(getList,list)
- end
- end
- end
- end
- ----自身的价值
- for k,v in pairs(break_list) do
- local porpList = stringtotable(config_goods_decompose[v.type_id].regular_mat)
- AddListSamePorp(porpList,getList)
- end
- -----强化的价值
- local AddBagLevelSternBreakShow = function (v_bag)
- for i=1,v_bag.lv do
- local stren_list = self:GetChildConfigStrenToyInfo(v_bag.toy_color,v_bag.toy_weight,i)
- local porpList = stringtotable(stren_list.cost)
- AddListSamePorp(porpList,getList)
- end
- end
-
- for k,v in pairs(break_list) do
- for k,v_bag in pairs(self:GetChildEquipList().bag_list) do
- if v.goods_id == v_bag.goods_id then
- if v_bag.lv > 0 then
- AddBagLevelSternBreakShow(v_bag)
- end
- end
- end
- end
-
- return getList
-
- end
- ----------孩子培养(成长)-end-----------
-
- ----------玩具收集(图鉴)-start---------
-
- function ChildModel:GetToySuitInfo( )
- local config_Child_ToySuit = self.Config_Child_ToySuit
- local sort_func = function ( a, b )
- return a.sequence < b.sequence
- end
- table.sort(config_Child_ToySuit, sort_func)
- return config_Child_ToySuit
- end
-
- function ChildModel:GetChildSuitRewardList( )
- return self.childSuitRewardList
- end
- function ChildModel:SetChildSuitRewardList( vo16534 )
-
- for k,v in pairs(vo16534.suit_list) do
- self.childSuitRewardList[v.suit_type] = {}
- self.childSuitRewardList[v.suit_type].suit_type = v.suit_type
- self.childSuitRewardList[v.suit_type].progress = v.progress
- self.childSuitRewardList[v.suit_type].status = v.status
- self.childSuitRewardList[v.suit_type].time = v.time
-
-
- ---算百分比
- local list_base = {}
- for k_c,v_c in pairs(self.Config_Child_ToyNew) do
- if v_c.suit_type == v.suit_type then
- table.insert(list_base,v_c)
- end
- end
-
- local collectMaxNum = TableSize(list_base)
- local percentNum = "0%"
- if v.progress > 0 then
- percentNum = (v.progress*100 / collectMaxNum).."%"
- end
- self.childSuitRewardList[v.suit_type].collectMaxNum = collectMaxNum
- self.childSuitRewardList[v.suit_type].percent_txt = percentNum
-
- end
-
- for i=1,TableSize(self.Config_Child_ToySuit) do
- if TableSize(self.childSuitRewardList[i]) < 1 then
- local list_base = {}
- for k_c,v_c in pairs(self.Config_Child_ToyNew) do
- if v_c.suit_type == i then
- table.insert(list_base,v_c)
- end
- end
-
- local collectMaxNum = TableSize(list_base)
-
- self.childSuitRewardList[i] = {}
- self.childSuitRewardList[i].suit_type = i
- self.childSuitRewardList[i].progress = 0
- self.childSuitRewardList[i].status = 0
- self.childSuitRewardList[i].time = 0
- self.childSuitRewardList[i].collectMaxNum = collectMaxNum
- self.childSuitRewardList[i].percent_txt = "0%"
- end
- end
-
- end
- function ChildModel:GetSuitToyBoxLv( )
- return self.toy_box_lv or 0
- end
-
- function ChildModel:GetSuitToyList( suit_type )
- if suit_type then
- local list = {}
- for k,v in pairs(self.childSuitToyList) do
- if v.suit_type == suit_type then
- table.insert(list,v)
- end
- end
- return list
- else
- return self.childSuitToyList
- end
-
- end
-
- function ChildModel:SetSuitTypeToyList( vo16533 )
- local list_base = {}
- self.child_acitve_toy_list = {}
- self.toy_box_lv = vo16533.toy_box_lv
- for k,v in pairs(DeepCopy(self.Config_Child_ToyNew)) do
- for k_toy,v_toy in pairs(vo16533.toy_list) do
- if v_toy.toy_id == v.toy_id then
- v.isActive = true
- table.insert(self.child_acitve_toy_list,v.toy_id)
- end
- end
- table.insert(list_base,v)
- end
-
- local sort_func = function ( a, b )
- return a.toy_id < b.toy_id
- end
- table.sort(list_base, sort_func)
-
- --print("=============>>> YiRan:ChildModel [start:933] list_base ------------------------------------------")
- --PrintTable(list_base)
- --print("=============>>> YiRan:ChildModel [end] ------------------------------------------")
-
- self.childSuitToyList = list_base
-
- end
-
- function ChildModel:GetChildHandbookBreakList()
- local goods = GoodsModel:getInstance()
- local colorNums ={
- [0] = {["good_sum"] = 0,["decompose_sum"] = 0,["goods_list"] = {}},
- [1] = {["good_sum"] = 0,["decompose_sum"] = 0,["goods_list"] = {}},
- [2] = {["good_sum"] = 0,["decompose_sum"] = 0,["goods_list"] = {}},
- [3] = {["good_sum"] = 0,["decompose_sum"] = 0,["goods_list"] = {}},
- [4] = {["good_sum"] = 0,["decompose_sum"] = 0,["goods_list"] = {}},
- [5] = {["good_sum"] = 0,["decompose_sum"] = 0,["goods_list"] = {}},
- }
- for k,v in pairs(self.Config_Child_ToyNew) do
- local num = goods:GetTypeGoodsNum(v.toy_id)
- --local decompose_num = stringtotable(v.decompose_reward)[1][3]
- for k,v_active_id in pairs(self.child_acitve_toy_list) do
- if v_active_id == v.toy_id and num > 0 then
- for i=1,5 do
- if v.color == i then
- local list = {}
- list.good_id = v.toy_id
- list.num = num
- table.insert(colorNums[i].goods_list,list)
- local regular_mat = Config.Goodsdecompose[v.toy_id].regular_mat --改成读取通用物品表
- local decompose_num = stringtotable(regular_mat)[1][3]
-
- colorNums[i].good_sum = colorNums[i].good_sum + num
- colorNums[i].decompose_sum = colorNums[i].decompose_sum + (num*decompose_num)
- end
- end
- end
- end
- end
- return colorNums
- end
-
-
- function ChildModel:GetChildHandbookToyUpgradeList(level)
- return self.Config_Child_ToyUpgrade[level]
- end
- --选中当前的v
- function ChildModel:GetChildHandbookItemAttrList(level)
- --print("============>>> YiRan:ChildModel [start:899] level :",level)
- local HbToy_list_before = {}
- if not level then level = 0 end
- if level >= 0 then
- HbToy_list_before = self.Config_Child_ToyUpgrade[level]
- end
-
- local HbToy_list_after = self.Config_Child_ToyUpgrade[level+1]
-
- local attr_list_before = HbToy_list_before and stringtotable(HbToy_list_before.add_attr) or {}
- local attr_list_after = HbToy_list_after and stringtotable(HbToy_list_after.add_attr) or {}
- local attr_id,num_after,num_before = 0 -- num_after是配置表的
- local attr_list = {}
-
- if not HbToy_list_after then
- for k,v in pairs(attr_list_before) do
- attr_id = v[1]
- num_before = v[2]
- num_after = ""
- local list = {}
- list.attr_id = attr_id
- list.num_before = num_before
- list.num_after = num_after
- table.insert(attr_list,list)
- end
- else
- for k,v in pairs(attr_list_after) do
- attr_id = v[1]
- num_before = 0
- num_after = v[2]
- for k_b,v_b in pairs(attr_list_before) do
- if v_b[1] == v[1] then
- num_before = v_b[2]
- end
- end
- local list = {}
- list.attr_id = attr_id
- list.num_before = num_before
- list.num_after = num_after
- table.insert(attr_list,list)
- end
- end
-
- return attr_list
-
- --self.attr_item_list[k]:SetData(attr_id,num_before,num_after)
- end
- ----------玩具收集(图鉴)-end-----------
-
-
- ----------红点逻辑-start---------
-
- function ChildModel:IsRedDotChildTrain( )
- if not self:CheckChildFuncIsOpen() then
- return false
- end
- local isRedDot = false
- local feed_list = self:GetChildFeedList()
- if not feed_list then return end
- for k,v in pairs(feed_list) do
- local hadNum = GoodsModel:getInstance():GetTypeGoodsNum(v[1])
- local growUpNextList = self:GetChildNextGrowUpInfo() --下一级列表
- if hadNum > 0 and growUpNextList then
- isRedDot = true
- return isRedDot
- end
- end
- return isRedDot
- end
-
- function ChildModel:IsRedDotChildCanGet( )
- -- 检查同心任务是否完成
- local finish_heart_link = self:HasGetAllHeartReward( )
- local has_child = self:IsPlayerHadChild()
- return finish_heart_link and not has_child
- end
-
- --[[
- ---成长的红点分离开来给变强
- function ChildModel:IsRedDotChildTrainGrow( )
-
- local open_level = self:GetConfigChildKvVal("growth_open_lv")
- local heart_link_level = self:GetChildInfo().heart_link_level or 0
- local isRedDot = false
- --local task_list = self:GetChildDailyTaskList()
- local feed_list = self:GetChildFeedList()
- if not feed_list then return end
- if heart_link_level >= open_level then
- for k,v in pairs(feed_list) do
- local hadNum = GoodsModel:getInstance():GetTypeGoodsNum(v[1])
- local growUpNextList = self:GetChildNextGrowUpInfo() --下一级列表
- if hadNum > 0 and growUpNextList then
- isRedDot = true
- return isRedDot
- end
- end
- end
-
- return (isRedDot and GetModuleIsOpen(150,1))
- end
- --]]
-
- -- 载具红点:有可以升级的载具
- function ChildModel:IsRedDotChildVehicle( )
- if not self:CheckChildFuncIsOpen() then
- return false
- end
- local isRedDot = false
- local redVehicleList = {}
- local vehicleList = self:GetChildVehicleList( )
- if not vehicleList then return end
- for k,v in pairs(vehicleList) do
- local selectList_next = self:GetConfigChildVehicleList(v.fashion_id, v.lv + 1)
- if TableSize(selectList_next) > 0 then -- 是否是最高级
- local upgrade_cost = stringtotable(selectList_next.upgrade_cost)
- if upgrade_cost[1][1] == 0 then
- local hadNum = GoodsModel:getInstance():GetTypeGoodsNum(upgrade_cost[1][2]) or 0
- if hadNum >= upgrade_cost[1][3] then
- isRedDot = true
- return isRedDot
- end
- end
- end
- end
- return isRedDot
- end
-
-
- function ChildModel:GetOpenSkillNearestId( )
-
- -- skill_id = 500003
- -- sequence = 3
- -- skill_lv = 0
- return self.skill_list_open_nearest
- end
-
- function ChildModel:IsCanUpSkill( )
- local child_age_month = self:GetChildInfo().child_age_month or 0
- local limit_num = self:GetConfigChildKvVal("skill_open_stage")
- return (child_age_month >= limit_num )
- end
-
- function ChildModel:IsRedDotChildSkill( )
- if not self:CheckChildFuncIsOpen() or not self:CheckSkillIsOpen() then
- return false
- end
- local skillList = self:GetChildSkillList( ) --已经按sequence排序过的
- local isRedDot = false
- self.skill_list_open_nearest = nil --最近的为开启那个才有用
- for i,v in ipairs(skillList) do
- if v.skill_lv <= 0 then
- self.skill_list_open_nearest = v --
- break
- end
- end
- if self:IsCanUpSkill() then
- --print("============>>> YiRan:ChildModel [start:530] self.skill_list_open_nearest :",self.skill_list_open_nearest)
- for k,v in pairs(skillList) do
- local skill_list_next = self:GetConfigChildSkillInfo(v.skill_id,v.skill_lv+1)
- if TableSize(skill_list_next) > 0 then -- 是否是最高级
- local active_cost = stringtotable(skill_list_next.active_cost)
- if active_cost[1][1] == 0 then
- local hadNum = GoodsModel:getInstance():GetTypeGoodsNum(active_cost[1][2]) or 0
- if hadNum >= active_cost[1][3] and (not self.skill_list_open_nearest or v.sequence <= self.skill_list_open_nearest.sequence)then
- isRedDot = true
- return isRedDot
- end
- end
- end
- end
- end
- return isRedDot
-
- end
-
- function ChildModel:IsRedDotChildFashion( )
- if not self:CheckChildFuncIsOpen() or not self:CheckDressIsOpen() then
- return false
- end
- for k,v in pairs(ChildConst.ChildDressFashionType) do
- local dressList = self:GetChildDressList(v)
- if dressList then
- for k,v_d in pairs(dressList) do
- local cost_num = stringtotable(v_d.upgrade_cost)[1][3]
- local num = GoodsModel:getInstance():GetTypeGoodsNum(v_d.fashion_id)
- if cost_num <= num then
- if not self:IsChildFashionLvMax(v_d.fashion_id,v_d.lv) then
- return true
- end
- end
- end
- end
- end
- return false
- end
-
- function ChildModel:GetRedDotChildHandbook( )
- return self.red_dot_list_handbook
- end
- function ChildModel:IsRedDotChildHandbook( )
- if not self:CheckChildFuncIsOpen() then
- return false
- end
- local isRedDot = false
-
- self.red_dot_list_handbook.active_list = {}
- self.red_dot_list_handbook.suit_reward_list = {}
- self.red_dot_list_handbook.is_level_up = false
- self.red_dot_list_handbook.is_can_break = false
- --是否有激活
-
- local goods = GoodsModel:getInstance()
- for k,v in pairs(self:GetSuitToyList()) do
- if not v.isActive then --未激活且够数量激活就给红点
- local num = goods:GetTypeGoodsNum(v.toy_id)
- --print("============>>> YiRan:ChildModel [start:1176] num :",num,"v.toy_id:",v.toy_id)
- if num > 0 then
- --logWarn('=======Msh:ChildModel.lua[1559]=======')
- isRedDot = true
- local list = {}
- list.isRedDot = true
- list.toy_id = v.toy_id
- list.suit_type = v.suit_type
- PrintTable(list)
- table.insert(self.red_dot_list_handbook.active_list,list)
- end
- end
- end
- --是否有集满套装
- for k,v in pairs(self:GetChildSuitRewardList()) do
- if v.status == 1 then
- local list = {}
- list.isRedDot = true
- list.suit_type = v.suit_type
- table.insert(self.red_dot_list_handbook.suit_reward_list,list)
- --logWarn('=======Msh:ChildModel.lua[1576]=======')
- isRedDot = true
- end
- end
- ----------是否能升级
- local level = self:GetSuitToyBoxLv()
- local next_cost = stringtotable(self:GetChildHandbookToyUpgradeList(level).next_cost)
- --local had_num = GoodsModel:getInstance():GetTypeGoodsNum(next_cost[1][2])
- local had_num = GoodsModel:getInstance():GetSpecialScore(ChildConst.HandBookCoinID)
- local need_num = next_cost[1][3]
- --print('Msh:ChildModel.lua[1588] had_num', had_num, need_num)
- local up_grade_list_next = self:GetChildHandbookToyUpgradeList(level+1)
- if TableSize(up_grade_list_next) > 0 then--非满级
- if had_num >= need_num then
- isRedDot = true
- --logWarn('=======Msh:ChildModel.lua[1587]=======')
- self.red_dot_list_handbook.is_level_up = true
- end
- end
- --------是否可分解
-
- local break_list = self:GetChildHandbookBreakList()
- for k,v in pairs(break_list) do
- if v.good_sum > 0 then
- isRedDot = true
- --logWarn('=======Msh:ChildModel.lua[1596]=======')
- self.red_dot_list_handbook.is_can_break = true
- end
- end
- --print("=============>>> YiRan:ChildModel [start:1204] self.red_dot_list_handbook ------------------------------------------")
- --PrintTable(self.red_dot_list_handbook)
- --print("=============>>> YiRan:ChildModel [end] ------------------------------------------")
- return isRedDot
- end
-
-
- function ChildModel:IsNeedRed(id)
- local isRedChildTrain = self:GetChildRedDotList()[ChildConst.TabId.ChildTrain] or false
- local isRedChildVehicle = self:GetChildRedDotList()[ChildConst.TabId.ChildVehicle] or false
- local isRedChildSKill = self:GetChildRedDotList()[ChildConst.TabId.ChildSkill] or false
- local isRedChildFashion = self:GetChildRedDotList()[ChildConst.TabId.ChildDress] or false
- local isRedChildHandbook = self:GetChildRedDotList()[ChildConst.TabId.ChildHandbook] or false
- local isRedHeartLink = self:GetChildRedDotList()[ChildConst.TabId.HeartLink] or false
- local isRedGetChild = self:GetChildRedDotList()[ChildConst.TabId.GetChild] or false
- local isRedShowBabyReward = self:GetChildRedDotList()[ChildConst.TabId.ShowBabyReward] or false
- if id == ChildConst.TabId.ChildTrain then
- isRedChildTrain = self:IsRedDotChildTrain() or false
- self.ChildRedDotList[id] = isRedChildTrain
- elseif id == ChildConst.TabId.GetChild then
- isRedGetChild = self:IsRedDotChildCanGet() or false
- self.ChildRedDotList[id] = isRedGetChild
- elseif id == ChildConst.TabId.ChildVehicle then
- isRedChildVehicle = self:IsRedDotChildVehicle() or false
- self.ChildRedDotList[id] = isRedChildVehicle
- elseif id == ChildConst.TabId.ChildSkill then
- isRedChildSkill = self:IsRedDotChildSkill() or false
- self.ChildRedDotList[id] = isRedChildSkill
- elseif id == ChildConst.TabId.ChildDress then
- isRedChildFashion = self:IsRedDotChildFashion() or false
- self.ChildRedDotList[id] = isRedChildFashion
- elseif id == ChildConst.TabId.ChildHandbook then
- isRedChildHandbook = self:IsRedDotChildHandbook() or false
- self.ChildRedDotList[id] = isRedChildHandbook
- elseif id == ChildConst.TabId.HeartLink then
- self:UpdateHeartIconRed()
- isRedHeartLink = self:GetHeartIconRed()
- self.ChildRedDotList[id] = isRedHeartLink
- elseif id == ChildConst.TabId.ShowBabyReward then
- -- self:UpdateShowBabyRewardRed()
- isRedShowBabyReward = self:GetShowBabyRewardRed() or self:GetShowBabyRankReward()
- self.ChildRedDotList[id] = isRedShowBabyReward
- self:Fire(ChildConst.UPDATE_RANK_REWARD_RED)
- else
- end
- ----------------------
- local bool = isRedChildTrain or isRedChildVehicle or isRedChildSkill or isRedChildFashion or isRedChildHandbook or isRedHeartLink or isRedGetChild or isRedShowBabyReward
- --print('=======Msh:ChildModel.lua[1801] =======', isRedChildTrain , isRedChildVehicle , isRedChildSkill , isRedChildFashion , isRedChildHandbook , isRedHeartLink , isRedGetChild , isRedShowBabyReward)
- GlobalEventSystem:Fire(EventName.SHOW_FUNCTION_RED_POINT, 165, bool)
- end
-
- function ChildModel:GetChildRedDotList()
- return self.ChildRedDotList
- end
-
- --货币道具id
- function ChildModel:GetChildCoinId()
- local cost_list = stringtotable(self.Config_Child_ToyUpgrade[1].next_cost)
- return cost_list[1][2]
- end
- ----------红点逻辑-end-----------
-
- -- 获取在宝宝副本内,玩家的宝宝形象
- function ChildModel:GetBabyDunMainRoleBabyClothId( )
- local cloth_id = nil
- -- 考虑到玩家没有激活宝宝的情况,这里需要追加随机一个性别
- local child_sex = self.childInfo.child_sex ~= 0 and self.childInfo.child_sex or math.random(1, 2)
- local child_age_month = self.childInfo.child_age_month or 0
- local figure_size = TableSize(self.Config_Child_Figure[child_sex])
- -- 如果宝宝的阶段低于最终阶段,则使用配置的最终阶段模型,否则使用玩家当前的宝宝形象
- if child_age_month < self.Config_Child_Figure[child_sex][figure_size].grow_up_level then
- cloth_id = ChildConst.BabyDunClothID[child_sex]
- else
- cloth_id = self:GetChildCloth()
- end
-
- return cloth_id
- end
-
- -- 是否已经开启宝宝的各种功能
- function ChildModel:CheckChildFuncIsOpen( )
- -- 等级是否够
- -- 是否完成宝宝前置(同心任务)
- if RoleManager.Instance.mainRoleInfo.level < Config.Moduleid[165].open_lv or
- not self:HasGetAllHeartReward()
- then
- return false
- end
- return true
- end
-
- -- 获得宝宝当前成长状态(自己)
- function ChildModel:GetChildCurState( )
- local child_info = self:GetChildInfo()
- local age_month = child_info.child_age_month and child_info.child_age_month or 0
- return self:GetChildStateByAge( age_month )
- end
-
- -- 传入岁数获取宝宝状态
- function ChildModel:GetChildStateByAge( age_month )
- local age_month = age_month or 0
- if age_month >= self:GetChildMaxGrowState( ) then -- 成熟
- return ChildConst.BABY_STATE.YOUNG
- elseif age_month < self.child_grow_level then -- 襁褓
- return ChildConst.BABY_STATE.BABY
- else -- 爬行
- return ChildConst.BABY_STATE.CHILD
- end
- end
-
- -- 获取宝宝默认状态
- function ChildModel:GetBaseChildModelID( state, child_sex )
- return ChildConst.BaseModelID[state or 1][child_sex or 1] or 1021
- end
-
- -- 判断当前坐骑是否可以穿戴
- function ChildModel:CanUseTargetVehicle( vehicle_id, age_month )
- local cur_state = false
- if age_month then
- cur_state = self:GetChildStateByAge( age_month )
- else
- cur_state = self:GetChildCurState()
- end
- local can_on_age = Config.Childvehicle[vehicle_id .. "@" .. 1].can_on_age
-
- return can_on_age and cur_state and cur_state >= can_on_age
- end
-
- ----------宝宝晒娃奖励红点-start---------
- -- -- 更新每日排行和每日分享红点
- -- function ChildModel:UpdateShowBabyRewardRed( )
-
- -- end
-
- -- 每日分享红点
- function ChildModel:GetShowBabyRewardRed( )
- if not self:CheckChildFuncIsOpen() then
- return false
- end
- local childList = self:GetChildInfo()
- return childList.share_reward ~= 2
- end
-
- -- 每日排行红点
- function ChildModel:GetShowBabyRankReward( )
- if not self:CheckChildFuncIsOpen() then
- return false
- end
- local childList = self:GetChildInfo()
- return childList.yest_reward == 1
- end
- ----------宝宝晒娃奖励红点-end-----------
-
- ----------频道晒娃-start---------
- function ChildModel:SetShowBabyStr( str, need_name )
- -- if need_name then
- -- local childList = self:GetChildInfo()
- -- local child_name = childList.child_name
- -- self.show_baby_str_cache = string.format(str, HtmlColorTxt( child_name, ColorUtil.BLUE_DARK))
- -- else
- self.show_baby_str_cache = str
- -- end
- end
-
- function ChildModel:GetShowBabyStr()
- return self.show_baby_str_cache or ""
- end
- ----------频道晒娃-end-----------
|