mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2024-11-19 19:06:45 -05:00
Properties.txt loader (#580)
* adding loader for properties.txt * adding resource path for properties.txt * adding call to properties loader * typo
This commit is contained in:
parent
8577dfc3aa
commit
8c16ea2880
@ -235,6 +235,7 @@ func (p *App) loadDataDict() error {
|
||||
{d2resource.CubeRecipes, d2datadict.LoadCubeRecipes},
|
||||
{d2resource.SuperUniques, d2datadict.LoadSuperUniques},
|
||||
{d2resource.Inventory, d2datadict.LoadInventory},
|
||||
{d2resource.Properties, d2datadict.LoadProperties},
|
||||
}
|
||||
|
||||
d2datadict.InitObjectRecords()
|
||||
|
91
d2common/d2data/d2datadict/properties.go
Normal file
91
d2common/d2data/d2datadict/properties.go
Normal file
@ -0,0 +1,91 @@
|
||||
package d2datadict
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/OpenDiablo2/OpenDiablo2/d2common"
|
||||
)
|
||||
|
||||
type stat struct {
|
||||
SetID int
|
||||
Value int
|
||||
FunctionID int
|
||||
StatCode string
|
||||
}
|
||||
|
||||
// PropertyRecord is a representation of a single row of gems.txt
|
||||
// it describes the properties of socketable items
|
||||
type PropertyRecord struct {
|
||||
Code string
|
||||
Active string
|
||||
Stats [7]*stat
|
||||
}
|
||||
|
||||
// Properties stores all of the PropertyRecords
|
||||
var Properties map[string]*PropertyRecord //nolint:gochecknoglobals // Currently global by design,
|
||||
// only written once
|
||||
|
||||
// LoadProperties loads gem records into a map[string]*PropertiesRecord
|
||||
func LoadProperties(file []byte) {
|
||||
Properties = make(map[string]*PropertyRecord)
|
||||
|
||||
d := d2common.LoadDataDictionary(file)
|
||||
for d.Next() {
|
||||
prop := &PropertyRecord{
|
||||
Code: d.String("code"),
|
||||
Active: d.String("*done"),
|
||||
Stats: [7]*stat{
|
||||
{
|
||||
SetID: d.Number("set1"),
|
||||
Value: d.Number("val1"),
|
||||
FunctionID: d.Number("func1"),
|
||||
StatCode: d.String("stat1"),
|
||||
},
|
||||
{
|
||||
SetID: d.Number("set2"),
|
||||
Value: d.Number("val2"),
|
||||
FunctionID: d.Number("func2"),
|
||||
StatCode: d.String("stat2"),
|
||||
},
|
||||
{
|
||||
SetID: d.Number("set3"),
|
||||
Value: d.Number("val3"),
|
||||
FunctionID: d.Number("func3"),
|
||||
StatCode: d.String("stat3"),
|
||||
},
|
||||
{
|
||||
SetID: d.Number("set4"),
|
||||
Value: d.Number("val4"),
|
||||
FunctionID: d.Number("func4"),
|
||||
StatCode: d.String("stat4"),
|
||||
},
|
||||
{
|
||||
SetID: d.Number("set5"),
|
||||
Value: d.Number("val5"),
|
||||
FunctionID: d.Number("func5"),
|
||||
StatCode: d.String("stat5"),
|
||||
},
|
||||
{
|
||||
SetID: d.Number("set6"),
|
||||
Value: d.Number("val6"),
|
||||
FunctionID: d.Number("func6"),
|
||||
StatCode: d.String("stat6"),
|
||||
},
|
||||
{
|
||||
SetID: d.Number("set7"),
|
||||
Value: d.Number("val7"),
|
||||
FunctionID: d.Number("func7"),
|
||||
StatCode: d.String("stat7"),
|
||||
},
|
||||
},
|
||||
}
|
||||
Properties[prop.Code] = prop
|
||||
}
|
||||
|
||||
if d.Err != nil {
|
||||
panic(d.Err)
|
||||
}
|
||||
|
||||
log.Printf("Loaded %d Property records", len(Properties))
|
||||
}
|
||||
|
@ -182,6 +182,7 @@ const (
|
||||
ObjectDetails = "/data/global/excel/Objects.txt"
|
||||
SoundSettings = "/data/global/excel/Sounds.txt"
|
||||
ItemStatCost = "/data/global/excel/ItemStatCost.txt"
|
||||
Properties = "/data/global/excel/Properties.txt"
|
||||
Hireling = "/data/global/excel/hireling.txt"
|
||||
DifficultyLevels = "/data/global/excel/difficultylevels.txt"
|
||||
AutoMap = "/data/global/excel/AutoMap.txt"
|
||||
|
Loading…
Reference in New Issue
Block a user