|
FuliAIView = FuliAIView or BaseClass(BaseItem)
|
|
local FuliAIView = FuliAIView
|
|
|
|
function FuliAIView:__init()
|
|
self.use_local_view = true
|
|
self.base_file = "fuli"
|
|
self.layout_file = "FuliAIView"
|
|
self.model = FuliModel:GetInstance()
|
|
self.item_list = {}
|
|
self.hand_anim_list = {}
|
|
self.do_not_set_progress = false
|
|
self.is_hide_delete_effect = false
|
|
self:Load()
|
|
end
|
|
|
|
function FuliAIView:Load_callback()
|
|
self.nodes = {
|
|
"item_con","time_text:tmp","effect","role_con",
|
|
}
|
|
self:GetChildren(self.nodes)
|
|
self:AddEvents()
|
|
if self.need_refreshData then
|
|
self:SetData()
|
|
end
|
|
self:AddUIEffect("ui_zaixianlibao", self.effect, "UI", Vector3(-126,48,0), 1, true, -1, nil, call_back,nil,nil, 14)
|
|
|
|
end
|
|
|
|
function FuliAIView:AddEvents( )
|
|
local function on_update_view( )
|
|
self:UpdateView()
|
|
end
|
|
self.on_update_view_id = self.model:Bind(FuliConst.UPDATE_FULI_AI_INFO, on_update_view)
|
|
end
|
|
|
|
function FuliAIView:UpdateView( )
|
|
-- if self.model:IsFuliAINeedRed() then
|
|
-- self:PlayHandEffect()
|
|
-- else
|
|
-- self:StopHandEffect()
|
|
-- end
|
|
self.data = self.model:GetFuliAIInfo()
|
|
local cfg = self.model:GetFuliAICFG(self.data.type)
|
|
local pos = {
|
|
-- {20,-252},{266,-392},{668,-377},{899,-205},{724,-21}
|
|
-- {53.8,-128.7},{244.3,-9.5},{448.6,-124.7},{450,-331},{244,-446},{15,-321.8}
|
|
{-61,-162.5},{197,-26.5},{393.5,-164},{405,-348},{184,-474},{-44.5,-340}
|
|
}
|
|
for i,v in ipairs(cfg) do
|
|
local item = self.item_list[i]
|
|
if not item then
|
|
item = FuliAIItem.New(self.item_con)
|
|
item:SetPosition(pos[i][1], pos[i][2])
|
|
self.item_list[i] = item
|
|
end
|
|
item:SetData(i,v,self.data)
|
|
end
|
|
self:UpdateOnlineTime()
|
|
-- self:UpdateProgressBar()
|
|
end
|
|
|
|
function FuliAIView:timeConvert(time)
|
|
local hoursStr = math.floor(time / 60 / 60) % 24
|
|
local minutesStr = math.floor(time / 60) % 60
|
|
local secondStr = time % 60
|
|
if tonumber(hoursStr) < 10 then hoursStr = 0 .. hoursStr end
|
|
if tonumber(minutesStr) < 10 then minutesStr = 0 .. minutesStr end
|
|
if tonumber(secondStr) < 10 then secondStr = 0 .. secondStr end
|
|
return hoursStr .. HtmlColorTxt(" 时 ", "#ffffff", 0.8) .. minutesStr .. HtmlColorTxt(" 分 ", "#ffffff", 0.8) .. secondStr .. HtmlColorTxt(" 秒 ", "#ffffff", 0.8)
|
|
end
|
|
|
|
function FuliAIView:UpdateProgressBar( )
|
|
local server_data = self.model:GetFuliAIInfo()
|
|
local cfg = self.model:GetFuliAICFG(server_data.type)
|
|
local progress_data = {
|
|
[1] = {left = 0, right = 0.055,min = 0 , max = 0, minus = 0},
|
|
[2] = {left = 0.055, right = 0.271,min = 0 , max = 0, minus = 0},
|
|
[3] = {left = 0.33, right = 0.58,min = 0 , max = 0, minus = 0},
|
|
[4] = {left = 0.655, right = 0.945,min = 0 , max = 0, minus = 0},
|
|
}
|
|
for i,v in ipairs(cfg) do
|
|
if i == 1 then
|
|
progress_data[i].min = 0
|
|
progress_data[i].max = v.duration
|
|
progress_data[i].minus = progress_data[i].max - progress_data[i].min
|
|
progress_data[i].offset = progress_data[i].right - progress_data[i].left
|
|
else
|
|
progress_data[i].min = cfg[i-1].duration
|
|
progress_data[i].max = v.duration
|
|
progress_data[i].minus = progress_data[i].max - progress_data[i].min
|
|
progress_data[i].offset = progress_data[i].right - progress_data[i].left
|
|
end
|
|
end
|
|
local find = false
|
|
if self.do_not_set_progress then--已经填满了就不用再设置了
|
|
for i,v in ipairs(progress_data) do
|
|
if server_data.duration_time <= v.max and server_data.duration_time >= v.min then
|
|
self.progress_image_img.fillAmount = v.left + (server_data.duration_time - v.min)/v.minus * v.offset
|
|
find = true
|
|
break
|
|
end
|
|
end
|
|
end
|
|
if not find and not self.do_not_set_progress then--没找到代表着已经填充完了
|
|
self.progress_image_img.fillAmount = 1
|
|
self.do_not_set_progress = true
|
|
end
|
|
local function callback( ... )
|
|
self.time_text_tmp.text = self:timeConvert(server_data.duration_time or 0)
|
|
local find = false
|
|
if self.do_not_set_progress then--已经填满了就不用再设置了
|
|
for i,v in ipairs(progress_data) do
|
|
if server_data.duration_time <= v.max and server_data.duration_time >= v.min then
|
|
self.progress_image_img.fillAmount = v.left + (server_data.duration_time - v.min)/v.minus * v.offset
|
|
find = true
|
|
break
|
|
end
|
|
end
|
|
end
|
|
if not find and not self.do_not_set_progress then--没找到代表着已经填充完了
|
|
self.progress_image_img.fillAmount = 1
|
|
self.do_not_set_progress = true
|
|
end
|
|
end
|
|
self.model:SetFuncCallBack(callback, "FuliAIView:UpdateProgressBar")
|
|
end
|
|
|
|
function FuliAIView:UpdateOnlineTime( )
|
|
local server_data = self.model:GetFuliAIInfo()
|
|
local function callback( ... )
|
|
self.time_text_tmp.text = self:timeConvert(server_data.duration_time or 0)
|
|
end
|
|
self.model:SetFuncCallBack(callback, "FuliAIView:UpdateOnlineTime")
|
|
end
|
|
|
|
function FuliAIView:UpdateRoleModel( )
|
|
local res_data = {
|
|
father_node = self,
|
|
transform = self.role_con,
|
|
fashion_type = FuncOpenModel.TypeId.FJarvis,
|
|
figure_id = 1019,
|
|
position = Vector3(-30,-70,0),
|
|
scale = 330,
|
|
ui_model_type = UIModelCommon.ModelType.BackModel,
|
|
action_name_list = {"show"},
|
|
rotate = -25,
|
|
}
|
|
FuncOpenModel:getInstance():SetModelRes(res_data)
|
|
end
|
|
|
|
function FuliAIView:SetData( data )
|
|
self.data = data
|
|
if self.is_loaded then
|
|
self.need_refreshData = false
|
|
self.model:Fire(FuliConst.AI_TALK_SHOW, FuliConst.AI_TALK_TYPE.ENTER)
|
|
self:UpdateView()
|
|
self:UpdateRoleModel()
|
|
else
|
|
self.need_refreshData = true
|
|
end
|
|
end
|
|
|
|
|
|
function FuliAIView:PlayHandEffect()
|
|
do return end --2020527废弃 防止策划吃书 先留着
|
|
if self.is_play_hand_effect then
|
|
return
|
|
end
|
|
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.hand_image_obj)
|
|
self.hand_image_obj:SetActive(true)
|
|
if not self.hand_image_canvas then
|
|
self.hand_image_canvas = self.hand_image:GetComponent("CanvasGroup")
|
|
end
|
|
self.hand_image_canvas.alpha = 0
|
|
local function delayfun()
|
|
local id = TweenLite.to(self, self.hand_image_canvas,TweenLite.UiAnimationType.ALPHA, 1, 0.5)
|
|
table.insert(self.hand_anim_list, id)
|
|
end
|
|
local callfun1 = cc.CallFunc.New(delayfun)
|
|
local function delayfun2()
|
|
self.dot_image_obj:SetActive(true)
|
|
self.left_arrow_obj:SetActive(true)
|
|
self.right_arrow_obj:SetActive(true)
|
|
local time = 1.5
|
|
local id = TweenLite.to(self, self.dot_image,TweenLite.UiAnimationType.SCALE, Vector3(1.2,1.2,1.2), time,nil,nil,true)
|
|
table.insert(self.hand_anim_list, id)
|
|
id = TweenLite.to(self, self.left_arrow, TweenLite.UiAnimationType.ANCHORED_POSX, -204.5, time,nil,nil,true)
|
|
table.insert(self.hand_anim_list, id)
|
|
id = TweenLite.to(self, self.right_arrow, TweenLite.UiAnimationType.ANCHORED_POSX, 71, time,nil,nil,true)
|
|
table.insert(self.hand_anim_list, id)
|
|
end
|
|
local callfun2 = cc.CallFunc.New(delayfun2)
|
|
--再显示出来
|
|
local function delayfun3()
|
|
end
|
|
local callfun3 = cc.CallFunc.New(delayfun3)
|
|
local action = cc.Sequence.New(cc.DelayTime.New(0.5),callfun1,cc.DelayTime.New(1), callfun2, cc.DelayTime.New(0.5), callfun3)
|
|
cc.ActionManager:getInstance():addAction(action, self.hand_image_obj)
|
|
self.is_play_hand_effect = true
|
|
end
|
|
|
|
function FuliAIView:StopHandEffect( )
|
|
self.is_play_hand_effect = false
|
|
-- if self.hand_image_obj then
|
|
-- self.hand_image_obj:SetActive(false)
|
|
-- end
|
|
if self.dot_image_obj then
|
|
self.dot_image_obj:SetActive(false)
|
|
end
|
|
if self.left_arrow_obj then
|
|
self.left_arrow_obj:SetActive(false)
|
|
end
|
|
if self.right_arrow_obj then
|
|
self.right_arrow_obj:SetActive(false)
|
|
end
|
|
-- cc.ActionManager:getInstance():removeAllActionsFromTarget(self.hand_image_obj)
|
|
for i,v in ipairs(self.hand_anim_list) do
|
|
TweenLite.Stop(v)
|
|
end
|
|
self.hand_anim_list = {}
|
|
end
|
|
|
|
-- function FuliAIView:ShowTalkText( type )
|
|
-- local cfg = self.model:GetFuliAITalkCFG(type)
|
|
-- local max = #cfg
|
|
-- local random_num = math.random(1, max)
|
|
-- self.talk_text_tmp.text = Trim(cfg[random_num].content)
|
|
-- local pos_num = math.random(1,2)
|
|
-- if pos_num == 1 then
|
|
-- SetAnchoredPosition(self.talk_con, -266, 67)--位置都固定摆的
|
|
-- SetAnchoredPosition(self.talk_text, -7, 0)--位置都固定摆的
|
|
-- lua_resM:setImageSprite(self, self.talk_con_img, "fuli_asset", "fuli_item27")
|
|
-- -- self.talk_arrow.localRotation = Quaternion.Euler(0,0,180)
|
|
-- elseif pos_num == 2 then
|
|
-- SetAnchoredPosition(self.talk_con, 106, 47)--位置都固定摆的
|
|
-- SetAnchoredPosition(self.talk_text, 6, 0)--位置都固定摆的
|
|
-- lua_resM:setImageSprite(self, self.talk_con_img, "fuli_asset", "fuli_item26")
|
|
-- -- self.talk_arrow.localRotation = Quaternion.Euler(0,0,270)
|
|
-- -- elseif pos_num == 3 then
|
|
-- -- SetAnchoredPosition(self.talk_con, -413.1, 39)--位置都固定摆的
|
|
-- -- SetAnchoredPosition(self.talk_arrow, 194.1, 11.2)--位置都固定摆的
|
|
-- -- self.talk_arrow.localRotation = Quaternion.Euler(0,0,0)
|
|
-- end
|
|
-- self.talk_con_obj:SetActive(true)
|
|
-- end
|
|
|
|
function FuliAIView:__delete( )
|
|
-- self.model:DeleteFuncCallBack("FuliAIView:UpdateProgressBar")
|
|
self.model:DeleteFuncCallBack("FuliAIView:UpdateOnlineTime")
|
|
self:ClearUIEffect(self.effect)
|
|
-- self:StopHandEffect()
|
|
for i,v in ipairs(self.item_list) do
|
|
v:DeleteMe()
|
|
v = nil
|
|
end
|
|
self.item_list = {}
|
|
if self.on_update_view_id then
|
|
self.model:UnBind(self.on_update_view_id)
|
|
self.on_update_view_id = nil
|
|
end
|
|
if self.on_action_id then
|
|
self.model:UnBind(self.on_action_id)
|
|
self.on_action_id = nil
|
|
end
|
|
if self.show_talk_text_id then
|
|
self.model:UnBind(self.show_talk_text_id)
|
|
self.show_talk_text_id = nil
|
|
end
|
|
end
|