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:
Albin 2020-10-21 17:05:53 +02:00 committed by GitHub
parent 7fb57a273b
commit 8b2cc76c30
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 126 additions and 0 deletions

View File

@ -188,6 +188,7 @@ const (
LevelSubstitutions = "/data/global/excel/LvlSub.txt"
ObjectDetails = "/data/global/excel/Objects.txt"
ObjectMode = "/data/global/excel/ObjMode.txt"
SoundSettings = "/data/global/excel/Sounds.txt"
ItemStatCost = "/data/global/excel/ItemStatCost.txt"
ItemRatio = "/data/global/excel/itemratio.txt"
@ -229,6 +230,8 @@ const (
CompCode = "/data/global/excel/compcode.txt"
Belts = "/data/global/excel/belts.txt"
Gamble = "/data/global/excel/gamble.txt"
Colors = "/data/global/excel/colors.txt"
StorePage = "/data/global/excel/StorePage.txt"
// --- Animations ---

View File

@ -89,6 +89,7 @@ func (am *AssetManager) initDataDictionaries() error {
d2resource.MagicSuffix,
d2resource.ItemStatCost,
d2resource.ItemRatio,
d2resource.StorePage,
d2resource.Overlays,
d2resource.CharStats,
d2resource.Hireling,
@ -135,6 +136,7 @@ func (am *AssetManager) initDataDictionaries() error {
d2resource.RarePrefix,
d2resource.RareSuffix,
d2resource.Events,
d2resource.Colors,
}
for _, path := range dictPaths {

View 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
}

View File

@ -0,0 +1,8 @@
package d2records
type Colors map[string]*ColorRecord
type ColorRecord struct {
TransformColor string
Code string
}

View 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
}

View File

@ -0,0 +1,8 @@
package d2records
type ObjectModes map[string]*ObjectModeRecord
type ObjectModeRecord struct {
Name string
Token string
}

View File

@ -43,6 +43,7 @@ type RecordManager struct {
Stats CharStats
}
ComponentCodes
Colors
DifficultyLevels
ElemTypes
Gamble
@ -81,6 +82,7 @@ type RecordManager struct {
TreasureClass
Types ItemTypes
Unique UniqueItems
StorePages
}
Layout struct {
Inventory
@ -121,6 +123,7 @@ type RecordManager struct {
Object struct {
Details ObjectDetails
Lookup IndexedObjects
Modes ObjectModes
Shrines
Types ObjectTypes
}
@ -147,11 +150,13 @@ func (r *RecordManager) init() error {
{d2resource.LevelWarp, levelWarpsLoader},
{d2resource.ObjectType, objectTypesLoader},
{d2resource.ObjectDetails, objectDetailsLoader},
{d2resource.ObjectMode, objectModesLoader},
{d2resource.Weapons, weaponsLoader},
{d2resource.Armor, armorLoader},
{d2resource.Misc, miscItemsLoader},
{d2resource.Books, booksLoader},
{d2resource.Belts, beltsLoader},
{d2resource.Colors, colorsLoader},
{d2resource.ItemTypes, itemTypesLoader}, // WARN: needs to be after weapons, armor, and misc
{d2resource.UniqueItems, uniqueItemsLoader},
{d2resource.Missiles, missilesLoader},
@ -166,6 +171,7 @@ func (r *RecordManager) init() error {
{d2resource.MagicSuffix, magicSuffixLoader},
{d2resource.ItemStatCost, itemStatCostLoader},
{d2resource.ItemRatio, itemRatioLoader},
{d2resource.StorePage, storePagesLoader},
{d2resource.Overlays, overlaysLoader},
{d2resource.CharStats, charStatsLoader},
{d2resource.Gamble, gambleLoader},

View 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
}

View 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
}