81 lines
2.3 KiB
Go
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
|