表情功能开发

This commit is contained in:
hahwu 2025-02-24 15:07:18 +08:00
parent caa096e79c
commit a2e79d0962
10 changed files with 3092 additions and 2590 deletions

View File

@ -410,6 +410,7 @@ func (ad *GameLogic) GetResSimplePlayerByUid(Id int) *msg.ResPlayerSimple {
Decorate: int32(player.Decorate), Decorate: int32(player.Decorate),
Login: int32(player.Login), Login: int32(player.Login),
Loginout: int32(player.Loginout), Loginout: int32(player.Loginout),
Emoji: GoUtil.MapIntToInt32(player.Emoji),
} }
} }
@ -717,6 +718,8 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
RegisterMsgProcessFunc("ReqSetFace", ReqSetFace) // 设置头像 RegisterMsgProcessFunc("ReqSetFace", ReqSetFace) // 设置头像
// 头像框 // 头像框
RegisterMsgProcessFunc("ReqSetAvatar", ReqSetAvatar) // 设置头像框 RegisterMsgProcessFunc("ReqSetAvatar", ReqSetAvatar) // 设置头像框
// 表情
RegisterMsgProcessFunc("ReqSetEmoji", ReqSetEmoji) // 设置表情
// 七日签到 // 七日签到
RegisterMsgProcessFunc("ReqGetSevenLoginReward", ReqGetSevenLoginReward) // 领取七日签到奖励 RegisterMsgProcessFunc("ReqGetSevenLoginReward", ReqGetSevenLoginReward) // 领取七日签到奖励

View File

