Cockatrice
2025-11-30-Development-2.11.0-beta.38
A cross-platform virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
replay_timeline_widget.h
Go to the documentation of this file.
1
6
7
#ifndef REPLAY_TIMELINE_WIDGET
8
#define REPLAY_TIMELINE_WIDGET
9
10
#include "
../../../game/player/event_processing_options.h
"
11
12
#include <QMouseEvent>
13
#include <QWidget>
14
15
class
QPaintEvent;
16
class
QTimer;
17
18
class
ReplayTimelineWidget
:
public
QWidget
19
{
20
Q_OBJECT
21
signals:
22
void
processNextEvent
(EventProcessingOptions options);
23
void
replayFinished
();
24
void
rewound
();
25
26
private
:
27
enum
PlaybackMode
28
{
29
NORMAL_PLAYBACK
,
30
FORWARD_SKIP
,
31
BACKWARD_SKIP
32
};
33
34
static
constexpr
int
TIMER_INTERVAL_MS
= 200;
35
static
constexpr
int
BIN_LENGTH
= 5000;
36
37
QTimer *
replayTimer
;
38
QTimer *
rewindBufferingTimer
;
39
QList<int>
replayTimeline
;
40
QList<int>
histogram
;
41
int
maxBinValue
,
maxTime
;
42
qreal
timeScaleFactor
;
43
int
currentVisualTime
;
// time currently displayed by the timeline
44
int
currentProcessedTime
;
// time that events are currently processed up to. Could differ from visual time due to
45
// rewind buffering
46
int
currentEvent
;
47
48
void
skipToTime
(
int
newTime,
bool
doRewindBuffering);
49
void
handleBackwardsSkip
(
bool
doRewindBuffering);
50
void
processRewind
();
51
void
processNewEvents
(
PlaybackMode
playbackMode);
52
private
slots:
53
void
replayTimerTimeout
();
54
55
public
:
56
static
constexpr
int
SMALL_SKIP_MS
= 1000;
57
static
constexpr
int
BIG_SKIP_MS
= 10000;
58
static
constexpr
qreal
FAST_FORWARD_SCALE_FACTOR
= 10.0;
59
60
explicit
ReplayTimelineWidget
(QWidget *parent =
nullptr
);
61
void
setTimeline
(
const
QList<int> &_replayTimeline);
62
[[nodiscard]] QSize
sizeHint
()
const override
;
63
[[nodiscard]] QSize
minimumSizeHint
()
const override
;
64
void
setTimeScaleFactor
(qreal _timeScaleFactor);
65
[[nodiscard]]
int
getCurrentEvent
()
const
66
{
67
return
currentEvent
;
68
}
69
public
slots:
70
void
startReplay
();
71
void
stopReplay
();
72
void
skipByAmount
(
int
amount);
// use a negative amount to skip backwards
73
74
protected
:
75
void
paintEvent
(QPaintEvent *event)
override
;
76
void
mousePressEvent
(QMouseEvent *event)
override
;
77
};
78
79
#endif
ReplayTimelineWidget::minimumSizeHint
QSize minimumSizeHint() const override
Definition
replay_timeline_widget.cpp:134
ReplayTimelineWidget::sizeHint
QSize sizeHint() const override
Definition
replay_timeline_widget.cpp:129
ReplayTimelineWidget::PlaybackMode
PlaybackMode
Definition
replay_timeline_widget.h:28
ReplayTimelineWidget::NORMAL_PLAYBACK
@ NORMAL_PLAYBACK
Definition
replay_timeline_widget.h:29
ReplayTimelineWidget::BACKWARD_SKIP
@ BACKWARD_SKIP
Definition
replay_timeline_widget.h:31
ReplayTimelineWidget::FORWARD_SKIP
@ FORWARD_SKIP
Definition
replay_timeline_widget.h:30
ReplayTimelineWidget::replayTimer
QTimer * replayTimer
Definition
replay_timeline_widget.h:37
ReplayTimelineWidget::currentEvent
int currentEvent
Definition
replay_timeline_widget.h:46
ReplayTimelineWidget::replayFinished
void replayFinished()
ReplayTimelineWidget::TIMER_INTERVAL_MS
static constexpr int TIMER_INTERVAL_MS
Definition
replay_timeline_widget.h:34
ReplayTimelineWidget::replayTimeline
QList< int > replayTimeline
Definition
replay_timeline_widget.h:39
ReplayTimelineWidget::SMALL_SKIP_MS
static constexpr int SMALL_SKIP_MS
Definition
replay_timeline_widget.h:56
ReplayTimelineWidget::rewindBufferingTimer
QTimer * rewindBufferingTimer
Definition
replay_timeline_widget.h:38
ReplayTimelineWidget::rewound
void rewound()
ReplayTimelineWidget::getCurrentEvent
int getCurrentEvent() const
Definition
replay_timeline_widget.h:65
ReplayTimelineWidget::setTimeScaleFactor
void setTimeScaleFactor(qreal _timeScaleFactor)
Definition
replay_timeline_widget.cpp:175
ReplayTimelineWidget::processNewEvents
void processNewEvents(PlaybackMode playbackMode)
Processes all unprocessed events up to the current time.
Definition
replay_timeline_widget.cpp:150
ReplayTimelineWidget::currentProcessedTime
int currentProcessedTime
Definition
replay_timeline_widget.h:44
ReplayTimelineWidget::BIG_SKIP_MS
static constexpr int BIG_SKIP_MS
Definition
replay_timeline_widget.h:57
ReplayTimelineWidget::histogram
QList< int > histogram
Definition
replay_timeline_widget.h:40
ReplayTimelineWidget::maxTime
int maxTime
Definition
replay_timeline_widget.h:41
ReplayTimelineWidget::handleBackwardsSkip
void handleBackwardsSkip(bool doRewindBuffering)
Definition
replay_timeline_widget.cpp:104
ReplayTimelineWidget::mousePressEvent
void mousePressEvent(QMouseEvent *event) override
Definition
replay_timeline_widget.cpp:67
ReplayTimelineWidget::currentVisualTime
int currentVisualTime
Definition
replay_timeline_widget.h:43
ReplayTimelineWidget::skipByAmount
void skipByAmount(int amount)
Definition
replay_timeline_widget.cpp:191
ReplayTimelineWidget::FAST_FORWARD_SCALE_FACTOR
static constexpr qreal FAST_FORWARD_SCALE_FACTOR
Definition
replay_timeline_widget.h:58
ReplayTimelineWidget::startReplay
void startReplay()
Definition
replay_timeline_widget.cpp:181
ReplayTimelineWidget::stopReplay
void stopReplay()
Definition
replay_timeline_widget.cpp:186
ReplayTimelineWidget::BIN_LENGTH
static constexpr int BIN_LENGTH
Definition
replay_timeline_widget.h:35
ReplayTimelineWidget::skipToTime
void skipToTime(int newTime, bool doRewindBuffering)
Definition
replay_timeline_widget.cpp:78
ReplayTimelineWidget::timeScaleFactor
qreal timeScaleFactor
Definition
replay_timeline_widget.h:42
ReplayTimelineWidget::paintEvent
void paintEvent(QPaintEvent *event) override
Definition
replay_timeline_widget.cpp:48
ReplayTimelineWidget::maxBinValue
int maxBinValue
Definition
replay_timeline_widget.h:41
ReplayTimelineWidget::setTimeline
void setTimeline(const QList< int > &_replayTimeline)
Definition
replay_timeline_widget.cpp:21
ReplayTimelineWidget::processRewind
void processRewind()
Definition
replay_timeline_widget.cpp:118
ReplayTimelineWidget::replayTimerTimeout
void replayTimerTimeout()
Definition
replay_timeline_widget.cpp:139
ReplayTimelineWidget::ReplayTimelineWidget
ReplayTimelineWidget(QWidget *parent=nullptr)
Definition
replay_timeline_widget.cpp:9
ReplayTimelineWidget::processNextEvent
void processNextEvent(EventProcessingOptions options)
event_processing_options.h
TODO: Document this.
cockatrice
src
interface
widgets
replay
replay_timeline_widget.h
Generated by
1.14.0