// ==> This file will deal with skillspoints


#include "../mud.h"
#include "../character.h"
#include "../account.h"
#include "../storage.h"
#include "../auxiliary.h"
#include "../handler.h"
#include "../socket.h"
#include "../utils.h"
#include "../save.h"
#include "../set_val/set_val.h"

#include "skillpoints.h"

/************************************************************************
*			    auxiliary data for skillpoints		      	*
************************************************************************/
typedef struct skillpoints_data {
  int skillpoints;
} SKILLPOINTS_DATA;

  SKILLPOINTS_DATA *newSkillpointsData() {
  SKILLPOINTS_DATA *data = malloc(sizeof(SKILLPOINTS_DATA));
  data->skillpoints = 0;
  return data;
}

void deleteSkillpointsData(SKILLPOINTS_DATA *data) {
  free(data);
}

void skillpointsDataCopyTo(SKILLPOINTS_DATA *from, SKILLPOINTS_DATA *to) {
  to->skillpoints = from->skillpoints;
}

SKILLPOINTS_DATA *skillpointsDataCopy(SKILLPOINTS_DATA *data) {
  SKILLPOINTS_DATA *new_data = newSkillpointsData();
  skillpointsDataCopyTo(data, new_data);
  return new_data;
}

STORAGE_SET *skillpointsDataStore(SKILLPOINTS_DATA *data) {
  STORAGE_SET *set = new_storage_set();
  store_int(set, "skillpoints", data->skillpoints);
  return set;
}

SKILLPOINTS_DATA *skillpointsDataRead(STORAGE_SET *set) {
  SKILLPOINTS_DATA *data = newSkillpointsData();
  data->skillpoints = read_int(set, "skillpoints");
  return data;
}

int charGetSkillpoints(CHAR_DATA *ch)
{
SKILLPOINTS_DATA *data = charGetAuxiliaryData(ch, "skillpoints_aux_data");
return data->skillpoints;
}

void charSetSkillpoints(CHAR_DATA *ch, int new_skillpoints)
{
	SKILLPOINTS_DATA *skillpointsdata = charGetAuxiliaryData(ch, "skillpoints_aux_data");
	skillpointsdata->skillpoints = new_skillpoints;
	return;
}
/************************************************************************
	Below here are all of the init_ functions for this file.
*************************************************************************/
void init_skillpoints(void)
{
 add_set("skillpoints", SET_CHAR, SET_TYPE_INT, charSetSkillpoints, NULL);
 auxiliariesInstall("skillpoints_aux_data", newAuxiliaryFuncs(AUXILIARY_TYPE_CHAR, newSkillpointsData, 
 deleteSkillpointsData, skillpointsDataCopyTo, skillpointsDataCopy, skillpointsDataStore, skillpointsDataRead));
}