using System; using System.Runtime.InteropServices; using AOT; using UnityEngine; namespace Addons.YandexGamesShortcuts { public static class Shortcuts { private static Action m_canSuggestCallback; private static Action m_onSuggestionAcceptCallback; private static Action m_onSuggestionDeclineCallback; public static bool CallbackLogging = false; public static void Suggest(Action onAccept = null, Action onDecline = null) { m_onSuggestionAcceptCallback = onAccept; m_onSuggestionDeclineCallback = onDecline; SuggestShortcut(SuggestShortcutCallbackAccept, SuggestShortcutCallbackDecline); } public static void IsCanSuggest(Action onSuccessCallback) { m_canSuggestCallback = onSuccessCallback; CanSuggestShortcut(CanSuggestShortcutCallback); } [DllImport("__Internal")] private static extern void CanSuggestShortcut(Action onSuccess); [DllImport("__Internal")] private static extern void SuggestShortcut(Action onAccept, Action onDecline); [MonoPInvokeCallback(typeof(Action))] private static void CanSuggestShortcutCallback(int isCan) { if (CallbackLogging) Debug.Log($"{nameof(Shortcuts)}.{nameof(CanSuggestShortcutCallback)} called. {nameof(isCan)}={isCan}"); m_canSuggestCallback.Invoke(isCan == 1); } [MonoPInvokeCallback(typeof(Action))] private static void SuggestShortcutCallbackAccept() { if (CallbackLogging) Debug.Log($"{nameof(Shortcuts)}.{nameof(SuggestShortcutCallbackAccept)} called"); m_onSuggestionAcceptCallback?.Invoke(); } [MonoPInvokeCallback(typeof(Action))] private static void SuggestShortcutCallbackDecline() { if (CallbackLogging) Debug.Log($"{nameof(Shortcuts)}.{nameof(SuggestShortcutCallbackDecline)} called"); m_onSuggestionDeclineCallback?.Invoke(); } } }