package main

//
//import (
//	"mongo.games.com/game/common"
//	"mongo.games.com/game/proto"
//	"mongo.games.com/game/protocol/gamehall"
//	"mongo.games.com/goserver/core/logger"
//	"mongo.games.com/goserver/core/timer"
//	"math/rand"
//	"strconv"
//	"time"
//)
//
//var jackpotInterval = time.Hour * common.SCENE_BIGWINHISTORY_TIMEINTERVAL
//
//var JackpotListMgrSington = &JackpotListMgr{
//	BigWinHistoryByGameID: make(map[int][]*gamehall.BigWinHistoryInfo),
//	jackpotListHandle:     make(map[int]timer.TimerHandle), // 新的爆奖记录生成
//}
//
//type JackpotListMgr struct {
//	BigWinHistoryByGameID map[int][]*gamehall.BigWinHistoryInfo
//	jackpotListHandle     map[int]timer.TimerHandle // 新的爆奖记录生成
//}
//
//func (this *JackpotListMgr) AddJackpotList(gameid int, data *gamehall.BigWinHistoryInfo) {
//	this.BigWinHistoryByGameID[gameid] = append(this.BigWinHistoryByGameID[gameid], data)
//	if len(this.BigWinHistoryByGameID[gameid]) > common.SCENE_BIGWINHISTORY_MAXNUMBER {
//		this.BigWinHistoryByGameID[gameid] = this.BigWinHistoryByGameID[gameid][1:]
//	}
//}
//
//func (this *JackpotListMgr) GetJackpotList(gameid int) []*gamehall.BigWinHistoryInfo {
//	if this.BigWinHistoryByGameID[gameid] == nil {
//		this.BigWinHistoryByGameID[gameid] = make([]*gamehall.BigWinHistoryInfo, 0)
//	}
//	return this.BigWinHistoryByGameID[gameid]
//}
//
//func genRandTime(sec int, circleTime time.Time) time.Time {
//	//随机时间间隔
//	rand.Seed(time.Now().UnixNano() + int64(sec))
//	interval := rand.Intn(60) + 60*sec // 分钟
//	circleTime = circleTime.Add(time.Duration(-interval) * time.Minute)
//	s := rand.Intn(60) //随机一个秒数
//	circleTime = circleTime.Add(time.Duration(-s) * time.Second)
//	return circleTime
//}
//
//func genRoomIDAndScore(gameid int) (roomID int64, score int64) {
//	// 随机从房间内读取一个场数据
//	var scenes = make([]*Scene, 0)
//	for _, s := range SceneMgrSington.scenes {
//		if s != nil && s.dbGameFree.GetGameId() == int32(gameid) {
//			scenes = append(scenes, s)
//		}
//	}
//	if len(scenes) < 1 {
//		return
//	}
//	s := scenes[rand.Intn(len(scenes))]
//	jackpot := s.dbGameFree.GetJackpot()
//	roomID = int64(s.dbGameFree.GetBaseScore())
//	baseScore := int64(jackpot[0]) * roomID
//	score = int64(baseScore) + int64(rand.Int31n(int32(baseScore/2)))
//	logger.Logger.Infof("genjackpot %v score %v roomID%v baseScore%v", jackpot[0], score, s.dbGameFree.GetBaseScore(), baseScore)
//	return
//}
//
//// 生成爆奖记录
//func (this *JackpotListMgr) GenJackpot(gameid int) {
//	// 首次生成初始化爆奖信息
//	if len(this.BigWinHistoryByGameID[gameid]) == 0 {
//		// 直接从大厅取机器人
//		circleTime := time.Now()
//		sec := common.SCENE_BIGWINHISTORY_LIMITNUMBER
//		for _, p := range PlayerMgrSington.sidMap {
//			if len(this.BigWinHistoryByGameID[gameid]) >= common.SCENE_BIGWINHISTORY_LIMITNUMBER {
//				break
//			}
//			if p.IsRob {
//				p.RobotRandName()
//				genedTime := genRandTime(sec, circleTime).Unix()
//				spinid := strconv.FormatInt(int64(p.SnId), 10) // 用户id转换成字符串
//				baseBet, priceValue := genRoomIDAndScore(gameid)
//				if baseBet == 0 || priceValue == 0 {
//					return
//				}
//				newJackpot := &gamehall.BigWinHistoryInfo{
//					SpinID:      spinid,
//					CreatedTime: genedTime,
//					BaseBet:     baseBet,
//					TotalBet:    baseBet,
//					PriceValue:  priceValue,
//					UserName:    p.Name,
//				}
//				this.AddJackpotList(gameid, newJackpot)
//				sec--
//			}
//		}
//	} else {
//		lastRecord := this.BigWinHistoryByGameID[gameid][len(this.BigWinHistoryByGameID[gameid])-1] // 当中奖纪录>10条时，随机时间差, 满足当前时间-最后一次爆奖记录时间 > 随机时间差 时重新生成一条记录
//		lastTime := time.Unix(lastRecord.GetCreatedTime(), 0)
//		genNewJackpotFlag := lastTime.Add(jackpotInterval).Before(time.Now())
//		if genNewJackpotFlag {
//			for _, p := range PlayerMgrSington.sidMap {
//				if p.IsRob {
//					p.RobotRandName()
//					genedTime := time.Now().Unix()
//					spinid := strconv.FormatInt(int64(p.SnId), 10) // 用户id转换成字符串
//					baseBet, priceValue := genRoomIDAndScore(gameid)
//					if baseBet == 0 || priceValue == 0 {
//						return
//					}
//					newJackpot := &gamehall.BigWinHistoryInfo{
//						SpinID:      spinid,
//						CreatedTime: genedTime,
//						BaseBet:     baseBet,
//						TotalBet:    baseBet,
//						PriceValue:  priceValue,
//						UserName:    p.Name,
//					}
//					this.AddJackpotList(gameid, newJackpot)
//					break
//				}
//			}
//			this.after(gameid)
//		}
//	}
//}
//
//// AddVirtualJackpot 添加虚拟爆奖记录（名字+用户id, 使用大厅机器人信息）
//func (this *JackpotListMgr) AddVirtualJackpot(gameid int, data *gamehall.BigWinHistoryInfo) {
//	if len(PlayerMgrSington.sidMap) < 1 {
//		logger.Logger.Error("AddVirtualJackpot not found robot")
//		return
//	}
//
//	for _, p := range PlayerMgrSington.sidMap {
//		if p.IsRob {
//			p.RobotRandName()
//			spinid := strconv.FormatInt(int64(p.SnId), 10) // 用户id转换成字符串
//			data.SpinID = spinid
//			data.UserName = p.Name
//			this.AddJackpotList(gameid, data)
//			break
//		}
//	}
//}
//
//func (this *JackpotListMgr) start(gameid int) {
//	this.jackpotListHandle[gameid], _ = timer.StartTimer(timer.TimerActionWrapper(func(h timer.TimerHandle, ud interface{}) bool {
//		this.GenJackpot(gameid)
//		return true
//	}), nil, jackpotInterval, 1)
//}
//
//func (this *JackpotListMgr) after(gameid int) {
//	interval := jackpotInterval + time.Duration(rand.Intn(2))*time.Hour + time.Duration(rand.Intn(60))*time.Minute + time.Duration(rand.Intn(60))
//	this.jackpotListHandle[gameid], _ = timer.AfterTimer(func(h timer.TimerHandle, ud interface{}) bool {
//		this.GenJackpot(gameid)
//
//		jackpotList := JackpotListMgrSington.GetJackpotList(gameid)
//		msg := this.GetStoCMsg(jackpotList)
//		logger.Logger.Infof("jackpotlist timer after gameid(%v) %v", gameid, msg)
//		return true
//	}, nil, interval)
//}
//
//func (this *JackpotListMgr) StopTimer(gameid int) bool {
//	return timer.StopTimer(this.jackpotListHandle[gameid])
//}
//
//func (this *JackpotListMgr) ResetAfterTimer(gameid int) {
//	if this.StopTimer(gameid) {
//		this.after(gameid)
//	}
//}
//
//func (this *JackpotListMgr) GetStoCMsg(jackpotList []*gamehall.BigWinHistoryInfo) *gamehall.SCBigWinHistory {
//	pack := &gamehall.SCBigWinHistory{}
//	for i := len(jackpotList) - 1; i >= 0; i-- {
//		v := jackpotList[i]
//		player := &gamehall.BigWinHistoryInfo{
//			SpinID:      proto.String(v.GetSpinID()),
//			CreatedTime: proto.Int64(v.GetCreatedTime()),
//			BaseBet:     proto.Int64(v.GetBaseBet()),
//			TotalBet:    proto.Int64(v.GetTotalBet()),
//			PriceValue:  proto.Int64(int64(v.GetPriceValue())),
//			UserName:    proto.String(v.GetUserName()),
//			Cards:       v.GetCards(),
//		}
//		pack.BigWinHistory = append(pack.BigWinHistory, player)
//	}
//
//	//pack := &avengers.SCAvengersBigWinHistory{}
//	//for i := len(jackpotList) - 1; i >= 0; i-- {
//	//	v := jackpotList[i]
//	//	player := &avengers.AvengersBigWinHistoryInfo{
//	//		SpinID:      proto.String(v.GetSpinID()),
//	//		CreatedTime: proto.Int64(v.GetCreatedTime()),
//	//		RoomID:      proto.Int64(v.GetRoomID()),
//	//		PriceValue:  proto.Int64(int64(v.GetPriceValue())),
//	//		UserName:    proto.String(v.GetUserName()),
//	//	}
//	//	pack.BigWinHistory = append(pack.BigWinHistory, player)
//	//}
//	proto.SetDefaults(pack)
//	return pack
//}
