Program Listing for File PDJE_Judge_Loop.hpp
↰ Return to documentation for file (include/judge/Loop/PDJE_Judge_Loop.hpp)
#pragma once
#include "InputParser.hpp"
#include "Input_State.hpp"
#include "PDJE_Highres_Clock.hpp"
#include "PDJE_Judge_Init.hpp"
#include "PDJE_Judge_Loop_Structs.hpp"
#include "PDJE_Note_OBJ.hpp"
#include "PDJE_Rule.hpp"
#include <cstdint>
#include <optional>
#include <vector>
namespace PDJE_JUDGE {
class Judge_Loop {
private:
EV_Thread Event_Controls;
Queues Event_Datas;
private: // cached values
std::pair<PDJE_Input_Log *, uint64_t> input_log;
LoopCached Cached;
Judge_Init *init_datas;
PDJE_HIGHRES_CLOCK::CLOCK clock_root;
inline void
Cut(const uint64_t cut_range);
PARSE_OUT *
PreProcess();
std::optional<uint64_t>
QueryRailid(const RAIL_META &meta)
{
auto itr = init_datas->devparser.railData.find(meta);
if (itr != init_datas->devparser.railData.end()) {
if (itr->first == meta) {
return itr->second.MatchRail;
}
}
return std::nullopt;
}
void
ParseMouse(const BITMASK ev);
template <PDJE_Dev_Type D>
void
UseEvent(const PDJE_Input_Log &ilog);
// bool
// FindDevSetting(const INPUT_RULE &rule, INPUT_SETTING &setting);
void
Match(const LOCAL_TIME input_time,
const P_NOTE_VEC ¬e_list,
const uint64_t railid,
const bool isPressed);
public:
void
EndEventLoop();
void
StartEventLoop();
void
loop();
std::atomic<bool> loop_switch;
Judge_Loop(Judge_Init &inits);
~Judge_Loop() = default;
};
}; // namespace PDJE_JUDGE