源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 

329 行
11 KiB

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