// 玩家定义
package user

import (
	"leaf/log"
	"sync"
)

// 玩家信息
type User struct {
	UserId   string // 用户ID
	NickName string // 昵称
	Token    string // 令牌
}

// 单例模式
var usInstance *UserSystem

// 玩家信息管理类
type UserSystem struct {
	usermap sync.Map // 用户列表
}

func GetUserSystem() *UserSystem {
	if usInstance == nil {
		usInstance = &UserSystem{}
	}
	return usInstance
}

func (us *UserSystem) Register(userId string, user *User) {
	GetUserSystem().usermap.Store(userId, user)
}

func (us *UserSystem) UnRegister(userId string) {
	us.usermap.Delete(userId)
}

func (us *UserSystem) Get(userId string) *User {
	value, ok := GetUserSystem().usermap.Load(userId)
	if !ok {
		log.Debug("user %s not found", userId)
	}
	return value.(*User)
}
