上传战斗角色 排序接口
This commit is contained in:
parent
1829ff0754
commit
37dbc13fc1
@ -2,6 +2,7 @@ package fight
|
||||
|
||||
import (
|
||||
"go_dreamfactory/modules/battle/fight/core"
|
||||
"math/rand"
|
||||
"sort"
|
||||
)
|
||||
|
||||
@ -16,3 +17,66 @@ func (x FightRoleSlice) Swap(i, j int) { x[i], x[j] = x[j], x[i] }
|
||||
func (x FightRoleSlice) Sort(pType string) {
|
||||
sort.Sort(x)
|
||||
}
|
||||
|
||||
func FightRoleSort(arr []core.IFightRole, pType string, pOrder core.EOrderType) []core.IFightRole {
|
||||
if len(arr) <= 1 {
|
||||
return arr
|
||||
}
|
||||
pivot := arr[rand.Intn(len(arr))]
|
||||
lowPart := make([]core.IFightRole, 0, len(arr))
|
||||
highPart := make([]core.IFightRole, 0, len(arr))
|
||||
middlePart := make([]core.IFightRole, 0, len(arr))
|
||||
for _, v := range arr {
|
||||
switch pType {
|
||||
case "OperateValue":
|
||||
switch {
|
||||
case v.GetData().Operate.Value() < pivot.GetData().Operate.Value():
|
||||
if pOrder == core.EOrderType_Asc {
|
||||
lowPart = append(lowPart, v)
|
||||
} else {
|
||||
highPart = append(highPart, v)
|
||||
}
|
||||
break
|
||||
case v.GetData().Operate.Value() == pivot.GetData().Operate.Value():
|
||||
middlePart = append(middlePart, v)
|
||||
break
|
||||
case v.GetData().Operate.Value() > pivot.GetData().Operate.Value():
|
||||
if pOrder == core.EOrderType_Asc {
|
||||
highPart = append(highPart, v)
|
||||
} else {
|
||||
lowPart = append(lowPart, v)
|
||||
}
|
||||
break
|
||||
}
|
||||
break
|
||||
case "Speed":
|
||||
switch {
|
||||
case v.GetData().Speed.Value() < pivot.GetData().Speed.Value():
|
||||
if pOrder == core.EOrderType_Asc {
|
||||
lowPart = append(lowPart, v)
|
||||
} else {
|
||||
highPart = append(highPart, v)
|
||||
}
|
||||
break
|
||||
case v.GetData().Speed.Value() == pivot.GetData().Speed.Value():
|
||||
middlePart = append(middlePart, v)
|
||||
break
|
||||
case v.GetData().Speed.Value() > pivot.GetData().Speed.Value():
|
||||
if pOrder == core.EOrderType_Asc {
|
||||
highPart = append(highPart, v)
|
||||
} else {
|
||||
lowPart = append(lowPart, v)
|
||||
}
|
||||
break
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
lowPart = FightRoleSort(lowPart, pType)
|
||||
highPart = FightRoleSort(highPart, pType)
|
||||
|
||||
lowPart = append(lowPart, middlePart...)
|
||||
lowPart = append(lowPart, highPart...)
|
||||
return lowPart
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user