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 TileModifyType : uint8_t 15 { 16 AnyRemove, 17 AnySwap, 18 AnyInsertCorrupt, 19 AnyRotate, 20 AnyPaste, 21 AnySort, 22 AnyBaseHeightOffset, 23 SurfaceShowParkFences, 24 SurfaceToggleCorner, 25 SurfaceToggleDiagonal, 26 PathSetSlope, 27 PathSetBroken, 28 PathToggleEdge, 29 EntranceMakeUsable, 30 WallSetSlope, 31 WallSetAnimationFrame, 32 TrackBaseHeightOffset, 33 TrackSetChain, 34 TrackSetChainBlock, 35 TrackSetBlockBrake, 36 TrackSetIndestructible, 37 ScenerySetQuarterLocation, 38 ScenerySetQuarterCollision, 39 BannerToggleBlockingEdge, 40 CorruptClamp, 41 Count, 42 }; 43 44 class TileModifyAction final : public GameActionBase<GameCommand::ModifyTile> 45 { 46 private: 47 CoordsXY _loc; 48 TileModifyType _setting{}; 49 uint32_t _value1{}; 50 uint32_t _value2{}; 51 TileElement _pasteElement{}; 52 53 public: 54 TileModifyAction() = default; 55 TileModifyAction( 56 CoordsXY loc, TileModifyType setting, uint32_t value1 = 0, uint32_t value2 = 0, TileElement pasteElement = {}); 57 58 uint16_t GetActionFlags() const override; 59 60 void Serialise(DataSerialiser& stream) override; 61 GameActions::Result::Ptr Query() const override; 62 GameActions::Result::Ptr Execute() const override; 63 64 private: 65 GameActions::Result::Ptr QueryExecute(bool isExecuting) const; 66 }; 67