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 "../common.h" 13 #include "../interface/Window.h" 14 15 #include <map> 16 #include <string> 17 18 struct IntentData 19 { 20 enum class DataType 21 { 22 Int, 23 String, 24 Pointer, 25 CloseCallback 26 } type; 27 28 union 29 { 30 uint32_t unsignedInt; 31 int32_t signedInt; 32 } intVal; 33 std::string stringVal; 34 close_callback closeCallbackVal; 35 void* pointerVal; 36 }; 37 38 class Intent 39 { 40 private: 41 rct_windowclass _Class; 42 std::map<uint32_t, IntentData> _Data; 43 44 public: 45 explicit Intent(rct_windowclass windowclass); 46 rct_windowclass GetWindowClass() const; 47 void* GetPointerExtra(uint32_t key) const; 48 std::string GetStringExtra(uint32_t key) const; 49 uint32_t GetUIntExtra(uint32_t key) const; 50 int32_t GetSIntExtra(uint32_t key) const; 51 close_callback GetCloseCallbackExtra(uint32_t key) const; 52 Intent* putExtra(uint32_t key, uint32_t value); 53 Intent* putExtra(uint32_t key, void* value); 54 Intent* putExtra(uint32_t key, int32_t value); 55 Intent* putExtra(uint32_t key, std::string value); 56 Intent* putExtra(uint32_t key, close_callback value); 57 }; 58 59 enum 60 { 61 INTENT_EXTRA_GUEST_LIST_FILTER, 62 INTENT_EXTRA_RIDE_ID, 63 INTENT_EXTRA_PATH, 64 INTENT_EXTRA_PEEP, 65 INTENT_EXTRA_LOADSAVE_TYPE, 66 INTENT_EXTRA_CALLBACK, 67 INTENT_EXTRA_TRACK_DESIGN, 68 INTENT_EXTRA_RIDE_TYPE, 69 INTENT_EXTRA_RIDE_ENTRY_INDEX, 70 INTENT_EXTRA_TILE_ELEMENT, 71 INTENT_EXTRA_VEHICLE, 72 INTENT_EXTRA_MESSAGE, 73 INTENT_EXTRA_LIST, 74 INTENT_EXTRA_LIST_COUNT, 75 INTENT_EXTRA_PAGE, 76 INTENT_EXTRA_BANNER_INDEX, 77 INTENT_EXTRA_FORMATTER, 78 }; 79 80 enum 81 { 82 INTENT_ACTION_MAP, 83 INTENT_ACTION_NEW_RIDE_OF_TYPE, 84 INTENT_ACTION_REFRESH_CAMPAIGN_RIDE_LIST, 85 INTENT_ACTION_REFRESH_NEW_RIDES, 86 INTENT_ACTION_REFRESH_RIDE_LIST, 87 INTENT_ACTION_UPDATE_MAZE_CONSTRUCTION, 88 INTENT_ACTION_RIDE_CONSTRUCTION_FOCUS, 89 INTENT_ACTION_RIDE_CONSTRUCTION_UPDATE_PIECES, 90 INTENT_ACTION_RIDE_CONSTRUCTION_UPDATE_ACTIVE_ELEMENTS, 91 INTENT_ACTION_INIT_SCENERY, 92 INTENT_ACTION_SET_DEFAULT_SCENERY_CONFIG, 93 INTENT_ACTION_REFRESH_SCENERY, 94 INTENT_ACTION_INVALIDATE_TICKER_NEWS, 95 INTENT_ACTION_REFRESH_GUEST_LIST, 96 INTENT_ACTION_CLEAR_TILE_INSPECTOR_CLIPBOARD, 97 INTENT_ACTION_REFRESH_STAFF_LIST, 98 INTENT_ACTION_INVALIDATE_VEHICLE_WINDOW, 99 INTENT_ACTION_RIDE_PAINT_RESET_VEHICLE, 100 INTENT_ACTION_UPDATE_CLIMATE, 101 INTENT_ACTION_UPDATE_GUEST_COUNT, 102 INTENT_ACTION_UPDATE_PARK_RATING, 103 INTENT_ACTION_UPDATE_DATE, 104 INTENT_ACTION_UPDATE_CASH, 105 INTENT_ACTION_UPDATE_BANNER, 106 INTENT_ACTION_UPDATE_RESEARCH, 107 INTENT_ACTION_TRACK_DESIGN_REMOVE_PROVISIONAL, 108 INTENT_ACTION_TRACK_DESIGN_RESTORE_PROVISIONAL, 109 INTENT_ACTION_SET_MAP_TOOLTIP, 110 }; 111