@ -719,6 +719,7 @@ func (p *Player) GetSimpleData(Uid int, simple *PlayerSimpleData) error {
simple.WorkStart = p.PlayMod.getPlayroomMod().Starttime simple.WorkStart = p.PlayMod.getPlayroomMod().Starttime
simple.Chip = p.PlayMod.getPlayroomMod().Chip simple.Chip = p.PlayMod.getPlayroomMod().Chip
simple.PetName = p.PlayMod.getBaseMod().PetName simple.PetName = p.PlayMod.getBaseMod().PetName
simple.Emoji = p.PlayMod.getEmojiMod().Set
return nil return nil
} }
@ -742,6 +743,7 @@ func (p *Player) UpdateUserInfo() {
simple.WorkStart = p.PlayMod.getPlayroomMod().Starttime simple.WorkStart = p.PlayMod.getPlayroomMod().Starttime
simple.Chip = p.PlayMod.getPlayroomMod().Chip simple.Chip = p.PlayMod.getPlayroomMod().Chip
simple.PetName = p.PlayMod.getBaseMod().PetName simple.PetName = p.PlayMod.getBaseMod().PetName
simple.Emoji = p.PlayMod.getEmojiMod().Set
value, _ := json.Marshal(simple) value, _ := json.Marshal(simple)
IdStr := strconv.Itoa(int(p.M_DwUin)) IdStr := strconv.Itoa(int(p.M_DwUin))
db.RedisSetKey(IdStr, string(value), 0) db.RedisSetKey(IdStr, string(value), 0)

View File

@ -491,6 +491,7 @@ func BackUserInfo(p *Player) {
DecorateCnt: int32(DecorateMod.DecorateNum), DecorateCnt: int32(DecorateMod.DecorateNum),
AvatarList: AvatarMod.BackData(), AvatarList: AvatarMod.BackData(),
FaceList: FaceMod.BackData(), FaceList: FaceMod.BackData(),
EmojiList: p.PlayMod.getEmojiMod().BackData(),
Login: int32(BaseMod.GetLoginTime()), Login: int32(BaseMod.GetLoginTime()),
PetName: BaseMod.PetName, PetName: BaseMod.PetName,
}) })
@ -644,6 +645,7 @@ func PlayroomVisit(p *Player, Uid int) {
r.Playroom = GoUtil.MapIntToInt32(PlayerData.Playroom) r.Playroom = GoUtil.MapIntToInt32(PlayerData.Playroom)
r.GameId = int32(PlayroomMod.GameId) r.GameId = int32(PlayroomMod.GameId)
r.Defense = Work r.Defense = Work
r.Emoji = GoUtil.MapIntToInt32(PlayerData.Emoji)
r.Chip = int32(PlayerData.Chip) r.Chip = int32(PlayerData.Chip)
r.PetName = p.PlayMod.getBaseMod().GetPetName() r.PetName = p.PlayMod.getBaseMod().GetPetName()
Items := make(map[int32]*proto.ItemInfo, 0) Items := make(map[int32]*proto.ItemInfo, 0)

View File

@ -13,6 +13,7 @@ import (
"server/game/mod/chess" "server/game/mod/chess"
"server/game/mod/dailyTask" "server/game/mod/dailyTask"
"server/game/mod/decorate" "server/game/mod/decorate"
"server/game/mod/emoji"
"server/game/mod/endless" "server/game/mod/endless"
"server/game/mod/face" "server/game/mod/face"
"server/game/mod/friend" "server/game/mod/friend"
@ -71,6 +72,7 @@ type PlayerModList struct {
Race race.RaceMod // 竞赛活动 Race race.RaceMod // 竞赛活动
Playroom playroom.PlayroomMod // 玩家小屋 Playroom playroom.PlayroomMod // 玩家小屋
FriendTreasure friendTreasure.FriendTreasureMod // 好友宝藏 FriendTreasure friendTreasure.FriendTreasureMod // 好友宝藏
Emoji emoji.EmojiMod // 表情
} }
func (p *PlayerModData) LoadDataFromDB(dwUin interface{}) bool { func (p *PlayerModData) LoadDataFromDB(dwUin interface{}) bool {
@ -344,3 +346,7 @@ func (p *PlayerMod) getPlayroomMod() *playroom.PlayroomMod {
func (p *PlayerMod) getFriendTreasureMod() *friendTreasure.FriendTreasureMod { func (p *PlayerMod) getFriendTreasureMod() *friendTreasure.FriendTreasureMod {
return &p.mod_list.FriendTreasure return &p.mod_list.FriendTreasure
} }
func (p *PlayerMod) getEmojiMod() *emoji.EmojiMod {
return &p.mod_list.Emoji
}

View File

@ -3504,3 +3504,23 @@ func ReqCardHandbookReward(player *Player, buf []byte) error {
}) })
return nil return nil
} }
// 设置表情
func ReqSetEmoji(player *Player, buf []byte) error {
req := &msg.ReqSetEmoji{}
proto.Unmarshal(buf, req)
EmojiMod := player.PlayMod.getEmojiMod()
err := EmojiMod.SetEmoji(int(req.Id), int(req.Type))
if err != nil {
player.SendErrClienRes(&msg.ResSetEmoji{
Code: msg.RES_CODE_FAIL,
Msg: err.Error(),
})
return err
}
player.PlayMod.save()
player.PushClientRes(&msg.ResSetEmoji{
Code: msg.RES_CODE_SUCCESS,
})
return nil
}

View File

