【猫草大作战】- 设置emoji 、单元测试

This commit is contained in:
hahwu 2025-12-08 15:15:55 +08:00
parent b6915f5073
commit 9080c8870a
9 changed files with 182 additions and 9 deletions

2
.gitignore vendored
View File

@ -15,3 +15,5 @@ src/server/teLog/log.2024-11-28
src/server/logs/ga_log/*.log
src/server/goroutine.prof
src/server/heap_after.pb.gz
src/server/test/logs/*
src/server/test/teLog/*

View File

@ -64,7 +64,7 @@ var Server struct {
func init() {
filePath := "conf/server.json"
if len(os.Args) == 2 {
if os.Args[1] != "" {
if os.Args[1] != "" && os.Args[1][0] != '-' {
filePath = os.Args[1]
}
}

View File

@ -82,6 +82,7 @@ func (f *FriendMgr) Init() {
f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_REFUSE, f.sendToPlayer)
f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_GROWTH, f.sendToPlayer)
f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_AGREE_DEL, f.sendToPlayer)
f.RegisterHandler(msg.HANDLE_TYPE_CATNIP_SEND_EMOJI, f.sendToPlayer)
f.RegisterHandler(msg.HANDLE_TYPE_PLAYROOM_KISS, f.sendToPlayerOnline)
f.RegisterHandler(msg.HANDLE_TYPE_PLAYROOM_GAME, f.sendToPlayer)

View File

@ -373,6 +373,11 @@ func handle(p *Player, m *msg.Msg) error {
FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP_ITEMS, "", m.End, Items)
}
p.CatnipBackData()
case msg.HANDLE_TYPE_CATNIP_SEND_EMOJI:
CatnipMod := p.PlayMod.getCatnipMod()
EmojiId := GoUtil.Int(m.Extra)
CatnipMod.SetEmoji(m.From, EmojiId)
p.CatnipBackData()
case msg.HANDLE_TYPE_FRIEND_GREETING_REPLY:
FriendMod := p.PlayMod.getFriendMod()
if v, ok := m.Extra.(friend.ReplyInfo); ok {

View File

@ -5348,6 +5348,13 @@ func ReqCatnipInvite(player *Player, buf []byte) error {
return err
}
ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP)
if ActivityId == 0 {
player.SendErrClienRes(&msg.ResCatnipPlay{
Code: msg.RES_CODE_FAIL,
Msg: "activity not active",
})
return fmt.Errorf("activity not active")
}
ActivityInfo := GetActivityInfo(player, ActivityId)
CatnipMod := player.PlayMod.getCatnipMod()
err = CatnipMod.Invite(int(req.Uid), int(req.Id))
@ -5388,6 +5395,13 @@ func ReqCatnipAgree(player *Player, buf []byte) error {
}
CatnipMod := player.PlayMod.getCatnipMod()
ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP)
if ActivityId == 0 {
player.SendErrClienRes(&msg.ResCatnipPlay{
Code: msg.RES_CODE_FAIL,
Msg: "activity not active",
})
return fmt.Errorf("activity not active")
}
_, err = CatnipMod.Agree(int(req.Id), int(req.Uid))
if err != nil {
player.SendErrClienRes(&msg.ResCatnipAgree{
@ -5433,6 +5447,14 @@ func ReqCatnipMultiply(player *Player, buf []byte) error {
return err
}
CatnipMod := player.PlayMod.getCatnipMod()
ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP)
if ActivityId == 0 {
player.SendErrClienRes(&msg.ResCatnipPlay{
Code: msg.RES_CODE_FAIL,
Msg: "activity not active",
})
return fmt.Errorf("activity not active")
}
err = CatnipMod.Multiply(int(req.Multiply))
if err != nil {
player.SendErrClienRes(&msg.ResCatnipMultiply{
@ -5460,6 +5482,14 @@ func ReqCatnipPlay(player *Player, buf []byte) error {
return err
}
CatnipMod := player.PlayMod.getCatnipMod()
ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP)
if ActivityId == 0 {
player.SendErrClienRes(&msg.ResCatnipPlay{
Code: msg.RES_CODE_FAIL,
Msg: "activity not active",
})
return fmt.Errorf("activity not active")
}
Id, Growth, PartnerId, Items, ItemCost, FriendItems, err := CatnipMod.Play(int(req.Id))
if err != nil {
player.SendErrClienRes(&msg.ResCatnipPlay{
@ -5508,6 +5538,14 @@ func ReqCatnipReward(player *Player, buf []byte) error {
return err
}
CatnipMod := player.PlayMod.getCatnipMod()
ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP)
if ActivityId == 0 {
player.SendErrClienRes(&msg.ResCatnipPlay{
Code: msg.RES_CODE_FAIL,
Msg: "activity not active",
})
return fmt.Errorf("activity not active")
}
Items, GameInfo, err := CatnipMod.Reward(int(req.Id), int(req.Progress))
if err != nil {
player.SendErrClienRes(&msg.ResCatnipReward{
@ -5546,6 +5584,14 @@ func ReqCatnipGrandReward(player *Player, buf []byte) error {
return err
}
CatnipMod := player.PlayMod.getCatnipMod()
ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP)
if ActivityId == 0 {
player.SendErrClienRes(&msg.ResCatnipPlay{
Code: msg.RES_CODE_FAIL,
Msg: "activity not active",
})
return fmt.Errorf("activity not active")
}
Items, err := CatnipMod.GrandReward()
if err != nil {
player.SendErrClienRes(&msg.ResCatnipGrandReward{
@ -5580,6 +5626,14 @@ func ReqCatnipRefuse(player *Player, buf []byte) error {
return err
}
CatnipMod := player.PlayMod.getCatnipMod()
ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP)
if ActivityId == 0 {
player.SendErrClienRes(&msg.ResCatnipPlay{
Code: msg.RES_CODE_FAIL,
Msg: "activity not active",
})
return fmt.Errorf("activity not active")
}
err = CatnipMod.Refuse(int(req.Id), int(req.Uid))
if err != nil {
player.SendErrClienRes(&msg.ResCatnipRefuse{
@ -5770,7 +5824,29 @@ func ReqCatnipEmoji(player *Player, buf []byte) error {
return err
}
CatnipMod := player.PlayMod.getCatnipMod()
CatnipMod.SetEmoji(int(req.Id), int(req.EmojiId))
ActivityId := GetActivityId(player, activity.ACT_TYPE_CATNIP)
if ActivityId == 0 {
player.SendErrClienRes(&msg.ResCatnipPlay{
Code: msg.RES_CODE_FAIL,
Msg: "activity not active",
})
return fmt.Errorf("activity not active")
}
GameInfo := CatnipMod.GetGameInfo(int(req.Id))
if GameInfo.Partner == 0 {
player.SendErrClienRes(&msg.ResCatnipEmoji{
Code: msg.RES_CODE_FAIL,
Msg: "no partner",
})
return fmt.Errorf("no partner")
}
FriendMgrSend(&MsqMod.Msg{
From: int(player.M_DwUin),
To: GameInfo.Partner,
Type: MsqMod.HANDLE_TYPE_CATNIP_SEND_EMOJI,
Extra: int(req.EmojiId),
})
player.CatnipBackData()
return nil
}

View File

@ -233,15 +233,19 @@ func (c *CatnipMod) GrowthByUid(Uid, Growth int) {
}
func (c *CatnipMod) SetEmoji(Id, EmojiId int) {
GameInfo, ok := c.Game[Id]
if !ok {
return // Game does not exist
func (c *CatnipMod) SetEmoji(Uid, EmojiId int) {
for _, v := range c.Game {
if v.Partner == Uid {
v.EmojiId = EmojiId
return
}
}
// Here we can set the emoji for the game. This is a placeholder implementation.
GameInfo.EmojiId = EmojiId
}
func (c *CatnipMod) GetMultiple() int {
return c.Mul
}
func (c *CatnipMod) GetGameInfo(Id int) *CatnipGame {
return c.Game[Id]
}

View File

@ -110,7 +110,8 @@ const (
HANDLE_TYPE_CHAMPSHIP_LOGIN // 锦标赛登录
HANDLE_TYPE_CHAMPSHIP_RANK_INFO // 锦标赛排名信息
HANDLE_TYPE_SET_CATNIP_PARTNER
HANDLE_TYPE_SET_CATNIP_PARTNER // 设置猫薄荷伙伴
HANDLE_TYPE_CATNIP_SEND_EMOJI // 发送猫薄荷表情
)
const (

View File

@ -0,0 +1,36 @@
package test
import (
"testing"
"google.golang.org/protobuf/proto"
"server/game"
"server/msg"
)
func TestCatnipBackData(t *testing.T) {
p1 := new(game.Player)
p1.InitPlayer("aaa001")
game.G_GameLogicPtr.SetPlayer(p1)
p1.CatnipBackData()
}
func TestReqCatnipEmoji(t *testing.T) {
p1 := new(game.Player)
p1.InitPlayer("aaa001")
game.G_GameLogicPtr.SetPlayer(p1)
req := &msg.ReqCatnipEmoji{
Id: 1,
EmojiId: 1,
}
data, err := proto.Marshal(req)
if err != nil {
t.Fatalf("proto.Marshal error: %v", err)
}
if err := game.ReqCatnipEmoji(p1, data); err != nil {
t.Fatalf("ReqCatnipEmoji returned error: %v", err)
}
}

View File

@ -0,0 +1,48 @@
{
"AppID": 1,
"LogLevel": "debug",
"LogPath": "./log",
"TCPAddr": ":3601",
"WSAddr": ":3566",
"MySqlAddr": "127.0.0.1",
"MySqlPort": "3306",
"MySqlUsr": "root",
"MySqlPwd": "IOagNEq3C84c-20CmHEin5iODVc=",
"MaxConnNum": 20000,
"DbName": "Merge_Pet_1",
"HttpPort": ":8081",
"AppPath": "./app",
"TELOGDIR" : "./teLog/",
"GameName": "Merge_Pet_Local",
"ServerType":"node",
"ServerID": 1,
"ServerOpenTime": "2018-01-01 00:00:00",
"ServerName": "Merge_Pet",
"ServerStatus" : 1,
"ServerCenter" : 1,
"GameConfPath": "D:/Github/pet_home_server/src/server/gamedata/config/",
"ListenAddr":":9001",
"CenterAddr": "pethome.bywaystudios.com:9000",
"RemoteAddr":"host.docker.internal:9001",
"RedisAddr":"127.0.0.1",
"RedisPort" :"6379",
"RedisPwd" :"",
"RedisWriteAddr":"127.0.0.1:6379",
"RedisReadAddrs":"127.0.0.1:6379",
"RedisMasterName":"mymaster",
"RedisConnType":"Direct",
"GoogleVerify":false,
"Partition":3,
"KafkaHost":"kafka-server",
"CountryCode":"004",
"KafkaPort":"9092",
"Version":"1.0.0",
"IdVerify":false
}