Vladimir Hodakov
c9855116da
As result of profile format change, introduced in game update yesterday we need to change profile regexp. As result of some refactoring, rarely changed data removed from database and added to sources of bot.
89 lines
2.3 KiB
Go
89 lines
2.3 KiB
Go
// i2_bot – Instinct PokememBro Bot
|
||
// Copyright (c) 2018 Vladimir "fat0troll" Hodakov
|
||
|
||
package datacache
|
||
|
||
import (
|
||
"source.wtfteam.pro/i2_bot/i2_bot/lib/appcontext"
|
||
"source.wtfteam.pro/i2_bot/i2_bot/lib/datacache/datacacheinterface"
|
||
"source.wtfteam.pro/i2_bot/i2_bot/lib/datamapping"
|
||
"source.wtfteam.pro/i2_bot/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
|
||
|
||
// Chats
|
||
chats map[int]*dbmapping.Chat
|
||
chatsMutex sync.Mutex
|
||
// Squads
|
||
squads map[int]*dbmapping.Squad
|
||
squadsWithChats map[int]*dbmapping.SquadChat
|
||
squadPlayersRelations map[int]*dbmapping.SquadPlayer
|
||
squadPlayers map[int]map[int]*dbmapping.SquadPlayerFull
|
||
squadsMutex sync.Mutex
|
||
|
||
// Non-database data
|
||
// Elements
|
||
elements map[int]*datamapping.Element
|
||
// Leagues
|
||
leagues map[int]*datamapping.League
|
||
// Locations
|
||
locations map[int]*datamapping.Location
|
||
// Weapons
|
||
weapons map[int]*datamapping.Weapon
|
||
}
|
||
|
||
// 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()
|
||
dc.initChats()
|
||
dc.loadChats()
|
||
dc.initSquads()
|
||
dc.loadSquads()
|
||
}
|