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
|
|||
|
}
|