Пример #1
0
 public void OnDestroy()
 {
     if (boundData != null)
     {
         boundData.ReleaseThumbnailReference();
     }
     boundData = null;
 }
 private bool MatchesPart(RagdollPresetPartMetadata partRef, WorkshopItemMetadata part)
 {
     if (RagdollPresetPartMetadata.IsEmpty(partRef))
     {
         return(RagdollPresetPartMetadata.IsEmpty(part.folder));
     }
     return(partRef.modelPath == part.folder);
 }
Пример #3
0
    private IEnumerator RefreshTitleDescription()
    {
        int levelsCount = levelsToRefresh.Count;

        if (levelsCount != 0)
        {
            int startCount = 0;
            int batchCount = CalcBatchSize(levelsCount, startCount, 50);
            List <PublishedFileId_t> publishFields = new List <PublishedFileId_t>(50);
            while (batchCount > 0)
            {
                publishFields.Clear();
                for (int i = 0; i < batchCount; i++)
                {
                    publishFields.Add(new PublishedFileId_t(levelsToRefresh[i + startCount].workshopId));
                }
                UGCQueryHandle_t m_UGCQueryHandle = SteamUGC.CreateQueryUGCDetailsRequest(publishFields.ToArray(), (uint)publishFields.Count);
                SteamUGC.SetReturnLongDescription(m_UGCQueryHandle, bReturnLongDescription: true);
                OnSteamUGCQueryCompletedCallResult = CallResult <SteamUGCQueryCompleted_t> .Create(OnSteamUGCQueryCompleted);

                SteamAPICall_t h = SteamUGC.SendQueryUGCRequest(m_UGCQueryHandle);
                OnSteamUGCQueryCompletedCallResult.Set(h);
                while (OnSteamUGCQueryCompletedCallResult != null)
                {
                    yield return(null);
                }
                for (int j = 0; j < batchCount; j++)
                {
                    if (SteamUGC.GetQueryUGCResult(refreshResults, (uint)j, out SteamUGCDetails_t UGCDetails))
                    {
                        bool flag = false;
                        WorkshopItemMetadata workshopItemMetadata = levelsToRefresh[j + startCount];
                        if (!workshopItemMetadata.title.Equals(UGCDetails.m_rgchTitle))
                        {
                            workshopItemMetadata.title = UGCDetails.m_rgchTitle;
                            flag = true;
                        }
                        if (!workshopItemMetadata.description.Equals(UGCDetails.m_rgchDescription))
                        {
                            workshopItemMetadata.description = UGCDetails.m_rgchDescription;
                            flag = true;
                        }
                        if (flag)
                        {
                            workshopItemMetadata.Save(workshopItemMetadata.folder);
                        }
                    }
                }
                SteamUGC.ReleaseQueryUGCRequest(refreshResults);
                startCount += batchCount;
                batchCount  = CalcBatchSize(levelsCount, startCount, 50);
            }
        }
        levelsToRefresh.Clear();
    }
Пример #4
0
 protected void RemoveItem(WorkshopItemSource source, WorkshopItemMetadata item)
 {
     if (item != null)
     {
         Remove((T)item);
         foreach (List <T> value in bySource.Values)
         {
             value.Remove((T)item);
         }
     }
 }
Пример #5
0
 private void LoadBuiltinModels()
 {
     for (int i = 0; i < builtinModels.Length; i++)
     {
         if (builtinModels[i] != null)
         {
             WorkshopItemMetadata meta = builtinModels[i].meta;
             modelRepos[meta.itemType].AddItem(WorkshopItemSource.BuiltIn, meta);
         }
     }
     presetRepo.LoadSkins();
 }
Пример #6
0
 private void EnsureSkin(string path)
 {
     if (GetItem(path) == null)
     {
         RagdollPresetMetadata ragdollPresetMetadata = WorkshopItemMetadata.Load <RagdollPresetMetadata>(path);
         if (ragdollPresetMetadata == null)
         {
             ragdollPresetMetadata        = CreateDefaultSkin();
             ragdollPresetMetadata.folder = path;
         }
         AddItem(WorkshopItemSource.BuiltIn, ragdollPresetMetadata);
     }
 }
Пример #7
0
 public static void Upload(WorkshopItemMetadata meta, string folder, string thumbnail, string updateNotes, Action <WorkshopItemMetadata, bool, EResult> uploadCallback)
 {
     if (!Initialize())
     {
         uploadCallback(meta, arg2: false, EResult.k_EResultConnectFailed);
         return;
     }
     WorkshopUpload.uploadCallback = uploadCallback;
     WorkshopUpload.meta           = meta;
     WorkshopUpload.folder         = folder;
     WorkshopUpload.thumbnail      = thumbnail;
     WorkshopUpload.updateNotes    = updateNotes;
     Upload();
 }
Пример #8
0
 private void OnDownloadLevel(DownloadItemResult_t param)
 {
     if (onRead != null)
     {
         if (param.m_eResult == EResult.k_EResultOK)
         {
             onRead(WorkshopItemMetadata.Load <WorkshopLevelMetadata>("ws:" + param.m_nPublishedFileId));
         }
         else
         {
             onRead(null);
         }
         onRead = null;
     }
 }
