You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
3.2 KiB
Go
156 lines
3.2 KiB
Go
package app
|
|
|
|
import (
|
|
"joybuywork/internal/consts"
|
|
"encoding/json"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
FixRewardsIdThank = -1
|
|
FixRewardsIdChallengeFailed = -2
|
|
FixRewardsIdEggFailed = -3
|
|
)
|
|
|
|
type FixReward struct {
|
|
langKey string
|
|
Id int64 `json:"id"`
|
|
RewardTitle string `json:"reward_title"`
|
|
Langs []*FixRewardLang `json:"langs"`
|
|
}
|
|
|
|
type FixRewardLang struct {
|
|
Title string `json:"title"`
|
|
ImgUrl string `json:"img_url"`
|
|
Mark string `json:"mark"`
|
|
IsDefault bool `json:"is_default"`
|
|
}
|
|
|
|
var FissionFixRewards []*FixReward
|
|
|
|
// LangDataInit 初始化固定奖品
|
|
func LangDataInit() (err error) {
|
|
FissionFixRewards = append(FissionFixRewards, &FixReward{
|
|
langKey: "thank",
|
|
Id: FixRewardsIdThank,
|
|
RewardTitle: "NEXT TIME",
|
|
Langs: nil,
|
|
}, &FixReward{
|
|
langKey: "challenge_failed",
|
|
RewardTitle: "FAILED",
|
|
Id: FixRewardsIdChallengeFailed,
|
|
Langs: nil,
|
|
}, &FixReward{
|
|
langKey: "thank",
|
|
Id: FixRewardsIdEggFailed,
|
|
RewardTitle: "NEXT TIME",
|
|
Langs: nil,
|
|
})
|
|
|
|
path := GetI18nFilePath()
|
|
entrys, err := os.ReadDir(path)
|
|
if err != nil {
|
|
return
|
|
}
|
|
var langMap = make(map[string]map[string]string)
|
|
for _, entry := range entrys {
|
|
if !strings.HasSuffix(entry.Name(), ".json") {
|
|
continue
|
|
}
|
|
|
|
mark, _ := strings.CutSuffix(entry.Name(), ".json")
|
|
|
|
var ddd = make(map[string]string)
|
|
var b []byte
|
|
b, err = os.ReadFile(path + "/" + entry.Name())
|
|
if err != nil {
|
|
return
|
|
}
|
|
err = json.Unmarshal(b, &ddd)
|
|
if err != nil {
|
|
return
|
|
}
|
|
langMap[mark] = ddd
|
|
}
|
|
|
|
for _, reward := range FissionFixRewards {
|
|
imgUrl := consts.TempInfoImgDefaultValue
|
|
|
|
switch reward.Id {
|
|
case -3:
|
|
imgUrl = "ftg/gashapon/default_thank.png"
|
|
}
|
|
|
|
for mark, ddd := range langMap {
|
|
reward.Langs = append(reward.Langs, &FixRewardLang{
|
|
Title: ddd[reward.langKey],
|
|
ImgUrl: imgUrl,
|
|
Mark: mark,
|
|
IsDefault: mark == consts.LangEn,
|
|
})
|
|
|
|
TalkMap.set(mark, ddd)
|
|
}
|
|
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
type TalkMapType map[string]map[string]string
|
|
|
|
var TalkMap TalkMapType = make(map[string]map[string]string)
|
|
|
|
func (t TalkMapType) val(lang, mark string) string {
|
|
langs, ok := t[lang]
|
|
if !ok {
|
|
return ""
|
|
}
|
|
|
|
return langs[mark]
|
|
}
|
|
|
|
func (t TalkMapType) set(lang string, data map[string]string) {
|
|
if _, ok := t[lang]; !ok {
|
|
t[lang] = make(map[string]string)
|
|
}
|
|
for k, v := range data {
|
|
switch k {
|
|
case "active_talk", "complete_task_talk", "task_reset_talk", "dog_offline_talk":
|
|
t[lang][k] = v
|
|
}
|
|
}
|
|
}
|
|
|
|
func (t TalkMapType) DogOffline(lang string) string {
|
|
return t.val(lang, "dog_offline_talk")
|
|
}
|
|
|
|
func (t TalkMapType) TaskReset(lang string) string {
|
|
return t.val(lang, "task_reset_talk")
|
|
}
|
|
|
|
func (t TalkMapType) Active(lang string) string {
|
|
return t.val(lang, "active_talk")
|
|
}
|
|
|
|
func (t TalkMapType) CompeteTask(lang string) string {
|
|
return t.val(lang, "complete_task_talk")
|
|
}
|
|
|
|
// GetI18nFilePath 获取i18n文件路径
|
|
func GetI18nFilePath() string {
|
|
if !consts.RunTest {
|
|
dir, _ := os.Getwd()
|
|
return fmt.Sprintf("%s/asset/campaign/lang", dir)
|
|
}
|
|
|
|
_, filename, _, _ := runtime.Caller(0)
|
|
current := filepath.Dir(filename)
|
|
return fmt.Sprintf("%s/../../asset/campaign/lang", current)
|
|
}
|