MCPcopy Create free account
hub / github.com/OpenRCT2/OpenRCT2 / OpenIntent

Method OpenIntent

src/openrct2-ui/WindowManager.cpp:244–398  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

242 }
243
244 WindowBase* OpenIntent(Intent* intent) override
245 {
246 switch (intent->GetWindowClass())
247 {
248 case WindowClass::peep:
249 return GuestOpen(static_cast<Peep*>(intent->GetPointerExtra(INTENT_EXTRA_PEEP)));
250 case WindowClass::firePrompt:
251 return StaffFirePromptOpen(static_cast<Peep*>(intent->GetPointerExtra(INTENT_EXTRA_PEEP)));
252 case WindowClass::installTrack:
253 return InstallTrackOpen(intent->GetStringExtra(INTENT_EXTRA_PATH).c_str());
254 case WindowClass::guestList:
255 return GuestListOpenWithFilter(
256 static_cast<GuestListFilterType>(intent->GetSIntExtra(INTENT_EXTRA_GUEST_LIST_FILTER)),
257 intent->GetSIntExtra(INTENT_EXTRA_RIDE_ID));
258 case WindowClass::loadsave:
259 {
260 auto action = intent->GetEnumExtra<LoadSaveAction>(INTENT_EXTRA_LOADSAVE_ACTION);
261 auto type = intent->GetEnumExtra<LoadSaveType>(INTENT_EXTRA_LOADSAVE_TYPE);
262 std::string defaultPath = intent->GetStringExtra(INTENT_EXTRA_PATH);
263 LoadSaveCallback callback = reinterpret_cast<LoadSaveCallback>(
264 intent->GetCloseCallbackExtra(INTENT_EXTRA_CALLBACK));
265 TrackDesign* trackDesign = static_cast<TrackDesign*>(intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN));
266 auto* w = FileBrowser::OpenPreferred(
267 action, type, defaultPath,
268 [callback](ModalResult result, std::string_view path) {
269 if (callback != nullptr)
270 {
271 callback(result, std::string(path).c_str());
272 }
273 },
274 false, trackDesign);
275 return w;
276 }
277 case WindowClass::manageTrackDesign:
278 return TrackManageOpen(static_cast<TrackDesignFileRef*>(intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN)));
279 case WindowClass::networkStatus:
280 {
281 std::string message = intent->GetStringExtra(INTENT_EXTRA_MESSAGE);
282 CloseCallback callback = intent->GetCloseCallbackExtra(INTENT_EXTRA_CALLBACK);
283 return NetworkStatusOpen(message, callback);
284 }
285 case WindowClass::objectLoadError:
286 {
287 std::string path = intent->GetStringExtra(INTENT_EXTRA_PATH);
288 auto objects = static_cast<const ObjectEntryDescriptor*>(intent->GetPointerExtra(INTENT_EXTRA_LIST));
289 size_t count = intent->GetUIntExtra(INTENT_EXTRA_LIST_COUNT);
290 ObjectLoadErrorOpen(const_cast<utf8*>(path.c_str()), count, objects);
291
292 return nullptr;
293 }
294 case WindowClass::ride:
295 {
296 const auto rideId = RideId::FromUnderlying(intent->GetSIntExtra(INTENT_EXTRA_RIDE_ID));
297 auto ride = GetRide(rideId);
298 return ride == nullptr ? nullptr : RideMainOpen(*ride);
299 }
300 case WindowClass::trackDesignPlace:
301 return TrackPlaceOpen(static_cast<TrackDesignFileRef*>(intent->GetPointerExtra(INTENT_EXTRA_TRACK_DESIGN)));

Callers 2

LoadParkFromStreamMethod · 0.45
ContextOpenIntentFunction · 0.45

Calls 15

GuestOpenFunction · 0.85
StaffFirePromptOpenFunction · 0.85
InstallTrackOpenFunction · 0.85
GuestListOpenWithFilterFunction · 0.85
OpenPreferredFunction · 0.85
TrackManageOpenFunction · 0.85
NetworkStatusOpenFunction · 0.85
ObjectLoadErrorOpenFunction · 0.85
GetRideFunction · 0.85
RideMainOpenFunction · 0.85
TrackPlaceOpenFunction · 0.85
TrackListOpenFunction · 0.85

Tested by

no test coverage detected