2021-12-29 15:59:18 +01:00
|
|
|
#include "classicgame.h"
|
2022-02-10 00:30:49 +01:00
|
|
|
#include "classicmode/classicnote.h"
|
2021-12-29 15:59:18 +01:00
|
|
|
#include "classicmapcreator.h"
|
2022-05-15 09:30:33 +02:00
|
|
|
#include "gamecontext.h"
|
2021-12-29 15:59:18 +01:00
|
|
|
#include "holdmanager.h"
|
2022-05-22 05:11:41 +02:00
|
|
|
#include "graphics/classicgraphicsmanager.h"
|
2021-12-29 15:59:18 +01:00
|
|
|
|
|
|
|
ClassicGame::ClassicGame(const std::shared_ptr<kku::Timeline<ClassicNote>>& timeline,
|
2022-05-15 09:30:33 +02:00
|
|
|
const std::shared_ptr<GameContext>& context) :
|
2021-12-29 15:59:18 +01:00
|
|
|
_timeline(timeline),
|
2022-05-15 09:30:33 +02:00
|
|
|
_context(context)
|
2021-12-29 15:59:18 +01:00
|
|
|
{}
|
|
|
|
|
|
|
|
ClassicGame::~ClassicGame()
|
|
|
|
{}
|
|
|
|
|
|
|
|
void ClassicGame::run()
|
|
|
|
{
|
2022-05-15 09:30:33 +02:00
|
|
|
auto beatmap = classic::createBeatmap("aa", _context);
|
2021-12-29 15:59:18 +01:00
|
|
|
_timeline->setNotes(beatmap.notes);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ClassicGame::input(kku::GameEvent&& input)
|
|
|
|
{
|
|
|
|
switch (input.event.type)
|
|
|
|
{
|
|
|
|
default:
|
|
|
|
return;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case kku::SystemEvent::Type::KeyPress:
|
|
|
|
{
|
|
|
|
auto note_it = _timeline->getActiveNote(input.timestamp);
|
|
|
|
|
|
|
|
if (!_timeline->isExpired(note_it))
|
|
|
|
{
|
|
|
|
auto note = (*note_it);
|
|
|
|
note->input(std::move(input));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
case kku::SystemEvent::Type::KeyRelease:
|
|
|
|
{
|
2022-05-15 09:30:33 +02:00
|
|
|
_context->getHoldManager()->checkRelease(std::get<kku::SystemEvent::Key>(input.event.data).view);
|
2021-12-29 15:59:18 +01:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void ClassicGame::update(kku::UpdateData&& updatedata)
|
|
|
|
{
|
|
|
|
// UNCOMMENT TO TEST AUTOPLAY
|
2022-01-11 21:15:24 +01:00
|
|
|
/*auto note_it = _timeline->getActiveNote(updatedata.timestamp);
|
2021-12-29 15:59:18 +01:00
|
|
|
|
|
|
|
if (!_timeline->isExpired(note_it) && updatedata.timestamp >= (*note_it)->getPerfectOffset())
|
|
|
|
{
|
|
|
|
auto note = (*note_it);
|
|
|
|
note->input(kku::GameEvent{updatedata.timestamp, kku::SystemEvent{kku::SystemEvent::Type::None, kku::SystemEvent::Key{}}});
|
2022-01-11 21:15:24 +01:00
|
|
|
}*/
|
2021-12-29 15:59:18 +01:00
|
|
|
|
|
|
|
_timeline->update(updatedata.timestamp);
|
2022-05-22 05:11:41 +02:00
|
|
|
_context->getGraphicsManager()->update(updatedata.timestamp);
|
2021-12-29 15:59:18 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
void ClassicGame::display() const
|
|
|
|
{
|
2022-05-22 05:11:41 +02:00
|
|
|
_context->getGraphicsManager()->display();
|
2021-12-29 15:59:18 +01:00
|
|
|
}
|