mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2024-10-01 15:46:17 -04:00
Added ObjectMode, StorePage and Colors.txt resource loaders (#771)
* add ObjMode.txt loader * add colors.txt loader * added storepage loader * Update storepage_loader.go removed printline Co-authored-by: kottz <edward.kallstedt@gmail.com>
This commit is contained in:
parent
7fb57a273b
commit
8b2cc76c30
@ -188,6 +188,7 @@ const (
|
|||||||
LevelSubstitutions = "/data/global/excel/LvlSub.txt"
|
LevelSubstitutions = "/data/global/excel/LvlSub.txt"
|
||||||
|
|
||||||
ObjectDetails = "/data/global/excel/Objects.txt"
|
ObjectDetails = "/data/global/excel/Objects.txt"
|
||||||
|
ObjectMode = "/data/global/excel/ObjMode.txt"
|
||||||
SoundSettings = "/data/global/excel/Sounds.txt"
|
SoundSettings = "/data/global/excel/Sounds.txt"
|
||||||
ItemStatCost = "/data/global/excel/ItemStatCost.txt"
|
ItemStatCost = "/data/global/excel/ItemStatCost.txt"
|
||||||
ItemRatio = "/data/global/excel/itemratio.txt"
|
ItemRatio = "/data/global/excel/itemratio.txt"
|
||||||
@ -229,6 +230,8 @@ const (
|
|||||||
CompCode = "/data/global/excel/compcode.txt"
|
CompCode = "/data/global/excel/compcode.txt"
|
||||||
Belts = "/data/global/excel/belts.txt"
|
Belts = "/data/global/excel/belts.txt"
|
||||||
Gamble = "/data/global/excel/gamble.txt"
|
Gamble = "/data/global/excel/gamble.txt"
|
||||||
|
Colors = "/data/global/excel/colors.txt"
|
||||||
|
StorePage = "/data/global/excel/StorePage.txt"
|
||||||
|
|
||||||
// --- Animations ---
|
// --- Animations ---
|
||||||
|
|
||||||
|
@ -89,6 +89,7 @@ func (am *AssetManager) initDataDictionaries() error {
|
|||||||
d2resource.MagicSuffix,
|
d2resource.MagicSuffix,
|
||||||
d2resource.ItemStatCost,
|
d2resource.ItemStatCost,
|
||||||
d2resource.ItemRatio,
|
d2resource.ItemRatio,
|
||||||
|
d2resource.StorePage,
|
||||||
d2resource.Overlays,
|
d2resource.Overlays,
|
||||||
d2resource.CharStats,
|
d2resource.CharStats,
|
||||||
d2resource.Hireling,
|
d2resource.Hireling,
|
||||||
@ -135,6 +136,7 @@ func (am *AssetManager) initDataDictionaries() error {
|
|||||||
d2resource.RarePrefix,
|
d2resource.RarePrefix,
|
||||||
d2resource.RareSuffix,
|
d2resource.RareSuffix,
|
||||||
d2resource.Events,
|
d2resource.Events,
|
||||||
|
d2resource.Colors,
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, path := range dictPaths {
|
for _, path := range dictPaths {
|
||||||
|
30
d2core/d2records/color_loader.go
Normal file
30
d2core/d2records/color_loader.go
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package d2records
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2fileformats/d2txt"
|
||||||
|
)
|
||||||
|
|
||||||
|
func colorsLoader(r *RecordManager, d *d2txt.DataDictionary) error {
|
||||||
|
records := make(Colors)
|
||||||
|
|
||||||
|
for d.Next() {
|
||||||
|
record := &ColorRecord{
|
||||||
|
TransformColor: d.String("Transform Color"),
|
||||||
|
Code: d.String("Code"),
|
||||||
|
}
|
||||||
|
|
||||||
|
records[record.TransformColor] = record
|
||||||
|
}
|
||||||
|
|
||||||
|
if d.Err != nil {
|
||||||
|
panic(d.Err)
|
||||||
|
}
|
||||||
|
|
||||||
|
r.Colors = records
|
||||||
|
|
||||||
|
log.Printf("Loaded %d Color records", len(records))
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
8
d2core/d2records/color_record.go
Normal file
8
d2core/d2records/color_record.go
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package d2records
|
||||||
|
|
||||||
|
type Colors map[string]*ColorRecord
|
||||||
|
|
||||||
|
type ColorRecord struct {
|
||||||
|
TransformColor string
|
||||||
|
Code string
|
||||||
|
}
|
30
d2core/d2records/object_mode_loader.go
Normal file
30
d2core/d2records/object_mode_loader.go
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package d2records
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2fileformats/d2txt"
|
||||||
|
)
|
||||||
|
|
||||||
|
func objectModesLoader(r *RecordManager, d *d2txt.DataDictionary) error {
|
||||||
|
records := make(ObjectModes)
|
||||||
|
|
||||||
|
for d.Next() {
|
||||||
|
record := &ObjectModeRecord{
|
||||||
|
Name: d.String("Name"),
|
||||||
|
Token: d.String("Token"),
|
||||||
|
}
|
||||||
|
|
||||||
|
records[record.Name] = record
|
||||||
|
}
|
||||||
|
|
||||||
|
if d.Err != nil {
|
||||||
|
panic(d.Err)
|
||||||
|
}
|
||||||
|
|
||||||
|
r.Object.Modes = records
|
||||||
|
|
||||||
|
log.Printf("Loaded %d ObjectMode records", len(records))
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
8
d2core/d2records/object_mode_record.go
Normal file
8
d2core/d2records/object_mode_record.go
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package d2records
|
||||||
|
|
||||||
|
type ObjectModes map[string]*ObjectModeRecord
|
||||||
|
|
||||||
|
type ObjectModeRecord struct {
|
||||||
|
Name string
|
||||||
|
Token string
|
||||||
|
}
|
@ -43,6 +43,7 @@ type RecordManager struct {
|
|||||||
Stats CharStats
|
Stats CharStats
|
||||||
}
|
}
|
||||||
ComponentCodes
|
ComponentCodes
|
||||||
|
Colors
|
||||||
DifficultyLevels
|
DifficultyLevels
|
||||||
ElemTypes
|
ElemTypes
|
||||||
Gamble
|
Gamble
|
||||||
@ -81,6 +82,7 @@ type RecordManager struct {
|
|||||||
TreasureClass
|
TreasureClass
|
||||||
Types ItemTypes
|
Types ItemTypes
|
||||||
Unique UniqueItems
|
Unique UniqueItems
|
||||||
|
StorePages
|
||||||
}
|
}
|
||||||
Layout struct {
|
Layout struct {
|
||||||
Inventory
|
Inventory
|
||||||
@ -121,6 +123,7 @@ type RecordManager struct {
|
|||||||
Object struct {
|
Object struct {
|
||||||
Details ObjectDetails
|
Details ObjectDetails
|
||||||
Lookup IndexedObjects
|
Lookup IndexedObjects
|
||||||
|
Modes ObjectModes
|
||||||
Shrines
|
Shrines
|
||||||
Types ObjectTypes
|
Types ObjectTypes
|
||||||
}
|
}
|
||||||
@ -147,11 +150,13 @@ func (r *RecordManager) init() error {
|
|||||||
{d2resource.LevelWarp, levelWarpsLoader},
|
{d2resource.LevelWarp, levelWarpsLoader},
|
||||||
{d2resource.ObjectType, objectTypesLoader},
|
{d2resource.ObjectType, objectTypesLoader},
|
||||||
{d2resource.ObjectDetails, objectDetailsLoader},
|
{d2resource.ObjectDetails, objectDetailsLoader},
|
||||||
|
{d2resource.ObjectMode, objectModesLoader},
|
||||||
{d2resource.Weapons, weaponsLoader},
|
{d2resource.Weapons, weaponsLoader},
|
||||||
{d2resource.Armor, armorLoader},
|
{d2resource.Armor, armorLoader},
|
||||||
{d2resource.Misc, miscItemsLoader},
|
{d2resource.Misc, miscItemsLoader},
|
||||||
{d2resource.Books, booksLoader},
|
{d2resource.Books, booksLoader},
|
||||||
{d2resource.Belts, beltsLoader},
|
{d2resource.Belts, beltsLoader},
|
||||||
|
{d2resource.Colors, colorsLoader},
|
||||||
{d2resource.ItemTypes, itemTypesLoader}, // WARN: needs to be after weapons, armor, and misc
|
{d2resource.ItemTypes, itemTypesLoader}, // WARN: needs to be after weapons, armor, and misc
|
||||||
{d2resource.UniqueItems, uniqueItemsLoader},
|
{d2resource.UniqueItems, uniqueItemsLoader},
|
||||||
{d2resource.Missiles, missilesLoader},
|
{d2resource.Missiles, missilesLoader},
|
||||||
@ -166,6 +171,7 @@ func (r *RecordManager) init() error {
|
|||||||
{d2resource.MagicSuffix, magicSuffixLoader},
|
{d2resource.MagicSuffix, magicSuffixLoader},
|
||||||
{d2resource.ItemStatCost, itemStatCostLoader},
|
{d2resource.ItemStatCost, itemStatCostLoader},
|
||||||
{d2resource.ItemRatio, itemRatioLoader},
|
{d2resource.ItemRatio, itemRatioLoader},
|
||||||
|
{d2resource.StorePage, storePagesLoader},
|
||||||
{d2resource.Overlays, overlaysLoader},
|
{d2resource.Overlays, overlaysLoader},
|
||||||
{d2resource.CharStats, charStatsLoader},
|
{d2resource.CharStats, charStatsLoader},
|
||||||
{d2resource.Gamble, gambleLoader},
|
{d2resource.Gamble, gambleLoader},
|
||||||
|
29
d2core/d2records/storepage_loader.go
Normal file
29
d2core/d2records/storepage_loader.go
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
package d2records
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2fileformats/d2txt"
|
||||||
|
)
|
||||||
|
|
||||||
|
func storePagesLoader(r *RecordManager, d *d2txt.DataDictionary) error {
|
||||||
|
records := make(StorePages)
|
||||||
|
|
||||||
|
for d.Next() {
|
||||||
|
record := &StorePageRecord{
|
||||||
|
StorePage: d.String("Store Page"),
|
||||||
|
Code: d.String("Code"),
|
||||||
|
}
|
||||||
|
records[record.StorePage] = record
|
||||||
|
}
|
||||||
|
|
||||||
|
if d.Err != nil {
|
||||||
|
panic(d.Err)
|
||||||
|
}
|
||||||
|
|
||||||
|
r.Item.StorePages = records
|
||||||
|
|
||||||
|
log.Printf("Loaded %d StorePage records", len(records))
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
10
d2core/d2records/storepage_record.go
Normal file
10
d2core/d2records/storepage_record.go
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package d2records
|
||||||
|
|
||||||
|
// StorePages struct contains all store page records
|
||||||
|
type StorePages map[string]*StorePageRecord
|
||||||
|
|
||||||
|
// StorePageRecords represent a row in the storepage.txt file
|
||||||
|
type StorePageRecord struct {
|
||||||
|
StorePage string
|
||||||
|
Code string
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user