mirror of
https://github.com/Walter-Sparrow/lunar-tear.git
synced 2026-07-02 05:43:41 +03:00
91 lines
3.1 KiB
Go
91 lines
3.1 KiB
Go
package masterdata
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
|
|
"lunar-tear/server/internal/utils"
|
|
)
|
|
|
|
type GameConfig struct {
|
|
ConsumableItemIdForGold int32
|
|
ConsumableItemIdForMedal int32
|
|
ConsumableItemIdForRareMedal int32
|
|
ConsumableItemIdForArenaCoin int32
|
|
ConsumableItemIdForExploreTicket int32
|
|
ConsumableItemIdForMomPoint int32
|
|
ConsumableItemIdForPremiumGachaTicket int32
|
|
ConsumableItemIdForQuestSkipTicket int32
|
|
|
|
CharacterRebirthAvailableCount int32
|
|
CharacterRebirthConsumeGold int32
|
|
|
|
CostumeAwakenAvailableCount int32
|
|
CostumeLimitBreakAvailableCount int32
|
|
|
|
MaterialSameWeaponExpCoefficientPermil int32
|
|
|
|
UserStaminaRecoverySecond int32
|
|
RewardGachaDailyMaxCount int32
|
|
QuestSkipMaxCountAtOnce int32
|
|
|
|
WeaponLimitBreakAvailableCount int32
|
|
|
|
CostumeLotteryEffectUnlockSlotConsumeGold int32
|
|
CostumeLotteryEffectDrawSlotConsumeGold int32
|
|
}
|
|
|
|
func LoadGameConfig() (*GameConfig, error) {
|
|
rows, err := utils.ReadTable[EntityMConfig]("m_config")
|
|
if err != nil {
|
|
return nil, fmt.Errorf("load config table: %w", err)
|
|
}
|
|
|
|
kv := make(map[string]string, len(rows))
|
|
for _, r := range rows {
|
|
kv[r.ConfigKey] = r.Value
|
|
}
|
|
|
|
cfg := &GameConfig{}
|
|
|
|
cfg.ConsumableItemIdForGold = parseInt32(kv, "CONSUMABLE_ITEM_ID_FOR_GOLD")
|
|
cfg.ConsumableItemIdForMedal = parseInt32(kv, "CONSUMABLE_ITEM_ID_FOR_MEDAL")
|
|
cfg.ConsumableItemIdForRareMedal = parseInt32(kv, "CONSUMABLE_ITEM_ID_FOR_RARE_MEDAL")
|
|
cfg.ConsumableItemIdForArenaCoin = parseInt32(kv, "CONSUMABLE_ITEM_ID_FOR_ARENA_COIN")
|
|
cfg.ConsumableItemIdForExploreTicket = parseInt32(kv, "CONSUMABLE_ITEM_ID_FOR_EXPLORE_TICKET")
|
|
cfg.ConsumableItemIdForMomPoint = parseInt32(kv, "CONSUMABLE_ITEM_ID_FOR_MOM_POINT")
|
|
cfg.ConsumableItemIdForPremiumGachaTicket = parseInt32(kv, "CONSUMABLE_ITEM_ID_FOR_PREMIUM_GACHA_TICKET")
|
|
cfg.ConsumableItemIdForQuestSkipTicket = parseInt32(kv, "CONSUMABLE_ITEM_ID_FOR_QUEST_SKIP_TICKET")
|
|
|
|
cfg.CharacterRebirthAvailableCount = parseInt32(kv, "CHARACTER_REBIRTH_AVAILABLE_COUNT")
|
|
cfg.CharacterRebirthConsumeGold = parseInt32(kv, "CHARACTER_REBIRTH_CONSUME_GOLD")
|
|
|
|
cfg.CostumeAwakenAvailableCount = parseInt32(kv, "COSTUME_AWAKEN_AVAILABLE_COUNT")
|
|
cfg.CostumeLimitBreakAvailableCount = parseInt32(kv, "COSTUME_LIMIT_BREAK_AVAILABLE_COUNT")
|
|
|
|
cfg.MaterialSameWeaponExpCoefficientPermil = parseInt32(kv, "MATERIAL_SAME_WEAPON_EXP_COEFFICIENT_PERMIL")
|
|
|
|
cfg.UserStaminaRecoverySecond = parseInt32(kv, "USER_STAMINA_RECOVERY_SECOND")
|
|
cfg.RewardGachaDailyMaxCount = parseInt32(kv, "REWARD_GACHA_DAILY_MAX_COUNT")
|
|
cfg.QuestSkipMaxCountAtOnce = parseInt32(kv, "QUEST_SKIP_MAX_COUNT_AT_ONCE")
|
|
|
|
cfg.WeaponLimitBreakAvailableCount = parseInt32(kv, "WEAPON_LIMIT_BREAK_AVAILABLE_COUNT")
|
|
|
|
cfg.CostumeLotteryEffectUnlockSlotConsumeGold = parseInt32(kv, "COSTUME_LOTTERY_EFFECT_UNLOCK_SLOT_CONSUME_GOLD")
|
|
cfg.CostumeLotteryEffectDrawSlotConsumeGold = parseInt32(kv, "COSTUME_LOTTERY_EFFECT_DRAW_SLOT_CONSUME_GOLD")
|
|
|
|
return cfg, nil
|
|
}
|
|
|
|
func parseInt32(kv map[string]string, key string) int32 {
|
|
s, ok := kv[key]
|
|
if !ok {
|
|
return 0
|
|
}
|
|
v, err := strconv.ParseInt(s, 10, 32)
|
|
if err != nil {
|
|
return 0
|
|
}
|
|
return int32(v)
|
|
}
|