7 static const float IMAGE_SIZE_RATIO = 16.0 / 9.0;
8 static const string PRIMARY_ACTION_MESSAGE_DECORATION =
"[%1]";
9 static const int CONTINUOUS_UPDATE_DELAY = 1000;
10 static const int MAX_DEPENDENCIES_SHOWN = 999;
11 static const int MAX_VOTES_SHOWN = 99999;
14 static const int PAGE_SCENARIOS = 4096;
17 static const ResourceName ADDON_TYPE_FILTER_CATEGORY_CONFIG =
"{A557E41062372854}Configs/ContentBrowser/Filters/category_type.conf";
18 static const ResourceName ADDON_MANW_FILTER_CATEGORY_CONFIG =
"{FB69283C67BD9E67}Configs/ContentBrowser/Filters/category_manw.conf";
25 static const ResourceName ADDON_DEFAULT_THUMBNAIL =
"{04EB797EBF59CDEF}UI/Textures/Workshop/AddonThumbnails/workshop_defaultFallback_UI.edds";
26 static const ResourceName ADDON_DEFAULT_THUMBNAIL_LOADING =
"{75455009AFED376B}UI/Textures/Workshop/AddonThumbnails/workshop_loading_UI.edds";
27 static const ResourceName SCENARIO_SP_DEFAULT_THUMBNAIL =
"{17D65C6D78C7722C}UI/Textures/Workshop/AddonThumbnails/workshop_scenarios_UI.edds";
28 static const ResourceName SCENARIO_MP_DEFAULT_THUMBNAIL =
"{62A03BAAAED612E8}UI/Textures/Workshop/AddonThumbnails/workshop_mpScenarios_UI.edds";
31 static const string MESSAGE_DEPENDENCIES_MISSING =
"#AR-Workshop_State_MissingDependencies";
32 static const string MESSAGE_DEPENDENCIES_DISABLED =
"#AR-Workshop_State_MustEnableDependencies";
33 static const string MESSAGE_DEPENDENCIES_OUTDATED =
"#AR-Workshop_State_DependencyUpdateAvailable";
34 static const string MESSAGE_UPDATE_AVAILABLE =
"#AR-Workshop_State_UpdateAvailable";
35 static const string MESSAGE_REPORTED =
"#AR-Workshop_State_Reported";
36 static const string MESSAGE_BANNED =
"#AR-Workshop_State_Banned";
37 static const string MESSAGE_CORRUPTED =
"#AR-Workshop_State_Corrupted";
38 static const string MESSAGE_RESTRICTED =
"#AR-Workshop_State_Restricted";
39 static const string MESSAGE_RESTRICTED_GENERIC =
"#AR-Workshop_Dialog_Error_ModIsBlocked";
40 static const string MESSAGE_FALLBACK =
"#AR-CoreMenus_Tooltips_Unavailable";
43 static const string LABEL_DOWNLOAD =
"#AR-Workshop_ButtonDownload";
44 static const string LABEL_UPDATE =
"#AR-Workshop_ButtonUpdate";
45 static const string LABEL_CANCEL =
"#AR-Workshop_ButtonCancel";
46 static const string LABEL_ENABLE =
"#AR-Workshop_ButtonEnable";
47 static const string LABEL_DISABLE =
"#AR-Workshop_ButtonDisable";
48 static const string LABEL_DELETE =
"#AR-Workshop_ButtonDelete";
49 static const string LABEL_DEPENDENCIES_DOWNLOAD =
"#AR-Workshop_ButtonDownloadDependencies";
50 static const string LABEL_DEPENDENCIES_ENABLE =
"#AR-Workshop_ButtonEnableDependencies";
51 static const string LABEL_DEPENDENCIES_UPDATE =
"#AR-Workshop_ButtonUpdateDependencies";
52 static const string LABEL_ADDON_DISABLED =
"#AR-Workshop_State_Disabled";
53 static const string LABEL_ADDON_MISSING =
"#AR-ServerBrowser_JoinMissingModsTittle";
54 static const string LABEL_REPORT =
"#AR-Workshop_ButtonReport";
55 static const string LABEL_CANCEL_REPORT =
"#AR-Workshop_CancelReportTitle";
56 static const string LABEL_DEPENDENCIES_NUMBER_ONE =
"#AR-Workshop_Details_ModDependencies_Short_One_LC";
57 static const string LABEL_DEPENDENCIES_NUMBER =
"#AR-Workshop_Details_ModDependencies_Short_LC";
58 static const string LABEL_DEPENDENT_NUMBER_ONE =
"#AR-Workshop_Details_DependentMods_Short_One_LC_Downloaded";
59 static const string LABEL_DEPENDENT_NUMBER =
"#AR-Workshop_Details_DependentMods_Short_LC_Downloaded";
60 static const string LABEL_IP_ADDRESS =
"#AR-ServerBrowser_IP";
63 static const string ICON_DOWNLOAD =
"download";
64 static const string ICON_UPDATE =
"update";
65 static const string ICON_CANCEL_DOWNLOAD =
"cancel";
66 static const string ICON_REPAIR =
"repairCircle";
67 static const string ICON_DEPENDENCIES =
"dependencies";
68 static const string ICON_REPORTED =
"reportedByMe";
69 static const string ICON_ENABLED =
"okCircle";
70 static const string ICON_DISABLED =
"cancelCircle";
71 static const string ICON_LINKED =
"linked";
72 static const string ICON_VERSION_MATCH =
"version_match";
73 static const string ICON_VERSION_MISMATCH =
"version_mismatch";
77 static const string MESSAGE_MOD_NOT_AVAILABLE =
"#AR-Workshop_State_NotAvailable";
78 static const string MESSAGE_MOD_NOT_AVAILABLE_REMOVED =
"#AR-Workshop_State_Removed";
79 static const string MESSAGE_MOD_NOT_AVAILABLE_INCOMPATIBLE =
"#AR-Workshop_State_Incompatible";
80 static const string MESSAGE_MOD_AVAILABLE_WHEN_UPDATED =
"#AR-Workshop_State_UpdateRequired";
81 static const string MESSAGE_MOD_DOWNLOAD_NOT_FINISHED =
"#AR-Workshop_State_DownloadNotFinished";
84 static const string MESSAGE_VERBOSE_MOD_NOT_AVAILABLE =
"#AR-Workshop_State_NotAvailableDesc";
85 static const string MESSAGE_VERBOSE_MOD_NOT_AVAILABLE_REMOVED =
"#AR-Workshop_State_RemovedDesc";
86 static const string MESSAGE_VERBOSE_MOD_NOT_AVAILABLE_INCOMPATIBLE =
"#AR-Workshop_State_IncompatibleDesc";
87 static const string MESSAGE_VERBOSE_MOD_AVAILABLE_WHEN_UPDATED =
"#AR-Workshop_State_UpdateRequiredDesc";
88 static const string MESSAGE_VERBOSE_MOD_DOWNLOAD_NOT_FINISHED =
"#AR-Workshop_State_DownloadNotFinishedDesc";
91 static const string ICON_MOD_NOT_AVAILABLE =
"not-available";
92 static const string ICON_MOD_NOT_AVAILABLE_REMOVED =
"cancelCircle";
93 static const string ICON_MOD_NOT_AVAILABLE_INCOMPATIBLE =
"incompatible";
94 static const string ICON_MOD_AVAILABLE_WHEN_UPDATED =
"available-when-updated";
95 static const string ICON_MOD_DOWNLOAD_NOT_FINISHED =
"downloading";
98 static const string DOWNLOAD_STATE_DOWNLOADING =
"#AR-DownloadManager_State_Downloading";
99 static const string DOWNLOAD_STATE_PROCESSING =
"#AR-DownloadManager_State_Processing";
100 static const string DOWNLOAD_STATE_PAUSED =
"#AR-Workshop_ButtonPause";
101 static const string DOWNLOAD_STATE_CANCELED =
"#AR-Workshop_Canceled";
102 static const string DOWNLOAD_STATE_DOWNLOAD_FAIL =
"#AR-Workshop_DownloadFail";
103 static const string DOWNLOAD_STATE_COMPLETED =
"#AR-Workshop_Details_Downloaded";
106 static const string DOWNLOAD_STATE_ICON_DOWNLOADING =
"downloading";
107 static const string DOWNLOAD_STATE_ICON_PROCESSING =
"update";
108 static const string DOWNLOAD_STATE_ICON_PAUSED =
"download-pause";
111 static const string LINK_NAME_LICENSES =
"Link_Bohemia";
128 static void TryOpenWorkshop()
132 ContentBrowserUI.Create();
146 ContentBrowserUI.Create();
182 if (!offlineAndDependent.IsEmpty())
205 array<ref SCR_WorkshopItemActionDownload> downloadsToCancel = {};
208 downloadsToCancel.Insert(download);
210 if (dependenciesDownload)
212 array<ref SCR_WorkshopItemAction> dependencyItemActions = dependenciesDownload.GetActions();
217 downloadsToCancel.Insert(downloadAction);
229 revision = item.GetLatestRevision();
232 if (!item.GetOffline())
239 switch (item.GetHighestPriorityProblem())
252 item.SetDependenciesEnabled(
true);
285 downloading = action.IsActive() || action.IsPaused();
301 return SCR_EAddonPrimaryActionState.DOWNLOADING;
309 case EWorkshopItemProblem.DEPENDENCY_MISSING:
return SCR_EAddonPrimaryActionState.DEPENDENCIES_DOWNLOAD;
310 case EWorkshopItemProblem.DEPENDENCY_OUTDATED:
return SCR_EAddonPrimaryActionState.DEPENDENCIES_UPDATE;
311 case EWorkshopItemProblem.DEPENDENCY_DISABLED:
return SCR_EAddonPrimaryActionState.DEPENDENCIES_ENABLE;
315 if (!item.GetOffline())
316 return SCR_EAddonPrimaryActionState.DOWNLOAD;
318 return SCR_EAddonPrimaryActionState.DOWNLOADED;
327 return s_sAddonTagImageMap.Get(tag);
333 array<WorkshopTag> tagObjs = {};
337 if (!internalItem || !s_sAddonTagDefaultThumbnailMap)
338 return ADDON_DEFAULT_THUMBNAIL;
341 internalItem.GetTags(tagObjs);
344 string tagStr = tagObj.Name();
347 if (s_sAddonTagDefaultThumbnailMap.Contains(tagStr))
348 return s_sAddonTagDefaultThumbnailMap.Get(tagStr);
351 return ADDON_DEFAULT_THUMBNAIL;
364 return LABEL_DOWNLOAD;
386 case SCR_EAddonPrimaryActionState.DOWNLOAD:
388 icon = ICON_DOWNLOAD;
392 messageColor =
Color.FromInt(
UIColors.IDLE_ACTIVE.PackToInt());
396 case SCR_EAddonPrimaryActionState.DOWNLOADING:
398 icon = DOWNLOAD_STATE_ICON_DOWNLOADING;
399 iconColor =
Color.FromInt(
UIColors.CONTRAST_COLOR.PackToInt());
402 message =
WidgetManager.Translate(
"%1 %2", DOWNLOAD_STATE_DOWNLOADING, percentage);
403 messageColor =
Color.FromInt(
UIColors.NEUTRAL_INFORMATION.PackToInt());
407 case SCR_EAddonPrimaryActionState.UPDATE:
409 if (availability != SCR_ERevisionAvailability.ERA_COMPATIBLE_UPDATE_AVAILABLE)
411 iconColor =
Color.FromInt(
UIColors.SLIGHT_WARNING.PackToInt());
412 messageColor =
Color.FromInt(
UIColors.IDLE_ACTIVE.PackToInt());
426 case SCR_EAddonPrimaryActionState.DEPENDENCIES_UPDATE:
429 iconColor =
Color.FromInt(
UIColors.SLIGHT_WARNING.PackToInt());
432 messageColor =
Color.FromInt(
UIColors.IDLE_ACTIVE.PackToInt());
436 case SCR_EAddonPrimaryActionState.DEPENDENCIES_DOWNLOAD:
438 icon = ICON_DOWNLOAD;
439 iconColor =
Color.FromInt(
UIColors.SLIGHT_WARNING.PackToInt());
442 messageColor =
Color.FromInt(
UIColors.IDLE_ACTIVE.PackToInt());
446 case SCR_EAddonPrimaryActionState.DEPENDENCIES_ENABLE:
449 iconColor =
Color.FromInt(
UIColors.SLIGHT_WARNING.PackToInt());
452 messageColor =
Color.FromInt(
UIColors.IDLE_ACTIVE.PackToInt());
461 string message = MESSAGE_FALLBACK;
465 case SCR_EAddonPrimaryActionState.DOWNLOAD:
467 message = LABEL_DOWNLOAD;
471 case SCR_EAddonPrimaryActionState.DOWNLOADING:
473 message = LABEL_CANCEL;
477 case SCR_EAddonPrimaryActionState.UPDATE:
478 case SCR_EAddonPrimaryActionState.DEPENDENCIES_UPDATE:
479 case SCR_EAddonPrimaryActionState.DEPENDENCIES_DOWNLOAD:
480 case SCR_EAddonPrimaryActionState.DEPENDENCIES_ENABLE:
500 bool needsUpdate = revisionCurrent && revisionLatest && !
Revision.AreEqual(revisionCurrent, revisionLatest);
503 showUpdateText = needsUpdate;
507 currentVersionTextColor =
UIColors.NEUTRAL_ACTIVE_STANDBY;
509 currentVersionTextColor =
UIColors.NEUTRAL_INFORMATION;
513 revision = revisionCurrent.GetVersion();
514 else if (revisionLatest)
515 revision = revisionLatest.GetVersion();
517 currentVersionText =
UIConstants.FormatVersion(revision);
520 updateVersionText =
UIConstants.FormatVersion(revisionLatest.GetVersion());
525 currentVersionIconColor =
Color.FromInt(
UIColors.NEUTRAL_INFORMATION.PackToInt());
526 currentVersionIcon = ICON_DOWNLOAD;
528 else if (needsUpdate)
530 currentVersionIconColor =
Color.FromInt(
UIColors.SLIGHT_WARNING.PackToInt());
531 currentVersionIcon = ICON_UPDATE;
535 currentVersionIconColor =
Color.FromInt(
UIColors.NEUTRAL_INFORMATION.PackToInt());
536 currentVersionIcon = ICON_VERSION_MATCH;
548 return MESSAGE_REPORTED;
550 return MESSAGE_BANNED;
552 return MESSAGE_RESTRICTED;
561 case EWorkshopReportType.EWREPORT_INAPPROPRIATE_CONTENT:
return "#AR-Workshop_Report_InappropiateContent";
562 case EWorkshopReportType.EWREPORT_OFFENSIVE_LANGUAGE:
return "#AR-Workshop_Report_OffensiveLanguage";
563 case EWorkshopReportType.EWREPORT_MISLEADING:
return "#AR-Workshop_Report_Missleading_NonFunctional";
567 case EWorkshopReportType.EWREPORT_INTELLECTUAL_PROPERTY:
return "#AR-Workshop_Report_IPInfringement";
579 button.SetVisible(
false);
583 bool show = state == SCR_EAddonPrimaryActionState.DOWNLOADED;
584 if (alwaysShowWhenDownloaded)
591 button.SetVisible(show);
597 button.SetEnabled(state != SCR_EAddonPrimaryActionState.DOWNLOADING && !(!item.
GetEnabled() && state == SCR_EAddonPrimaryActionState.DEPENDENCIES_DOWNLOAD));
599 string enableButtonMode =
"no_problems";
600 if (state == SCR_EAddonPrimaryActionState.DEPENDENCIES_DOWNLOAD || state == SCR_EAddonPrimaryActionState.DEPENDENCIES_ENABLE)
601 enableButtonMode =
"problems";
603 button.SetEffectsWithAnyTagEnabled({
"all", enableButtonMode});
616 return Math.Floor(100.0 * progress);
622 return Math.Ceil(100.0 * rating);
628 return Math.Clamp(
Math.Ceil(item.GetAverageRating() * item.GetRatingCount()), 0, MAX_VOTES_SHOWN);
634 return Math.Clamp(
Math.Ceil(item.GetRatingCount() - (item.GetAverageRating() * item.GetRatingCount())), 0, MAX_VOTES_SHOWN);
642 return MESSAGE_MOD_NOT_AVAILABLE;
652 case SCR_ERevisionAvailability.ERA_AVAILABLE:
return string.Empty;
653 case SCR_ERevisionAvailability.ERA_UNKNOWN_AVAILABILITY:
return MESSAGE_MOD_NOT_AVAILABLE;
654 case SCR_ERevisionAvailability.ERA_DELETED:
return MESSAGE_MOD_NOT_AVAILABLE_REMOVED;
655 case SCR_ERevisionAvailability.ERA_OBSOLETE:
return MESSAGE_MOD_NOT_AVAILABLE_INCOMPATIBLE;
656 case SCR_ERevisionAvailability.ERA_COMPATIBLE_UPDATE_AVAILABLE:
return MESSAGE_MOD_AVAILABLE_WHEN_UPDATED;
657 case SCR_ERevisionAvailability.ERA_DOWNLOAD_NOT_FINISHED:
return MESSAGE_MOD_DOWNLOAD_NOT_FINISHED;
660 return MESSAGE_MOD_NOT_AVAILABLE;
667 return MESSAGE_VERBOSE_MOD_NOT_AVAILABLE;
677 case SCR_ERevisionAvailability.ERA_AVAILABLE:
return string.Empty;
678 case SCR_ERevisionAvailability.ERA_UNKNOWN_AVAILABILITY:
return MESSAGE_VERBOSE_MOD_NOT_AVAILABLE;
679 case SCR_ERevisionAvailability.ERA_DELETED:
return MESSAGE_VERBOSE_MOD_NOT_AVAILABLE_REMOVED;
680 case SCR_ERevisionAvailability.ERA_OBSOLETE:
return MESSAGE_VERBOSE_MOD_NOT_AVAILABLE_INCOMPATIBLE;
681 case SCR_ERevisionAvailability.ERA_COMPATIBLE_UPDATE_AVAILABLE:
return MESSAGE_VERBOSE_MOD_AVAILABLE_WHEN_UPDATED;
682 case SCR_ERevisionAvailability.ERA_DOWNLOAD_NOT_FINISHED:
return MESSAGE_VERBOSE_MOD_DOWNLOAD_NOT_FINISHED;
685 return MESSAGE_VERBOSE_MOD_NOT_AVAILABLE;
692 return ICON_MOD_NOT_AVAILABLE;
702 case SCR_ERevisionAvailability.ERA_AVAILABLE:
return string.Empty;
703 case SCR_ERevisionAvailability.ERA_UNKNOWN_AVAILABILITY:
return ICON_MOD_NOT_AVAILABLE;
704 case SCR_ERevisionAvailability.ERA_DELETED:
return ICON_MOD_NOT_AVAILABLE_REMOVED;
705 case SCR_ERevisionAvailability.ERA_OBSOLETE:
return ICON_MOD_NOT_AVAILABLE_INCOMPATIBLE;
706 case SCR_ERevisionAvailability.ERA_COMPATIBLE_UPDATE_AVAILABLE:
return ICON_MOD_AVAILABLE_WHEN_UPDATED;
707 case SCR_ERevisionAvailability.ERA_DOWNLOAD_NOT_FINISHED:
return ICON_MOD_DOWNLOAD_NOT_FINISHED;
710 return ICON_MOD_NOT_AVAILABLE;
718 array<string> bannedAddons = {};
719 GetGame().GetBackendApi().GetWorkshop().GetBannedItems(bannedAddons);
721 if (!bannedAddons.IsEmpty())
746 if (!offlineAndEnabled.IsEmpty())
754 SCR_FilterCategory cat = SCR_ConfigHelperT<SCR_FilterCategory>.GetConfigObject(configPath);
760 string internalName = filter.m_sInternalName;
761 internalName.ToLower();
762 s_sAddonTagImageMap.Insert(internalName, filter.m_sImageName);
767 if (!filterTag.m_sDefaultThumbnail.IsEmpty())
768 s_sAddonTagDefaultThumbnailMap.Insert(internalName, filterTag.m_sDefaultThumbnail);
774enum SCR_EAddonPrimaryActionState
ArmaReforgerScripted GetGame()
void SCR_DisableDependentAddonsDialog(array< ref SCR_WorkshopItem > items, string preset, SCR_WorkshopItem dependency)
class SCR_WorkshopUiCommon DOWNLOADING
class SCR_WorkshopUiCommon DEPENDENCIES_DOWNLOAD
class SCR_WorkshopUiCommon DOWNLOAD
Job is downloading revision without any other revision of the asset present - fresh download.
class SCR_WorkshopUiCommon DEPENDENCIES_ENABLE
class SCR_WorkshopUiCommon UPDATE
Some revision is already present and job is downloading newer one.
class SCR_WorkshopUiCommon DEPENDENCIES_UPDATE
ref ScriptInvoker m_OnUgcPrivilegeResult
void NegotiateUgcPrivilegeAsync()
static SCR_ERevisionAvailability ItemAvailability(notnull WorkshopItem item)
ref ScriptInvoker m_OnAddonsChecked
bool GetUgcPrivilege()
Returns immediate value of UserPrivilege.USER_GEN_CONTENT.
static array< ref SCR_WorkshopItem > SelectItemsAnd(array< ref SCR_WorkshopItem > items, EWorkshopItemQuery query)
static SCR_AddonManager GetInstance()
Dialog which lists names of all banned addons.
Dialog to cancel downloads.
static SCR_ConfigurableDialogUi CreateFromPreset(ResourceName presetsResourceName, string tag, SCR_ConfigurableDialogUi customDialogObj=null)
Creates a dialog from preset.
This dialog is shown when we want to delete an addon but some other downloaded addons depend on it.
static SCR_DeleteAddonDependentAddonsDetected Create(array< ref SCR_WorkshopItem > items, SCR_WorkshopItem item)
static SCR_DeleteAddonDialog CreateDeleteAddon(SCR_WorkshopItem item)
static float GetItemDownloadActionsProgress(SCR_WorkshopItem item)
Returns overall download progress for all actions of a workshop item.
array< ref SCR_FilterEntry > GetFilters()
Returns array with filter entries.
static SCR_WorkshopDownloadSequence Create(SCR_WorkshopItem item, Revision itemTargetRevision, SCR_WorkshopDownloadSequence previous)
Tries to create a new request if previous doesn't exist or finished. Otherwise returns the previous r...
Composite action which includes multiple subactions.
Revision GetCurrentLocalRevision()
Returns the revision which we currently have on the local storage.
Revision GetLatestRevision()
bool GetOffline()
True when we have the item on our local storage.
EWorkshopItemProblem GetHighestPriorityProblem()
array< ref SCR_WorkshopItem > GetDependentAddons()
Returns array of dependendent addons.
SCR_WorkshopItemActionComposite GetDependencyCompositeAction()
Returns the current composite action performed for dependencies of this addon.
void SetEnabled(bool enable)
bool GetRestricted()
Returns true when item is restricted for any reason (blocked or reported).
void SetDependenciesEnabled(bool enable)
Enables/disables all downloaded dependencies.
SCR_WorkshopItemActionDownload GetDownloadAction()
Returns current download action.
static void UpdateEnableAddonToggleButton(SCR_ModularButtonComponent button, SCR_WorkshopItem item, SCR_EAddonPrimaryActionState state, bool alwaysShowWhenDownloaded=true)
static int GetRatingPercentage(float rating)
static int GetDownvotes(notnull SCR_WorkshopItem item)
static string GetRevisionAvailabilityErrorMessage(WorkshopItem item)
static string GetRevisionAvailabilityErrorTexture(WorkshopItem item)
static void OnTryOpenWorkshopUgcPrivilegeResult(bool result)
static string GetRevisionAvailabilityErrorMessageVerbose(SCR_ERevisionAvailability state)
static void SetAddonEnabled(SCR_WorkshopItem item, bool newEnabled)
Internal method to handle addon enabling. Might show a dialog or enable some other addons(dependnecie...
static string GetReportTypeString(EWorkshopReportType eReportType)
Converts report type enum to stringtable entry.
static string GetTagImage(string tag)
Returns image associated with given Workshop tag.
static void OnEnableAddonButton(SCR_WorkshopItem item)
static ResourceName GetDefaultAddonThumbnail(notnull SCR_WorkshopItem item)
static string GetPrimaryActionName(SCR_WorkshopItem item)
Returns name of suggested primary action.
static void OnEnableAddonToggleButton(SCR_WorkshopItem item, SCR_ModularButtonComponent buttonComp)
static void ExecutePrimaryAction(notnull SCR_WorkshopItem item, out SCR_WorkshopDownloadSequence dlRequest, Revision revision=null)
static array< ref SCR_WorkshopItem > GetDownloadedDependentAddons(notnull SCR_WorkshopItem item)
static string GetRevisionAvailabilityErrorTexture(SCR_ERevisionAvailability state)
static SCR_EAddonPrimaryActionState GetPrimaryActionState(notnull SCR_WorkshopItem item)
static bool IsDownloadingAddon(SCR_WorkshopItem item)
static string GetRevisionAvailabilityErrorMessage(SCR_ERevisionAvailability state)
static string GetRestrictedAddonStateText(SCR_WorkshopItem item)
Returns string such as "Banned" or "Reported" for a restricted item. Otherwise returns empty string.
static string GetRevisionAvailabilityErrorMessageVerbose(WorkshopItem item)
static void InitAddonTagMaps(ResourceName configPath)
static void Callback_OnAddonsChecked()
Callback from addon manager when addons are checked.
static void GetPrimaryActionLook(SCR_EAddonPrimaryActionState state, SCR_ERevisionAvailability availability, SCR_WorkshopItem item, out string icon, out Color iconColor, out string message, out Color messageColor)
static void OnDeleteAddonButton(SCR_WorkshopItem item)
Shows a confirmation dialog when unsubscribing an addon.
static int GetUpvotes(notnull SCR_WorkshopItem item)
static int GetDownloadProgressPercentage(float progress)
static bool IsDownloadingAddonOrDependencies(SCR_WorkshopItem item)
static void GetVersionDisplayLook(SCR_WorkshopItem item, out bool showUpdateText, out string currentVersionIcon, out Color currentVersionIconColor, out string currentVersionText, out Color currentVersionTextColor, out string updateVersionText)
static string GetPrimaryActionTooltipMessage(SCR_EAddonPrimaryActionState state, SCR_WorkshopItem item)
override bool OnGameStart()
Gets called after world is initialized but before first ticks.