XJ music engine  1.9.6
In-game runtime engine for XJ music.
MacroMainCraft.h
Go to the documentation of this file.
1 // Copyright (c) XJ Music Inc. (https://xjmusic.com) All Rights Reserved.
2 
3 #ifndef XJMUSIC_CRAFT_MACRO_MAIN_CRAFT_H
4 #define XJMUSIC_CRAFT_MACRO_MAIN_CRAFT_H
5 
6 #include "xjmusic/craft/Craft.h"
8 
9 namespace XJ {
10 
15  class MacroMainCraft : protected Craft {
16  std::optional<const Program *> overrideMacroProgram;
17  std::set<std::string> overrideMemes;
18 
19  public:
22  const std::optional<const Program *> &overrideMacroProgram,
23  const std::set<std::string> &overrideMemes);
24 
28  void doWork() const;
29 
35  const Program *chooseMacroProgram() const;
36 
37  private:
44  const ProgramSequence *doMacroChoiceWork(const Segment *segment) const;
45 
52  const ProgramSequence *doMainChoiceWork(const Segment *segment) const;
53 
60  std::string computeSegmentKey(const ProgramSequence *mainSequence) const;
61 
73  float computeSegmentIntensity(
74  int delta,
75  std::optional<const ProgramSequence *> macroSequence,
76  std::optional<const ProgramSequence *> mainSequence) const;
77 
85  static float computeIntensity(
86  std::optional<const ProgramSequence *> macroSequence,
87  std::optional<const ProgramSequence *> mainSequence);
88 
94  int computeMacroSequenceBindingOffset() const;
95 
101  int computeMainProgramSequenceBindingOffset() const;
102 
110  const Program *chooseRandomProgram(const std::set<const Program *> &programs, std::set<UUID> avoid) const;
111 
119  const Program *chooseMainProgram() const;
120 
128  long segmentLengthMicros(const Program *mainProgram, const ProgramSequence *mainSequence) const;
129  };
130 
131 }// namespace XJ
132 
133 #endif//XJMUSIC_CRAFT_MACRO_MAIN_CRAFT_H
Definition: Craft.h:25
Fabricator * fabricator
Definition: FabricationWrapper.h:16
Definition: Fabricator.h:48
Definition: MacroMainCraft.h:15
MacroMainCraft(Fabricator *fabricator, const std::optional< const Program * > &overrideMacroProgram, const std::set< std::string > &overrideMemes)
Definition: MacroMainCraft.cpp:8
const Program * chooseMacroProgram() const
Definition: MacroMainCraft.cpp:274
void doWork() const
Definition: MacroMainCraft.cpp:16
Definition: ProgramSequence.h:13
Definition: Program.h:14
Definition: Segment.h:13
Definition: ActiveAudio.h:11