109 lines
2.8 KiB
Go
109 lines
2.8 KiB
Go
package factions
|
|
|
|
// Faction represents a single faction with its properties
|
|
type Faction struct {
|
|
ID int32 // Faction ID
|
|
Name string // Faction name
|
|
Type string // Faction type/category
|
|
Description string // Faction description
|
|
NegativeChange int16 // Amount faction decreases by default
|
|
PositiveChange int16 // Amount faction increases by default
|
|
DefaultValue int32 // Default faction value for new characters
|
|
}
|
|
|
|
// NewFaction creates a new faction with the given parameters
|
|
func NewFaction(id int32, name, factionType, description string) *Faction {
|
|
return &Faction{
|
|
ID: id,
|
|
Name: name,
|
|
Type: factionType,
|
|
Description: description,
|
|
NegativeChange: 0,
|
|
PositiveChange: 0,
|
|
DefaultValue: 0,
|
|
}
|
|
}
|
|
|
|
// GetID returns the faction ID
|
|
func (f *Faction) GetID() int32 {
|
|
return f.ID
|
|
}
|
|
|
|
// GetName returns the faction name
|
|
func (f *Faction) GetName() string {
|
|
return f.Name
|
|
}
|
|
|
|
// GetType returns the faction type
|
|
func (f *Faction) GetType() string {
|
|
return f.Type
|
|
}
|
|
|
|
// GetDescription returns the faction description
|
|
func (f *Faction) GetDescription() string {
|
|
return f.Description
|
|
}
|
|
|
|
// GetNegativeChange returns the default decrease amount
|
|
func (f *Faction) GetNegativeChange() int16 {
|
|
return f.NegativeChange
|
|
}
|
|
|
|
// GetPositiveChange returns the default increase amount
|
|
func (f *Faction) GetPositiveChange() int16 {
|
|
return f.PositiveChange
|
|
}
|
|
|
|
// GetDefaultValue returns the default faction value
|
|
func (f *Faction) GetDefaultValue() int32 {
|
|
return f.DefaultValue
|
|
}
|
|
|
|
// SetNegativeChange sets the default decrease amount
|
|
func (f *Faction) SetNegativeChange(amount int16) {
|
|
f.NegativeChange = amount
|
|
}
|
|
|
|
// SetPositiveChange sets the default increase amount
|
|
func (f *Faction) SetPositiveChange(amount int16) {
|
|
f.PositiveChange = amount
|
|
}
|
|
|
|
// SetDefaultValue sets the default faction value
|
|
func (f *Faction) SetDefaultValue(value int32) {
|
|
f.DefaultValue = value
|
|
}
|
|
|
|
// Clone creates a copy of the faction
|
|
func (f *Faction) Clone() *Faction {
|
|
return &Faction{
|
|
ID: f.ID,
|
|
Name: f.Name,
|
|
Type: f.Type,
|
|
Description: f.Description,
|
|
NegativeChange: f.NegativeChange,
|
|
PositiveChange: f.PositiveChange,
|
|
DefaultValue: f.DefaultValue,
|
|
}
|
|
}
|
|
|
|
// IsValid returns true if the faction has valid data
|
|
func (f *Faction) IsValid() bool {
|
|
return f.ID > 0 && len(f.Name) > 0
|
|
}
|
|
|
|
// IsSpecialFaction returns true if this is a special faction (ID <= 10)
|
|
func (f *Faction) IsSpecialFaction() bool {
|
|
return f.ID <= SpecialFactionIDMax
|
|
}
|
|
|
|
// CanIncrease returns true if this faction can be increased
|
|
func (f *Faction) CanIncrease() bool {
|
|
return !f.IsSpecialFaction() && f.PositiveChange != 0
|
|
}
|
|
|
|
// CanDecrease returns true if this faction can be decreased
|
|
func (f *Faction) CanDecrease() bool {
|
|
return !f.IsSpecialFaction() && f.NegativeChange != 0
|
|
}
|