예제 #1
0
    /// <summary>
    /// Gets the values.
    /// </summary>
    /// <returns>
    /// The values.
    /// </returns>
    public AGSSyncableNumberElement[] GetValues()
    {
#if UNITY_ANDROID
        AndroidJNI.PushLocalFrame(10);
        AndroidJavaObject[] records = javaObject.Call <AndroidJavaObject[]>("getValues");

        if (records == null || records.Length == 0)
        {
            return(null);
        }

        AGSSyncableNumberElement[] returnElements =
            new AGSSyncableNumberElement[records.Length];

        for (int i = 0; i < records.Length; ++i)
        {
            returnElements[i] = new AGSSyncableNumber(records[i]);
        }
        AndroidJNI.PopLocalFrame(System.IntPtr.Zero);

        return(returnElements);
#else
        return(null);
#endif
    }
예제 #2
0
    /// <summary>
    /// Sets the syncable value of a GameCircle syncable number associated with this syncableNumberHelper.
    /// Also sets the metadata for that value.
    /// </summary>
    /// <param name='syncableNumber'>
    /// Syncable number.
    /// </param>
    void SetSyncableValueWithMetadata(AGSSyncableNumber syncableNumber)
    {
        if (null == syncableNumber)
        {
            return;
        }
        switch (type)
        {
        case AvailableSyncableNumberType.Int:
            syncableNumber.Set(intNumber, defaultMetadataDictionary);
            break;

        case AvailableSyncableNumberType.Double:
            syncableNumber.Set(doubleNumber, defaultMetadataDictionary);
            break;

        case AvailableSyncableNumberType.Long:
            syncableNumber.Set(longNumber, defaultMetadataDictionary);
            break;

        case AvailableSyncableNumberType.String:
            syncableNumber.Set(stringNumber, defaultMetadataDictionary);
            break;

        default:
            AGSClient.LogGameCircleWarning(unhandledSyncableNumberTypeError);
            break;
        }
    }
    /// <summary>
    /// Gets the values.
    /// </summary>
    /// <returns>
    /// The values.
    /// </returns>
    public AGSSyncableNumberElement[] GetValues()
    {
#if UNITY_ANDROID
        AndroidJNI.PushLocalFrame(10);
        AndroidJavaObject[] records = javaObject.Call <AndroidJavaObject[]>("getValues");

        if (records == null || records.Length == 0)
        {
            return(null);
        }

        AGSSyncableNumberElement[] returnElements =
            new AGSSyncableNumberElement[records.Length];

        for (int i = 0; i < records.Length; ++i)
        {
            returnElements[i] = new AGSSyncableNumber(records[i]);
        }
        AndroidJNI.PopLocalFrame(System.IntPtr.Zero);

        return(returnElements);
#elif UNITY_IOS
        // Data is pulled from the numbers when they are accessed.
        // To access a number in a list, you need the list key, and the number index.
        int numberOfElements = getListSize();
        AGSSyncableNumberElement [] elements = new AGSSyncableNumberElement[numberOfElements];
        for (int listIndex = 0; listIndex < numberOfElements; listIndex++)
        {
            elements[listIndex] = new AGSSyncableNumber(this, listIndex, method);
        }
        return(elements);
#else
        return(null);
#endif
    }
예제 #4
0
    /// <summary>
    /// Gets the syncable value of a GameCircle syncable number associated with this syncableNumberHelper.
    /// Stores it in the local variable that matches this syncable number helper's type.
    /// </summary>
    /// <param name='syncableNumber'>
    /// Syncable number.
    /// </param>
    void GetSyncableValue(AGSSyncableNumber syncableNumber)
    {
        if (null == syncableNumber)
        {
            return;
        }
        switch (type)
        {
        case AvailableSyncableNumberType.Int:
            intNumber = syncableNumber.AsInt();
            break;

        case AvailableSyncableNumberType.Double:
            doubleNumber = syncableNumber.AsDouble();
            break;

        case AvailableSyncableNumberType.Long:
            longNumber = syncableNumber.AsLong();
            break;

        case AvailableSyncableNumberType.String:
            stringNumber = syncableNumber.AsString();
            break;

        default:
            AGSClient.LogGameCircleWarning(unhandledSyncableNumberTypeError);
            break;
        }
    }
예제 #5
0
 /// <summary>
 /// Gets the metadata associated with this number.
 /// </summary>
 /// <param name='syncableNumber'>
 /// Syncable number.
 /// </param>
 Dictionary <string, string> GetMetadata(AGSSyncableNumber syncableNumber)
 {
     if (null == syncableNumber)
     {
         return(null);
     }
     return(syncableNumber.GetMetadata());
 }
