CustomRoleHead = CustomRoleHead or BaseClass()
|
|
function CustomRoleHead:__init()
|
|
if CustomRoleHead.Instance ~= nil then
|
|
error("attempt to create singleton(CustomRoleHead) twice!")
|
|
return
|
|
end
|
|
CustomRoleHead.Instance = self
|
|
|
|
self.image_buff_list = {}
|
|
|
|
self.cache_data_state = 0
|
|
self.sent_data_state = false
|
|
|
|
local scene_change = function()
|
|
self:UpdateData()
|
|
end
|
|
GlobalEventSystem:Bind(SceneEventType.SCENE_CHANGED, scene_change)
|
|
|
|
-- local onPhonePhotoLoad = function(image_path)
|
|
-- local sent_succeed = function(result, image)
|
|
-- if result then
|
|
-- Message.show("图片上传成功")
|
|
-- GlobalEventSystem:Fire(EventName.ROLEHEAD_UPLOAD_SUCCEED)
|
|
-- else
|
|
-- Message.show("图片上传失败,请再次尝试")
|
|
-- end
|
|
-- end
|
|
|
|
-- local mainrole_vo = RoleManager.Instance.mainRoleInfo
|
|
-- if mainrole_vo then
|
|
-- CustomRoleHead:getInstance():Sent(sent_succeed, mainrole_vo.picture_ver + 1)
|
|
-- end
|
|
-- end
|
|
-- GlobalEventSystem:Bind(EventName.PHONE_PHOTO_LOADBACK, onPhonePhotoLoad)
|
|
end
|
|
|
|
function CustomRoleHead:getInstance()
|
|
if CustomRoleHead.Instance == nil then
|
|
CustomRoleHead.New()
|
|
end
|
|
return CustomRoleHead.Instance
|
|
end
|
|
|
|
-- ref_tar目标
|
|
-- raw_image图片容器
|
|
-- role_id 角色ID
|
|
-- role_career 角色职业
|
|
-- role_sex性别
|
|
-- role_turn转身数
|
|
-- out_server 已不用 可以传 nil
|
|
-- head_ver 角色头像版本号
|
|
-- picture 角色头像路径,如无可传 nil
|
|
-- is_big是否大图
|
|
-- local_picture_id 本地图标的id
|
|
-- is_ear --是否露头
|
|
|
|
function CustomRoleHead:Create(ref_tar, raw_image, role_id, role_career, role_sex, role_turn, out_server, head_ver, picture, is_big, local_picture_id, is_ear)
|
|
local call_func = function(result, image)
|
|
if ref_tar._use_delete_method then
|
|
return
|
|
end
|
|
|
|
if result and image and not IsNull(raw_image) then
|
|
raw_image.texture = image
|
|
else
|
|
logWarn("load imagse is null")
|
|
end
|
|
end
|
|
|
|
if role_id == "" or not role_id then
|
|
logWarn("CustomRoleHead role_id is error")
|
|
return
|
|
end
|
|
-- 兼容聊天AI做的容错,去掉外层的职业性别和转生的判断
|
|
role_career = role_career and role_career ~= 0 and role_career or 1
|
|
role_sex = role_sex and role_sex ~= 0 and role_sex or 1
|
|
role_turn = role_turn and role_turn ~= 0 and role_turn or 1
|
|
|
|
local now_role_ver = head_ver or ""
|
|
local has_load = false
|
|
|
|
local load_default_res = function()
|
|
if has_load then
|
|
return
|
|
end
|
|
|
|
has_load = true
|
|
local cfg = Config.Transfercareer[role_career .. "@" .. role_turn]
|
|
if not cfg then
|
|
print("no Transfercareer by roleid:" .. role_id)
|
|
return
|
|
end
|
|
--玩家默认职业相片 加载后可常存
|
|
local default_call = function(obj)
|
|
if obj and obj[0] then
|
|
call_func(true, obj[0], role_id)
|
|
else
|
|
call_func(false, nil, role_id)
|
|
end
|
|
end
|
|
|
|
local res_name
|
|
local ab_name
|
|
-- if is_big then
|
|
res_name = "head_icon_" .. cfg.image_id
|
|
ab_name = "icon_head_icon_" .. res_name
|
|
-- else
|
|
-- if is_ear then
|
|
-- res_name = "head_ear_" .. cfg.icon
|
|
-- else
|
|
-- res_name = "head_circle_" .. cfg.icon
|
|
-- end
|
|
-- ab_name = "icon_head_" .. res_name
|
|
-- end
|
|
lua_resM:loadTexture(self, ab_name, {res_name .. ".png"}, default_call, ASSETS_LEVEL.LOW)
|
|
end
|
|
|
|
local load_local_picture_res = function()
|
|
if has_load or not local_picture_id then
|
|
return
|
|
end
|
|
|
|
has_load = true
|
|
|
|
--玩家默认职业相片 加载后可常存
|
|
local default_call = function(obj)
|
|
if obj and obj[0] then
|
|
call_func(true, obj[0], role_id)
|
|
else
|
|
call_func(false, nil, role_id)
|
|
end
|
|
end
|
|
local res_name = ""
|
|
local ab_name = ""
|
|
-- if is_big then
|
|
res_name = "head_icon_" .. local_picture_id
|
|
ab_name = "icon_head_icon_" .. res_name
|
|
-- else
|
|
-- if is_ear then
|
|
-- res_name = "head_ear_" .. local_picture_id
|
|
-- else
|
|
-- res_name = "head_circle_" .. local_picture_id
|
|
-- end
|
|
-- ab_name = "icon_head_" .. res_name
|
|
-- end
|
|
|
|
lua_resM:loadTexture(self, ab_name, {res_name .. ".png"}, default_call, ASSETS_LEVEL.LOW)
|
|
end
|
|
-- if (now_role_ver == "" or now_role_ver == 0 or picture == "") and (not local_picture_id or local_picture_id == "" or local_picture_id == 0) then
|
|
-- load_default_res()
|
|
-- return
|
|
-- elseif local_picture_id and (local_picture_id ~= 0 and local_picture_id ~= "") then
|
|
if local_picture_id and (local_picture_id ~= 0 and local_picture_id ~= "") then
|
|
load_local_picture_res()
|
|
return
|
|
else
|
|
-- setTimeout(load_default_res, 3)
|
|
load_default_res()
|
|
end
|
|
|
|
-- local playerInfo = LoginController.Instance:GetPlatUserInfo()
|
|
-- local server_id = out_server or playerInfo.server_id
|
|
-- local role_info = role_id
|
|
-- local role_info_cache = role_info .. now_role_ver
|
|
|
|
-- self.cache_data_state = self.cache_data_state + 1
|
|
|
|
-- local res_callback = function(is_succ, is_cache, buffer)
|
|
-- local result = false
|
|
-- if is_succ and buffer then
|
|
-- has_load = true
|
|
-- if not is_cache then
|
|
-- self.image_buff_list[role_info_cache] = buffer
|
|
-- end
|
|
-- result = true
|
|
-- end
|
|
-- if call_func then
|
|
-- call_func(result, buffer, role_id)
|
|
-- end
|
|
|
|
-- self.cache_data_state = self.cache_data_state - 1
|
|
|
|
-- --下载成功 ,头像是自己的,只存拍照和相册的
|
|
-- if is_succ and role_id == RoleManager.Instance:GetMainRoleId() and (not local_picture_id or local_picture_id == 0 or local_picture_id == "") then
|
|
-- GlobalEventSystem:Fire(EventName.SAVE_CUSTOME_HEAD)
|
|
-- end
|
|
|
|
-- end
|
|
|
|
-- local res_path, res_name = UtilGetRolePicPath(role_id, server_id, now_role_ver)
|
|
-- local save_path = res_path .. res_name
|
|
|
|
-- local role_image = self.image_buff_list[role_info_cache]
|
|
-- if role_image then
|
|
-- print("cache role head")
|
|
-- res_callback(true, true, role_image)
|
|
-- return
|
|
-- end
|
|
|
|
-- local read_local_date = function(result)
|
|
-- if not result then
|
|
-- return
|
|
-- end
|
|
|
|
-- local load_func = function(image)
|
|
-- if image then
|
|
-- res_callback(true, false, image)
|
|
-- else
|
|
-- res_callback(false, false, image)
|
|
-- end
|
|
-- end
|
|
-- Util.LoadRawTexture(save_path, load_func)
|
|
-- end
|
|
|
|
-- local is_exsit = false
|
|
-- is_exsit = Util.FileExists(save_path)
|
|
-- if is_exsit then
|
|
-- print("local role head")
|
|
-- read_local_date(true)
|
|
-- return
|
|
-- end
|
|
-- local url = ClientConfig.rolehead_download_url .. "img/" .. role_info .. ".jpg"
|
|
-- print("download role head")
|
|
-- HttpUtil.HttpDownLoad(url, save_path, read_local_date, timeout)
|
|
end
|
|
|
|
function CustomRoleHead:Sent(sent_callback, head_ver)
|
|
local playerInfo = LoginController.Instance:GetPlatUserInfo()
|
|
if not playerInfo then
|
|
return
|
|
end
|
|
|
|
self.sent_data_state = true
|
|
|
|
local mainrole_vo = RoleManager.Instance:GetMainRoleVo()
|
|
|
|
local get_param = {
|
|
accname = tostring(playerInfo.account),
|
|
platname = ClientConfig.plat_name,
|
|
server = tostring(playerInfo.server_id),
|
|
player_id = mainrole_vo.role_id,
|
|
game = "mrsd",
|
|
}
|
|
local res_path, res_name = UtilGetRolePicPath(mainrole_vo.role_id, nil, head_ver)
|
|
local sent_back_func = function(is_succ, data)
|
|
local load_succeed = false
|
|
local buffer = nil
|
|
|
|
local call_back = function()
|
|
if sent_callback then
|
|
sent_callback(load_succeed, buffer)
|
|
end
|
|
self.sent_data_state = false
|
|
end
|
|
|
|
if is_succ then
|
|
local json_obj = JsonToTable(data)
|
|
if json_obj then
|
|
local ret = json_obj["ret"]
|
|
if tonumber(ret) == 0 then
|
|
local load_func = function(image)
|
|
if image then
|
|
load_succeed = true
|
|
buffer = image
|
|
end
|
|
call_back(load_succeed, buffer)
|
|
end
|
|
Util.LoadRawTexture(res_path .. res_name, load_func)
|
|
return
|
|
elseif tonumber(ret) == 2 then --len字节
|
|
Message.show("上传图片数据大小超过限制,请重新上传")
|
|
return
|
|
end
|
|
end
|
|
end
|
|
|
|
call_back(load_succeed, buffer)
|
|
end
|
|
HttpUtil.HttpByteBuffSent(ClientConfig.rolehead_url .. "api/upload.php", get_param, res_path .. res_name, sent_back_func)
|
|
end
|
|
|
|
function CustomRoleHead:ComplainRoleHead(img_name)
|
|
if img_name == "" or not img_name then
|
|
Message.show("玩家头像数据异常")
|
|
return
|
|
end
|
|
|
|
local sent_back_func = function(is_succ, data)
|
|
-- local json_obj = JsonToTable(data)
|
|
-- if is_succ and json_obj then
|
|
-- local ret = json_obj["ret"]
|
|
-- if tonumber(ret) == 0 then
|
|
-- return
|
|
-- end
|
|
-- end
|
|
if is_succ then
|
|
Message.show("举报已经收到,感谢你的反馈")
|
|
else
|
|
Message.show("举报失败")
|
|
end
|
|
end
|
|
|
|
local ticket = "414de19367d6eea5ee1014fa75917aa4"
|
|
local now_method = "set_img_status"
|
|
local cur_time = tostring(os.time())
|
|
local post_param = {
|
|
time = cur_time,
|
|
method = now_method,
|
|
sign = string.lower(Util.md5(ticket .. cur_time .. now_method)),
|
|
game = "xjhx",
|
|
imgname = img_name,
|
|
}
|
|
|
|
HttpUtil.HttpPostRequest(ClientConfig.rolehead_url.."api/api.php", post_param, sent_back_func, 1000)
|
|
end
|
|
|
|
function CustomRoleHead:UpdateData()
|
|
if self.cache_data_state > 0 or self.sent_data_state then
|
|
return
|
|
end
|
|
|
|
for role_id, buffer in pairs(self.image_buff_list) do
|
|
if buffer then
|
|
destroy(buffer)
|
|
self.image_buff_list[role_id] = nil
|
|
end
|
|
end
|
|
self.image_buff_list = {}
|
|
end
|