@ -17,6 +17,7 @@ type PlayerSimpleData struct {
WorkStart int64 WorkStart int64
Chip int Chip int
PetName string PetName string
Emoji map[int]int
} }
type VarGoldCard struct { type VarGoldCard struct {

View File

@ -14,14 +14,18 @@ type AvatarMod struct {
type Avatar struct { type Avatar struct {
Ts int64 // 过期时间 0表示永久 Ts int64 // 过期时间 0表示永久
AddTime int64
} }
func (a *AvatarMod) InitData() { func (a *AvatarMod) InitData() {
now := GoUtil.Now()
if a.List == nil { if a.List == nil {
a.List = make(map[int]Avatar) a.List = make(map[int]Avatar)
InitId := avatarCfg.GetInitList() InitId := avatarCfg.GetInitList()
for _, v := range InitId { for _, v := range InitId {
a.List[v] = Avatar{} a.List[v] = Avatar{
AddTime: now,
}
} }
a.SetId = 1 a.SetId = 1
} }
@ -44,8 +48,10 @@ func (a *AvatarMod) Unlock(Id, Time int) error {
v.Ts += int64(Time) v.Ts += int64(Time)
return nil return nil
} }
now := GoUtil.Now()
a.List[Id] = Avatar{ a.List[Id] = Avatar{
Ts: GoUtil.Now() + int64(Time), Ts: now + int64(Time),
AddTime: now,
} }
return nil return nil
} }
@ -56,6 +62,7 @@ func (a *AvatarMod) BackData() []*msg.AvatarInfo {
l = append(l, &msg.AvatarInfo{ l = append(l, &msg.AvatarInfo{
Id: int32(k), Id: int32(k),
EndTime: v.Ts, EndTime: v.Ts,
AddTime: v.AddTime,
}) })
} }
// 返回数据 // 返回数据

View File

@ -0,0 +1,80 @@
package emoji
import (
"fmt"
"server/GoUtil"
avatarCfg "server/conf/avatar"
"server/msg"
)
type EmojiMod struct {
List map[int]Emoji
Set map[int]int
}
type Emoji struct {
Ts int64 // 过期时间 0表示永久
AddTime int64
}
const (
EMOJI_TYPE_GREETING = iota
EMOJI_TYPE_HAPPY
EMOJI_TYPE_TAUNT
EMOJI_TYPE_FAIL
)
func (e *EmojiMod) InitData() {
now := GoUtil.Now()
if e.List == nil {
e.List = make(map[int]Emoji)
InitId := avatarCfg.GetInitList()
for _, v := range InitId {
e.List[v] = Emoji{
AddTime: now,
}
}
}
}
func (e *EmojiMod) SetEmoji(Id, Type int) error {
if Id == 0 {
e.Set[Type] = Id
return nil
}
if _, ok := e.List[Id]; !ok {
return fmt.Errorf("emoji id not exist")
}
e.Set[Type] = Id
return nil
}
func (e *EmojiMod) Unlock(Id, Time int) error {
v, ok := e.List[Id]
if ok {
if v.Ts == 0 {
return nil
}
v.Ts += int64(Time)
return nil
}
now := GoUtil.Now()
e.List[Id] = Emoji{
Ts: now + int64(Time),
AddTime: now,
}
return nil
}
func (e *EmojiMod) BackData() []*msg.EmojiInfo {
l := make([]*msg.EmojiInfo, 0)
for k, v := range e.List {
l = append(l, &msg.EmojiInfo{
Id: int32(k),
EndTime: v.Ts,
AddTime: v.AddTime,
})
}
return l
}

View File

@ -2,6 +2,7 @@ package face
import ( import (
"fmt" "fmt"
"server/GoUtil"
faceCfg "server/conf/face" faceCfg "server/conf/face"
"server/msg" "server/msg"
) )
@ -13,14 +14,18 @@ type FaceMod struct {
type Face struct { type Face struct {
Ts int64 // 过期时间 0表示永久 Ts int64 // 过期时间 0表示永久
AddTime int64
} }
func (f *FaceMod) InitData() { func (f *FaceMod) InitData() {
now := GoUtil.Now()
if f.List == nil { if f.List == nil {
f.List = make(map[int]Face) f.List = make(map[int]Face)
InitId := faceCfg.GetInitList() InitId := faceCfg.GetInitList()
for _, v := range InitId { for _, v := range InitId {
f.List[v] = Face{} f.List[v] = Face{
AddTime: now,
}
} }
f.SetId = 1 f.SetId = 1
} }
@ -38,12 +43,30 @@ func (f *FaceMod) SetFace(Id int) error {
return nil return nil
} }
func (a *FaceMod) Unlock(Id, Time int) error {
v, ok := a.List[Id]
if ok {
if v.Ts == 0 {
return nil
}
v.Ts += int64(Time)
return nil
}
now := GoUtil.Now()
a.List[Id] = Face{
Ts: now + int64(Time),
AddTime: now,
}
return nil
}
func (f *FaceMod) BackData() []*msg.FaceInfo { func (f *FaceMod) BackData() []*msg.FaceInfo {
l := make([]*msg.FaceInfo, 0) l := make([]*msg.FaceInfo, 0)
for k, v := range f.List { for k, v := range f.List {
l = append(l, &msg.FaceInfo{ l = append(l, &msg.FaceInfo{
Id: int32(k), Id: int32(k),
EndTime: v.Ts, EndTime: v.Ts,
AddTime: v.AddTime,
}) })
} }
return l return l

File diff suppressed because it is too large Load Diff