77 lines
2.0 KiB
Go
77 lines
2.0 KiB
Go
|
// i2_bot – Instinct PokememBro Bot
|
|||
|
// Copyright (c) 2018 Vladimir "fat0troll" Hodakov
|
|||
|
|
|||
|
package datacache
|
|||
|
|
|||
|
import (
|
|||
|
"git.wtfteam.pro/fat0troll/i2_bot/lib/appcontext"
|
|||
|
"git.wtfteam.pro/fat0troll/i2_bot/lib/datacache/datacacheinterface"
|
|||
|
"git.wtfteam.pro/fat0troll/i2_bot/lib/dbmapping"
|
|||
|
"sync"
|
|||
|
)
|
|||
|
|
|||
|
var (
|
|||
|
c *appcontext.Context
|
|||
|
)
|
|||
|
|
|||
|
// DataCache is a function-handling struct for package datacache.
|
|||
|
// Also, it's a data cache: it handles all data, powered by DataCache functions.
|
|||
|
type DataCache struct {
|
|||
|
// Players — users of bot
|
|||
|
players map[int]*dbmapping.Player
|
|||
|
playersMutex sync.Mutex
|
|||
|
// Profiles - game profiles, no matter, actual or not
|
|||
|
profiles map[int]*dbmapping.Profile
|
|||
|
profilesMutex sync.Mutex
|
|||
|
// Current profiles - actual profiles for players, mostly used by bot
|
|||
|
// Note: int in this array for player ID, not for profile ID
|
|||
|
currentProfiles map[int]*dbmapping.Profile
|
|||
|
currentProfilesMutex sync.Mutex
|
|||
|
// Pokememes
|
|||
|
pokememes map[int]*dbmapping.Pokememe
|
|||
|
pokememesMutex sync.Mutex
|
|||
|
// Pokememes with all supported data
|
|||
|
fullPokememes map[int]*dbmapping.PokememeFull
|
|||
|
fullPokememesMutex sync.Mutex
|
|||
|
|
|||
|
// Elements
|
|||
|
elements map[int]*dbmapping.Element
|
|||
|
elementsMutex sync.Mutex
|
|||
|
// Leagues
|
|||
|
leagues map[int]*dbmapping.League
|
|||
|
leaguesMutex sync.Mutex
|
|||
|
// Locations
|
|||
|
locations map[int]*dbmapping.Location
|
|||
|
locationsMutex sync.Mutex
|
|||
|
// Weapons
|
|||
|
weapons map[int]*dbmapping.Weapon
|
|||
|
weaponsMutex sync.Mutex
|
|||
|
}
|
|||
|
|
|||
|
// New is an initialization function for appcontext
|
|||
|
func New(ac *appcontext.Context) {
|
|||
|
c = ac
|
|||
|
dc := &DataCache{}
|
|||
|
c.RegisterDataCacheInterface(datacacheinterface.DataCacheInterface(dc))
|
|||
|
}
|
|||
|
|
|||
|
// Init is a initialization function for package
|
|||
|
func (dc *DataCache) Init() {
|
|||
|
c.Log.Info("Initializing DataCache...")
|
|||
|
|
|||
|
dc.initElements()
|
|||
|
dc.loadElements()
|
|||
|
dc.initLeagues()
|
|||
|
dc.loadLeagues()
|
|||
|
dc.initLocations()
|
|||
|
dc.loadLocations()
|
|||
|
dc.initWeapons()
|
|||
|
dc.loadWeapons()
|
|||
|
dc.initPokememes()
|
|||
|
dc.loadPokememes()
|
|||
|
dc.initPlayers()
|
|||
|
dc.loadPlayers()
|
|||
|
dc.initProfiles()
|
|||
|
dc.loadProfiles()
|
|||
|
}
|