Class Agent

java.lang.Object
epidemic.model.Agent
All Implemented Interfaces:
Inspectable
Direct Known Subclasses:
Animal, Human

public abstract class Agent extends Object implements Inspectable
Abstrakcyjna klasa bazowa reprezentująca każdą autonomiczną encję zdolną do poruszania się i uczestniczenia w procesie epidemicznym na mapie symulacji. Centralizuje zarządzanie pozycją przestrzenną, statusem medycznym (HealthStatus) oraz podstawowym cyklem życia biologicznym (wiek, reprodukcja, zgon). Implementuje interfejs Inspectable na potrzeby dynamicznego GUI.
  • Field Details

    • position

      private Point2D position
    • currentTarget

      private Point2D currentTarget
    • baseSpeed

      private double baseSpeed
    • currentSpeed

      private double currentSpeed
    • movementStrategy

      private MovementStrategy movementStrategy
    • speciesType

      private final SpeciesType speciesType
    • age

      private int age
    • isDead

      private boolean isDead
    • naturalMortalityRate

      private double naturalMortalityRate
    • lastReproductionEpoch

      private int lastReproductionEpoch
    • remainingInfectionEpochs

      private int remainingInfectionEpochs
    • diedFromVirus

      private boolean diedFromVirus
    • healthStatus

      private HealthStatus healthStatus
  • Constructor Details

    • Agent

      public Agent(Point2D position, int age, SpeciesType speciesType, double baseSpeed, MovementStrategy movementStrategy)
      Inicjalizuje nowego agenta z podstawowymi parametrami biologicznymi. Wartości takie jak status zdrowotny (HEALTHY) i wskaźniki umieralności są pobierane i ustawiane zgodnie z globalną konfiguracją (Config).
      Parameters:
      position - Początkowa koordynata przestrzenna na siatce mapy.
      age - Początkowy wiek jednostki.
      speciesType - Gatunek przypisany do jednostki, determinujący np. zjadliwość.
      baseSpeed - Prędkość przemieszczania się w warunkach normalnych.
      movementStrategy - Przypisana strategia poruszania się (wzorzec Strategy).
  • Method Details

    • getObjectName

      public String getObjectName()
      Zwraca nagłówek dla inspektora GUI w oparciu o przypisany gatunek.
      Specified by:
      getObjectName in interface Inspectable
      Returns:
      Zrozumiały dla użytkownika ciąg znaków identyfikujący encję.
    • getInspectionProperties

      public List<InspectionProperty> getInspectionProperties()
      Konstruuje hierarchiczną listę właściwości telemetrycznych agenta, używanych przez warstwę widoku do renderowania paska bocznego. Metoda polimorficzna – może być nadpisywana przez klasy potomne. Dla agentów chorych (SICK/CARRIER) generowany jest dodatkowy pasek postępu infekcji.
      Specified by:
      getInspectionProperties in interface Inspectable
      Returns:
      Uporządkowana lista obiektów InspectionProperty.
    • getColorForStatus

      protected Color getColorForStatus(HealthStatus status)
      Mapuje enumerację HealthStatus na dedykowany obiekt koloru z pakietu AWT. Używane do ujednoliconych wizualizacji na płótnie mapy i w oknie inspekcji.
      Parameters:
      status - Bieżący stan chorobowy agenta.
      Returns:
      Skorelowany obiekt typu Color.
    • incrementAge

      public void incrementAge()
      Inkrementuje licznik wieku agenta o jedną jednostkę. Częstotliwość wywoływania tej metody (np. co X epok) jest regulowana przez menedżerów.
    • canBeInfected

      public boolean canBeInfected()
      Weryfikuje podatność agenta na nową infekcję w obecnym kroku symulacji. Martwi agenci oraz nosiciele z aktywną fazą pełnoobjawową (SICK) są odrzucani.
      Returns:
      Wartość true, jeśli agent spełnia fizjologiczne kryteria do zakażenia wirusem.
    • decrementInfectionTimer

      public void decrementInfectionTimer()
      Zmniejsza wskaźnik żywotności wirusa w organizmie agenta. Chroni przed błędnym wyznaczeniem wartości poniżej zera. Osiągnięcie wartości minimalnej stanowi warunek przejścia do stanu ozdrowieńca (RECOVERED).
    • think

      public void think(WorldContext context)
      Polimorficzny punkt wywołania mechanizmów decyzyjnych (Kognitywistyka). Domyślna implementacja w klasie bazowej nie wykonuje żadnych akcji (no-op).
      Parameters:
      context - Aktualny zestaw danych telemetrycznych środowiska.
    • getPosition

      public Point2D getPosition()
    • setPosition

      public void setPosition(Point2D position)
    • getCurrentTarget

      public Point2D getCurrentTarget()
    • setCurrentTarget

      public void setCurrentTarget(Point2D currentTarget)
    • getSpeciesType

      public SpeciesType getSpeciesType()
    • getAge

      public int getAge()
    • getHealthStatus

      public HealthStatus getHealthStatus()
    • setHealthStatus

      public void setHealthStatus(HealthStatus healthStatus)
    • isDead

      public boolean isDead()
    • setDead

      public void setDead(boolean dead)
    • getBaseSpeed

      public double getBaseSpeed()
    • getCurrentSpeed

      public double getCurrentSpeed()
    • setCurrentSpeed

      public void setCurrentSpeed(double currentSpeed)
    • getLastReproductionEpoch

      public int getLastReproductionEpoch()
    • setLastReproductionEpoch

      public void setLastReproductionEpoch(int lastReproductionEpoch)
    • isDiedFromVirus

      public boolean isDiedFromVirus()
    • setDiedFromVirus

      public void setDiedFromVirus(boolean diedFromVirus)
    • getRemainingInfectionEpochs

      public int getRemainingInfectionEpochs()
    • setRemainingInfectionEpochs

      public void setRemainingInfectionEpochs(int remainingInfectionEpochs)
    • getVulnerabilityMultiplier

      public double getVulnerabilityMultiplier()
      Kalkuluje finalny współczynnik podatności jednostki na infekcję, na bazie domyślnych wartości z konfiguracji. Metoda jest zazwyczaj nadpisywana przez klasy potomne dla uwzględnienia odporności gatunkowej i odzieży.
      Returns:
      Mnożnik szansy na infekcję (standardowo 1.0 dla zerowych bonusów ochronnych).
    • getMovementStrategy

      public MovementStrategy getMovementStrategy()
    • setMovementStrategy

      public void setMovementStrategy(MovementStrategy strategy)
    • getVirulence

      public double getVirulence()
      Zwraca zjadliwość agenta dla wariantu środowiskowego (bazując na rodzaju gatunku).