/// <summary> /// Execute a use item request /// </summary> /// <remarks> /// Generally delegates to individual modules, but not always /// </remarks> /// <param name="origin">Item that initiated request</param> public CoreUseItemResponse UseItem(CoreUseItemRequest request, Item origin, IResponse response) { response = new CoreUseItemResponse() { _requestInstanceId = request._requestInstanceId, CoreUseItemEvent = new CoreUseItemEvent() { Use = request.Use, Using = origin, Success = false } }; try { ItemCommandHandlers.ForEach(itemCommandHandler => { if (((CoreUseItemResponse)response)._responseSuccess == false) { var coreUseItemEvent = itemCommandHandler.Invoke(request.Use, origin); if (coreUseItemEvent != null) { ((CoreUseItemResponse)response).CoreUseItemEvent = coreUseItemEvent; ((CoreUseItemResponse)response)._responseSuccess = true; } } }); } catch (Exception e) { ((CoreUseItemResponse)response)._responseSuccess = false; ((CoreUseItemResponse)response)._responseMessage = $"Unable to use item: {e.Message}"; } return((CoreUseItemResponse)response); }
/// <summary> /// Process an item command /// </summary> /// <param name="itemCommand"></param> private async Task OnItemCommand(ItemCommand itemCommand) { if (itemCommand.Id == new Guid("0db8f80d-0ea8-4cbf-80ba-b37cab739391")) { var jsonEditorPage = new JsonEditorPage(Container); jsonEditorPage.ViewModel.ItemId = itemCommand.ItemId.ToString(); jsonEditorPage.ViewModel.PreLoad = true; jsonEditorPage.Disappearing += (disSender, disE) => { MessageService.Send(new WorldReadLocationSummaryRequest() { }); }; await Page.Navigation.PushModalAsync(jsonEditorPage); } else { var useRequest = new CoreUseItemRequest() { ItemId = itemCommand.ItemId, Use = itemCommand }; var result = await MessageService.SendRequestAsync <CoreUseItemResponse>(useRequest); if (!result.IsSuccess()) { throw new BeforeOurTimeException(result._responseMessage); } } }
/// <summary> /// Execute a use item request /// </summary> /// <param name="origin">Item that initiated request</param> public string UseItem(CoreUseItemRequest request, Item origin, IResponse response) { throw new NotImplementedException(); }