Пример #9
0
    public void AddItem(WorkshopItemSource source, WorkshopItemMetadata item)
    {
        item.levelType = source;
        T item2 = GetItem(item.folder);

        if (item2 != null)
        {
            int index = IndexOf(item2);
            base[index]             = (T)item;
            index                   = bySource[source].IndexOf(item2);
            bySource[source][index] = (T)item;
        }
        else
        {
            bySource[source].Add((T)item);
            Add((T)item);
        }
    }
    private void OnPublishOver(WorkshopItemMetadata meta, bool needAgreement, EResult error)
    {
        FileTools.DeleteTempDirectory(tempFolder);
        switch (error)
        {
        case EResult.k_EResultOK:
            SteamProgressOverlay.instance.ShowSteamProgress(showProgress: false, null, null);
            base.gameObject.SetActive(value: true);
            preset.workshopId = meta.workshopId;
            preset.Save(preset.folder);
            TransitionForward <CustomizationRootMenu>();
            return;

        case EResult.k_EResultFileNotFound:
            preset.workshopId = 0uL;
            preset.Save(preset.folder);
            break;
        }
        SteamProgressOverlay.instance.ShowSteamProgress(showProgress: false, string.Empty, DismissSteamError);
    }
Пример #11
0
    public override void Bind(int index, object data)
    {
        base.Bind(index, data);
        WorkshopItemMetadata workshopItemMetadata = data as WorkshopItemMetadata;

        if (workshopItemMetadata.isModel)
        {
            string name = (data as RagdollModelMetadata).modelPrefab.name;
            label.text = LocalizationManager.GetTermTranslation("SKINS/" + name);
        }
        else
        {
            label.text = workshopItemMetadata.title;
        }
        image.texture = workshopItemMetadata.thumbnailTexture;
        if (boundData != null)
        {
            boundData.ReleaseThumbnailReference();
        }
        boundData = workshopItemMetadata;
    }
Пример #12
0
    private void OnPublishOver(WorkshopItemMetadata meta, bool needAgreement, EResult error)
    {
        GameObject currentSelectedGameObject = EventSystem.current.currentSelectedGameObject;

        if (error == EResult.k_EResultOK)
        {
            SteamProgressOverlay.instance.ShowSteamProgress(showProgress: false, null, null);
            base.gameObject.SetActive(value: true);
            Rebind();
        }
        else
        {
            if (error == EResult.k_EResultFileNotFound)
            {
                meta.workshopId = 0uL;
                meta.Save(meta.folder);
            }
            SteamProgressOverlay.instance.ShowSteamProgress(showProgress: false, string.Empty, DismissSteamError);
        }
        previousSelectedItem = currentSelectedGameObject;
    }
Пример #13
0
    public void LoadLevel(ulong levelId, Action <WorkshopLevelMetadata> onRead)
    {
        PublishedFileId_t publishedFileId_t = new PublishedFileId_t(levelId);
        uint itemState = SteamUGC.GetItemState(publishedFileId_t);

        Debug.Log("itemstate: " + itemState + " " + publishedFileId_t);
        if ((itemState & 8) != 0 || itemState == 0)
        {
            this.onRead = onRead;
            OnDownloadItemCallResult = Callback <DownloadItemResult_t> .Create(OnDownloadLevel);

            if (!SteamUGC.DownloadItem(publishedFileId_t, bHighPriority: true))
            {
                onRead(null);
                this.onRead = null;
            }
        }
        else
        {
            onRead(WorkshopItemMetadata.Load <WorkshopLevelMetadata>("ws:" + publishedFileId_t.m_PublishedFileId));
            this.onRead = null;
        }
    }
Пример #14
0
    private void ReadFolder(WorkshopItemSource source, string folder)
    {
        WorkshopItemMetadata workshopItemMetadata = WorkshopItemMetadata.Load(folder);

        if (workshopItemMetadata == null)
        {
            return;
        }
        switch (workshopItemMetadata.itemType)
        {
        case WorkshopItemType.Level:
            break;

        case WorkshopItemType.Levels:
            if (source == WorkshopItemSource.Subscription || source == WorkshopItemSource.LocalWorkshop)
            {
                levelRepo.AddItem(source, workshopItemMetadata);
            }
            break;

        case WorkshopItemType.Lobbies:
            if (source == WorkshopItemSource.SubscriptionLobbies || source == WorkshopItemSource.LocalWorkshop)
            {
                levelRepo.AddItem(source, workshopItemMetadata);
            }
            break;

        case WorkshopItemType.RagdollPreset:
            presetRepo.AddItem(source, workshopItemMetadata);
            break;

        default:
            modelRepos[workshopItemMetadata.itemType].AddItem(source, workshopItemMetadata);
            break;
        }
    }
Пример #15
0
    public static AssetBundle LoadBundle(WorkshopItemMetadata wsMeta)
    {
        string path = FileTools.Combine(wsMeta.folder, "data");

        return(FileTools.LoadBundle(path));
    }