85 lines
2.3 KiB
Go
85 lines
2.3 KiB
Go
package game
|
||
|
||
import (
|
||
"fmt"
|
||
languageCfg "server/conf/language"
|
||
notification_cfg "server/conf/notification"
|
||
GoUtil "server/game_util"
|
||
"server/msg"
|
||
)
|
||
|
||
const (
|
||
NOTIFY_TYPE_FRIEND_APPLY = 1
|
||
NOTIFY_TYPE_PETROOM_GAME = 2
|
||
)
|
||
|
||
/*
|
||
对方来petroom游戏的通知
|
||
每天最多通知3次
|
||
*/
|
||
func NotifyPetroomGame(PlayerId int) {
|
||
PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(PlayerId)
|
||
if !checkLogout(PlayerSimpleData) {
|
||
return
|
||
}
|
||
count, last := GetPetroomGameNotification(PlayerId)
|
||
cooldown, dailyLimit := notification_cfg.GetPetroomGameNotificationCooldown()
|
||
if count >= dailyLimit {
|
||
return
|
||
}
|
||
if GoUtil.Now()-last < int64(cooldown*onehour) {
|
||
return
|
||
}
|
||
titlekey, infokey := notification_cfg.GetPetroomGameNotificationMsg()
|
||
title := languageCfg.GetLanguage(msg.LANG_TYPE(PlayerSimpleData.Lang), titlekey)
|
||
info := languageCfg.GetLanguage(msg.LANG_TYPE(PlayerSimpleData.Lang), infokey)
|
||
GoUtil.NotifyPlayer(GoUtil.Int(PlayerSimpleData.Account), NOTIFY_TYPE_PETROOM_GAME, title, fmt.Sprintf(info, PlayerSimpleData.PetName))
|
||
SetPetroomGameNotification(PlayerId, count+1)
|
||
}
|
||
|
||
/*
|
||
好友申请通知
|
||
好友申请累计两次
|
||
*/
|
||
func NotifyFriendApply(PlayerId, FriendId int) {
|
||
PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(PlayerId)
|
||
if !checkLogout(PlayerSimpleData) {
|
||
return
|
||
}
|
||
FriendSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(FriendId)
|
||
if FriendSimpleData == nil {
|
||
return
|
||
}
|
||
count := GetFriendApplyNotification(PlayerId)
|
||
if count > 0 {
|
||
return
|
||
}
|
||
titlekey, infokey := notification_cfg.GetFriendApplyNotificationMsg()
|
||
title := languageCfg.GetLanguage(msg.LANG_TYPE(PlayerSimpleData.Lang), titlekey)
|
||
info := languageCfg.GetLanguage(msg.LANG_TYPE(PlayerSimpleData.Lang), infokey)
|
||
GoUtil.NotifyPlayer(GoUtil.Int(PlayerSimpleData.Account), NOTIFY_TYPE_FRIEND_APPLY, title, fmt.Sprintf(info, FriendSimpleData.Name))
|
||
SetFriendApplyNotification(PlayerId, count+1)
|
||
}
|
||
|
||
/*
|
||
玩家需处于离线状态
|
||
玩家离线时间少于10分钟时,不发送消息
|
||
若用户已连续7天未登入游戏,不再发送通知
|
||
*/
|
||
func checkLogout(PlayerSimpleData *PlayerSimpleData) bool {
|
||
if PlayerSimpleData == nil {
|
||
return false
|
||
}
|
||
if PlayerSimpleData.Loginout == 0 {
|
||
return false
|
||
}
|
||
now := GoUtil.Now()
|
||
if now-PlayerSimpleData.Loginout > 7*24*3600 {
|
||
return false
|
||
}
|
||
if now-PlayerSimpleData.Loginout < 600 {
|
||
return false
|
||
}
|
||
return true
|
||
}
|