|
FuncOpenModel = FuncOpenModel or BaseClass(BaseVo, true)
|
|
|
|
FuncOpenModel.ModelTypeId = {
|
|
Fashion = 1,--有人物模型类型
|
|
Skin = 2,--普通单独模型类型
|
|
Other = 3,--特殊类型
|
|
}
|
|
|
|
--称号/头像/气泡
|
|
FuncOpenModel.DressTypeId = {
|
|
Design = 1,
|
|
Head = 2,--头像框
|
|
Pupple = 3,
|
|
RoleHead = 4,--人物头像
|
|
}
|
|
|
|
FuncOpenModel.TypeId = {
|
|
--人物
|
|
Clothes = 1,--衣服
|
|
Weapon = 2,--武器
|
|
Head = 3,--发型
|
|
wing = 4,--背部
|
|
Hat = 5,--头饰
|
|
RoleLight = 8,--人物幻光
|
|
|
|
--单独模型
|
|
FHorse = 1001,--座驾
|
|
FWing = 1002,--炫翼
|
|
FPearl = 1003,--宝具
|
|
FWeapon = 1004,--武器
|
|
FJarvis = 1005,--AI娘
|
|
FGun = 1006,--磁炮
|
|
FCloud = 1007,--星翼
|
|
FArmour = 1008,--幻甲
|
|
|
|
Galaxy = 1009, --星辰
|
|
Psionic = 1010,--灵能
|
|
God = 1011,--神作
|
|
|
|
Monster = 1101,--怪物1
|
|
Pet = 1201,--宠物
|
|
Light = 1301,--幻光
|
|
Equip = 1401,--装备
|
|
Evil = 1501,--守护
|
|
Child = 1601,-- 孩子/宝宝
|
|
WarSoul = 1701,--战魂
|
|
|
|
OtherGoods = 1801,--其他模型
|
|
ChildVehicle = 1901, -- 宝宝的载具
|
|
ChildInVehicle = 2001, -- 宝宝的载具(有个宝宝骑乘)
|
|
|
|
}
|
|
|
|
function FuncOpenModel:__init()
|
|
FuncOpenModel.Instance = self
|
|
self.func_data_list = {} --触发功能数据
|
|
--打开功能界面的条件,必须等到 RightBottom 跟ActivityIconManager 都发送完OPEN_FUNC_OPEN_VIEW 才符合条件
|
|
self.open_condition_list = {}
|
|
|
|
self.cur_down_load = 0--当前下载进度
|
|
self.cookies_list = {} --功能开放
|
|
end
|
|
|
|
function FuncOpenModel:getInstance()
|
|
if FuncOpenModel.Instance == nil then
|
|
FuncOpenModel.New();
|
|
end
|
|
return FuncOpenModel.Instance;
|
|
end
|
|
|
|
--清除缓存数据
|
|
function FuncOpenModel:ClearData()
|
|
self.func_data_list = {} --触发功能数据
|
|
self.open_condition_list = {}
|
|
end
|
|
|
|
--返回模型类型 2 是fashion 1 是skin
|
|
function FuncOpenModel:ReturnModelType( fashion_type )
|
|
if fashion_type <= 1000 then--代表有人物模型
|
|
return FuncOpenModel.ModelTypeId.Fashion
|
|
else
|
|
return FuncOpenModel.ModelTypeId.Skin
|
|
end
|
|
end
|
|
|
|
function FuncOpenModel:IsFosterType( fashion_type )
|
|
if fashion_type >= 1001 and fashion_type <= 1008 then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
function FuncOpenModel:GetTempVo( )
|
|
local temp_vo = {
|
|
help_type = 0,
|
|
ignore_fly = false,
|
|
type = 0,
|
|
id = 0,
|
|
tabId = 0,
|
|
model_res = 0,
|
|
model_type = 0,
|
|
desc = "",
|
|
saying = "",
|
|
winId = 0,
|
|
subId = 0,
|
|
}
|
|
return temp_vo
|
|
end
|
|
|
|
--检测是否有前置条件
|
|
function FuncOpenModel:DealWithFuncOpenHelperVo(helpVo)
|
|
local voList = {}
|
|
local tempTabId
|
|
if helpVo then
|
|
local vo
|
|
local list = ErlangParser:GetInstance():Parse(helpVo.param)
|
|
-- print("huangcong:FuncOpenModel [start:50] list:", list)
|
|
-- PrintTable(list)
|
|
-- print("huangcong:FuncOpenModel [end]")
|
|
for index,value in ipairs(list) do
|
|
vo = self:GetTempVo()
|
|
vo.help_type = helpVo.help_type
|
|
vo.ignore_fly = helpVo.ignore_fly
|
|
vo.type = tonumber(value[1])
|
|
vo.id = tonumber(value[2])
|
|
vo.tabId = value[3] and tonumber(value[3]) or 0
|
|
vo.fashion_type = value[4] and tonumber(value[4]) or 0
|
|
vo.figure_id = value[5] and tonumber(value[5]) or 0
|
|
vo.icon_res_name = helpVo.icon_res_name
|
|
tempTabId = tempTabId or vo.tabId
|
|
vo.desc = helpVo.desc or ""
|
|
vo.saying = helpVo.saying or ""
|
|
vo.winId = helpVo.winId
|
|
vo.subId = helpVo.subId
|
|
vo.sound = helpVo.sound and Config.ConfigSound.Tip[helpVo.sound] or ""
|
|
vo.name = helpVo.name or ""
|
|
table.insert(voList,vo)
|
|
end
|
|
end
|
|
return voList, tempTabId
|
|
end
|
|
|
|
--检测是否有新功能开放 右上角
|
|
function FuncOpenModel:HasNewTopFuncOpen(helpVo)
|
|
if helpVo then
|
|
local voList = self:DealWithFuncOpenHelperVo(helpVo)
|
|
for k,vo in pairs(voList) do
|
|
if vo.type == 1 then
|
|
local cfg = ActivityIconManager:getInstance():getIconCfg(vo.id)
|
|
if cfg then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
--检测是否有新功能开放 左下角
|
|
function FuncOpenModel:HasNewBottomFuncOpen(helpVo)
|
|
if helpVo then
|
|
local voList = self:DealWithFuncOpenHelperVo(helpVo)
|
|
for k,vo in pairs(voList) do
|
|
if vo.type == 4 then
|
|
return true
|
|
end
|
|
if vo.type == 3 then
|
|
local cfg = MainUIModel:getInstance():getFuncIconCfg(vo.id)
|
|
if cfg then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
--检测是否有新技能开放 技能
|
|
function FuncOpenModel:HasNewSkillFuncOpen(helpVo)
|
|
if helpVo then
|
|
local voList = self:DealWithFuncOpenHelperVo(helpVo)
|
|
for k,vo in pairs(voList) do
|
|
if vo.type == 2 then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
--右上角需要隐藏图标
|
|
function FuncOpenModel:TryNewHideTopFuncIcon(helpVo)
|
|
local voList, tabId = self:DealWithFuncOpenHelperVo(helpVo)
|
|
if not helpVo.ignore_hide_icon then
|
|
GlobalEventSystem:Fire(EventName.HIDE_FUNC_OPEN_ICON,voList)
|
|
end
|
|
end
|
|
|
|
--左下角需要隐藏图标
|
|
function FuncOpenModel:TryNewHideBottomFuncIcon(helpVo)
|
|
local voList, tabId = self:DealWithFuncOpenHelperVo(helpVo)
|
|
if not helpVo.ignore_hide_icon then
|
|
GlobalEventSystem:Fire(EventName.HIDE_FUNC_OPEN_ICON,voList)
|
|
end
|
|
end
|
|
|
|
--技能需要隐藏图标
|
|
function FuncOpenModel:TryNewHideSkillFuncIcon(helpVo)
|
|
local voList = self:DealWithFuncOpenHelperVo(helpVo)
|
|
GlobalEventSystem:Fire(EventName.HIDE_FUNC_OPEN_ICON,voList)
|
|
end
|
|
|
|
--添加功能开放数据
|
|
function FuncOpenModel:AddFuncOpenDataVo(vo)
|
|
if self.func_data_list then
|
|
table.insert( self.func_data_list, vo)
|
|
end
|
|
end
|
|
|
|
|
|
function FuncOpenModel:SetOpenCondition(key)
|
|
if self.open_condition_list then
|
|
self.open_condition_list[key] = true
|
|
end
|
|
end
|
|
|
|
function FuncOpenModel:ClearOpenCondition()
|
|
self.open_condition_list = {}
|
|
end
|
|
|
|
function FuncOpenModel:HasFuncOpenCondition()
|
|
if self.open_condition_list then
|
|
return self.open_condition_list["ActivityIconManager"] and self.open_condition_list["RightBottomView"]
|
|
and self.open_condition_list["TaskTeamView"]
|
|
end
|
|
return false
|
|
end
|
|
|
|
function FuncOpenModel:ClearOpenFuncData()
|
|
self.func_data_list = {}
|
|
end
|
|
|
|
--检测是否有结婚新功能开放
|
|
function FuncOpenModel:HasNewMarriageFuncOpen(helpVo)
|
|
if helpVo then
|
|
local voList = self:DealWithFuncOpenHelperVo(helpVo)
|
|
for k,vo in pairs(voList) do
|
|
if vo.type == 4 then --结婚
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
--得到图标需要飞的坐标
|
|
function FuncOpenModel:GetFlyPos( curVo )
|
|
local pos = Vector3.zero
|
|
if curVo.type == 1 then--右上角图标位置
|
|
if curVo.winId == 157 and curVo.subId == 0 then--主线任务,在经验副本下面
|
|
pos = MainUIController:GetInstance():GetExpPos()
|
|
pos.x = pos.x + 50
|
|
pos.y = pos.y - 90
|
|
|
|
elseif curVo.winId == 610 and curVo.subId == 2 then--经验快车在主界面左上角
|
|
pos = MainUIController:GetInstance():GetExpPos()
|
|
elseif curVo.winId == 145 and curVo.subId == 0 then--装备套装收集在背包
|
|
pos = MainUIController:GetInstance():GetBagBtnWorldPos()
|
|
elseif curVo.winId == 450 and curVo.subId == 22 then--装备套装收集在左上角
|
|
if MainUIController.Instance.MainRoleHeadInfoView then
|
|
pos = MainUIController.Instance.MainRoleHeadInfoView:GetRechargeBtnPos()
|
|
end
|
|
else
|
|
pos = ActivityIconManager:getInstance():GetActivityIconPos(curVo.id)
|
|
end
|
|
elseif curVo.type == 2 then--普通技能
|
|
pos = MainUIController:GetInstance():GetSkillBtnPos(curVo.id)
|
|
elseif curVo.type == 3 then--右下角图标位置
|
|
pos = MainUIController:GetInstance():GetRightButtonWorldPos(curVo.id)
|
|
elseif curVo.type == 4 then--背包位置
|
|
pos = MainUIController:GetInstance():GetBagBtnWorldPos()
|
|
elseif curVo.type == 6 then--支线任务任务栏位置
|
|
pos = MainUIController:GetInstance():GetTaskBranceLinePos()
|
|
elseif curVo.type == 7 then--右上角幻魔位置
|
|
pos = MainUIController:GetInstance():GetBossBtnPos(curVo.id)
|
|
end
|
|
return pos
|
|
end
|
|
|
|
--加载所有模型以下必传参数father_node, transform,fashion_type,【figure_id(怪物可不传)】
|
|
--data.father_node[加载模型的父节点]
|
|
--data.transform[加载模型的节点]
|
|
--data.fashion_type--资源类型
|
|
--data.figure_id[资源id]
|
|
--data.scale[缩放]
|
|
--data.position[坐标]
|
|
--data.can_rotate[能否旋转]
|
|
--data.rotate[旋转角度]
|
|
--data.show_shadow[是否展示阴影]
|
|
--data.use_bloom[使用泛光效果]
|
|
--data.action_name_list[动作列表]
|
|
--data.ui_model_type[使用哪种接口展示模型]
|
|
--data.role_vo[是否使用别人玩家的数据]
|
|
--data.fashion_color[时装变色]
|
|
--data.clothe_res_id[怪物模型使用,如果不传figure_id则需要传clothe_res_id来做模型资源id]
|
|
function FuncOpenModel:SetModelRes( res_data )
|
|
if not self.mainVo then
|
|
self.mainVo = RoleManager.Instance.mainRoleInfo
|
|
end
|
|
if not res_data or not res_data.transform then return end
|
|
-------------------------
|
|
--清除挂接的UI特效
|
|
if res_data.father_node and res_data.transform then
|
|
res_data.father_node:ClearUIEffect( res_data.transform )
|
|
end
|
|
-------------------------
|
|
local model_type = self:ReturnModelType(res_data.fashion_type)
|
|
if model_type == FuncOpenModel.ModelTypeId.Fashion then--人物模型类
|
|
self:SetFashion(res_data)
|
|
elseif model_type == FuncOpenModel.ModelTypeId.Skin then-- 单独模型
|
|
self:UpdateSkin(res_data)
|
|
end
|
|
end
|
|
|
|
--传入角色id,会向后端请求该角色的形象信息,以下参数一定要有!!!!其他参数支持自定义,具体参考上面方法注释
|
|
--data.father_node[加载模型的父节点]
|
|
--data.transform[加载模型的节点]
|
|
--data.fashion_type--资源类型
|
|
function FuncOpenModel:SetRoleModelByID(role_id, data)
|
|
if role_id == RoleManager.Instance.mainRoleInfo.role_id then--自己的话就不用去拿数据了 直接照传data进去就好
|
|
self:SetModelRes(data)
|
|
else
|
|
local call_back = function ( vo )
|
|
data.role_vo = vo
|
|
self:SetModelRes(data)
|
|
end
|
|
GlobalEventSystem:Fire(EventName.REQ_ROLE_INFO, role_id, call_back)
|
|
end
|
|
end
|
|
|
|
function FuncOpenModel:SetFashion( res_data )
|
|
--得到当前人物的时装和颜色
|
|
local fashion_model_id, fashion_texture_id = self.mainVo:GetRoleClotheTextureId()
|
|
local weapon_model_id, weapon_texture_id = self.mainVo:GetWeaponClotheId()
|
|
local head_model_id,head_clothe_id = self.mainVo:GetRoleHeadId()
|
|
local footmark_id = self.mainVo:GetRoleFootmarkId()
|
|
local wing_id = self.mainVo:GetRoleWingId()
|
|
local career = self.mainVo.career
|
|
local clothe_res_id = self.mainVo:GetRoleClotheId()
|
|
local hat_wear_id = self.mainVo:GetRoleHatId()
|
|
local image_id = self.mainVo.image_id
|
|
local light_id = res_data.light_id
|
|
local talisman_id = res_data.talisman_id
|
|
local ui_model_type = res_data.ui_model_type or UIModelCommon.ModelType.Model
|
|
local free_param = res_data.free_param -- 人物模型带载具专用参数 res_data.type 同时需要改成SceneBaseType.Include_Horse
|
|
|
|
local type_pos = FuncOpenModel.TypeId.Clothes
|
|
if res_data.fashion_type == FuncOpenModel.TypeId.Clothes then --衣服
|
|
type_pos = FashionPartPos.Clothe
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.Weapon then --武器
|
|
type_pos = FashionPartPos.Weapon
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.Head then --头饰
|
|
type_pos = FashionPartPos.Head
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.Footprint then --足迹
|
|
type_pos = FashionPartPos.Footmark
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.wing then --背部
|
|
type_pos = FashionPartPos.wing
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.Hat then--头套
|
|
type_pos = FashionPartPos.Hat
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.RoleLight then--人物幻光
|
|
type_pos = FashionPartPos.light
|
|
end
|
|
|
|
local sex = RoleManager.Instance.mainRoleInfo.sex
|
|
if res_data.role_vo then
|
|
wing_id = GetWingClotheId(res_data.role_vo)
|
|
clothe_res_id = GetRoleClotheId(res_data.role_vo.level_model_list)
|
|
fashion_model_id, fashion_texture_id = GetRoleClotheTextureId(res_data.role_vo)
|
|
weapon_model_id, weapon_texture_id = GetWeaponClotheId(res_data.role_vo)
|
|
head_model_id, head_clothe_id = GetRoleHeadId(res_data.role_vo)
|
|
hat_model_id = GetRoleHatId(res_data.role_vo)
|
|
-- footmark_id = GetRoleFootmarkId(res_data.role_vo)
|
|
image_id = res_data.role_vo.image_id
|
|
sex = res_data.role_vo.sex or sex
|
|
hat_wear_id = GetRoleHatId(res_data.role_vo)
|
|
end
|
|
|
|
local color = res_data.figure_texture or fashion_texture_id
|
|
local figure_id = res_data.figure_id and tonumber(res_data.figure_id) or fashion_model_id
|
|
|
|
if figure_id then
|
|
if type_pos ~= FashionPartPos.wing and type_pos ~= FashionPartPos.Hat and type_pos ~= FashionPartPos.light then
|
|
if career then
|
|
if (res_data.fashion_type == FuncOpenModel.TypeId.Clothes
|
|
or res_data.fashion_type == FuncOpenModel.TypeId.Head) and figure_id > 100000 then --时装和头饰可以变色(判断id是否是大于10W的)
|
|
figure_id = (math.floor(figure_id/100000) + career * 1000)..(figure_id%100000)
|
|
else
|
|
if figure_id < 1000 then
|
|
figure_id = figure_id + career * 1000
|
|
end
|
|
end
|
|
end
|
|
else
|
|
figure_id = figure_id
|
|
end
|
|
end
|
|
|
|
if type_pos == FashionPartPos.Clothe then
|
|
fashion_model_id = figure_id or fashion_model_id
|
|
fashion_texture_id = color
|
|
elseif type_pos == FashionPartPos.Weapon then
|
|
weapon_model_id = figure_id or weapon_model_id
|
|
weapon_texture_id = color
|
|
elseif type_pos == FashionPartPos.Head then
|
|
head_model_id = figure_id or head_model_id
|
|
head_clothe_id = color
|
|
elseif type_pos == FashionPartPos.wing then
|
|
wing_id = figure_id
|
|
elseif type_pos == FashionPartPos.light then
|
|
light_id = figure_id
|
|
elseif type_pos == FashionPartPos.Hat then
|
|
hat_wear_id = figure_id
|
|
end
|
|
|
|
if res_data.weapon_res_id and res_data.weapon_res_id == "nil" then -- 空手
|
|
weapon_model_id = nil
|
|
end
|
|
if res_data.wing_res_id and res_data.wing_res_id == "nil" then -- 空手
|
|
wing_id = nil
|
|
end
|
|
res_data.career = career
|
|
res_data.clothe_res_id = res_data.clothe_res_id or clothe_res_id
|
|
res_data.weapon_res_id = res_data.weapon_res_id or weapon_model_id
|
|
res_data.weapon_clothe_id = res_data.weapon_clothe_id or weapon_texture_id
|
|
res_data.type = res_data.type and res_data.type == SceneBaseType.Include_Horse and res_data.type or SceneBaseType.MainRole
|
|
res_data.fashion_model_id = res_data.fashion_model_id or fashion_model_id
|
|
res_data.texture_id = res_data.texture_id or fashion_texture_id
|
|
res_data.wing_id = res_data.wing_id or wing_id
|
|
res_data.image_id = res_data.image_id or image_id
|
|
res_data.head_wear_id = res_data.head_wear_id or head_model_id
|
|
res_data.head_clothe_id = res_data.head_clothe_id or head_clothe_id
|
|
res_data.light_id = res_data.light_id or light_id
|
|
res_data.talisman_id = res_data.talisman_id or talisman_id
|
|
res_data.hat_wear_id = res_data.hat_wear_id or hat_wear_id
|
|
res_data.free_param = res_data.free_param or free_param
|
|
local data = lua_resM:ModelDataDefineVar(res_data)
|
|
-- print("huangcong:FuncOpenModel [start:388] res_data:", res_data)
|
|
-- PrintTable(res_data)
|
|
-- print("huangcong:FuncOpenModel [end]")
|
|
-- 强制不显示翅膀(红装之路)
|
|
if res_data.force_hide_wing then
|
|
res_data.wing_id = nil
|
|
end
|
|
if ui_model_type == UIModelCommon.ModelType.RT then--是否使用rt
|
|
data.wing_id = nil--翅膀特效暂时无法正常显示
|
|
lua_resM:SetRoleModelByRT(res_data.father_node, res_data.transform, data)
|
|
elseif ui_model_type == UIModelCommon.ModelType.BackModel then
|
|
lua_resM:SetBackRoleModel(res_data.father_node, res_data.transform, data)
|
|
else
|
|
lua_resM:SetRoleModel(res_data.father_node, res_data.transform, data)
|
|
end
|
|
end
|
|
|
|
function FuncOpenModel:UpdateSkin( res_data )
|
|
local ui_model_type = res_data.ui_model_type or UIModelCommon.ModelType.Model
|
|
figure_id = figure_id and tonumber(res_data.figure_id) or 1001
|
|
local data = nil
|
|
if self:IsFosterType(res_data.fashion_type) then--进阶模型
|
|
data = self:GetFosterModelData(res_data)
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.Monster then -- 怪物模型
|
|
data = self:GetMonsterModelData(res_data)
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.Light then -- 幻光模型
|
|
self:ShowLightModel(res_data)
|
|
return
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.Psionic then -- 灵能模型
|
|
self:ShowPsionicModel(res_data)
|
|
return
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.Pet then -- 宠物模型
|
|
data = self:GetPetModelData(res_data)
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.Equip then--装备模型
|
|
data = self:GetEquipModelData(res_data)
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.Evil then--守护模型
|
|
data = self:GetEvilModelData(res_data)
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.Child then --宝宝模型
|
|
data = self:GetChildModelData(res_data)
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.ChildVehicle then --宝宝载具
|
|
data = self:GetChildVehicleModelData(res_data)
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.ChildInVehicle then --宝宝载具(有宝宝骑)
|
|
data = self:GetChildInVehicleModelData(res_data)
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.WarSoul then --战魂模型
|
|
data = self:GetWarSoulModelData(res_data)
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.Galaxy then --星辰
|
|
data = self:GetGalaxyModelData(res_data)
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.God then --神座
|
|
data = self:GetGodModelData(res_data)
|
|
elseif res_data.fashion_type == FuncOpenModel.TypeId.OtherGoods then
|
|
data = self:GetOtherGoodsModelData(res_data)
|
|
end
|
|
if not data then
|
|
print("不存在数据:",res_data.fashion_type)
|
|
return
|
|
end
|
|
-- 通用绿幕的添加
|
|
data.use_green_screen = res_data.use_green_screen
|
|
data.green_screen_camera_type = res_data.green_screen_camera_type
|
|
-------------------------
|
|
if ui_model_type == UIModelCommon.ModelType.RT then--是否使用rt
|
|
lua_resM:SetRoleModelByRT(res_data.father_node, res_data.transform, data)
|
|
elseif ui_model_type == UIModelCommon.ModelType.BackModel then
|
|
lua_resM:SetBackRoleModel(res_data.father_node, res_data.transform, data)
|
|
else
|
|
lua_resM:SetRoleModel(res_data.father_node, res_data.transform, data)
|
|
end
|
|
end
|
|
|
|
function FuncOpenModel:GetFosterModelData( res_data )
|
|
if not res_data then return end
|
|
local show_type = res_data.fashion_type - 1000
|
|
local figure_id = res_data.figure_id
|
|
if not res_data.action_name_list then
|
|
if show_type == FosterConst.ModuleId.FWeapon then
|
|
res_data.action_name_list = {"show3"}
|
|
elseif show_type == FosterConst.ModuleId.FWing or show_type == FosterConst.ModuleId.FCloud
|
|
or show_type == FosterConst.ModuleId.FGun or show_type == FosterConst.ModuleId.FArmour then
|
|
res_data.action_name_list = {"show"}
|
|
else
|
|
res_data.action_name_list = {"show2","show"}
|
|
end
|
|
end
|
|
-------------------------
|
|
local show_conf = FosterConst.ModelShowConfig[show_type][figure_id] or FosterConst.ModelShowConfig[show_type][0]
|
|
if show_type == FosterConst.ModuleId.FWeapon then
|
|
--武器的比较特殊
|
|
show_conf = FosterConst.ModelShowConfig[show_type][GameResPath:GetFWeaponResName( res_data.career,figure_id )] or FosterConst.ModelShowConfig[show_type][0]
|
|
end
|
|
-------------------------
|
|
local data = lua_resM:ModelDataDefineVar(res_data)
|
|
data.clothe_res_id = figure_id
|
|
data.can_rotate = data.can_rotate == nil and show_type ~= FosterConst.ModuleId.FWeapon or data.can_rotate
|
|
data.type = FosterConst.ModelMatch[show_type]
|
|
data.rotate = data.rotate or Vector3(show_conf.rotate[1],show_conf.rotate[2],show_conf.rotate[3])
|
|
data.raycast_size = data.raycast_size or Vector2(340,460)
|
|
-------------------------
|
|
if data.ui_model_type ~= UIModelCommon.ModelType.BackModel then
|
|
if show_type == FosterConst.ModuleId.FHorse then
|
|
if not (type(data.rotate) == "number") then--加个参数类型判断
|
|
data.rotate.x = data.rotate.x + 15
|
|
end
|
|
end
|
|
-------------------------
|
|
if not data.scale then
|
|
if FosterConst.ModelSpecialShowConfig[show_type] and FosterConst.ModelSpecialShowConfig[show_type][figure_id] then
|
|
--部分需要特殊配置的
|
|
local temp_conf = FosterConst.ModelSpecialShowConfig[show_type][figure_id]
|
|
if temp_conf.scale then
|
|
data.scale = temp_conf.scale
|
|
end
|
|
end
|
|
end
|
|
-------------------------
|
|
if not data.position then
|
|
if FosterConst.ModelSpecialShowConfig[show_type] and FosterConst.ModelSpecialShowConfig[show_type][figure_id] then
|
|
--部分需要特殊配置的
|
|
local temp_conf = FosterConst.ModelSpecialShowConfig[show_type][figure_id]
|
|
if temp_conf.position then
|
|
data.position = Vector3(temp_conf.position[1],temp_conf.position[2],temp_conf.position[3])
|
|
end
|
|
else
|
|
data.position = Vector3(show_conf.position[1],show_conf.position[2],show_conf.position[3])
|
|
end
|
|
-------------------------
|
|
--配置里面的坐标和尺寸,是backmodel下的,其它模式的话要转换一下吧
|
|
data.position.z = -500
|
|
local chang_y = -200
|
|
if show_type == FosterConst.ModuleId.FPearl or show_type == FosterConst.ModuleId.FWeapon
|
|
or show_type == FosterConst.ModuleId.FGun or show_type == FosterConst.ModuleId.FCloud then
|
|
chang_y = -250
|
|
elseif show_type == FosterConst.ModuleId.FArmour then
|
|
chang_y = -250
|
|
end
|
|
local chang_x = 0
|
|
local career = data.career or RoleManager.Instance.mainRoleInfo.career
|
|
if show_type == FosterConst.ModuleId.FWeapon then
|
|
if career == 2 or career == 1 then
|
|
chang_x = -50
|
|
end
|
|
end
|
|
data.position.y = data.position.y + chang_y
|
|
data.position.x = data.position.x + chang_x
|
|
end
|
|
end
|
|
data.position = data.position or Vector3(show_conf.position[1],show_conf.position[2],show_conf.position[3])
|
|
data.scale = data.scale or show_conf.scale or 120
|
|
-------------------------
|
|
return data
|
|
end
|
|
|
|
--获得怪物模型数据
|
|
function FuncOpenModel:GetMonsterModelData( res_data )
|
|
if not res_data then return nil end
|
|
local mon_cfg, model_id
|
|
if res_data.figure_id then -- 如果传入了怪物id,则优先使用怪物id对应的模型资源id
|
|
mon_cfg = ConfigItemMgr.Instance:GetMonsterDataItem(res_data.figure_id)
|
|
model_id = mon_cfg.icon
|
|
elseif res_data.clothe_res_id then
|
|
model_id = res_data.clothe_res_id
|
|
end
|
|
if not model_id then
|
|
print("Saber:FuncOpenModel [430] 不存在模型id: ",debug.traceback())
|
|
end
|
|
local data = lua_resM:ModelDataDefineVar(res_data)
|
|
data.clothe_res_id = model_id
|
|
data.type = SceneBaseType.Monster
|
|
data.scale = res_data.scale or 120
|
|
data.rotate = res_data.rotate or Vector2(0, 0)
|
|
data.raycast_size = res_data.raycast_size or Vector2(340,460)
|
|
data.position = res_data.position or Vector2(0, 100)
|
|
return data
|
|
end
|
|
|
|
--获得宠物模型数据
|
|
function FuncOpenModel:GetPetModelData(res_data)
|
|
if not res_data then return nil end
|
|
local data = lua_resM:ModelDataDefineVar(res_data)
|
|
local show_conf = PetConst.ModelShowConfig[res_data.figure_id] or PetConst.ModelShowConfig[1001]
|
|
data.clothe_res_id = res_data.figure_id
|
|
data.type = SceneBaseType.Pokemon
|
|
data.scale = res_data.scale or show_conf.scale
|
|
data.rotate = res_data.rotate or Vector3(show_conf.rotate[1],show_conf.rotate[2],show_conf.rotate[3])
|
|
data.raycast_size = res_data.raycast_size or Vector2(340,460)
|
|
data.action_name_list = res_data.action_name_list or {"show2","show"}
|
|
data.position = res_data.position or Vector3(show_conf.position[1],show_conf.position[2],show_conf.position[3])
|
|
return data
|
|
end
|
|
|
|
function FuncOpenModel:GetOtherGoodsModelData(res_data)
|
|
if not res_data then return nil end
|
|
local data = lua_resM:ModelDataDefineVar(res_data)
|
|
data.clothe_res_id = res_data.figure_id
|
|
data.type = SceneBaseType.OtherGoods
|
|
data.scale = res_data.scale or 150
|
|
data.rotate = res_data.rotate or Vector3(0,0,0)
|
|
data.raycast_size = res_data.raycast_size or Vector2(340,460)
|
|
data.action_name_list = res_data.action_name_list or {"show"}
|
|
data.position = res_data.position or Vector3(0,0,-500)
|
|
return data
|
|
end
|
|
|
|
-- 获取宝宝模型数据
|
|
function FuncOpenModel:GetChildModelData( res_data )
|
|
if not res_data then return nil end
|
|
local data = lua_resM:ModelDataDefineVar(res_data)
|
|
local show_conf = ChildConst.ModelShowConfig[1011] -- 默认模型
|
|
data.clothe_res_id = res_data.figure_id
|
|
data.type = SceneBaseType.Baby
|
|
data.scale = res_data.scale or show_conf.scale
|
|
data.rotate = res_data.rotate or Vector3(show_conf.rotate[1],show_conf.rotate[2],show_conf.rotate[3])
|
|
data.raycast_size = res_data.raycast_size or Vector2(340,460)
|
|
data.action_name_list = res_data.action_name_list or {"show2","show"}
|
|
data.position = res_data.position or Vector3(show_conf.position[1],show_conf.position[2],show_conf.position[3])
|
|
return data
|
|
end
|
|
|
|
-- 获取宝宝载具数据
|
|
function FuncOpenModel:GetChildVehicleModelData( res_data )
|
|
if not res_data then return nil end
|
|
local data = lua_resM:ModelDataDefineVar(res_data)
|
|
local show_conf = ChildConst.VehicleConfig[1001] -- 默认模型
|
|
data.clothe_res_id = res_data.figure_id
|
|
data.type = SceneBaseType.Baby_Horse
|
|
data.scale = res_data.scale or show_conf.scale
|
|
data.rotate = res_data.rotate or Vector3(show_conf.rotate[1],show_conf.rotate[2],show_conf.rotate[3])
|
|
data.raycast_size = res_data.raycast_size or Vector2(340,460)
|
|
data.action_name_list = res_data.action_name_list or {"idle"}
|
|
data.position = res_data.position or Vector3(show_conf.position[1],show_conf.position[2],show_conf.position[3])
|
|
return data
|
|
end
|
|
|
|
-- 获取宝宝载具数据 (默认有个男娃在骑)
|
|
function FuncOpenModel:GetChildInVehicleModelData( res_data )
|
|
if not res_data then return nil end
|
|
local data = lua_resM:ModelDataDefineVar(res_data)
|
|
local show_conf = ChildConst.ModelInVehicle -- 默认数据
|
|
data.free_param = res_data.figure_id
|
|
data.clothe_res_id = res_data.clothe_res_id or 1021
|
|
data.type = SceneBaseType.Baby_Include_Horse
|
|
-- 比较特殊 scale不宜太大
|
|
local scale = res_data.scale or show_conf.scale
|
|
scale = Mathf.Clamp(scale, 5, 6)
|
|
|
|
data.scale = scale
|
|
data.rotate = res_data.rotate or -50
|
|
data.raycast_size = res_data.raycast_size or Vector2(340,460)
|
|
data.action_name_list = res_data.action_name_list or {"idle"}
|
|
data.position = res_data.position or Vector3(show_conf.position[1],show_conf.position[2],show_conf.position[3])
|
|
return data
|
|
end
|
|
|
|
--获得装备模型数据
|
|
function FuncOpenModel:GetEquipModelData( res_data )
|
|
if not res_data then return nil end
|
|
local data = lua_resM:ModelDataDefineVar(res_data)
|
|
data.clothe_res_id = res_data.figure_id
|
|
data.type = SceneBaseType.Equip
|
|
data.scale = res_data.scale or 120
|
|
data.raycast_size = res_data.raycast_size or Vector2(340,460)
|
|
data.action_name_list = res_data.action_name_list or {"show"}
|
|
data.position = res_data.position or Vector3(0,100,0)
|
|
return data
|
|
end
|
|
|
|
--获得战魂模型数据
|
|
function FuncOpenModel:GetWarSoulModelData( res_data )
|
|
if not res_data then return nil end
|
|
local figure_id = res_data.figure_id
|
|
local effect_id = nil
|
|
if figure_id >= 1000000 then
|
|
effect_id = figure_id - math.floor(figure_id/1000)*1000
|
|
figure_id = math.floor(figure_id/1000)
|
|
end
|
|
|
|
local data = lua_resM:ModelDataDefineVar(res_data)
|
|
data.clothe_res_id = figure_id
|
|
local config = WarSoulConst.WarSoulModelPosCfg[figure_id]
|
|
data.type = SceneBaseType.WarSoul
|
|
data.scale = res_data.scale and (res_data.scale) or (config and config.scale or 120)
|
|
data.raycast_size = res_data.raycast_size or Vector2(340,460)
|
|
data.action_name_list = res_data.action_name_list or {"show"}
|
|
data.position = res_data.position or (config and config.pos) or Vector3(0,0,0)
|
|
if not res_data.warSoul_effect_res and effect_id then
|
|
res_data.warSoul_effect_res = "effect_egg_00"..effect_id
|
|
if effect_id < 10 then
|
|
res_data.warSoul_effect_res = "effect_egg_000"..effect_id
|
|
end
|
|
end
|
|
local effect_pos_cfg = WarSoulConst.WarSoulEffectPosCfg[res_data.warSoul_effect_res]
|
|
if config and effect_pos_cfg and effect_pos_cfg then
|
|
data.warSoul_effect_scale = effect_pos_cfg.scale or 1
|
|
data.warSoul_effect_res = res_data.warSoul_effect_res
|
|
data.warSoul_effect_pos = effect_pos_cfg.pos or Vector3.zero
|
|
end
|
|
return data
|
|
end
|
|
|
|
--获得星辰型数据
|
|
function FuncOpenModel:GetGalaxyModelData( res_data )
|
|
if not res_data then return nil end
|
|
local data = lua_resM:ModelDataDefineVar(res_data)
|
|
data.clothe_res_id = res_data.figure_id
|
|
data.type = SceneBaseType.Galaxy
|
|
data.scale = res_data.scale or 120
|
|
data.raycast_size = res_data.raycast_size or Vector2(340,460)
|
|
data.action_name_list = res_data.action_name_list or {"show"}
|
|
data.position = res_data.position or Vector3(0,100,0)
|
|
return data
|
|
end
|
|
|
|
|
|
--获得神作型数据
|
|
function FuncOpenModel:GetGodModelData( res_data )
|
|
if not res_data then return nil end
|
|
local data = lua_resM:ModelDataDefineVar(res_data)
|
|
data.clothe_res_id = res_data.figure_id
|
|
data.type = SceneBaseType.God
|
|
data.scale = res_data.scale or 120
|
|
data.raycast_size = res_data.raycast_size or Vector2(340,460)
|
|
data.action_name_list = res_data.action_name_list or {"show"}
|
|
data.position = res_data.position or Vector3(0,100,0)
|
|
if GodConst.Model_Param[res_data.figure_id] then
|
|
local cfg = GodConst.Model_Param[res_data.figure_id]
|
|
if cfg.pos_offset then
|
|
local rate = data.scale / 100
|
|
data.position = data.position + cfg.pos_offset * rate
|
|
end
|
|
end
|
|
return data
|
|
end
|
|
|
|
--获得守护模型数据
|
|
function FuncOpenModel:GetEvilModelData( res_data )
|
|
if not res_data then return nil end
|
|
local data = lua_resM:ModelDataDefineVar(res_data)
|
|
data.clothe_res_id = res_data.figure_id
|
|
data.type = SceneBaseType.Galaxy
|
|
data.scale = res_data.scale or 150
|
|
data.action_name_list = res_data.action_name_list or {"show"}
|
|
data.position = res_data.position or Vector3(0,0,0)
|
|
return data
|
|
end
|
|
|
|
--幻光比较特殊,只是一个特效
|
|
function FuncOpenModel:ShowLightModel( res_data )
|
|
if not res_data then return end
|
|
local config = {
|
|
uiTranform = res_data.transform,
|
|
layer_name = res_data.layer_name,
|
|
resname = LightModel:GetInstance():GetLightResById( (res_data.light_id) or (res_data.figure_id) ),
|
|
scale = res_data.scale or 1.5,
|
|
pos = res_data.position or Vector3.zero,
|
|
is_loop = true,
|
|
}
|
|
if res_data.father_node and res_data.transform then
|
|
local ref_info = lua_resM.role_mode_list[res_data.father_node] or {}--幻光这边要清一次模型
|
|
local curr_roleModel = ref_info[res_data.transform]
|
|
if curr_roleModel then
|
|
curr_roleModel:DeleteMe()
|
|
ref_info[res_data.transform] = nil
|
|
end
|
|
res_data.father_node:ClearUIEffect( res_data.transform )
|
|
res_data.father_node:CreateUIEffect( config )
|
|
end
|
|
end
|
|
|
|
--灵能比较特殊,只是一个特效
|
|
function FuncOpenModel:ShowPsionicModel( res_data )
|
|
if not res_data then return end
|
|
local config = {
|
|
uiTranform = res_data.transform,
|
|
layer_name = res_data.layer_name,
|
|
resname = PsionicModel:getInstance():GetPsionicEffectStageByid( res_data.figure_id or 1 ),
|
|
scale = res_data.scale or 270,
|
|
pos = res_data.position or Vector3.zero,
|
|
is_loop = true,
|
|
position = Vector3(0,-15,0),
|
|
}
|
|
print('Cat:FuncOpenModel.lua[702] data', res_data.father_node, res_data.transform)
|
|
if res_data.father_node and res_data.transform then
|
|
res_data.father_node:ClearUIEffect( res_data.transform )
|
|
res_data.father_node:CreateUIEffect( config )
|
|
end
|
|
end
|
|
|
|
function FuncOpenModel:SaveFightChange( old_fightNum ) -- 为战力提升界面先存储旧战力数字
|
|
self.old_fightNum = old_fightNum
|
|
end
|
|
|
|
--通用展示称号--节点建议直接从KfActivityRushRankView复制过来
|
|
--local data = {
|
|
--parent = parent,
|
|
--dress_id = dress_id,
|
|
--designationImg = designationImg,
|
|
--scale = scale,
|
|
--}
|
|
function FuncOpenModel:ShowDesign( data )
|
|
if not data or not data.dress_id or not data.designationImg or not data.parent then
|
|
print("huangcong:FuncOpenModel [start:761] 称号节点数据不完整:")
|
|
return
|
|
end
|
|
local goods_id = data.dress_id or nil
|
|
if not goods_id then return end
|
|
local designation_id = DesignationModel:GetInstance():GetDesignationIdByGoodsId(goods_id)
|
|
local dsgt_cfg = Config.Dsgt
|
|
--这里构造称号需要的节点
|
|
local parent = data.parent
|
|
local designation_con = data.designation_con
|
|
local designationImg = data.designationImg
|
|
local designationImg_img = designationImg:GetComponent("Image")
|
|
if parent.dynamic_image_obj then
|
|
parent.dynamic_image_obj:SetActive(false)
|
|
end
|
|
local designation_scale = data.scale and data.scale or 1.5
|
|
SetLocalScale(designationImg, designation_scale, designation_scale, designation_scale)
|
|
cc.ActionManager:getInstance():removeAllActionsFromTarget(designationImg.transform)
|
|
if dsgt_cfg[designation_id] then
|
|
if dsgt_cfg[designation_id].type == 1 then--文字称号(文字称号也用图片了)
|
|
designationImg.gameObject:SetActive(true)
|
|
lua_resM:setOutsideImageSprite(parent, designationImg_img, GameResPath.GetDesignImage(dsgt_cfg[designation_id].id), true)
|
|
elseif dsgt_cfg[designation_id].type == 2 then--图片称号
|
|
designationImg.gameObject:SetActive(true)
|
|
lua_resM:setOutsideImageSprite(parent, designationImg_img, GameResPath.GetDesignImage(dsgt_cfg[designation_id].id), true)
|
|
elseif dsgt_cfg[designation_id].type == 3 then--特效称号
|
|
if not parent.dynamic_image_obj then
|
|
parent.dynamic_image_obj = UiFactory.createChild(designationImg, UIType.Image, "dynamic_image")
|
|
dynamic_image_img = parent.dynamic_image_obj:GetComponent("Image")
|
|
SetAnchoredPosition(parent.dynamic_image_obj.transform, 0, 0)
|
|
else
|
|
parent.dynamic_image_obj:SetActive(true)
|
|
end
|
|
designationImg.gameObject:SetActive(true)
|
|
local data = DesignationModel:GetInstance():GetDynamicDesignationCFG(designation_id)
|
|
local res = Split(data[1].res, "_")--分割出来配置 然后取文字
|
|
local font_res = res[1] or ""
|
|
lua_resM:setImageSprite(parent, dynamic_image_img, data[1].ab, font_res.."_font", true)
|
|
local action = cc.Animation.New(data,0.15)
|
|
cc.ActionManager:getInstance():addAction(cc.RepeatForever.New(action), designationImg.transform)
|
|
end
|
|
end
|
|
end
|
|
|
|
--通用展示气泡
|
|
--节点建议直接从KfActivityRushRankView复制过来
|
|
--local data = {
|
|
--parent = parent,
|
|
--dress_id = dress_id,
|
|
--bubbleCon = bubbleCon,
|
|
--}
|
|
function FuncOpenModel:ShowBubble( data )
|
|
if not data or not data.parent then return end
|
|
if data.dress_id then
|
|
lua_resM:setOutsideImageSprite(data.parent, data.bubbleCon:GetComponent("Image"), GameResPath.GetChatDressIcon(data.dress_id), false)
|
|
end
|
|
end
|
|
|
|
--通用展示头像框
|
|
--节点建议直接从KfActivityRushRankView复制过来
|
|
--local data = {
|
|
--parent = parent,
|
|
--dress_id = dress_id,
|
|
--mainRoleHeadItem = mainRoleHeadItem,
|
|
--}
|
|
function FuncOpenModel:ShowHead( data )
|
|
if not data or not data.parent or not data.mainRoleHeadItem then return end
|
|
local head_data = {
|
|
vo = {id = RoleManager.Instance.mainRoleInfo.role_id, use_bg = 3, career = 0, sex = RoleManager.Instance.mainRoleInfo.sex, turn = RoleManager.Instance.mainRoleInfo.turn, dress_board_id = data.dress_id, profile_photo_id = RoleManager.Instance.mainRoleInfo.profile_photo_id},
|
|
}
|
|
data.mainRoleHeadItem:SetData(head_data)
|
|
end
|
|
|
|
--通用展示头像
|
|
--节点建议直接从KfActivityRushRankView复制过来
|
|
--local data = {
|
|
--parent = parent,
|
|
--dress_id = dress_id,
|
|
--mainRoleHeadItem = mainRoleHeadItem,
|
|
--}
|
|
function FuncOpenModel:ShowRoleHead( data )
|
|
if not data or not data.parent or not data.mainRoleHeadItem then return end
|
|
local head_data = {
|
|
vo = {id = RoleManager.Instance.mainRoleInfo.role_id, use_bg = 3, career = 0, sex = RoleManager.Instance.mainRoleInfo.sex, turn = RoleManager.Instance.mainRoleInfo.turn, dress_board_id = RoleManager.Instance.mainRoleInfo.dress_board, profile_photo_id = data.dress_id},
|
|
}
|
|
data.mainRoleHeadItem:SetData(head_data)
|
|
end
|