cotn25/area/
cotn25/src/
/***************************************************************************
 *  Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer,        *
 *  Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe.   *
 *                                                                         *
 *  Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael          *
 *  Chastain, Michael Quan, and Mitchell Tse.                              *
 *                                                                         *
 *  In order to use any part of this Merc Diku Mud, you must comply with   *
 *  both the original Diku license in 'license.doc' as well the Merc       *
 *  license in 'license.txt'.  In particular, you may not remove either of *
 *  these copyright notices.                                               *
 *                                                                         *
 *  Dystopia Mud improvements copyright (C) 2000, 2001 by Brian Graversen  *
 *                                                                         *
 *  Much time and thought has gone into this software and you are          *
 *  benefitting.  We hope that you share your changes too.  What goes      *
 *  around, comes around.                                                  *
 ***************************************************************************/

#include <sys/types.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

#include "merc.h"


void load_mudinfo()
{
        FILE     *fp;
        int       i;

        if ((fp = fopen("../txt/mudinfo.txt", "r")) == NULL)
        {
                log_string("Error: mudinfo.txt not found!");
                exit(1);
        }

        for (i = 0; i < (MUDINFO_MAX - 2); i++)
        {
                mudinfo[i] = fread_number(fp);
        }
        mudinfo[MUDINFO_MAX - 2] = 0;
        mudinfo[MUDINFO_MAX - 1] = 0;
        fclose(fp);
}


void load_ccenter()
{
  FILE *fp;
  int i;

  if ((fp = fopen("../txt/ccenter.txt", "r")) == NULL)
  {
    log_string("Error: ccenter.txt not found!");
    exit(1);
  }
  for (i = 0; i < CCENTER_MAX; i++)
  {
    ccenter[i] = fread_number(fp);
  }
  fclose(fp);
}

void save_ccenter()
{
  FILE *fp;
  int i;

  if ((fp = fopen("../txt/ccenter.txt", "w")) == NULL)
  {
    bug("could not write to ccenter.txt!", 0);
    return;
  }
  for (i = 0; i < CCENTER_MAX; i++)
  {
    fprintf(fp, "%d\n", ccenter[i]);
  }
  fclose(fp);
}

void load_coreinfo()
{
        FILE     *fp;

        if ((fp = fopen("../txt/coreinfo.txt", "r")) == NULL)
        {
                log_string("Error: coreinfo.txt not found!");
                exit(1);
        }

        top_playerid = fread_number(fp);
        pulse_exp = fread_number(fp);
        pulse_dt = fread_number(fp);
        pulse_arena = fread_number(fp);
        pulse_cp = fread_number(fp);

        if (pulse_exp > 0)
                global_exp = TRUE;
        if (pulse_dt > 0)
                global_dt = TRUE;
        if (pulse_cp > 0)
                global_cp = TRUE;

        fclose(fp);
}



void write_mudinfo_database()
{
        FILE     *fp;
        int       ratio, mspusers, avusers, a, b, c;

        if ((fp = fopen("../txt/mud_data.txt", "a")) == NULL)
        {
                log_string("Error writing to mud_data.txt");
                return;
        }

        /*
         * Calculate the ratio of users that use msp 
         */
        mspusers =
                (100 * mudinfo[MUDINFO_MSP_USERS] /
                 (mudinfo[MUDINFO_MCCP_USERS] +
                  mudinfo[MUDINFO_OTHER_USERS]));

        /*
         * Calculate the ratio of users that use mccp 
         */
        ratio = (100 * mudinfo[MUDINFO_MCCP_USERS] /
                 (mudinfo[MUDINFO_MCCP_USERS] +
                  mudinfo[MUDINFO_OTHER_USERS]));

        /*
         * Calculate the amount of average players online 
         */
        avusers =
                (mudinfo[MUDINFO_MCCP_USERS] +
                 mudinfo[MUDINFO_OTHER_USERS]) / mudinfo[MUDINFO_UPDATED];

        /*
         * Calculate the average tranfer rate in kbyte 
         */
        a = mudinfo[MUDINFO_MBYTE] * 1024 + mudinfo[MUDINFO_BYTE] / 1024;
        b = a / (mudinfo[MUDINFO_UPDATED] * 3);
        c = b / 10;
        c = c * 10;
        c = b - c;

        /*
         * Append it all to the file 
         */
        fprintf(fp, "\nMudinfo Database Entry\n");
        fprintf(fp, "Average Online Users       %d\n", avusers);
        fprintf(fp, "Peak Users Online          %d\n",
                mudinfo[MUDINFO_PEAK_USERS]);
        fprintf(fp, "Mccp Ratio                 %d %%\n", ratio);
        fprintf(fp, "MSP Ratio                  %d %%\n", mspusers);
        fprintf(fp, "Amount of MB send          %d MB\n",
                mudinfo[MUDINFO_MBYTE]);
        fprintf(fp, "Datatransfer Average       %d.%d\n", b / 10, c);

        /*
         * Calculating the peak transfer rate 
         */
        b = mudinfo[MUDINFO_DATA_PEAK] / (3 * 1024);
        c = b / 10;
        c = c * 10;
        c = b - c;

        fprintf(fp, "Datatransfer Peak          %d.%d\n", b / 10, c);

        fclose(fp);
}

void save_mudinfo()
{
        FILE     *fp;
        int       i;

        if ((fp = fopen("../txt/mudinfo.txt", "w")) == NULL)
        {
                log_string("Error writing to mudinfo.txt");
                return;
        }
        for (i = 0; i < (MUDINFO_MAX - 2); i++)
        {
                fprintf(fp, "%d\n", mudinfo[i]);
        }
        fclose(fp);
}

void save_coreinfo()
{
  FILE *fp;
  int i;

  for (i = 0; i < 2; i++)
  {
    if (i == 0)
    {
      if ((fp = fopen("../txt/coreinfo.bck","w")) == NULL)
      {
        log_string("Error writing to coreinfo.bck");
        return;
      }
    }
    else
    {
      if ((fp = fopen("../txt/coreinfo.txt","w")) == NULL)
      {
        log_string("Error writing to coreinfo.txt");
        return;
      }
    }

    fprintf(fp, "%d\n", top_playerid);
    fprintf(fp, "%d\n", pulse_exp);
    fprintf(fp, "%d\n", pulse_dt);
    fprintf(fp, "%d\n", pulse_arena);
    fprintf(fp, "%d\n", pulse_cp);
    fprintf(fp, "%d\n", pulse_qp);

    fclose(fp);
  }
}