This repository has been archived on 2024-06-03. You can view files and clone it, but cannot push or open issues or pull requests.
shared-libraries/ScStwLibraries/headers/client/scstwremoterace.h

87 lines
2.7 KiB
C
Raw Permalink Normal View History

2020-06-07 14:43:47 +02:00
/****************************************************************************
** ScStw Libraries
** Copyright (C) 2020 Itsblue development
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program. If not, see <http://www.gnu.org/licenses/>.
****************************************************************************/
#ifndef SCSTWREMOTEMONITORRACE_H
#define SCSTWREMOTEMONITORRACE_H
#include <QObject>
#include "scstwrace.h"
#include "scstwclient.h"
2020-10-02 19:56:08 +02:00
#include "scstwremotetimer.h"
2020-10-03 11:10:15 +02:00
#include "scstwsoundplayer.h"
2020-10-02 19:56:08 +02:00
class ScStwRemoteRace : public ScStwRace
{
Q_OBJECT
2020-10-09 15:18:56 +02:00
Q_PROPERTY(ScStwClient* scStwClient READ getScStwClient WRITE setScStwClient NOTIFY scStwClientChanged)
public:
2020-10-09 15:18:56 +02:00
ScStwRemoteRace(QObject *parent = nullptr);
ScStwRemoteRace(ScStwClient *scStwClient, ScStwSettings *settings = nullptr, QObject *parent = nullptr);
enum RaceMode {
LOCAL,
REMOTE
};
protected:
2020-10-02 16:49:24 +02:00
double currentStartTotalDelay;
double currentStartDelayStartedAt;
double latestStartDelayProgress;
2020-10-03 11:10:15 +02:00
bool isReadyForNextState;
bool readySoundEnabled;
private:
ScStwClient *scStwClient;
2020-10-02 19:56:08 +02:00
QList<ScStwRemoteTimer*> remoteTimers;
QList<ScStwTimer*> localTimers;
public slots:
ScStw::StatusCode start(bool asyncronous = true);
2020-10-02 16:49:24 +02:00
ScStw::StatusCode cancel();
ScStw::StatusCode stop();
ScStw::StatusCode reset();
ScStw::StatusCode setTimerDisabled(int id, bool disabled);
bool addTimer(ScStwTimer *timer);
QVariantMap getCurrentStartDelay();
2020-10-03 11:10:15 +02:00
bool getIsReadyForNextState();
bool getReadySoundEnabled();
2020-10-09 15:18:56 +02:00
ScStwClient *getScStwClient();
void setScStwClient(ScStwClient *client);
private slots:
void handleBaseStationSignal(ScStw::SignalKey key, QVariant data);
bool refreshRemoteTimers(QVariantList remoteTimers);
void rebuildRemoteTimers(QVariantList remoteTimers);
2020-10-03 11:10:15 +02:00
void refreshDetails(QVariantMap details);
void handleClientStateChange();
2020-10-03 18:32:39 +02:00
void refreshCompetitionMode();
RaceMode getMode();
bool local();
2020-10-09 15:18:56 +02:00
void setTimers(QList<ScStwTimer*> timers, bool deleteOldTimers);
2020-10-09 15:18:56 +02:00
signals:
void scStwClientChanged();
};
#endif // SCSTWREMOTEMONITORRACE_H