hydrobricks
Loading...
Searching...
No Matches
TimeMachine.h
1#ifndef HYDROBRICKS_TIME_MACHINE_H
2#define HYDROBRICKS_TIME_MACHINE_H
3
4#include "ActionsManager.h"
5#include "Includes.h"
6#include "ParametersUpdater.h"
7#include "SettingsModel.h"
8
9class TimeMachine : public wxObject {
10 public:
12
13 ~TimeMachine() override = default;
14
23 void Initialize(double start, double end, int timeStep, TimeUnit timeStepUnit);
24
30 void Initialize(const TimerSettings& settings);
31
35 void Reset();
36
42 [[nodiscard]] bool IsOver() const;
43
47 void IncrementTime();
48
54 int GetTimeStepCount() const;
55
61 double GetDate() const {
62 return _date;
63 }
64
70 double GetStart() const {
71 return _start;
72 }
73
79 double GetEnd() const {
80 return _end;
81 }
82
89 return &_timeStepInDays;
90 }
91
97 void SetParametersUpdater(ParametersUpdater* parametersUpdater) {
98 _parametersUpdater = parametersUpdater;
99 }
100
106 void SetActionsManager(ActionsManager* actionsManager) {
107 _actionsManager = actionsManager;
108 }
109
115 static double GetCurrentDate() {
116 return _currentDateStatic;
117 }
118
124 static int GetCurrentDayOfYear();
125
132 [[nodiscard]] bool IsValid() const;
133
140 void Validate() const;
141
142 private:
143 double _date;
144 double _start;
145 double _end;
146 int _timeStep;
147 TimeUnit _timeStepUnit;
148 double _timeStepInDays;
149 ParametersUpdater* _parametersUpdater; // non-owning reference
150 ActionsManager* _actionsManager; // non-owning reference
151 static double _currentDateStatic; // Holds the globally accessible current date (MJD)
152
156 void UpdateTimeStepInDays();
157};
158
159#endif // HYDROBRICKS_TIME_MACHINE_H
Definition ActionsManager.h:11
Definition ParametersUpdater.h:8
Definition TimeMachine.h:9
double GetDate() const
Definition TimeMachine.h:61
double * GetTimeStepPointer()
Definition TimeMachine.h:88
int GetTimeStepCount() const
Definition TimeMachine.cpp:67
double GetStart() const
Definition TimeMachine.h:70
static int GetCurrentDayOfYear()
Definition TimeMachine.cpp:93
void Initialize(double start, double end, int timeStep, TimeUnit timeStepUnit)
Definition TimeMachine.cpp:15
void IncrementTime()
Definition TimeMachine.cpp:54
double GetEnd() const
Definition TimeMachine.h:79
void Reset()
Definition TimeMachine.cpp:45
void SetParametersUpdater(ParametersUpdater *parametersUpdater)
Definition TimeMachine.h:97
void Validate() const
Definition TimeMachine.cpp:134
static double GetCurrentDate()
Definition TimeMachine.h:115
bool IsValid() const
Definition TimeMachine.cpp:106
bool IsOver() const
Definition TimeMachine.cpp:50
void SetActionsManager(ActionsManager *actionsManager)
Definition TimeMachine.h:106
Definition SettingsModel.h:15