UIChat:剧情播放完后,增加好感度

This commit is contained in:
fatiao 2025-11-15 18:23:39 +08:00
parent 8dbdc986b7
commit 2fde32e789
8 changed files with 870 additions and 18 deletions

View File

@ -1,6 +1,7 @@
key,内容
key,Language
string,string
system,系统
player,玩家
actor_nvshen,女神
actor_weier,薇儿

1 key 内容
2 key Language
3 string string
4 system 系统
5 player 玩家
6 actor_nvshen 女神
7 actor_weier 薇儿

View File

@ -3057,7 +3057,7 @@ MonoBehaviour:
- UnityEngine.CanvasRenderer
- TMPro.TextMeshProUGUI
- UINode
values: 00000000
values: 00000100
depObjs:
- {fileID: 6104690864815887471}
activeType: 0
@ -15176,7 +15176,7 @@ MonoBehaviour:
m_Spacing: 0
m_ChildForceExpandWidth: 0
m_ChildForceExpandHeight: 0
m_ChildControlWidth: 1
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
@ -16764,10 +16764,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 2324144477772799280}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: -0.5}
m_SizeDelta: {x: -60, y: -13}
m_SizeDelta: {x: 830, y: 97}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &608316353303357202
CanvasRenderer:
@ -23234,7 +23234,7 @@ MonoBehaviour:
m_IgnoreLayout: 0
m_MinWidth: -1
m_MinHeight: -1
m_PreferredWidth: -1
m_PreferredWidth: 890
m_PreferredHeight: 120
m_FlexibleWidth: 1
m_FlexibleHeight: -1

File diff suppressed because it is too large Load Diff

View File

@ -592,7 +592,8 @@ local UIEventNames = {
EID_FRUIT_SETTLE = id(),
EID_DANMU_INPUT_NTF = id(),
EID_CHAT_STORY_REWARD = id()
EID_CHAT_STORY_REWARD = id(),
EID_CHAT_STORY_ADD_HEART_NTF = id()
}
return UIEventNames

View File

@ -46,6 +46,10 @@ function StoryData:GetStoryNpcDatas()
return self.data.storyNpcDatas
end
function StoryData:GetStoryNpcHeart(storyNpcId)
return self.data.storyNpcDatas[storyNpcId] or 0
end
function StoryData:CheckDataConditions(data)
local conditionResult = true
for k,v in pairs(data) do
@ -83,7 +87,12 @@ function StoryData:RegisterNetEvents()
end)
ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_ROLE_STORY_NPC_ACK, function(data)
if data.error == Enum.NetErrorCode.ERROR_OK then
local storyNpcId = data.story_npc_id.key
local preHeart = self.data.storyNpcDatas[storyNpcId] or 0
local heart = data.story_npc_id.value
local addHeart = heart - preHeart
self:RefreshStoryNpcData(data.story_npc_id)
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_CHAT_STORY_ADD_HEART_NTF, storyNpcId, heart, addHeart)
end
end)
ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_NEW_MAP_CARTOON_ACK, function(data)
@ -205,11 +214,13 @@ function StoryData:RecordGetReward(storyId, rewardId)
end
function StoryData:_Record(storyId, val)
LogError(debug.traceback("调用栈信息:"))
LogError("[_Record] storyId="..storyId.." val="..val)
self.data.storyDatas[storyId] = val
ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_ROLE_STORY_REQ, {story_id = {key = storyId, value = val or 0}})
end
function StoryData:AddHeart(storyId)
ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_ROLE_STORY_NPC_REQ, {story_npc_id = {key = storyId, value = 0}})
end
return StoryData
return StoryData

View File

