1 /***************************************************************************** 2 * Copyright (c) 2014-2020 OpenRCT2 developers 3 * 4 * For a complete list of all authors, please refer to contributors.md 5 * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 6 * 7 * OpenRCT2 is licensed under the GNU General Public License version 3. 8 *****************************************************************************/ 9 10 #pragma once 11 12 #include "GameAction.h" 13 14 enum class ModifyGroupType : uint8_t 15 { 16 AddGroup, 17 RemoveGroup, 18 SetPermissions, 19 SetName, 20 SetDefault, 21 Count 22 }; 23 24 enum class PermissionState : uint8_t 25 { 26 Toggle, 27 SetAll, 28 ClearAll, 29 Count 30 }; 31 32 class NetworkModifyGroupAction final : public GameActionBase<GameCommand::ModifyGroups> 33 { 34 private: 35 ModifyGroupType _type{ ModifyGroupType::Count }; 36 uint8_t _groupId{ std::numeric_limits<uint8_t>::max() }; 37 std::string _name; 38 uint32_t _permissionIndex{ std::numeric_limits<uint32_t>::max() }; 39 PermissionState _permissionState{ PermissionState::Count }; 40 41 public: 42 NetworkModifyGroupAction() = default; 43 NetworkModifyGroupAction( 44 ModifyGroupType type, uint8_t groupId = std::numeric_limits<uint8_t>::max(), const std::string name = "", 45 uint32_t permissionIndex = 0, PermissionState permissionState = PermissionState::Count); 46 47 uint16_t GetActionFlags() const override; 48 49 void Serialise(DataSerialiser& stream) override; 50 GameActions::Result::Ptr Query() const override; 51 GameActions::Result::Ptr Execute() const override; 52 }; 53