229 lines
6.2 KiB
Go
229 lines
6.2 KiB
Go
package limitedTimeEventCfg
|
|
|
|
import (
|
|
"server/GoUtil"
|
|
"server/game/mod/item"
|
|
"server/gamedata"
|
|
"server/pkg/github.com/name5566/leaf/log"
|
|
"strconv"
|
|
"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_CONST = "LimitedTimeEventConst"
|
|
)
|
|
|
|
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)
|
|
}
|
|
|
|
// 获取限时事件触发列表
|
|
func GetLimitedTimeEventCfg() []*gamedata.LimitedTimeEventData {
|
|
data, err := gamedata.GetData(CFG_LIMITED_TIME_EVENT)
|
|
if err != nil {
|
|
log.Debug("GetLimitedTimeEventCfg err:%v", err)
|
|
return nil
|
|
}
|
|
var res []*gamedata.LimitedTimeEventData
|
|
Day, Hour := GoUtil.GetWeekdayAndHour()
|
|
for k, v := range data {
|
|
weekDay := gamedata.GetIntValue(v, "WeekDay")
|
|
startTime := gamedata.GetIntValue(v, "StartTime")
|
|
endTime := gamedata.GetIntValue(v, "EndTime")
|
|
if weekDay == Day && Hour >= startTime && Hour < endTime {
|
|
Id, _ := strconv.Atoi(k)
|
|
res = append(res, &gamedata.LimitedTimeEventData{
|
|
Id: Id,
|
|
EventId: gamedata.GetIntValue(v, "EventId"),
|
|
Duration: int64(gamedata.GetIntValue(v, "Duration")),
|
|
})
|
|
}
|
|
}
|
|
return res
|
|
}
|
|
|
|
// 获取流星雨加成
|
|
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 GetProgressMax() int {
|
|
data, err := gamedata.GetDataByKey(CFG_LIMITED_TIME_EVENT_CONST, "Progress_max")
|
|
if err != nil {
|
|
log.Debug("GetProgressMax err:%v", err)
|
|
return 0
|
|
}
|
|
return gamedata.GetIntValue(data, "Value")
|
|
}
|
|
|
|
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, "Min") && Lv <= gamedata.GetIntValue(v, "Max") {
|
|
Id := GoUtil.Int(k)
|
|
r[Id] = gamedata.GetIntValue(v, "Prob")
|
|
}
|
|
}
|
|
return r
|
|
}
|
|
|
|
func GetProgressSelectNum(Lv int) int {
|
|
data, err := gamedata.GetDataByKey(CFG_LIMITED_TIME_EVENT_CONST, "Progress_lv_num")
|
|
if err != nil {
|
|
log.Debug("GetProgressSelectNum err:%v", err)
|
|
return 0
|
|
}
|
|
Str := gamedata.GetStringValue(data, "Value")
|
|
Strarr := strings.Split(Str, "|")
|
|
for _, v := range Strarr {
|
|
a := strings.Split(v, ",")
|
|
if len(a) != 3 {
|
|
continue
|
|
}
|
|
Min, _ := strconv.Atoi(a[0])
|
|
Max, _ := strconv.Atoi(a[1])
|
|
if Lv >= Min && Lv <= Max {
|
|
Num, _ := strconv.Atoi(a[2])
|
|
return Num
|
|
}
|
|
}
|
|
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")
|
|
}
|