add Ep3 battle replay test
This commit is contained in:
@@ -174,21 +174,6 @@ string BattleRecord::serialize() const {
|
||||
return std::move(w.str());
|
||||
}
|
||||
|
||||
bool BattleRecord::writable() const {
|
||||
return this->is_writable;
|
||||
}
|
||||
|
||||
bool BattleRecord::battle_in_progress() const {
|
||||
return (this->battle_start_timestamp != 0);
|
||||
}
|
||||
|
||||
const BattleRecord::Event* BattleRecord::get_first_event() const {
|
||||
if (this->events.empty()) {
|
||||
return nullptr;
|
||||
}
|
||||
return &this->events.front();
|
||||
}
|
||||
|
||||
void BattleRecord::add_player(
|
||||
const PlayerLobbyDataDCGC& lobby_data,
|
||||
const PlayerInventory& inventory,
|
||||
@@ -256,16 +241,6 @@ void BattleRecord::add_random_data(const void* data, size_t size) {
|
||||
this->random_stream.append(reinterpret_cast<const char*>(data), size);
|
||||
}
|
||||
|
||||
vector<string> BattleRecord::get_all_server_data_commands() const {
|
||||
vector<string> ret;
|
||||
for (const auto& event : this->events) {
|
||||
if (event.type == Event::Type::SERVER_DATA_COMMAND) {
|
||||
ret.emplace_back(event.data);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
const string& BattleRecord::get_random_stream() const {
|
||||
return this->random_stream;
|
||||
}
|
||||
|
||||
@@ -62,10 +62,25 @@ public:
|
||||
explicit BattleRecord(const std::string& data);
|
||||
std::string serialize() const;
|
||||
|
||||
bool writable() const;
|
||||
bool battle_in_progress() const;
|
||||
inline bool writable() const {
|
||||
return this->is_writable;
|
||||
}
|
||||
|
||||
const Event* get_first_event() const;
|
||||
inline uint32_t get_behavior_flags() const {
|
||||
return this->behavior_flags;
|
||||
}
|
||||
|
||||
inline bool battle_in_progress() const {
|
||||
return (this->battle_start_timestamp != 0);
|
||||
}
|
||||
|
||||
inline const Event* get_first_event() const {
|
||||
return this->events.empty() ? nullptr : &this->events.front();
|
||||
}
|
||||
|
||||
inline std::deque<Event> get_all_events() const {
|
||||
return this->events;
|
||||
}
|
||||
|
||||
void add_player(
|
||||
const PlayerLobbyDataDCGC& lobby_data,
|
||||
@@ -86,7 +101,6 @@ public:
|
||||
|
||||
void print(FILE* stream) const;
|
||||
|
||||
std::vector<std::string> get_all_server_data_commands() const;
|
||||
const std::string& get_random_stream() const;
|
||||
|
||||
private:
|
||||
|
||||
@@ -231,6 +231,11 @@ int8_t Server::get_winner_team_id() const {
|
||||
|
||||
void Server::send(const void* data, size_t size, uint8_t command, bool enable_masking) const {
|
||||
// Note: This function is (obviously) not part of the original implementation.
|
||||
|
||||
if (this->options.output_queue) {
|
||||
this->options.output_queue->emplace_back(reinterpret_cast<const char*>(data), size);
|
||||
}
|
||||
|
||||
if (this->has_lobby) {
|
||||
auto l = this->lobby.lock();
|
||||
if (!l) {
|
||||
@@ -2579,8 +2584,7 @@ void Server::send_6xB6x41_to_all_clients() const {
|
||||
// in the playback lobby
|
||||
for (string& data : map_commands_by_language) {
|
||||
if (!data.empty()) {
|
||||
this->battle_record->add_command(
|
||||
BattleRecord::Event::Type::BATTLE_COMMAND, std::move(data));
|
||||
this->battle_record->add_command(BattleRecord::Event::Type::BATTLE_COMMAND, std::move(data));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,6 +76,7 @@ public:
|
||||
std::shared_ptr<RandomGenerator> rand_crypt;
|
||||
std::shared_ptr<const Tournament> tournament;
|
||||
std::array<std::vector<uint16_t>, 5> trap_card_ids;
|
||||
std::shared_ptr<std::deque<std::string>> output_queue; // For replay testing
|
||||
|
||||
inline bool is_nte() const {
|
||||
return (this->behavior_flags & BehaviorFlag::IS_TRIAL_EDITION);
|
||||
|
||||
Reference in New Issue
Block a user