棋子商店优化
This commit is contained in:
parent
55200f6bbe
commit
9bf4933ec6
@ -66,7 +66,9 @@ func RandSliceNum(slice []int, num int) []int {
|
|||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
func RandSliceNum2(slice []interface{}, num int) []interface{} {
|
func RandSliceNum2(s []interface{}, num int) []interface{} {
|
||||||
|
slice := make([]interface{}, len(s))
|
||||||
|
copy(slice, s)
|
||||||
r := make([]interface{}, 0, num)
|
r := make([]interface{}, 0, num)
|
||||||
if num <= 0 || len(slice) < num {
|
if num <= 0 || len(slice) < num {
|
||||||
return slice
|
return slice
|
||||||
|
|||||||
@ -15,11 +15,12 @@ const (
|
|||||||
CONST_NAME = "MergeDataConst"
|
CONST_NAME = "MergeDataConst"
|
||||||
CFG_MERGE_EMIT = "MergeDataEmit"
|
CFG_MERGE_EMIT = "MergeDataEmit"
|
||||||
CFG_MERGE_EMIT_TYPE = "MergeDataEmitType"
|
CFG_MERGE_EMIT_TYPE = "MergeDataEmitType"
|
||||||
|
CFG_MERGE_COLOR = "MergeDataColor"
|
||||||
|
|
||||||
// 棋子类型
|
// 棋子类型
|
||||||
CHESS_PRODUCT_MAIN_TYPE = 1 // 主产物
|
CHESS_PRODUCT_MAIN_TYPE = 1 // 主产物
|
||||||
CHESS_PRODUCT_SUB_TYPE = 2 // 次产物
|
CHESS_PRODUCT_SECONDARY_TYPE = 2 // 次产物
|
||||||
CHESS_PRODUCT_SUB_EMIT_TYPE = 3 // 次发射器产物
|
CHESS_PRODUCT_SUB_TYPE = 3 // 子发射器产物
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -27,6 +28,7 @@ func init() {
|
|||||||
gamedata.InitCfg(CONST_NAME)
|
gamedata.InitCfg(CONST_NAME)
|
||||||
gamedata.InitCfg(CFG_MERGE_EMIT)
|
gamedata.InitCfg(CFG_MERGE_EMIT)
|
||||||
gamedata.InitCfg(CFG_MERGE_EMIT_TYPE)
|
gamedata.InitCfg(CFG_MERGE_EMIT_TYPE)
|
||||||
|
gamedata.InitCfg(CFG_MERGE_COLOR)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetEmitTypeProduce(EmitType string) []string {
|
func GetEmitTypeProduce(EmitType string) []string {
|
||||||
@ -475,3 +477,21 @@ func getColorProb(Emit_List string, Color string) float64 {
|
|||||||
}
|
}
|
||||||
return Prob
|
return Prob
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetColorType(Color string) int {
|
||||||
|
data, err := gamedata.GetDataByKey(CFG_MERGE_COLOR, Color)
|
||||||
|
if err != nil {
|
||||||
|
log.Debug("GetColorType GetOne Color:%s not found", Color)
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
Type := gamedata.GetStringValue(data, "Type")
|
||||||
|
switch Type {
|
||||||
|
case "main":
|
||||||
|
return CHESS_PRODUCT_MAIN_TYPE
|
||||||
|
case "secondary":
|
||||||
|
return CHESS_PRODUCT_SECONDARY_TYPE
|
||||||
|
case "sub":
|
||||||
|
return CHESS_PRODUCT_SUB_TYPE
|
||||||
|
}
|
||||||
|
return CHESS_PRODUCT_MAIN_TYPE
|
||||||
|
}
|
||||||
|
|||||||
@ -35,21 +35,9 @@ func UnitEndlessReward(p *Player) error {
|
|||||||
|
|
||||||
func UnitChessShop(p *Player) error {
|
func UnitChessShop(p *Player) error {
|
||||||
ChessMod := p.PlayMod.getChessMod()
|
ChessMod := p.PlayMod.getChessMod()
|
||||||
if ChessMod == nil {
|
|
||||||
return fmt.Errorf("ChessMod is nil")
|
|
||||||
}
|
|
||||||
ChessMod.EmitList = make(map[int]int)
|
|
||||||
ChessMod.EmitList[83] = 1
|
|
||||||
ChessMod.EmitList[125] = 1
|
|
||||||
ChargeMod := p.PlayMod.getChargeMod()
|
ChargeMod := p.PlayMod.getChargeMod()
|
||||||
if ChargeMod == nil {
|
ChargeMod.InitChessShop(ChessMod.GetEmitList())
|
||||||
return fmt.Errorf("ChargeMod is nil")
|
|
||||||
}
|
|
||||||
p.PlayMod.save()
|
|
||||||
p.PlayMod.ClearData(p)
|
|
||||||
ChargeMod.TriggerChargeUnlock(4, ChessMod.GetEmitList())
|
|
||||||
b := ChargeMod.BackData()
|
|
||||||
fmt.Println(b)
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import (
|
|||||||
chargeCfg "server/conf/charge"
|
chargeCfg "server/conf/charge"
|
||||||
mergeDataCfg "server/conf/mergeData"
|
mergeDataCfg "server/conf/mergeData"
|
||||||
"server/game/mod/item"
|
"server/game/mod/item"
|
||||||
"server/game/mod/order"
|
|
||||||
"server/msg"
|
"server/msg"
|
||||||
"server/pkg/github.com/name5566/leaf/log"
|
"server/pkg/github.com/name5566/leaf/log"
|
||||||
)
|
)
|
||||||
@ -29,7 +28,10 @@ type ChargeMod struct {
|
|||||||
|
|
||||||
Ad bool // 是否购买免广告
|
Ad bool // 是否购买免广告
|
||||||
}
|
}
|
||||||
|
type Rand struct {
|
||||||
|
ChessId int
|
||||||
|
Diamond int
|
||||||
|
}
|
||||||
type ChessShop struct {
|
type ChessShop struct {
|
||||||
Diamond int
|
Diamond int
|
||||||
Count int
|
Count int
|
||||||
@ -236,54 +238,33 @@ func (c *ChargeMod) InitChessShop(Emit []int) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.ChessShop = make(map[int]*ChessShop)
|
c.ChessShop = make(map[int]*ChessShop)
|
||||||
EmitColor := make(map[string]int)
|
ColorList := make([]string, 0)
|
||||||
for _, v := range Emit {
|
for _, v := range Emit {
|
||||||
Color := mergeDataCfg.GetColorById(v)
|
ProduceList := mergeDataCfg.GetEmitProduceType(v)
|
||||||
ProduceList := mergeDataCfg.GetEmitTypeProduce(Color)
|
ColorList = append(ColorList, ProduceList...)
|
||||||
Type2 := mergeDataCfg.GetEmitType2(Color)
|
|
||||||
for _, Produce := range ProduceList {
|
|
||||||
if _, ok := EmitColor[Produce]; ok {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
EmitColor[Produce] = Type2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
type Rand struct {
|
|
||||||
ChessId int
|
|
||||||
Diamond int
|
|
||||||
}
|
|
||||||
RandList := make([]interface{}, 0)
|
|
||||||
for k, v := range EmitColor {
|
|
||||||
for i := 1; i <= 99; i++ {
|
|
||||||
ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, k)
|
|
||||||
if ChessId == 0 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
ChessType := mergeDataCfg.GetTypeById(ChessId)
|
|
||||||
if ChessType == "Emitter" {
|
|
||||||
RandList = append(RandList, Rand{
|
|
||||||
ChessId: ChessId,
|
|
||||||
Diamond: ChessDiamondCfg[i],
|
|
||||||
})
|
|
||||||
if i >= 4 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
EmitId := order.GetEmitByColor(Emit, k)
|
|
||||||
Mul := mergeDataCfg.GetSellDiamondMul(EmitId, k)
|
|
||||||
Diamond := GetChessDiamond(i, v) * Mul
|
|
||||||
RandList = append(RandList, Rand{
|
|
||||||
ChessId: ChessId,
|
|
||||||
Diamond: Diamond,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
L := GoUtil.RandSliceNum2(RandList, 5)
|
RandList := make([]*Rand, 0)
|
||||||
|
for _, v := range ColorList {
|
||||||
|
ColorType := mergeDataCfg.GetColorType(v)
|
||||||
|
r := make([]*Rand, 0)
|
||||||
|
if ColorType == mergeDataCfg.CHESS_PRODUCT_MAIN_TYPE {
|
||||||
|
r = getChessMainRand(v)
|
||||||
|
} else if ColorType == mergeDataCfg.CHESS_PRODUCT_SECONDARY_TYPE {
|
||||||
|
r = getChessSecondaryRand(v)
|
||||||
|
} else if ColorType == mergeDataCfg.CHESS_PRODUCT_SUB_TYPE {
|
||||||
|
r = getChessSubRand(v)
|
||||||
|
}
|
||||||
|
RandList = append(RandList, r...)
|
||||||
|
}
|
||||||
|
randList := make([]interface{}, len(RandList))
|
||||||
|
for k, v := range RandList {
|
||||||
|
randList[k] = v
|
||||||
|
}
|
||||||
|
L := GoUtil.RandSliceNum2(randList, 5)
|
||||||
for k, v := range L {
|
for k, v := range L {
|
||||||
Diamond := v.(Rand).Diamond
|
Diamond := v.(*Rand).Diamond
|
||||||
ChessId := v.(Rand).ChessId
|
ChessId := v.(*Rand).ChessId
|
||||||
c.ChessShop[k+1] = &ChessShop{Diamond: Diamond, Count: 5, Id: ChessId}
|
c.ChessShop[k+1] = &ChessShop{Diamond: Diamond, Count: 5, Id: ChessId}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
package charge
|
package charge
|
||||||
|
|
||||||
import "math"
|
import (
|
||||||
|
"math"
|
||||||
|
mergeDataCfg "server/conf/mergeData"
|
||||||
|
)
|
||||||
|
|
||||||
func GetChessDiamond(Lv, Type int) int {
|
func GetChessDiamond(Lv, Type int) int {
|
||||||
Diamond := 0.0
|
Diamond := 0.0
|
||||||
@ -18,3 +21,33 @@ func GetChessDiamond(Lv, Type int) int {
|
|||||||
}
|
}
|
||||||
return max(1, d)
|
return max(1, d)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getChessMainRand(Color string) []*Rand {
|
||||||
|
r := make([]*Rand, 0)
|
||||||
|
for i := 6; i <= 10; i++ {
|
||||||
|
Diamond := int(math.Pow(2, float64(i-1)) / 2.5)
|
||||||
|
ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color)
|
||||||
|
r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond})
|
||||||
|
}
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func getChessSecondaryRand(Color string) []*Rand {
|
||||||
|
r := make([]*Rand, 0)
|
||||||
|
for i := 5; i <= 9; i++ {
|
||||||
|
Diamond := int((math.Pow(2, float64(i-1)) / 2.5) * 2)
|
||||||
|
ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color)
|
||||||
|
r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond})
|
||||||
|
}
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func getChessSubRand(Color string) []*Rand {
|
||||||
|
r := make([]*Rand, 0)
|
||||||
|
for i := 5; i <= 9; i++ {
|
||||||
|
Diamond := int(math.Pow(2, float64(i-1))/2.5 + 6.4)
|
||||||
|
ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color)
|
||||||
|
r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond})
|
||||||
|
}
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user