mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-09 04:51:49 +00:00
Task interface
This commit is contained in:
parent
84c7c16860
commit
c1ab97eb15
5 changed files with 102 additions and 28 deletions
|
|
@ -77,6 +77,7 @@ void WorldConverter::convertNext() {
|
|||
}
|
||||
convert_task task = tasks.front();
|
||||
tasks.pop();
|
||||
tasksDone++;
|
||||
|
||||
if (!fs::is_regular_file(task.file))
|
||||
return;
|
||||
|
|
@ -95,6 +96,10 @@ void WorldConverter::write() {
|
|||
wfile->write(nullptr, content);
|
||||
}
|
||||
|
||||
uint WorldConverter::getTotalTasks() const {
|
||||
uint WorldConverter::getWorkRemaining() const {
|
||||
return tasks.size();
|
||||
}
|
||||
|
||||
uint WorldConverter::getWorkDone() const {
|
||||
return tasksDone;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,10 @@
|
|||
#include <queue>
|
||||
#include <memory>
|
||||
#include <filesystem>
|
||||
|
||||
#include "../typedefs.h"
|
||||
#include "../delegates.h"
|
||||
#include "../interfaces/Task.h"
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
|
|
@ -21,25 +24,45 @@ struct convert_task {
|
|||
fs::path file;
|
||||
};
|
||||
|
||||
class WorldConverter {
|
||||
class WorldConverter : public Task {
|
||||
WorldFiles* wfile;
|
||||
std::shared_ptr<ContentLUT> const lut;
|
||||
const Content* const content;
|
||||
std::queue<convert_task> tasks;
|
||||
runnable onComplete;
|
||||
uint tasksDone = 0;
|
||||
|
||||
void convertPlayer(fs::path file);
|
||||
void convertRegion(fs::path file);
|
||||
public:
|
||||
WorldConverter(fs::path folder, const Content* content,
|
||||
std::shared_ptr<ContentLUT> lut);
|
||||
WorldConverter(
|
||||
fs::path folder, const Content* content,
|
||||
std::shared_ptr<ContentLUT> lut
|
||||
);
|
||||
~WorldConverter();
|
||||
|
||||
bool hasNext() const;
|
||||
void convertNext();
|
||||
|
||||
void setOnComplete(runnable callback) {
|
||||
this->onComplete = callback;
|
||||
}
|
||||
|
||||
void update() override {
|
||||
convertNext();
|
||||
if (onComplete && !hasNext()) {
|
||||
onComplete();
|
||||
}
|
||||
}
|
||||
|
||||
void terminate() override {
|
||||
tasks = {};
|
||||
}
|
||||
|
||||
void write();
|
||||
|
||||
uint getTotalTasks() const;
|
||||
uint getWorkRemaining() const override;
|
||||
uint getWorkDone() const override;
|
||||
};
|
||||
|
||||
#endif // FILES_WORLD_CONVERTER_H_
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue