表情功能开发

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),
Login: int32(player.Login),
Loginout: int32(player.Loginout),
Emoji: GoUtil.MapIntToInt32(player.Emoji),
}
}
@ -717,6 +718,8 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
RegisterMsgProcessFunc("ReqSetFace", ReqSetFace) // 设置头像
// 头像框
RegisterMsgProcessFunc("ReqSetAvatar", ReqSetAvatar) // 设置头像框
// 表情
RegisterMsgProcessFunc("ReqSetEmoji", ReqSetEmoji) // 设置表情
// 七日签到
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.Chip = p.PlayMod.getPlayroomMod().Chip
simple.PetName = p.PlayMod.getBaseMod().PetName
simple.Emoji = p.PlayMod.getEmojiMod().Set
return nil
}
@ -742,6 +743,7 @@ func (p *Player) UpdateUserInfo() {
simple.WorkStart = p.PlayMod.getPlayroomMod().Starttime
simple.Chip = p.PlayMod.getPlayroomMod().Chip
simple.PetName = p.PlayMod.getBaseMod().PetName
simple.Emoji = p.PlayMod.getEmojiMod().Set
value, _ := json.Marshal(simple)
IdStr := strconv.Itoa(int(p.M_DwUin))
db.RedisSetKey(IdStr, string(value), 0)

View File

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

View File

@ -13,6 +13,7 @@ import (
"server/game/mod/chess"
"server/game/mod/dailyTask"
"server/game/mod/decorate"
"server/game/mod/emoji"
"server/game/mod/endless"
"server/game/mod/face"
"server/game/mod/friend"
@ -71,6 +72,7 @@ type PlayerModList struct {
Race race.RaceMod // 竞赛活动
Playroom playroom.PlayroomMod // 玩家小屋
FriendTreasure friendTreasure.FriendTreasureMod // 好友宝藏
Emoji emoji.EmojiMod // 表情
}
func (p *PlayerModData) LoadDataFromDB(dwUin interface{}) bool {
@ -344,3 +346,7 @@ func (p *PlayerMod) getPlayroomMod() *playroom.PlayroomMod {
func (p *PlayerMod) getFriendTreasureMod() *friendTreasure.FriendTreasureMod {
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
}
// 设置表情
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
Chip int
PetName string
Emoji map[int]int
}
type VarGoldCard struct {

View File

@ -13,15 +13,19 @@ type AvatarMod struct {
}
type Avatar struct {
Ts int64 // 过期时间 0表示永久
Ts int64 // 过期时间 0表示永久
AddTime int64
}
func (a *AvatarMod) InitData() {
now := GoUtil.Now()
if a.List == nil {
a.List = make(map[int]Avatar)
InitId := avatarCfg.GetInitList()
for _, v := range InitId {
a.List[v] = Avatar{}
a.List[v] = Avatar{
AddTime: now,
}
}
a.SetId = 1
}
@ -44,8 +48,10 @@ func (a *AvatarMod) Unlock(Id, Time int) error {
v.Ts += int64(Time)
return nil
}
now := GoUtil.Now()
a.List[Id] = Avatar{
Ts: GoUtil.Now() + int64(Time),
Ts: now + int64(Time),
AddTime: now,
}
return nil
}
@ -56,6 +62,7 @@ func (a *AvatarMod) BackData() []*msg.AvatarInfo {
l = append(l, &msg.AvatarInfo{
Id: int32(k),
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 (
"fmt"
"server/GoUtil"
faceCfg "server/conf/face"
"server/msg"
)
@ -12,15 +13,19 @@ type FaceMod struct {
}
type Face struct {
Ts int64 // 过期时间 0表示永久
Ts int64 // 过期时间 0表示永久
AddTime int64
}
func (f *FaceMod) InitData() {
now := GoUtil.Now()
if f.List == nil {
f.List = make(map[int]Face)
InitId := faceCfg.GetInitList()
for _, v := range InitId {
f.List[v] = Face{}
f.List[v] = Face{
AddTime: now,
}
}
f.SetId = 1
}
@ -38,12 +43,30 @@ func (f *FaceMod) SetFace(Id int) error {
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 {
l := make([]*msg.FaceInfo, 0)
for k, v := range f.List {
l = append(l, &msg.FaceInfo{
Id: int32(k),
EndTime: v.Ts,
AddTime: v.AddTime,
})
}
return l

File diff suppressed because it is too large Load Diff