#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Dec 13 17:47:56 2021

@author: puudeli
"""

import paramsPandemia as pars


Kerätään ja talletetaan tilastotietoa.


class Tilasto:
    def __init__(self):
        self.paiva = 0
        x_max, y_max = pars.dim
        # piirtoteknisiä juttuja. En edes yritä selittää :-)
        self.Ndays = int(x_max/pars.points_day)+1
        self.paivat = [pars.points_day*i for i in (range(0, self.Ndays))]
        # Listat, joihin talletetaan terveystiedot viimeiseltä x_max
        # päivältä. (x_max, koska mahtuu 'kankaalle' ilman,
        # että minun tarvitsisi vaivata päätäni
        # useamman x-akselin piirtämisellä :-)
        self.N_vaesto = pars.alku_vaesto
        self.karanteenissa = [0 for i in range(0, self.Ndays)]
        self.alussa = [0 for i in range(0, self.Ndays)]
        self.sairas = [0 for i in range(0, self.Ndays)]
        # tilastoitavat tiedot
        self.N_altis = 0
        self.N_alku = 0
        self.N_sairas = 0
        self.N_karanteenissa = 0
        self.N_immuuni = 0
        self.N_kuolleet = 0
        self.N_tartunnat = 0
        self.N_rokotetut = 0

    def aika_kuluu(self, vaesto):
        """
        Päivitetään tilastot joka päivä
        """
        self.tilastot(vaesto)
        self.paiva += 1
        # Seuraavista piirrotaan kuvaaja, joten pitää tallentaa
        # päivittäiset arvot
        # Liukuva puskuri:
        # Listan alusta vanhin tieto pois
        self.karanteenissa.pop(0)
        # Listan loppuun uusin tieto
        self.karanteenissa.append(self.N_karanteenissa)
        self.alussa.pop(0)
        self.alussa.append(self.N_alku)
        self.sairas.pop(0)
        self.sairas.append(self.N_sairas)

    def tilastot(self, vaesto):
        # Lasketaan päivän tilastot
        self.N_altis = 0
        self.N_alku = 0
        self.N_sairas = 0
        self.N_karanteenissa = 0
        self.N_immuuni = 0
        for fantasmi in vaesto:
            if fantasmi.tila == 'altis':
                self.N_altis += 1
            elif fantasmi.tila == 'oireeton':
                self.N_alku += 1
            elif fantasmi.tila == 'sairas':
                self.N_sairas += 1
            elif fantasmi.tila == 'karanteenissa':
                self.N_karanteenissa += 1
            elif fantasmi.tila == 'immuuni':
                self.N_immuuni += 1


# Luodaan/synnytetään olio hoitamaan tilastointia
tilasto = Tilasto()