playroom 优化

This commit is contained in:
hahwu 2024-12-19 12:09:35 +08:00
parent 4b4f101369
commit b96b200c47
9 changed files with 2641 additions and 2488 deletions

View File

@ -22,8 +22,12 @@ type FirendData struct {
}
func (f *FriendMgr) Init() {
gob.Register(card.CardInfo{})
gob.Register(item.Item{})
gob.Register([]*item.Item{}) // 注册 []*item.Item 类型
gob.Register(msg.Msg{}) // 注册 msg.Msg 类型
f.key = FRIEND_MGR_KEY
f.data = &FirendData{
List: make(map[int][]*msg.Msg),

View File

@ -650,6 +650,7 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
// 玩家
RegisterMsgProcessFunc("ReqUserInfo", ReqUserInfo)
RegisterMsgProcessFunc("ReqSetName", ReqSetName) // 设置名字
RegisterMsgProcessFunc("ReqSetPetName", ReqSetPetName) // 设置宠物名字
RegisterMsgProcessFunc("ReqSetFacebookUrl", ReqSetFacebookUrl) // 设置facebook地址
RegisterMsgProcessFunc("ReqPlayerBaseInfo", ReqPlayerBaseInfofunction) // 请求玩家基本信息
RegisterMsgProcessFunc("UpdateBaseItemInfo", UpdateBaseItemInfofunction) // 保存引导

View File

@ -13,6 +13,9 @@ const (
LoginOut_log = 2
Event_log = 3
)
const (
PLAYROOM_LOST = "playroom_lost"
)
type LogMgr struct {
L []*Log

View File

@ -257,6 +257,7 @@ func (p *Player) InitPlayer(UserName string) error {
// GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.ZeroUpdate, p)
// GoUtil.RegisterEvent(MergeConst.Notify_Midday_Renew, p.ZeroUpdate, p)
SyncFriendMsg(p)
p.UpdateUserInfo()
return nil
}
@ -477,9 +478,9 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error {
}
var change_type string
if v.Num < 0 {
change_type = "gain"
} else {
change_type = "consume"
} else {
change_type = "gain"
}
IType := itemCfg.GetItemType(v.Id)
switch IType {
@ -716,12 +717,15 @@ func (p *Player) GetSimpleData(Uid int, simple *PlayerSimpleData) error {
simple.Level = p.GetPlayerBaseMod().GetLevel()
simple.Decorate = p.PlayMod.getDecorateMod().DecorateNum
simple.Login = int64(Base.Data.LoginTime)
simple.Star = p.GetPlayerBaseMod().GetStar()
simple.Loginout = int64(Base.Data.LogoutTime)
simple.FaceBook = Base.Data.FaceBookId
simple.FaceBookPic = p.PlayMod.getBaseMod().FacebookUrl
simple.Playroom = p.PlayMod.getPlayroomMod().Room
simple.Chess = p.PlayMod.getChessMod().GetChessList()
simple.WorkStart = p.PlayMod.getPlayroomMod().Starttime
simple.Chip = p.PlayMod.getPlayroomMod().Chip
simple.PetName = p.PlayMod.getBaseMod().PetName
return nil
}
@ -731,6 +735,7 @@ func (p *Player) UpdateUserInfo() {
simple.Name = p.GetPlayerBaseMod().GetName()
simple.Avatar = p.PlayMod.getAvatarMod().SetId
simple.Uid = int(p.M_DwUin)
simple.Star = p.GetPlayerBaseMod().GetStar()
simple.Face = p.PlayMod.getFaceMod().SetId
simple.Level = p.GetPlayerBaseMod().GetLevel()
simple.Decorate = p.PlayMod.getDecorateMod().DecorateNum
@ -741,6 +746,8 @@ func (p *Player) UpdateUserInfo() {
simple.Playroom = p.PlayMod.getPlayroomMod().Room
simple.Chess = p.PlayMod.getChessMod().GetChessList()
simple.WorkStart = p.PlayMod.getPlayroomMod().Starttime
simple.Chip = p.PlayMod.getPlayroomMod().Chip
simple.PetName = p.PlayMod.getBaseMod().PetName
value, _ := json.Marshal(simple)
IdStr := strconv.Itoa(int(p.M_DwUin))
db.RedisSetKey(IdStr, string(value), 0)

View File

@ -227,6 +227,8 @@ func handle(p *Player, m *msg.Msg) error {
} else {
PlayroomMod.Lose(Items)
}
p.UpdateUserInfo()
p.Kafka(PLAYROOM_LOST, map[string]interface{}{"uid": m.From})
p.PushClientRes(PlayroomMod.NotifyLose())
}
return nil
@ -562,7 +564,7 @@ func PlayroomVisit(p *Player, Uid int) {
r.Playroom = GoUtil.MapIntToInt32(PlayerData.Playroom)
r.GameId = int32(PlayroomMod.GameId)
r.Defense = Work
r.Chip = int32(PlayroomMod.Chip)
r.Chip = int32(PlayerData.Chip)
Items := make(map[int32]*proto.ItemInfo, 0)
for k, v := range PlayroomMod.GameReward {
Items[int32(k)] = &proto.ItemInfo{

View File

@ -2323,6 +2323,25 @@ func ReqSetName(args []interface{}) error {
return nil
}
func ReqSetPetName(args []interface{}) error {
_, player, buf := ParseArgs(args)
req := &msg.ReqSetPetName{}
proto.Unmarshal(buf, req)
BaseMod := player.PlayMod.getBaseMod()
BaseMod.SetNickName(req.Name)
player.PushClientRes(&msg.ResSetPetName{
ResultCode: msg.RES_CODE_SUCCESS,
})
player.PlayMod.save()
BackUserInfo(player)
player.UpdateUserInfo()
player.TeLog("petname_set", map[string]interface{}{
"petname": req.Name,
})
player.UpdateUserInfo()
return nil
}
func ReqUserInfo(args []interface{}) error {
_, player, _ := ParseArgs(args)
BackUserInfo(player)
@ -2731,32 +2750,32 @@ func ReqPlayroomInfo(args []interface{}) error {
} else {
PlayroomMod.SetGameId(2)
}
if len(PlayroomMod.GameReward) == 0 {
Star := min(500, max(PlayerData.Star/10, 10))
ChessMod := player.PlayMod.getChessMod()
EmitList := ChessMod.GetOrderEmit()
ColorList := make([]string, 0)
for _, v := range EmitList {
Color := mergeDataCfg.GetEmitProduceChessType(v)
ColorList = append(ColorList, Color...)
}
RandList := make([]int, 0)
for _, v := range PlayerData.Chess {
Color := mergeDataCfg.GetColorById(v)
Lv := mergeDataCfg.GetLvById(v)
if GoUtil.InStringArray(Color, ColorList) && Lv <= 8 {
RandList = append(RandList, v)
}
}
if len(RandList) == 0 {
PlayroomMod.SetGameReward(0, 0, Star)
} else if len(RandList) == 1 {
PlayroomMod.SetGameReward(0, RandList[0], Star)
} else {
ChessList := GoUtil.RandSliceNum(RandList, 2)
PlayroomMod.SetGameReward(ChessList[0], ChessList[1], Star)
Star := min(500, max(PlayerData.Star/10, 10))
ChessMod := player.PlayMod.getChessMod()
EmitList := ChessMod.GetOrderEmit()
ColorList := make([]string, 0)
for _, v := range EmitList {
Color := mergeDataCfg.GetEmitProduceChessType(v)
ColorList = append(ColorList, Color...)
}
RandList := make([]int, 0)
for _, v := range PlayerData.Chess {
Color := mergeDataCfg.GetColorById(v)
Lv := mergeDataCfg.GetLvById(v)
if GoUtil.InStringArray(Color, ColorList) && Lv <= 8 {
RandList = append(RandList, v)
}
}
if len(RandList) == 0 {
PlayroomMod.SetGameReward(0, 0, Star)
} else if len(RandList) == 1 {
PlayroomMod.SetGameReward(0, RandList[0], Star)
} else {
ChessList := GoUtil.RandSliceNum(RandList, 2)
PlayroomMod.SetGameReward(ChessList[0], ChessList[1], Star)
}
PlayroomVisit(player, Targer)
return nil
}

View File

@ -15,6 +15,8 @@ type PlayerSimpleData struct {
Playroom map[int]int
Chess []int
WorkStart int64
Chip int
PetName string
}
type VarGoldCard struct {

View File

@ -16,6 +16,7 @@ type Base struct {
IsFirstBuy bool
EnergyBuy int
NickName string
PetName string
FacebookUrl string
LoginBack bool // 回归补偿
}
@ -49,6 +50,10 @@ func (b *Base) SetNickName(Name string) {
b.NickName = Name
}
func (b *Base) SetPetName(Name string) {
b.PetName = Name
}
func (b *Base) GetIsFirstBuy() bool {
return b.IsFirstBuy
}

File diff suppressed because it is too large Load Diff