miduo_client/Assets/ManagedResources/~Lua/Modules/Vip/VipPanelV2.lua

594 lines
23 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

--[[
* @ClassName OperatingPanel
* @Description 等级特权面板
* @Date 2019/5/27 11:14
* @Author MagicianJoker, fengliudianshao@outlook.com
* @Copyright Copyright (c) 2019, MagicianJoker
--]]
-- local VipTaskListItem = require("Modules/Vip/VipTaskListItem")
---@class VipPanelV2
local VipPanelV2 = quick_class("VipPanelV2", BasePanel)
local this = VipPanelV2
local kMaxGiftCount, kMaxTaskCount = 4, 5
local ReceiveTypeIconDef = {
"t_tequan_tequandengjilibao", --特权等级礼包
"t_tequan_meirijiangli", --每日礼包
}
local orginLayer
local GameSetting = ConfigManager.GetConfig(ConfigName.GameSetting)
local allRewardItemPres = {}
function VipPanelV2:InitComponent()
this.spLoader = SpriteLoader.New()
orginLayer = 0
self.bg = Util.GetGameObject(self.transform, "bg")
if Screen.width / Screen.height < 1080 / 1920 then
screenAdapte(self.bg)
end
if not this.playerInfoView then
this.playerInfoView = SubUIManager.Open(SubUIConfig.PlayerInfoView, this.transform)
this.playerInfoView:SetPrivilegeShow(true)
end
-- this.BtView = SubUIManager.Open(SubUIConfig.BtView, self.transform)
this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.transform)
self.BtnBack = Util.GetGameObject(self.transform, "btnBack")
-- this.helpBtn = Util.GetGameObject(self.gameObject, "helpBtn")
-- this.helpPosition=this.helpBtn:GetComponent("RectTransform").localPosition
--topPart
self.topPart = Util.GetGameObject(self.transform, "frame/topPart")
self.BtnLeft = Util.GetGameObject(self.transform, "leftBtn")
self.BtnRight = Util.GetGameObject(self.transform, "rightBtn")
self.BtnTip = Util.GetGameObject(self.transform, "btnTip")
self.curLevel = Util.GetGameObject(self.transform, "btnTip/bg/vip"):GetComponent("Image")
self.StateRoot = Util.GetGameObject(self.topPart, "stateRoot")
self.curStatePart = Util.GetGameObject(self.StateRoot, "curState")
self.currentLvNum=Util.GetGameObject(self.curStatePart,"title/num"):GetComponent("Text")
self.progressBar = Util.GetGameObject(self.curStatePart, "progressBar"):GetComponent("Slider")
self.progressText = Util.GetGameObject(self.curStatePart, "progressBar/Text"):GetComponent("Text")
--midPart
self.midPart = Util.GetGameObject(self.transform, "midPart")
self.giftRoot = Util.GetGameObject(self.midPart, "giftRoot")
self.giftTypeIcon = Util.GetGameObject(self.giftRoot, "title"):GetComponent("Image")
self.giftItemContent = Util.GetGameObject(self.giftRoot, "grid")
self.giftItemList = {}
for i = 1, kMaxGiftCount do
self.giftItemList[i] = Util.GetGameObject(self.giftRoot, "grid/prop_"..i)--SubUIManager.Open(SubUIConfig.ItemView, self.giftItemContent.transform)
end
self.effect = Util.GetGameObject(self.giftRoot, "UI_Effect_VipPanel")
effectAdapte(self.effect)
self.BtnReceive = Util.GetGameObject(self.topPart, "btnGet")
self.BtnReceiveText = Util.GetGameObject(self.BtnReceive, "Text"):GetComponent("Text")
self.receiveRedPoint = Util.GetGameObject(self.BtnReceive,"redPoint")
--privilege
self.privilegeTitle = Util.GetGameObject(self.transform, "frame/topPart/privilegeRoot/title"):GetComponent("Text")
self.privilegeContent = Util.GetGameObject(self.transform, "frame/topPart/privilegeRoot/privilegeList/viewPort/content")
self.privilegeItem = Util.GetGameObject(self.privilegeContent, "itemPro")
self.privilegeItem.gameObject:SetActive(false)
self.privilegeList = {}
--bottomPart
self.maxLv = Util.GetGameObject(self.transform, "bottomPart/maxLv")
self.btnLvUp = Util.GetGameObject(self.transform, "bottomPart/btnLvUp")
self.taskList = Util.GetGameObject(self.transform, "bottomPart/taskList")
self.taskItemList = {}
for i = 1, self.taskList.transform.childCount do
self.taskItemList[i] = self.taskList.transform:GetChild(i - 1)
end
self.allRewardItemParent = Util.GetGameObject(self.transform, "frame/topPart/stateRoot/rewardGird")
self.getReawardBtn = Util.GetGameObject(self.transform, "frame/topPart/stateRoot/getReawardBtn")
self.getReawardBtnRedPoint = Util.GetGameObject(self.transform, "frame/topPart/stateRoot/getReawardBtn/redPoint")
self.getReawardBtnText = Util.GetGameObject(self.transform, "frame/topPart/stateRoot/getReawardBtn/Text"):GetComponent("Text")
end
function VipPanelV2:BindEvent()
--帮助按钮
Util.AddClick(this.helpBtn, function()
UIManager.OpenPanel(UIName.HelpPopup, HELP_TYPE.VIP, this.helpPosition.x,this.helpPosition.y)
end)
Util.AddClick(self.BtnBack, function()
PlaySoundWithoutClick(SoundConfig.Sound_UICancel)
self:ClosePanel()
end)
Util.AddClick(self.BtnLeft, function()
self:OnTurnLeftBtnClicked()
end)
Util.AddClick(self.BtnRight, function()
self:OnTurnRightBtnClicked()
end)
Util.AddClick(self.BtnReceive, function()
self:OnReceiveBtnClicked()
end)
Util.AddClick(self.btnLvUp, function()
self:OnBtnLvUpClicked()
end)
Util.AddClick(self.getReawardBtn, function()
self:OnGetReawardBtnClicked(self.curShowLevel)
end)
end
function VipPanelV2:OnVipTaskStatusChanged(taskId)
self:OnTaskStatusChanged(taskId)
end
function VipPanelV2:OnVipDailyRewardStatusChanged(taskId)
self:OnShow()
end
function VipPanelV2:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.Vip.OnVipTaskStatusChanged, self.OnVipTaskStatusChanged, self)
Game.GlobalEvent:AddEvent(GameEvent.Vip.OnVipDailyRewardStatusChanged, self.OnVipDailyRewardStatusChanged, self)
Game.GlobalEvent:AddEvent(GameEvent.CloseUI.OnClose,self.OnVipDailyRewardStatusChanged, self)
end
function VipPanelV2:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.Vip.OnVipTaskStatusChanged, self.OnVipTaskStatusChanged, self)
Game.GlobalEvent:RemoveEvent(GameEvent.Vip.OnVipDailyRewardStatusChanged, self.OnVipDailyRewardStatusChanged, self)
Game.GlobalEvent:RemoveEvent(GameEvent.CloseUI.OnClose,self.OnVipDailyRewardStatusChanged, self)
end
--待功能扩展(试图打开某个状态)
function VipPanelV2:OnOpen()
this.UpView:OnOpen({ showType = UpViewOpenType.ShowRight, panelType = PanelType.Main })
-- this.BtView:OnOpen({ sortOrder = self.sortingOrder, panelType = PanelTypeView.TeQuan })
end
function VipPanelV2:OnSortingOrderChange()
Util.AddParticleSortLayer(self.effect, self.sortingOrder - orginLayer)
orginLayer = self.sortingOrder
-- 头像层级
-- if this.playerHead then
-- this.playerHead:SetLayer(self.sortingOrder)
-- end
if this.playerInfoView then
this.playerInfoView:SetLayer(self.sortingOrder)
end
end
function VipPanelV2:OnShow()
self:InitVipContext()
self:SetPanelStatus()
-- 刷新一次编队战斗力
FormationManager.RefreshMainFormationPower()
end
function VipPanelV2:OnClose()
if self.priThread then
coroutine.stop(self.priThread)
self.priThread = nil
end
if self.taskThread then
coroutine.stop(self.taskThread)
self.taskThread = nil
end
end
function VipPanelV2:OnDestroy()
this.spLoader:Destroy()
SubUIManager.Close(this.UpView)
-- SubUIManager.Close(this.BtView)
-- SubUIManager.Close(this.playerHead)
-- this.playerHead = nil
this.UpView = nil
-- this.BtView = nil
if this.playerInfoView then
SubUIManager.Close(this.playerInfoView)
this.playerInfoView = nil
end
allRewardItemPres = {}
end
function VipPanelV2:InitVipContext()
self.context = {}
self.context.UserMissionInfo = TaskManager.GetTypeTaskList(TaskTypeDef.VipTask)
self.context.vipLevel = VipManager.GetVipLevel()
end
function VipPanelV2:SetPanelStatus()
local maxLv = VipManager.GetMaxVipLevel()
self.curLevel.sprite = this.spLoader:LoadSprite("r_zjm_tequanpaizi_0" .. self.context.vipLevel.."_zh")
-- 显示的
self.curShowLevel = VipManager.GetCurMinCanGetRewardLevel()--math.min(self.context.vipLevel + 1, maxLv)
self:RefreshPanelStatus(self.curShowLevel)
self:CheckTaskShow()
self.BtnLeft:SetActive(self.curShowLevel > 1)
self.BtnRight:SetActive(self.curShowLevel ~= maxLv)
end
-- 检测任务显示
function VipPanelV2:CheckTaskShow()
if self.context.vipLevel == VipManager.GetMaxVipLevel() then
self.taskList:SetActive(false)
self.btnLvUp:SetActive(false)
self.maxLv:SetActive(true)
else
self.maxLv:SetActive(false)
local isfinish = true
local taskListInfo = self.context.UserMissionInfo
for i = 1, #taskListInfo do
if taskListInfo[i].state ~= VipTaskStatusDef.Received then
isfinish = false
end
end
self.taskList:SetActive(not isfinish)
self.btnLvUp:SetActive(isfinish)
if not isfinish then
self:SetVipTaskList(self.context.vipLevel)
end
end
end
function VipPanelV2:SetProgressShow(level)
local taskLevel = level - 1
if taskLevel < self.context.vipLevel then
self.progressBar.value = 1
self.progressText.text = "4/4"
elseif taskLevel > self.context.vipLevel then
self.progressBar.value = 0
self.progressText.text = "0/4"
else
local taskFinishNum = 0
local taskListInfo = self.context.UserMissionInfo
for i = 1, #taskListInfo do
if taskListInfo[i].state == VipTaskStatusDef.Received then
taskFinishNum = taskFinishNum + 1
end
end
self.progressBar.value = taskFinishNum / #taskListInfo
self.progressText.text = string.format("%d/%d", taskFinishNum, #taskListInfo)
end
end
function VipPanelV2:SetRewardList(level)
local VipLvConfig = ConfigManager.GetConfigData(ConfigName.VipLevelConfig, level)
local configData = VipLvConfig.Property
table.walk(self.giftItemList, function(giftItem)
giftItem:SetActive(false)
end)
for idx, dataInfo in ipairs(configData) do
local id = dataInfo[1]
local num = dataInfo[2]
if num ~= 0 then
self.giftItemList[idx]:SetActive(true)
local propInfo = ConfigManager.GetConfigData(ConfigName.PropertyConfig, id)
if propInfo.Style == 1 then
self.giftItemList[idx]:GetComponent("Text").text = string.format(Language[11955], GetLanguageStrById(propInfo.Info))
Util.GetGameObject(self.giftItemList[idx], "value"):GetComponent("Text").text = "+"..num
elseif propInfo.Style == 2 then
self.giftItemList[idx]:GetComponent("Text").text = GetLanguageStrById(propInfo.Info)
Util.GetGameObject(self.giftItemList[idx], "value"):GetComponent("Text").text = string.format("+%d%%", num/100)
end
end
end
end
--特权增益描述
function VipPanelV2:SetVipPrivileges(curVipLevel)
if self.priThread then
coroutine.stop(self.priThread)
self.priThread = nil
end
table.walk(self.privilegeList, function(privilegeItem)
privilegeItem:SetActive(false)
end)
local curVipData = PrivilegeManager.GetTipsByVipLv(curVipLevel)
local tempNumber = 0
self.priThread = coroutine.start(function()
for _, privilegeInfo in ipairs(curVipData) do
if privilegeInfo.value == ""
or (privilegeInfo.IfFloat == 1 and privilegeInfo.value > 0)
or (privilegeInfo.IfFloat == 2 and privilegeInfo.value > 1)
then
tempNumber = tempNumber + 1
local item = self:GetPrivilegeItem(tempNumber)
item:SetActive(false)
-- local str = "<size=45><color=#7bb15bFF> </color></size>"
-- str = string.format("<size=45><color=#7bb15bFF>%s</color></size>", privilegeInfo.value)
local colorStr = "<color=#7AB159><size=35>%s</size></color>"
local formatStr
if privilegeInfo.IfFloat == 2 then --特权关卡挂机加成百分比
formatStr = string.format(colorStr, (privilegeInfo.value*100-100).."%")
else
formatStr = string.format(colorStr, privilegeInfo.value)
end
local title = Util.GetGameObject(item, "content/title"):GetComponent("Text")
--
if privilegeInfo.id == PRIVILEGE_TYPE.HANG_ON_TIME then
-- 挂机时长特权特殊显示处理
title.text = string.format(privilegeInfo.content, string.format(colorStr, privilegeInfo.value + GameSetting[1].AdventureOffline), formatStr)
else
title.text = string.format(privilegeInfo.content, formatStr)
end
--PlayUIAnim(item)
coroutine.wait(0.03)
--加成为0就别丢人现眼了
if privilegeInfo.value == 0 then
-- if privilegeInfo.id==1 and (privilegeInfo.value*100-100)==0 then
item:SetActive(false)
else
item:SetActive(true)
end
end
end
end)
end
function VipPanelV2:SetExtraPrivilege(index, configData)
local item = self:GetPrivilegeItem(index)
item.gameObject:SetActive(true)
local str = Language[10105]
for _, rewardInfo in ipairs(configData.VipBoxDailyReward) do
local itemConfig = ConfigManager.GetConfigData(ConfigName.ItemConfig, rewardInfo[1])
assert(itemConfig, string.format("ConfigName.ItemConfig not find Id:%s", rewardInfo[1]))
str = str .. string.format("%s<size=45><color=#7bb15bFF>%s</color></size>", GetLanguageStrById(itemConfig.Name), rewardInfo[2])
end
Util.GetGameObject(item, "title"):GetComponent("Text").text = str
end
function VipPanelV2:GetPrivilegeItem(index)
if self.privilegeList[index] then
return self.privilegeList[index]
else
local newItem = newObjToParent(self.privilegeItem, self.privilegeContent)
table.insert(self.privilegeList, newItem)
return newItem
end
end
--设置特权任务
function VipPanelV2:SetVipTaskList(level)
local configData = ConfigManager.GetConfigData(ConfigName.VipLevelConfig, level)
table.walk(self.taskItemList, function(taskItem)
taskItem.gameObject:SetActive(false)
end)
-- if level < self.context.vipLevel then
-- for i, taskId in ipairs(configData.OpenRules) do
-- -- self.taskItemList[i]:Init(taskId)
-- -- local taskConfigInfo = ConfigManager.GetConfigData(ConfigName.TaskConfig, taskId)
-- -- self.taskItemList[i]:SetValue({state = VipTaskStatusDef.Received, progress = taskConfigInfo.TaskValue[2][1]})
-- end
-- self:SetTaskAnimation(#configData.OpenRules)
-- elseif level > self.context.vipLevel then
-- for i, taskId in ipairs(configData.OpenRules) do
-- -- self.taskItemList[i]:Init(taskId)
-- -- self.taskItemList[i]:SetValue({state = VipTaskStatusDef.NotFinished, progress = 0})
-- end
-- self:SetTaskAnimation(#configData.OpenRules)
-- else
if level == self.context.vipLevel then--好像一定走这里
if #self.context.UserMissionInfo == 0 then
return
end
for i, taskInfo in ipairs(self.context.UserMissionInfo) do
-- self.taskItemList[i]:Init(taskInfo.missionId)
-- self.taskItemList[i]:SetValue(taskInfo)
self:showSingleTask(self.taskItemList[i],taskInfo)
end
self:SetTaskAnimation(#self.context.UserMissionInfo)
end
end
--单个初始化任务
function VipPanelV2:showSingleTask(item,taskInfo)
--creat
local itemPos = Util.GetGameObject(item, "content/itemPos")
local giftInfo = SubUIManager.Open(SubUIConfig.ItemView, itemPos.transform)
local desc = Util.GetGameObject(item, "content/desc"):GetComponent("Text")
local progressBar = Util.GetGameObject(item, "content/progressBar"):GetComponent("Slider")
local progressValue = Util.GetGameObject(item, "content/dealBtn/value"):GetComponent("Text")
local dealBtn = Util.GetGameObject(item, "content/dealBtn")
local finishFlag = Util.GetGameObject(item, "content/finished")
local redPoint = Util.GetGameObject(item,"content/redPoint")
--init
local data = nil
local taskConfigInfo = ConfigManager.GetConfigData(ConfigName.TaskConfig, taskInfo.missionId)
giftInfo:OnOpen(false, taskConfigInfo.Reward[1], 0.8)
desc.text = GetLanguageStrById(taskConfigInfo.Desc)
progressBar.value = 0
progressValue.text = "0/" .. taskConfigInfo.TaskValue[2][1]
dealBtn:SetActive(false)
finishFlag:SetActive(false)
redPoint:SetActive(false)
--setvalue
data = taskInfo
progressBar.value = taskInfo.progress / taskConfigInfo.TaskValue[2][1]
progressValue.text = string.format("%s/%s", taskInfo.progress, taskConfigInfo.TaskValue[2][1])
dealBtn:SetActive(taskInfo.state == VipTaskStatusDef.NotFinished or taskInfo.state == VipTaskStatusDef.CanReceive)
if dealBtn.activeSelf then
dealBtn:GetComponent("Image").sprite = this.spLoader:LoadSprite(TaskGetBtnIconDef[taskInfo.state])
end
finishFlag:SetActive(taskInfo.state == VipTaskStatusDef.Received)
redPoint:SetActive(taskInfo.state == VipTaskStatusDef.CanReceive)
Util.AddOnceClick(dealBtn,function ()
if data.state == VipTaskStatusDef.NotFinished then
JumpManager.GoJump(taskConfigInfo.Jump[1])
else
NetManager.TakeMissionRewardRequest(TaskTypeDef.VipTask, taskConfigInfo.Id, function(respond)
UIManager.OpenPanel(UIName.RewardItemPopup, respond.drop, 1)
TaskManager.SetTypeTaskState(TaskTypeDef.VipTask, taskConfigInfo.Id, VipTaskStatusDef.Received)
Game.GlobalEvent:DispatchEvent(GameEvent.Vip.OnVipTaskStatusChanged, taskConfigInfo.Id)
self:SetPanelStatus()
end)
end
end)
end
function VipPanelV2:SetTaskAnimation(length)
if self.taskThread then
coroutine.stop(self.taskThread)
self.taskThread = nil
end
self.taskThread = coroutine.start(function()
for i = 1, length do
self.taskItemList[i].gameObject:SetActive(false)
PlayUIAnim(Util.GetGameObject(self.taskItemList[i], "content"))
coroutine.wait(0.05)
self.taskItemList[i].gameObject:SetActive(true)
-- coroutine.wait(0.05)
end
end)
end
function VipPanelV2:OnTurnLeftBtnClicked()
-- self:SwitchState(self:GetCurrentStatus(self.context.UserMissionInfo))
if self.curShowLevel <= 1 then
return
end
self.curShowLevel = self.curShowLevel - 1
self:RefreshPanelStatus(self.curShowLevel)
self.BtnLeft:SetActive(self.curShowLevel > 1)
self.BtnRight:SetActive(self.curShowLevel ~= VipManager.GetMaxVipLevel())
end
function VipPanelV2:OnTurnRightBtnClicked()
-- self:SwitchState(VipShowStatusDef.Preview)
if self.curShowLevel >= VipManager.GetMaxVipLevel() then
return
end
self.curShowLevel = self.curShowLevel + 1
self:RefreshPanelStatus(self.curShowLevel)
self.BtnLeft:SetActive(self.curShowLevel > 1)
self.BtnRight:SetActive(self.curShowLevel ~= VipManager.GetMaxVipLevel())
end
function VipPanelV2:OnBtnLvUpClicked()
local oldPowerNum = FormationManager.GetFormationPower(FormationTypeDef.FORMATION_NORMAL)
NetManager.RequestVipLevelUp(function(respond)
-- VipManager.SetLevleRewardDatas(self.curShowLevel,1)
self:OnShow()
SoundManager.PlaySound(SoundConfig.Sound_VipUpLevel)
--设置战斗力脏数据
HeroPropManager.SetFuncPropDirty(Func_Prop_Type.Vip)
end)
end
--刷新界面
function VipPanelV2:RefreshPanelStatus(level)
self:SetProgressShow(level)
self.currentLvNum.text = level
self:SetVipPrivileges(level)
self:SetRewardList(level)
self:ShowRewardInfo(level)
end
--特权任务发生变化
function VipPanelV2:OnTaskStatusChanged(taskId)
for i = 1, #self.context.UserMissionInfo do
local taskInfo = self.context.UserMissionInfo[i]
if taskInfo.missionId == taskId then
taskInfo.state = VipTaskStatusDef.Received
-- self.taskItemList[i]:SetValue(taskInfo)
break
end
end
if self.curShowLevel - 1 == self.context.vipLevel then
self:SetProgressShow(self.curShowLevel)
end
local isfinish = true
local taskListInfo = self.context.UserMissionInfo
for i = 1, #taskListInfo do
if taskListInfo[i].state ~= VipTaskStatusDef.Received then
isfinish = false
end
end
if isfinish then
self:CheckTaskShow()
end
end
--跳转显示新手提示圈
function this.ShowGuideGo()
JumpManager.ShowGuide(UIName.VipPanelV2, this.taskItemList[1].dealBtn)
end
--修正因VIP字体导致等级数篡位
function this.CheckVipLvPos(tarObj,lv)
if lv>9 then
tarObj.transform:DOAnchorPosX(10,0)
else
tarObj.transform:DOAnchorPosX(0,0)
end
end
--奖励
function VipPanelV2:ShowRewardInfo(level)
local state = VipManager.GetLevleRewardDatas(level)--0 未领取 1 已领取
local vipCurLevel = VipManager.GetVipLevel()
self.getReawardBtnRedPoint:SetActive(false)
if state == 0 then
self.getReawardBtnText.text = Language[10018]
Util.SetGray(self.getReawardBtn, true)
elseif state == 1 then
self.getReawardBtnText.text = Language[10018]
Util.SetGray(self.getReawardBtn, false)
self.getReawardBtnRedPoint:SetActive(true)
elseif state == 2 then
self.getReawardBtnText.text = Language[10101]
Util.SetGray(self.getReawardBtn, false)
end
local curConfig = ConfigManager.GetConfigData(ConfigName.VipLevelConfig, level)
local reward = curConfig.Reward
if reward then
for i = 1, math.max(#allRewardItemPres, #reward) do
local go = allRewardItemPres[i]
if not go then
go = SubUIManager.Open(SubUIConfig.ItemView, self.allRewardItemParent.transform)
go.gameObject.name = "frame"..i
allRewardItemPres[i] = go
end
go.gameObject:SetActive(false)
end
for i = 1, #reward do
allRewardItemPres[i].gameObject:SetActive(true)
allRewardItemPres[i]:OnOpen(false,reward[i],0.9)
end
end
end
function VipPanelV2:OnGetReawardBtnClicked(level)
local state = VipManager.GetLevleRewardDatas(level)--0 不可领取 1 可领取 2已领取
local vipCurLevel = VipManager.GetVipLevel()
LogYellow("state "..state)
if state == 0 then
PopupTipPanel.ShowTip(string.format( "特权%s级后可领取",level))
elseif state == 1 then
NetManager.VipLevelStateRewardRequset(level,function(msg)
VipManager.SetLevleRewardDatas(level,2)
UIManager.OpenPanel(UIName.RewardItemPopup,msg.drop,1,function()
VipPanelV2:ShowRewardInfo(level)
CheckRedPointStatus(RedPointType.VipPrivilege)
end)
end)
elseif state == 2 then
PopupTipPanel.ShowTip(Language[10101])
end
end
return VipPanelV2