169 lines
5.4 KiB
Lua
169 lines
5.4 KiB
Lua
---@class WB_SelectSolider_Item_C:UUserWidget
|
|
---@field Button_Main UButton
|
|
---@field CanvasPanel_Lock UCanvasPanel
|
|
---@field Image_230 UImage
|
|
---@field Image_255 UImage
|
|
---@field Image_Gun1 UImage
|
|
---@field Image_Gun2 UImage
|
|
---@field Image_GunOnce UImage
|
|
---@field Image_Icon UImage
|
|
---@field Image_None UImage
|
|
---@field Image_Select UImage
|
|
---@field TextBlock_Desc UTextBlock
|
|
---@field TextBlock_Info UTextBlock
|
|
---@field TextBlock_Link UTextBlock
|
|
---@field TextBlock_Type UTextBlock
|
|
---@field WidgetSwitcher_Select UWidgetSwitcher
|
|
---@field WidgetSwitcher_WeaponType UWidgetSwitcher
|
|
--Edit Below--
|
|
---@type WB_SelectSolider_Item_C
|
|
local WB_SelectSolider_Item = { bInitDoOnce = false; };
|
|
|
|
WB_SelectSolider_Item.SoldierType = nil;
|
|
WB_SelectSolider_Item.ParentWidget = nil;
|
|
WB_SelectSolider_Item.ClickCb = nil;
|
|
WB_SelectSolider_Item.IsSubmitSelect = false;
|
|
|
|
WB_SelectSolider_Item.NoSelectColor = { R = 0.354167, G = 0.354167, B = 0.354167, A = 1};
|
|
WB_SelectSolider_Item.SelectColor = { R = 1, G = 1, B = 1, A = 1 };
|
|
|
|
function WB_SelectSolider_Item:Construct()
|
|
UGCEventSystem.AddListener(EventTypes.UpdatePlayerArchive, self.OnUpdatePlayerArchive, self)
|
|
self.Button_Main:SetTouchMethod(EButtonTouchMethod.PreciseTap);
|
|
UITool.BindButtonClicked(self.Button_Main, self.OnClickMain, self);
|
|
self:SetSelect(false)
|
|
end
|
|
|
|
function WB_SelectSolider_Item:OnClickMain()
|
|
-- 显示
|
|
self.ParentWidget:SetClickItemType(self, self.SoldierType);
|
|
SoundSystem.PlaySound(SoundSystem.ESound.Click);
|
|
end
|
|
|
|
-- function WB_SelectSolider_Item:Tick(MyGeometry, InDeltaTime)
|
|
|
|
-- end
|
|
|
|
-- function WB_SelectSolider_Item:Destruct()
|
|
|
|
-- end
|
|
|
|
---@param InWidget WB_SelectSoldier_C 其父类
|
|
---@param InFunc fun(InWidget:WB_SelectSolider_Item_C)
|
|
function WB_SelectSolider_Item:SetParentWidget(InWidget, InFunc)
|
|
self.ParentWidget = InWidget;
|
|
self.ClickCb = InFunc;
|
|
end
|
|
|
|
---@param IsSelect bool
|
|
function WB_SelectSolider_Item:SetSelect(IsSelect)
|
|
if IsSelect then
|
|
self.Image_Select:SetColorAndOpacity({SpecifiedColor = self.SelectColor, ColorUseRule = 0})
|
|
else
|
|
self.Image_Select:SetColorAndOpacity({SpecifiedColor = self.NoSelectColor, ColorUseRule = 0})
|
|
end
|
|
end
|
|
|
|
function WB_SelectSolider_Item:SetSoldierType(InType)
|
|
self.SoldierType = InType;
|
|
|
|
-- 加载对应东西
|
|
self.TextBlock_Type:SetText(SoldierConfig.Chinese[InType]);
|
|
self.TextBlock_Desc:SetText(SoldierConfig.Descs[InType]);
|
|
UE.AsyncLoadObject(SoldierConfig.SoldierIcon[InType], function(TargetObject)
|
|
self.Image_Icon:SetBrushFromTexture(TargetObject);
|
|
end);
|
|
|
|
if #SoldierConfig.WeaponLimits[InType] == 1 then
|
|
self.WidgetSwitcher_WeaponType:SetActiveWidgetIndex(0);
|
|
local WeaponTypeIcon = UGCSystemLibrary.LoadAsset(WeaponTypeInfo[SoldierConfig.WeaponLimits[InType][1]].Icon, true);
|
|
|
|
if WeaponTypeIcon then
|
|
local TempBrush = table.DeepCopy(self.Image_GunOnce.Brush);
|
|
TempBrush.ResourceObject = WeaponTypeIcon;
|
|
self.Image_GunOnce:SetBrush(TempBrush);
|
|
end
|
|
elseif #SoldierConfig.WeaponLimits[InType] > 1 then
|
|
self.WidgetSwitcher_WeaponType:SetActiveWidgetIndex(1);
|
|
local WeaponTypeIcon1 = UGCSystemLibrary.LoadAsset(WeaponTypeInfo[SoldierConfig.WeaponLimits[InType][1]].Icon, true);
|
|
local WeaponTypeIcon2 = UGCSystemLibrary.LoadAsset(WeaponTypeInfo[SoldierConfig.WeaponLimits[InType][2]].Icon, true);
|
|
if WeaponTypeIcon1 then
|
|
local TempBrush = table.DeepCopy(self.Image_Gun1.Brush);
|
|
TempBrush.ResourceObject = WeaponTypeIcon1;
|
|
self.Image_Gun1:SetBrush(TempBrush);
|
|
end
|
|
if WeaponTypeIcon2 then
|
|
local TempBrush = table.DeepCopy(self.Image_Gun2.Brush);
|
|
TempBrush.ResourceObject = WeaponTypeIcon2;
|
|
self.Image_Gun2:SetBrush(TempBrush);
|
|
end
|
|
end
|
|
|
|
-- 设置 是什么类型
|
|
if SoldierConfig.WeaponCount[InType] == 2 then
|
|
self.TextBlock_Link:SetText('and')
|
|
else
|
|
self.TextBlock_Link:SetText('or')
|
|
end
|
|
|
|
-- 设置描述
|
|
local SoldierDesc = SoldierConfig.SoldierDesc[InType];
|
|
self.TextBlock_Info:SetText(SoldierDesc);
|
|
end
|
|
|
|
--- 显示出来玩家是否解锁了当前选择兵种 Item
|
|
---@param InArchiveData ArchiveData
|
|
function WB_SelectSolider_Item:OnUpdatePlayerArchive(InArchiveData)
|
|
UGCLogSystem.LogTree("[WB_SelectSolider_Item:OnUpdatePlayerArchive] InArchiveData = ", InArchiveData);
|
|
if table.isEmpty(InArchiveData) then
|
|
return;
|
|
end
|
|
|
|
local UnLockTypes = InArchiveData.UnlockTypes
|
|
if table.isEmpty(UnLockTypes) then
|
|
self:SetShowLock(true);
|
|
return;
|
|
end
|
|
|
|
UGCLogSystem.Log("[WB_SelectSolider_Item:OnUpdatePlayerArchive] SoldierType = %s", tostring(self.SoldierType))
|
|
|
|
if UnLockTypes[self.SoldierType] then
|
|
self:SetShowLock(false);
|
|
return;
|
|
end
|
|
self:SetShowLock(true);
|
|
end
|
|
|
|
function WB_SelectSolider_Item:SetClickSelect(InSoldierType)
|
|
if not self.IsSubmitSelect then
|
|
if InSoldierType == self.SoldierType then
|
|
self.WidgetSwitcher_Select:SetActiveWidgetIndex(1);
|
|
else
|
|
self.WidgetSwitcher_Select:SetActiveWidgetIndex(0);
|
|
end
|
|
end
|
|
end
|
|
WB_SelectSolider_Item.bCanSelect = false;
|
|
function WB_SelectSolider_Item:SetShowLock(bShow)
|
|
self.bCanSelect = not bShow
|
|
--if bShow then
|
|
-- self.CanvasPanel_Lock:SetVisibility(ESlateVisibility.SelfHitTestInvisible);
|
|
--else
|
|
-- self.CanvasPanel_Lock:SetVisibility(ESlateVisibility.Collapsed);
|
|
--end
|
|
end
|
|
|
|
function WB_SelectSolider_Item:SetSubmitSelect(InSoldierType)
|
|
if InSoldierType == self.SoldierType then
|
|
self.IsSubmitSelect = true;
|
|
self.WidgetSwitcher_Select:SetActiveWidgetIndex(2);
|
|
else
|
|
self.WidgetSwitcher_Select:SetActiveWidgetIndex(0);
|
|
end
|
|
end
|
|
|
|
function WB_SelectSolider_Item:SetButtonEnable(IsSet)
|
|
self.Button_Main:SetIsEnabled(IsSet);
|
|
end
|
|
|
|
return WB_SelectSolider_Item; |