时间线气泡优化

This commit is contained in:
hahwu 2025-07-30 11:42:04 +08:00
parent de6aa4db37
commit 18d6797e56
3 changed files with 1344 additions and 1194 deletions

View File

@ -758,6 +758,7 @@ func (p *Player) LoginBackData() {
p.PushClientRes(p.PlayMod.mod_list.Item.BackData())
p.PushClientRes(p.GetPlayerBaseMod().BackAsset())
p.PushClientRes(p.PlayMod.mod_list.Kv.BackData())
p.PushClientRes(p.PlayMod.mod_list.Friend.BubbleBackData())
p.BackDataActivity()
BackChampship(p)
BackUserInfo(p)
@ -900,6 +901,7 @@ func (p *Player) AddLog(Uid int, Type int, Param string, Time int64) {
Id: int32(Id),
Time: int32(Time),
},
Bubble: FriendMod.GetBubbble(Id),
})
}

View File

@ -6,6 +6,7 @@ import (
cardCfg "server/conf/card"
"server/game/mod/card"
"server/game/mod/item"
"server/msg"
)
type FriendMod struct {
@ -19,6 +20,13 @@ type FriendMod struct {
AutoId int
Id int64 // 已同步msg ID
Npc []int // npc id
Bubble map[int]*BubbleInfo // 气泡
}
type BubbleInfo struct {
Id int // 气泡ID
Time int64 // 气泡时间
Type int
}
type FriendInfo struct {
@ -113,6 +121,9 @@ func (f *FriendMod) InitData() {
if f.NewFriendList == nil {
f.NewFriendList = make(map[int]*FriendInfo)
}
if f.Bubble == nil {
f.Bubble = make(map[int]*BubbleInfo)
}
if len(f.FriendList) > 0 && len(f.NewFriendList) == 0 {
for k := range f.FriendList {
f.NewFriendList[k] = &FriendInfo{
@ -258,12 +269,47 @@ func (f *FriendMod) AddLog(Uid, Type int, Param string) int {
Time: GoUtil.Now(),
Param: Param,
})
switch Type {
case LOG_TYPE_HANDBOOK_UPVOTE:
f.AddBubble(f.AutoId, Type)
case LOG_TYPE_PLAYROOM_UPVOTE:
f.AddBubble(f.AutoId, Type)
}
if len(f.Log) > 30 {
f.Log = f.Log[len(f.Log)-30:]
}
return f.AutoId
}
func (f *FriendMod) AddBubble(Id, Type int) {
f.Bubble[Id] = &BubbleInfo{
Id: Id,
Time: GoUtil.Now(),
Type: Type,
}
}
func (f *FriendMod) GetBubbble(Id int) *msg.FriendBubbleInfo {
if v, ok := f.Bubble[Id]; ok {
return &msg.FriendBubbleInfo{
Id: int32(v.Id),
Type: int32(v.Type),
}
}
return nil
}
func (f *FriendMod) BubbleBackData() *msg.ResFriendBubble {
rs := make([]*msg.FriendBubbleInfo, 0, len(f.Bubble))
for _, v := range f.Bubble {
rs = append(rs, &msg.FriendBubbleInfo{
Id: int32(v.Id),
Type: int32(v.Type),
})
}
return &msg.ResFriendBubble{
Bubble: rs,
}
}
func (f *FriendMod) ResetGoldCardEx() {
for _, v := range f.Card {
@ -292,24 +338,11 @@ func (f *FriendMod) Upvote(Id int) ([]*item.Item, int, error) {
}
func (f *FriendMod) GetReward(Id int) ([]*item.Item, error) {
if len(f.Log) == 0 {
return nil, fmt.Errorf("no log")
info, ok := f.Bubble[Id]
if !ok {
return nil, fmt.Errorf("bubble not exist")
}
info := &LogInfo{}
reward := make([]*item.Item, 0)
for _, v := range f.Log {
if v.Id == Id {
info = v
break
}
}
if info.Id == 0 {
return nil, fmt.Errorf("log not exist")
}
if info.Reward {
return nil, fmt.Errorf("already get reward")
}
info.Reward = true
reward := []*item.Item{}
switch info.Type {
case LOG_TYPE_HANDBOOK_UPVOTE:
reward = append(reward, item.NewItem(item.ITEM_ENERGY_ID, 5))
@ -318,6 +351,7 @@ func (f *FriendMod) GetReward(Id int) ([]*item.Item, error) {
default:
return nil, fmt.Errorf("log type not support")
}
delete(f.Bubble, Id)
return reward, nil
}

File diff suppressed because it is too large Load Diff