package game

import (
	"github.com/gorilla/websocket"
)

//玩家
type Player struct {
	Conn    *websocket.Conn
	IsValid bool
	//当前所在的房间
	Room *Room
	//用户信息（需要客户端上传）
	userInfo interface{}
}

func (player *Player) OnLoad() {
	player.IsValid = true
}

func (player *Player) OnDestroy() {
	player.IsValid = false
	//断开连接时，玩家就要离开房间
	if player.Room != nil {
		player.Room.Leave(player)
	}
}

//RPC接口-请求进入房间
func (player *Player) RequestEnterRoom(userInfo interface{}) {
	player.userInfo = userInfo
	if player.Room == nil {
		MatchAndEnterRoom(player)
	}
}

//RPC接口-上传数据帧
func (player *Player) UploadFrames(frames []interface{}) {
	if player.Room != nil {
		player.Room.CacheFrames(frames)
	}
}

//通知客户端-匹配完成
func (player *Player) Notify_onMatchComplete(id int, playerInfos map[int]interface{}, uuid_ string, timestamp_ int64) {
	SendPackFunction(player.Conn, "onMatchComplete", id, playerInfos, uuid_, timestamp_)
}

//通知客户端-游戏开始
func (player *Player) Notify_onGameStart() {
	SendPackFunction(player.Conn, "onGameStart")
}

//通知客户端-下发帧同步数据
func (player *Player) Notify_onFrameSync(frames []interface{}) {
	SendPackFunction(player.Conn, "onFrameSync", frames)
}