예제 #6
0
    /// <summary>
    /// Gets the values.
    /// </summary>
    /// <returns>
    /// The values.
    /// </returns>
    public AGSSyncableNumberElement[] GetValues(){
#if UNITY_ANDROID
        AndroidJNI.PushLocalFrame(10);
        AndroidJavaObject[] records = javaObject.Call<AndroidJavaObject[]>("getValues");
        
        if(records == null || records.Length == 0){
            return null;
        }
        
        AGSSyncableNumberElement[] returnElements =
                new AGSSyncableNumberElement[records.Length];
        
        for( int i = 0; i < records.Length; ++i){
            returnElements[i] = new AGSSyncableNumber(records[i]);
        }
        AndroidJNI.PopLocalFrame(System.IntPtr.Zero);

        return returnElements;
        
#elif UNITY_IOS
        // Data is pulled from the numbers when they are accessed.
        // To access a number in a list, you need the list key, and the number index.
        int numberOfElements = getListSize();    
        AGSSyncableNumberElement [] elements = new AGSSyncableNumberElement[numberOfElements];
        for(int listIndex = 0; listIndex < numberOfElements; listIndex++) {
            elements[listIndex] = new AGSSyncableNumber(this, listIndex, method );
        }
        return elements;    
#else
        return null;
#endif
    }
 /// <summary>
 /// Sets the syncable value of a GameCircle syncable number associated with this syncableNumberHelper.
 /// Also sets the metadata for that value.
 /// </summary>
 /// <param name='syncableNumber'>
 /// Syncable number.
 /// </param>
 void SetSyncableValueWithMetadata(AGSSyncableNumber syncableNumber)
 {
     if(null == syncableNumber) {
         return;
     }
     switch(type) {
     case AvailableSyncableNumberType.Int:
         syncableNumber.Set(intNumber,defaultMetadataDictionary);
         break;
     case AvailableSyncableNumberType.Double:
         syncableNumber.Set(doubleNumber,defaultMetadataDictionary);
         break;
     case AvailableSyncableNumberType.Long:
         syncableNumber.Set(longNumber,defaultMetadataDictionary);
         break;
     case AvailableSyncableNumberType.String:
         syncableNumber.Set(stringNumber,defaultMetadataDictionary);
         break;
     default:
         AGSClient.LogGameCircleWarning(unhandledSyncableNumberTypeError);
         break;
     }
 }
 /// <summary>
 /// Gets the syncable value of a GameCircle syncable number associated with this syncableNumberHelper.
 /// Stores it in the local variable that matches this syncable number helper's type.
 /// </summary>
 /// <param name='syncableNumber'>
 /// Syncable number.
 /// </param>
 void GetSyncableValue(AGSSyncableNumber syncableNumber)
 {
     if(null == syncableNumber) {
         return;
     }
     switch(type) {
     case AvailableSyncableNumberType.Int:
         intNumber = syncableNumber.AsInt();
         break;
     case AvailableSyncableNumberType.Double:
         doubleNumber = syncableNumber.AsDouble();
         break;
     case AvailableSyncableNumberType.Long:
         longNumber = syncableNumber.AsLong();
         break;
     case AvailableSyncableNumberType.String:
         stringNumber = syncableNumber.AsString();
         break;
     default:
         AGSClient.LogGameCircleWarning(unhandledSyncableNumberTypeError);
         break;
     }
 }
 /// <summary>
 /// Gets the metadata associated with this number.
 /// </summary>
 /// <param name='syncableNumber'>
 /// Syncable number.
 /// </param>
 Dictionary<string, string> GetMetadata(AGSSyncableNumber syncableNumber)
 {
     if(null == syncableNumber) {
         return null;
     }
     return syncableNumber.GetMetadata();
 }
예제 #10
0
    /// <summary>
    /// Draws an interface for this syncable number helper.
    /// </summary>
    /// <param name='dataMap'>
    /// The GameCircle Data map.
    /// </param>
    public void DrawGUI(AGSGameDataMap dataMap)
    {
        // put a visual box around this syncable number
        GUILayout.BeginVertical(GUI.skin.box);

        // foldouts keep things clean, they let the interface remain
        // hidden until needed
        foldoutOpen = AmazonGUIHelpers.FoldoutWithLabel(foldoutOpen, BehaviorAndTypeAsString());

        if (foldoutOpen)
        {
            // draw the slider for this element, so a user can select a new number.
            DrawSlider();

            // The getValue button will retrieve the current save value for this number.
            // This syncable number's save name is Behavior:Type.
            if (GUILayout.Button(string.Format(getValueLabel, BehaviorAndTypeAsString())))
            {
                using (AGSSyncableNumber syncableNumber = GetSyncableNumber(dataMap)) {
                    if (null != syncableNumber)
                    {
                        GetSyncableValue(syncableNumber);
                    }
                }
            }

            // a blank label to space things out a bit.
            GUILayout.Label(GUIContent.none);

            // The setValue button will save this number with Whispersync.
            // This syncable number's save name is Behavior:Type.
            if (GUILayout.Button(string.Format(setValueLabel, BehaviorAndTypeAsString())))
            {
                using (AGSSyncableNumber syncableNumber = GetSyncableNumber(dataMap)){
                    if (null != syncableNumber)
                    {
                        SetSyncableValue(syncableNumber);
                    }
                }
            }

            // a blank label to space things out a bit.
            GUILayout.Label(GUIContent.none);

            // this button sets the syncable value, with some metadata.
            if (GUILayout.Button(string.Format(setWithMetadataValueLabel, BehaviorAndTypeAsString())))
            {
                using (AGSSyncableNumber syncableNumber = GetSyncableNumber(dataMap)){
                    if (null != syncableNumber)
                    {
                        SetSyncableValueWithMetadata(syncableNumber);
                    }
                }
            }

            // a blank label to space things out a bit.
            GUILayout.Label(GUIContent.none);

            // This button retrieves the metadata associated with this number.
            if (GUILayout.Button(string.Format(getMetadataButtonLabel, BehaviorAndTypeAsString())))
            {
                using (AGSSyncableNumber syncableNumber = GetSyncableNumber(dataMap)){
                    if (null != syncableNumber)
                    {
                        metadataDictionary = GetMetadata(syncableNumber);
                    }
                }
            }

            DisplayMetadata();
        }
        GUILayout.EndVertical();
    }