summaryrefslogtreecommitdiffhomepage
path: root/proto-ft/ftnoir_protocol_ft.h
diff options
context:
space:
mode:
Diffstat (limited to 'proto-ft/ftnoir_protocol_ft.h')
-rw-r--r--proto-ft/ftnoir_protocol_ft.h50
1 files changed, 27 insertions, 23 deletions
diff --git a/proto-ft/ftnoir_protocol_ft.h b/proto-ft/ftnoir_protocol_ft.h
index 843d1f34..a07747d9 100644
--- a/proto-ft/ftnoir_protocol_ft.h
+++ b/proto-ft/ftnoir_protocol_ft.h
@@ -7,60 +7,61 @@
*/
#pragma once
-
#include "ui_ftnoir_ftcontrols.h"
-
-#include "freetrackclient/fttypes.h"
-
-#include "compat/shm.h"
-#include "options/options.hpp"
#include "api/plugin-api.hpp"
#include <QProcess>
#include <QString>
#include <QMutex>
+#include <QDebug>
+
#include <cinttypes>
+#include "freetrackclient/fttypes.h"
+
+#include "compat/shm.h"
+#include "options/options.hpp"
+
#include <memory>
using namespace options;
struct settings : opts {
- value<int> intUsedInterface;
- settings() :
- opts("proto-freetrack"),
- intUsedInterface(b, "used-interfaces", 0)
- {}
+ enum enable_status : int { enable_both, enable_freetrack, enable_npclient, };
+ value<int> used_interface{b, "used-interfaces", (int)enable_both};
+ value<bool> ephemeral_library_location{b, "ephemeral-library-location", false};
+ value<bool> use_custom_location{b, "use-custom-location", false};
+ value<QString> custom_location_pathname{b, "custom-library-location", {}};
+ settings() : opts("proto-freetrack") {}
};
-class freetrack : public IProtocol
+class freetrack : TR, public IProtocol
{
+ Q_OBJECT
+
public:
- freetrack();
+ freetrack() = default;
~freetrack() override;
module_status initialize() override;
- void pose( const double *headpose );
- QString game_name() override {
- QMutexLocker foo(&game_name_mutex);
- return connected_game;
- }
+ void pose(const double* pose, const double*) override;
+ QString game_name() override;
private:
settings s;
shm_wrapper shm { FREETRACK_HEAP, FREETRACK_MUTEX, sizeof(FTHeap) };
- FTHeap *pMemData { (FTHeap*) shm.ptr() };
+ FTHeap* pMemData { (FTHeap*) shm.ptr() };
QProcess dummyTrackIR;
int intGameID = -1;
QString connected_game;
QMutex game_name_mutex;
- unsigned data_id = 0;
void start_dummy();
- static float degrees_to_rads(double degrees);
public:
- static void set_protocols(bool ft, bool npclient);
+ enum class status { starting, stopping };
+ [[nodiscard]] module_status set_protocols();
+ void clear_protocols();
};
class FTControls: public IProtocolDialog
@@ -77,11 +78,14 @@ private slots:
void selectDLL();
void doOK();
void doCancel();
+ void set_custom_location();
};
class freetrackDll : public Metadata
{
+ Q_OBJECT
+
public:
- QString name() { return otr_tr("freetrack 2.0 Enhanced"); }
+ QString name() { return tr("freetrack 2.0 Enhanced"); }
QIcon icon() { return QIcon(":/images/freetrack.png"); }
};