예제 #1
0
    private static void conflictCallbackCalled(IntPtr games, uint length)
    {
        Debug.Log("Length:" + length);

        SavedGameDataGameCenter[] savedGames = new SavedGameDataGameCenter[length];

        IntPtr p = games;

        for (uint i = 0; i < length; i++)
        {
            savedGames[i] = (SavedGameDataGameCenter)Marshal.PtrToStructure(p, typeof(SavedGameDataGameCenter));
            p            += Marshal.SizeOf(typeof(SavedGameDataGameCenter)); // move to next structure
        }

        conflictCallback(savedGames);
    }
예제 #2
0
    private static void fetchSavesCompleteCalled(IntPtr games, uint length)
    {
        isRunningFetchGames = false;

        Debug.Log("Length:" + length);

        SavedGameDataGameCenter[] savedGames = new SavedGameDataGameCenter[length];

        IntPtr p = games;

        for (uint i = 0; i < length; i++)
        {
            savedGames[i] = (SavedGameDataGameCenter)Marshal.PtrToStructure(p, typeof(SavedGameDataGameCenter));
            p            += Marshal.SizeOf(typeof(SavedGameDataGameCenter)); // move to next structure
        }

        fetchGamesCallback(savedGames);
    }
예제 #3
0
    public static void GKLoadGame(SavedGameDataGameCenter savedGame, Action <byte[]> savedDataCallback)
    {
        if (isRunningLoadGame)
        {
            savedDataCallback(null);
            return;
        }

        loadCallback      = savedDataCallback;
        isRunningLoadGame = true;

        IntPtr savedGamePtr = Marshal.AllocHGlobal(Marshal.SizeOf(savedGame));

        Marshal.StructureToPtr <SavedGameDataGameCenter>(savedGame, savedGamePtr, false);

#if CPS_GAME_CENTER && (UNITY_IOS || UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
        _GKLoadGame(savedGamePtr, loadCompleteCalled);
#endif
    }