129 lines
3.7 KiB
Go
129 lines
3.7 KiB
Go
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
|
||
}
|