2018-11-03 08:58:25 -07:00
|
|
|
/**
|
|
|
|
* @file
|
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "testcore/TestApp.h"
|
|
|
|
#include "voxelrender/RawVolumeRenderer.h"
|
2018-11-14 12:55:14 -08:00
|
|
|
#include "voxelrender/VoxelFontRenderer.h"
|
2018-11-03 08:58:25 -07:00
|
|
|
#include "core/EventBus.h"
|
2019-04-01 07:47:41 -07:00
|
|
|
#include "audio/SoundManager.h"
|
2018-11-03 08:58:25 -07:00
|
|
|
|
|
|
|
#include "TrazeEvents.h"
|
|
|
|
#include "TrazeProtocol.h"
|
|
|
|
|
2018-11-20 21:52:15 -08:00
|
|
|
#include "util/MessageQueue.h"
|
2018-11-20 00:50:55 -08:00
|
|
|
|
2018-11-03 08:58:25 -07:00
|
|
|
/**
|
|
|
|
* @brief Example application that renders the state of a traze board. See https://traze.iteratec.de/ for more details.
|
|
|
|
*/
|
|
|
|
class TestTraze : public TestApp,
|
|
|
|
public core::IEventBusHandler<traze::NewGridEvent>,
|
|
|
|
public core::IEventBusHandler<traze::PlayerListEvent>,
|
|
|
|
public core::IEventBusHandler<traze::TickerEvent>,
|
|
|
|
public core::IEventBusHandler<traze::SpawnEvent>,
|
|
|
|
public core::IEventBusHandler<traze::BikeEvent>,
|
2019-03-25 14:11:08 -07:00
|
|
|
public core::IEventBusHandler<traze::ScoreEvent>,
|
2018-11-03 08:58:25 -07:00
|
|
|
public core::IEventBusHandler<traze::NewGamesEvent> {
|
|
|
|
private:
|
|
|
|
using Super = TestApp;
|
|
|
|
|
|
|
|
core::VarPtr _name;
|
|
|
|
|
|
|
|
traze::Protocol _protocol;
|
|
|
|
voxelrender::RawVolumeRenderer _rawVolumeRenderer;
|
2018-11-14 12:55:14 -08:00
|
|
|
voxelrender::VoxelFontRenderer _voxelFontRender;
|
2018-11-20 00:50:55 -08:00
|
|
|
MessageQueue _messageQueue;
|
2019-04-01 07:47:41 -07:00
|
|
|
audio::SoundManager _soundMgr;
|
2018-11-14 05:38:09 -08:00
|
|
|
|
|
|
|
bool _renderBoard = true;
|
|
|
|
bool _renderPlayerNames = true;
|
|
|
|
|
2018-11-20 10:50:47 -08:00
|
|
|
glm::ivec2 _spawnPosition { 0 };
|
2020-05-10 05:30:20 -07:00
|
|
|
double _spawnTime = 0.0;
|
2018-11-20 10:50:47 -08:00
|
|
|
|
2018-11-16 11:56:06 -08:00
|
|
|
int _maxLength = 200;
|
2018-11-16 13:11:04 -08:00
|
|
|
video::Camera _textCamera;
|
2018-11-16 11:56:06 -08:00
|
|
|
|
2018-11-03 08:58:25 -07:00
|
|
|
std::vector<traze::GameInfo> _games;
|
|
|
|
std::vector<traze::Player> _players;
|
|
|
|
int8_t _currentGameIndex = -1;
|
2020-05-10 05:30:20 -07:00
|
|
|
double _nextConnectTime = 0.0;
|
2018-11-03 08:58:25 -07:00
|
|
|
|
|
|
|
void doRender() override;
|
2018-11-20 00:50:55 -08:00
|
|
|
|
2019-04-01 07:47:41 -07:00
|
|
|
void sound(const char *soundId);
|
|
|
|
|
2020-01-29 11:36:55 -08:00
|
|
|
const core::String& playerName(traze::PlayerId playerId) const;
|
2018-11-20 00:50:55 -08:00
|
|
|
const traze::Player& player(traze::PlayerId playerId) const;
|
2018-11-03 08:58:25 -07:00
|
|
|
public:
|
|
|
|
TestTraze(const metric::MetricPtr& metric, const io::FilesystemPtr& filesystem, const core::EventBusPtr& eventBus, const core::TimeProviderPtr& timeProvider);
|
|
|
|
|
|
|
|
void onEvent(const traze::BikeEvent& event) override;
|
|
|
|
void onEvent(const traze::NewGamesEvent& event) override;
|
|
|
|
void onEvent(const traze::TickerEvent& event) override;
|
|
|
|
void onEvent(const traze::SpawnEvent& event) override;
|
|
|
|
void onEvent(const traze::NewGridEvent& event) override;
|
|
|
|
void onEvent(const traze::PlayerListEvent& event) override;
|
2019-03-25 14:11:08 -07:00
|
|
|
void onEvent(const traze::ScoreEvent& event) override;
|
2018-11-03 08:58:25 -07:00
|
|
|
|
|
|
|
virtual void onRenderUI() override;
|
2020-08-30 13:46:21 -07:00
|
|
|
virtual app::AppState onConstruct() override;
|
|
|
|
virtual app::AppState onInit() override;
|
|
|
|
virtual app::AppState onRunning() override;
|
|
|
|
virtual app::AppState onCleanup() override;
|
2018-11-03 08:58:25 -07:00
|
|
|
};
|