Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 33 additions & 20 deletions tools/database/atlasloot.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
"github.com/wowsims/mop/tools"
)

func ReadAtlasLootData() *WowDatabase {
func ReadAtlasLootData(dbHelper *DBHelper) *WowDatabase {
db := NewWowDatabase()

// Read these in reverse order, because some items are listed in multiple expansions
Expand All @@ -30,7 +30,7 @@ func ReadAtlasLootData() *WowDatabase {
readAtlasLootDungeonData(db, proto.Expansion_ExpansionCata, "https://raw.githubusercontent.com/snowflame0/AtlasLootClassic_Cata/main/AtlasLootClassic_DungeonsAndRaids/data-cata.lua")
readAtlasLootFactionData(db, "https://raw.githubusercontent.com/snowflame0/AtlasLootClassic_Cata/main/AtlasLootClassic_Factions/data-cata.lua")

readZoneData(db)
readZoneData(db, dbHelper)

return db
}
Expand Down Expand Up @@ -312,31 +312,44 @@ func readAtlasLootFactionData(db *WowDatabase, srcUrl string) {
// }
// }

func readZoneData(db *WowDatabase) {
func readZoneData(db *WowDatabase, dbHelper *DBHelper) {
zoneIDs := make([]int32, 0, len(db.Zones))
for zoneID := range db.Zones {
zoneIDs = append(zoneIDs, zoneID)
}
zoneIDStrs := core.MapSlice(zoneIDs, func(zoneID int32) string { return strconv.Itoa(int(zoneID)) })
//Todo: This is the only place still needing the tooltip manager
//Remove it
zoneTM := &WowheadTooltipManager{
TooltipManager{
FilePath: "",
UrlPattern: "https://nether.wowhead.com/mop-classic/tooltip/zone/%s",
},

zoneNames, error := loadZones(dbHelper)
if error != nil {
panic(error)
}

for _, zoneID := range zoneIDs {
db.Zones[zoneID].Name = zoneNames[zoneID]
}
}

func loadZones(dbHelper *DBHelper) (map[int32]string, error) {
const query = `SELECT ID, AreaName_lang FROM AreaTable`

rows, err := dbHelper.db.Query(query)
if err != nil {
return nil, fmt.Errorf("querying drop sources: %w", err)
}
zoneTooltips := zoneTM.FetchFromWeb(zoneIDStrs)

tooltipPattern := regexp.MustCompile(`{"name":"(.*?)",`)
for i, zoneID := range zoneIDs {
tooltip := zoneTooltips[zoneIDStrs[i]]
match := tooltipPattern.FindStringSubmatch(tooltip)
if match == nil {
log.Fatalf("Error parsing zone tooltip %s", tooltip)
defer rows.Close()

var zoneId int32
var zoneName string
namesByZone := make(map[int32]string)
for rows.Next() {
e := rows.Scan(&zoneId, &zoneName)
if e != nil {
return nil, e
}
db.Zones[zoneID].Name = match[1]

namesByZone[zoneId] = zoneName
}

return namesByZone, nil
}

var AtlasLootProfessionIDs = map[int]proto.Profession{
Expand Down
8 changes: 7 additions & 1 deletion tools/database/gen_db/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,13 @@ func main() {
inputsDir := fmt.Sprintf("%s/db_inputs", *outDir)

if *genAsset == "atlasloot" {
db := database.ReadAtlasLootData()
helper, err := database.NewDBHelper()
if err != nil {
log.Fatalf("failed to initialize database: %v", err)
}
defer helper.Close()

db := database.ReadAtlasLootData(helper)
db.WriteJson(fmt.Sprintf("%s/atlasloot_db.json", inputsDir))
return
} else if *genAsset == "reforge-stats" {
Expand Down
Loading
Loading