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

932 строки
35 KiB

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