pet_home_server/src/server/game/mod/base/Base.go
2025-03-13 12:25:04 +08:00

249 lines
4.3 KiB
Go

package base
import (
"fmt"
"server/GoUtil"
baseCfg "server/conf/base"
"server/game/mod/item"
"server/msg"
)
const (
ModuleName = "base"
)
type Base struct {
Account string
Uid int64
Level int
Exp int
Energy int
Star int
Diamond int
LoginTime int64
LogoutTime int64
RecoverTime int64
FackBookId string
EnergyMul int
IsFirstBuy bool
EnergyBuy int
NickName string
PetName string
FacebookUrl string
Cumulative int // 累计在线时间
TodayCumulative int // 今日累计在线时间
LoginBack bool // 回归补偿
EnergyAD int // 每日看广告获得的能量次数
Seed bool
Source int // 体力资源
}
func (b *Base) InitData(Uid int) {
// b.EnergyMul = 1
// b.IsFirstBuy = false
// b.EnergyBuy = 0
if b.NickName == "" {
b.NickName = fmt.Sprintf("Player_%d", Uid)
}
}
func (b *Base) Login() {
b.LoginTime = GoUtil.Now()
b.LogoutTime = 0
}
func (b *Base) GetSeed() bool {
return b.Seed
}
func (b *Base) SetSeed(Seed bool) {
b.Seed = Seed
}
func (b *Base) GetSource() int {
return b.Source
}
func (b *Base) SetSource(Source int) {
b.Source = Source
}
func (b *Base) GetNickName() string {
return b.NickName
}
func (b *Base) GetFacebookUrl() string {
return b.FacebookUrl
}
func (b *Base) GetEnergyMul() int {
return b.EnergyMul
}
func (b *Base) SetEnergyMul(mul int) {
b.EnergyMul = mul
}
func (b *Base) SetNickName(Name string) {
b.NickName = Name
}
func (b *Base) SetPetName(Name string) {
b.PetName = Name
}
func (b *Base) GetPetName() string {
return b.PetName
}
func (b *Base) GetIsFirstBuy() bool {
return b.IsFirstBuy
}
func (b *Base) SetFacebookUrl(Url string) {
b.FacebookUrl = Url
}
func (b *Base) GetEnergyBuy() int {
return b.EnergyBuy
}
func (b *Base) GetEnergy() int {
return b.Energy
}
func (b *Base) GetLevel() int {
return b.Level
}
func (b *Base) GetExp() int {
return b.Exp
}
func (b *Base) GetStar() int {
return b.Star
}
func (b *Base) GetDiamond() int {
return b.Diamond
}
func (b *Base) GetCumulative() int {
return b.Cumulative
}
func (b *Base) GetLoginTime() int64 {
return b.LoginTime
}
func (b *Base) GetLogoutTime() int64 {
return b.LogoutTime
}
func (b *Base) GetRecoverTime() int64 {
return b.RecoverTime
}
func (b *Base) SetAccount(Account string) {
b.Account = Account
}
func (b *Base) SetUid(Uid int64) {
b.Uid = Uid
}
func (b *Base) SetLevel(Level int) {
b.Level = Level
}
func (b *Base) SetExp(Exp int) {
b.Exp = Exp
}
func (b *Base) SetEnergy(Energy int) {
b.Energy = Energy
}
func (b *Base) SetStar(Star int) {
b.Star = Star
}
func (b *Base) SetDiamond(Diamond int) {
b.Diamond = Diamond
}
func (b *Base) SetRecoverTime(RecoverTime int64) {
b.RecoverTime = RecoverTime
}
func (b *Base) SetLoginTime(LoginTime int64) {
b.LoginTime = LoginTime
}
func (b *Base) SetLogoutTime(LogoutTime int64) {
b.LogoutTime = LogoutTime
}
func (b *Base) BuyEnergy(Energy int) ([]*item.Item, int, int) {
if !b.IsFirstBuy {
b.IsFirstBuy = true
return []*item.Item{{Id: item.ITEM_ENERGY_ID, Num: 100}}, 100, 0
}
b.EnergyBuy += 1
Mul := baseCfg.GetEnergyByMul(b.EnergyBuy)
Diamond := int(float64(Energy) / Mul)
return []*item.Item{{Id: item.ITEM_DIAMOND_ID, Num: -Diamond}, {Id: item.ITEM_ENERGY_ID, Num: Energy}}, Energy, Diamond
}
// HighRoller 结束时重置能量倍数
func (b *Base) ResetEnergyMul(Mul int) {
b.EnergyMul = Mul
}
func (b *Base) BackData() *msg.BaseInfo {
return &msg.BaseInfo{
EnergyMul: int32(b.EnergyMul),
IsFirstBuy: b.IsFirstBuy,
EnergyBuy: int32(b.EnergyBuy),
EnergyAD: int32(b.EnergyAD),
}
}
func (b *Base) ZeroUpdate() {
b.EnergyBuy = 0
b.EnergyAD = 0
b.TodayCumulative = 0
}
func (b *Base) Outline(Time int) {
b.LogoutTime = GoUtil.Now()
b.TodayCumulative += Time
b.Cumulative += Time
}
func (b *Base) GetEnergyByAD() ([]*item.Item, error) {
if b.EnergyAD >= 5 {
return nil, fmt.Errorf("energy ad is max")
}
b.EnergyAD += 1
return []*item.Item{{Id: item.ITEM_ENERGY_ID, Num: 25}}, nil
}
func (b *Base) FormatEnergyMul(Energy int) {
for {
EnergyLimit := baseCfg.GetLimitEnergyMul(b.Level)
if EnergyLimit == 0 {
return
}
if Energy > EnergyLimit {
return
}
b.EnergyMul--
if b.EnergyMul < 0 {
b.EnergyMul = 0
return
}
}
}