源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

407 lines
14 KiB

преди 1 месец
  1. --社团协助感谢界面
  2. GuildSupportThankView = GuildSupportThankView or BaseClass(BaseView)
  3. local GuildSupportThankView = GuildSupportThankView
  4. function GuildSupportThankView:__init()
  5. self.base_file = "guild"
  6. self.layout_file = "GuildSupportThankView"
  7. self.layer_name = "Top"
  8. self.is_set_zdepth = true
  9. self.use_background = true
  10. self.click_bg_toClose = true
  11. self.hide_maincancas = false
  12. self.blur_activity_bg = true
  13. self.use_show_anim = true
  14. self.use_hide_anim = true
  15. self.model = GuildModel:getInstance()
  16. self.view_type = GuildModel.SupportType.Thank--默认是感谢界面如果是2的话就是
  17. self.item_list = {}
  18. self.award_item_list = {}
  19. self.choose_desc_id = 1
  20. self.choose_open = false
  21. self.load_callback = function ()
  22. self:LoadSuccess()
  23. self:AddEvent()
  24. self:UpdateView( )
  25. end
  26. self.open_callback = function ( )
  27. self:OpenSuccess()
  28. end
  29. self.destroy_callback = function ( )
  30. self:DestroySuccess()
  31. end
  32. end
  33. function GuildSupportThankView:DestroySuccess()
  34. if self.roleItem then
  35. self.roleItem:DeleteMe()
  36. self.roleItem = nil
  37. end
  38. if self.vipItem then
  39. self.vipItem:DeleteMe()
  40. self.vipItem = nil
  41. end
  42. if self.awardItem1 then
  43. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem1)
  44. self.awardItem1 = nil
  45. end
  46. if self.awardItem2 then
  47. UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem2)
  48. self.awardItem2 = nil
  49. end
  50. for k, v in ipairs(self.award_item_list) do
  51. UIObjPool:PushItem(UIObjPool.UIType.AwardItem, v)
  52. end
  53. self.award_item_list = {}
  54. for k, v in ipairs(self.item_list) do
  55. v:DeleteMe()
  56. v = nil
  57. end
  58. self.item_list = {}
  59. end
  60. function GuildSupportThankView:LoadSuccess()
  61. local nodes = {
  62. "lb1:tmp","addFriendBtn:obj:img","goods_con1:obj","thankBtn/thankBtnText:tmp",
  63. "thankBtn:obj","goods_con2:obj","myText:obj:tmp","youText:tmp","lb2:tmp","itemScroll",
  64. "addFriendBtn/addFriendBtnText:tmp","bg:raw","bg_title:raw", "tip:tmp","lbImg2:obj",
  65. "itemScroll/Viewport/itemCon", "line3:obj","oneItemCon/nameCon/vipCon/vip:img",
  66. --单个节点
  67. "oneItemCon/oneFriendBtn:obj", "oneItemCon/nameCon/name:tmp","awardCon",
  68. "oneItemCon/nameCon/sexCon/sex:img", "oneItemCon:obj", "oneItemCon/headCon",
  69. }
  70. self:GetChildren(nodes)
  71. self.myText_tmp.text = "你的\n奖励"
  72. self.tip_tmp.text = "点击空白位置关闭"
  73. self.awardItem1 = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.goods_con1)
  74. self.awardItem1:SetItemSize(78, 78)
  75. self.awardItem2 = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.goods_con2)
  76. self.awardItem2:SetItemSize(78, 78)
  77. lua_resM:setOutsideRawImage(self, self.bg_raw, GameResPath.GetViewBigBg("guild_support_thank_bg"))
  78. local info = self.data.role_list
  79. local need_add_friend = false
  80. if info then
  81. for i,v in ipairs(info) do
  82. local is_friend = SocialityModel.Instance:IsRelaviveType(v.role_id, Config.ConfigSocial.RelativeType.friend)
  83. local is_black = SocialityModel.Instance:IsRelaviveType(v.role_id, Config.ConfigSocial.RelativeType.black)
  84. if not is_friend and not is_black then
  85. need_add_friend = true
  86. break
  87. end
  88. end
  89. end
  90. self.need_add_friend = need_add_friend
  91. if self.view_type == GuildModel.SupportType.Thank then--界面是感谢状态
  92. lua_resM:setOutsideRawImage(self, self.bg_title_raw, GameResPath.GetGuildImage("guild_support_thank_title"),true)
  93. self.myText_obj:SetActive(true)
  94. self.goods_con1_obj:SetActive(true)
  95. self.lbImg2_obj:SetActive(true)
  96. self.line3_obj:SetActive(true)
  97. SetAnchoredPosition(self.youText,35,-62)
  98. SetAnchoredPosition(self.goods_con2,705,-383)
  99. SetAnchoredPosition(self.lb2,644,-499)
  100. self.thankBtnText_tmp.text = "发送感谢"
  101. self.lb2_tmp.text = "感谢协助双方均可获得奖励"
  102. self.youText_tmp.text = "对方\n奖励"
  103. -- 展示添加好友按钮
  104. -- self.addFriendBtn_obj:SetActive(true)
  105. else--界面是领奖展示状态
  106. lua_resM:setOutsideRawImage(self, self.bg_title_raw, GameResPath.GetGuildImage("guild_support_thank_title2"),true)
  107. self.myText_obj:SetActive(false)
  108. self.goods_con1_obj:SetActive(false)
  109. self.lbImg2_obj:SetActive(false)
  110. self.line3_obj:SetActive(false)
  111. self.goods_con2_obj:SetActive(false)
  112. self.addFriendBtn_obj:SetActive(false)
  113. SetAnchoredPosition(self.goods_con2,781,-413)
  114. SetAnchoredPosition(self.lb2,631,-384)
  115. SetAnchoredPosition(self.youText,-9,-146)
  116. SetAnchoredPositionX(self.thankBtn, -10)
  117. self.thankBtnText_tmp.text = "收下谢礼"
  118. self.lb2_tmp.text = "对方给您发了协助奖励"
  119. self.youText_tmp.text = "协助奖励"
  120. end
  121. if self.need_refreshData then
  122. self:UpdateView( )
  123. end
  124. end
  125. function GuildSupportThankView:AddEvent()
  126. local function onBtnClickHandler(target,x,y)
  127. if target == self.addFriendBtn_obj then--一键加好友
  128. if not self.need_add_friend then
  129. Message.show("暂无好友可加", "fault")
  130. return
  131. end
  132. local info = self.data.role_list
  133. for i,v in ipairs(info) do
  134. local is_friend = SocialityModel.Instance:IsRelaviveType(v.role_id, Config.ConfigSocial.RelativeType.friend)
  135. local is_black = SocialityModel.Instance:IsRelaviveType(v.role_id, Config.ConfigSocial.RelativeType.black)
  136. if not is_friend and not is_black then
  137. SocialityModel:getInstance():Fire(SocialityModel.REQUEST_CCMD_EVENT, 14003, v.role_id)
  138. end
  139. end
  140. elseif target == self.thankBtn_obj then--感谢或者确认
  141. if self.view_type == GuildModel.SupportType.Thank then
  142. self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 40050, GuildModel.SupportThankType.Normal, self.data.support_id, "")--这里标记一下发协助ID
  143. else
  144. self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 40070, self.data.type, self.data.support_id)--这里标记一下发协助ID
  145. end
  146. elseif target == self.oneFriendBtn_obj then--单个玩家加好友
  147. if self.one_data and self.one_data.role_id then
  148. SocialityModel:getInstance():Fire(SocialityModel.REQUEST_CCMD_EVENT, 14003, self.one_data.role_id)
  149. end
  150. end
  151. end
  152. AddClickEvent(self.addFriendBtn_obj, onBtnClickHandler)
  153. AddClickEvent(self.thankBtn_obj, onBtnClickHandler, LuaSoundManager.SOUND_UI.NONE)
  154. AddClickEvent(self.oneFriendBtn_obj, onBtnClickHandler, LuaSoundManager.SOUND_UI.NONE)
  155. --2021.4.14改版
  156. local function updateViewFunc( )
  157. self:UpdateView()
  158. end
  159. -- self:BindEvent(self.model,GuildModel.UPDATE_GUILD_SUPPOR_THANK_INFO, updateViewFunc)--刷新
  160. self:BindEvent(SocialityModel:getInstance(),SocialityModel.UPDATE_SOCIALITY_VIEW, updateViewFunc)--刷新
  161. -- local function updateViewDesc( index )
  162. -- if not self.is_loaded then return end
  163. -- self.choose_desc_id = index
  164. -- end
  165. -- self:BindEvent(self.model,GuildModel.UPDATE_GUILD_SUPPOR_THANK_DESC, updateViewDesc)--刷新
  166. end
  167. function GuildSupportThankView:Open(view_type,data)
  168. self.view_type = view_type or self.view_type
  169. self.data = data
  170. print("huangcong:GuildSupportThankView [start:175] self.data:", self.data)
  171. PrintTable(self.data)
  172. print("huangcong:GuildSupportThankView [end]")
  173. BaseView.Open(self)
  174. end
  175. function GuildSupportThankView:OpenSuccess( )
  176. -- self:UpdateView()
  177. end
  178. function GuildSupportThankView:UpdateView( )
  179. if self.is_loaded then
  180. self.need_refreshData = false
  181. else
  182. self.need_refreshData = true
  183. return
  184. end
  185. if not self.data then return end
  186. if self.data.chat_msg then
  187. -- self.desc_tmp.text = self.data.chat_msg
  188. end
  189. if self.data.type == GuildModel.SupportThankType.SpellList then--社团派单走这里
  190. self.cfg = Config.Guildorder[self.data.support_cfg_id]
  191. if not self.cfg then
  192. print("社团派单配置不存在:", self.data.support_cfg_id)
  193. return
  194. end
  195. if self.data.role_list[1] and self.data.role_list[1].name then
  196. self.lb1_tmp.text = string.format("感谢您协助拼单:%s",HtmlColorTxt(Trim(self.cfg.name), GuildModel.SpellListColor[self.cfg.color]))
  197. end
  198. else
  199. self.cfg = self.model:GetGuildSupportCfg(self.data.support_cfg_id)
  200. if not self.cfg then
  201. print("协助配置不存在 Id:", self.data.support_cfg_id)
  202. return
  203. end
  204. local goods_cfg1 = self.cfg.thank_reward
  205. if goods_cfg1 and goods_cfg1[1] then
  206. local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(goods_cfg1[1][1],goods_cfg1[1][2])
  207. self.awardItem1:SetData(typeId,goods_cfg1[1][3])
  208. end
  209. local goods_cfg2 = self.cfg.support_reward
  210. if goods_cfg2 and goods_cfg2[1] then
  211. local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(goods_cfg2[1][1],goods_cfg2[1][2])
  212. self.awardItem2:SetData(typeId,goods_cfg2[1][3])
  213. end
  214. local boss_id = self.data.boss_id
  215. if not boss_id then
  216. for i,v in ipairs(self.data.extra_value) do
  217. if v.key == 1 then
  218. boss_id = v.value
  219. end
  220. end
  221. end
  222. local boss_type_name = ""
  223. local monster_name = ""
  224. if self.data.support_cfg_id == GuildSupportInfoItem.CFG_TYPE.MONEY_BOSS or
  225. self.data.support_cfg_id == GuildSupportInfoItem.CFG_TYPE.DESERTED_BOSS then
  226. --Boss形象
  227. local monster = ConfigItemMgr.Instance:GetMonsterDataItem(boss_id)
  228. if not monster then
  229. print('----HC GuildSupportThankView.lua -- 没有找到怪物配置=')
  230. return
  231. end
  232. local boss_type = BossModel:GetInstance():GetBossTypeByBossId( boss_id )
  233. boss_type_name = self.model:GetSupportTypeName(boss_type) or ""
  234. monster_name = monster.name
  235. end
  236. local support_text = GuildModel.SupportTypeStr[self.data.support_cfg_id] or "协助击杀"
  237. if self.view_type == GuildModel.SupportType.Thank then
  238. self.lb1_tmp.text = string.format("以下成员%s%s:%s",support_text,boss_type_name,HtmlColorTxt(monster_name, ColorUtil.PURPLE_DARK))
  239. else
  240. if self.data.role_list[1] and self.data.role_list[1].name then
  241. self.lb1_tmp.text = string.format("感谢您%s%s:%s",support_text,boss_type_name,HtmlColorTxt(monster_name, ColorUtil.PURPLE_DARK))
  242. end
  243. end
  244. end
  245. self:UpdateItemList()
  246. self:UpdateThankBtnAndAddBtnPos()
  247. if self.view_type ~= GuildModel.SupportType.Thank then
  248. self:UpdateAwardList()
  249. else
  250. for k,v in pairs(self.award_item_list) do
  251. v:SetVisible(false)
  252. end
  253. end
  254. end
  255. function GuildSupportThankView:BtnCloseEvt()--关闭按钮回调
  256. self:Close()
  257. end
  258. function GuildSupportThankView:UpdateItemList( )
  259. local info = self.data.role_list
  260. if not info or #info == 0 then return end
  261. if #info == 1 then
  262. self.one_data = info[1]
  263. self.oneItemCon_obj:SetActive(true)
  264. self:UpdateOneItemInfo()
  265. return
  266. else
  267. self.oneItemCon_obj:SetActive(false)
  268. self.one_data = nil
  269. end
  270. local item
  271. local offer_x = 90
  272. local offer_y = 0
  273. for k, v in ipairs(info) do
  274. item = self.item_list[k]
  275. if not item then
  276. item = GuildSupportThankItem.New(self.itemCon)
  277. self.item_list[k] = item
  278. end
  279. item:SetData(v, k)
  280. item:SetPosition(1, -GuildSupportThankItem.Height*(k - 1) - 1)
  281. item:SetVisible(true)
  282. end
  283. SetSizeDeltaY(self.itemCon,GuildSupportThankItem.Height*#info)
  284. end
  285. function GuildSupportThankView:UpdateOneItemInfo( )
  286. if not self.one_data or not self.one_data.name then return end
  287. --以下就是玩家的个人数据
  288. local is_friend = SocialityModel.Instance:IsRelaviveType(self.one_data.role_id, Config.ConfigSocial.RelativeType.friend)
  289. local is_black = SocialityModel.Instance:IsRelaviveType(self.one_data.role_id, Config.ConfigSocial.RelativeType.black)
  290. self.oneFriendBtn_obj:SetActive(not is_friend and not is_black)
  291. self.name_tmp.text = self.one_data.name
  292. if not self.vipItem then
  293. self.vipItem = RoleVipItem.New(self.vip)
  294. end
  295. self.vipItem:SetData(self.one_data.vip_flag, self.one_data.sup_vip_type)
  296. if not self.roleItem then
  297. self.roleItem = HeadRoleItem.New(self.headCon)
  298. self.roleItem:SetItemSize(85,85)
  299. end
  300. local role_lv = WordManager:GetRoleLevel(self.one_data.level, self.one_data.turn)
  301. local head_data = {
  302. vo = {
  303. id = self.one_data.role_id,
  304. server_id = self.one_data.server_num,
  305. -- career = self.one_data.career,
  306. sex = self.one_data.sex,
  307. turn = self.one_data.turn,
  308. picture_ver = self.one_data.picture_ver,
  309. picture = self.one_data.picture,
  310. profile_photo_id = self.one_data.profile_photo_id,
  311. dress_board_id = self.one_data.dress_board_id or self.one_data.dress_id,
  312. level = self.one_data.level,
  313. empty_head = false, -- 是否是空数据头像
  314. }
  315. }
  316. self.roleItem:SetData(head_data)
  317. local function callback( ... )
  318. SetSizeDeltaX(self.name,self.name_tmp.preferredWidth+2)
  319. end
  320. if self.one_data.sex then
  321. lua_resM:setImageSprite(self, self.sex_img, "common_asset", self.one_data.sex == 1 and "com_boy" or "com_girl", true,callback)
  322. end
  323. end
  324. function GuildSupportThankView:UpdateAwardList( )
  325. for k,v in pairs(self.award_item_list) do
  326. v:SetVisible(false)
  327. end
  328. local data = self.cfg.support_reward
  329. if self.data.type == GuildModel.SupportThankType.SpellList then--社团派单走这里
  330. data = stringtotable(self.cfg.order_reward)
  331. end
  332. if not data or TableSize(data) == 0 then
  333. return
  334. end
  335. -- print("huangcong:CompetingListCon [50]data: ",data)
  336. -- PrintTable(data)
  337. local len = #data
  338. for i=1, len do
  339. local goods_cfg = data[i]
  340. if goods_cfg then
  341. local good_id,is_locked = GoodsModel:getInstance():GetMappingTypeId(goods_cfg[1],goods_cfg[2])
  342. local item = self.award_item_list[i]
  343. if not item then
  344. item = UIObjPool:PopItem(UIObjPool.UIType.AwardItem,self.awardCon)
  345. item:SetItemSize(78,78)
  346. self.award_item_list[i] = item
  347. end
  348. item:SetPosition(88*(i-1),-1)
  349. item:SetVisible(true)
  350. item:SetData(good_id, goods_cfg[3], nil,nil,is_locked,nil,nil)
  351. end
  352. end
  353. self.awardCon.sizeDelta = Vector2(88*len,80)
  354. local sum_x = 88*len
  355. local size_x = 385--y66
  356. if sum_x < size_x then
  357. local offer_x = (size_x - sum_x)/2 + 5
  358. for i,v in ipairs(self.award_item_list) do
  359. local pos = v:GetPosition()
  360. v:SetPosition(pos.x+offer_x,pos.y)
  361. end
  362. end
  363. end
  364. -- 更新发起感谢和一键加好友按钮的位置和显示
  365. function GuildSupportThankView:UpdateThankBtnAndAddBtnPos( )
  366. if self.need_add_friend then
  367. self.addFriendBtn_obj:SetActive(true)
  368. SetAnchoredPositionX(self.thankBtn, -98)
  369. else
  370. self.addFriendBtn_obj:SetActive(false)
  371. SetAnchoredPositionX(self.thankBtn, -10)
  372. end
  373. end