package pzconfig import "strings" // Ключи servertest.ini, в которых живут моды. const ( KeyMods = "Mods" KeyWorkshopItems = "WorkshopItems" KeyMap = "Map" ) // SplitList разбирает список PZ вида "a;b;c" в срез без пустых элементов. func SplitList(value string) []string { if strings.TrimSpace(value) == "" { return []string{} } parts := strings.Split(value, ";") out := make([]string, 0, len(parts)) for _, p := range parts { if p = strings.TrimSpace(p); p != "" { out = append(out, p) } } return out } // JoinList собирает список обратно в формат PZ, убирая дубликаты и сохраняя // порядок: он важен, моды грузятся именно в нём. func JoinList(items []string) string { seen := make(map[string]bool, len(items)) out := make([]string, 0, len(items)) for _, item := range items { item = strings.TrimSpace(item) if item == "" || seen[item] { continue } seen[item] = true out = append(out, item) } return strings.Join(out, ";") } // Mods возвращает текущие списки модов сервера. func (i *INI) Mods() (modIDs, workshopIDs []string) { return SplitList(i.Get(KeyMods)), SplitList(i.Get(KeyWorkshopItems)) } // SetMods записывает списки модов обратно в конфиг. func (i *INI) SetMods(modIDs, workshopIDs []string) { i.Set(KeyMods, JoinList(modIDs)) i.Set(KeyWorkshopItems, JoinList(workshopIDs)) }