--[[
|
|
<*
|
|
@Author: Saber
|
|
@Description: 社团活跃度界面
|
|
*>
|
|
]]
|
|
GuildActiveView = GuildActiveView or BaseClass(BaseItem)
|
|
local GuildActiveView = GuildActiveView
|
|
|
|
function GuildActiveView:__init(parent_wnd,prefab_asset,layer_name)
|
|
self.base_file = "guild"
|
|
self.layout_file = "GuildActiveView"
|
|
self.parent_wnd = parent_wnd
|
|
self.layer_name = layer_name
|
|
self.left_item_con = {} -- 左侧的社团活跃item表
|
|
-- self.light_item_con = {} -- 左侧的社团活跃节点光图片列表
|
|
self.right_item_con = {} -- 中间玩家当日活跃度item表
|
|
self.model = GuildModel:getInstance()
|
|
-- 活跃数据
|
|
self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 40400)
|
|
self.model:Fire(GuildModel.REQUEST_CCMD_EVENT, 40402)
|
|
self.week_act_data = self.model:GetActiveRewardCfg() -- 社团每周活跃奖励配置
|
|
self.fillamount_stage_pec = {
|
|
[0] = 0.04,
|
|
[1] = 0.155,
|
|
[2] = 0.325,
|
|
[3] = 0.5,
|
|
[4] = 0.676,
|
|
[5] = 0.85,
|
|
}
|
|
self:Load()
|
|
end
|
|
|
|
function GuildActiveView:Load_callback()
|
|
self.nodes = {
|
|
-- 左侧
|
|
"left/left_fillbar:img", "left/act_week_val:txt",
|
|
"left/act_val:txt", "left/act_tips:tmp", "left/ques_btn:obj",
|
|
-- 右侧
|
|
"right/act_task_scroll", "right/act_task_scroll/Viewport/act_task_con",
|
|
}
|
|
self:GetChildren(self.nodes)
|
|
local function image_callback()
|
|
self.left_fillbar_img.type = UnityEngine.UI.Image.Type.Filled
|
|
end
|
|
lua_resM:setOutsideImageSprite(self, self.left_fillbar_img, GameResPath.GetGuildImage("guild_active_circle_fill"), false, image_callback)
|
|
|
|
for i = 1, 5 do
|
|
self.left_item_con[i] = {}
|
|
self.left_item_con[i].node = self:GetChild("left/left_item_con" .. i)
|
|
-- self.light_item_con[i] = self:GetChild("left/l_point" .. i).gameObject
|
|
self.left_item_con[i].value = self:GetChild("left/left_item_val" .. i):GetComponent(typeof(TMPro.TextMeshProUGUI))
|
|
end
|
|
|
|
self:AddEvents()
|
|
self:UpdateView()
|
|
end
|
|
|
|
function GuildActiveView:AddEvents( )
|
|
local function click_event(target)
|
|
if target == self.ques_btn_obj then
|
|
GlobalEventSystem:Fire(EventName.OPEN_INSTRUCTION_VIEW, 40005)
|
|
end
|
|
end
|
|
AddClickEvent(self.ques_btn_obj, click_event)
|
|
-- 更新社团周活跃数据
|
|
local function update_guild_act_data()
|
|
self:UpdateLeftConInfo()
|
|
self:UpdateLeftActItem()
|
|
end
|
|
self:BindEvent(self.model, GuildModel.UPDATE_GUILD_ACTIVE_DATA, update_guild_act_data)
|
|
-- 更新玩家日常数据
|
|
local function update_role_act_data()
|
|
self:UpdatePersonalActiveData()
|
|
end
|
|
self:BindEvent(self.model, GuildModel.UPDATE_ROLE_ACTIVE_DATA, update_role_act_data)
|
|
-- 更新活跃任务表
|
|
local function update_task_data()
|
|
self:UpdateGuildActTask()
|
|
end
|
|
self:BindEvent(self.model, GuildModel.UPDATE_GUILD_TASK_PROGRESS, update_task_data)
|
|
-- 更新奖励领取结果
|
|
local function update_reward_stage(opty)
|
|
if opty == 1 then
|
|
self:UpdateLeftActItem()
|
|
end
|
|
end
|
|
self:BindEvent(self.model, GuildModel.UPDATE_GUILD_ACTIVE_REWARD, update_reward_stage)
|
|
end
|
|
|
|
function GuildActiveView:UpdateView( )
|
|
self.act_tips_tmp.text = string.format("(达到%s才可领取奖励)", self.model:GetGuildKvByKey("min_active_require").val)
|
|
self:UpdateLeftConInfo()
|
|
self:UpdateLeftActItem()
|
|
self:UpdatePersonalActiveData()
|
|
self:UpdateGuildActTask()
|
|
end
|
|
|
|
-- 更新左侧数据
|
|
function GuildActiveView:UpdateLeftConInfo( )
|
|
-- 社团本周活跃度
|
|
local guild_active, guild_active_stage, guild_week_stime = self.model:GetGuildActiveData()
|
|
self.act_week_val_txt.text = guild_active
|
|
-- 计算滚动条的长度
|
|
local cur_stage = 0
|
|
local max_stage = #self.week_act_data
|
|
for i = 1, max_stage do
|
|
if self.week_act_data[i].need <= guild_active then
|
|
cur_stage = i
|
|
else
|
|
break
|
|
end
|
|
end
|
|
cur_need = self.week_act_data[cur_stage+1 < max_stage and cur_stage+1 or cur_stage].need
|
|
local fillAmount = 0
|
|
if cur_stage < max_stage then -- 未满的情况
|
|
local cur_need = self.week_act_data[cur_stage] and self.week_act_data[cur_stage].need or 0
|
|
local next_need = self.week_act_data[cur_stage+1].need
|
|
local cur_stage_start_pec = self.fillamount_stage_pec[cur_stage]
|
|
local next_stage_start_pec = self.fillamount_stage_pec[cur_stage + 1]
|
|
fillAmount = cur_stage_start_pec + (next_stage_start_pec - cur_stage_start_pec) * (guild_active-cur_need) / (next_need - cur_need)
|
|
-- fillAmount = (guild_active - cur_need) / (next_need - cur_need) / max_stage + cur_stage / max_stage
|
|
else
|
|
fillAmount = 1
|
|
end
|
|
self.left_fillbar_img.fillAmount = fillAmount
|
|
end
|
|
|
|
-- 更新左侧活跃奖励item
|
|
function GuildActiveView:UpdateLeftActItem( )
|
|
-- 获取社团当前周的活跃信息
|
|
for k, v in ipairs(self.left_item_con) do
|
|
if not v.item then
|
|
v.item = GuildActiveActItem.New(v.node)
|
|
end
|
|
v.item:SetData(self.week_act_data[k])
|
|
v.value.text = self.week_act_data[k] and self.week_act_data[k].need or 0
|
|
end
|
|
end
|
|
|
|
-- 更新个人活跃数据
|
|
function GuildActiveView:UpdatePersonalActiveData( )
|
|
-- 今日活跃值
|
|
local personal_active = self.model:GetPersonalActiveInfo()
|
|
self.act_val_txt.text = personal_active
|
|
end
|
|
|
|
-- 更新社团活跃度任务
|
|
function GuildActiveView:UpdateGuildActTask( )
|
|
local task_list = self.model:GetGuildActiveTaskCfg()
|
|
self.task_item_creator = self.task_item_creator or self:AddUIComponent(UI.ItemListCreator)
|
|
local info = {
|
|
data_list = task_list,
|
|
item_con = self.act_task_con,
|
|
scroll_view = self.act_task_scroll,
|
|
item_class = GuildActiveTaskItem,
|
|
item_height = 102,
|
|
start_x = 4,
|
|
start_y = -5,
|
|
space_y = 5,
|
|
create_frequency = 0.01,
|
|
alignment = UnityEngine.TextAnchor.UpperLeft,
|
|
on_update_item = function(item, i, v)
|
|
item:SetData(v)
|
|
end,
|
|
}
|
|
self.task_item_creator:UpdateItems(info)
|
|
end
|
|
|
|
function GuildActiveView:__delete( )
|
|
for k, v in ipairs(self.left_item_con) do
|
|
if v.item then
|
|
v.item:DeleteMe()
|
|
v.item = nil
|
|
end
|
|
end
|
|
self.left_item_con = {}
|
|
end
|