440 lines
11 KiB
Go
440 lines
11 KiB
Go
package limitedTimeEventCfg
|
|
|
|
import (
|
|
"server/GoUtil"
|
|
"server/game/mod/item"
|
|
"server/gamedata"
|
|
"server/pkg/github.com/name5566/leaf/log"
|
|
"sort"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
CFG_LIMITED_TIME_EVENT = "LimitedTimeEvent"
|
|
CFG_LIMITED_TIME_EVENT_METEOR = "LimitedTimeEventMeteor"
|
|
CFG_LIMITED_TIME_EVENT_CHEST = "LimitedTimeEventChest"
|
|
CFG_LIMITED_TIME_EVENT_ORDER = "LimitedTimeEventOrder"
|
|
CFG_LIMITED_TIME_EVENT_SENCE = "LimitedTimeEventSence"
|
|
CFG_LIMITED_TIME_EVENT_SENCE_JACKPOT = "LimitedTimeEventSenceJackpot"
|
|
CFG_LIMITED_TIME_EVENT_FAST = "LimitedTimeEventFast"
|
|
CFG_LIMITED_TIME_EVENT_JACKPOT = "LimitedTimeEventJackpot"
|
|
CFG_LIMITED_TIME_EVENT_CHEST_JACKPOT = "LimitedTimeEventChestJackpot"
|
|
CFG_LIMITED_TIME_EVENT_CONST = "LimitedTimeEventConst"
|
|
CFG_LIMITED_TIME_EVENT_BONUS = "LimitedTimeEventBonus"
|
|
CFG_LIMITED_TIME_EVENT_MONEY = "LimitedTimeEventMoney"
|
|
CFG_LIMITED_TIME_EVENT_LUCKY = "LimitedTimeEventLucky"
|
|
CFG_LIMITED_TIME_EVENT_CAT_TRICK = "LimitedTimeEventCatTrick"
|
|
CFG_LIMTTED_TIME_EVENT_DECORATE_OFF = "LimitedTimeEventDecorateOff"
|
|
)
|
|
|
|
func init() {
|
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT)
|
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_METEOR)
|
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_CHEST)
|
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_ORDER)
|
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_SENCE)
|
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_SENCE_JACKPOT)
|
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_FAST)
|
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_JACKPOT)
|
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_CONST)
|
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_BONUS)
|
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_CHEST_JACKPOT)
|
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_MONEY)
|
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_LUCKY)
|
|
gamedata.InitCfg(CFG_LIMITED_TIME_EVENT_CAT_TRICK)
|
|
gamedata.InitCfg(CFG_LIMTTED_TIME_EVENT_DECORATE_OFF)
|
|
}
|
|
|
|
// 获取限时事件触发列表
|
|
func GetLimitedTimeEventCfg() []*gamedata.LimitedTimeEventData {
|
|
return nil
|
|
}
|
|
|
|
func GetEventName(Id int) string {
|
|
data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT, Id)
|
|
if err != nil {
|
|
log.Debug("GetEventName err:%v", err)
|
|
return ""
|
|
}
|
|
return gamedata.GetStringValue(data, "Name")
|
|
}
|
|
|
|
// 获取流星雨加成
|
|
func GetMeteorAdd(ChessLv int) int {
|
|
data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_METEOR, ChessLv)
|
|
if err != nil {
|
|
log.Debug("GetMeteorAdd err:%v", err)
|
|
return 0
|
|
}
|
|
return gamedata.GetIntValue(data, "Add")
|
|
}
|
|
|
|
// 获取宝箱雨奖励
|
|
func GetChestReward(Star int) []*item.Item {
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_CHEST)
|
|
if err != nil {
|
|
log.Debug("GetChestReward err:%v", err)
|
|
return nil
|
|
}
|
|
|
|
for _, v := range data {
|
|
Min := gamedata.GetIntValue(v, "Min")
|
|
Max := gamedata.GetIntValue(v, "Max")
|
|
if Star >= Min && Star <= Max {
|
|
return gamedata.GetItemList(v, "Items")
|
|
}
|
|
}
|
|
return nil
|
|
|
|
}
|
|
|
|
// 获取超级订单奖励
|
|
func GetSuperOrderReward(Star int) []*item.Item {
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_ORDER)
|
|
if err != nil {
|
|
log.Debug("GetSuperOrderReward err:%v", err)
|
|
return nil
|
|
}
|
|
for _, v := range data {
|
|
Min := gamedata.GetIntValue(v, "Min")
|
|
Max := gamedata.GetIntValue(v, "Max")
|
|
if Star >= Min && Star <= Max {
|
|
return gamedata.GetItemList(v, "Items")
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 获取场景冲刺奖励
|
|
func GetSceneDashReward(Sence, Progress int) (int, []*item.Item) {
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_SENCE)
|
|
if err != nil {
|
|
log.Debug("GetSceneDashReward err:%v", err)
|
|
return 0, nil
|
|
}
|
|
for k, v := range data {
|
|
if Sence == gamedata.GetIntValue(v, "Sence") && Progress == gamedata.GetIntValue(v, "Progress") {
|
|
return GoUtil.Int(k), gamedata.GetItemList(v, "Items")
|
|
}
|
|
}
|
|
return 0, nil
|
|
}
|
|
|
|
// 获取场景冲刺奖池
|
|
func GetSenceJackpotProb() map[int]int {
|
|
r := make(map[int]int)
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_SENCE_JACKPOT)
|
|
if err != nil {
|
|
log.Debug("GetSenceJackpotReward err:%v", err)
|
|
return nil
|
|
}
|
|
for k, v := range data {
|
|
Id := GoUtil.Int(k)
|
|
r[Id] = gamedata.GetIntValue(v, "Prob")
|
|
}
|
|
return r
|
|
}
|
|
|
|
// 获取场景冲刺奖励
|
|
func GetSenceJackpotReward(Id int) []*item.Item {
|
|
data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_SENCE_JACKPOT, Id)
|
|
if err != nil {
|
|
log.Debug("GetSenceJackpotReward err:%v", err)
|
|
return nil
|
|
}
|
|
return gamedata.GetItemList(data, "Items")
|
|
}
|
|
|
|
// 获取连击快手奖励
|
|
func GetFastProduceReward(Times, Energy int) []*item.Item {
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_FAST)
|
|
if err != nil {
|
|
log.Debug("GetSceneDashReward err:%v", err)
|
|
return nil
|
|
}
|
|
for _, v := range data {
|
|
if Times == gamedata.GetIntValue(v, "Times") && Energy <= gamedata.GetIntValue(v, "Max") && Energy >= gamedata.GetIntValue(v, "Min") {
|
|
return gamedata.GetItemList(v, "Items")
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 获取连击快手最大次数
|
|
func GetFastProduceMaxTimes() int {
|
|
Max := 0
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_FAST)
|
|
if err != nil {
|
|
log.Debug("GetSceneDashReward err:%v", err)
|
|
return 0
|
|
}
|
|
for _, v := range data {
|
|
Max = max(gamedata.GetIntValue(v, "Times"), Max)
|
|
}
|
|
return Max
|
|
}
|
|
|
|
// 获取进度最大值
|
|
func GetProgressMax(Lv, Num int) int {
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_BONUS)
|
|
if err != nil {
|
|
log.Debug("GetProgressMax err:%v", err)
|
|
return 0
|
|
}
|
|
for _, v := range data {
|
|
Min := gamedata.GetIntValue(v, "Min")
|
|
Max := gamedata.GetIntValue(v, "Max")
|
|
if Lv >= Min && Lv <= Max {
|
|
OrderNumStr := gamedata.GetStringValue(v, "OrderNum")
|
|
OrderNum := GoUtil.SplitInt(OrderNumStr, ",")
|
|
if Num >= len(OrderNum) {
|
|
return OrderNum[len(OrderNum)-1]
|
|
} else {
|
|
return OrderNum[Num]
|
|
}
|
|
}
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func GetBonusLv(Lv int) int {
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_BONUS)
|
|
if err != nil {
|
|
log.Debug("GetProgressMax err:%v", err)
|
|
return 0
|
|
}
|
|
for k, v := range data {
|
|
Min := gamedata.GetIntValue(v, "Min")
|
|
Max := gamedata.GetIntValue(v, "Max")
|
|
if Lv >= Min && Lv <= Max {
|
|
return GoUtil.Int(k)
|
|
}
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// 获取进度奖励随机
|
|
func GetProgressRewardRand(Lv int) map[int]int {
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_JACKPOT)
|
|
if err != nil {
|
|
log.Debug("GetProgressRewardRand err:%v", err)
|
|
return nil
|
|
}
|
|
r := make(map[int]int)
|
|
for k, v := range data {
|
|
if Lv >= gamedata.GetIntValue(v, "BonusLv") {
|
|
Id := GoUtil.Int(k)
|
|
r[Id] = gamedata.GetIntValue(v, "Prob")
|
|
}
|
|
}
|
|
return r
|
|
}
|
|
|
|
func GetJackpotIdByType(Type int) int {
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_JACKPOT)
|
|
if err != nil {
|
|
log.Debug("GetJackpotIdByType err:%v", err)
|
|
return 0
|
|
}
|
|
for k, v := range data {
|
|
Id := GoUtil.Int(k)
|
|
if Type == gamedata.GetIntValue(v, "Type") {
|
|
return Id
|
|
}
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// 获取进度选择数量
|
|
func GetProgressSelectNum(Lv int) int {
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_BONUS)
|
|
if err != nil {
|
|
log.Debug("GetProgressMax err:%v", err)
|
|
return 0
|
|
}
|
|
for _, v := range data {
|
|
Min := gamedata.GetIntValue(v, "Min")
|
|
Max := gamedata.GetIntValue(v, "Max")
|
|
if Lv >= Min && Lv <= Max {
|
|
return gamedata.GetIntValue(v, "Option")
|
|
}
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// 获取进度奖励
|
|
func GetProgressReward(RewardId int) []*item.Item {
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_JACKPOT)
|
|
if err != nil {
|
|
log.Debug("GetProgressReward err:%v", err)
|
|
return nil
|
|
}
|
|
for k, v := range data {
|
|
Id := GoUtil.Int(k)
|
|
if Id == RewardId {
|
|
return gamedata.GetItemList(v, "Items")
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// 获取进度奖励类型
|
|
func GetProgressRewardType(RewardId int) int {
|
|
data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_JACKPOT, RewardId)
|
|
if err != nil {
|
|
log.Debug("GetProgressReward err:%v", err)
|
|
return 0
|
|
}
|
|
return gamedata.GetIntValue(data, "Type")
|
|
}
|
|
|
|
func GetUnlockLv() int {
|
|
data, err := gamedata.GetDataByKey(CFG_LIMITED_TIME_EVENT_CONST, "unlock_lv")
|
|
if err != nil {
|
|
log.Debug("GetUnlockLv err:%v", err)
|
|
return 0
|
|
}
|
|
return gamedata.GetIntValue(data, "Value")
|
|
}
|
|
|
|
func GetFirstEvent() int {
|
|
data, err := gamedata.GetDataByKey(CFG_LIMITED_TIME_EVENT_CONST, "First_Event")
|
|
if err != nil {
|
|
log.Debug("GetFirstEvent err:%v", err)
|
|
return 0
|
|
}
|
|
return gamedata.GetIntValue(data, "Value")
|
|
}
|
|
|
|
func GetFastCD() int {
|
|
data, err := gamedata.GetDataByKey(CFG_LIMITED_TIME_EVENT_CONST, "Fast_Cd")
|
|
if err != nil {
|
|
log.Debug("GetFirstEvent err:%v", err)
|
|
return 0
|
|
}
|
|
return gamedata.GetIntValue(data, "Value")
|
|
}
|
|
|
|
func GetPaybackDay() int {
|
|
data, err := gamedata.GetDataByKey(CFG_LIMITED_TIME_EVENT_CONST, "payback_day")
|
|
if err != nil {
|
|
log.Debug("GetPaybackDay err:%v", err)
|
|
return 0
|
|
}
|
|
return gamedata.GetIntValue(data, "Value")
|
|
}
|
|
|
|
func GetHighRollerNeedEnergy() int {
|
|
data, err := gamedata.GetDataByKey(CFG_LIMITED_TIME_EVENT_CONST, "High_Roller_Need_Energy")
|
|
if err != nil {
|
|
log.Debug("GetHighRollerNeedEnergy err:%v", err)
|
|
return 0
|
|
}
|
|
return gamedata.GetIntValue(data, "Value")
|
|
}
|
|
|
|
func GetThiefProb() int {
|
|
data, err := gamedata.GetDataByKey(CFG_LIMITED_TIME_EVENT_CONST, "Thief_Prob")
|
|
if err != nil {
|
|
log.Debug("GetThiefProb err:%v", err)
|
|
return 0
|
|
}
|
|
value := gamedata.GetStringValue(data, "Value")
|
|
a1 := strings.Split(value, "|")
|
|
prob := make(map[int]int)
|
|
for _, v := range a1 {
|
|
a2 := strings.Split(v, ":")
|
|
prob[GoUtil.Int(a2[0])] = GoUtil.Int(a2[1])
|
|
}
|
|
return GoUtil.RandMap(prob)
|
|
}
|
|
|
|
// 招财猫
|
|
|
|
func GetMoneyCat(Id int) (float64, int) {
|
|
data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_MONEY, Id)
|
|
if err != nil {
|
|
log.Debug("GetMul err:%v", err)
|
|
return 0.0, 0
|
|
}
|
|
return gamedata.GetFloatValue(data, "Mul"), gamedata.GetIntValue(data, "Cd")
|
|
}
|
|
|
|
func GetMoneyCatMax() int {
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_MONEY)
|
|
if err != nil {
|
|
log.Debug("GetMul err:%v", err)
|
|
return 0
|
|
}
|
|
return len(data)
|
|
}
|
|
|
|
func GetLuckyCatMaxEarning(Remain int) int {
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_LUCKY)
|
|
if err != nil {
|
|
log.Debug("GetMul err:%v", err)
|
|
return 0
|
|
}
|
|
type d struct {
|
|
t int
|
|
e int
|
|
}
|
|
l := make([]d, 0)
|
|
for k, v := range data {
|
|
t := GoUtil.Int(k)
|
|
e := gamedata.GetIntValue(v, "Earn")
|
|
l = append(l, d{t, e})
|
|
}
|
|
sort.Slice(l, func(i, j int) bool {
|
|
return l[i].t < l[j].t
|
|
})
|
|
for _, v := range l {
|
|
if Remain <= v.t {
|
|
return v.e
|
|
}
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func GetCatTrickType(Duartion int) int {
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT_CAT_TRICK)
|
|
if err != nil {
|
|
log.Debug("GetCatTrick err:%v", err)
|
|
return 1
|
|
}
|
|
for k, v := range data {
|
|
D := gamedata.GetIntValue(v, "Duration")
|
|
if Duartion == D {
|
|
return GoUtil.Int(k)
|
|
}
|
|
}
|
|
return gamedata.GetIntValue(data, "Type")
|
|
}
|
|
|
|
func GetCatTrickDiamond(Type int) (int, int) {
|
|
data, err := gamedata.GetDataByIntKey(CFG_LIMITED_TIME_EVENT_CAT_TRICK, Type)
|
|
if err != nil {
|
|
log.Debug("GetCatTrickDiamond err:%v", err)
|
|
return 0, 0
|
|
}
|
|
return gamedata.GetIntValue(data, "Diamond"), gamedata.GetIntValue(data, "Energy")
|
|
}
|
|
|
|
func GetDecorateOffDiscount(AreaId, StepId int) int {
|
|
data, err := gamedata.GetData(CFG_LIMTTED_TIME_EVENT_DECORATE_OFF)
|
|
if err != nil {
|
|
log.Debug("GetDecorateOffDiscount err:%v", err)
|
|
return 100
|
|
}
|
|
for _, v := range data {
|
|
StartAreaId := gamedata.GetIntValue(v, "StartArea")
|
|
EndAreaId := gamedata.GetIntValue(v, "EndArea")
|
|
StartStepId := gamedata.GetIntValue(v, "StartStep")
|
|
EndStepId := gamedata.GetIntValue(v, "EndStep")
|
|
if AreaId >= StartAreaId && AreaId <= EndAreaId && StepId >= StartStepId && StepId <= EndStepId {
|
|
return gamedata.GetIntValue(v, "Off")
|
|
}
|
|
}
|
|
return 100
|
|
}
|