添加好友机制调整
This commit is contained in:
parent
64901ca8b0
commit
b0e2c5672c
@ -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")
|
||||
}
|
||||
|
||||
|
||||
@ -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()
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
15
src/server/test/friend_test.go
Normal file
15
src/server/test/friend_test.go
Normal 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")
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user