moddata

package
v0.0.0-...-2f9a455 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 14, 2025 License: AGPL-3.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DEFAULT_CONSTRAINTS = [...]*ConstraintRule{
	{PackageID: "brrainz.harmony", Name: "Harmony", LoadFirst: true},
	{PackageID: "ludeon.rimworld", Name: "RimWorld", LoadFirst: true, LoadAfter: []string{"brrainz.harmony"}},
	{PackageID: "ludeon.rimworld.royalty", Name: "Royalty", LoadFirst: true, LoadAfter: []string{"ludeon.rimworld"}},
	{PackageID: "ludeon.rimworld.ideology", Name: "Ideology", LoadFirst: true, LoadAfter: []string{"ludeon.rimworld.royalty"}},
	{PackageID: "ludeon.rimworld.biotech", Name: "Biotech", LoadFirst: true, LoadAfter: []string{"ludeon.rimworld.ideology"}},
	{PackageID: "ludeon.rimworld.anomaly", Name: "Anomaly", LoadFirst: true, LoadAfter: []string{"ludeon.rimworld.biotech"}},
	{PackageID: "ludeon.rimworld.odissey", Name: "Odissey", LoadFirst: true, LoadAfter: []string{"ludeon.rimworld.anomaly"}},
}
View Source
var (
	XML_PREAMBLE []byte = []byte(`<?xml version="1.0" encoding="utf-8"?>`)
)

Functions

This section is empty.

Types

type AboutXML

type AboutXML struct {
	XMLName           xml.Name                `xml:"ModMetaData"`
	Name              string                  `xml:"name"`
	Author            string                  `xml:"author"`
	PackageID         string                  `xml:"packageId"`
	SupportedVersions []string                `xml:"supportedVersions>li"`
	ModDependencies   []AboutXMLModDependency `xml:"modDependencies>li"`
	ForceLoadBefore   []string                `xml:"forceLoadBefore>li"`
	ForceLoadAfter    []string                `xml:"forceLoadAfter>li"`
	LoadAfter         []string                `xml:"loadAfter>li"`
	LoadBefore        []string                `xml:"loadBefore>li"`
	Description       string                  `xml:"description"`
}

AboutXML file structure

func NewAboutXMLFromFilename

func NewAboutXMLFromFilename(filename string) (*AboutXML, error)

func (*AboutXML) String

func (m *AboutXML) String() string

type AboutXMLModDependency

type AboutXMLModDependency struct {
	PackageID        string `xml:"packageId"`
	DisplayName      string `xml:"displayName"`
	SteamWorkshopURL URL    `xml:"steamWorkshopUrl"`
	DownloadURL      URL    `xml:"downloadUrl"`
}

AboutXMLModDependency about.xml' hard dependency block

func (*AboutXMLModDependency) String

func (dep *AboutXMLModDependency) String() string

type ConstraintCatalog

type ConstraintCatalog struct {
	Rules []*ConstraintRule `toml:"rule"`
	// contains filtered or unexported fields
}

func NewConstraintCatalog

func NewConstraintCatalog(filename string) *ConstraintCatalog

func NewConstraintCatalogFromDefaults

func NewConstraintCatalogFromDefaults() *ConstraintCatalog

func NewConstraintCatalogFromFile

func NewConstraintCatalogFromFile(filename string) (*ConstraintCatalog, error)

func (*ConstraintCatalog) Add

func (*ConstraintCatalog) Compare

func (c *ConstraintCatalog) Compare(a, b string) int

func (*ConstraintCatalog) Del

func (c *ConstraintCatalog) Del(idx int)

func (*ConstraintCatalog) Get

func (c *ConstraintCatalog) Get(packageID string) *ConstraintRule

func (*ConstraintCatalog) Load

func (c *ConstraintCatalog) Load() error

func (*ConstraintCatalog) LoadFrom

func (c *ConstraintCatalog) LoadFrom(f string) error

func (*ConstraintCatalog) Save

func (c *ConstraintCatalog) Save() error

type ConstraintRule

type ConstraintRule struct {
	PackageID  string   `toml:"package_id"`
	Name       string   `toml:"name"`
	LoadAfter  []string `toml:"load_after"`
	LoadBefore []string `toml:"load_before"`
	LoadLast   bool     `toml:"load_last"`
	LoadFirst  bool     `toml:"load_first"`
	LoadWeight int32    `toml:"load_weight"`
}

ModMetaDataConstraints

func NewConstraintRule

func NewConstraintRule(packageID string) *ConstraintRule

func (*ConstraintRule) AddDependency

func (m *ConstraintRule) AddDependency(dep string) *ConstraintRule

func (*ConstraintRule) DependsOn

func (m *ConstraintRule) DependsOn(pid string) bool

type Mod

type Mod struct {
	AboutXML *AboutXML

	ID                string
	Name              string
	Dependencies      []string
	LoadBefore        []string
	LoadAfter         []string
	SupportedVersions []string

	// metadata
	ModPath   string
	AboutPath string
	ImagePath string
	SteamID   string
	IsSteam   bool
}

func DiscoverMods

func DiscoverMods(folders ...string) (r []*Mod, err error)

Walk the workshop folder and parse mods' About.xml

func LoadModFile

func LoadModFile(filename string) (*Mod, error)

func Sort

func Sort(mods []*Mod, constraints *ConstraintCatalog, flag SortFlag) ([]*Mod, error)

func (*Mod) Compare

func (mod *Mod) Compare(b *Mod) int

func (*Mod) Save

func (mod *Mod) Save() error

type ModsConfig

type ModsConfig struct {
	ModsConfigData ModsConfigData
	Filename       string
}

func NewModsConfig

func NewModsConfig(filename string) (*ModsConfig, error)

func (*ModsConfig) Load

func (m *ModsConfig) Load() error

func (*ModsConfig) Save

func (m *ModsConfig) Save() error

func (*ModsConfig) String

func (m *ModsConfig) String() string

type ModsConfigData

type ModsConfigData struct {
	XMLName         xml.Name `xml:"ModsConfigData"`
	Version         string   `xml:"version"`
	ActiveMods      []string `xml:"activeMods>li"`
	KnownExpansions []string `xml:"knownExpansions>li"`
}

type RimWorldVersion

type RimWorldVersion string
const (
	RIMWORLD_VERSION_1_5 RimWorldVersion = `1.5.4409 rev1120`
	RIMWORLD_VERSION_1_6                 = `1.6.4490 rev871`
)

type SavedModList

type SavedModList struct {
	XMLName xml.Name `xml:"savedModList"`

	Meta struct {
		GameVersion RimWorldVersion `xml:"gameVersion"`
		ModIds      []string        `xml:"modIds>li"`
		ModSteamIds []string        `xml:"modSteamIds>li"`
		ModNames    []string        `xml:"modNames>li"`
	} `xml:"meta"`

	ModList struct {
		IDs   []string `xml:"ids>li"`
		Names []string `xml:"names>li"`
	} `xml:"modList"`
}

func LoadModList

func LoadModList(filename string) (*SavedModList, error)

func NewSavedModList

func NewSavedModList(version RimWorldVersion, orderedModList []*Mod) *SavedModList

func (*SavedModList) SaveToFile

func (s *SavedModList) SaveToFile(filename string) error

type SortFlag

type SortFlag int
const (
	// SortPackageID pre-sorts by mods' PackageID
	SortPackageID SortFlag = 1 << iota
	// SortName pre-sort by mod Name
	SortName
	// SortNone disable recursive dependency sorting
	SortNone
	// SortTwice run recursive sorting two times
	SortTwice
	// SortUnstable
	SortUnstable
)

type URL

type URL string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL