#pragma no_clone
#pragma strict_types

inherit "/std/room.c";

#include <macros.h>
#include <std.h>
#include <time.h>
#include <mudtime.h>
#include "/d/Krainy/sys/kutils.h"

private int time_dni = 0;
private int dzien_miesiaca = 0;
private int godzina = 0;
private int time_godziny = 0;
private int time_minuty = 0;
private int time_sekundy  = 0;
private int time_miesiace =0;
private int time_lata  	=0;

nomask private void
time_na_liczby(int time)
{
  int n;
  //policz lata
  time_lata = (n = time / 31104000);
  time -= n * 31104000;

  //policz miesiace
  time_miesiace = (n = time / 2592000);
  time -= n * 2592000;

  //policz dni
  time_dni = (n = time / 86400);
  time -= n * 86400;

  //policz godziny
  time_godziny = (n = time / 3600);
  time -= n * 3600;

  //policz minuty
  time_minuty = (n = time / 60);
  time -= n * 60;

  //policz sekundy
  time_sekundy = time;
}

void czas()
{
  string sek;
  int s;
  
  sek = read_file("/d/Krainy/std/godziny");
  sscanf(sek, "sekundy:%d" ,s);
  
  time_na_liczby(((time() - SECURITY->query_start_time())+s)*24);
}

int pora_dnia()
{
  czas();
  switch(time_godziny)
    {
    case 2..3:
      {
	godzina=time_godziny;
	return MT_SWIT;
      }
    case 4..7:
      {	
	godzina=time_godziny;
	return MT_WCZESNY_RANEK;
      }
    case 8..10:
      {	
	godzina=time_godziny;
	return MT_RANEK;
      }
    case 11:
      {
	godzina=time_godziny;
	return MT_POLUDNIE;
      }
    case 12..16:
      {
	godzina=time_godziny;
	return MT_POPOLUDNIE;
      }
    case 18..19:
      godzina=time_godziny;
      return MT_WIECZOR;
    case 20..21:
      {
	godzina=time_godziny;
	return MT_POZNY_WIECZOR;
      }
    case 22..23:
    case 0..1:
      {
	godzina=time_godziny;
	return MT_NOC;
      }
    }
}

int miesiac()
{
  czas();
  //    if(time_dni==0) time_dni=1;
  switch(time_miesiace)
    {
    case 0: 
      {
	return M_STYCZEN;
      }
    case 1:
      {
	return M_LUTY;
      }     
    case 2: 
      {
	return M_MARZEC;
      }
    case 3: 
      {
	return M_KWIECIEN;
      }
    case 4: 
      {
	return M_MAJ;
      }
    case 5: 
      {
	return M_CZERWIEC;
      }
    case 6: 
      {
	return M_LIPEC;
      }
    case 7:
      {
	return M_SIERPIEN;
      } 
    case 8: 
      {
	return M_WRZESIEN;
      }
    case 9: 
      {
	return M_PAZDZIERNIK;
      }
    case 10: 
      {
	return M_LISTOPAD;
      }
    case 11: 
      {
	return M_GRUDZIEN;
      }
    }
}

public string
check_time()
{
  int pora_dn;
  int mies;
  
  mies = miesiac();
  pora_dn = pora_dnia();
  
  return "Wedlug kalendarza Krain mamy teraz " +
    DZIEN_MIESIACA_STR(time_dni) + " dzien "
    + MT_MIESIAC_STR(mies) + ".\n" + "Jest teraz okolo godziny " +
    GODZINA_STR(time_godziny) + " " + MT_PORA_DNIA_STRB(pora_dn) + ".\n";
}
