244 lines
9.2 KiB
Lua
244 lines
9.2 KiB
Lua
|
TipConfig = TipConfig or {}
|
|||
|
|
|||
|
TipConfig.TipStyleType = {
|
|||
|
Tip1 = 1;
|
|||
|
Tip2 = 2;
|
|||
|
Tip3 = 3;
|
|||
|
Tip4 = 4;
|
|||
|
Tip5 = 4;
|
|||
|
Tip6 = 5;
|
|||
|
|
|||
|
|
|||
|
FrontSightTip = 20;
|
|||
|
|
|||
|
TipLike = 100;
|
|||
|
TipGodOfWarCome = 101;
|
|||
|
TipKillingGod = 102;
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
TipConfig.TipStylePath = {
|
|||
|
[TipConfig.TipStyleType.Tip1] = UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/Tip/WB_Tip.WB_Tip_C'),
|
|||
|
[TipConfig.TipStyleType.Tip2] = UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/Tip/WB_Tip_2.WB_Tip_2_C'),
|
|||
|
[TipConfig.TipStyleType.Tip3] = UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/Tip/WB_Tip_3.WB_Tip_3_C'),
|
|||
|
[TipConfig.TipStyleType.Tip4] = UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/Tip/WB_Tip_4.WB_Tip_4_C'),
|
|||
|
[TipConfig.TipStyleType.Tip5] = UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/Tip/WB_Tip_5.WB_Tip_5_C'),
|
|||
|
[TipConfig.TipStyleType.Tip6] = UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/Tip/WB_Tip_6.WB_Tip_6_C'),
|
|||
|
|
|||
|
[TipConfig.TipStyleType.FrontSightTip] = UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/Tip/WB_FrontSightTip.WB_FrontSightTip_C'),
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
[TipConfig.TipStyleType.TipLike] = UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/Tip/WB_Tip_Like.WB_Tip_Like_C'),
|
|||
|
[TipConfig.TipStyleType.TipGodOfWarCome] = UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/Tip/WB_GodOfWarCome.WB_GodOfWarCome_C'),
|
|||
|
[TipConfig.TipStyleType.TipKillingGod] = UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/Tip/WB_KillingGod.WB_KillingGod_C'),
|
|||
|
}
|
|||
|
|
|||
|
TipConfig.TipType = {
|
|||
|
GameWillStart = 1,
|
|||
|
ImportCodeCallBack = 2;
|
|||
|
AddScore = 3;
|
|||
|
OneMinuteRemaining = 4,
|
|||
|
|
|||
|
IncrementSucceed = 5; -- 增量成功
|
|||
|
UnlockSucceed = 6; -- 解锁成功
|
|||
|
ConsumablesInsufficient = 7; -- 消耗品不足
|
|||
|
PlaceFailure = 8; -- 放置失败
|
|||
|
NeedUnlock = 9;
|
|||
|
ExchangeSucceed = 10; -- 兑换成功
|
|||
|
CollectionSuccessful = 11; -- 收藏成功
|
|||
|
PlayerBreakthrough = 12; -- 玩家突破
|
|||
|
|
|||
|
|
|||
|
PlayerLike = 100; -- 玩家点赞
|
|||
|
GodOfWarCome = 101; -- 战神降临
|
|||
|
KillingGod = 102;-- 诛神
|
|||
|
|
|||
|
BeFatedNotToDieOwner = 200; -- 命不该绝触发者
|
|||
|
BeFatedNotToDieCauser = 201; -- 命不该绝伤害者
|
|||
|
|
|||
|
ChallengerPlayer = 301; -- 选中的挑战者
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
TipConfig.TipInfo = {
|
|||
|
[TipConfig.TipType.GameWillStart] = {
|
|||
|
Text = "游戏即将开始",
|
|||
|
Style = TipConfig.TipStyleType.Tip1,
|
|||
|
},
|
|||
|
|
|||
|
|
|||
|
|
|||
|
[TipConfig.TipType.ImportCodeCallBack] = {
|
|||
|
Text = function(DecodeCallBackType)
|
|||
|
if DecodeCallBackType == PlacementModeConfig.EPlaceDecodeCallback.Succeed then
|
|||
|
SoundSystem.PlaySound(SoundSystem.ESound.Btn)
|
|||
|
return "导入成功"
|
|||
|
else
|
|||
|
SoundSystem.PlaySound(SoundSystem.ESound.Error)
|
|||
|
return "代码错误 code:" .. tostring(DecodeCallBackType)
|
|||
|
end
|
|||
|
|
|||
|
end,
|
|||
|
Style = TipConfig.TipStyleType.Tip3,
|
|||
|
},
|
|||
|
[TipConfig.TipType.AddScore] = {
|
|||
|
Text = function(AddScoreType)
|
|||
|
-- 得分音效
|
|||
|
PlacementModeConfig.AddScoreSound = {
|
|||
|
[PlacementModeConfig.AddScoreType.KillAddScore] = SoundSystem.ESound.Kill3;
|
|||
|
[PlacementModeConfig.AddScoreType.AssistAddScore] = SoundSystem.ESound.Kill;
|
|||
|
[PlacementModeConfig.AddScoreType.DefendSucceedAddScore] = SoundSystem.ESound.PickUpBuff;
|
|||
|
[PlacementModeConfig.AddScoreType.EnterDefenseLineAddScore] = SoundSystem.ESound.IsReady;
|
|||
|
}
|
|||
|
SoundSystem.PlaySound(PlacementModeConfig.AddScoreSound[AddScoreType])
|
|||
|
return tostring(PlacementModeConfig.AddScoreName[AddScoreType]) .. " +" .. tostring(PlacementModeConfig.ScoreVal[AddScoreType])
|
|||
|
end,
|
|||
|
Style = TipConfig.TipStyleType.Tip5,
|
|||
|
},
|
|||
|
[TipConfig.TipType.OneMinuteRemaining] = {
|
|||
|
Text = "游戏剩余1分钟",
|
|||
|
Style = TipConfig.TipStyleType.Tip1,
|
|||
|
},
|
|||
|
[TipConfig.TipType.IncrementSucceed] = {
|
|||
|
Text = "上限增加成功",
|
|||
|
Style = TipConfig.TipStyleType.Tip5,
|
|||
|
SoundInfo = { SoundType = SoundSystem.ESound.KillFX, DelayActive = 0.2}
|
|||
|
},
|
|||
|
[TipConfig.TipType.UnlockSucceed] = {
|
|||
|
Text = "解锁成功",
|
|||
|
Style = TipConfig.TipStyleType.Tip5,
|
|||
|
SoundInfo = { SoundType = SoundSystem.ESound.KillFX, DelayActive = 0.2}
|
|||
|
},
|
|||
|
[TipConfig.TipType.ConsumablesInsufficient] = {
|
|||
|
Text = function(UnlockType)
|
|||
|
local ConsumablesName = PlacementModeConfig.UnlockName[UnlockType]
|
|||
|
if ConsumablesName then
|
|||
|
return ConsumablesName .. "不足"
|
|||
|
else
|
|||
|
return "消耗品不足"
|
|||
|
end
|
|||
|
end,
|
|||
|
Style = TipConfig.TipStyleType.Tip3,
|
|||
|
SoundInfo = { SoundType = SoundSystem.ESound.Error, DelayActive = 0.2}
|
|||
|
},
|
|||
|
[TipConfig.TipType.PlaceFailure] = {
|
|||
|
Text = function(PlaceCallbackType)
|
|||
|
local PlaceFailureName = PlacementModeConfig.PlaceCallbackName[PlaceCallbackType]
|
|||
|
if PlaceFailureName then
|
|||
|
return PlaceFailureName
|
|||
|
else
|
|||
|
return "放置失败"
|
|||
|
end
|
|||
|
end,
|
|||
|
Style = TipConfig.TipStyleType.Tip3,
|
|||
|
SoundInfo = { SoundType = SoundSystem.ESound.Error, DelayActive = 0.2}
|
|||
|
},
|
|||
|
[TipConfig.TipType.NeedUnlock] = {
|
|||
|
Text = "请先解锁",
|
|||
|
Style = TipConfig.TipStyleType.Tip3,
|
|||
|
SoundInfo = { SoundType = SoundSystem.ESound.Error, DelayActive = 0.2}
|
|||
|
},
|
|||
|
[TipConfig.TipType.ExchangeSucceed] = {
|
|||
|
Text = "兑换成功",
|
|||
|
Style = TipConfig.TipStyleType.Tip5,
|
|||
|
SoundInfo = { SoundType = SoundSystem.ESound.KillFX, DelayActive = 0.2}
|
|||
|
},
|
|||
|
[TipConfig.TipType.CollectionSuccessful] = {
|
|||
|
Text = "收藏成功",
|
|||
|
Style = TipConfig.TipStyleType.Tip3,
|
|||
|
-- SoundInfo = { SoundType = SoundSystem.ESound.KillFX, DelayActive = 0.2}
|
|||
|
},
|
|||
|
[TipConfig.TipType.PlayerBreakthrough] = {
|
|||
|
Text = function(PlayerKey)
|
|||
|
return tostring(UGCGameSystem.GameState:GetPlayerNameByPlayerKey(PlayerKey)) .. "成功突破"
|
|||
|
end,
|
|||
|
Style = TipConfig.TipStyleType.Tip6,
|
|||
|
-- SoundInfo = { SoundType = SoundSystem.ESound.KillFX, DelayActive = 0.2}
|
|||
|
},
|
|||
|
|
|||
|
[TipConfig.TipType.PlayerLike] = {
|
|||
|
Text = "",
|
|||
|
Style = TipConfig.TipStyleType.TipLike,
|
|||
|
},
|
|||
|
[TipConfig.TipType.GodOfWarCome] = {
|
|||
|
Text = function(InPlayerKey)
|
|||
|
local PlayerName = UGCGameSystem.GameState:GetPlayerNameByPlayerKey(InPlayerKey);
|
|||
|
return PlayerName
|
|||
|
end,
|
|||
|
Style = TipConfig.TipStyleType.TipGodOfWarCome,
|
|||
|
},
|
|||
|
[TipConfig.TipType.KillingGod] = {
|
|||
|
Text = function(InPlayerKey)
|
|||
|
local PlayerName = UGCGameSystem.GameState:GetPlayerNameByPlayerKey(InPlayerKey);
|
|||
|
return PlayerName
|
|||
|
end,
|
|||
|
Style = TipConfig.TipStyleType.TipKillingGod,
|
|||
|
},
|
|||
|
|
|||
|
[TipConfig.TipType.BeFatedNotToDieOwner] = {
|
|||
|
Text = function (UseCount)
|
|||
|
return "命不该绝 × " .. UseCount
|
|||
|
end,
|
|||
|
Style = TipConfig.TipStyleType.Tip5,
|
|||
|
SoundInfo = { SoundType = SoundSystem.ESound.KillFX, DelayActive = 0.2}
|
|||
|
},
|
|||
|
[TipConfig.TipType.BeFatedNotToDieCauser] = {
|
|||
|
Text = "命不该绝",
|
|||
|
Style = TipConfig.TipStyleType.FrontSightTip,
|
|||
|
-- SoundInfo = { SoundType = SoundSystem.ESound.KillFX, DelayActive = 0.2}
|
|||
|
},
|
|||
|
|
|||
|
[TipConfig.TipType.ChallengerPlayer] = {
|
|||
|
Text = function(InPlayerKey)
|
|||
|
local PlayerName = UGCGameSystem.GameState:GetPlayerNameByPlayerKey(InPlayerKey);
|
|||
|
return PlayerName .. "被选中为挑战者"
|
|||
|
end,
|
|||
|
Style = TipConfig.TipStyleType.Tip5,
|
|||
|
SoundInfo = { SoundType = SoundSystem.ESound.KillFX, DelayActive = 0.2}
|
|||
|
},
|
|||
|
}
|
|||
|
|
|||
|
-- TipConfig.TipStyleType = UUserWidget
|
|||
|
TipConfig.TipStyleInst = {}
|
|||
|
|
|||
|
--- 使用前需初始化
|
|||
|
function TipConfig.Init(Controller)
|
|||
|
if UE.IsValid(Controller) then
|
|||
|
for i, v in pairs(TipConfig.TipInfo) do
|
|||
|
if TipConfig.TipStyleInst[v.Style] == nil then
|
|||
|
TipConfig.TipStyleInst[v.Style] = UserWidget.NewWidgetObjectBP(Controller, UE.LoadClass(TipConfig.TipStylePath[v.Style]))
|
|||
|
TipConfig.TipStyleInst[v.Style]:AddToViewport(20000)
|
|||
|
end
|
|||
|
end
|
|||
|
else
|
|||
|
UGCLogSystem.LogError("[TipConfig_Init] Controller is not Valid")
|
|||
|
end
|
|||
|
UGCEventSystem.AddListener(EventEnum.AddTip, TipConfig.AddTip)
|
|||
|
end
|
|||
|
|
|||
|
---@param TipConfig.TipType
|
|||
|
function TipConfig.AddTip(InTipType, ...)
|
|||
|
local Info = TipConfig.TipInfo[InTipType]
|
|||
|
if Info then
|
|||
|
local TempWidgetInst = TipConfig.TipStyleInst[Info.Style]
|
|||
|
if Info.SoundInfo then
|
|||
|
UGCEventSystem.SetTimer(UGCGameSystem.GameState, function() SoundSystem.PlaySound(Info.SoundInfo.SoundType) end, Info.SoundInfo.DelayActive)
|
|||
|
end
|
|||
|
if TempWidgetInst then
|
|||
|
local TextType = type(Info.Text)
|
|||
|
if TextType == "string" then
|
|||
|
TempWidgetInst:AddTip(Info.Text)
|
|||
|
elseif TextType == "function" then
|
|||
|
TempWidgetInst:AddTip(Info.Text(...))
|
|||
|
else
|
|||
|
UGCLogSystem.LogError("[TipConfig_AddTip] 提示类型错误 TextType:%s", TextType)
|
|||
|
end
|
|||
|
else
|
|||
|
UGCLogSystem.LogError("[TipConfig_AddTip] 没有生成提示UI")
|
|||
|
end
|
|||
|
else
|
|||
|
UGCLogSystem.LogError("[TipConfig_AddTip] Info is nil. InTipType:%s", tostring(InTipType))
|
|||
|
end
|
|||
|
end
|