2025-08-07 12:47:52 -05:00

81 lines
2.3 KiB
Go

// Package alt_advancement provides a complete alternate advancement system for EQ2Go servers.
//
// Features:
// - Alternate advancement definitions with requirements and rewards
// - Thread-safe master AA list for server-wide management
// - Player-specific AA tracking and progression
// - Database operations with internal database wrapper
//
// Basic Usage:
//
// // Create database connection
// db, _ := database.NewSQLite("world.db")
//
// // Create new alternate advancement
// aa := alt_advancement.New(db)
// aa.NodeID = 1001
// aa.Name = "Dragon's Strength"
// aa.Group = alt_advancement.AA_CLASS
// aa.RankCost = 1
// aa.MaxRank = 5
//
// // Save to database (insert or update automatically)
// aa.Save()
//
// // Load alternate advancement by node ID
// loaded, _ := alt_advancement.Load(db, 1001)
//
// // Update and save
// loaded.Name = "Improved Dragon's Strength"
// loaded.Save()
//
// // Delete alternate advancement
// loaded.Delete()
//
// Master List Management:
//
// // Create master list for server-wide AA management
// masterList := alt_advancement.NewMasterList()
//
// // Load all AAs from database
// allAAs, _ := alt_advancement.LoadAll(db)
// for _, aa := range allAAs {
// masterList.AddAltAdvancement(aa)
// }
//
// // Get AAs by group/tab
// classAAs := masterList.GetAltAdvancementsByGroup(alt_advancement.AA_CLASS)
//
// // Get AAs by class requirement
// fighterAAs := masterList.GetAltAdvancementsByClass(1) // Fighter class
//
// // Get AAs available at specific level
// level20AAs := masterList.GetAltAdvancementsByLevel(20)
//
// Player AA Management:
//
// // Create player AA state
// playerState := alt_advancement.NewAAPlayerState(characterID)
//
// // Award AA points
// playerState.TotalPoints = 50
// playerState.AvailablePoints = 25
//
// // Track AA progress
// progress := &alt_advancement.PlayerAAData{
// CharacterID: characterID,
// NodeID: 1001,
// CurrentRank: 3,
// PointsSpent: 3,
// }
// playerState.AAProgress[1001] = progress
//
// Thread Safety:
//
// All operations are thread-safe using the generic MasterList base:
// - Read-heavy operations use RWMutex for optimal performance
// - Atomic operations for simple counters and flags
// - Proper lock ordering to prevent deadlocks
// - Background processing with goroutines and channels
package alt_advancement