package stub import ( "fmt" "math" "samba/pkg/log" "samba/proto" ) type RobotTemper int const ( RteUnknown RobotTemper = 0 // 未知 RteAplomb RobotTemper = 1 // 稳健 RteRadical RobotTemper = 2 // 激进 RteNormal RobotTemper = 3 // 普通 RteRotten RobotTemper = 4 // 摆烂 RteEvaluation RobotTemper = 5 // 策略型 RteHosting RobotTemper = 6 // 托管机器人 ) func (r RobotTemper) String() string { switch r { case RteUnknown: return "Unknown" case RteAplomb: return "稳健型" case RteRadical: return "激进型" case RteNormal: return "普通型" case RteRotten: return "摆烂型" case RteEvaluation: return "概率型" case RteHosting: return "托管机器人" default: return "unknown" } } type RoomMode int const ( RmGold RoomMode = 0 // 金币场 RmClub RoomMode = 1 // 俱乐部场 ) func (r RoomMode) String() string { switch r { case RmGold: return "金币场" case RmClub: return "俱乐部场" default: return "" } } type Room struct { Id int `json:"id"` Name string `json:"name"` // 房间名字 PlayType int `json:"playtype"` // 玩法 MinPlayers int `json:"min_player_num"` // 参与游戏最大人数 MaxPlayers int `json:"max_player_num"` // 参与游戏最小人数 MinCoin int64 `json:"min_coin"` // 最小入场金币 MaxCoin int64 `json:"max_coin"` // 最大入场金币 TakeCoin int64 `json:"take_coin"` // 携带金币 Blind int64 `json:"bet"` // 场次底注 Rate int `json:"rate"` // 场次费率 Level int `json:"level"` // 房间等级 Valid int `json:"valid"` // 是否有效,1有效,0-停用 Tag int `json:"tag"` // 标签 RobotNum int `json:"robotnum"` // 机器人数量上限,0关闭机器人 RobotEvaluation int `json:"bot_rate"` // 概率型机器人权重 RobotAplomb int `json:"bot_steady"` // 稳健型机器人权重 RobotRadical int `json:"bot_radical"` // 激进型机器人权重 RobotNormal int `json:"bot_normal"` // 普通型机器人权重 RobotRotten int `json:"bot_low"` // 摆烂型机器人权重 ActTime int `json:"time"` // 行动倒计时 秒 Mode int `json:"mode"` // 0:金币场 1:俱乐部 CathetaInitPoint int `json:"catheta_init_point"` // 初始分 5分 } func (r *Room) RobotTempers() (rt map[RobotTemper]int, sumWeight int) { rt = map[RobotTemper]int{} rt[RteEvaluation] = r.RobotEvaluation rt[RteAplomb] = r.RobotAplomb rt[RteRadical] = r.RobotRadical rt[RteNormal] = r.RobotNormal rt[RteRotten] = r.RobotRotten sumWeight = r.RobotEvaluation + r.RobotAplomb + r.RobotRadical + r.RobotNormal + r.RobotRotten return } var Rooms = map[int]*Room{ 10000: { Id: 10000, Name: "新手二人场", PlayType: 1000, MinPlayers: 2, MaxPlayers: 2, MinCoin: 20000, MaxCoin: 100000, TakeCoin: 40000, Blind: 2000, }, } func FindRoomCnf(roomType int) (*Room, proto.ErrorCode) { if cnf, ok := Rooms[roomType]; ok { return cnf, proto.Ok } log.Error(fmt.Sprintf("roomType:%v is not exist", roomType)) return nil, proto.Internal } // FindMinCoinRoom 获取最小入场金币的房间 func FindMinCoinRoom() (r *Room) { r = &Room{MinCoin: math.MaxInt64} for _, room := range Rooms { if room.MinCoin <= r.MinCoin && room.Valid == 1 && room.Mode == 0 { r = room } } return }