mirror of https://github.com/velour/catbase.git
73 lines
1.6 KiB
Go
73 lines
1.6 KiB
Go
package velouremon
|
|
|
|
import (
|
|
"github.com/rs/zerolog/log"
|
|
|
|
"github.com/velour/catbase/bot/user"
|
|
)
|
|
|
|
func (vp *VelouremonPlugin) loadPlayers() error {
|
|
rows, err := vp.db.Queryx("select * from velouremon_players;")
|
|
if err != nil {
|
|
log.Error().Err(err)
|
|
return err
|
|
}
|
|
defer rows.Close()
|
|
|
|
for rows.Next() {
|
|
player := &Player{}
|
|
err := rows.StructScan(player)
|
|
if err != nil {
|
|
log.Error().Err(err)
|
|
return err
|
|
}
|
|
vp.players = append(vp.players, player)
|
|
player.Creatures, err = vp.loadCreaturesForPlayer(player)
|
|
if err != nil {
|
|
log.Error().Err(err)
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (vp *VelouremonPlugin) addPlayer(p *user.User) (*Player, error) {
|
|
player := &Player{
|
|
ChatID: p.ID,
|
|
Name: p.Name,
|
|
Health: 255,
|
|
Experience: 0,
|
|
Creatures: []*Creature{},
|
|
}
|
|
|
|
res, err := vp.db.Exec(`insert into velouremon_players (chatid, player, health, experience) values (?, ?, ?, ?);`,
|
|
player.ChatID, player.Name, player.Health, player.Experience)
|
|
if err != nil {
|
|
log.Error().Err(err)
|
|
return nil, err
|
|
}
|
|
|
|
id, err := res.LastInsertId()
|
|
if err != nil {
|
|
log.Error().Err(err)
|
|
return nil, err
|
|
}
|
|
player.ID = id
|
|
vp.players = append(vp.players, player)
|
|
return player, nil
|
|
}
|
|
|
|
func (vp *VelouremonPlugin) savePlayer(player *Player) error {
|
|
_, err := vp.db.Exec(`update velouremon_players set health = ?, experience = ? where id = ?;`, player.ID, player.Health, player.Experience)
|
|
if err != nil {
|
|
log.Error().Err(err)
|
|
return err
|
|
}
|
|
err = vp.savePlayerCreatures(player)
|
|
if err != nil {
|
|
log.Error().Err(err)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|