60 lines
1.8 KiB
Go

// Package achievements provides a complete achievement system for EQ2Emulator servers.
//
// Features:
// - Achievement definitions with requirements and rewards
// - Thread-safe master achievement list for server-wide management
// - Player-specific achievement tracking and progress
// - Database operations with both SQLite and MySQL support
//
// Basic Usage:
//
// // Create database connection
// db, _ := database.NewSQLite("world.db")
// // db, _ := database.NewMySQL("user:pass@tcp(host:port)/dbname")
//
// // Create new achievement
// achievement := achievements.New(db)
// achievement.AchievementID = 1001
// achievement.Title = "Monster Slayer"
// achievement.Category = "Combat"
// achievement.PointValue = 50
//
// // Add requirements and rewards
// achievement.AddRequirement("kill_monsters", 100)
// achievement.AddReward("experience:5000")
//
// // Save to database (insert or update automatically)
// achievement.Save()
//
// // Load achievement by ID
// loaded, _ := achievements.Load(db, 1001)
//
// // Update and save
// loaded.Title = "Master Monster Slayer"
// loaded.Save()
//
// // Delete achievement
// loaded.Delete()
//
// Master List Management:
//
// // Create master list for server-wide achievement management
// masterList := achievements.NewMasterList()
//
// // Load all achievements from database
// allAchievements, _ := achievements.LoadAll(db)
// for _, ach := range allAchievements {
// masterList.AddAchievement(ach)
// }
//
// // Get achievements by category
// combatAchievements := masterList.GetAchievementsByCategory("Combat")
//
// Player Progress Management:
//
// // Player achievement management
// playerMgr := achievements.NewPlayerManager()
// achievements.LoadPlayerAchievements(db, playerID, playerMgr.Achievements)
// achievements.LoadPlayerAchievementUpdates(db, playerID, playerMgr.Updates)
package achievements