pet_home_server/src/server/conf/limitedTimeEvent/LimitedTimeEventCfg.go
2024-11-27 19:17:32 +08:00

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")
}