XJ music engine  1.9.6
In-game runtime engine for XJ music.
WorkManager.h
Go to the documentation of this file.
1 // Copyright (c) XJ Music Inc. (https://xjmusic.com) All Rights Reserved.
2 
3 #ifndef XJMUSIC_WORK_FABRICATION_MANAGER_H
4 #define XJMUSIC_WORK_FABRICATION_MANAGER_H
5 
9 
10 #include "CraftWork.h"
11 #include "DubWork.h"
12 #include "WorkSettings.h"
13 #include "WorkState.h"
15 
16 namespace XJ {
17  class WorkManager {
18  SegmentEntityStore *store;
19  ContentEntityStore *content;
20  WorkSettings config = WorkSettings();
21  CraftWork craftWork;
22  DubWork dubWork;
23  std::optional<MemeTaxonomy> memeTaxonomy{};
24  WorkState state = Standby;
25  std::map<std::string, ActiveAudio> activeAudioMap;
26  bool isAudioLoaded = false;
27  long long startedAtMillis = 0;
28 
29  public:
36  explicit WorkManager(
37  SegmentEntityStore *store,
38  ContentEntityStore *content,
39  const WorkSettings &config);
40 
44  void start();
45 
49  void finish(bool cancelled);
50 
56  std::vector<AudioScheduleEvent> runCycle(unsigned long long atChainMicros);
57 
61  [[nodiscard]] SegmentEntityStore *getEntityStore() const;
62 
68  [[nodiscard]] ContentEntityStore *getSourceMaterial() const;
69 
73  [[nodiscard]] WorkState getState() const;
74 
81  void doOverrideMacro(const Program *macroProgram);
82 
86  [[nodiscard]] std::optional<MemeTaxonomy> getMemeTaxonomy() const;
87 
91  [[nodiscard]] std::vector<const Program *> getAllMacroPrograms() const;
92 
99  void doOverrideMemes(const std::set<std::string> &memes);
100 
106  bool getAndResetDidOverride();
107 
113  void setIntensityOverride(std::optional<float> intensity);
114 
115  private:
119  void runCraftCycle(unsigned long long atChainMicros);
120 
124  std::set<ActiveAudio> runDubCycle(unsigned long long atChainMicros);
125 
132  void didFailWhile(const std::string& msgWhile, const std::exception &e);
133 
139  static std::string toString(WorkState state);
140 
146  void updateState(WorkState fabricationState);
147 
148  };
149 
150 }// namespace XJ
151 
152 #endif// XJMUSIC_WORK_FABRICATION_MANAGER_H
Definition: ContentEntityStore.h:41
Definition: CraftWork.h:29
Definition: DubWork.h:25
Definition: Program.h:14
Definition: SegmentEntityStore.h:43
Definition: WorkManager.h:17
void finish(bool cancelled)
Definition: WorkManager.cpp:69
WorkState getState() const
Definition: WorkManager.cpp:109
std::optional< MemeTaxonomy > getMemeTaxonomy() const
Definition: WorkManager.cpp:117
void start()
Definition: WorkManager.cpp:34
ContentEntityStore * getSourceMaterial() const
Definition: WorkManager.cpp:146
void setIntensityOverride(std::optional< float > intensity)
Definition: WorkManager.cpp:138
std::vector< AudioScheduleEvent > runCycle(unsigned long long atChainMicros)
Definition: WorkManager.cpp:74
void doOverrideMacro(const Program *macroProgram)
Definition: WorkManager.cpp:113
SegmentEntityStore * getEntityStore() const
Definition: WorkManager.cpp:142
bool getAndResetDidOverride()
Definition: WorkManager.cpp:134
void doOverrideMemes(const std::set< std::string > &memes)
Definition: WorkManager.cpp:130
WorkManager(SegmentEntityStore *store, ContentEntityStore *content, const WorkSettings &config)
Definition: WorkManager.cpp:7
std::vector< const Program * > getAllMacroPrograms() const
Definition: WorkManager.cpp:121
Definition: WorkSettings.h:14
Definition: ActiveAudio.h:11
WorkState
Definition: WorkState.h:10
@ Standby
Definition: WorkState.h:11