//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: Util.h and Util.cpp provide lots of helper stuff for TFStats to work
//
// $Workfile:     $
// $Date:         $
//
//------------------------------------------------------------------------------------------------------
// $Log: $
//
// $NoKeywords: $
//=============================================================================//
#ifndef UTIL_H
#define UTIL_H
#ifdef WIN32
#pragma once
#endif
#pragma warning (disable:4786)
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <map>
using std::string;
using std::map;

#ifdef WIN32
#include <direct.h>
#include <time.h>
#else
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define PERMIT (S_IRWXU|S_IRWXG|S_IRWXO)
#endif

//leave these global
enum Consts
{
	TEAM_BLUE=0,
	TEAM_RED,
	TEAM_GREEN,
	TEAM_YELLOW,
	TEAM_NONE=4,
	MAX_TEAMS=4,
	ALL_TEAMS=4,
};

//Player Class support
enum player_class
{
	PC_UNDEFINED=0,
	PC_SCOUT,
	PC_SNIPER,
	PC_SOLDIER,
	PC_DEMOMAN,
	PC_MEDIC,
	PC_HWGUY,
	PC_PYRO,
	PC_SPY,
	PC_ENGINEER,
	PC_CIVILIAN,
	PC_RANDOM,
	PC_OBSERVER,
};

//english names, indexed by above enumeration
extern char* plrClassNames[];
//linear search, ack.
player_class playerClassNameToClassID(const char* plrClass);


//time support functions
#include <time.h>

class Util
{
public:
	//get hours from time_t number
	static int time_t2hours(time_t tmr);
	//get minutes from time_t number
	static int time_t2mins(time_t tmr);
	//get seconds from time_t number
	static int time_t2secs(time_t tmr);

	//friendly english stuff
	static char* Months[];
	static char* numberSuffixes[];
	static char* daysofWeek[];
	static char* ampm[];

	static void debug_dir_printf(PRINTF_FORMAT_STRING char* fmt,...);

	static void str2lowercase(char* out, const char* in);

		//friendly weapon names so users don't have to look at names like "gl_grenade"
	static const string& getFriendlyWeaponName(const string& s);
	static void initFriendlyWeaponNameTable();
	//map of team colors, indexed by team ID
	static const char* teamcolormap[];
	
	static map<string,string> frWeapNmTbl;
	static int string2svrID(string s);
	
	
	static const char* makeDurationString(time_t start, time_t end,char* out,char* tostr=" - ");
};



#endif // UTIL_H