添加好友机制调整

This commit is contained in:
hahwu 2026-03-02 16:46:57 +08:00
parent 64901ca8b0
commit b0e2c5672c
4 changed files with 45 additions and 24 deletions

View File

@ -8,6 +8,7 @@ import (
"server/game/mod/item"
GoUtil "server/game_util"
"server/msg"
"sort"
)
type FriendMod struct {
@ -76,7 +77,6 @@ type Interact struct {
type ApplyInfo struct {
Type int
Time int64
Uid int64
}
const (
@ -231,10 +231,25 @@ func (f *FriendMod) version() {
f.Version = 1
for k := range f.ApplyList {
f.NewApplyList[k] = &ApplyInfo{
Type: APPLY_TYPE_FRIEND_CODE,
Time: f.ApplyList[k],
}
}
type sortData struct {
Uid int
Time int64
}
PlayerList := make([]sortData, 0)
for k, v := range f.NewApplyList {
PlayerList = append(PlayerList, sortData{k, v.Time})
}
sort.Slice(PlayerList, func(i, j int) bool {
return PlayerList[i].Time > PlayerList[j].Time
})
for i := 0; i < len(PlayerList); i++ {
if i >= friendCfg.GetApplyListLimit() {
delete(f.NewApplyList, PlayerList[i].Uid)
}
}
}
}
@ -316,7 +331,7 @@ func (f *FriendMod) AddFriend(id int) {
f.NewFriendList[id] = &FriendInfo{
AddTime: GoUtil.Now(),
}
delete(f.ApplyList, id)
delete(f.NewApplyList, id)
}
// 获取卡牌交换信息
@ -356,13 +371,13 @@ func (f *FriendMod) GetFriendLen() int {
// 拒绝好友申请
func (f *FriendMod) RefuseApply(id int) {
delete(f.ApplyList, id)
delete(f.NewApplyList, id)
delete(f.SendApply, id)
}
// 检查好友申请
func (f *FriendMod) CheckApply(id int) bool {
_, ok := f.ApplyList[id]
_, ok := f.NewApplyList[id]
return ok
}
func (f *FriendMod) GetFriendNum() int {
@ -436,7 +451,6 @@ func (f *FriendMod) AddFriendApply(Uid, Type int) bool {
f.NewApplyList[Uid] = &ApplyInfo{
Type: Type,
Time: GoUtil.Now(),
Uid: int64(Uid),
}
f.DailyGetApply++
return false
@ -465,7 +479,7 @@ func (f *FriendMod) GetSendApplyTime(Id int) int64 {
func (f *FriendMod) AgreeApply(UId int) {
f.AddFriend(UId)
delete(f.SendApply, UId)
delete(f.ApplyList, UId)
delete(f.NewApplyList, UId)
}
// 增加好友日志
@ -589,16 +603,7 @@ func (f *FriendMod) GetReward(Id int) ([]*item.Item, error) {
// 增加心愿单申请
func (f *FriendMod) AddWishApply(Uid int64) error {
for _, v := range f.Apply {
if v.Type == APPLY_TYPE_WISH && v.Uid == Uid {
return fmt.Errorf("wish apply already exist")
}
}
f.Apply = append(f.Apply, &ApplyInfo{
Type: APPLY_TYPE_WISH,
Uid: Uid,
Time: GoUtil.Now(),
})
return nil
}
@ -615,12 +620,7 @@ func (f *FriendMod) GetWishApply() []*ApplyInfo {
// 同意心愿单申请
func (f *FriendMod) ApplyWish(Uid int64) error {
for k, v := range f.Apply {
if v.Type == APPLY_TYPE_WISH && v.Uid == Uid {
f.Apply = append(f.Apply[:k], f.Apply[k+1:]...)
return nil
}
}
return fmt.Errorf("wish apply not exist")
}

View File

@ -7,6 +7,7 @@ import (
"server/game/mod/chess"
"server/game/mod/decorate"
"server/game/mod/endless"
"server/game/mod/friend"
"server/game/mod/fur"
limitedTimeEvent "server/game/mod/limited_time_event"
"server/game/mod/mail"
@ -62,3 +63,7 @@ func (p *Player) GetOrderMod() *order.OrderMod {
func (p *Player) GetFurMod() *fur.FurMod {
return p.PlayMod.getFurMod()
}
func (p *Player) GetFriendMod() *friend.FriendMod {
return p.PlayMod.getFriendMod()
}

View File

@ -4791,6 +4791,7 @@ func ReqSendWishBeg(player *Player, buf []byte) error {
return nil
}
// TODO 心愿单功能 待开发
func ReqWishApplyList(player *Player, buf []byte) error {
req := &msg.ReqWishApplyList{}
err := proto.Unmarshal(buf, req)
@ -4801,7 +4802,7 @@ func ReqWishApplyList(player *Player, buf []byte) error {
List := FriendMod.GetWishApply()
rs := make([]*msg.ResFriendApplyInfo, 0)
for _, v := range List {
PD := G_GameLogicPtr.GetResSimplePlayerByUid(int(v.Uid))
PD := G_GameLogicPtr.GetResSimplePlayerByUid(0)
if PD == nil {
continue
}

View File

@ -0,0 +1,15 @@
package test
import (
"server/game"
"testing"
)
func TestFriendInit(t *testing.T) {
p1 := new(game.Player)
p1.InitPlayer("3625212")
FriendMod := p1.GetFriendMod()
if FriendMod == nil {
t.Error("FriendMod init failed")
}
}