@ -228,14 +228,15 @@ function UIChatCtr:SendStoryChat(storyId, performStoryCfgId)
else
-- 剧情全部结束了
LogError("剧情全部结束了 storyId="..storyId)
self:OnStoryChatFinish()
self:OnStoryChatFinish(storyId)
end
end
end
end
function UIChatCtr:OnStoryChatFinish()
function UIChatCtr:OnStoryChatFinish(lastStoryId)
ManagerContainer.DataMgr.StoryData:RecordStoryPlay(self.currStartStoryId)
ManagerContainer.DataMgr.StoryData:AddHeart(lastStoryId)
self.storyPlayFinishNtfFunc()
-- if self.currStartStoryId then
-- ManagerContainer.DataMgr.StoryData:Record(self.currStartStoryId, 1)
@ -418,14 +419,17 @@ function UIChatCtr:AddStoryChatDatas(storyPerformCfg)
message = {
message = I18N.T(storyPerformCfg.SpeakId),
sendTime64 = "1742893748043",
subType = self:CheckChatSubType(I18N.T(storyPerformCfg.SpeakId)),
subType = self:CheckChatSubType(I18N.T(storyPerformCfg.SpeakId), storyPerformCfg.LeftName),
used = false
}
})
end
end
function UIChatCtr:CheckChatSubType(contentStr)
function UIChatCtr:CheckChatSubType(contentStr, nickname)
if nickname == "system" then
return Enum.ChatSubType.Notify
end
local patterns = {
[Enum.ChatSubType.Gift] = "%[gift%-%d+%]",
[Enum.ChatSubType.Date] = "%[date%-%d+%]",

View File

@ -63,6 +63,11 @@ function UIChatView:AddEventListener()
table.insert(rewards,{cfgId = v.key, num = v.value})
end
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIPOPGot, {rewards = rewards})
self:RefreshChatLayer2(CONST_CHANNEL_STORY, self.currStoryData)
end)
ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.EID_CHAT_STORY_ADD_HEART_NTF, function(storyNpcId, heart, addHeart)
LogError("[EID_CHAT_STORY_ADD_HEART_NTF] storyNpcId="..storyNpcId.." heart="..heart.." addHeart="..addHeart)
self:PlayAddHeartAnimation(storyNpcId, heart, addHeart)
end)
end
@ -1022,7 +1027,7 @@ function UIChatView:EnterChatLayer2(channelId, storyData)
self.chatLayer2.titleBarReturnBtn.button.interactable = true
end
local storyRecordDatas = ManagerContainer.DataMgr.StoryData:GetStoryDatas()
LogError("storyRecordDatas: "..Inspect(storyRecordDatas))
--LogError("storyRecordDatas: "..Inspect(storyRecordDatas))
if true or not storyRecordDatas[storyData.StoryId] then
self:SetUIStoryMode(true)
self.controller:StartStoryChat(storyData.Id, newMessageNtfFunc, chatInputNtfFunc, storyPlayFinishNtfFunc, true)
@ -1131,6 +1136,13 @@ function UIChatView:RefreshChatLayer2(channelId, storyData)
-- story chat
elseif channelId == CONST_CHANNEL_STORY then
if storyData == nil then return end
--[[ storyData:
{AddHeart = 2, ForceGuideGroup = 0, HideUi = false, Id = 301, NeedBg = false,
NeedSave = false, PlayInterval = 5, ProgramControl = true, Skip = false,
StoryId = 301, StoryNpcId = 20001, Transition = false, TransitionType = 3, Type = 1} ]]
self:RefreshTitleForStoryNpc(storyData.StoryNpcId)
self.currStoryData = storyData
self.currChatData.fromData = {
["headFrameId"] = 300,
["imgId"] = "Heads/head_100001",
@ -1185,6 +1197,15 @@ function UIChatView:RefreshChatLayer2(channelId, storyData)
self.chatLayer2.loopListView.loopListView:MovePanelToItemIndex(#self.currChatData.chats, 0)
end
function UIChatView:PlayAddHeartAnimation(storyNpcId, heart, addHeart)
self:RefreshTitleForStoryNpc(storyNpcId)
end
function UIChatView:RefreshTitleForStoryNpc(storyNpcId)
local heart = ManagerContainer.DataMgr.StoryData:GetStoryNpcHeart(storyNpcId)
self.chatLayer2.heartNum.text.text = heart
end
-- itemData format:
--[[
{

View File

@ -94,6 +94,10 @@
---@field public loopListView SuperScrollView.LoopListView
---@field public layoutElement UnityEngine.UI.LayoutElement
---@class UIChat__Generate_chatLayer2_heartNum
---@field public gameObject UnityEngine.GameObject
---@field public text TMPro.TextMeshProUGUI
---@class UIChat__Generate_chatLayer2_titleBarText
---@field public gameObject UnityEngine.GameObject
---@field public text TMPro.TextMeshProUGUI
@ -107,7 +111,7 @@
---@field public titleBarReturnBtn UIChat__Generate_chatLayer2_titleBarReturnBtn
---@field public titleBarText UIChat__Generate_chatLayer2_titleBarText
---@field public titleBarHeart UnityEngine.GameObject
---@field public heartNum UnityEngine.GameObject
---@field public heartNum UIChat__Generate_chatLayer2_heartNum
---@field public loopListView UIChat__Generate_chatLayer2_loopListView
---@field public AnyBtn UIChat__Generate_chatLayer2_AnyBtn
---@field public inputPanel UIChat__Generate_chatLayer2_inputPanel
@ -1244,6 +1248,8 @@ function UIChatView:InitGenerate__58(Root, data)
tolua.setpeer(tmp, {})
end
self.chatLayer2.heartNum = tmp
tmp.text = tmp:GetComponent(Enum.TypeInfo.TextMeshProUGUI)
end
---@private