2using System.Collections;
3using System.Collections.Generic;
6using HeathenEngineering.SteamworksIntegration;
7using HeathenEngineering.SteamworksIntegration.API;
11public class Steam : MonoBehaviour
17 public UserGeneratedContentQueryManager
ugc;
31 BaseCore.IsOffline = !App.Client.LoggedOn || SteamSettings.behaviour ==
null;
47 ID_DLC.CursedManor =>
true,
63 if (achievement.Id ==
id.ToString())
65 if (achievement.IsAchieved)
73 EClass.
ui.Say(
"sys_acv".lang(achievement.Name), Resources.Load<Sprite>(
"Media/Graphics/Icon/Achievement/acv_" +
id));
74 SE.Play(
"achievement");
79 Debug.LogError(
"Error Achievement 1:" + ex);
87 Debug.LogError(
"Error Achievement 2:" + ex2);
89 Debug.Log(
"Achievement not found:" +
id);
96 achievement.ClearAchievement();
103 AchievementObject achievementObject =
Instance.
steamworks.settings.achievements.FirstOrDefault((AchievementObject a) => a.Id ==
id.ToString());
104 if (achievementObject !=
null)
106 achievementObject.ClearAchievement();
107 achievementObject.Store();
126 LayerProgress.completed =
true;
127 Debug.LogError(error);
132 public static void QueryAllMyPublished(Action<List<WorkshopItem>> onComplete, Action<string> onFail =
null,
float timeout = 10f)
134 List<WorkshopItem> results =
new List<WorkshopItem>();
135 HashSet<PublishedFileId_t> ids =
new HashSet<PublishedFileId_t>();
138 UgcQuery query = UgcQuery.GetMyPublished();
146 query.SetReturnKeyValueTags(tags:
true);
147 if (!query.Execute(HandleResults))
149 ReportError(
"UgcQuery.Execute failed at page " + page);
152 void HandleResults(UgcQuery q)
156 results.AddRange(q.ResultsList.Where((WorkshopItem r) => ids.Add(r.FileId)));
157 if (q.ResultsList.Count == 0 || page >= q.pageCount)
161 onComplete?.Invoke(results);
165 query.SetPage(++page);
170 void ReportError(
string error)
182 Debug.LogError(error);
186 IEnumerator Timeout()
188 uint lastPage = page;
189 float time = Time.realtimeSinceStartup;
192 if (lastPage != page)
195 time = Time.realtimeSinceStartup;
197 if (Time.realtimeSinceStartup - time > timeout)
199 ReportError(
"UgcQuery timed out at page " + page +
" (" + results.Count +
" items fetched)");
209 Debug.Log(
"Creating Content2");
211 Debug.Log(items.Count);
212 foreach (WorkshopItem
item in items)
214 if (
item.keyValueTags.IsEmpty())
218 StringKeyValuePair[] keyValueTags =
item.keyValueTags;
219 for (
int i = 0; i < keyValueTags.Length; i++)
221 StringKeyValuePair stringKeyValuePair = keyValueTags[i];
222 if (stringKeyValuePair.key ==
"id" && stringKeyValuePair.value == baseModPackage.id &&
item.Owner.IsMe)
224 Debug.Log(
"Updating Content");
230 Debug.Log(
"Creating Content");
231 CreateItemData(baseModPackage).Create(
null,
null,
new WorkshopItemKeyValueTag[1]
233 new WorkshopItemKeyValueTag
236 value = baseModPackage.id
238 }, delegate(WorkshopItemDataCreateStatus result)
240 LayerProgress.completed =
true;
245 Debug.Log(
"error:" + result.errorMessage);
250 Debug.Log(
"created");
257 Debug.Log(
"Updating Content");
260 workshopItemData.publishedFileId = fileId;
261 workshopItemData.Update(delegate(WorkshopItemDataUpdateStatus result)
263 LayerProgress.completed =
true;
266 Dialog.Ok(
"mod_publish_error");
267 EClass.ui.Say(result.errorMessage);
268 Debug.Log(
"error:" + result.errorMessage);
272 Dialog.Ok(
"mod_updated");
273 Debug.Log(
"updated");
280 FileInfo fileInfo =
new FileInfo(p.
dirInfo.FullName +
"/preview.jpg");
281 DirectoryInfo directoryInfo =
new DirectoryInfo(p.
dirInfo.FullName);
282 WorkshopItemData result =
new WorkshopItemData
287 content = directoryInfo,
289 metadata = (p.id ??
""),
291 visibility = ERemoteStoragePublishedFileVisibility.k_ERemoteStoragePublishedFileVisibilityPublic
296 result.visibility = ERemoteStoragePublishedFileVisibility.k_ERemoteStoragePublishedFileVisibilityUnlisted;
299 result.visibility = ERemoteStoragePublishedFileVisibility.k_ERemoteStoragePublishedFileVisibilityPrivate;
302 result.visibility = ERemoteStoragePublishedFileVisibility.k_ERemoteStoragePublishedFileVisibilityFriendsOnly;
305 Debug.Log(App.Client.Owner.id);
306 Debug.Log(result.appId);
308 Debug.Log(directoryInfo.Exists +
"/" + directoryInfo.FullName);
309 Debug.Log(fileInfo.Exists +
"/" + fileInfo.FullName);
void UpdateMeta(bool updateOnly=false)
bool HasBackerRewardCode()
static Dialog Ok(string langDetail, Action action=null)
static LayerProgress Start(string text, Action onComplete=null)
void UpdateUserContent(PublishedFileId_t fileId)
SteamworksBehaviour steamworks
static void GetAchievement(ID_Achievement id)
static void ResetAchievement(ID_Achievement id)
static void ResetAllAchievement()
BaseModPackage currentPackage
static bool HasDLC(ID_DLC id)
static void QueryAllMyPublished(Action< List< WorkshopItem > > onComplete, Action< string > onFail=null, float timeout=10f)
WorkshopItemData CreateItemData(BaseModPackage p)
void CreateOrUpdateUserContent(List< WorkshopItem > items)
UserGeneratedContentQueryManager ugc
void CreateUserContent(BaseModPackage p)