feat(net): handle incoming data in Grunt::ClientLink

This commit is contained in:
fallenoak 2023-01-08 01:13:43 -06:00 committed by GitHub
parent 474588bbee
commit 0f483bdaf7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 136 additions and 3 deletions

45
src/net/grunt/Command.hpp Normal file
View file

@ -0,0 +1,45 @@
#ifndef NET_GRUNT_COMMAND_HPP
#define NET_GRUNT_COMMAND_HPP
#include "net/Grunt.hpp"
template <class T>
class Grunt::Command {
public:
// Static members
static int32_t Process(CDataStore& msg, Command<T>* commands, uint32_t commandCount, T& a4, uint32_t& pos);
// Member variables
int32_t cmd;
const char* name;
int32_t (T::*callback)(CDataStore& msg);
uint32_t unk;
};
template <class T>
int32_t Grunt::Command<T>::Process(CDataStore& msg, Command<T>* commands, uint32_t commandCount, T& a4, uint32_t& pos) {
uint8_t cmd;
msg.Get(cmd);
for (uint32_t i = 0; i < commandCount; i++) {
auto& command = commands[i];
if (command.cmd == cmd) {
auto callback = command.callback;
auto result = (a4.*callback)(msg);
if (result == 0) {
return 1;
} else {
// TODO
return 0;
}
}
}
// TODO
return 0;
}
#endif