Shortcuts.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using System.Runtime.InteropServices;
  3. using AOT;
  4. using UnityEngine;
  5. namespace Addons.YandexGamesShortcuts
  6. {
  7. public static class Shortcuts
  8. {
  9. private static Action<bool> m_canSuggestCallback;
  10. private static Action m_onSuggestionAcceptCallback;
  11. private static Action m_onSuggestionDeclineCallback;
  12. public static bool CallbackLogging = false;
  13. public static void Suggest(Action onAccept = null, Action onDecline = null)
  14. {
  15. m_onSuggestionAcceptCallback = onAccept;
  16. m_onSuggestionDeclineCallback = onDecline;
  17. SuggestShortcut(SuggestShortcutCallbackAccept, SuggestShortcutCallbackDecline);
  18. }
  19. public static void IsCanSuggest(Action<bool> onSuccessCallback)
  20. {
  21. m_canSuggestCallback = onSuccessCallback;
  22. CanSuggestShortcut(CanSuggestShortcutCallback);
  23. }
  24. [DllImport("__Internal")]
  25. private static extern void CanSuggestShortcut(Action<int> onSuccess);
  26. [DllImport("__Internal")]
  27. private static extern void SuggestShortcut(Action onAccept, Action onDecline);
  28. [MonoPInvokeCallback(typeof(Action<bool>))]
  29. private static void CanSuggestShortcutCallback(int isCan)
  30. {
  31. if (CallbackLogging)
  32. Debug.Log($"{nameof(Shortcuts)}.{nameof(CanSuggestShortcutCallback)} called. {nameof(isCan)}={isCan}");
  33. m_canSuggestCallback.Invoke(isCan == 1);
  34. }
  35. [MonoPInvokeCallback(typeof(Action))]
  36. private static void SuggestShortcutCallbackAccept()
  37. {
  38. if (CallbackLogging)
  39. Debug.Log($"{nameof(Shortcuts)}.{nameof(SuggestShortcutCallbackAccept)} called");
  40. m_onSuggestionAcceptCallback?.Invoke();
  41. }
  42. [MonoPInvokeCallback(typeof(Action))]
  43. private static void SuggestShortcutCallbackDecline()
  44. {
  45. if (CallbackLogging)
  46. Debug.Log($"{nameof(Shortcuts)}.{nameof(SuggestShortcutCallbackDecline)} called");
  47. m_onSuggestionDeclineCallback?.Invoke();
  48. }
  49. }
  50. }