hdkv
/
i2_bot
Archived
1
Fork 0
This repository has been archived on 2022-11-04. You can view files and clone it, but cannot push or open issues/pull-requests.
i2_bot/lib/datacache/exported.go

98 lines
2.7 KiB
Go
Raw Normal View History

// i2_bot Instinct PokememBro Bot
// Copyright (c) 2018 Vladimir "fat0troll" Hodakov
package datacache
import (
2018-05-02 07:25:39 +04:00
"sync"
2018-05-19 12:14:25 +04:00
"github.com/fat0troll/i2_bot/lib/appcontext"
"github.com/fat0troll/i2_bot/lib/datacache/datacacheinterface"
"github.com/fat0troll/i2_bot/lib/datamapping"
"github.com/fat0troll/i2_bot/lib/dbmapping"
)
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
// Tournament reports
tournamentReports map[int]*dbmapping.TournamentReport
tournamentReportsByTournamentAndPlayer map[int]map[int]*dbmapping.TournamentReport
tournamentReportsMutex 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
// Rarely changing data
// Elements
elements map[int]*datamapping.Element
// Leagues
leagues map[int]*datamapping.League
// Levels
levels map[int]*datamapping.Level
// Locations
locations map[int]*datamapping.Location
// Pokememes
pokememes map[int]*datamapping.Pokememe
fullPokememes map[int]*datamapping.PokememeFull
pokememesGradeLocation map[int]map[int]int
// 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.initLevels()
dc.loadLevels()
dc.initPokememes()
dc.loadPokememes()
dc.initPlayers()
dc.loadPlayers()
dc.initProfiles()
dc.loadProfiles()
dc.initTournamentReports()
dc.loadTournamentReports()
dc.initChats()
dc.loadChats()
dc.initSquads()
dc.loadSquads()
}