95 lines
2.2 KiB
Go
95 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"mongo.games.com/game/common"
|
|
"mongo.games.com/game/gamesrv/base"
|
|
"mongo.games.com/game/model"
|
|
"mongo.games.com/game/protocol/activity"
|
|
"mongo.games.com/game/srvdata"
|
|
"mongo.games.com/goserver/core/logger"
|
|
"mongo.games.com/goserver/core/netlib"
|
|
"sort"
|
|
)
|
|
|
|
const (
|
|
PowerMax = 700000
|
|
PowerInit = 400000
|
|
)
|
|
|
|
var BaseCoins = []int64{5000, 10000, 15000}
|
|
|
|
func init() {
|
|
// 推币机活动信息
|
|
common.Register(int(activity.PushCoinPacketID_PACKET_CSPushCoinInfo), activity.CSPushCoinInfo{}, CSPushCoinInfo)
|
|
}
|
|
|
|
func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
|
_, ok := data.(*activity.CSPushCoinInfo)
|
|
if !ok {
|
|
return nil
|
|
}
|
|
|
|
p := base.PlayerMgrSington.GetPlayer(sid)
|
|
if p == nil {
|
|
logger.Logger.Warn("CSPushCoinInfo p == nil")
|
|
return nil
|
|
}
|
|
|
|
if p.WelfData == nil {
|
|
logger.Logger.Warn("CSPushCoinInfo p.WelfData == nil")
|
|
return nil
|
|
}
|
|
|
|
if p.WelfData.PushCoin == nil {
|
|
p.WelfData.PushCoin = &model.PushCoinData{
|
|
Shake: 0,
|
|
Refresh: 0,
|
|
Power: PowerInit,
|
|
Base: BaseCoins[0],
|
|
}
|
|
}
|
|
|
|
pack := &activity.SCPushCoinInfo{
|
|
ShakeTimes: p.WelfData.PushCoin.Shake,
|
|
BaseCoin: p.WelfData.PushCoin.Base,
|
|
PowerLine: p.WelfData.PushCoin.Power,
|
|
PowerLineMax: PowerMax,
|
|
RefreshTimes: p.WelfData.PushCoin.Refresh,
|
|
}
|
|
|
|
for _, v := range srvdata.PBDB_PropExchangeMgr.Datas.Arr {
|
|
if v.GetGroup() == 2 {
|
|
info := &activity.ExchangeInfo{
|
|
Id: v.GetId(),
|
|
}
|
|
for kk, vv := range v.GetCost() {
|
|
info.Cost = append(info.Cost, &activity.ItemInfo{
|
|
ItemId: int32(kk),
|
|
ItemNum: int32(vv),
|
|
})
|
|
}
|
|
sort.Slice(info.Cost, func(i, j int) bool {
|
|
return info.Cost[i].ItemId < info.Cost[j].ItemId
|
|
})
|
|
for kk, vv := range v.GetGain() {
|
|
info.Gain = append(info.Gain, &activity.ItemInfo{
|
|
ItemId: int32(kk),
|
|
ItemNum: int32(vv),
|
|
})
|
|
}
|
|
sort.Slice(info.Gain, func(i, j int) bool {
|
|
return info.Gain[i].ItemId < info.Gain[j].ItemId
|
|
})
|
|
for kk, vv := range v.GetCustom() {
|
|
if kk == 1 {
|
|
info.ShakeTimes = int32(vv)
|
|
}
|
|
}
|
|
pack.ExchangeList = append(pack.ExchangeList, info)
|
|
}
|
|
}
|
|
|
|
p.SendToClient(int(activity.PushCoinPacketID_PACKET_SCPushCoinInfo), pack)
|
|
return nil
|
|
}
|