|
|
@ -17,13 +17,127 @@ func (r *RobotManager) KickRobotTimer() { |
|
|
|
func (r *RobotManager) run() { |
|
|
|
milliseconds := time.Now().UnixMilli() |
|
|
|
|
|
|
|
if milliseconds >= r.CurrentOperationTimer { |
|
|
|
|
|
|
|
//空闲状态
|
|
|
|
if r.GameRoom.State <= EN_TABLE_STATE_WAIT && r.GameRoom.GetInRoomRobotCount() < r.GameRoom.MaxRobotPlayerCount { |
|
|
|
if milliseconds >= r.NextEnterTimer { |
|
|
|
if r.GameRoom.CreatorId == 0 && r.GameRoom.GetInRoomRobotCount() < int32(r.MaxCount) { |
|
|
|
//r.Lock.Lock()
|
|
|
|
r.RobotsEnterGameRoom() |
|
|
|
|
|
|
|
MinInterTime := 0 |
|
|
|
MaxInterTime := 0 |
|
|
|
if r.GameRoom.TableConfig != nil { |
|
|
|
MinInterTime = int(r.GameRoom.TableConfig.RobotCheckMinFrequency) * 1000 |
|
|
|
MaxInterTime = int(r.GameRoom.TableConfig.RobotCheckMaxFrequency) * 1000 |
|
|
|
log.Debug(" 后台配置 机器人进入频率 最小 ", MinInterTime, " 最大 ", MaxInterTime) |
|
|
|
} else { |
|
|
|
MinInterTime = r.GameRoom.BloodCtrl.AndroidOprateConfig.JoinHZ[0] * 1000 |
|
|
|
MaxInterTime = r.GameRoom.BloodCtrl.AndroidOprateConfig.JoinHZ[1] * 1000 |
|
|
|
} |
|
|
|
|
|
|
|
rTime := int64(0) |
|
|
|
if MaxInterTime <= MinInterTime { |
|
|
|
rTime = int64(MinInterTime) |
|
|
|
} else { |
|
|
|
rTime = int64(rand.Intn(MaxInterTime-MinInterTime) + MinInterTime) |
|
|
|
} |
|
|
|
|
|
|
|
//处理个意外
|
|
|
|
if rTime == 0 { |
|
|
|
rTime = 2000 |
|
|
|
log.Error(" 出现0了 是不行的 ", r.GameRoom.RoomID) |
|
|
|
} |
|
|
|
|
|
|
|
r.NextEnterTimer = milliseconds + rTime |
|
|
|
//r.Lock.Unlock()
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if r.GameRoom.TableConfig != nil { |
|
|
|
if milliseconds >= r.FlushCountTimer { |
|
|
|
switch r.GameRoom.GetRoomRealPlayerCount() { |
|
|
|
case 0: |
|
|
|
r.MaxCount = 0 |
|
|
|
if r.GameRoom.TableConfig.ZeroMaxNum <= r.GameRoom.TableConfig.ZeroMinNum { |
|
|
|
r.MaxCount = int(r.GameRoom.TableConfig.ZeroMinNum) |
|
|
|
} else { |
|
|
|
r.MaxCount = int(rand.Int63n(r.GameRoom.TableConfig.ZeroMaxNum-r.GameRoom.TableConfig.ZeroMinNum+1) + r.GameRoom.TableConfig.ZeroMinNum) |
|
|
|
} |
|
|
|
case 1: |
|
|
|
r.MaxCount = 0 |
|
|
|
if r.GameRoom.TableConfig.OneMaxNum <= r.GameRoom.TableConfig.OneMinNum { |
|
|
|
r.MaxCount = int(r.GameRoom.TableConfig.OneMinNum) |
|
|
|
} else { |
|
|
|
r.MaxCount = int(rand.Int63n(r.GameRoom.TableConfig.OneMaxNum-r.GameRoom.TableConfig.OneMinNum+1) + r.GameRoom.TableConfig.OneMinNum) |
|
|
|
} |
|
|
|
case 2: |
|
|
|
r.MaxCount = 0 |
|
|
|
if r.GameRoom.TableConfig.TwoMaxNum <= r.GameRoom.TableConfig.TwoMinNum { |
|
|
|
r.MaxCount = int(r.GameRoom.TableConfig.TwoMinNum) |
|
|
|
} else { |
|
|
|
r.MaxCount = int(rand.Int63n(r.GameRoom.TableConfig.TwoMaxNum-r.GameRoom.TableConfig.TwoMinNum+1) + r.GameRoom.TableConfig.TwoMinNum) |
|
|
|
} |
|
|
|
case 3: |
|
|
|
r.MaxCount = 0 |
|
|
|
if r.GameRoom.TableConfig.ThreeMaxNum <= r.GameRoom.TableConfig.ThreeMinNum { |
|
|
|
r.MaxCount = int(r.GameRoom.TableConfig.ThreeMinNum) |
|
|
|
} else { |
|
|
|
r.MaxCount = int(rand.Int63n(r.GameRoom.TableConfig.ThreeMaxNum-r.GameRoom.TableConfig.ThreeMinNum+1) + r.GameRoom.TableConfig.ThreeMinNum) |
|
|
|
} |
|
|
|
case 4: |
|
|
|
r.MaxCount = 0 |
|
|
|
if r.GameRoom.TableConfig.FourMaxNum <= r.GameRoom.TableConfig.FourMinNum { |
|
|
|
r.MaxCount = int(r.GameRoom.TableConfig.FourMinNum) |
|
|
|
} else { |
|
|
|
r.MaxCount = int(rand.Int63n(r.GameRoom.TableConfig.FourMaxNum-r.GameRoom.TableConfig.FourMinNum+1) + r.GameRoom.TableConfig.FourMinNum) |
|
|
|
} |
|
|
|
case 5: |
|
|
|
r.MaxCount = 0 |
|
|
|
if r.GameRoom.TableConfig.FiveMaxNum <= r.GameRoom.TableConfig.FiveMinNum { |
|
|
|
r.MaxCount = int(r.GameRoom.TableConfig.FiveMinNum) |
|
|
|
} else { |
|
|
|
r.MaxCount = int(rand.Int63n(r.GameRoom.TableConfig.FiveMaxNum-r.GameRoom.TableConfig.FiveMinNum+1) + r.GameRoom.TableConfig.FiveMinNum) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
r.FlushCountTimer = milliseconds + r.GameRoom.TableConfig.CheckFrequency*1000 |
|
|
|
log.Debug("从后台配置 最大机器人数 ", r.MaxCount, " 刷新时间 ", r.GameRoom.TableConfig.CheckFrequency) |
|
|
|
} |
|
|
|
} else { |
|
|
|
if milliseconds >= r.FlushCountTimer { |
|
|
|
var TempCountMax [][]int |
|
|
|
switch r.GameRoom.GetRoomRealPlayerCount() { |
|
|
|
case 0: |
|
|
|
TempCountMax = r.GameRoom.BloodCtrl.AndroidOprateConfig.CountMax0 |
|
|
|
case 1: |
|
|
|
TempCountMax = r.GameRoom.BloodCtrl.AndroidOprateConfig.CountMax1 |
|
|
|
case 2: |
|
|
|
TempCountMax = r.GameRoom.BloodCtrl.AndroidOprateConfig.CountMax2 |
|
|
|
case 3: |
|
|
|
TempCountMax = r.GameRoom.BloodCtrl.AndroidOprateConfig.CountMax3 |
|
|
|
case 4: |
|
|
|
TempCountMax = r.GameRoom.BloodCtrl.AndroidOprateConfig.CountMax4 |
|
|
|
case 5: |
|
|
|
TempCountMax = r.GameRoom.BloodCtrl.AndroidOprateConfig.CountMax5 |
|
|
|
} |
|
|
|
ProMax := 0 |
|
|
|
for _, tempCount := range TempCountMax { |
|
|
|
ProMax += tempCount[1] |
|
|
|
} |
|
|
|
ProNow := 0 |
|
|
|
if ProMax != 0 { |
|
|
|
ProNow = rand.Intn(ProMax) |
|
|
|
} |
|
|
|
r.MaxCount = 0 |
|
|
|
for _, tempCount := range TempCountMax { |
|
|
|
if ProNow < tempCount[1] { |
|
|
|
r.MaxCount = tempCount[0] |
|
|
|
break |
|
|
|
} else { |
|
|
|
ProNow -= tempCount[1] |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
r.FlushCountTimer = milliseconds + int64(r.GameRoom.BloodCtrl.AndroidOprateConfig.FlushHZ*1000) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|