112 lines
4.2 KiB
Lua
112 lines
4.2 KiB
Lua
---@class WB_BroadcastItem_C:UUserWidget
|
|
---@field Show UWidgetAnimation
|
|
---@field Image_Frame UImage
|
|
---@field Image_WeaponIcon_BroadcastData2 UImage
|
|
---@field TextBlock_BroadcastData2_1 UTextBlock
|
|
---@field TextBlock_BroadcastData2_2 UTextBlock
|
|
---@field WidgetSwitcher_IsSelf UWidgetSwitcher
|
|
---@field WidgetSwitcher_Weapon UWidgetSwitcher
|
|
---@field Tex_BGWrite UTexture2D
|
|
--Edit Below--
|
|
---@type WB_BroadcastItem_C
|
|
local WB_BroadcastItem = { bInitDoOnce = false; };
|
|
|
|
WB_BroadcastItem.AnimationTime = 0.6;
|
|
WB_BroadcastItem.Constructed = false;
|
|
WB_BroadcastItem.ConstructCanInit = false;
|
|
WB_BroadcastItem.AnimPlaybackSpeed = 1.5;
|
|
WB_BroadcastItem.BroadcastTime = 3.5;
|
|
|
|
function WB_BroadcastItem:Construct()
|
|
WB_BroadcastItem.SuperClass.Construct(self);
|
|
end
|
|
|
|
function WB_BroadcastItem:ShowBroadcast()
|
|
self:PlayAnimation(self.Show, 0, 1, EUMGSequencePlayMode.Forward, self.AnimPlaybackSpeed);
|
|
-- 播放关闭动画
|
|
UGCEventSystem.SetTimer(self, function()
|
|
self:PlayAnimation(self.Show, 0, 1, EUMGSequencePlayMode.Reverse, self.AnimPlaybackSpeed);
|
|
end, self.BroadcastTime - self.AnimationTime / self.AnimPlaybackSpeed);
|
|
-- 延迟销毁
|
|
UGCEventSystem.SetTimer(self, function()
|
|
self:RemoveFromParent();
|
|
end, self.BroadcastTime);
|
|
end
|
|
|
|
-- 初始化
|
|
function WB_BroadcastItem:InitBroadcast(VictimKey, CauserKey, WeaponID, DamageType, IsHeadShotDamage, Distance, DamageValue)
|
|
self:ShowBroadcast();
|
|
|
|
UGCLogSystem.Log("[WB_BroadcastItem_InitBroadcast] DamageType:%s", tostring(DamageType))
|
|
-- UGCLogSystem.LogTree("[WB_BroadcastItem_InitBroadcast] EDamageType:", EDamageType)
|
|
|
|
local KillerTeam = UGCGameSystem.GameState:GetPlayerTeamIDByPlayerKey(CauserKey)
|
|
local DeadTeam = UGCGameSystem.GameState:GetPlayerTeamIDByPlayerKey(VictimKey)
|
|
local KillerTeamColor = TeamConfig.TeamColor[KillerTeam]
|
|
local DeadTeamColor = TeamConfig.TeamColor[DeadTeam]
|
|
local KillerName = UGCGameSystem.GameState:GetPlayerNameByPlayerKey(CauserKey);
|
|
local DeadName = UGCGameSystem.GameState:GetPlayerNameByPlayerKey(VictimKey);
|
|
|
|
if KillerTeamColor then
|
|
self.TextBlock_BroadcastData2_1:SetColorAndOpacity({SpecifiedColor = KillerTeamColor, ColorUseRule = 0})
|
|
end
|
|
if DeadTeamColor then
|
|
self.TextBlock_BroadcastData2_2:SetColorAndOpacity({SpecifiedColor = DeadTeamColor, ColorUseRule = 0})
|
|
end
|
|
|
|
self.TextBlock_BroadcastData2_1:SetText(KillerName);
|
|
self.TextBlock_BroadcastData2_2:SetText(DeadName);
|
|
|
|
if WeaponID > 0 then
|
|
self.WidgetSwitcher_Weapon:SetActiveWidgetIndex(0);
|
|
local WeaponIcon;
|
|
local IsBigIcon = ItemTable.AllItem[WeaponID].BigPic ~= nil;
|
|
|
|
if IsBigIcon then
|
|
WeaponIcon = UGCSystemLibrary.LoadAsset(ItemTable.AllItem[WeaponID].BigPic, true);
|
|
else
|
|
WeaponIcon = UGCSystemLibrary.LoadAsset(ItemTable.AllItem[WeaponID].SmallPic, true);
|
|
end
|
|
|
|
if UE.IsValid(WeaponIcon) then
|
|
--- 使用材质 设置武器剪影
|
|
local Material = self.Image_WeaponIcon_BroadcastData2:GetDynamicMaterial();
|
|
if Material ~= nil then
|
|
Material:SetTextureParameterValue("MaskTexture", WeaponIcon);
|
|
Material:SetTextureParameterValue("Texture", self.Tex_BGWrite);
|
|
Material:SetScalarParameterValue("Alpha", 1.0);
|
|
Material:SetScalarParameterValue("Rotator", 0.0);
|
|
end
|
|
|
|
-- Small尺寸Icon单独判断
|
|
if not IsBigIcon then
|
|
self.Image_WeaponIcon_BroadcastData2:SetRenderScale({ X = -0.5, Y = 1 });
|
|
end
|
|
else
|
|
UGCLogSystem.LogError("[W_Broadcast_Item:InitBroadcast] WeaponIcon is nil");
|
|
end
|
|
elseif KillerName == "" then
|
|
self.WidgetSwitcher_Weapon:SetActiveWidgetIndex(2);
|
|
-- elseif DamageType >= MechanismConfig.TriggerMechanismType.MechanismWeapon then
|
|
elseif DamageType == EDamageType.UGCPointDamage then
|
|
self.WidgetSwitcher_Weapon:SetActiveWidgetIndex(3);
|
|
else
|
|
self.WidgetSwitcher_Weapon:SetActiveWidgetIndex(1);
|
|
end
|
|
|
|
--- 为自己所杀
|
|
if CauserKey == UGCSystemLibrary.GetLocalPlayerKey() then
|
|
-- self.Image_Frame:SetVisibility(ESlateVisibility.Visible);
|
|
self.WidgetSwitcher_IsSelf:SetActiveWidgetIndex(1)
|
|
-- 判断近战击杀
|
|
if UGCSystemLibrary.GetItemTypeID(WeaponID) == 108 then
|
|
SoundSystem.PlaySound(SoundSystem.ESound.Kill2);
|
|
elseif DamageType == EDamageType.UGCPointDamage then
|
|
SoundSystem.PlaySound(SoundSystem.ESound.MechanismKill);
|
|
else
|
|
SoundSystem.PlaySound(SoundSystem.ESound.Kill3);
|
|
end
|
|
end
|
|
end
|
|
|
|
return WB_BroadcastItem; |