Program Listing for File PDJE_Judge_Loop_Structs.hpp

Return to documentation for file (include/judge/Loop/PDJE_Judge_Loop_Structs.hpp)

#pragma once

#include "PDJE_Buffer.hpp"
#include "PDJE_Judge_Init_Structs.hpp"
#include "PDJE_Note_OBJ.hpp"
#include "PDJE_Rule.hpp"
#include "PDJE_SYNC_CORE.hpp"
#include <cstdint>
#include <optional>
#include <string>
#include <thread>
#include <unordered_map>

namespace PDJE_JUDGE {
struct EV_Thread {
    std::optional<bool> use_event_switch;
    std::optional<bool> miss_event_switch;

    std::optional<std::thread> use_event_thread;
    std::optional<std::thread> miss_event_thread;
};

struct useDatas {
    uint64_t railid;
    bool     Pressed;
    bool     IsLate;
    uint64_t diff;
};

struct Queues {
    Atomic_Double_Buffer<std::unordered_map<uint64_t, NOTE_VEC>> miss_queue;
    Atomic_Double_Buffer<useDatas>                               use_queue;
    Queues() : miss_queue(100), use_queue(100)
    {
    }
};

struct mouse_btn_event {
    uint64_t rail_id = 0;
    int      status  = -1;
};
struct LoopCached {

    std::unordered_map<uint64_t, NOTE_VEC> missed_buffers;

    P_NOTE_VEC found_list;
    P_NOTE_VEC related_list_out;

    // time values
    LOCAL_TIME local_microsecond_position;
    uint64_t   global_local_diff;

    // LOCAL_TIME log_begin;
    // LOCAL_TIME log_end;

    LOCAL_TIME  use_range;
    std::string strCache;
    // LOCAL_TIME cut_range;

    audioSyncData synced_data;

    RAIL_META meta;
    bool      isLate;
    uint64_t  railid;
    // INPUT_SETTING setting;

    uint64_t                     diff;
    std::vector<mouse_btn_event> mouse_btn_event_queue;
};
} // namespace PDJE_JUDGE