头像昵称功能
This commit is contained in:
parent
29e2e33888
commit
f3924368ce
@ -103,6 +103,9 @@ BIReport.ITEM_GET_TYPE = {
|
||||
DUNGEON_SHARDS_CHALLENGE = "DungeonShardsChallenge", -- 碎片副本挑战
|
||||
DUNGEON_SHARDS_END = "DungeonShardsEnd", -- 碎片副本结算
|
||||
DUNGEON_SHARDS_SWEEP = "DungeonShardsSweep", -- 碎片副本扫荡
|
||||
CHANGE_NAME = "ChangeName", -- 重命名
|
||||
CHANGE_AVATAR = "ChangeAvatar", -- 修改头像
|
||||
CHANGE_FRAME = "ChangeFrame", -- 修改头像框
|
||||
}
|
||||
|
||||
BIReport.ADS_CLICK_TYPE = {
|
||||
|
||||
@ -36,6 +36,9 @@ EventManager.CUSTOM_EVENT = {
|
||||
CDKEY_FINISH = "CDKEY_FINISH", -- CDKEY
|
||||
DUNGEON_CHALLENGE = "DUNGEON_CHALLENGE",-- 副本开始挑战
|
||||
DUNGEON_SWEEP = "DUNGEON_SWEEP",-- 副本开始扫荡
|
||||
PLAYER_INFO_CLICK_AVATAR = "PLAYER_INFO_CLICK_AVATAR",-- 个人信息选择头像
|
||||
PLAYER_INFO_CLICK_FRAME = "PLAYER_INFO_CLICK_FRAME",-- 个人信息选择头像框
|
||||
RENAME_SUCCESS = "RENAME_SUCCESS",-- 重命名成功
|
||||
-- BORAD_TOUCH_BEGIN = "BORAD_TOUCH_BEGIN",
|
||||
-- BORAD_TOUCH_OVER = "BORAD_TOUCH_OVER"
|
||||
}
|
||||
|
||||
@ -31,6 +31,7 @@ local LOCAL_DATA_KEY = {
|
||||
GATE = "GATE",
|
||||
BOUNTY_POP_TIME = "BOUNTY_POP_TIME",
|
||||
CHALLENGE_TASK_POP_TIME = "CHALLENGE_TASK_POP_TIME",
|
||||
NEW_AVATAR_AND_FRAME = "NEW_AVATAR_AND_FRAME",
|
||||
SHOP_DISCOUNT_RED_POINT_TIME = "SHOP_DISCOUNT_RED_POINT_TIME",
|
||||
}
|
||||
|
||||
@ -375,4 +376,21 @@ function LocalData:setShopDiscountRedPointTime(time)
|
||||
self:setInt(LOCAL_DATA_KEY.SHOP_DISCOUNT_RED_POINT_TIME, time)
|
||||
end
|
||||
|
||||
function LocalData:getNewAvatarAndFrame()
|
||||
local info = json.decode(self:getString(LOCAL_DATA_KEY.NEW_AVATAR_AND_FRAME, "{}"))
|
||||
-- Logger.logHighlight("获取新头像/头像框状态")
|
||||
-- Logger.printTable(info)
|
||||
return info
|
||||
end
|
||||
|
||||
function LocalData:setNewAvatarAndFrame(info)
|
||||
-- Logger.logHighlight("保存新头像/头像框状态")
|
||||
-- Logger.printTable(info)
|
||||
if not info then
|
||||
return
|
||||
end
|
||||
local str = json.encode(info)
|
||||
self:setString(LOCAL_DATA_KEY.NEW_AVATAR_AND_FRAME, str)
|
||||
end
|
||||
|
||||
return LocalData
|
||||
@ -60,6 +60,8 @@ GConst.WAIT_NET_RSP_TIME = 8 -- 与服务器交互的等待回复时间
|
||||
GConst.INVALID = -1
|
||||
GConst.DEPTH_BUFFER = 24
|
||||
|
||||
GConst.NAME_MAX_LENTH = 12
|
||||
|
||||
GConst.EMPTY_STRING = ""
|
||||
GConst.EMPTY_TABLE = {}
|
||||
setmetatable(GConst.EMPTY_TABLE, {
|
||||
@ -186,6 +188,7 @@ GConst.ATLAS_PATH = {
|
||||
UI_LOGIN = "assets/arts/atlas/ui/login.asset",
|
||||
ICON_SKILL = "assets/arts/atlas/icon/skill.asset",
|
||||
ICON_SKILL_BIG = "assets/arts/atlas/icon/skill_big.asset",
|
||||
ICON_AVATAR = "assets/arts/atlas/icon/avatar.asset",
|
||||
ICON_HERO = "assets/arts/atlas/icon/hero.asset",
|
||||
ICON_HERO_2 = "assets/arts/atlas/icon/hero_2.asset",
|
||||
ICON_SKILL_ROGUE = "assets/arts/atlas/icon/skill_rogue.asset",
|
||||
@ -592,6 +595,7 @@ end
|
||||
|
||||
GConst.ERROR_STR = {
|
||||
SUCCESS = "SUCCESS",
|
||||
NAME_HAS_EXISTED = "NAME_HAS_EXISTED",
|
||||
}
|
||||
|
||||
return GConst
|
||||
@ -26,4 +26,53 @@ function PlayerManager:onLevelUpFinish(result)
|
||||
end
|
||||
end
|
||||
|
||||
-- 修改昵称
|
||||
function PlayerManager:reqChangeNickname(changeName)
|
||||
self:sendMessage(ProtoMsgType.FromMsgEnum.ChangeNameReq, {name = changeName}, {}, self.respChangeNickname, BIReport.ITEM_GET_TYPE.CHANGE_NAME)
|
||||
end
|
||||
|
||||
function PlayerManager:respChangeNickname(result)
|
||||
if result.err_code == GConst.ERROR_STR.SUCCESS then
|
||||
DataManager.PlayerData:setNickname(result.reqData.name)
|
||||
EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.RENAME_SUCCESS)
|
||||
elseif result.err_code == GConst.ERROR_STR.NAME_HAS_EXISTED then
|
||||
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.CANNOT_RENAME_DESC_4))
|
||||
end
|
||||
end
|
||||
|
||||
-- 修改头像
|
||||
function PlayerManager:reqChangeAvatar(changeId)
|
||||
self:sendMessage(ProtoMsgType.FromMsgEnum.ChangeAvatarReq, {id = changeId}, {}, self.respChangeAvatar, BIReport.ITEM_GET_TYPE.CHANGE_AVATAR)
|
||||
end
|
||||
|
||||
function PlayerManager:respChangeAvatar(result)
|
||||
if result.err_code == GConst.ERROR_STR.SUCCESS then
|
||||
DataManager.PlayerData:setAvatarUsing(result.reqData.id)
|
||||
end
|
||||
end
|
||||
|
||||
-- 修改头像框
|
||||
function PlayerManager:reqChangeFrame(changeId)
|
||||
self:sendMessage(ProtoMsgType.FromMsgEnum.ChangeAvatarFrameReq, {id = changeId}, {}, self.respChangeFrame, BIReport.ITEM_GET_TYPE.CHANGE_FRAME)
|
||||
end
|
||||
|
||||
function PlayerManager:respChangeFrame(result)
|
||||
if result.err_code == GConst.ERROR_STR.SUCCESS then
|
||||
DataManager.PlayerData:setFrameUsing(result.reqData.id)
|
||||
end
|
||||
end
|
||||
|
||||
-- 检查解锁头像
|
||||
function PlayerManager:checkUnlockAvatar(heroId)
|
||||
local unlockIds = DataManager.PlayerData:getCanUnlockAvatarIds(heroId)
|
||||
table.foreach(unlockIds, function (idx, id)
|
||||
DataManager.PlayerData:setAvatarUnlock(id)
|
||||
end)
|
||||
end
|
||||
|
||||
-- 解锁头像框
|
||||
function PlayerManager:unlockAvatarFrame(id)
|
||||
-- 暂无解锁逻辑
|
||||
end
|
||||
|
||||
return PlayerManager
|
||||
@ -1,10 +1,10 @@
|
||||
local Component = require (GConst.TYPEOF_LUA_CLASS.LUA_COMPONENT)
|
||||
local CurrencyBar = class("CurrencyBar", Component)
|
||||
|
||||
CurrencyBar.cellWidth = 174
|
||||
CurrencyBar.cellWidth = 162
|
||||
CurrencyBar.cellHeight = 40
|
||||
|
||||
local OFFSET_X = -27
|
||||
local OFFSET_X = -20
|
||||
local OFFSET_Y = -40
|
||||
|
||||
function CurrencyBar:init()
|
||||
|
||||
@ -593,14 +593,34 @@ function MainCityUI:setSideBarVisible(visible)
|
||||
end
|
||||
|
||||
function MainCityUI:initPlayerInfo()
|
||||
self.playerSlider = self.uiMap["main_ui.player_node.slider"]
|
||||
self.playerLvTx = self.uiMap["main_ui.player_node.lv"]
|
||||
self.playerSlider = self.uiMap["main_ui.player_node.info.slider.img_prog"]
|
||||
self.playerLvTx = self.uiMap["main_ui.player_node.info.slider.tx_lv"]
|
||||
self.playerNameTx = self.uiMap["main_ui.player_node.info.tx_name"]
|
||||
self.playerAvatarImg = self.uiMap["main_ui.player_node.avatar.img_avatar"]
|
||||
self.playerFrameImg = self.uiMap["main_ui.player_node.avatar.img_frame"]
|
||||
self.playerAvatar = self.uiMap["main_ui.player_node.avatar"]
|
||||
self.uiMap["main_ui.player_node"]:addClickListener(function ()
|
||||
UIManager:showUI("app/ui/player_info/player_info_ui")
|
||||
end)
|
||||
end
|
||||
|
||||
function MainCityUI:refreshPlayerInfo()
|
||||
local lv = DataManager.PlayerData:getLv()
|
||||
self.playerLvTx:setText(GConst.INT_TO_STRING[lv] or tostring(lv))
|
||||
self.playerLvTx:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_1, lv))
|
||||
self.playerSlider:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = DataManager.PlayerData:getExpPercent()
|
||||
self.playerNameTx:setText(DataManager.PlayerData:getNickname())
|
||||
self.playerAvatarImg:setSprite(GConst.ATLAS_PATH.ICON_HERO, DataManager.PlayerData:getAvatarIconId(DataManager.PlayerData:getUsingAvatarId()), function()
|
||||
self.playerAvatarImg:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_IMAGE):SetNativeSize()
|
||||
end)
|
||||
self.playerFrameImg:setSprite(GConst.ATLAS_PATH.ICON_AVATAR, DataManager.PlayerData:getFrameIconId(DataManager.PlayerData:getUsingFrameId()), function()
|
||||
self.playerFrameImg:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_IMAGE):SetNativeSize()
|
||||
end)
|
||||
|
||||
if DataManager.PlayerData:hasNewAvatar() or DataManager.PlayerData:hasNewFrame() then
|
||||
self.playerAvatar:addRedPoint(50, 50, 0.7)
|
||||
else
|
||||
self.playerAvatar:removeRedPoint()
|
||||
end
|
||||
end
|
||||
|
||||
function MainCityUI:initTopNode()
|
||||
|
||||
8
lua/app/ui/player_info.meta
Normal file
8
lua/app/ui/player_info.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f2be842a1b528e343b2ebc38a2c2ea26
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
35
lua/app/ui/player_info/avatar_cell.lua
Normal file
35
lua/app/ui/player_info/avatar_cell.lua
Normal file
@ -0,0 +1,35 @@
|
||||
local AvatarCell = class("AvatarCell", BaseCell)
|
||||
|
||||
function AvatarCell:init()
|
||||
self.uiMap = self:getUIMap()
|
||||
|
||||
self.imgAvatar = self.uiMap["avatar_cell.img_avatar"]
|
||||
self.lock = self.uiMap["avatar_cell.lock"]
|
||||
self.use = self.uiMap["avatar_cell.use"]
|
||||
self.txUse = self.uiMap["avatar_cell.use.tx_use"]
|
||||
self.select = self.uiMap["avatar_cell.select"]
|
||||
|
||||
self.txUse:setText(I18N:getGlobalText(I18N.GlobalConst.ON_USING_DESC))
|
||||
|
||||
self:addClickListener(function()
|
||||
EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.PLAYER_INFO_CLICK_AVATAR, self.id)
|
||||
end)
|
||||
end
|
||||
|
||||
function AvatarCell:refresh(id, isSelect)
|
||||
self.id = id
|
||||
|
||||
-- 红点
|
||||
if DataManager.PlayerData:isNewAvatar(self.id) then
|
||||
self.baseObject:addRedPoint(45, 45, 0.6)
|
||||
else
|
||||
self.baseObject:removeRedPoint()
|
||||
end
|
||||
|
||||
self.select:setActive(isSelect)
|
||||
self.imgAvatar:setSprite(GConst.ATLAS_PATH.ICON_HERO, DataManager.PlayerData:getAvatarIconId(self.id))
|
||||
self.lock:setActive(not DataManager.PlayerData:isAvatarUnlock(self.id))
|
||||
self.use:setActive(DataManager.PlayerData:getUsingAvatarId() == self.id)
|
||||
end
|
||||
|
||||
return AvatarCell
|
||||
10
lua/app/ui/player_info/avatar_cell.lua.meta
Normal file
10
lua/app/ui/player_info/avatar_cell.lua.meta
Normal file
@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 54c0ca559bd35dd4793dae969f0cda92
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
|
||||
35
lua/app/ui/player_info/frame_cell.lua
Normal file
35
lua/app/ui/player_info/frame_cell.lua
Normal file
@ -0,0 +1,35 @@
|
||||
local FrameCell = class("FrameCell", BaseCell)
|
||||
|
||||
function FrameCell:init()
|
||||
self.uiMap = self:getUIMap()
|
||||
|
||||
self.imgFrame = self.uiMap["frame_cell.img_frame"]
|
||||
self.lock = self.uiMap["frame_cell.lock"]
|
||||
self.use = self.uiMap["frame_cell.use"]
|
||||
self.txUse = self.uiMap["frame_cell.use.tx_use"]
|
||||
self.select = self.uiMap["frame_cell.select"]
|
||||
|
||||
self.txUse:setText(I18N:getGlobalText(I18N.GlobalConst.ON_USING_DESC))
|
||||
|
||||
self:addClickListener(function()
|
||||
EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.PLAYER_INFO_CLICK_FRAME, self.id)
|
||||
end)
|
||||
end
|
||||
|
||||
function FrameCell:refresh(id, isSelect)
|
||||
self.id = id
|
||||
|
||||
-- 红点
|
||||
if DataManager.PlayerData:isNewFrame(self.id) then
|
||||
self.baseObject:addRedPoint(45, 45, 0.6)
|
||||
else
|
||||
self.baseObject:removeRedPoint()
|
||||
end
|
||||
|
||||
self.select:setActive(isSelect)
|
||||
self.imgFrame:setSprite(GConst.ATLAS_PATH.ICON_AVATAR, DataManager.PlayerData:getFrameIconId(self.id))
|
||||
self.lock:setActive(not DataManager.PlayerData:isFrameUnlock(self.id))
|
||||
self.use:setActive(DataManager.PlayerData:getUsingFrameId() == self.id)
|
||||
end
|
||||
|
||||
return FrameCell
|
||||
10
lua/app/ui/player_info/frame_cell.lua.meta
Normal file
10
lua/app/ui/player_info/frame_cell.lua.meta
Normal file
@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9011185917b95e447b6962cc50a24452
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
|
||||
238
lua/app/ui/player_info/player_info_ui.lua
Normal file
238
lua/app/ui/player_info/player_info_ui.lua
Normal file
@ -0,0 +1,238 @@
|
||||
local PlayerInfoUI = class("PlayerInfoUI", BaseUI)
|
||||
|
||||
local TAG = {
|
||||
AVATAR = 1,
|
||||
FRAME = 2,
|
||||
}
|
||||
|
||||
function PlayerInfoUI:isFullScreen()
|
||||
return false
|
||||
end
|
||||
|
||||
function PlayerInfoUI:getPrefabPath()
|
||||
return "assets/prefabs/ui/player_info/player_info_ui.prefab"
|
||||
end
|
||||
|
||||
function PlayerInfoUI:ctor()
|
||||
self.selectAvatarId = DataManager.PlayerData:getUsingAvatarId()
|
||||
self.selectFrameId = DataManager.PlayerData:getUsingFrameId()
|
||||
end
|
||||
|
||||
function PlayerInfoUI:onCover()
|
||||
end
|
||||
|
||||
function PlayerInfoUI:onReshow()
|
||||
end
|
||||
|
||||
function PlayerInfoUI:onClose()
|
||||
end
|
||||
|
||||
function PlayerInfoUI:onLoadRootComplete()
|
||||
self.uiMap = self.root:genAllChildren()
|
||||
|
||||
self.txTitle = self.uiMap["player_info_ui.bg.title.tx_title"]
|
||||
self.imgAvatar = self.uiMap["player_info_ui.bg.info.avatar.img_avatar"]
|
||||
self.imgFrame = self.uiMap["player_info_ui.bg.info.avatar.img_frame"]
|
||||
self.expProg = self.uiMap["player_info_ui.bg.info.exp.exp_prog"]
|
||||
self.txLevel = self.uiMap["player_info_ui.bg.info.exp.level.tx_level"]
|
||||
self.txName = self.uiMap["player_info_ui.bg.info.nickname.tx_name"]
|
||||
self.btnRename = self.uiMap["player_info_ui.bg.info.nickname.btn_rename"]
|
||||
self.tagAvatar = self.uiMap["player_info_ui.bg.list.tags.tag_avatar"]
|
||||
self.selectAvatar = self.uiMap["player_info_ui.bg.list.tags.tag_avatar.select"]
|
||||
self.txAvatar = self.uiMap["player_info_ui.bg.list.tags.tag_avatar.tx_avatar"]
|
||||
self.txAvatarS = self.uiMap["player_info_ui.bg.list.tags.tag_avatar.select.tx_avatar_s"]
|
||||
self.tagFrame = self.uiMap["player_info_ui.bg.list.tags.tag_frame"]
|
||||
self.selectFrame = self.uiMap["player_info_ui.bg.list.tags.tag_frame.select"]
|
||||
self.txFrame = self.uiMap["player_info_ui.bg.list.tags.tag_frame.tx_frame"]
|
||||
self.txFrameS = self.uiMap["player_info_ui.bg.list.tags.tag_frame.select.tx_frame_s"]
|
||||
self.scrollrectAvatar = self.uiMap["player_info_ui.bg.list.scrollrect_avatar"]
|
||||
self.scrollrectFrame = self.uiMap["player_info_ui.bg.list.scrollrect_frame"]
|
||||
self.txDesc = self.uiMap["player_info_ui.bg.tx_desc"]
|
||||
self.btnUse = self.uiMap["player_info_ui.bg.btn_use"]
|
||||
self.txUse = self.uiMap["player_info_ui.bg.btn_use.tx_use"]
|
||||
self.btnClose = self.uiMap["player_info_ui.bg.btn_close"]
|
||||
|
||||
self.curTag = TAG.AVATAR
|
||||
|
||||
self.tagAvatar:addClickListener(function()
|
||||
self:refreshScrollrect(TAG.AVATAR)
|
||||
end)
|
||||
self.tagFrame:addClickListener(function()
|
||||
self:refreshScrollrect(TAG.FRAME)
|
||||
end)
|
||||
self.btnRename:addClickListener(function()
|
||||
UIManager:showUI("app/ui/player_info/rename_ui")
|
||||
self:closeUI()
|
||||
end)
|
||||
self.btnUse:addClickListener(function()
|
||||
if self.curTag == TAG.AVATAR then
|
||||
ModuleManager.PlayerManager:reqChangeAvatar(self.selectAvatarId)
|
||||
elseif self.curTag == TAG.FRAME then
|
||||
ModuleManager.PlayerManager:reqChangeFrame(self.selectFrameId)
|
||||
end
|
||||
end)
|
||||
self.btnClose:addClickListener(function()
|
||||
self:closeUI()
|
||||
end)
|
||||
self:addEventListener(EventManager.CUSTOM_EVENT.PLAYER_INFO_CLICK_AVATAR, function(id)
|
||||
if self.selectAvatarId == id then
|
||||
return
|
||||
end
|
||||
if DataManager.PlayerData:isNewAvatar(id) then
|
||||
DataManager.PlayerData:setNewAvatarStatus(id, false)
|
||||
end
|
||||
self.selectAvatarId = id
|
||||
self.scrollRectCompAvatar:updateAllCell()
|
||||
self:refreshDesc()
|
||||
end)
|
||||
self:addEventListener(EventManager.CUSTOM_EVENT.PLAYER_INFO_CLICK_FRAME, function(id)
|
||||
if self.selectFrameId == id then
|
||||
return
|
||||
end
|
||||
if DataManager.PlayerData:isNewFrame(id) then
|
||||
DataManager.PlayerData:setNewFrameStatus(id, false)
|
||||
end
|
||||
self.selectFrameId = id
|
||||
self.scrollRectCompFrame:updateAllCell()
|
||||
self:refreshDesc()
|
||||
end)
|
||||
self:bind(DataManager.PlayerData, "dirty", function()
|
||||
self:onRefresh()
|
||||
end)
|
||||
end
|
||||
|
||||
function PlayerInfoUI:onRefresh()
|
||||
self:refreshScrollrect()
|
||||
|
||||
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.PLAYER_INFO))
|
||||
self.imgAvatar:setSprite(GConst.ATLAS_PATH.ICON_HERO, DataManager.PlayerData:getAvatarIconId(DataManager.PlayerData:getUsingAvatarId()))
|
||||
self.imgFrame:setSprite(GConst.ATLAS_PATH.ICON_AVATAR, DataManager.PlayerData:getFrameIconId(DataManager.PlayerData:getUsingFrameId()))
|
||||
local lv = DataManager.PlayerData:getLv()
|
||||
local exp = DataManager.PlayerData:getExpPercent()
|
||||
self.txLevel:setText(GConst.INT_TO_STRING[lv] or tostring(lv))
|
||||
self.expProg:getComponent(GConst.TYPEOF_UNITY_CLASS.BF_SLIDER).value = exp
|
||||
self.txName:setText(DataManager.PlayerData:getNickname())
|
||||
self.txAvatar:setText(I18N:getGlobalText(I18N.GlobalConst.AVATAR_HEAD_DESC))
|
||||
self.txAvatarS:setText(I18N:getGlobalText(I18N.GlobalConst.AVATAR_HEAD_DESC))
|
||||
self.txFrame:setText(I18N:getGlobalText(I18N.GlobalConst.AVATAR_HEAD_FRAME_DESC))
|
||||
self.txFrameS:setText(I18N:getGlobalText(I18N.GlobalConst.AVATAR_HEAD_FRAME_DESC))
|
||||
|
||||
-- 红点
|
||||
if DataManager.PlayerData:hasNewAvatar() then
|
||||
self.tagAvatar:addRedPoint(120, 20, 0.6)
|
||||
else
|
||||
self.tagAvatar:removeRedPoint()
|
||||
end
|
||||
if DataManager.PlayerData:hasNewFrame() then
|
||||
self.tagFrame:addRedPoint(120, 20, 0.6)
|
||||
else
|
||||
self.tagFrame:removeRedPoint()
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerInfoUI:refreshScrollrect(selectTag)
|
||||
if selectTag ~= nil then
|
||||
self.curTag = selectTag
|
||||
end
|
||||
|
||||
if self.curTag == TAG.AVATAR then
|
||||
self:showAvatar()
|
||||
elseif self.curTag == TAG.FRAME then
|
||||
self:showFrame()
|
||||
end
|
||||
end
|
||||
|
||||
-- 显示头像列表
|
||||
function PlayerInfoUI:showAvatar()
|
||||
self.ids = DataManager.PlayerData:getShowAvatarIds()
|
||||
|
||||
self.selectAvatar:setActive(true)
|
||||
self.scrollrectAvatar:setActive(true)
|
||||
self.selectFrame:setActive(false)
|
||||
self.scrollrectFrame:setActive(false)
|
||||
|
||||
if self.scrollRectCompAvatar == nil then
|
||||
self.scrollRectCompAvatar = self.scrollrectAvatar:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE)
|
||||
self.scrollRectCompAvatar:addInitCallback(function()
|
||||
return "app/ui/player_info/avatar_cell"
|
||||
end)
|
||||
self.scrollRectCompAvatar:addRefreshCallback(function(index, cell)
|
||||
cell:refresh(self.ids[index], self.ids[index] == self.selectAvatarId)
|
||||
end)
|
||||
self.scrollRectCompAvatar:clearCells()
|
||||
self.scrollRectCompAvatar:refillCells(#self.ids)
|
||||
else
|
||||
self.scrollRectCompAvatar:updateAllCell()
|
||||
end
|
||||
|
||||
self:refreshDesc()
|
||||
end
|
||||
|
||||
-- 显示框列表
|
||||
function PlayerInfoUI:showFrame()
|
||||
self.ids = DataManager.PlayerData:getShowFrameIds()
|
||||
|
||||
self.selectAvatar:setActive(false)
|
||||
self.scrollrectAvatar:setActive(false)
|
||||
self.selectFrame:setActive(true)
|
||||
self.scrollrectFrame:setActive(true)
|
||||
|
||||
if self.scrollRectCompFrame == nil then
|
||||
self.scrollRectCompFrame = self.scrollrectFrame:addLuaComponent(GConst.TYPEOF_LUA_CLASS.SCROLL_RECT_BASE)
|
||||
self.scrollRectCompFrame:addInitCallback(function()
|
||||
return "app/ui/player_info/frame_cell"
|
||||
end)
|
||||
self.scrollRectCompFrame:addRefreshCallback(function(index, cell)
|
||||
cell:refresh(self.ids[index], self.ids[index] == self.selectFrameId)
|
||||
end)
|
||||
self.scrollRectCompFrame:clearCells()
|
||||
self.scrollRectCompFrame:refillCells(#self.ids)
|
||||
else
|
||||
self.scrollRectCompFrame:updateAllCell()
|
||||
end
|
||||
|
||||
self:refreshDesc()
|
||||
end
|
||||
|
||||
-- 刷新描述
|
||||
function PlayerInfoUI:refreshDesc()
|
||||
if self.curTag == TAG.AVATAR then
|
||||
self.txDesc:setText(DataManager.PlayerData:getAvatarDesc(self.selectAvatarId))
|
||||
if DataManager.PlayerData:isAvatarUnlock(self.selectAvatarId) and DataManager.PlayerData:getUsingAvatarId() ~= self.selectAvatarId then
|
||||
-- 已解锁,未使用
|
||||
self.btnUse:setTouchEnable(true)
|
||||
self.btnUse:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_green_1")
|
||||
self.txUse:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_8))
|
||||
else
|
||||
self.btnUse:setTouchEnable(false)
|
||||
self.btnUse:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_1")
|
||||
if DataManager.PlayerData:getUsingAvatarId() == self.selectAvatarId then
|
||||
-- 已解锁,已使用
|
||||
self.txUse:setText(I18N:getGlobalText(I18N.GlobalConst.ON_USING_DESC))
|
||||
else
|
||||
-- 未解锁
|
||||
self.txUse:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_7))
|
||||
end
|
||||
end
|
||||
elseif self.curTag == TAG.FRAME then
|
||||
self.txDesc:setText(DataManager.PlayerData:getFrameDesc(self.selectFrameId))
|
||||
if DataManager.PlayerData:isAvatarUnlock(self.selectFrameId) and DataManager.PlayerData:getUsingFrameId() ~= self.selectFrameId then
|
||||
-- 已解锁,未使用
|
||||
self.btnUse:setTouchEnable(true)
|
||||
self.btnUse:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_green_1")
|
||||
self.txUse:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_8))
|
||||
else
|
||||
self.btnUse:setTouchEnable(false)
|
||||
self.btnUse:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_1")
|
||||
if DataManager.PlayerData:getUsingFrameId() == self.selectFrameId then
|
||||
-- 已解锁,已使用
|
||||
self.txUse:setText(I18N:getGlobalText(I18N.GlobalConst.ON_USING_DESC))
|
||||
else
|
||||
-- 未解锁
|
||||
self.txUse:setText(I18N:getGlobalText(I18N.GlobalConst.HERO_DESC_7))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return PlayerInfoUI
|
||||
10
lua/app/ui/player_info/player_info_ui.lua.meta
Normal file
10
lua/app/ui/player_info/player_info_ui.lua.meta
Normal file
@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 679d5350053753147927126ec528fd90
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
|
||||
109
lua/app/ui/player_info/rename_ui.lua
Normal file
109
lua/app/ui/player_info/rename_ui.lua
Normal file
@ -0,0 +1,109 @@
|
||||
local RenameUI = class("RenameUI", BaseUI)
|
||||
|
||||
function RenameUI:isFullScreen()
|
||||
return false
|
||||
end
|
||||
|
||||
function RenameUI:getPrefabPath()
|
||||
return "assets/prefabs/ui/player_info/rename_ui.prefab"
|
||||
end
|
||||
|
||||
function RenameUI:ctor()
|
||||
end
|
||||
|
||||
function RenameUI:onCover()
|
||||
end
|
||||
|
||||
function RenameUI:onReshow()
|
||||
end
|
||||
|
||||
function RenameUI:onClose()
|
||||
end
|
||||
|
||||
function RenameUI:onLoadRootComplete()
|
||||
self.uiMap = self.root:genAllChildren()
|
||||
|
||||
self.txTitle = self.uiMap["rename_ui.bg.title.tx_title"]
|
||||
self.txDesc = self.uiMap["rename_ui.bg.tx_desc"]
|
||||
self.input = self.uiMap["rename_ui.bg.input"]
|
||||
self.txTips = self.uiMap["rename_ui.bg.group.tx_tips"]
|
||||
self.btnOk = self.uiMap["rename_ui.bg.group.btn_ok"]
|
||||
self.iconCost = self.uiMap["rename_ui.bg.group.btn_ok.icon"]
|
||||
self.txConst = self.uiMap["rename_ui.bg.group.btn_ok.tx_const"]
|
||||
self.txFree = self.uiMap["rename_ui.bg.group.btn_ok.tx_free"]
|
||||
self.closeBtn = self.uiMap["rename_ui.bg.close_btn"]
|
||||
self.inputField = self.input:getComponent(GConst.TYPEOF_UNITY_CLASS.UI_TMP_INPUT_FIELD)
|
||||
|
||||
self.inputField.text = ""
|
||||
self.txTitle:setText(I18N:getGlobalText(I18N.GlobalConst.RENAME_DESC))
|
||||
self.txDesc:setText(I18N:getGlobalText(I18N.GlobalConst.ENTER_NAME_DESC))
|
||||
|
||||
if DataManager.PlayerData:isFreeRename() then
|
||||
self.txTips:setActive(true)
|
||||
self.txFree:setActive(true)
|
||||
self.iconCost:setActive(false)
|
||||
self.txConst:setActive(false)
|
||||
self.txTips:setText(I18N:getGlobalText(I18N.GlobalConst.FREE_THIS_TIME_DESC))
|
||||
self.txFree:setText(I18N:getGlobalText(I18N.GlobalConst.STR_FREE))
|
||||
else
|
||||
local const = DataManager.PlayerData:getRenameCost()
|
||||
self.constId = GFunc.getRewardId(const)
|
||||
self.constType = GFunc.getRewardType(const)
|
||||
self.constNum = GFunc.getRewardNum(const)
|
||||
|
||||
self.txTips:setActive(false)
|
||||
self.txFree:setActive(false)
|
||||
self.iconCost:setActive(true)
|
||||
self.txConst:setActive(true)
|
||||
self.iconCost:setSprite(GFunc.getRewardIconRes(self.constType, self.constId))
|
||||
|
||||
if not GFunc.checkCost(self.constId, self.constNum) then
|
||||
-- 不满足
|
||||
self.btnOk:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_grey_1")
|
||||
self.txConst:setText("<color=#ff3434>x" .. self.constNum .. "</color>")
|
||||
else
|
||||
self.btnOk:setSprite(GConst.ATLAS_PATH.COMMON, "common_btn_green_1")
|
||||
self.txConst:setText("x" .. self.constNum)
|
||||
end
|
||||
GFunc.centerImgAndTx(self.iconCost, self.txConst)
|
||||
end
|
||||
|
||||
self.btnOk:addClickListener(function ()
|
||||
if self.constId ~= nil and self.constNum ~= nil and not GFunc.checkCost(self.constId, self.constNum, true) then
|
||||
return
|
||||
end
|
||||
self:onRename()
|
||||
end)
|
||||
self.closeBtn:addClickListener(function ()
|
||||
UIManager:showUI("app/ui/player_info/player_info_ui")
|
||||
self:closeUI()
|
||||
end)
|
||||
self:addEventListener(EventManager.CUSTOM_EVENT.RENAME_SUCCESS, function()
|
||||
UIManager:showUI("app/ui/player_info/player_info_ui")
|
||||
self:closeUI()
|
||||
end)
|
||||
end
|
||||
|
||||
function RenameUI:onRefresh()
|
||||
end
|
||||
|
||||
function RenameUI:onRename()
|
||||
local input = self.inputField.text
|
||||
|
||||
if #input == 0 or GFunc.getIsAllSpaceStr(input) then
|
||||
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.CANNOT_RENAME_DESC_1))
|
||||
return
|
||||
end
|
||||
if GFunc.getTextLen2(input) > GConst.NAME_MAX_LENTH then
|
||||
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.CANNOT_RENAME_DESC_2))
|
||||
return
|
||||
end
|
||||
if CS.XLua.Utils.IsSpecialChar(input) then
|
||||
GFunc.showToast(I18N:getGlobalText(I18N.GlobalConst.CANNOT_RENAME_DESC_3))
|
||||
return
|
||||
end
|
||||
|
||||
ModuleManager.PlayerManager:reqChangeNickname(input)
|
||||
end
|
||||
|
||||
return RenameUI
|
||||
10
lua/app/ui/player_info/rename_ui.lua.meta
Normal file
10
lua/app/ui/player_info/rename_ui.lua.meta
Normal file
@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 91317e38be4ffd243aac5e8edc191395
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 11500000, guid: 3b8b241bab4a4ac9a22fcce9c64f1242, type: 3}
|
||||
@ -116,6 +116,7 @@ function HeroData:setHeroLv(id, lv)
|
||||
if not entity:isActived() then
|
||||
self.data.activeCount = self.data.activeCount + 1
|
||||
ModuleManager.TaskManager:addTaskProgress(GConst.TaskConst.TASK_TYPE.X_NEW_HERO_GOT)
|
||||
ModuleManager.PlayerManager:checkUnlockAvatar(id)
|
||||
activeBefore = false
|
||||
end
|
||||
entity:setLv(lv)
|
||||
|
||||
@ -27,6 +27,16 @@ function PlayerData:init(data)
|
||||
end
|
||||
end
|
||||
|
||||
if self.data.playInfo == nil then
|
||||
self.data.playInfo = {}
|
||||
end
|
||||
self.data.playInfo.nickName = basicInfo.name
|
||||
self.data.playInfo.nameChanged = basicInfo.name_changed
|
||||
self.data.playInfo.usingAvatarId = basicInfo.avatar
|
||||
self.data.playInfo.usingFrameId = basicInfo.avatar_frame
|
||||
self.data.playInfo.unlockAvatar = data.bag.avatars
|
||||
self.data.playInfo.unlockFrame = data.bag.avatar_frames
|
||||
|
||||
local energyLimit = data.energy_limit or GConst.EMPTY_TABLE
|
||||
self.data.vitGemCount = energyLimit.diamond_count or 0
|
||||
self.data.vitADCount = energyLimit.ad_count or 0
|
||||
@ -215,4 +225,251 @@ function PlayerData:checkIfCanShowModuleUnlock(chapterId)
|
||||
self.showModuleUnlockChapter = chapterId
|
||||
end
|
||||
|
||||
-- 头像------------------------------------------------------------------------------------
|
||||
|
||||
-- 获取玩家昵称
|
||||
function PlayerData:getNickname()
|
||||
if self.data.playInfo.nickName == nil or #self.data.playInfo.nickName == 0 then
|
||||
self.data.playInfo.nickName = I18N:getGlobalText(I18N.GlobalConst.NEW_PLAYER)
|
||||
end
|
||||
return self.data.playInfo.nickName
|
||||
end
|
||||
|
||||
-- 设置玩家昵称
|
||||
function PlayerData:setNickname(name)
|
||||
self.data.playInfo.nickName = name
|
||||
self:markDirty()
|
||||
end
|
||||
|
||||
-- 是否可以免费修改昵称
|
||||
function PlayerData:isFreeRename()
|
||||
return not self.data.playInfo.nameChanged
|
||||
end
|
||||
|
||||
-- 获取修改昵称的花费
|
||||
function PlayerData:getRenameCost()
|
||||
return GFunc.getConstReward("change_name_cost")
|
||||
end
|
||||
|
||||
-- 头像------------------------------------------------------------------------------------
|
||||
|
||||
-- 获取玩家当前使用的头像
|
||||
function PlayerData:getUsingAvatarId()
|
||||
return self.data.playInfo.usingAvatarId
|
||||
end
|
||||
|
||||
-- 设置玩家使用的头像
|
||||
function PlayerData:setAvatarUsing(id)
|
||||
self.data.playInfo.usingAvatarId = id
|
||||
self.data.playInfo.nameChanged = true
|
||||
self:markDirty()
|
||||
end
|
||||
|
||||
-- 获取头像icon id
|
||||
function PlayerData:getAvatarIconId(id)
|
||||
return ConfigManager:getConfig("avatar")[id].iconId
|
||||
end
|
||||
|
||||
-- 头像是否解锁
|
||||
function PlayerData:isAvatarUnlock(id)
|
||||
if self.data.playInfo.unlockAvatar == nil then
|
||||
return false
|
||||
end
|
||||
return self.data.playInfo.unlockAvatar[id] ~= nil
|
||||
end
|
||||
|
||||
-- 设置头像解锁
|
||||
function PlayerData:setAvatarUnlock(id)
|
||||
Logger.logHighlight("解锁头像:"..id)
|
||||
if self.data.playInfo.unlockAvatar == nil then
|
||||
self.data.playInfo.unlockAvatar = {}
|
||||
end
|
||||
self.data.playInfo.unlockAvatar[id] = Time:getServerTime()
|
||||
self:setNewAvatarStatus(id, true)
|
||||
end
|
||||
|
||||
-- 获取头像描述
|
||||
function PlayerData:getAvatarDesc(id)
|
||||
return I18N:getText("avatar", id, "desc")
|
||||
end
|
||||
|
||||
-- 是否有新头像
|
||||
function PlayerData:hasNewAvatar()
|
||||
local newIds = LocalData:getNewAvatarAndFrame()
|
||||
if newIds.avatar == nil or #newIds.avatar == 0 then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
-- 是否是新头像
|
||||
function PlayerData:isNewAvatar(id)
|
||||
local newIds = LocalData:getNewAvatarAndFrame()
|
||||
if newIds.avatar ~= nil then
|
||||
return table.containValue(newIds.avatar, id)
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
-- 设置新头像状态
|
||||
function PlayerData:setNewAvatarStatus(id, isNew)
|
||||
local newIds = LocalData:getNewAvatarAndFrame()
|
||||
if newIds.avatar == nil then
|
||||
newIds.avatar = {}
|
||||
end
|
||||
|
||||
if isNew then
|
||||
table.insert(newIds.avatar, id)
|
||||
else
|
||||
table.removebyvalue(newIds.avatar, id, true)
|
||||
end
|
||||
LocalData:setNewAvatarAndFrame(newIds)
|
||||
self:markDirty()
|
||||
end
|
||||
|
||||
-- 是否显示头像(已解锁+未解锁可显示)
|
||||
function PlayerData:isShowAvatar(id)
|
||||
if self:isAvatarUnlock(id) then
|
||||
return true
|
||||
end
|
||||
-- 判断未解锁时是否显示
|
||||
return not ConfigManager:getConfig("avatar")[id].unlock_show
|
||||
end
|
||||
|
||||
-- 获取可以显示的所有头像id
|
||||
function PlayerData:getShowAvatarIds()
|
||||
local unlockIds = table.keys(self.data.playInfo.unlockAvatar)
|
||||
local lockIds = {}
|
||||
for id, data in pairs(ConfigManager:getConfig("avatar")) do
|
||||
if (not self:isAvatarUnlock(id)) and self:isShowAvatar(id) then
|
||||
table.insert(lockIds, id)
|
||||
end
|
||||
end
|
||||
table.sort(unlockIds, function(a, b)
|
||||
return a < b
|
||||
end)
|
||||
table.sort(lockIds, function(a, b)
|
||||
return a < b
|
||||
end)
|
||||
return table.addArray(unlockIds, lockIds)
|
||||
end
|
||||
|
||||
-- 获取可解锁的头像id列表
|
||||
function PlayerData:getCanUnlockAvatarIds(heroId)
|
||||
local ids = {}
|
||||
for id, data in pairs(ConfigManager:getConfig("avatar")) do
|
||||
if not self:isAvatarUnlock(id) and data.hero == heroId then
|
||||
table.insert(ids, id)
|
||||
end
|
||||
end
|
||||
return ids
|
||||
end
|
||||
|
||||
-- 头像框-----------------------------------------------------------------------------------
|
||||
|
||||
-- 获取玩家当前使用的头像框
|
||||
function PlayerData:getUsingFrameId()
|
||||
return self.data.playInfo.usingFrameId
|
||||
end
|
||||
|
||||
-- 设置玩家使用的头像框
|
||||
function PlayerData:setFrameUsing(id)
|
||||
self.data.playInfo.usingFrameId = id
|
||||
self:markDirty()
|
||||
end
|
||||
|
||||
-- 获取框icon id
|
||||
function PlayerData:getFrameIconId(id)
|
||||
return ConfigManager:getConfig("avatar_frame")[id].iconId
|
||||
end
|
||||
|
||||
-- 头像框是否解锁
|
||||
function PlayerData:isFrameUnlock(id)
|
||||
if self.data.playInfo.unlockFrame == nil then
|
||||
return false
|
||||
end
|
||||
return self.data.playInfo.unlockFrame[id] ~= nil
|
||||
end
|
||||
|
||||
-- 设置头像框解锁
|
||||
function PlayerData:setFrameUnlock(id)
|
||||
Logger.logHighlight("解锁头像框:"..id)
|
||||
if self.data.playInfo.unlockFrame == nil then
|
||||
self.data.playInfo.unlockFrame = {}
|
||||
end
|
||||
self.data.playInfo.unlockFrame[id] = Time:getServerTime()
|
||||
self:setNewFrameStatus(id, true)
|
||||
end
|
||||
|
||||
-- 获取头像框描述
|
||||
function PlayerData:getFrameDesc(id)
|
||||
return I18N:getText("avatar_frame", id, "desc")
|
||||
end
|
||||
|
||||
-- 是否有新头像框
|
||||
function PlayerData:hasNewFrame()
|
||||
local newIds = LocalData:getNewAvatarAndFrame()
|
||||
if newIds.frame == nil or #newIds.frame == 0 then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
-- 是否是新头像框
|
||||
function PlayerData:isNewFrame(id)
|
||||
local newIds = LocalData:getNewAvatarAndFrame()
|
||||
if newIds.frame ~= nil then
|
||||
return table.containValue(newIds.frame, id)
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
-- 设置新头像框状态
|
||||
function PlayerData:setNewFrameStatus(id, isNew)
|
||||
local newIds = LocalData:getNewAvatarAndFrame()
|
||||
if newIds.frame == nil then
|
||||
newIds.frame = {}
|
||||
end
|
||||
|
||||
if isNew then
|
||||
table.insert(newIds.frame, id)
|
||||
else
|
||||
table.removebyvalue(newIds.frame, id, true)
|
||||
end
|
||||
LocalData:setNewAvatarAndFrame(newIds)
|
||||
self:markDirty()
|
||||
end
|
||||
|
||||
-- 是否显示头像框(已解锁+未解锁可显示)
|
||||
function PlayerData:isShowFrame(id)
|
||||
if self:isFrameUnlock(id) then
|
||||
return true
|
||||
end
|
||||
-- 判断未解锁时是否显示
|
||||
local lock_show = ConfigManager:getConfig("avatar_frame")[id].unlock_show
|
||||
if lock_show ~= nil then
|
||||
return not lock_show
|
||||
else
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
-- 获取可以显示的所有头像框id(已解锁小id>已解锁大id>未解锁小id>未解锁大id)
|
||||
function PlayerData:getShowFrameIds()
|
||||
local unlockIds = table.keys(self.data.playInfo.unlockFrame)
|
||||
local lockIds = {}
|
||||
for id, data in pairs(ConfigManager:getConfig("avatar_frame")) do
|
||||
if (not self:isFrameUnlock(id)) and self:isShowFrame(id) then
|
||||
table.insert(lockIds, id)
|
||||
end
|
||||
end
|
||||
table.sort(unlockIds, function(a, b)
|
||||
return a < b
|
||||
end)
|
||||
table.sort(lockIds, function(a, b)
|
||||
return a < b
|
||||
end)
|
||||
return table.addArray(unlockIds, lockIds)
|
||||
end
|
||||
|
||||
return PlayerData
|
||||
Loading…
x
Reference in New Issue
Block a user