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 query.SetReturnMetadata(metadata:
true);
148 if (!query.Execute(HandleResults))
150 ReportError(
"UgcQuery.Execute failed at page " + page);
153 void HandleResults(UgcQuery q)
157 results.AddRange(q.ResultsList.Where((WorkshopItem r) => ids.Add(r.FileId)));
158 if (q.ResultsList.Count == 0 || page >= q.pageCount)
162 onComplete?.Invoke(results);
166 query.SetPage(++page);
171 void ReportError(
string error)
183 Debug.LogError(error);
187 IEnumerator Timeout()
189 uint lastPage = page;
190 float time = Time.realtimeSinceStartup;
193 if (lastPage != page)
196 time = Time.realtimeSinceStartup;
198 if (Time.realtimeSinceStartup - time > timeout)
200 ReportError(
"UgcQuery timed out at page " + page +
" (" + results.Count +
" items fetched)");
210 Debug.Log(
"Creating Content2");
212 Debug.Log(items.Count);
213 foreach (WorkshopItem
item in items)
215 if (
item.keyValueTags.IsEmpty())
219 StringKeyValuePair[] keyValueTags =
item.keyValueTags;
220 for (
int i = 0; i < keyValueTags.Length; i++)
222 StringKeyValuePair stringKeyValuePair = keyValueTags[i];
223 if (stringKeyValuePair.key ==
"id" && stringKeyValuePair.value == baseModPackage.id &&
item.Owner.IsMe)
225 Debug.Log(
"Updating Content");
231 Debug.Log(
"Creating Content");
232 CreateItemData(baseModPackage).Create(
null,
null,
new WorkshopItemKeyValueTag[1]
234 new WorkshopItemKeyValueTag
237 value = baseModPackage.id
239 }, delegate(WorkshopItemDataCreateStatus result)
241 LayerProgress.completed =
true;
246 Debug.Log(
"error:" + result.errorMessage);
251 Debug.Log(
"created");
258 Debug.Log(
"Updating Content");
261 workshopItemData.publishedFileId = fileId;
262 workshopItemData.Update(delegate(WorkshopItemDataUpdateStatus result)
264 LayerProgress.completed =
true;
267 Dialog.Ok(
"mod_publish_error");
268 EClass.ui.Say(result.errorMessage);
269 Debug.Log(
"error:" + result.errorMessage);
273 Dialog.Ok(
"mod_updated");
274 Debug.Log(
"updated");
281 FileInfo fileInfo =
new FileInfo(p.
dirInfo.FullName +
"/preview.jpg");
282 DirectoryInfo directoryInfo =
new DirectoryInfo(p.
dirInfo.FullName);
283 WorkshopItemData result =
new WorkshopItemData
288 content = directoryInfo,
290 metadata = (p.id ??
""),
292 visibility = ERemoteStoragePublishedFileVisibility.k_ERemoteStoragePublishedFileVisibilityPublic
297 result.visibility = ERemoteStoragePublishedFileVisibility.k_ERemoteStoragePublishedFileVisibilityUnlisted;
300 result.visibility = ERemoteStoragePublishedFileVisibility.k_ERemoteStoragePublishedFileVisibilityPrivate;
303 result.visibility = ERemoteStoragePublishedFileVisibility.k_ERemoteStoragePublishedFileVisibilityFriendsOnly;
306 Debug.Log(App.Client.Owner.id);
307 Debug.Log(result.appId);
309 Debug.Log(directoryInfo.Exists +
"/" + directoryInfo.FullName);
310 Debug.Log(fileInfo.Exists +
"/" + fileInfo.FullName);
List< Action > actionsNextFrame
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)