# Abstract SAVER class. 
# Most methods will have to be overridden in sub-classes in order for the saver to function properly
# All Saver sub-classes should be stored in PS::Saver::name_of_saver.pm
#
# NOTE ********* The Saver API is NOT complete, nor documented at this time ************
#
package PS::Saver;
use base qw( PS::Base );

require 5.006_000;

use strict;
use util;
use Carp;

# -----------------------------------------------------------------------------------------------------------------------------
sub init { 
  my $self = shift;
  my $args = shift;
  $self->SUPER::init($args);
  print "DEBUG >>	Initializing PS::Saver ...\n" if $self->DEBUG;

  return $self;
} 
# -----------------------------------------------------------------------------------------------------------------------------
# register a variable so it can be saved later.
sub registervar {
  my $self = shift;
  my $prefix = lc shift;
  while (my $var = shift) {
    if (ref $var eq 'ARRAY') {
      $self->registervar($prefix, @$var);
    } elsif (ref $var eq 'HASH') {
      foreach my $v (keys %$var) {
        $self->{vars}{$prefix}{$v} = $var->{$v};
      }
    } else {
      $self->{vars}{$prefix}{$var}++;
    }
  }
}
# -----------------------------------------------------------------------------------------------------------------------------
# Run after every 'source' is depleted of new log files. Handy to clean up event histories, or whatever
sub cleanup {
  my $self = shift;

  # do stuff ...
}
# -----------------------------------------------------------------------------------------------------------------------------
sub get_eventid { $_[0]->_notdefined(myfuncname()) }
sub get_weaponid { $_[0]->_notdefined(myfuncname()) }
sub get_mapid { $_[0]->_notdefined(myfuncname()) }
sub get_teamid { $_[0]->_notdefined(myfuncname()) }
sub get_gametypeid { $_[0]->_notdefined(myfuncname()) }
sub get_modtypeid { $_[0]->_notdefined(myfuncname()) }

sub get_plrid { $_[0]->_notdefined(myfuncname()) }

sub save_plr { $_[0]->_notdefined(myfuncname()) }
sub load_plr { $_[0]->_notdefined(myfuncname()) }
sub load_plr_var { $_[0]->_notdefined(myfuncname()) }
sub load_plr_var_decay { $_[0]->_notdefined(myfuncname()) }

sub save_rcon { $_[0]->_notdefined(myfuncname()) }
sub get_last_statdate { $_[0]->_notdefined(myfuncname()) }
sub get_statdate_range { $_[0]->_notdefined(myfuncname()) }
# -----------------------------------------------------------------------------------------------------------------------------


1;

