157 lines
3.3 KiB
Go
157 lines
3.3 KiB
Go
package friend
|
|
|
|
import (
|
|
"server/GoUtil"
|
|
cardCfg "server/conf/card"
|
|
"server/game/mod/card"
|
|
)
|
|
|
|
type FriendMod struct {
|
|
FriendList map[int]struct{} // 好友列表
|
|
ApplyList map[int]int64 // 请求列表
|
|
SendApply map[int]int64 // 发送的申请
|
|
Card map[string]*card.CardInfo // 收到的申请交换
|
|
Log []*LogInfo // 日志
|
|
AutoId int
|
|
}
|
|
|
|
const (
|
|
LOG_TYPE_FRIEND_APPLY = 1 // 收到申请好友
|
|
LOG_TYPE_FRIEND_BECOME = 2 // 成为好友
|
|
LOG_TYPE_CARD_EX_SEND = 3 // 发起卡牌交换申请
|
|
LOG_TYPE_CARD_SEND = 4 // 赠送卡牌
|
|
LOG_TYPE_CARD_GIVE = 5 // 请求卡牌
|
|
LOG_TYPE_CARD_SELECT_GET = 6 // 选择卡牌交换
|
|
LOG_TYPE_CARD_ACCEPT_GIVE = 7 // 接受卡牌
|
|
LOG_TYPE_CARD_EX_GET = 8 // 收到卡牌交换申请
|
|
LOG_TYPE_CARD_SELECT_SEND = 9 // 选择卡牌交换
|
|
LOG_TYPE_CARD_EX_SUCCESS_1 = 10 // 卡牌交换成功
|
|
LOG_TYPE_CARD_EX_SUCCESS_2 = 11 // 卡牌交换成功
|
|
LOG_TYPE_FRIEND_DELETE = 14 // 删除好友
|
|
LOG_TYPE_PLAYROOM_VISIT = 15 // 拜访玩家
|
|
)
|
|
|
|
const (
|
|
FRIEND_NOTIFY_APPLY = 1
|
|
FRIEND_NOTIFY_AGREE = 2
|
|
FRIEND_NOTIFY_REFUSE = 3
|
|
FRIEND_NOTIFY_DEL = 4
|
|
)
|
|
|
|
type LogInfo struct {
|
|
Id int
|
|
Uid int
|
|
Type int
|
|
Time int64
|
|
Param string
|
|
}
|
|
|
|
func (f *FriendMod) InitData() {
|
|
if f.FriendList == nil {
|
|
f.FriendList = make(map[int]struct{})
|
|
}
|
|
if f.ApplyList == nil {
|
|
f.ApplyList = make(map[int]int64)
|
|
}
|
|
if f.Card == nil {
|
|
f.Card = make(map[string]*card.CardInfo)
|
|
}
|
|
if f.SendApply == nil {
|
|
f.SendApply = make(map[int]int64)
|
|
}
|
|
}
|
|
|
|
func (f *FriendMod) AddFriend(id int) {
|
|
f.FriendList[id] = struct{}{}
|
|
delete(f.ApplyList, id)
|
|
}
|
|
|
|
func (f *FriendMod) GetCardInfo(Id string) *card.CardInfo {
|
|
v, ok := f.Card[Id]
|
|
if !ok {
|
|
return nil
|
|
}
|
|
return v
|
|
}
|
|
|
|
func (f *FriendMod) SetCardInfo(CardInfo *card.CardInfo) {
|
|
f.Card[CardInfo.Id] = CardInfo
|
|
}
|
|
|
|
func (f *FriendMod) DelCardInfo(Id string) {
|
|
delete(f.Card, Id)
|
|
}
|
|
|
|
func (f *FriendMod) DelFriend(id int) {
|
|
delete(f.FriendList, id)
|
|
}
|
|
|
|
func (f *FriendMod) CheckFriend(Uid int) bool {
|
|
_, ok := f.FriendList[Uid]
|
|
return ok
|
|
}
|
|
|
|
func (f *FriendMod) RefuseApply(id int) {
|
|
delete(f.ApplyList, id)
|
|
}
|
|
|
|
func (f *FriendMod) CheckApply(id int) bool {
|
|
_, ok := f.ApplyList[id]
|
|
return ok
|
|
}
|
|
func (f *FriendMod) GetFriendNum() int {
|
|
return len(f.FriendList)
|
|
}
|
|
func (f *FriendMod) GetFriendList() []int {
|
|
var list []int
|
|
for k := range f.FriendList {
|
|
list = append(list, k)
|
|
}
|
|
return list
|
|
}
|
|
|
|
// 收到申请
|
|
func (f *FriendMod) AddFriendApply(Uid int) {
|
|
f.ApplyList[Uid] = GoUtil.Now()
|
|
}
|
|
|
|
// 发送申请
|
|
func (f *FriendMod) AddSendApply(Uid int) bool {
|
|
if _, ok := f.SendApply[Uid]; ok {
|
|
return true
|
|
}
|
|
f.SendApply[Uid] = GoUtil.Now()
|
|
return false
|
|
}
|
|
|
|
func (f *FriendMod) CheckSendApply(Id int) bool {
|
|
_, ok := f.SendApply[Id]
|
|
return ok
|
|
}
|
|
|
|
func (f *FriendMod) AgreeApply(UId int) {
|
|
f.AddFriend(UId)
|
|
delete(f.SendApply, UId)
|
|
delete(f.ApplyList, UId)
|
|
}
|
|
|
|
func (f *FriendMod) AddLog(Uid, Type int, Param string) int {
|
|
f.AutoId++
|
|
f.Log = append(f.Log, &LogInfo{
|
|
Id: f.AutoId,
|
|
Uid: Uid,
|
|
Type: Type,
|
|
Time: GoUtil.Now(),
|
|
Param: Param,
|
|
})
|
|
return f.AutoId
|
|
}
|
|
|
|
func (f *FriendMod) ResetGoldCardEx() {
|
|
for _, v := range f.Card {
|
|
if cardCfg.CheckCardIsGold(v.CardId) || cardCfg.CheckCardIsGold(v.ExId) {
|
|
v.EndTime = 1
|
|
}
|
|
}
|
|
}
|