interface to any
This commit is contained in:
parent
41f80008c9
commit
5cb4b5b56c
@ -101,19 +101,18 @@ func (d *Database) GetPool() *sqlitex.Pool {
|
||||
return d.pool
|
||||
}
|
||||
|
||||
|
||||
// Query executes a query that returns rows
|
||||
func (d *Database) Query(query string, args ...interface{}) (*sql.Rows, error) {
|
||||
func (d *Database) Query(query string, args ...any) (*sql.Rows, error) {
|
||||
return d.db.Query(query, args...)
|
||||
}
|
||||
|
||||
// QueryRow executes a query that returns a single row
|
||||
func (d *Database) QueryRow(query string, args ...interface{}) *sql.Row {
|
||||
func (d *Database) QueryRow(query string, args ...any) *sql.Row {
|
||||
return d.db.QueryRow(query, args...)
|
||||
}
|
||||
|
||||
// Exec executes a query that doesn't return rows
|
||||
func (d *Database) Exec(query string, args ...interface{}) (sql.Result, error) {
|
||||
func (d *Database) Exec(query string, args ...any) (sql.Result, error) {
|
||||
return d.db.Exec(query, args...)
|
||||
}
|
||||
|
||||
@ -174,7 +173,7 @@ func NewMySQL(dsn string) (*Database, error) {
|
||||
}
|
||||
|
||||
// GetZones retrieves all zones from the database
|
||||
func (d *Database) GetZones() ([]map[string]interface{}, error) {
|
||||
func (d *Database) GetZones() ([]map[string]any, error) {
|
||||
rows, err := d.Query(`
|
||||
SELECT id, name, file, description, motd, min_level, max_level,
|
||||
min_version, xp_modifier, city_zone, weather_allowed,
|
||||
@ -187,10 +186,10 @@ func (d *Database) GetZones() ([]map[string]interface{}, error) {
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var zones []map[string]interface{}
|
||||
var zones []map[string]any
|
||||
|
||||
for rows.Next() {
|
||||
zone := make(map[string]interface{})
|
||||
zone := make(map[string]any)
|
||||
var id, minLevel, maxLevel, minVersion int
|
||||
var name, file, description, motd string
|
||||
var xpModifier, safeX, safeY, safeZ, safeHeading float64
|
||||
|
@ -43,8 +43,8 @@ type WorldInterface interface {
|
||||
|
||||
// DatabaseInterface defines database operations needed by packet handlers
|
||||
type DatabaseInterface interface {
|
||||
GetCharacter(characterID int32) (map[string]interface{}, error)
|
||||
SaveCharacter(characterID int32, data map[string]interface{}) error
|
||||
GetCharacter(characterID int32) (map[string]any, error)
|
||||
SaveCharacter(characterID int32, data map[string]any) error
|
||||
// Add more database methods as needed
|
||||
}
|
||||
|
||||
|
@ -212,7 +212,7 @@ All server data is persisted to SQLite:
|
||||
func (d *Database) LoadRules() (map[string]map[string]string, error)
|
||||
|
||||
// Zone management
|
||||
func (d *Database) GetZones() ([]map[string]interface{}, error)
|
||||
func (d *Database) GetZones() ([]map[string]any, error)
|
||||
|
||||
// Character persistence (planned)
|
||||
func (d *Database) SaveCharacter(character *Character) error
|
||||
|
@ -80,7 +80,7 @@ const (
|
||||
type AchievementEvent struct {
|
||||
Type AchievementEventType
|
||||
CharacterID int32
|
||||
Data map[string]interface{}
|
||||
Data map[string]any
|
||||
Timestamp int64
|
||||
}
|
||||
|
||||
@ -355,7 +355,7 @@ func (aeh *AchievementEventHandler) handleGenericEvent(event *AchievementEvent,
|
||||
}
|
||||
|
||||
// TriggerEvent is a convenience method for triggering achievement events
|
||||
func (w *World) TriggerAchievementEvent(eventType AchievementEventType, characterID int32, data map[string]interface{}) {
|
||||
func (w *World) TriggerAchievementEvent(eventType AchievementEventType, characterID int32, data map[string]any) {
|
||||
if w.achievementMgr == nil {
|
||||
return // Achievement system not initialized
|
||||
}
|
||||
@ -379,7 +379,7 @@ func (w *World) TriggerAchievementEvent(eventType AchievementEventType, characte
|
||||
|
||||
// OnNPCKill triggers an NPC kill achievement event
|
||||
func (w *World) OnNPCKill(characterID int32, npcID int32, npcLevel int32) {
|
||||
w.TriggerAchievementEvent(EventNPCKill, characterID, map[string]interface{}{
|
||||
w.TriggerAchievementEvent(EventNPCKill, characterID, map[string]any{
|
||||
"npc_id": npcID,
|
||||
"level": npcLevel,
|
||||
})
|
||||
@ -387,21 +387,21 @@ func (w *World) OnNPCKill(characterID int32, npcID int32, npcLevel int32) {
|
||||
|
||||
// OnQuestComplete triggers a quest completion achievement event
|
||||
func (w *World) OnQuestComplete(characterID int32, questID int32) {
|
||||
w.TriggerAchievementEvent(EventQuestCompleted, characterID, map[string]interface{}{
|
||||
w.TriggerAchievementEvent(EventQuestCompleted, characterID, map[string]any{
|
||||
"quest_id": questID,
|
||||
})
|
||||
}
|
||||
|
||||
// OnLevelGain triggers a level gain achievement event
|
||||
func (w *World) OnLevelGain(characterID int32, newLevel int32) {
|
||||
w.TriggerAchievementEvent(EventLevelGain, characterID, map[string]interface{}{
|
||||
w.TriggerAchievementEvent(EventLevelGain, characterID, map[string]any{
|
||||
"level": newLevel,
|
||||
})
|
||||
}
|
||||
|
||||
// OnItemDiscovered triggers an item discovery achievement event
|
||||
func (w *World) OnItemDiscovered(characterID int32, itemID int32, rarity string) {
|
||||
w.TriggerAchievementEvent(EventItemDiscovered, characterID, map[string]interface{}{
|
||||
w.TriggerAchievementEvent(EventItemDiscovered, characterID, map[string]any{
|
||||
"item_id": itemID,
|
||||
"rarity": rarity,
|
||||
})
|
||||
@ -409,7 +409,7 @@ func (w *World) OnItemDiscovered(characterID int32, itemID int32, rarity string)
|
||||
|
||||
// OnZoneDiscovered triggers a zone discovery achievement event
|
||||
func (w *World) OnZoneDiscovered(characterID int32, zoneID int32) {
|
||||
w.TriggerAchievementEvent(EventZoneDiscovered, characterID, map[string]interface{}{
|
||||
w.TriggerAchievementEvent(EventZoneDiscovered, characterID, map[string]any{
|
||||
"zone_id": zoneID,
|
||||
})
|
||||
}
|
@ -289,11 +289,11 @@ func (am *AchievementManager) RemovePlayerManager(characterID int32) {
|
||||
}
|
||||
|
||||
// GetStatistics returns achievement system statistics
|
||||
func (am *AchievementManager) GetStatistics() map[string]interface{} {
|
||||
func (am *AchievementManager) GetStatistics() map[string]any {
|
||||
am.mutex.RLock()
|
||||
defer am.mutex.RUnlock()
|
||||
|
||||
stats := map[string]interface{}{
|
||||
stats := map[string]any{
|
||||
"total_achievements": am.masterList.Size(),
|
||||
"online_players": len(am.playerManagers),
|
||||
"categories": am.masterList.GetCategories(),
|
||||
|
@ -25,7 +25,7 @@ type Client struct {
|
||||
Player *entity.Entity
|
||||
|
||||
// Connection information
|
||||
Connection interface{} // TODO: Will be *udp.Connection
|
||||
Connection any // TODO: Will be *udp.Connection
|
||||
IPAddress string
|
||||
ConnectedTime time.Time
|
||||
LastActivity time.Time
|
||||
|
@ -272,7 +272,7 @@ func (im *ItemManager) SearchItems(name string, maxResults int32) []*items.Item
|
||||
}
|
||||
|
||||
// GetStatistics returns item system statistics
|
||||
func (im *ItemManager) GetStatistics() map[string]interface{} {
|
||||
func (im *ItemManager) GetStatistics() map[string]any {
|
||||
im.mutex.RLock()
|
||||
defer im.mutex.RUnlock()
|
||||
|
||||
@ -284,7 +284,7 @@ func (im *ItemManager) GetStatistics() map[string]interface{} {
|
||||
totalWorldDrops += len(drops)
|
||||
}
|
||||
|
||||
result := make(map[string]interface{})
|
||||
result := make(map[string]any)
|
||||
for k, v := range systemStats {
|
||||
result[k] = v
|
||||
}
|
||||
|
@ -4,9 +4,9 @@ import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"eq2emu/internal/database"
|
||||
"eq2emu/internal/npc"
|
||||
"eq2emu/internal/npc/ai"
|
||||
"eq2emu/internal/database"
|
||||
)
|
||||
|
||||
// NPCManager manages NPCs for the world server
|
||||
@ -412,7 +412,7 @@ func (nm *NPCManager) RemoveNPCFromZone(zoneID int32, npcID int32) {
|
||||
}
|
||||
|
||||
// GetStatistics returns NPC system statistics
|
||||
func (nm *NPCManager) GetStatistics() map[string]interface{} {
|
||||
func (nm *NPCManager) GetStatistics() map[string]any {
|
||||
nm.mutex.RLock()
|
||||
defer nm.mutex.RUnlock()
|
||||
|
||||
@ -423,7 +423,7 @@ func (nm *NPCManager) GetStatistics() map[string]interface{} {
|
||||
totalZones := len(nm.npcsByZone)
|
||||
totalInCombat := len(nm.activeCombat)
|
||||
|
||||
result := map[string]interface{}{
|
||||
result := map[string]any{
|
||||
"total_npcs": stats.TotalNPCs,
|
||||
"npcs_in_combat": stats.NPCsInCombat,
|
||||
"npcs_with_spells": stats.NPCsWithSpells,
|
||||
|
@ -304,14 +304,14 @@ func (w *World) SendCharacterAchievements(client *Client) {
|
||||
|
||||
// Get all achievements with player progress
|
||||
allAchievements := w.achievementMgr.masterList.GetAllAchievements()
|
||||
characterData := make(map[string]interface{})
|
||||
characterData := make(map[string]any)
|
||||
|
||||
for achievementID, achievement := range allAchievements {
|
||||
progress := w.achievementMgr.GetPlayerProgress(characterID, achievementID)
|
||||
completed := w.achievementMgr.IsPlayerCompleted(characterID, achievementID)
|
||||
percentage := w.achievementMgr.GetCompletionPercentage(characterID, achievementID)
|
||||
|
||||
characterData[fmt.Sprintf("achievement_%d", achievementID)] = map[string]interface{}{
|
||||
characterData[fmt.Sprintf("achievement_%d", achievementID)] = map[string]any{
|
||||
"id": achievementID,
|
||||
"title": achievement.Title,
|
||||
"description": achievement.UncompletedText,
|
||||
@ -564,7 +564,7 @@ func (w *World) SendNPCInfo(client *Client, npcID int32) {
|
||||
}
|
||||
|
||||
// SendNPCUpdate sends NPC update to clients in range
|
||||
func (w *World) SendNPCUpdate(npcID int32, updateType string, data map[string]interface{}) {
|
||||
func (w *World) SendNPCUpdate(npcID int32, updateType string, data map[string]any) {
|
||||
// TODO: Implement NPC update broadcasting
|
||||
// This would send updates to all clients in range of the NPC
|
||||
|
||||
@ -604,13 +604,13 @@ type WorldDatabaseAdapter struct {
|
||||
}
|
||||
|
||||
// GetCharacter implements packets.DatabaseInterface
|
||||
func (wda *WorldDatabaseAdapter) GetCharacter(characterID int32) (map[string]interface{}, error) {
|
||||
func (wda *WorldDatabaseAdapter) GetCharacter(characterID int32) (map[string]any, error) {
|
||||
// TODO: Implement character loading from database
|
||||
return nil, fmt.Errorf("character loading not yet implemented")
|
||||
}
|
||||
|
||||
// SaveCharacter implements packets.DatabaseInterface
|
||||
func (wda *WorldDatabaseAdapter) SaveCharacter(characterID int32, data map[string]interface{}) error {
|
||||
func (wda *WorldDatabaseAdapter) SaveCharacter(characterID int32, data map[string]any) error {
|
||||
// TODO: Implement character saving to database
|
||||
return fmt.Errorf("character saving not yet implemented")
|
||||
}
|
||||
@ -902,7 +902,7 @@ func (w *World) HandleItemUpdate(ctx *packets.PacketContext, packet *packets.Pac
|
||||
}
|
||||
|
||||
// SendItemDetails sends detailed item information to a client
|
||||
func (w *World) SendItemDetails(client *Client, item interface{}) {
|
||||
func (w *World) SendItemDetails(client *Client, item any) {
|
||||
if w.itemMgr == nil {
|
||||
return
|
||||
}
|
||||
@ -947,7 +947,7 @@ func (w *World) SendPlayerInventory(client *Client) {
|
||||
}
|
||||
|
||||
// SendItemUpdate sends item update to client
|
||||
func (w *World) SendItemUpdate(client *Client, updateType string, itemData map[string]interface{}) {
|
||||
func (w *World) SendItemUpdate(client *Client, updateType string, itemData map[string]any) {
|
||||
if w.itemMgr == nil {
|
||||
return
|
||||
}
|
||||
@ -961,7 +961,7 @@ func (w *World) SendItemUpdate(client *Client, updateType string, itemData map[s
|
||||
}
|
||||
|
||||
// BroadcastItemUpdate broadcasts item updates to nearby players
|
||||
func (w *World) BroadcastItemUpdate(sourcePlayerID uint32, updateType string, itemData map[string]interface{}) {
|
||||
func (w *World) BroadcastItemUpdate(sourcePlayerID uint32, updateType string, itemData map[string]any) {
|
||||
// TODO: Implement item update broadcasting (for things like equipment changes visible to others)
|
||||
|
||||
fmt.Printf("Broadcasting item update from player %d: %s - %v\n",
|
||||
|
@ -4,8 +4,8 @@ import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"eq2emu/internal/titles"
|
||||
"eq2emu/internal/database"
|
||||
"eq2emu/internal/titles"
|
||||
)
|
||||
|
||||
// TitleManager manages titles for the world server
|
||||
@ -198,7 +198,7 @@ func (tm *TitleManager) ProcessAchievementCompletion(playerID int32, achievement
|
||||
}
|
||||
|
||||
// GetStatistics returns title system statistics
|
||||
func (tm *TitleManager) GetStatistics() map[string]interface{} {
|
||||
func (tm *TitleManager) GetStatistics() map[string]any {
|
||||
tm.mutex.RLock()
|
||||
defer tm.mutex.RUnlock()
|
||||
|
||||
@ -206,7 +206,7 @@ func (tm *TitleManager) GetStatistics() map[string]interface{} {
|
||||
titleManagerStats := tm.titleManager.GetStatistics()
|
||||
|
||||
// Combine with our own statistics
|
||||
stats := map[string]interface{}{
|
||||
stats := map[string]any{
|
||||
"total_titles": tm.titleManager.GetMasterList().GetTitleCount(),
|
||||
}
|
||||
|
||||
|
@ -49,10 +49,10 @@ type World struct {
|
||||
itemMgr *ItemManager
|
||||
|
||||
// Master lists (singletons)
|
||||
masterSpells interface{} // TODO: implement spell manager
|
||||
masterQuests interface{} // TODO: implement quest manager
|
||||
masterSkills interface{} // TODO: implement skill manager
|
||||
masterFactions interface{} // TODO: implement faction manager
|
||||
masterSpells any // TODO: implement spell manager
|
||||
masterQuests any // TODO: implement quest manager
|
||||
masterSkills any // TODO: implement skill manager
|
||||
masterFactions any // TODO: implement faction manager
|
||||
|
||||
// Server statistics
|
||||
stats *ServerStatistics
|
||||
|
Loading…
x
Reference in New Issue
Block a user