源战役客户端
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1920 строки
58 KiB

1 месяц назад
  1. ChildModel = ChildModel or BaseClass(BaseVo, true)
  2. local ChildModel = ChildModel
  3. function ChildModel:__init()
  4. self.Instance = self
  5. self:Reset()
  6. end
  7. function ChildModel:Reset()
  8. self.mainVo = RoleManager.Instance.mainRoleInfo
  9. self.Config_Child_DailyTask = Config.Childdailytask -- 同心前置日常任务配置
  10. self.Config_Child_VoteReward = Config.Childvotereward -- 投票奖励配置
  11. self.Config_Child_Skill = Config.Childskill -- 孩子技能配置
  12. self.Config_Child_ToyNew = Config.Childtoynew -- 孩子玩具配置 新
  13. self.Config_Child_ToyUpgrade = Config.Childtoyboxupgrade -- 孩子玩具升阶配置
  14. self.Config_Child_ToySuit = Config.Childtoysuit -- 孩子玩具图鉴
  15. -- 初始化各种配置
  16. self:InitChildfigureCfg()
  17. self:InitChildkvCfg()
  18. self:InitChildLinkHeartInfo()
  19. self:InitChildgrowupCfg()
  20. self:InitChildfashionCfg()
  21. self:InitChildvehicleCfg( )
  22. self.isPlayerHadChild = false
  23. self.ChildRedDotList = {} --红点集合
  24. self.childInfo = {} --宝宝信息
  25. self.childTaskInfo = {} --任务信息
  26. self.childSkillList = {}--技能信息
  27. self.skill_list_open_nearest = nil --最近一个为开启的技能, 技能得按顺序的
  28. self.childVehicleList = {}--载具信息
  29. self.childVotedRoleList = {}--宝宝已点过的玩家id List
  30. self.childEquipList = {}--宝宝玩具装备
  31. self.childEquipBuildList = {}-- 宝宝玩具打造
  32. self.childDressList = {}-- 宝宝装扮
  33. self.childSuitToyList = {} -- 宝宝图鉴
  34. self.childSuitRewardList = {}-- 宝宝图鉴套装集齐奖励
  35. self.child_acitve_toy_list = {} --- 给分解list计算激活分解用
  36. self.red_dot_list_handbook = {}
  37. self.wear_fashion_id = 0 -- 穿戴中的时装id
  38. self.can_use_skill_list = {} -- 当前可以使用的技能列表
  39. end
  40. function ChildModel:GetInstance()
  41. if self.Instance == nil then
  42. self.Instance = ChildModel.New()
  43. end
  44. return self.Instance
  45. end
  46. function ChildModel:getInstance()
  47. if self.Instance == nil then
  48. self.Instance = ChildModel.New()
  49. end
  50. return self.Instance
  51. end
  52. -------------初始化配置--start-----------
  53. -- 孩子模型对应关系配置
  54. function ChildModel:InitChildfigureCfg( )
  55. self.Config_Child_Figure = {}
  56. self.Config_Child_Figure[1] = {} -- 男
  57. self.Config_Child_Figure[2] = {} -- 女
  58. self.max_grow_state = 0 -- 宝宝最大成长期
  59. self.child_grow_level = 0 -- 婴儿期对应等级
  60. for k, v in pairs(Config.Childfigure) do
  61. if v.model_id == 1011 then
  62. self.child_grow_level = v.grow_up_level
  63. elseif v.model_id == 1021 then
  64. self.max_grow_state = v.grow_up_level
  65. end
  66. table.insert(self.Config_Child_Figure[v.child_sex], v)
  67. end
  68. local function sort_func(a, b)
  69. return a.grow_up_level < b.grow_up_level
  70. end
  71. table.sort(self.Config_Child_Figure[1], sort_func)
  72. table.sort(self.Config_Child_Figure[2], sort_func)
  73. end
  74. -- 常量表
  75. function ChildModel:InitChildkvCfg( )
  76. self.Config_Child_kv = {}
  77. for k, v in pairs(Config.Childkv) do
  78. self.Config_Child_kv[Trim(v.key)] = v.constant
  79. end
  80. end
  81. -- 同心奖励配置
  82. function ChildModel:InitChildLinkHeartInfo( )
  83. self.Config_Child_LinkHeart = {}
  84. local data = self.Config_Child_LinkHeart
  85. -- 以同心值做key
  86. local max_value = 0
  87. for k, v in pairs(Config.Childlinkheart) do
  88. if max_value < v.need_exp then
  89. max_value = v.need_exp
  90. end
  91. data[v.need_exp] = v
  92. data[v.need_exp].reward_new = stringtotable(v.reward)
  93. end
  94. self.MAX_HERAT_VALUE = max_value
  95. end
  96. -- 获取最大同心值
  97. function ChildModel:GetMaxHeartValue( )
  98. return self.MAX_HERAT_VALUE or 0
  99. end
  100. -- 孩子成长属性配置
  101. function ChildModel:InitChildgrowupCfg( )
  102. self.Config_Child_GrowUp = {}
  103. local cfg = self.Config_Child_GrowUp
  104. for k, v in pairs(Config.Childgrowup) do
  105. cfg[v.month] = v
  106. end
  107. end
  108. -- 时装配置
  109. function ChildModel:InitChildfashionCfg( )
  110. self.Config_Child_Fashion = {}
  111. for k,v in pairs(Config.Childfashion) do
  112. self.Config_Child_Fashion[v.fashion_id] = self.Config_Child_Fashion[v.fashion_id] or {}
  113. local temp = self.Config_Child_Fashion[v.fashion_id]
  114. temp[v.lv] = v
  115. -- 设置升到下一级的消耗
  116. local next_cfg = Config.Childfashion[v.fashion_id .. "@" .. v.lv]
  117. if next_cfg then
  118. temp[v.lv].upgrade_cost_next = stringtotable(next_cfg.upgrade_cost)
  119. else
  120. temp[v.lv].upgrade_cost_next = false
  121. end
  122. end
  123. end
  124. -- 载具和时装原本是两个功能 现在合并了 所以配置处理成时装配置的格式
  125. -- 通过is_vehicle字段区分 用原本的不同协议来处理
  126. function ChildModel:InitChildvehicleCfg( )
  127. self.Config_Child_Vehicle = {}
  128. local cfg_list = self.Config_Child_Vehicle
  129. for k,v in pairs(Config.Childvehicle) do
  130. cfg_list[v.vehicle_id] = cfg_list[v.vehicle_id] or {}
  131. local temp = cfg_list[v.vehicle_id]
  132. temp[v.stage] = {}
  133. local temp_cfg = temp[v.stage]
  134. temp_cfg.is_vehicle = true -- 用来区别时装的字段
  135. temp_cfg.fashion_id = v.vehicle_id
  136. temp_cfg.lv = v.stage
  137. temp_cfg.fashion_name = v.vehicle_name
  138. temp_cfg.attr_list = v.add_attr
  139. temp_cfg.model_id = v.model_id
  140. temp_cfg.upgrade_cost = v.upgrade_cost
  141. temp_cfg.active_skill = v.active_skill
  142. temp_cfg.can_on_age = v.can_on_age
  143. -- 设置升到下一级的消耗
  144. local next_cfg = Config.Childvehicle[v.vehicle_id .. "@" .. v.stage]
  145. if next_cfg then
  146. temp_cfg.upgrade_cost_next = stringtotable(next_cfg.upgrade_cost)
  147. else
  148. temp_cfg.upgrade_cost_next = false
  149. end
  150. end
  151. end
  152. -------------初始化配置--end---------
  153. function ChildModel:GetChildInfo( )
  154. return self.childInfo
  155. end
  156. --[[
  157. child_age_month :int8 // -
  158. child_name :string //
  159. child_sex :int8 //
  160. child_age_year :int8 // -
  161. child_age_month :int8 // -
  162. child_age_exp :int32 //()
  163. heart_link_exp :int32 //()
  164. heart_reward:array{ //
  165. reward_id :int8 //Id
  166. status :int8 //0- 1-
  167. }
  168. child_power :int64 //
  169. is_follow :int8 //
  170. can_carry :int16 //
  171. adopt_time :int32 // 0- -
  172. share_reward :int8 // 0- 1-
  173. yest_rank :int16 //
  174. yest_reward :int8 // 0- 1-
  175. --]]
  176. function ChildModel:SetChildInfo(vo)
  177. -- 孩子成长等级需要保存一下上一次的等级
  178. self:UpdatePreAgeMonth(self.childInfo.child_age_month)
  179. local temp = {
  180. child_age_month = vo.child_age_month or self.childInfo.child_age_month or 0,
  181. child_name = vo.child_name or self.childInfo.child_name or "",
  182. child_sex = vo.child_sex or self.childInfo.child_sex or 1,
  183. child_age_year = vo.child_age_year or self.childInfo.child_age_year or 0,
  184. child_age_exp = vo.child_age_exp or self.childInfo.child_age_exp or 0,
  185. heart_link_exp = vo.heart_link_exp or self.childInfo.heart_link_exp or 0,
  186. child_power = vo.child_power or self.childInfo.child_power or 0,
  187. is_follow = vo.is_follow or self.childInfo.is_follow or false,
  188. adopt_time = vo.adopt_time or self.childInfo.adopt_time or 0,
  189. -- 晒娃
  190. share_reward = vo.share_reward or self.childInfo.share_reward or 0,
  191. yest_rank = vo.yest_rank or self.childInfo.yest_rank or 0,
  192. yest_reward = vo.yest_reward or self.childInfo.yest_reward or 0,
  193. heart_reward = self.childInfo.heart_reward or {}, -- 默认不直接用协议的数据
  194. }
  195. self.childInfo = temp
  196. self:SetHeartRewardData(vo.heart_reward)
  197. if vo.child_sex > 0 then -- 有性别数据 说明已经领养了
  198. self:SetIsPlayerHadChild(true)
  199. end
  200. --self:SetChildInfoForRoleModelID()
  201. end
  202. function ChildModel:UpdatePreAgeMonth( lv )
  203. -- logWarn('=======Msh:ChildModel.lua[209]=======')
  204. -- PrintCallStack()
  205. self.pre_age_month = lv or 0
  206. end
  207. function ChildModel:GetPreAgeMonth( )
  208. return self.pre_age_month or -1
  209. end
  210. -- 获取当前同心度
  211. function ChildModel:GetCurHeartValue( )
  212. return self:GetChildInfo( ).heart_link_exp or 0
  213. end
  214. -- 判断同心值是否已满
  215. function ChildModel:IsHeartValueMax()
  216. return self:GetCurHeartValue( ) >= self:GetMaxHeartValue( )
  217. end
  218. -- 更新数据 need_check:是否强制检查状态变化(用于区分第一次初始化数据)
  219. function ChildModel:SetHeartRewardData( reward_list, need_check )
  220. -- 同心奖励
  221. if not reward_list then return end
  222. local old_get_state
  223. if need_check then
  224. old_get_state = self:HasGetAllHeartReward( ) -- 更新数据前的领取状态
  225. end
  226. -- 更新数据
  227. self.childInfo.heart_reward = self.childInfo.heart_reward or {}
  228. local list = self.childInfo.heart_reward
  229. for k, v in pairs(reward_list) do
  230. list[v.reward_id] = v.status
  231. end
  232. -- 如果本次刷新刚刚领取最后一个奖励 则打开求子界面
  233. if need_check then
  234. local new_get_state = self:HasGetAllHeartReward( ) --更新数据后的领取状态
  235. if new_get_state and not old_get_state then
  236. self:Fire(ChildConst.OPEN_CHILD_HEART_TASK_VIEW, false) -- 关闭同心界面
  237. self:Fire(ChildConst.OPEN_CHILD_GET_VIEW, true) -- 打开领养界面
  238. self:Fire(ChildConst.UPDATA_CHILD_MAIN_INFO) -- 请求刷新图标
  239. self:Fire(ChildConst.Child_RED_DOT,ChildConst.TabId.GetChild)
  240. end
  241. end
  242. end
  243. -- 获取领取状态 1已领取 0未领取
  244. function ChildModel:GetHeartRewardStatus( reward_id )
  245. if reward_id and self.childInfo.heart_reward and self.childInfo.heart_reward[reward_id] then
  246. return self.childInfo.heart_reward[reward_id]
  247. end
  248. end
  249. -- 完成某个同心任务后 设置数据
  250. function ChildModel:SetChildInfoForTask(heart_link_exp)
  251. self.childInfo.heart_link_exp = heart_link_exp or 0 -- 设置同心度
  252. end
  253. --- 仅自己用
  254. --- 通过当前的同心度和等级获取孩子模型id (如果有时装穿戴中就用时装对应model_id)
  255. function ChildModel:GetChildCloth()
  256. local child_age_month = self.childInfo.child_age_month or 0
  257. local clothe_res_id_self = 1011 -- 默认模型(供未开放宝宝时显示用)
  258. if self.childInfo.child_sex and self.childInfo.child_sex ~= 0 then
  259. if self.wear_fashion_id ~= 0 then -- 有穿时装 直接飞回
  260. return self:GetFashionModelID( self.wear_fashion_id )
  261. end
  262. for k,v in ipairs(self.Config_Child_Figure[self.childInfo.child_sex]) do
  263. if child_age_month >= v.grow_up_level then
  264. clothe_res_id_self = v.model_id
  265. end
  266. end
  267. end
  268. return clothe_res_id_self
  269. end
  270. -- 获取当前自己的孩子成熟期模型 (有时装就返回时装)
  271. function ChildModel:GetBigChildCloth( )
  272. local child_sex = self.childInfo.child_sex and self.childInfo.child_sex or 1 -- 默认值是男宝宝
  273. -- 有穿时装 直接飞回
  274. if self.wear_fashion_id ~= 0 then
  275. return self:GetFashionModelID( self.wear_fashion_id )
  276. end
  277. -- 取得成熟期模型
  278. local clothe_res_id_self = self:GetBigNormalChildCloth( child_sex )
  279. return clothe_res_id_self or 1021
  280. end
  281. -- 获取宝宝成熟模型(不判断时装)
  282. function ChildModel:GetBigNormalChildCloth( child_sex )
  283. if not self.normal_big_child_cloth then
  284. self.normal_big_child_cloth = {} -- 缓存
  285. for i=1, 2 do
  286. local temp_age_month = 0
  287. for k,v in ipairs(self.Config_Child_Figure[i]) do
  288. if temp_age_month < v.grow_up_level then
  289. temp_age_month = v.grow_up_level
  290. self.normal_big_child_cloth[i] = v.model_id
  291. end
  292. end
  293. end
  294. end
  295. return self.normal_big_child_cloth[child_sex]
  296. end
  297. -- 根据时装id获取对应模型id
  298. function ChildModel:GetFashionModelID( fashion_id, child_sex )
  299. local child_sex = child_sex
  300. if not child_sex then -- 如果没有指定性别 就拿model记录的自己宝宝的性别
  301. child_sex = self.childInfo.child_sex or 1
  302. end
  303. local cfg = self.Config_Child_Fashion[fashion_id][1]
  304. local model_list = stringtotable(cfg.model_id)
  305. return tonumber(model_list[child_sex][2])
  306. end
  307. -- 根据时装id获取对应模型id
  308. function ChildModel:GetVehicleModelID( fashion_id )
  309. --print('Msh:ChildModel.lua[282] fashion_id', fashion_id)
  310. -- PrintCallStack()
  311. if self.Config_Child_Vehicle[fashion_id] and self.Config_Child_Vehicle[fashion_id][1] then
  312. local cfg = self.Config_Child_Vehicle[fashion_id][1]
  313. return cfg.model_id
  314. else
  315. return 0 -- 默认值
  316. end
  317. end
  318. -- 通过传入的 宝宝年龄月份 + 性别 + 时装id = 获取模型id
  319. function ChildModel:GetChildClothByParam( child_age_month, child_sex, fashion_id )
  320. -- print('Msh:ChildModel.lua[295] data', child_age_month, child_sex, fashion_id)
  321. if fashion_id and child_sex and tonumber(fashion_id) ~= 0 then -- 有时装id和性别
  322. return self:GetFashionModelID( fashion_id, child_sex )
  323. elseif child_age_month and child_sex then
  324. local clothe_res_id_self = 1011
  325. if not (child_sex == 1 or child_sex == 2) then -- 性别数据异常
  326. -- print('Msh:ChildModel.lua[287] child_sex', child_sex)
  327. child_sex = 1
  328. end
  329. for k,v in ipairs(self.Config_Child_Figure[child_sex]) do
  330. if child_age_month >= v.grow_up_level then
  331. clothe_res_id_self = v.model_id
  332. end
  333. end
  334. return clothe_res_id_self
  335. else
  336. print('Msh:ChildModel.lua[259] error:', child_age_month, child_sex, fashion_id )
  337. end
  338. end
  339. -- 传入child_fashion穿戴时装列表 得到穿戴中的时装(注:类型2装饰已废弃)
  340. -- fashion_list:array{
  341. -- type :int8 //时装类型 1-时装 2-装饰
  342. -- fashion_id :int32 //时装Id 0-没有穿戴时装 其他-具体穿戴时装Id
  343. -- }
  344. function ChildModel:GetChildFashionID( fashion_list )
  345. -- print('Msh:ChildModel.lua[321] data')
  346. -- PrintTable(fashion_list)
  347. for i,v in ipairs(fashion_list) do
  348. if v.type == 1 then
  349. return v.fashion_id ~= 0 and v.fashion_id or nil
  350. end
  351. end
  352. end
  353. --[[-- 设置当前宝宝模型id
  354. function ChildModel:SetChildInfoForRoleModel(figure_id)
  355. if figure_id then
  356. self.childInfo.figure_id = figure_id
  357. else
  358. end
  359. end
  360. function ChildModel:GetChildRoleListData( )
  361. return self.childInfo.figure_id
  362. end--]]
  363. -- 获取孩子当前的成长属性
  364. function ChildModel:GetChildNowGrowUpInfo()
  365. local cfg = self.Config_Child_GrowUp[self.childInfo.child_age_month]
  366. assert(cfg, string.format("Msh:error! please check: %s", self.childInfo.child_age_month) )
  367. return cfg
  368. end
  369. -- 获取孩子下一级的成长属性
  370. function ChildModel:GetChildNextGrowUpInfo()
  371. if not self.childInfo.child_age_month then return end
  372. local cfg = self.Config_Child_GrowUp[self.childInfo.child_age_month + 1]
  373. --assert(cfg, string.format("Msh:error! please check: %s", self.childInfo.child_age_month + 1) )
  374. return cfg
  375. end
  376. -- 获取同心配置
  377. function ChildModel:GetChildLinkHeartInfo()
  378. return self.Config_Child_LinkHeart
  379. end
  380. -- 获取常量键值
  381. function ChildModel:GetConfigChildKvVal(keyName)
  382. assert(self.Config_Child_kv[keyName], string.format('Msh:error! please check: %s', keyName) )
  383. return self.Config_Child_kv[keyName]
  384. end
  385. ---获取最基础的一级skillList
  386. function ChildModel:GetConfigChildSkillBase( )
  387. local list_base_skill = {}
  388. for k,v in pairs(self.Config_Child_Skill) do
  389. if v.level == 1 then
  390. table.insert(list_base_skill,v)
  391. end
  392. end
  393. return list_base_skill
  394. end
  395. function ChildModel:GetChildSkillList( )
  396. return self.childSkillList
  397. end
  398. --[[
  399. ]]
  400. function ChildModel:SetChildSkillList( vo )
  401. local baseList = self:GetConfigChildSkillBase()
  402. local mixList = {}
  403. for k,v in pairs(baseList) do
  404. local skillId = stringtotable(v.active_skill)[1][1]
  405. local skillLv = 0
  406. for k_s,v_s in pairs(vo.skill_list) do
  407. if v_s.skill_id == skillId then
  408. skillLv = v_s.skill_lv
  409. end
  410. end
  411. local new_list = {}
  412. new_list.skill_id = skillId
  413. new_list.skill_lv = skillLv
  414. new_list.sequence = v.sequence
  415. table.insert(mixList,new_list)
  416. end
  417. local function sort_func(a, b)
  418. return a.sequence < b.sequence
  419. end
  420. table.sort(mixList, sort_func)
  421. self.childSkillList = mixList
  422. self:SetCanUseSkillList()
  423. end
  424. -- 设置当前可以使用的技能列表
  425. function ChildModel:SetCanUseSkillList( )
  426. for k,v in pairs(self.childSkillList) do
  427. local list = ConfigItemMgr.Instance:GetSkillItem(v.skill_id)
  428. if list and list.type == 1 and v.skill_lv > 0 then -- 是主动且已经学习
  429. table.insert(self.can_use_skill_list, v.skill_id)
  430. end
  431. end
  432. end
  433. function ChildModel:GetCanUseSkillList( )
  434. return self.can_use_skill_list
  435. end
  436. --
  437. function ChildModel:GetConfigChildSkillNearActiveLevel(active_skill_lv)
  438. for k,v in pairs(self.Config_Child_Skill) do
  439. if stringtotable(v.active_skill)[1][2] == active_skill_lv then
  440. return v.level
  441. end
  442. end
  443. return false
  444. end
  445. ---找技能表info
  446. function ChildModel:GetConfigChildSkillInfo(skill_id,skill_lv)
  447. for k,v in pairs(self.Config_Child_Skill) do
  448. local skillId = stringtotable(v.active_skill)[1][1]
  449. if v.level == skill_lv and skillId == skill_id then
  450. return v
  451. elseif skill_lv == 0 then
  452. local list_first = self:GetConfigChildSkillInfo(skill_id,1)
  453. return{
  454. level = 0,
  455. skill_desc = list_first.skill_desc,
  456. add_attr_list = {},
  457. sequence = list_first.sequence,
  458. skill_name = list_first.skill_name,
  459. }
  460. end
  461. end
  462. end
  463. -- 检查宝宝技能是否开放
  464. function ChildModel:CheckSkillIsOpen( )
  465. return self.childInfo.child_age_month and self.childInfo.child_age_month >= self:GetConfigChildKvVal("skill_open_stage") * 10
  466. end
  467. --选中当前的v
  468. function ChildModel:GetChildSkillShowAttrList(sequence,level)
  469. local skill_list_before = {}
  470. if level > 0 then
  471. skill_list_before = self.Config_Child_Skill[sequence.."@"..level]
  472. end
  473. local skill_list_after = self.Config_Child_Skill[sequence.."@"..level+1]
  474. local attr_list_before = skill_list_before and stringtotable(skill_list_before.add_attr_list) or {}
  475. local attr_list_after = skill_list_after and stringtotable(skill_list_after.add_attr_list) or {}
  476. local attr_id,num_after,num_before = 0 -- num_after是配置表的
  477. local attr_list = {}
  478. if not skill_list_after then
  479. for k,v in pairs(attr_list_before) do
  480. attr_id = v[1]
  481. num_before = v[2]
  482. num_after = ""
  483. local list = {}
  484. list.attr_id = attr_id
  485. list.num_before = num_before
  486. list.num_after = num_after
  487. table.insert(attr_list,list)
  488. end
  489. else
  490. for k,v in pairs(attr_list_after) do
  491. attr_id = v[1]
  492. num_before = 0
  493. num_after = v[2]
  494. for k_b,v_b in pairs(attr_list_before) do
  495. if v_b[1] == v[1] then
  496. num_before = v_b[2]
  497. end
  498. end
  499. local list = {}
  500. list.attr_id = attr_id
  501. list.num_before = num_before
  502. list.num_after = num_after
  503. table.insert(attr_list,list)
  504. end
  505. end
  506. return attr_list
  507. --self.attr_item_list[k]:SetData(attr_id,num_before,num_after)
  508. end
  509. --[[
  510. ]]
  511. --[[function ChildModel:SetChildVehicleList( vo )
  512. local list_base_vehicle = {}
  513. for k,v in pairs(self.Config_Child_Vehicle) do
  514. if v.stage == 1 then
  515. table.insert(list_base_vehicle,v)
  516. end
  517. end
  518. local mixList = {}
  519. for k,v in pairs(list_base_vehicle) do
  520. --local vehicle_id = 0
  521. local stage = 0
  522. for k_s,v_s in pairs(vo.vehicle_list) do
  523. if v_s.vehicle_id == v.vehicle_id then
  524. stage = v_s.vehicle_stage
  525. end
  526. end
  527. local new_list = {}
  528. new_list.vehicle_id = v.vehicle_id
  529. new_list.stage = stage
  530. table.insert(mixList,new_list)
  531. end
  532. local function sort_func(a, b)
  533. return a.vehicle_id < b.vehicle_id
  534. end
  535. table.sort(mixList, sort_func)
  536. self.childVehicleList.vehicle_list = mixList
  537. self.childVehicleList.show_vehicle = vo.show_vehicle
  538. end
  539. --]]
  540. -- ---找载具表info
  541. -- function ChildModel:GetConfigChildVehicleInfo(vehicle_id,stage)
  542. -- for k,v in pairs(self.Config_Child_Vehicle) do
  543. -- --local skillId = stringtotable(v.active_skill)[1][1]
  544. -- if v.stage == stage and v.vehicle_id == vehicle_id then
  545. -- return v
  546. -- elseif stage == 0 then
  547. -- local list_first = self:GetConfigChildVehicleInfo(vehicle_id,1)
  548. -- return{
  549. -- level = 0,
  550. -- --skill_desc = list_first.skill_desc,
  551. -- add_attr = {},
  552. -- vehicle_id = list_first.vehicle_id,
  553. -- --active_skill = {},
  554. -- --active_cost = {},
  555. -- vehicle_name = list_first.vehicle_name,
  556. -- --pre_sequence = 0,
  557. -- --need_power = 10000,
  558. -- }
  559. -- end
  560. -- end
  561. -- --return nil
  562. -- end
  563. --[[function ChildModel:GetChildVehicleShowAttrList(vehicle_id,stage)
  564. local vehicle_list_before = {}
  565. if stage > 0 then
  566. vehicle_list_before = self.Config_Child_Vehicle[vehicle_id.."@"..stage]
  567. end
  568. local vehicle_list_after = self.Config_Child_Vehicle[vehicle_id.."@"..stage+1]
  569. local attr_list_before = vehicle_list_before and stringtotable(vehicle_list_before.add_attr) or {}
  570. local attr_list_after = vehicle_list_after and stringtotable(vehicle_list_after.add_attr) or {}
  571. local attr_id,num_after,num_before = 0 -- num_after是配置表的
  572. local attr_list = {}
  573. if not vehicle_list_after then
  574. for k,v in pairs(attr_list_before) do
  575. attr_id = v[1]
  576. num_before = v[2]
  577. num_after = ""
  578. local list = {}
  579. list.attr_id = attr_id
  580. list.num_before = num_before
  581. list.num_after = num_after
  582. table.insert(attr_list,list)
  583. end
  584. else
  585. for k,v in pairs(attr_list_after) do
  586. attr_id = v[1]
  587. num_before = 0
  588. num_after = v[2]
  589. for k_b,v_b in pairs(attr_list_before) do
  590. if v_b[1] == v[1] then
  591. num_before = v_b[2]
  592. end
  593. end
  594. local list = {}
  595. list.attr_id = attr_id
  596. list.num_before = num_before
  597. list.num_after = num_after
  598. table.insert(attr_list,list)
  599. end
  600. end
  601. return attr_list
  602. end--]]
  603. -- 获取载具技能列表
  604. function ChildModel:GetChildVehicleSkillList(fashion_id)
  605. local vehicleSkillList = {}
  606. -- print('=======Msh:ChildModel.lua[658] ===TABLE====')
  607. -- PrintTable(self.Config_Child_Vehicle)
  608. for k,v in pairs(self.Config_Child_Vehicle) do
  609. if k == fashion_id then
  610. for ii,vv in pairsByKeys(v) do
  611. if vv.active_skill and vv.active_skill ~= 0 then
  612. table.insert(vehicleSkillList, vv)
  613. end
  614. end
  615. break
  616. end
  617. end
  618. -- print('=======Msh:ChildModel.lua[671] ===TABLE====')
  619. -- PrintTable(vehicleSkillList)
  620. local function sort_func(a, b)
  621. if a.stage then
  622. return a.stage < b.stage
  623. elseif a.lv then
  624. return a.lv < b.lv
  625. end
  626. end
  627. table.sort(vehicleSkillList, sort_func)
  628. return vehicleSkillList
  629. end
  630. function ChildModel:IsPlayerHadChild( )
  631. return self.isPlayerHadChild
  632. end
  633. function ChildModel:SetIsPlayerHadChild( bool )
  634. self.isPlayerHadChild = bool
  635. end
  636. ----------领养宝宝前置同心任务-start---------
  637. -- 是否领取了所有奖励(需求是领完所有同心奖励才可以打开领养界面)
  638. function ChildModel:HasGetAllHeartReward( )
  639. local has_get_all = true
  640. for k,v in pairs(Config.Childlinkheart) do
  641. if self:GetHeartRewardStatus(v.reward_id) ~= 1 then
  642. has_get_all = false
  643. break
  644. end
  645. end
  646. return has_get_all
  647. end
  648. -- 检查图标是否应该开启
  649. function ChildModel:CheckHeartLinkIconShow( )
  650. if not GetModuleIsOpen(165, 1, true) then -- 模块未开启
  651. --logWarn('=======Msh:ChildModel.lua[630]=======')
  652. return false
  653. end
  654. self.childInfo.adopt_time = self.childInfo.adopt_time or 0
  655. if self.childInfo.adopt_time == 0 then -- 未领养孩子
  656. --logWarn('=======Msh:ChildModel.lua[636]=======')
  657. return true
  658. end
  659. local is_today = TimeUtil:IsToday( self.childInfo.adopt_time )
  660. if is_today then -- 当天领养 还没过天
  661. --logWarn('=======Msh:ChildModel.lua[642]=======')
  662. return true
  663. end
  664. --logWarn('=======Msh:ChildModel.lua[645]=======')
  665. return false
  666. end
  667. -- 更新同心任务列表数据 task_state //任务状态 0-未完成 1-已完成未领取 2-已领取
  668. function ChildModel:SetTaskInfo(vo_16505)
  669. --logWarn('=======Msh:ChildModel.lua[629]=======')
  670. if not vo_16505 then return end
  671. self.childTaskInfo = {}
  672. local list1 = {}--两个融一
  673. local list2 = {}
  674. local has_can_get = false -- 是否有可以领取的奖励
  675. -- [1] = {task_id = 1,open_level = 0,desc = [[ 获得135点日常活跃 ]],task_content = [[ [{liveness,0,135}] ]],reward_exp = 20,client_skip = [[ [{157,0}] ]]},
  676. for k,v in pairs(self.Config_Child_DailyTask) do
  677. if self.mainVo.level >= v.open_level then
  678. v.task_state = 0
  679. v.progress = 0
  680. v.progress_max = stringtotable(v.task_content)[1][3]
  681. for k_s,v_s in pairs(vo_16505) do
  682. if v.task_id == v_s.sequence then
  683. v.progress = v_s.progress
  684. v.task_state = v_s.task_state
  685. end
  686. end
  687. if v.task_state == 2 then -- 把已领取的单独拉开之后加到最后
  688. table.insert(list2,v)
  689. else
  690. table.insert(list1,v)
  691. if v.task_state == 1 then -- 可以领未领
  692. has_can_get = true
  693. end
  694. end
  695. end
  696. end
  697. self.heart_main_task_red = has_can_get
  698. local sort_func = function ( a, b )
  699. return a.task_state > b.task_state
  700. end
  701. table.sort(list1, sort_func)
  702. for k,v in pairs(list2) do
  703. table.insert(list1,v)
  704. end
  705. self.childTaskInfo = list1
  706. end
  707. -- 获取同心任务列表
  708. function ChildModel:GetChildDailyTaskList()
  709. return self.childTaskInfo
  710. end
  711. -- 获取哺乳期的孩子模型id
  712. function ChildModel:GetChildOriginalModelID( child_sex )
  713. local model_list = stringtotable( self:GetConfigChildKvVal("original_model") )[1]
  714. assert(model_list[child_sex], string.format('Msh:error! please check: %s', child_sex) )
  715. return tonumber( model_list[child_sex] )
  716. end
  717. -- 需求:每次打开同心任务界面,展示的婴儿宝宝性别变更
  718. -- 同心任务:变更性别
  719. function ChildModel:ChangeHeartTaskChildSex( )
  720. self.heart_child_sex = self.heart_child_sex == 1 and 2 or 1
  721. end
  722. -- 同心任务:获取性别
  723. function ChildModel:GetHeartTaskChildSex( )
  724. return self.heart_child_sex
  725. end
  726. -- 同心任务红点相关
  727. function ChildModel:UpdateHeartIconRed( )
  728. self:UpdateHeartRewardRed()
  729. self.heart_icon_red = self.heart_main_task_red or self.heart_progress_red
  730. end
  731. -- 获取同心任务图标红点
  732. function ChildModel:GetHeartIconRed( )
  733. return self.heart_icon_red
  734. end
  735. -- 更新同心任务进度奖励红点
  736. function ChildModel:UpdateHeartRewardRed( )
  737. local cur_heart_value = self:GetCurHeartValue( )
  738. local bool = false
  739. for heart_value, data in pairsByKeys(self:GetChildLinkHeartInfo()) do
  740. if heart_value <= cur_heart_value then -- 可以领
  741. local reward_status = self:GetHeartRewardStatus(data.reward_id)
  742. if reward_status ~= 1 then -- 还没领
  743. bool = true
  744. end
  745. elseif heart_value > cur_heart_value then -- 没达到条件
  746. break
  747. end
  748. end
  749. self.heart_progress_red = bool
  750. end
  751. -- 更新maintaskitem的任务奖励红点
  752. function ChildModel:UpdateHeartMainTaskRed( )
  753. end
  754. ----------领养宝宝前置同心任务-end-----------
  755. -- 获取孩子投票奖励配置
  756. function ChildModel:GetConfigChildVoteReward( )
  757. return self.Config_Child_VoteReward
  758. end
  759. -- 获取投票角色列表
  760. function ChildModel:GetChildVotedRoleList()
  761. return self.childVotedRoleList
  762. end
  763. -- 设置投票角色列表
  764. function ChildModel:SetChildVotedRoleList(vo_16519)
  765. self.childVotedRoleList = vo_16519.role_list
  766. end
  767. ------------宝宝玩具宝宝装备:
  768. --[[function ChildModel:GetChildEquipList()
  769. return self.childEquipList
  770. end
  771. function ChildModel:RemoveChildEquipList(vo)
  772. local new_bag_list = {}
  773. for k,v in pairs(self.childEquipList.bag_list) do
  774. local isRemove = false
  775. for k,v_remove in pairs(vo) do
  776. if v_remove.goods_id == v.goods_id then
  777. isRemove = true
  778. end
  779. end
  780. if isRemove == false then
  781. table.insert(new_bag_list,v)
  782. end
  783. end
  784. self.childEquipList.bag_list = new_bag_list
  785. end
  786. function ChildModel:SetChildEquipList(vo)
  787. self.childEquipList.carry_weight = vo.carry_weight or 0
  788. self.childEquipList.can_carry = vo.can_carry or 0
  789. local newEquipList = {}
  790. local config_equip_list = DeepCopy(self.Config_Child_Toy)
  791. --print("============>>> YiRan:ChildModel [start:470] ,#vo.bag_list :",#vo.bag_list)
  792. for had_i,had_v in ipairs(vo.bag_list) do
  793. for k,v in pairs(config_equip_list) do
  794. if v.toy_id == had_v.goods_type_id then
  795. local item_list = {}
  796. item_list.goods_id = had_v.goods_id
  797. item_list.goods_type_id = had_v.goods_type_id
  798. item_list.lv = had_v.lv
  799. item_list.toy_color = v.toy_color
  800. item_list.toy_weight = v.toy_weight
  801. item_list.attr_list = v.attr_list
  802. table.insert(newEquipList,item_list)
  803. end
  804. end
  805. end
  806. self.childEquipList.bag_list = newEquipList
  807. --print("============>>> YiRan:ChildModel [start:485] #newEquipList :",#newEquipList)
  808. --------穿戴
  809. local newSlotList = vo.slot_list
  810. for i=1,ChildConst.ChildEquipWearMaxNum do -- 6个槽填满
  811. local isHave = false
  812. for k,v in pairs(newSlotList) do
  813. if v.slot_id == i then
  814. --print("============>>> YiRan:ChildModel [start:492] v.slot_id :",v.slot_id)
  815. isHave = true
  816. for k,v_config in pairs(config_equip_list) do
  817. if v_config.toy_id == v.goods_type_id then
  818. print("============>>> YiRan:ChildModel [start:508] v.goods_id :",v.goods_id)
  819. v.toy_color = v_config.toy_color
  820. v.toy_weight = v_config.toy_weight
  821. v.attr_list = v_config.attr_list
  822. end
  823. end
  824. end
  825. end
  826. if isHave == false then
  827. local new_slot_list_item = {}
  828. new_slot_list_item.goods_type_id = 0
  829. new_slot_list_item.is_open = 0
  830. new_slot_list_item.slot_id = i
  831. new_slot_list_item.lv = 0
  832. new_slot_list_item.goods_id = 0
  833. --newSlotList[i] = new_slot_list_item
  834. table.insert(newSlotList,new_slot_list_item)
  835. end
  836. end
  837. local function sort_func(a, b)
  838. return a.slot_id < b.slot_id
  839. end
  840. table.sort(newSlotList, sort_func)
  841. self.childEquipList.slot_list = newSlotList or {}
  842. --print("=============>>> YiRan:ChildModel [start:506] self.childEquipList.slot_list ------------------------------------------")
  843. --PrintTable(self.childEquipList.slot_list)
  844. --print("=============>>> YiRan:ChildModel [end] ------------------------------------------")
  845. end
  846. function ChildModel:SetChildEquipBuildList(vo)
  847. vo = vo or {}
  848. local mixBulidList = {}
  849. for i=1,#self.Config_Child_ForgeSlotOpen do
  850. local isHave = false
  851. for k,v in pairs(vo) do
  852. if v.slot_id == i then
  853. isHave = true
  854. if v.use_status == 1 then --打造中的把时间加进去
  855. for c_k,c_v in pairs(self.Config_Child_ForgetTime) do
  856. if c_v.id == v.select_id then
  857. v.need_time = c_v.need_time
  858. table.insert(mixBulidList,v)
  859. end
  860. end
  861. else --
  862. table.insert(mixBulidList,v)
  863. end
  864. end
  865. end
  866. if isHave == false then
  867. local new_list = {}
  868. new_list.slot_id = i
  869. new_list.is_open = 0
  870. new_list.use_status = 0
  871. new_list.start_time = 0
  872. new_list.select_id = 0
  873. new_list.cost = stringtotable(self.Config_Child_ForgeSlotOpen[i].condition)
  874. --newSlotList[i] = new_list
  875. table.insert(mixBulidList,new_list)
  876. end
  877. end
  878. local function sort_func(a, b)
  879. return a.slot_id < b.slot_id
  880. end
  881. table.sort(mixBulidList, sort_func)
  882. self.childEquipBuildList = mixBulidList
  883. end
  884. function ChildModel:GetChildEquipBuildList()
  885. return self.childEquipBuildList
  886. end
  887. function ChildModel:GetChildEquipSpeedUpBuildCost( time )
  888. for k,v in pairs(self.Config_Child_SpeedUp) do
  889. if time >= v.time_low and time < v. time_high and v.time_low ~= 0 then
  890. print("=============>>> YiRan:ChildModel [start:517] v.cost ------------------------------------------")
  891. PrintTable(v.cost)
  892. print("=============>>> YiRan:ChildModel [end] ------------------------------------------")
  893. local cost_list = stringtotable(v.cost)[1]
  894. if cost_list[1] == 1 then
  895. return cost_list[2]
  896. end
  897. end
  898. end
  899. return 0
  900. end
  901. function ChildModel:GetChildEquipBagItemList(goods_id)
  902. for k,v in pairs(self.childEquipList.bag_list) do
  903. if v.goods_id == goods_id then
  904. return v
  905. end
  906. end
  907. end
  908. function ChildModel:GetChildEquipWearItemList(goods_id) -- 背包和穿戴的装备两个是不同的list获取
  909. for k,v in pairs(self.childEquipList.slot_list) do
  910. if v.goods_id == goods_id then
  911. return v
  912. end
  913. end
  914. end
  915. function ChildModel:GetChildEquipIdAndColorAndTypeAndLv(goods_id)--唯一ID获取玩具类型和重量type
  916. local goods_type_id = 0
  917. local toy_type = 0
  918. local lv = 0
  919. local toy_color = 0
  920. for k,v in pairs(self.childEquipList.bag_list) do
  921. if v.goods_id == goods_id then
  922. goods_type_id = v.goods_type_id
  923. lv = v.lv
  924. end
  925. end
  926. if goods_type_id == 0 then -- 没有的话去穿戴获取
  927. for k,v in pairs(self.childEquipList.slot_list) do
  928. if v.goods_id == goods_id then
  929. goods_type_id = v.goods_type_id
  930. lv = v.lv
  931. end
  932. end
  933. end
  934. if self.Config_Child_Toy[goods_type_id] then
  935. toy_type = self.Config_Child_Toy[goods_type_id].toy_type
  936. toy_color = self.Config_Child_Toy[goods_type_id].toy_color
  937. end
  938. return goods_type_id,toy_color,toy_type,lv
  939. end
  940. function ChildModel:GetChildConfigStrenToyInfo(toy_color,toy_type,stren_lv)
  941. if stren_lv < 0 then
  942. return nil
  943. end
  944. return self.Config_Child_ToyStren[toy_color.."@"..toy_type.."@"..stren_lv]
  945. end
  946. function ChildModel:GetChildStrenShowAttrList(toy_color,toy_type,stren_lv,lvLenth)
  947. local vehicle_list_before = {}
  948. if stren_lv > 0 then
  949. vehicle_list_before = self.Config_Child_ToyStren[toy_color.."@"..toy_type.."@"..stren_lv]
  950. end
  951. local vehicle_list_after = self.Config_Child_ToyStren[toy_color.."@"..toy_type.."@"..stren_lv+lvLenth]
  952. local attr_list_before = vehicle_list_before and stringtotable(vehicle_list_before.add_attr) or {}
  953. local attr_list_after = vehicle_list_after and stringtotable(vehicle_list_after.add_attr) or {}
  954. local attr_id,num_after,num_before = 0 -- num_after是配置表的
  955. local attr_list = {}
  956. if not vehicle_list_after then
  957. for k,v in pairs(attr_list_before) do
  958. attr_id = v[1]
  959. num_before = v[2]
  960. num_after = ""
  961. local list = {}
  962. list.attr_id = attr_id
  963. list.num_before = num_before
  964. list.num_after = num_after
  965. table.insert(attr_list,list)
  966. end
  967. else
  968. for k,v in pairs(attr_list_after) do
  969. attr_id = v[1]
  970. num_before = 0
  971. num_after = v[2]
  972. for k_b,v_b in pairs(attr_list_before) do
  973. if v_b[1] == v[1] then
  974. num_before = v_b[2]
  975. end
  976. end
  977. local list = {}
  978. list.attr_id = attr_id
  979. list.num_before = num_before
  980. list.num_after = num_after
  981. table.insert(attr_list,list)
  982. end
  983. end
  984. return attr_list
  985. end--]]
  986. ----------宝宝时装-start---------
  987. -- 根据是时装类型获取时装列表
  988. function ChildModel:GetChildDressList()
  989. return self.childDressList
  990. end
  991. -- 判断目标时装是否是满级
  992. function ChildModel:IsChildFashionLvMax(fashion_id,lv)
  993. -- local max = 0
  994. -- for k,v in pairs(self.Config_Child_Fashion) do
  995. -- if v.fashion_id == fashion_id then
  996. -- if v.lv > max then
  997. -- max = v.lv
  998. -- end
  999. -- end
  1000. -- end
  1001. -- if max <= lv then
  1002. -- return true
  1003. -- else
  1004. -- return false
  1005. -- end
  1006. -- 没有下一级的配置说明已经满级
  1007. return self.Config_Child_Fashion[fashion_id][lv + 1] == nil
  1008. end
  1009. -- 获取时装配置
  1010. function ChildModel:GetConfigChildFashionList(fashionId,lv)
  1011. if self.Config_Child_Fashion[fashionId][lv] then
  1012. return self.Config_Child_Fashion[fashionId][lv]
  1013. else
  1014. return self.Config_Child_Fashion[fashionId][lv - 1]
  1015. end
  1016. end
  1017. -- 设置孩子的时装列表 根据类型
  1018. function ChildModel:SetChildDressList(fashionType, fashion_list)
  1019. if fashionType ~= 1 then return end -- 只要类型1才需要赋值
  1020. local fashion_list = fashion_list or {}
  1021. self.childDressList = {}
  1022. for fashion_id, v in pairs(self.Config_Child_Fashion) do
  1023. local data = DeepCopy(v[1])
  1024. data.active = false
  1025. data.lv = 0
  1026. data.state = 0
  1027. self.childDressList[fashion_id] = data
  1028. end
  1029. local wear_id = 0
  1030. for k, v in pairs(fashion_list) do
  1031. local temp = self.childDressList[v.fashion_id]
  1032. temp.lv = v.lv
  1033. temp.state = v.state
  1034. temp.active = true -- 后端返回了这个数据 说明已激活
  1035. temp.attr_list = self:GetConfigChildFashionList(v.fashion_id,v.lv).attr_list
  1036. temp.upgrade_cost = self:GetConfigChildFashionList(v.fashion_id,v.lv + 1).upgrade_cost
  1037. -- 如果穿戴中 记录一下
  1038. if temp.state == 1 then
  1039. wear_id = v.fashion_id
  1040. end
  1041. end
  1042. -- 更新一下穿戴中的时装id
  1043. if wear_id ~= 0 then
  1044. self.wear_fashion_id = wear_id
  1045. else
  1046. self.wear_fashion_id = 0
  1047. end
  1048. end
  1049. --
  1050. function ChildModel:GetCurWearID( )
  1051. return self.wear_fashion_id or 0
  1052. end
  1053. -- 检查宝宝时装是否开放
  1054. function ChildModel:CheckDressIsOpen( )
  1055. return self.childInfo.child_age_month and self.childInfo.child_age_month >= self.max_grow_state
  1056. end
  1057. -- 获取宝宝成熟期成长等级
  1058. function ChildModel:GetChildMaxGrowState( )
  1059. return self.max_grow_state
  1060. end
  1061. -- 根据物品id获取时装id(目前的时装id就是物品id)
  1062. function ChildModel:GetFashionIdByGoodsId( type_id )
  1063. local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id)
  1064. if basic then
  1065. if basic.type == GoodsModel.TYPE.CHILDTOY then
  1066. if self.Config_Child_Fashion[type_id] then
  1067. return type_id
  1068. end
  1069. end
  1070. end
  1071. end
  1072. -----------------载具类时装--------------------
  1073. -- 判断目标时装是否是满级
  1074. function ChildModel:IsChildVehicleLvMax(fashion_id,lv)
  1075. -- 没有下一级的配置说明已经满级
  1076. return self.Config_Child_Vehicle[fashion_id][lv + 1] == nil
  1077. end
  1078. -- 拿处理好的载具数据 (后端数据与配置结合)
  1079. function ChildModel:GetChildVehicleList( )
  1080. return self.childVehicleList
  1081. end
  1082. -- 获取载具配置
  1083. function ChildModel:GetConfigChildVehicleList(fashionId,lv)
  1084. if self.Config_Child_Vehicle[fashionId][lv] then
  1085. return self.Config_Child_Vehicle[fashionId][lv]
  1086. else
  1087. return self.Config_Child_Vehicle[fashionId][lv - 1]
  1088. end
  1089. end
  1090. -- 设置孩子的载具类时装列表 根据类型
  1091. function ChildModel:SetChildVehicleList(fashion_list)
  1092. local fashion_list = fashion_list or {}
  1093. self.childVehicleList = {}
  1094. for fashion_id, v in pairs(self.Config_Child_Vehicle) do
  1095. local data = DeepCopy(v[1])
  1096. data.active = false
  1097. data.lv = 0
  1098. data.state = 0
  1099. self.childVehicleList[fashion_id] = data
  1100. end
  1101. local wear_id = 0
  1102. for k, v in pairs(fashion_list) do
  1103. local temp = self.childVehicleList[v.vehicle_id]
  1104. temp.lv = v.vehicle_stage
  1105. temp.state = self:GetChildVehicleID( ) == v.vehicle_id and 1 or 0
  1106. --print('Msh:ChildModel.lua[1112] data', self:GetChildVehicleID( ), v.vehicle_id, temp.state)
  1107. temp.active = v.vehicle_stage > 0
  1108. temp.attr_list = self:GetConfigChildVehicleList(v.vehicle_id,v.vehicle_stage).attr_list
  1109. temp.upgrade_cost = self:GetConfigChildVehicleList(v.vehicle_id,v.vehicle_stage + 1).upgrade_cost
  1110. end
  1111. end
  1112. -- 设置孩子当前的坐骑 [set_type 0-没有幻化的载具 其他-具体幻化载具Id]
  1113. function ChildModel:SetChildVehicleFollow( set_type,vehicle_id )
  1114. local show_vehicle = 0
  1115. if set_type == 1 then
  1116. show_vehicle = vehicle_id
  1117. end
  1118. self.show_vehicle_id = show_vehicle
  1119. end
  1120. -- 获取孩子当前的坐骑
  1121. function ChildModel:GetChildVehicleID( )
  1122. return self.show_vehicle_id or 0
  1123. end
  1124. -- 根据物品id获取载具id(目前的载具id就是物品id)
  1125. function ChildModel:GetVehicleIdByGoodsId( type_id )
  1126. local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id)
  1127. if basic then
  1128. if basic.type == GoodsModel.TYPE.CHILDTOY then
  1129. if self.Config_Child_Vehicle[type_id] then
  1130. return type_id
  1131. end
  1132. end
  1133. end
  1134. end
  1135. ----------宝宝时装-end-----------
  1136. ----------孩子培养(成长)-start---------
  1137. function ChildModel:GetChildFeedList()
  1138. local feedList = {}
  1139. table.insert(feedList,stringtotable(self:GetConfigChildKvVal("low_feed"))[1])
  1140. table.insert(feedList,stringtotable(self:GetConfigChildKvVal("mid_feed"))[1])
  1141. table.insert(feedList,stringtotable(self:GetConfigChildKvVal("high_feed"))[1])
  1142. return feedList
  1143. end
  1144. function ChildModel:GetBreakShowList(break_list)
  1145. local config_goods_decompose = Config.Goodsdecompose
  1146. local getList = {}
  1147. local AddListSamePorp = function ( porpList,getList )
  1148. for k,v in pairs(porpList) do
  1149. if v[1] == 0 then
  1150. local isHad = false
  1151. for k_g,v_g in pairs(getList) do
  1152. if v_g.good_id == v[2] then
  1153. isHad = true
  1154. v_g.num = v_g.num + v[3]
  1155. end
  1156. end
  1157. if isHad == false then
  1158. local list = {}
  1159. list.good_id = v[2]
  1160. list.num = v[3]
  1161. table.insert(getList,list)
  1162. end
  1163. end
  1164. end
  1165. end
  1166. ----自身的价值
  1167. for k,v in pairs(break_list) do
  1168. local porpList = stringtotable(config_goods_decompose[v.type_id].regular_mat)
  1169. AddListSamePorp(porpList,getList)
  1170. end
  1171. -----强化的价值
  1172. local AddBagLevelSternBreakShow = function (v_bag)
  1173. for i=1,v_bag.lv do
  1174. local stren_list = self:GetChildConfigStrenToyInfo(v_bag.toy_color,v_bag.toy_weight,i)
  1175. local porpList = stringtotable(stren_list.cost)
  1176. AddListSamePorp(porpList,getList)
  1177. end
  1178. end
  1179. for k,v in pairs(break_list) do
  1180. for k,v_bag in pairs(self:GetChildEquipList().bag_list) do
  1181. if v.goods_id == v_bag.goods_id then
  1182. if v_bag.lv > 0 then
  1183. AddBagLevelSternBreakShow(v_bag)
  1184. end
  1185. end
  1186. end
  1187. end
  1188. return getList
  1189. end
  1190. ----------孩子培养(成长)-end-----------
  1191. ----------玩具收集(图鉴)-start---------
  1192. function ChildModel:GetToySuitInfo( )
  1193. local config_Child_ToySuit = self.Config_Child_ToySuit
  1194. local sort_func = function ( a, b )
  1195. return a.sequence < b.sequence
  1196. end
  1197. table.sort(config_Child_ToySuit, sort_func)
  1198. return config_Child_ToySuit
  1199. end
  1200. function ChildModel:GetChildSuitRewardList( )
  1201. return self.childSuitRewardList
  1202. end
  1203. function ChildModel:SetChildSuitRewardList( vo16534 )
  1204. for k,v in pairs(vo16534.suit_list) do
  1205. self.childSuitRewardList[v.suit_type] = {}
  1206. self.childSuitRewardList[v.suit_type].suit_type = v.suit_type
  1207. self.childSuitRewardList[v.suit_type].progress = v.progress
  1208. self.childSuitRewardList[v.suit_type].status = v.status
  1209. self.childSuitRewardList[v.suit_type].time = v.time
  1210. ---算百分比
  1211. local list_base = {}
  1212. for k_c,v_c in pairs(self.Config_Child_ToyNew) do
  1213. if v_c.suit_type == v.suit_type then
  1214. table.insert(list_base,v_c)
  1215. end
  1216. end
  1217. local collectMaxNum = TableSize(list_base)
  1218. local percentNum = "0%"
  1219. if v.progress > 0 then
  1220. percentNum = (v.progress*100 / collectMaxNum).."%"
  1221. end
  1222. self.childSuitRewardList[v.suit_type].collectMaxNum = collectMaxNum
  1223. self.childSuitRewardList[v.suit_type].percent_txt = percentNum
  1224. end
  1225. for i=1,TableSize(self.Config_Child_ToySuit) do
  1226. if TableSize(self.childSuitRewardList[i]) < 1 then
  1227. local list_base = {}
  1228. for k_c,v_c in pairs(self.Config_Child_ToyNew) do
  1229. if v_c.suit_type == i then
  1230. table.insert(list_base,v_c)
  1231. end
  1232. end
  1233. local collectMaxNum = TableSize(list_base)
  1234. self.childSuitRewardList[i] = {}
  1235. self.childSuitRewardList[i].suit_type = i
  1236. self.childSuitRewardList[i].progress = 0
  1237. self.childSuitRewardList[i].status = 0
  1238. self.childSuitRewardList[i].time = 0
  1239. self.childSuitRewardList[i].collectMaxNum = collectMaxNum
  1240. self.childSuitRewardList[i].percent_txt = "0%"
  1241. end
  1242. end
  1243. end
  1244. function ChildModel:GetSuitToyBoxLv( )
  1245. return self.toy_box_lv or 0
  1246. end
  1247. function ChildModel:GetSuitToyList( suit_type )
  1248. if suit_type then
  1249. local list = {}
  1250. for k,v in pairs(self.childSuitToyList) do
  1251. if v.suit_type == suit_type then
  1252. table.insert(list,v)
  1253. end
  1254. end
  1255. return list
  1256. else
  1257. return self.childSuitToyList
  1258. end
  1259. end
  1260. function ChildModel:SetSuitTypeToyList( vo16533 )
  1261. local list_base = {}
  1262. self.child_acitve_toy_list = {}
  1263. self.toy_box_lv = vo16533.toy_box_lv
  1264. for k,v in pairs(DeepCopy(self.Config_Child_ToyNew)) do
  1265. for k_toy,v_toy in pairs(vo16533.toy_list) do
  1266. if v_toy.toy_id == v.toy_id then
  1267. v.isActive = true
  1268. table.insert(self.child_acitve_toy_list,v.toy_id)
  1269. end
  1270. end
  1271. table.insert(list_base,v)
  1272. end
  1273. local sort_func = function ( a, b )
  1274. return a.toy_id < b.toy_id
  1275. end
  1276. table.sort(list_base, sort_func)
  1277. --print("=============>>> YiRan:ChildModel [start:933] list_base ------------------------------------------")
  1278. --PrintTable(list_base)
  1279. --print("=============>>> YiRan:ChildModel [end] ------------------------------------------")
  1280. self.childSuitToyList = list_base
  1281. end
  1282. function ChildModel:GetChildHandbookBreakList()
  1283. local goods = GoodsModel:getInstance()
  1284. local colorNums ={
  1285. [0] = {["good_sum"] = 0,["decompose_sum"] = 0,["goods_list"] = {}},
  1286. [1] = {["good_sum"] = 0,["decompose_sum"] = 0,["goods_list"] = {}},
  1287. [2] = {["good_sum"] = 0,["decompose_sum"] = 0,["goods_list"] = {}},
  1288. [3] = {["good_sum"] = 0,["decompose_sum"] = 0,["goods_list"] = {}},
  1289. [4] = {["good_sum"] = 0,["decompose_sum"] = 0,["goods_list"] = {}},
  1290. [5] = {["good_sum"] = 0,["decompose_sum"] = 0,["goods_list"] = {}},
  1291. }
  1292. for k,v in pairs(self.Config_Child_ToyNew) do
  1293. local num = goods:GetTypeGoodsNum(v.toy_id)
  1294. --local decompose_num = stringtotable(v.decompose_reward)[1][3]
  1295. for k,v_active_id in pairs(self.child_acitve_toy_list) do
  1296. if v_active_id == v.toy_id and num > 0 then
  1297. for i=1,5 do
  1298. if v.color == i then
  1299. local list = {}
  1300. list.good_id = v.toy_id
  1301. list.num = num
  1302. table.insert(colorNums[i].goods_list,list)
  1303. local regular_mat = Config.Goodsdecompose[v.toy_id].regular_mat --改成读取通用物品表
  1304. local decompose_num = stringtotable(regular_mat)[1][3]
  1305. colorNums[i].good_sum = colorNums[i].good_sum + num
  1306. colorNums[i].decompose_sum = colorNums[i].decompose_sum + (num*decompose_num)
  1307. end
  1308. end
  1309. end
  1310. end
  1311. end
  1312. return colorNums
  1313. end
  1314. function ChildModel:GetChildHandbookToyUpgradeList(level)
  1315. return self.Config_Child_ToyUpgrade[level]
  1316. end
  1317. --选中当前的v
  1318. function ChildModel:GetChildHandbookItemAttrList(level)
  1319. --print("============>>> YiRan:ChildModel [start:899] level :",level)
  1320. local HbToy_list_before = {}
  1321. if not level then level = 0 end
  1322. if level >= 0 then
  1323. HbToy_list_before = self.Config_Child_ToyUpgrade[level]
  1324. end
  1325. local HbToy_list_after = self.Config_Child_ToyUpgrade[level+1]
  1326. local attr_list_before = HbToy_list_before and stringtotable(HbToy_list_before.add_attr) or {}
  1327. local attr_list_after = HbToy_list_after and stringtotable(HbToy_list_after.add_attr) or {}
  1328. local attr_id,num_after,num_before = 0 -- num_after是配置表的
  1329. local attr_list = {}
  1330. if not HbToy_list_after then
  1331. for k,v in pairs(attr_list_before) do
  1332. attr_id = v[1]
  1333. num_before = v[2]
  1334. num_after = ""
  1335. local list = {}
  1336. list.attr_id = attr_id
  1337. list.num_before = num_before
  1338. list.num_after = num_after
  1339. table.insert(attr_list,list)
  1340. end
  1341. else
  1342. for k,v in pairs(attr_list_after) do
  1343. attr_id = v[1]
  1344. num_before = 0
  1345. num_after = v[2]
  1346. for k_b,v_b in pairs(attr_list_before) do
  1347. if v_b[1] == v[1] then
  1348. num_before = v_b[2]
  1349. end
  1350. end
  1351. local list = {}
  1352. list.attr_id = attr_id
  1353. list.num_before = num_before
  1354. list.num_after = num_after
  1355. table.insert(attr_list,list)
  1356. end
  1357. end
  1358. return attr_list
  1359. --self.attr_item_list[k]:SetData(attr_id,num_before,num_after)
  1360. end
  1361. ----------玩具收集(图鉴)-end-----------
  1362. ----------红点逻辑-start---------
  1363. function ChildModel:IsRedDotChildTrain( )
  1364. if not self:CheckChildFuncIsOpen() then
  1365. return false
  1366. end
  1367. local isRedDot = false
  1368. local feed_list = self:GetChildFeedList()
  1369. if not feed_list then return end
  1370. for k,v in pairs(feed_list) do
  1371. local hadNum = GoodsModel:getInstance():GetTypeGoodsNum(v[1])
  1372. local growUpNextList = self:GetChildNextGrowUpInfo() --下一级列表
  1373. if hadNum > 0 and growUpNextList then
  1374. isRedDot = true
  1375. return isRedDot
  1376. end
  1377. end
  1378. return isRedDot
  1379. end
  1380. function ChildModel:IsRedDotChildCanGet( )
  1381. -- 检查同心任务是否完成
  1382. local finish_heart_link = self:HasGetAllHeartReward( )
  1383. local has_child = self:IsPlayerHadChild()
  1384. return finish_heart_link and not has_child
  1385. end
  1386. --[[
  1387. ---成长的红点分离开来给变强
  1388. function ChildModel:IsRedDotChildTrainGrow( )
  1389. local open_level = self:GetConfigChildKvVal("growth_open_lv")
  1390. local heart_link_level = self:GetChildInfo().heart_link_level or 0
  1391. local isRedDot = false
  1392. --local task_list = self:GetChildDailyTaskList()
  1393. local feed_list = self:GetChildFeedList()
  1394. if not feed_list then return end
  1395. if heart_link_level >= open_level then
  1396. for k,v in pairs(feed_list) do
  1397. local hadNum = GoodsModel:getInstance():GetTypeGoodsNum(v[1])
  1398. local growUpNextList = self:GetChildNextGrowUpInfo() --下一级列表
  1399. if hadNum > 0 and growUpNextList then
  1400. isRedDot = true
  1401. return isRedDot
  1402. end
  1403. end
  1404. end
  1405. return (isRedDot and GetModuleIsOpen(150,1))
  1406. end
  1407. --]]
  1408. -- 载具红点:有可以升级的载具
  1409. function ChildModel:IsRedDotChildVehicle( )
  1410. if not self:CheckChildFuncIsOpen() then
  1411. return false
  1412. end
  1413. local isRedDot = false
  1414. local redVehicleList = {}
  1415. local vehicleList = self:GetChildVehicleList( )
  1416. if not vehicleList then return end
  1417. for k,v in pairs(vehicleList) do
  1418. local selectList_next = self:GetConfigChildVehicleList(v.fashion_id, v.lv + 1)
  1419. if TableSize(selectList_next) > 0 then -- 是否是最高级
  1420. local upgrade_cost = stringtotable(selectList_next.upgrade_cost)
  1421. if upgrade_cost[1][1] == 0 then
  1422. local hadNum = GoodsModel:getInstance():GetTypeGoodsNum(upgrade_cost[1][2]) or 0
  1423. if hadNum >= upgrade_cost[1][3] then
  1424. isRedDot = true
  1425. return isRedDot
  1426. end
  1427. end
  1428. end
  1429. end
  1430. return isRedDot
  1431. end
  1432. function ChildModel:GetOpenSkillNearestId( )
  1433. -- skill_id = 500003
  1434. -- sequence = 3
  1435. -- skill_lv = 0
  1436. return self.skill_list_open_nearest
  1437. end
  1438. function ChildModel:IsCanUpSkill( )
  1439. local child_age_month = self:GetChildInfo().child_age_month or 0
  1440. local limit_num = self:GetConfigChildKvVal("skill_open_stage")
  1441. return (child_age_month >= limit_num )
  1442. end
  1443. function ChildModel:IsRedDotChildSkill( )
  1444. if not self:CheckChildFuncIsOpen() or not self:CheckSkillIsOpen() then
  1445. return false
  1446. end
  1447. local skillList = self:GetChildSkillList( ) --已经按sequence排序过的
  1448. local isRedDot = false
  1449. self.skill_list_open_nearest = nil --最近的为开启那个才有用
  1450. for i,v in ipairs(skillList) do
  1451. if v.skill_lv <= 0 then
  1452. self.skill_list_open_nearest = v --
  1453. break
  1454. end
  1455. end
  1456. if self:IsCanUpSkill() then
  1457. --print("============>>> YiRan:ChildModel [start:530] self.skill_list_open_nearest :",self.skill_list_open_nearest)
  1458. for k,v in pairs(skillList) do
  1459. local skill_list_next = self:GetConfigChildSkillInfo(v.skill_id,v.skill_lv+1)
  1460. if TableSize(skill_list_next) > 0 then -- 是否是最高级
  1461. local active_cost = stringtotable(skill_list_next.active_cost)
  1462. if active_cost[1][1] == 0 then
  1463. local hadNum = GoodsModel:getInstance():GetTypeGoodsNum(active_cost[1][2]) or 0
  1464. if hadNum >= active_cost[1][3] and (not self.skill_list_open_nearest or v.sequence <= self.skill_list_open_nearest.sequence)then
  1465. isRedDot = true
  1466. return isRedDot
  1467. end
  1468. end
  1469. end
  1470. end
  1471. end
  1472. return isRedDot
  1473. end
  1474. function ChildModel:IsRedDotChildFashion( )
  1475. if not self:CheckChildFuncIsOpen() or not self:CheckDressIsOpen() then
  1476. return false
  1477. end
  1478. for k,v in pairs(ChildConst.ChildDressFashionType) do
  1479. local dressList = self:GetChildDressList(v)
  1480. if dressList then
  1481. for k,v_d in pairs(dressList) do
  1482. local cost_num = stringtotable(v_d.upgrade_cost)[1][3]
  1483. local num = GoodsModel:getInstance():GetTypeGoodsNum(v_d.fashion_id)
  1484. if cost_num <= num then
  1485. if not self:IsChildFashionLvMax(v_d.fashion_id,v_d.lv) then
  1486. return true
  1487. end
  1488. end
  1489. end
  1490. end
  1491. end
  1492. return false
  1493. end
  1494. function ChildModel:GetRedDotChildHandbook( )
  1495. return self.red_dot_list_handbook
  1496. end
  1497. function ChildModel:IsRedDotChildHandbook( )
  1498. if not self:CheckChildFuncIsOpen() then
  1499. return false
  1500. end
  1501. local isRedDot = false
  1502. self.red_dot_list_handbook.active_list = {}
  1503. self.red_dot_list_handbook.suit_reward_list = {}
  1504. self.red_dot_list_handbook.is_level_up = false
  1505. self.red_dot_list_handbook.is_can_break = false
  1506. --是否有激活
  1507. local goods = GoodsModel:getInstance()
  1508. for k,v in pairs(self:GetSuitToyList()) do
  1509. if not v.isActive then --未激活且够数量激活就给红点
  1510. local num = goods:GetTypeGoodsNum(v.toy_id)
  1511. --print("============>>> YiRan:ChildModel [start:1176] num :",num,"v.toy_id:",v.toy_id)
  1512. if num > 0 then
  1513. --logWarn('=======Msh:ChildModel.lua[1559]=======')
  1514. isRedDot = true
  1515. local list = {}
  1516. list.isRedDot = true
  1517. list.toy_id = v.toy_id
  1518. list.suit_type = v.suit_type
  1519. PrintTable(list)
  1520. table.insert(self.red_dot_list_handbook.active_list,list)
  1521. end
  1522. end
  1523. end
  1524. --是否有集满套装
  1525. for k,v in pairs(self:GetChildSuitRewardList()) do
  1526. if v.status == 1 then
  1527. local list = {}
  1528. list.isRedDot = true
  1529. list.suit_type = v.suit_type
  1530. table.insert(self.red_dot_list_handbook.suit_reward_list,list)
  1531. --logWarn('=======Msh:ChildModel.lua[1576]=======')
  1532. isRedDot = true
  1533. end
  1534. end
  1535. ----------是否能升级
  1536. local level = self:GetSuitToyBoxLv()
  1537. local next_cost = stringtotable(self:GetChildHandbookToyUpgradeList(level).next_cost)
  1538. --local had_num = GoodsModel:getInstance():GetTypeGoodsNum(next_cost[1][2])
  1539. local had_num = GoodsModel:getInstance():GetSpecialScore(ChildConst.HandBookCoinID)
  1540. local need_num = next_cost[1][3]
  1541. --print('Msh:ChildModel.lua[1588] had_num', had_num, need_num)
  1542. local up_grade_list_next = self:GetChildHandbookToyUpgradeList(level+1)
  1543. if TableSize(up_grade_list_next) > 0 then--非满级
  1544. if had_num >= need_num then
  1545. isRedDot = true
  1546. --logWarn('=======Msh:ChildModel.lua[1587]=======')
  1547. self.red_dot_list_handbook.is_level_up = true
  1548. end
  1549. end
  1550. --------是否可分解
  1551. local break_list = self:GetChildHandbookBreakList()
  1552. for k,v in pairs(break_list) do
  1553. if v.good_sum > 0 then
  1554. isRedDot = true
  1555. --logWarn('=======Msh:ChildModel.lua[1596]=======')
  1556. self.red_dot_list_handbook.is_can_break = true
  1557. end
  1558. end
  1559. --print("=============>>> YiRan:ChildModel [start:1204] self.red_dot_list_handbook ------------------------------------------")
  1560. --PrintTable(self.red_dot_list_handbook)
  1561. --print("=============>>> YiRan:ChildModel [end] ------------------------------------------")
  1562. return isRedDot
  1563. end
  1564. function ChildModel:IsNeedRed(id)
  1565. local isRedChildTrain = self:GetChildRedDotList()[ChildConst.TabId.ChildTrain] or false
  1566. local isRedChildVehicle = self:GetChildRedDotList()[ChildConst.TabId.ChildVehicle] or false
  1567. local isRedChildSKill = self:GetChildRedDotList()[ChildConst.TabId.ChildSkill] or false
  1568. local isRedChildFashion = self:GetChildRedDotList()[ChildConst.TabId.ChildDress] or false
  1569. local isRedChildHandbook = self:GetChildRedDotList()[ChildConst.TabId.ChildHandbook] or false
  1570. local isRedHeartLink = self:GetChildRedDotList()[ChildConst.TabId.HeartLink] or false
  1571. local isRedGetChild = self:GetChildRedDotList()[ChildConst.TabId.GetChild] or false
  1572. local isRedShowBabyReward = self:GetChildRedDotList()[ChildConst.TabId.ShowBabyReward] or false
  1573. if id == ChildConst.TabId.ChildTrain then
  1574. isRedChildTrain = self:IsRedDotChildTrain() or false
  1575. self.ChildRedDotList[id] = isRedChildTrain
  1576. elseif id == ChildConst.TabId.GetChild then
  1577. isRedGetChild = self:IsRedDotChildCanGet() or false
  1578. self.ChildRedDotList[id] = isRedGetChild
  1579. elseif id == ChildConst.TabId.ChildVehicle then
  1580. isRedChildVehicle = self:IsRedDotChildVehicle() or false
  1581. self.ChildRedDotList[id] = isRedChildVehicle
  1582. elseif id == ChildConst.TabId.ChildSkill then
  1583. isRedChildSkill = self:IsRedDotChildSkill() or false
  1584. self.ChildRedDotList[id] = isRedChildSkill
  1585. elseif id == ChildConst.TabId.ChildDress then
  1586. isRedChildFashion = self:IsRedDotChildFashion() or false
  1587. self.ChildRedDotList[id] = isRedChildFashion
  1588. elseif id == ChildConst.TabId.ChildHandbook then
  1589. isRedChildHandbook = self:IsRedDotChildHandbook() or false
  1590. self.ChildRedDotList[id] = isRedChildHandbook
  1591. elseif id == ChildConst.TabId.HeartLink then
  1592. self:UpdateHeartIconRed()
  1593. isRedHeartLink = self:GetHeartIconRed()
  1594. self.ChildRedDotList[id] = isRedHeartLink
  1595. elseif id == ChildConst.TabId.ShowBabyReward then
  1596. -- self:UpdateShowBabyRewardRed()
  1597. isRedShowBabyReward = self:GetShowBabyRewardRed() or self:GetShowBabyRankReward()
  1598. self.ChildRedDotList[id] = isRedShowBabyReward
  1599. self:Fire(ChildConst.UPDATE_RANK_REWARD_RED)
  1600. else
  1601. end
  1602. ----------------------
  1603. local bool = isRedChildTrain or isRedChildVehicle or isRedChildSkill or isRedChildFashion or isRedChildHandbook or isRedHeartLink or isRedGetChild or isRedShowBabyReward
  1604. --print('=======Msh:ChildModel.lua[1801] =======', isRedChildTrain , isRedChildVehicle , isRedChildSkill , isRedChildFashion , isRedChildHandbook , isRedHeartLink , isRedGetChild , isRedShowBabyReward)
  1605. GlobalEventSystem:Fire(EventName.SHOW_FUNCTION_RED_POINT, 165, bool)
  1606. end
  1607. function ChildModel:GetChildRedDotList()
  1608. return self.ChildRedDotList
  1609. end
  1610. --货币道具id
  1611. function ChildModel:GetChildCoinId()
  1612. local cost_list = stringtotable(self.Config_Child_ToyUpgrade[1].next_cost)
  1613. return cost_list[1][2]
  1614. end
  1615. ----------红点逻辑-end-----------
  1616. -- 获取在宝宝副本内,玩家的宝宝形象
  1617. function ChildModel:GetBabyDunMainRoleBabyClothId( )
  1618. local cloth_id = nil
  1619. -- 考虑到玩家没有激活宝宝的情况,这里需要追加随机一个性别
  1620. local child_sex = self.childInfo.child_sex ~= 0 and self.childInfo.child_sex or math.random(1, 2)
  1621. local child_age_month = self.childInfo.child_age_month or 0
  1622. local figure_size = TableSize(self.Config_Child_Figure[child_sex])
  1623. -- 如果宝宝的阶段低于最终阶段,则使用配置的最终阶段模型,否则使用玩家当前的宝宝形象
  1624. if child_age_month < self.Config_Child_Figure[child_sex][figure_size].grow_up_level then
  1625. cloth_id = ChildConst.BabyDunClothID[child_sex]
  1626. else
  1627. cloth_id = self:GetChildCloth()
  1628. end
  1629. return cloth_id
  1630. end
  1631. -- 是否已经开启宝宝的各种功能
  1632. function ChildModel:CheckChildFuncIsOpen( )
  1633. -- 等级是否够
  1634. -- 是否完成宝宝前置(同心任务)
  1635. if RoleManager.Instance.mainRoleInfo.level < Config.Moduleid[165].open_lv or
  1636. not self:HasGetAllHeartReward()
  1637. then
  1638. return false
  1639. end
  1640. return true
  1641. end
  1642. -- 获得宝宝当前成长状态(自己)
  1643. function ChildModel:GetChildCurState( )
  1644. local child_info = self:GetChildInfo()
  1645. local age_month = child_info.child_age_month and child_info.child_age_month or 0
  1646. return self:GetChildStateByAge( age_month )
  1647. end
  1648. -- 传入岁数获取宝宝状态
  1649. function ChildModel:GetChildStateByAge( age_month )
  1650. local age_month = age_month or 0
  1651. if age_month >= self:GetChildMaxGrowState( ) then -- 成熟
  1652. return ChildConst.BABY_STATE.YOUNG
  1653. elseif age_month < self.child_grow_level then -- 襁褓
  1654. return ChildConst.BABY_STATE.BABY
  1655. else -- 爬行
  1656. return ChildConst.BABY_STATE.CHILD
  1657. end
  1658. end
  1659. -- 获取宝宝默认状态
  1660. function ChildModel:GetBaseChildModelID( state, child_sex )
  1661. return ChildConst.BaseModelID[state or 1][child_sex or 1] or 1021
  1662. end
  1663. -- 判断当前坐骑是否可以穿戴
  1664. function ChildModel:CanUseTargetVehicle( vehicle_id, age_month )
  1665. local cur_state = false
  1666. if age_month then
  1667. cur_state = self:GetChildStateByAge( age_month )
  1668. else
  1669. cur_state = self:GetChildCurState()
  1670. end
  1671. local can_on_age = Config.Childvehicle[vehicle_id .. "@" .. 1].can_on_age
  1672. return can_on_age and cur_state and cur_state >= can_on_age
  1673. end
  1674. ----------宝宝晒娃奖励红点-start---------
  1675. -- -- 更新每日排行和每日分享红点
  1676. -- function ChildModel:UpdateShowBabyRewardRed( )
  1677. -- end
  1678. -- 每日分享红点
  1679. function ChildModel:GetShowBabyRewardRed( )
  1680. if not self:CheckChildFuncIsOpen() then
  1681. return false
  1682. end
  1683. local childList = self:GetChildInfo()
  1684. return childList.share_reward ~= 2
  1685. end
  1686. -- 每日排行红点
  1687. function ChildModel:GetShowBabyRankReward( )
  1688. if not self:CheckChildFuncIsOpen() then
  1689. return false
  1690. end
  1691. local childList = self:GetChildInfo()
  1692. return childList.yest_reward == 1
  1693. end
  1694. ----------宝宝晒娃奖励红点-end-----------
  1695. ----------频道晒娃-start---------
  1696. function ChildModel:SetShowBabyStr( str, need_name )
  1697. -- if need_name then
  1698. -- local childList = self:GetChildInfo()
  1699. -- local child_name = childList.child_name
  1700. -- self.show_baby_str_cache = string.format(str, HtmlColorTxt( child_name, ColorUtil.BLUE_DARK))
  1701. -- else
  1702. self.show_baby_str_cache = str
  1703. -- end
  1704. end
  1705. function ChildModel:GetShowBabyStr()
  1706. return self.show_baby_str_cache or ""
  1707. end
  1708. ----------频道晒娃-end-----------