This repository has been archived on 2022-05-21. You can view files and clone it, but cannot push or open issues or pull requests.
Files
shapes-juke/src/sj/ProgramSet.d

56 lines
873 B
D

/// License: MIT
module sj.ProgramSet;
import std.meta,
std.typecons;
static import sjplayer = sjplayer.ProgramSet;
import sj.CubeProgram,
sj.TextProgram,
sj.TitleTextProgram;
///
class ProgramSet {
public:
alias Programs = Tuple!(
CubeProgram,
TextProgram,
TitleTextProgram,
);
///
this() {
player_ = new sjplayer.ProgramSet;
foreach (ref p; programs_) {
p = new typeof(p);
}
}
~this() {
player_.destroy();
foreach (p; programs_) {
p.destroy();
}
}
///
T Get(T)() {
enum index = staticIndexOf!(T, Programs.Types);
static if (index >= 0) {
return programs_[index];
} else {
return player_.Get!T;
}
}
///
@property sjplayer.ProgramSet player() {
return player_;
}
private:
sjplayer.ProgramSet player_;
Programs programs_;
}