77 lines
2.3 KiB
Go
77 lines
2.3 KiB
Go
![]() |
package logic
|
||
|
|
||
|
import (
|
||
|
"ecs/proto/pb"
|
||
|
"github.com/oylshe1314/framework/util"
|
||
|
)
|
||
|
|
||
|
type PlayerRewardActive struct {
|
||
|
MoneyType uint32 `bson:"money_type" key:"1"`
|
||
|
RewardStatus [][2]uint32 `bson:"reward_status"`
|
||
|
}
|
||
|
|
||
|
func (this *PlayerRewardActive) BuildMsgRewardActive() *pb.RewardActive {
|
||
|
var msg = &pb.RewardActive{MoneyType: pb.MoneyType(this.MoneyType)}
|
||
|
for _, status := range this.RewardStatus {
|
||
|
msg.StatusList = append(msg.StatusList, &pb.RewardStatus{Id: status[0], Status: pb.AbleStatus(status[1])})
|
||
|
}
|
||
|
return msg
|
||
|
}
|
||
|
|
||
|
func (this *Player) checkRewardActive(money *PlayerMoney) bool {
|
||
|
var changed = false
|
||
|
var rewardActive = this.RewardActive[money.Type]
|
||
|
if rewardActive == nil {
|
||
|
rewardActive = this.newRewardActive(money)
|
||
|
if rewardActive == nil {
|
||
|
return false
|
||
|
}
|
||
|
|
||
|
this.RewardActive[rewardActive.MoneyType] = rewardActive
|
||
|
changed = true
|
||
|
} else {
|
||
|
for i := range rewardActive.RewardStatus {
|
||
|
if pb.AbleStatus(rewardActive.RewardStatus[i][1]) == pb.AbleStatus_Unable {
|
||
|
var activeTable = this.manager.tables.RewardActive.Find1(int(rewardActive.RewardStatus[i][0]))
|
||
|
if activeTable != nil {
|
||
|
if money.Value >= uint32(activeTable.ActiveValue) {
|
||
|
rewardActive.RewardStatus[i][1] = uint32(pb.AbleStatus_Able)
|
||
|
changed = true
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if changed {
|
||
|
this.SaveModel(rewardActive)
|
||
|
_ = this.Send(pb.ModId_ModuleReward, pb.MsgId_ModRewardActiveChange, &pb.RewardActiveChangeAck{RewardActive: rewardActive.BuildMsgRewardActive()})
|
||
|
}
|
||
|
return changed
|
||
|
}
|
||
|
|
||
|
func (this *Player) newRewardActive(money *PlayerMoney) *PlayerRewardActive {
|
||
|
var rewardTables = this.manager.tables.RewardActive.Find2(int(money.Type))
|
||
|
if len(rewardTables) == 0 {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
var rewardActive = &PlayerRewardActive{MoneyType: money.Type, RewardStatus: make([][2]uint32, len(rewardTables))}
|
||
|
for i, rewardTable := range rewardTables {
|
||
|
rewardActive.RewardStatus[i] = [2]uint32{
|
||
|
uint32(rewardTable.Id),
|
||
|
util.If(money.Value >= uint32(rewardTable.ActiveValue), uint32(pb.AbleStatus_Able), uint32(pb.AbleStatus_Unable)),
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return rewardActive
|
||
|
}
|
||
|
|
||
|
func (this *Player) BuildMsgRewardActiveListAck() *pb.RewardActiveListAck {
|
||
|
var activeList []*pb.RewardActive
|
||
|
for _, rewardStatus := range this.RewardActive {
|
||
|
activeList = append(activeList, rewardStatus.BuildMsgRewardActive())
|
||
|
}
|
||
|
return &pb.RewardActiveListAck{ActiveList: activeList}
|
||
|
}
|