You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

46 lines
1.1 KiB

package session
import (
"sync"
"texas-poker-bk/internal/game"
)
// NetAccount 已认证的长连接用户
type NetAccount struct {
Id int64
UserName string
Avatar string
Client *NetClient
Balance int32 // 余额
Player *game.Player
BalanceLock *sync.RWMutex
Lock *sync.Mutex
}
func (account *NetAccount) DecrementBalance(amount int32) int32 {
account.BalanceLock.Lock()
defer account.BalanceLock.Unlock()
account.Balance -= amount
// TODO 同步到 DB
return account.Balance
}
func (account *NetAccount) IncrementBalance(amount int32) int32 {
account.BalanceLock.Lock()
defer account.BalanceLock.Unlock()
account.Balance += amount
return account.Balance
}
func (account *NetAccount) GetBalance() int32 {
account.BalanceLock.RLock()
defer account.BalanceLock.RUnlock()
return account.Balance
}
func (account *NetAccount) SettlePlayerChip() {
// 返还玩家账户金额
account.IncrementBalance(account.Player.Chip) // 牌桌筹码返还到账户 TODO 持久化
account.Player.Chip = 0
account.Player = nil // 解除账户绑定
}