mirror of https://github.com/OpenRCT2/OpenRCT2.git
56 lines
1.5 KiB
C++
56 lines
1.5 KiB
C++
/*****************************************************************************
|
|
* Copyright (c) 2014-2024 OpenRCT2 developers
|
|
*
|
|
* For a complete list of all authors, please refer to contributors.md
|
|
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
|
*
|
|
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
|
*****************************************************************************/
|
|
|
|
#pragma once
|
|
|
|
#include "../Game.h"
|
|
#include "../common.h"
|
|
#include "NetworkPacket.h"
|
|
|
|
#include <array>
|
|
#include <string>
|
|
#include <string_view>
|
|
|
|
enum class NetworkPermission : uint32_t;
|
|
|
|
class NetworkGroup final
|
|
{
|
|
public:
|
|
std::array<uint8_t, 8> ActionsAllowed{};
|
|
uint8_t Id = 0;
|
|
|
|
/**
|
|
* Creates a NetworkGroup object from a JSON object
|
|
*
|
|
* @param json JSON data source
|
|
* @return A NetworkGroup object
|
|
* @note json is deliberately left non-const: json_t behaviour changes when const
|
|
*/
|
|
static NetworkGroup FromJson(const json_t& json);
|
|
|
|
const std::string& GetName() const noexcept;
|
|
void SetName(std::string_view name);
|
|
|
|
void Read(NetworkPacket& packet);
|
|
void Write(NetworkPacket& packet) const;
|
|
void ToggleActionPermission(NetworkPermission index);
|
|
bool CanPerformAction(NetworkPermission index) const noexcept;
|
|
bool CanPerformCommand(GameCommand command) const;
|
|
|
|
/**
|
|
* Serialise a NetworkGroup object into a JSON object
|
|
*
|
|
* @return JSON representation of the NetworkGroup object
|
|
*/
|
|
json_t ToJson() const;
|
|
|
|
private:
|
|
std::string _name;
|
|
};
|