예제 #1
0
    public void AddWearablesToCatalog(string payload)
    {
        if (VERBOSE)
        {
            Debug.Log("add wearables: " + payload);
        }

        WearablesRequestResponse request = null;

        try
        {
            request = JsonUtility.FromJson <WearablesRequestResponse>(payload);
        }
        catch (Exception e)
        {
            Debug.LogError($"Fail to parse wearables json {e}");
        }

        if (request == null)
        {
            return;
        }

        AddWearablesToCatalog(request.wearables);

        if (!string.IsNullOrEmpty(request.context))
        {
            ResolvePendingWearablesByContextPromise(request.context, request.wearables);
            pendingWearablesByContextRequestedTimes.Remove(request.context);
        }
    }
예제 #2
0
    public void AddWearablesToCatalog(string payload)
    {
        WearablesRequestResponse request = JsonUtility.FromJson <WearablesRequestResponse>(payload);

        if (VERBOSE)
        {
            Debug.Log("add wearables: " + payload);
        }

        for (int i = 0; i < request.wearables.Length; i++)
        {
            switch (request.wearables[i].type)
            {
            case "wearable":
            {
                WearableItem wearableItem = request.wearables[i];

                if (!wearableCatalog.ContainsKey(wearableItem.id))
                {
                    wearableCatalog.Add(wearableItem.id, wearableItem);
                    wearablesInUseCounters.Add(wearableItem.id, 1);
                    ResolvePendingWearablePromise(wearableItem.id, wearableItem);
                    pendingWearableRequestedTimes.Remove(wearableItem.id);
                }

                break;
            }

            case "item":
            {
                if (!itemCatalog.ContainsKey(request.wearables[i].id))
                {
                    itemCatalog.Add(request.wearables[i].id, (Item)request.wearables[i]);
                }

                break;
            }

            default:
            {
                Debug.LogError("Bad type in item, will not be added to catalog");
                break;
            }
            }
        }

        if (!string.IsNullOrEmpty(request.context))
        {
            ResolvePendingWearablesByContextPromise(request.context, request.wearables);
            pendingWearablesByContextRequestedTimes.Remove(request.context);
        }
    }