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