mirror of
https://github.com/thepeacockproject/Peacock
synced 2024-11-29 09:15:11 +01:00
4a08faeec0
* Refactor: use function for lookupContractPublicId * Trending and Mostplayed now display stuff * Add call to contract-preserving backend * Actually download contract data from official * add getRemoteService function * implement "contract search" tile * Change variable naming * Run prettier * Change naming to hitmaps * officialSearchContract -> contractsModeRouting.ts * Fix imports
2015 lines
198 KiB
JSON
2015 lines
198 KiB
JSON
{
|
|
"$if $gt ($.Data.TotalCount,0)": {
|
|
"$then": {
|
|
"id": "search_results_container",
|
|
"controller": "group",
|
|
"view": "menu3.containers.ScrollingListContainer",
|
|
"row": 0,
|
|
"col": 2,
|
|
"ncols": 8,
|
|
"nrows": 3,
|
|
"pages": true,
|
|
"direction": "horizontal",
|
|
"data": {
|
|
"direction": "horizontal",
|
|
"forceMask": true,
|
|
"maskwidthoffset": 400,
|
|
"maskstartleftoffset": 40,
|
|
"masktopoffset": 100,
|
|
"maskheightoffset": 200,
|
|
"overflowscrolling": "0.3",
|
|
"outsidemaskscrolling": true
|
|
},
|
|
"children": {
|
|
"$merge": [
|
|
{
|
|
"$if $.Data.HasPrevious": {
|
|
"$then": {
|
|
"$setup": {
|
|
"$set Title": "UI_MENU_PAGE_CHALLENGES_PREVIOUS",
|
|
"$set Icon": "arrowleft",
|
|
"$set PageDirection": -1,
|
|
"$in": {
|
|
"view": "menu3.basic.MenuTileSmall",
|
|
"nrows": 1.5,
|
|
"ncols": 2,
|
|
"data": {
|
|
"title": "$loc $.Title",
|
|
"icon": "$.Icon"
|
|
},
|
|
"id": "PrevNextTile",
|
|
"selectable": true,
|
|
"pressable": true,
|
|
"actions": {
|
|
"accept": {
|
|
"sm:submit-search-request": {
|
|
"restore-last-filterset": true,
|
|
"load-async": {
|
|
"from": {
|
|
"url": "contractsearchpaginate",
|
|
"args": {
|
|
"page": "0",
|
|
"sorting": ""
|
|
}
|
|
},
|
|
"post-load-action": {
|
|
"set-child-selected": {
|
|
"target": "search_results_container",
|
|
"selectdirection": "$.PageDirection"
|
|
}
|
|
},
|
|
"target": "search_results_container",
|
|
"page": "$.Data.Page",
|
|
"pagedirection": "$.PageDirection",
|
|
"showloadingindicator": true,
|
|
"blocksinput": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"$else": {
|
|
"selectable": false,
|
|
"pressable": false,
|
|
"nrows": 0,
|
|
"ncols": 0
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$each $.Data.Contracts": {
|
|
"$setup": {
|
|
"$set TileSize": "small",
|
|
"$in": {
|
|
"view": {
|
|
"$switch $.TileSize": [
|
|
{
|
|
"case": "small",
|
|
"return": "menu3.basic.MenuTileSmall"
|
|
},
|
|
{
|
|
"case": "large",
|
|
"return": "menu3.basic.MenuTileLarge"
|
|
},
|
|
{
|
|
"case": "tall",
|
|
"return": "menu3.basic.MenuTileTall"
|
|
}
|
|
]
|
|
},
|
|
"nrows": {
|
|
"$switch $.TileSize": [
|
|
{
|
|
"case": "small",
|
|
"return": 1.5
|
|
},
|
|
{
|
|
"case": "large",
|
|
"return": 3
|
|
},
|
|
{ "case": "tall", "return": 3 }
|
|
]
|
|
},
|
|
"ncols": {
|
|
"$switch $.TileSize": [
|
|
{
|
|
"case": "small",
|
|
"return": 2
|
|
},
|
|
{
|
|
"case": "large",
|
|
"return": 4
|
|
},
|
|
{ "case": "tall", "return": 2 }
|
|
]
|
|
},
|
|
"buttons": [
|
|
{
|
|
"$switch $.UserCentricContract.Contract.Metadata.Type": [
|
|
{
|
|
"case": "usercreated",
|
|
"return": {
|
|
"$if $not $($arg _ugcrestricted)": {
|
|
"$then": {
|
|
"actiontype": "action-y",
|
|
"actionlabel": "$loc UI_BUTTON_PROMPTS_ACTION_REPORT_CONTRACT"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$switch $.UserCentricContract.Contract.Metadata.Type": [
|
|
{
|
|
"case": "usercreated",
|
|
"return": {
|
|
"$if $not $($arg _ugcrestricted)": {
|
|
"$then": {
|
|
"$if $eqs ($($arg HitsCategory),MyPlaylist)": {
|
|
"$then": {
|
|
"actiontype": "action-x",
|
|
"actionlabel": {
|
|
"$if": {
|
|
"$condition": "$favrem:ismarkedforplaylistremoval $.UserCentricContract.Contract.Metadata.Id",
|
|
"$then": "$loc UI_BUTTON_PROMPTS_ACTION_UNMARK_FOR_REMOVAL",
|
|
"$else": "$loc UI_BUTTON_PROMPTS_ACTION_MARK_FOR_REMOVAL"
|
|
}
|
|
}
|
|
},
|
|
"$else": {
|
|
"$if $.UserCentricContract.Data.PlaylistData.IsAdded": {
|
|
"$then": {
|
|
"actiontype": "action-x",
|
|
"actionlabel": "$loc UI_BUTTON_PROMPTS_ACTION_REMOVE_FROM_PLAYLIST"
|
|
},
|
|
"$else": {
|
|
"actiontype": "action-x",
|
|
"actionlabel": "$loc UI_BUTTON_PROMPTS_ACTION_ADD_TO_PLAYLIST"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$if $stringvalid $arg NextSubType": {
|
|
"$then": {
|
|
"actiontype": "r",
|
|
"actionlabel": {
|
|
"$switch $arg NextSubType": [
|
|
{
|
|
"case": "MyHistory_failed",
|
|
"return": "$loc UI_CONTRACT_FILTER_SHOW_FAILED"
|
|
},
|
|
{
|
|
"case": "MyHistory_completed",
|
|
"return": "$loc UI_CONTRACT_FILTER_SHOW_COMPLETED"
|
|
},
|
|
{
|
|
"case": "MyHistory_all",
|
|
"return": "$loc UI_CONTRACT_FILTER_SHOW_ALL"
|
|
},
|
|
{
|
|
"case": "MyPlaylist_failed",
|
|
"return": "$loc UI_CONTRACT_FILTER_SHOW_FAILED"
|
|
},
|
|
{
|
|
"case": "MyPlaylist_completed",
|
|
"return": "$loc UI_CONTRACT_FILTER_SHOW_COMPLETED"
|
|
},
|
|
{
|
|
"case": "MyPlaylist_all",
|
|
"return": "$loc UI_CONTRACT_FILTER_SHOW_ALL"
|
|
},
|
|
{
|
|
"case": "MyContracts_failed",
|
|
"return": "$loc UI_CONTRACT_FILTER_SHOW_FAILED"
|
|
},
|
|
{
|
|
"case": "MyContracts_completed",
|
|
"return": "$loc UI_CONTRACT_FILTER_SHOW_COMPLETED"
|
|
},
|
|
{
|
|
"case": "MyContracts_all",
|
|
"return": "$loc UI_CONTRACT_FILTER_SHOW_ALL"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"id": {
|
|
"$if $stringvalid $.CustomId": {
|
|
"$then": "$.CustomId",
|
|
"$else": "$formatstring {$.UserCentricContract.Contract.Metadata.Id}_contractTile"
|
|
}
|
|
},
|
|
"pressable": {
|
|
"$use $.UserCentricContract": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "usercreated",
|
|
"return": {
|
|
"$if $($arg _ugcrestricted)": {
|
|
"$then": false,
|
|
"$else": true
|
|
}
|
|
}
|
|
},
|
|
{ "default": true }
|
|
]
|
|
}
|
|
},
|
|
"stateproviders": [
|
|
{
|
|
"type": "contractavailability",
|
|
"contract": "$.UserCentricContract.Contract"
|
|
},
|
|
{
|
|
"$switch $.UserCentricContract.Contract.Metadata.Type": [
|
|
{
|
|
"case": "usercreated",
|
|
"return": {
|
|
"$if $not $($arg _ugcrestricted)": {
|
|
"$then": {
|
|
"type": "contractplaylist",
|
|
"callback-id": "reload-contract-tiles",
|
|
"contract-id": "$.UserCentricContract.Contract.Metadata.Id"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"data": {
|
|
"$setup": {
|
|
"$set Data": "$.UserCentricContract.Data",
|
|
"$set Contract": "$.UserCentricContract.Contract",
|
|
"$in": {
|
|
"$mergeobjects": [
|
|
{
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "usercreated",
|
|
"return": {
|
|
"$if $($arg _ugcrestricted)": {
|
|
"$then": {
|
|
"header": {
|
|
"$setup": {
|
|
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
|
|
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
|
|
"$in": "$formatstring {$.Type} / {$.City}"
|
|
}
|
|
},
|
|
"title": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "usercreated",
|
|
"return": {
|
|
"$if $($arg _ugcrestricted)": {
|
|
"$then": "$loc UI_CONTRACT_NO_ACCESS_UGC",
|
|
"$else": "$.Contract.Metadata.Title"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"case": "featured",
|
|
"return": "$.Contract.Metadata.Title"
|
|
},
|
|
{
|
|
"default": "$loc $.Contract.Metadata.Title"
|
|
}
|
|
]
|
|
},
|
|
"locked": true,
|
|
"lockedreason": "$loc UI_CONTRACT_NO_ACCESS_UGC_DESCRIPTION",
|
|
"icon": "locked",
|
|
"isMarkedForDeletion": false
|
|
},
|
|
"$else": {
|
|
"header": {
|
|
"$setup": {
|
|
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
|
|
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
|
|
"$in": "$formatstring {$.Type} / {$.City}"
|
|
}
|
|
},
|
|
"title": "$.Contract.Metadata.Title",
|
|
"icon": "$.Contract.Metadata.Type",
|
|
"locked": "$.Data.IsLocked",
|
|
"lockedreason": "$loc $.Data.LockedReason",
|
|
"isMarkedForDeletion": {
|
|
"$if $eqs ($($arg HitsCategory),MyPlaylist)": {
|
|
"$then": "$favrem:ismarkedforplaylistremoval $.Contract.Metadata.Id",
|
|
"$else": false
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"case": "featured",
|
|
"return": {
|
|
"header": {
|
|
"$setup": {
|
|
"$set Type": "$loc UI_MENU_PAGE_HUB_FEATURED",
|
|
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
|
|
"$in": "$formatstring {$.Type} / {$.City}"
|
|
}
|
|
},
|
|
"title": "$.Contract.Metadata.Title",
|
|
"icon": "$.Contract.Metadata.Type",
|
|
"locked": "$.Data.IsLocked",
|
|
"lockedreason": "$loc $.Data.LockedReason"
|
|
}
|
|
},
|
|
{
|
|
"default": {
|
|
"header": {
|
|
"$if $not $isnull $.headeroverride": {
|
|
"$then": "$.headeroverride",
|
|
"$else": {
|
|
"$if": {
|
|
"$condition": {
|
|
"$or": [
|
|
"$eqs ($.EngineMode,singleplayer)",
|
|
"$eqs ($.EngineMode,multiplayer)"
|
|
]
|
|
},
|
|
"$then": {
|
|
"$if $eqs ($.EngineMode,multiplayer)": {
|
|
"$then": "$loc UI_MENU_GAME_MODE_MULTIPLAYER",
|
|
"$else": "$loc UI_MENU_GAME_MODE_SINGLE_PLAYER"
|
|
}
|
|
},
|
|
"$else": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "campaign",
|
|
"return": "$loc $.Contract.Metadata.GroupTitle"
|
|
},
|
|
{
|
|
"case": "flashback",
|
|
"return": {
|
|
"$if": {
|
|
"$condition": {
|
|
"$and": [
|
|
"$eqs ($.Contract.Metadata.Type,flashback)",
|
|
"$not $.Data.IsFreeDLC"
|
|
]
|
|
},
|
|
"$then": {
|
|
"$if $not $stringvalid $.Contract.Metadata.Subtype": {
|
|
"$then": "$loc UI_CONTRACT_HEADER_SEASONAL",
|
|
"$else": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Subtype}"
|
|
}
|
|
},
|
|
"$else": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"default": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"title": {
|
|
"$if $isnull $.titleoverride": {
|
|
"$then": "$loc $.Contract.Metadata.Title",
|
|
"$else": "$.titleoverride"
|
|
}
|
|
},
|
|
"icon": {
|
|
"$if $isnull $.iconoverride": {
|
|
"$then": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "dummy",
|
|
"return": {
|
|
"_dynamicPackerOverride": [
|
|
"SniperChallenge"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"case": "orbis",
|
|
"return": "ica"
|
|
},
|
|
{
|
|
"case": "campaign",
|
|
"return": "mission"
|
|
},
|
|
{
|
|
"case": "sniper",
|
|
"return": "sniperrifle"
|
|
},
|
|
{
|
|
"default": {
|
|
"$if $.Contract.Metadata.IsVersus": {
|
|
"$then": "versus",
|
|
"$else": "$.Contract.Metadata.Type"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"$else": "$.iconoverride"
|
|
}
|
|
},
|
|
"locked": {
|
|
"$if": {
|
|
"$condition": "$isnull $.lockoverride",
|
|
"$then": "$.Data.IsLocked",
|
|
"$else": "$.lockoverride"
|
|
}
|
|
},
|
|
"lockedreason": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "orbis",
|
|
"return": {
|
|
"$loc": {
|
|
"key": "UI_LOCKED_CONTENT_INFO_TEXT",
|
|
"data": "$loc $.Data.LockedReason"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"default": "$loc $.Data.LockedReason"
|
|
}
|
|
]
|
|
},
|
|
"elusivecontractstate": "$.Data.ElusiveContractState",
|
|
"completedlevels": "$.Data.EscalationCompletedLevels",
|
|
"totallevels": "$.Data.EscalationTotalLevels"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"playableSince": "$as3date $.Contract.Metadata.PlayableSince",
|
|
"playableUntil": "$as3date $.Contract.Metadata.PlayableUntil",
|
|
"lastPlayedAt": {
|
|
"$if $.Data.LastPlayedAt": {
|
|
"$then": "$as3date $.Data.LastPlayedAt",
|
|
"$else": null
|
|
}
|
|
},
|
|
"barcodeHeader": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
|
|
"barcodeTitle": "$loc $formatstring UI_{$.Contract.Metadata.Location}_COUNTRY",
|
|
"image": {
|
|
"$if $.tileimageoverride": {
|
|
"$then": "$res $.tileimageoverride",
|
|
"$else": {
|
|
"$if $.Contract.Metadata.TileImage": {
|
|
"$then": {
|
|
"$if $gt ($arraysize $.Contract.Metadata.TileImage,0)": {
|
|
"$then": {
|
|
"$setup": {
|
|
"$set EngineMode": {
|
|
"$if $isnull $.EngineMode": {
|
|
"$then": {
|
|
"$if $isnull $arg EngineMode": {
|
|
"$then": "singleplayer",
|
|
"$else": "$arg EngineMode"
|
|
}
|
|
},
|
|
"$else": "$.EngineMode"
|
|
}
|
|
},
|
|
"$set TileImageOrdered": {
|
|
"$orderby": {
|
|
"from": "$expand $.Contract.Metadata.TileImage",
|
|
"by": "Mode",
|
|
"order": [
|
|
"$.EngineMode"
|
|
]
|
|
}
|
|
},
|
|
"$in": "$res $.TileImageOrdered[0].Image"
|
|
}
|
|
},
|
|
"$else": "$res $expand $.Contract.Metadata.TileImage"
|
|
}
|
|
},
|
|
"$else": "$res images/ui/tiles/defaultmenutilesmall.jpg"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"completionstate": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "usercreated",
|
|
"return": {
|
|
"$if $.Data.LastPlayedAt": {
|
|
"$then": {
|
|
"$if $.Data.Completed": {
|
|
"$then": "completed",
|
|
"$else": "failed"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"case": "featured",
|
|
"return": {
|
|
"$if $.Data.LastPlayedAt": {
|
|
"$then": {
|
|
"$if $.Data.Completed": {
|
|
"$then": "completed",
|
|
"$else": "failed"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"case": "escalation",
|
|
"return": {
|
|
"$if $.Data.LastPlayedAt": {
|
|
"$then": {
|
|
"$if $.Data.EscalationCompleted": {
|
|
"$then": "completed"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"case": "placeholder",
|
|
"return": {
|
|
"$if $.Data.LastPlayedAt": {
|
|
"$then": {
|
|
"$if $.Data.EscalationCompleted": {
|
|
"$then": "completed"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"isInPlaylist": "$.Data.PlaylistData.IsAdded"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"actions": {
|
|
"$setup": {
|
|
"$set Data": "$.UserCentricContract.Data",
|
|
"$set Contract": "$.UserCentricContract.Contract",
|
|
"$in": {
|
|
"$mergeobjects": [
|
|
{
|
|
"select": {
|
|
"replace-children": {
|
|
"target": "headline_container",
|
|
"children": [
|
|
{
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "usercreated",
|
|
"return": {
|
|
"$if $($arg _ugcrestricted)": {
|
|
"$then": {
|
|
"view": "menu3.basic.HeadlineElement",
|
|
"selectable": false,
|
|
"pressable": false,
|
|
"data": {
|
|
"header": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
|
|
"title": "$loc UI_CONTRACT_NO_ACCESS_UGC_DESCRIPTION",
|
|
"typeicon": "contract"
|
|
}
|
|
},
|
|
"$else": {
|
|
"$setup": {
|
|
"$set Tags": {
|
|
"$sm:createtags": {
|
|
"id": "$.Contract.Metadata.Id",
|
|
"tags": "$.Data.MatchingTags"
|
|
}
|
|
},
|
|
"$in": {
|
|
"view": {
|
|
"$if $($arraysize $.Tags)": {
|
|
"$then": "menu3.basic.HeadlineWithTags",
|
|
"$else": "menu3.basic.HeadlineElement"
|
|
}
|
|
},
|
|
"selectable": false,
|
|
"pressable": false,
|
|
"data": {
|
|
"header": {
|
|
"$setup": {
|
|
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
|
|
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
|
|
"$set Mission": "$loc $formatstring UI_{$.Contract.Metadata.Location}_TITLE",
|
|
"$in": "$formatstring {$.Type} / {$.City} / {$.Mission}"
|
|
}
|
|
},
|
|
"creatorname": "$($user $.Contract.Metadata.CreatorUserId).name",
|
|
"publicid": "$formatpublicid $.Contract.Metadata.PublicId",
|
|
"title": "$.Contract.Metadata.Title",
|
|
"typeicon": "$.Contract.Metadata.Type",
|
|
"tags": "$.Tags"
|
|
},
|
|
"stateproviders": [
|
|
{
|
|
"type": "userresolution",
|
|
"target": "creatorname",
|
|
"profileid": "$.Contract.Metadata.CreatorUserId"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"case": "featured",
|
|
"return": {
|
|
"view": "menu3.basic.HeadlineElement",
|
|
"selectable": false,
|
|
"pressable": false,
|
|
"data": {
|
|
"header": {
|
|
"$setup": {
|
|
"$set Type": "$loc UI_MENU_PAGE_HUB_FEATURED",
|
|
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
|
|
"$set Mission": "$loc $formatstring UI_{$.Contract.Metadata.Location}_TITLE",
|
|
"$in": "$formatstring {$.Type} / {$.City} / {$.Mission}"
|
|
}
|
|
},
|
|
"creatorname": "$loc UI_CATEGORY_MESSAGE_CENTER_COMMUNITY",
|
|
"title": "$.Contract.Metadata.Title",
|
|
"typeicon": "$.Contract.Metadata.Type"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"case": "tutorial",
|
|
"return": {
|
|
"view": "menu3.basic.HeadlineElement",
|
|
"selectable": false,
|
|
"pressable": false,
|
|
"data": {
|
|
"header": {
|
|
"$setup": {
|
|
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
|
|
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
|
|
"$in": "$formatstring {$.Type} / {$.City} "
|
|
}
|
|
},
|
|
"title": "$loc $.Contract.Metadata.Title",
|
|
"typeicon": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "dummy",
|
|
"return": {
|
|
"_dynamicPackerOverride": [
|
|
"SniperChallenge"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"case": "orbis",
|
|
"return": "ica"
|
|
},
|
|
{
|
|
"case": "campaign",
|
|
"return": "mission"
|
|
},
|
|
{
|
|
"case": "sniper",
|
|
"return": "sniperrifle"
|
|
},
|
|
{
|
|
"default": {
|
|
"$if $.Contract.Metadata.IsVersus": {
|
|
"$then": "versus",
|
|
"$else": "$.Contract.Metadata.Type"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"case": "mission",
|
|
"return": {
|
|
"view": "menu3.basic.HeadlineElement",
|
|
"selectable": false,
|
|
"pressable": false,
|
|
"data": {
|
|
"header": {
|
|
"$setup": {
|
|
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
|
|
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
|
|
"$in": "$formatstring {$.Type} / {$.City}"
|
|
}
|
|
},
|
|
"title": "$loc $.Contract.Metadata.Title",
|
|
"typeicon": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "dummy",
|
|
"return": {
|
|
"_dynamicPackerOverride": [
|
|
"SniperChallenge"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"case": "orbis",
|
|
"return": "ica"
|
|
},
|
|
{
|
|
"case": "campaign",
|
|
"return": "mission"
|
|
},
|
|
{
|
|
"case": "sniper",
|
|
"return": "sniperrifle"
|
|
},
|
|
{
|
|
"default": {
|
|
"$if $.Contract.Metadata.IsVersus": {
|
|
"$then": "versus",
|
|
"$else": "$.Contract.Metadata.Type"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"case": "flashback",
|
|
"return": {
|
|
"view": "menu3.basic.HeadlineElement",
|
|
"selectable": false,
|
|
"pressable": false,
|
|
"data": {
|
|
"header": {
|
|
"$setup": {
|
|
"$set Type": {
|
|
"$if": {
|
|
"$condition": {
|
|
"$and": [
|
|
"$eqs ($.Contract.Metadata.Type,flashback)",
|
|
"$not $.Data.IsFreeDLC"
|
|
]
|
|
},
|
|
"$then": {
|
|
"$if $not $stringvalid $.Contract.Metadata.Subtype": {
|
|
"$then": "$loc UI_CONTRACT_HEADER_SEASONAL",
|
|
"$else": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Subtype}"
|
|
}
|
|
},
|
|
"$else": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}"
|
|
}
|
|
},
|
|
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
|
|
"$in": "$formatstring {$.Type} / {$.City}"
|
|
}
|
|
},
|
|
"title": "$loc $.Contract.Metadata.Title",
|
|
"typeicon": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "dummy",
|
|
"return": {
|
|
"_dynamicPackerOverride": [
|
|
"SniperChallenge"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"case": "orbis",
|
|
"return": "ica"
|
|
},
|
|
{
|
|
"case": "campaign",
|
|
"return": "mission"
|
|
},
|
|
{
|
|
"case": "sniper",
|
|
"return": "sniperrifle"
|
|
},
|
|
{
|
|
"default": {
|
|
"$if $.Contract.Metadata.IsVersus": {
|
|
"$then": "versus",
|
|
"$else": "$.Contract.Metadata.Type"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"case": "campaign",
|
|
"return": {
|
|
"view": "menu3.basic.HeadlineElement",
|
|
"selectable": false,
|
|
"pressable": false,
|
|
"data": {
|
|
"header": {
|
|
"$setup": {
|
|
"$set Type": "$loc $.Contract.Metadata.GroupTitle",
|
|
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
|
|
"$in": "$formatstring {$.Type} / {$.City}"
|
|
}
|
|
},
|
|
"title": "$loc $.Contract.Metadata.Title",
|
|
"typeicon": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "dummy",
|
|
"return": {
|
|
"_dynamicPackerOverride": [
|
|
"SniperChallenge"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"case": "orbis",
|
|
"return": "ica"
|
|
},
|
|
{
|
|
"case": "campaign",
|
|
"return": "mission"
|
|
},
|
|
{
|
|
"case": "sniper",
|
|
"return": "sniperrifle"
|
|
},
|
|
{
|
|
"default": {
|
|
"$if $.Contract.Metadata.IsVersus": {
|
|
"$then": "versus",
|
|
"$else": "$.Contract.Metadata.Type"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"case": "sniper",
|
|
"return": {
|
|
"view": "menu3.basic.HeadlineElement",
|
|
"selectable": false,
|
|
"pressable": false,
|
|
"data": {
|
|
"header": {
|
|
"$setup": {
|
|
"$set EngineMode": {
|
|
"$if $isnull $.EngineMode": {
|
|
"$then": {
|
|
"$if $isnull $arg EngineMode": {
|
|
"$then": "singleplayer",
|
|
"$else": "$arg EngineMode"
|
|
}
|
|
},
|
|
"$else": "$.EngineMode"
|
|
}
|
|
},
|
|
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
|
|
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
|
|
"$set EngineModeName": {
|
|
"$if": {
|
|
"$condition": {
|
|
"$or": [
|
|
"$eqs ($.EngineMode,singleplayer)",
|
|
"$eqs ($.EngineMode,multiplayer)"
|
|
]
|
|
},
|
|
"$then": {
|
|
"$if $eqs ($.EngineMode,multiplayer)": {
|
|
"$then": "$formatstring / {$loc UI_MENU_GAME_MODE_MULTIPLAYER}",
|
|
"$else": "$formatstring / {$loc UI_MENU_GAME_MODE_SINGLE_PLAYER}"
|
|
}
|
|
},
|
|
"$else": ""
|
|
}
|
|
},
|
|
"$in": "$formatstring {$.City}{$.EngineModeName}"
|
|
}
|
|
},
|
|
"title": "$loc $.Contract.Metadata.Title",
|
|
"typeicon": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "dummy",
|
|
"return": {
|
|
"_dynamicPackerOverride": [
|
|
"SniperChallenge"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"case": "orbis",
|
|
"return": "ica"
|
|
},
|
|
{
|
|
"case": "campaign",
|
|
"return": "mission"
|
|
},
|
|
{
|
|
"case": "sniper",
|
|
"return": "sniperrifle"
|
|
},
|
|
{
|
|
"default": {
|
|
"$if $.Contract.Metadata.IsVersus": {
|
|
"$then": "versus",
|
|
"$else": "$.Contract.Metadata.Type"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"case": "placeholder",
|
|
"return": {
|
|
"view": "menu3.basic.HeadlineElement",
|
|
"selectable": false,
|
|
"pressable": false,
|
|
"data": {
|
|
"header": {
|
|
"$setup": {
|
|
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
|
|
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
|
|
"$in": "$formatstring {$.Type} / {$.City}"
|
|
}
|
|
},
|
|
"title": "$loc $.Contract.Metadata.Title",
|
|
"typeicon": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "dummy",
|
|
"return": {
|
|
"_dynamicPackerOverride": [
|
|
"SniperChallenge"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"case": "orbis",
|
|
"return": "ica"
|
|
},
|
|
{
|
|
"case": "campaign",
|
|
"return": "mission"
|
|
},
|
|
{
|
|
"case": "sniper",
|
|
"return": "sniperrifle"
|
|
},
|
|
{
|
|
"default": {
|
|
"$if $.Contract.Metadata.IsVersus": {
|
|
"$then": "versus",
|
|
"$else": "$.Contract.Metadata.Type"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"default": {
|
|
"view": "menu3.basic.HeadlineElement",
|
|
"selectable": false,
|
|
"pressable": false,
|
|
"data": {
|
|
"header": {
|
|
"$setup": {
|
|
"$set Type": "$loc $formatstring UI_CONTRACT_HEADER_{$.Contract.Metadata.Type}",
|
|
"$set City": "$loc $formatstring UI_{$.Contract.Metadata.Location}_CITY",
|
|
"$set Mission": "$loc $formatstring UI_{$.Contract.Metadata.Location}_TITLE",
|
|
"$in": "$formatstring {$.Type} / {$.City} / {$.Mission}"
|
|
}
|
|
},
|
|
"title": "$loc $.Contract.Metadata.Title",
|
|
"typeicon": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "dummy",
|
|
"return": {
|
|
"_dynamicPackerOverride": [
|
|
"SniperChallenge"
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"case": "orbis",
|
|
"return": "ica"
|
|
},
|
|
{
|
|
"case": "campaign",
|
|
"return": "mission"
|
|
},
|
|
{
|
|
"case": "sniper",
|
|
"return": "sniperrifle"
|
|
},
|
|
{
|
|
"default": {
|
|
"$if $.Contract.Metadata.IsVersus": {
|
|
"$then": "versus",
|
|
"$else": "$.Contract.Metadata.Type"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"set-mastery-data": {
|
|
"$setup": {
|
|
"$set ValidContractType": {
|
|
"$if $isnull $.Contract": {
|
|
"$then": true,
|
|
"$else": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "usercreated",
|
|
"return": false
|
|
},
|
|
{
|
|
"case": "featured",
|
|
"return": false
|
|
},
|
|
{
|
|
"default": true
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"$set HideProgression": {
|
|
"$if $isnull $.CompletionData": {
|
|
"$then": "$.Data.LocationHideProgression",
|
|
"$else": "$.CompletionData.HideProgression"
|
|
}
|
|
},
|
|
"$set MasteryTitle": {
|
|
"$if $isnull $.CompletionData": {
|
|
"$then": "$formatstring {$.Data.LocationLevel,.0f}/{$.Data.LocationMaxLevel,.0f}",
|
|
"$else": "$formatstring {$.CompletionData.Level,.0f}/{$.CompletionData.MaxLevel,.0f}"
|
|
}
|
|
},
|
|
"$set MasteryCompletion": {
|
|
"$if $isnull $.CompletionData": {
|
|
"$then": "$.Data.LocationCompletion",
|
|
"$else": "$.CompletionData.Completion"
|
|
}
|
|
},
|
|
"$set MasteryXpLeft": {
|
|
"$if $isnull $.CompletionData": {
|
|
"$then": "$.Data.LocationXpLeft",
|
|
"$else": "$.CompletionData.XpLeft"
|
|
}
|
|
},
|
|
"$set NameLocalized": {
|
|
"$if $isnull $.CompletionData.Name": {
|
|
"$then": "$loc UI_MENU_PAGE_MASTERY_TITLE",
|
|
"$else": "$loc $.CompletionData.Name"
|
|
}
|
|
},
|
|
"$set IsLocationProgression": {
|
|
"$if": {
|
|
"$condition": {
|
|
"$or": [
|
|
"$isnull $.CompletionData",
|
|
"$.CompletionData.IsLocationProgression"
|
|
]
|
|
},
|
|
"$then": true,
|
|
"$else": false
|
|
}
|
|
},
|
|
"$set ShowUnit": {
|
|
"$if $.IsLocationProgression": {
|
|
"$then": true,
|
|
"$else": false
|
|
}
|
|
},
|
|
"$in": {
|
|
"$if": {
|
|
"$condition": {
|
|
"$and": [
|
|
"$arg _isonline",
|
|
"$not $.HideProgression",
|
|
"$.ValidContractType"
|
|
]
|
|
},
|
|
"$then": {
|
|
"masteryheader": "$.NameLocalized",
|
|
"masterytitle": "$.MasteryTitle",
|
|
"masterycompletion": "$.MasteryCompletion",
|
|
"masteryxpleft": "$.MasteryXpLeft",
|
|
"showUnit": "$.ShowUnit"
|
|
},
|
|
"$else": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"deselect": {
|
|
"replace-children": {
|
|
"target": "headline_container",
|
|
"children": []
|
|
},
|
|
"set-mastery-data": {}
|
|
},
|
|
"action-y": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "usercreated",
|
|
"return": {
|
|
"$if $not $($arg _ugcrestricted)": {
|
|
"$then": {
|
|
"link": {
|
|
"page": "report",
|
|
"args": {
|
|
"url": "report",
|
|
"args": {
|
|
"contractid": "$.Contract.Metadata.Id"
|
|
},
|
|
"contractid": "$.Contract.Metadata.Id",
|
|
"contracttitle": "$.Contract.Metadata.Title"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"action-x": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "usercreated",
|
|
"return": {
|
|
"$if $not $($arg _ugcrestricted)": {
|
|
"$then": {
|
|
"$if $eqs ($($arg HitsCategory),MyPlaylist)": {
|
|
"$then": {
|
|
"favrem:mark-for-playlist-removal": {
|
|
"contractId": "$.Contract.Metadata.Id",
|
|
"newActionLabels": {
|
|
"actiontype": "action-x",
|
|
"unmarklabel": "$loc UI_BUTTON_PROMPTS_ACTION_UNMARK_FOR_REMOVAL",
|
|
"marklabel": "$loc UI_BUTTON_PROMPTS_ACTION_MARK_FOR_REMOVAL"
|
|
}
|
|
}
|
|
},
|
|
"$else": {
|
|
"load-async": {
|
|
"from": {
|
|
"url": "$formatstring contractplaylist/addordelete/{$.Contract.Metadata.Id}"
|
|
},
|
|
"reloadTarget": true,
|
|
"target": "$formatstring {$.Contract.Metadata.Id}_contractTile",
|
|
"showloadingindicator": true,
|
|
"blocksinput": true,
|
|
"post-load-action": [
|
|
{
|
|
"stateprovider-callback": {
|
|
"callback-id": "reload-contract-tiles",
|
|
"data": {
|
|
"contract-id": "$.Contract.Metadata.Id",
|
|
"reloadTarget": "$not $eqs ($($arg HitsCategory),MyPlaylist)"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
{
|
|
"$mergeobjects": [
|
|
{
|
|
"on-content-unknown": {
|
|
"_comment": "No DLC could be found containing contract",
|
|
"alter-actions": {
|
|
"path": "accept",
|
|
"value": {
|
|
"show-modal": {
|
|
"config": {
|
|
"view": "menu3.modal.ModalDialogGeneric",
|
|
"buttons": [
|
|
"$loc UI_DIALOG_OK"
|
|
],
|
|
"data": {
|
|
"title": "$loc UI_CONTENT_UNKNOWN_DLC_TITLE",
|
|
"description": "$loc UI_CONTENT_UNKNOWN_DLC_TEXT"
|
|
}
|
|
},
|
|
"onbutton": []
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"on-content-not-owned": {
|
|
"_comment": "DLC is not owned",
|
|
"alter-actions": {
|
|
"path": "accept",
|
|
"value": {
|
|
"show-modal": {
|
|
"config": {
|
|
"view": "menu3.modal.ModalDialogGeneric",
|
|
"buttons": [
|
|
"$loc UI_DIALOG_OK"
|
|
],
|
|
"data": {
|
|
"title": "$loc UI_CONTENT_UNKNOWN_DLC_TITLE",
|
|
"description": "$loc UI_CONTENT_UNKNOWN_DLC_TEXT"
|
|
}
|
|
},
|
|
"onbutton": []
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"on-content-not-installed": {
|
|
"_comment": "DLC owned but not installed",
|
|
"alter-actions": {
|
|
"path": "accept",
|
|
"value": {
|
|
"show-modal": {
|
|
"config": {
|
|
"view": "menu3.modal.ModalDialogGeneric",
|
|
"buttons": [
|
|
"$loc UI_DIALOG_OK"
|
|
],
|
|
"data": {
|
|
"title": "$loc UI_CONTENT_UNKNOWN_DLC_TITLE",
|
|
"description": "$loc UI_CONTENT_UNKNOWN_DLC_TEXT"
|
|
}
|
|
},
|
|
"onbutton": []
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"on-content-downloading": {
|
|
"_comment": "DLC owned and currently downloading",
|
|
"alter-actions": {
|
|
"path": "accept",
|
|
"value": {
|
|
"show-modal": {
|
|
"config": {
|
|
"view": "menu3.modal.ModalDialogGeneric",
|
|
"buttons": [
|
|
"$loc UI_DIALOG_OK"
|
|
],
|
|
"data": {
|
|
"title": "$loc UI_CONTENT_UNKNOWN_DLC_TITLE",
|
|
"description": "$loc UI_CONTENT_UNKNOWN_DLC_TEXT"
|
|
}
|
|
},
|
|
"onbutton": []
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"on-content-update-required": {
|
|
"_comment": "DLC owned and update is required",
|
|
"alter-actions": {
|
|
"path": "accept",
|
|
"value": {
|
|
"show-modal": {
|
|
"config": {
|
|
"view": "menu3.modal.ModalDialogGeneric",
|
|
"buttons": [
|
|
"$loc UI_DIALOG_OK"
|
|
],
|
|
"data": {
|
|
"title": "$loc UI_CONTENT_UNKNOWN_DLC_TITLE",
|
|
"description": "$loc UI_CONTENT_UNKNOWN_DLC_TEXT"
|
|
}
|
|
},
|
|
"onbutton": []
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"on-content-installing": {
|
|
"_comment": "DLC owned and currently installing",
|
|
"alter-actions": {
|
|
"path": "accept",
|
|
"value": {
|
|
"show-modal": {
|
|
"config": {
|
|
"view": "menu3.modal.ModalDialogGeneric",
|
|
"buttons": [
|
|
"$loc UI_DIALOG_OK"
|
|
],
|
|
"data": {
|
|
"title": "$loc UI_CONTENT_UNKNOWN_DLC_TITLE",
|
|
"description": "$loc UI_CONTENT_UNKNOWN_DLC_TEXT"
|
|
}
|
|
},
|
|
"onbutton": []
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"on-entitlement-missing": {
|
|
"_comment": "Entitlement missing",
|
|
"alter-actions": {
|
|
"path": "accept",
|
|
"value": {
|
|
"show-modal": {
|
|
"config": {
|
|
"view": "menu3.modal.ModalDialogGeneric",
|
|
"buttons": [
|
|
"$loc UI_DIALOG_OK"
|
|
],
|
|
"data": {
|
|
"title": "$loc UI_CONTENT_UNKNOWN_DLC_TITLE",
|
|
"description": "$loc UI_CONTENT_UNKNOWN_DLC_TEXT"
|
|
}
|
|
},
|
|
"onbutton": []
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"on-content-available": {
|
|
"_comment": "Contract is ready to be played",
|
|
"alter-actions": {
|
|
"path": "accept",
|
|
"value": {
|
|
"$if": {
|
|
"$condition": {
|
|
"$and": [
|
|
"$.Data.IsLocked",
|
|
{
|
|
"$or": [
|
|
"$isnull $.lockoverride",
|
|
"$.lockoverride"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"$then": {
|
|
"show-modal": {
|
|
"config": {
|
|
"view": "menu3.modal.ModalDialogGeneric",
|
|
"buttons": [
|
|
"$loc UI_DIALOG_CONFIRM",
|
|
{
|
|
"label": "$loc UI_DIALOG_CANCEL",
|
|
"type": "cancel"
|
|
}
|
|
],
|
|
"data": {
|
|
"title": "$loc UI_LOCKED_CONTENT_DIALOGUE_TITLE",
|
|
"description": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "orbis",
|
|
"return": "$loc UI_LOCKED_CONTENT_DIALOGUE_TEXT_SARAJEVO6"
|
|
},
|
|
{
|
|
"default": "$loc UI_LOCKED_CONTENT_DIALOGUE_TEXT"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"onbutton": [
|
|
{
|
|
"trigger-action": {
|
|
"name": "on-goto-planning"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"$else": {
|
|
"trigger-action": {
|
|
"name": "on-goto-planning"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"on-goto-planning": {
|
|
"$switch $.Contract.Metadata.Type": [
|
|
{
|
|
"case": "creation",
|
|
"return": {
|
|
"link": {
|
|
"page": "contractcreation_planning",
|
|
"args": {
|
|
"url": "contractcreation/planning",
|
|
"args": {
|
|
"location": "$.Contract.Metadata.Location",
|
|
"contractCreationIdOverwrite": "$.Contract.Metadata.Id"
|
|
},
|
|
"contractid": "$.Contract.Metadata.Id"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"default": {
|
|
"$if": {
|
|
"$condition": {
|
|
"$isfreeprologueuser": ""
|
|
},
|
|
"$then": {
|
|
"$if $.fspdashboardcontract": {
|
|
"$then": {
|
|
"clear-contract-menu-context": {},
|
|
"set-contract-loading-screen-data": {
|
|
"contract": "$.Contract"
|
|
},
|
|
"start-contract": {
|
|
"contractid": "$.fspdashboardcontract.contractid"
|
|
}
|
|
},
|
|
"$else": {
|
|
"is-playable": {
|
|
"playableSince": "$.Contract.Metadata.PlayableSince",
|
|
"on-success": {
|
|
"$merge": [
|
|
{
|
|
"$if": {
|
|
"$condition": {
|
|
"$and": [
|
|
"$eqs ($.Contract.Metadata.Type,placeholder)",
|
|
"$.Data.LastPlayedAt",
|
|
"$.Data.EscalationCompleted"
|
|
]
|
|
},
|
|
"$then": [
|
|
{
|
|
"alter-history": {
|
|
"target": "destination",
|
|
"force-no-cache": true
|
|
}
|
|
},
|
|
{
|
|
"alter-history": {
|
|
"target": "hub",
|
|
"force-no-cache": true
|
|
}
|
|
}
|
|
],
|
|
"$else": null
|
|
}
|
|
},
|
|
{
|
|
"$switch $.Contract.Metadata.BriefingVideo": [
|
|
{
|
|
"case": null,
|
|
"return": {
|
|
"link": {
|
|
"page": {
|
|
"$if $eqs ($.EngineMode,multiplayer)": {
|
|
"$then": "planning_multiplayer",
|
|
"$else": "planning"
|
|
}
|
|
},
|
|
"isMultiplayer": {
|
|
"$if $eqs ($.EngineMode,multiplayer)": {
|
|
"$then": true,
|
|
"$else": false
|
|
}
|
|
},
|
|
"args": {
|
|
"url": "planning",
|
|
"args": {
|
|
"contractid": "$.Contract.Metadata.Id",
|
|
"resetescalation": {
|
|
"$if": {
|
|
"$condition": {
|
|
"$and": [
|
|
"$eqs ($.Contract.Metadata.Type,placeholder)",
|
|
"$.Data.LastPlayedAt",
|
|
"$.Data.EscalationCompleted"
|
|
]
|
|
},
|
|
"$then": true,
|
|
"$else": false
|
|
}
|
|
}
|
|
},
|
|
"contractid": "$.Contract.Metadata.Id"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"default": {
|
|
"link": {
|
|
"page": "video",
|
|
"addtohistory": false,
|
|
"args": {
|
|
"videoid": "$.Contract.Metadata.BriefingVideo",
|
|
"mountrootresources": "$formatstring [{$.Contract.Metadata.ScenePath}].entitytemplate",
|
|
"skipifshown": true,
|
|
"EngineMode": "$.EngineMode",
|
|
"link": {
|
|
"page": {
|
|
"$if $eqs ($.EngineMode,multiplayer)": {
|
|
"$then": "planning_multiplayer",
|
|
"$else": "planning"
|
|
}
|
|
},
|
|
"isMultiplayer": {
|
|
"$if $eqs ($.EngineMode,multiplayer)": {
|
|
"$then": true,
|
|
"$else": false
|
|
}
|
|
},
|
|
"args": {
|
|
"url": "planning",
|
|
"args": {
|
|
"contractid": "$.Contract.Metadata.Id",
|
|
"resetescalation": {
|
|
"$if": {
|
|
"$condition": {
|
|
"$and": [
|
|
"$eqs ($.Contract.Metadata.Type,placeholder)",
|
|
"$.Data.LastPlayedAt",
|
|
"$.Data.EscalationCompleted"
|
|
]
|
|
},
|
|
"$then": true,
|
|
"$else": false
|
|
}
|
|
}
|
|
},
|
|
"contractid": "$.Contract.Metadata.Id"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"on-failure-too-early": {
|
|
"$if": {
|
|
"$condition": {
|
|
"$and": [
|
|
"$eqs ($.Contract.Metadata.Type,elusive)",
|
|
"$stringvalid $.Data.ElusiveContractState",
|
|
"$stringvalid $.Data.LastPlayedAt",
|
|
"$lt ($converttimetonumber $.Data.LastPlayedAt,$converttimetonumber $.Contract.Metadata.PlayableSince)"
|
|
]
|
|
},
|
|
"$then": {
|
|
"show-modal": {
|
|
"config": {
|
|
"view": "menu3.modal.ModalDialogGeneric",
|
|
"buttons": [
|
|
{
|
|
"label": "$loc UI_DIALOG_CONFIRM_TITLE",
|
|
"type": "cancel"
|
|
}
|
|
],
|
|
"data": {
|
|
"title": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_ET",
|
|
"description": "$loc UI_MENU_ERROR_STARTING_ELUSIVE_CONTRACT_NOT_PLAYABLE_YET_PREVIOUSLY_PLAYED_DESCRIPTION"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"$else": {
|
|
"show-modal": {
|
|
"config": {
|
|
"view": "menu3.modal.ModalDialogGeneric",
|
|
"buttons": [
|
|
{
|
|
"label": "$loc UI_DIALOG_CONFIRM_TITLE",
|
|
"type": "cancel"
|
|
}
|
|
],
|
|
"data": {
|
|
"title": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_ET",
|
|
"description": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_NOT_PLAYABLE_YET_DESCRIPTION_ET",
|
|
"_comment": "HACK: use typeoverride to make the buttons work",
|
|
"typeoverride": "online"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"on-failure-too-late": {
|
|
"_comment": "this is never reached, because we don't set playabelUntil above - by design",
|
|
"show-modal": {
|
|
"config": {
|
|
"view": "menu3.modal.ModalDialogGeneric",
|
|
"buttons": [
|
|
{
|
|
"label": "$loc UI_DIALOG_CONFIRM_TITLE",
|
|
"type": "cancel"
|
|
}
|
|
],
|
|
"data": {
|
|
"title": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_ET",
|
|
"description": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_NOT_PLAYABLE_ANYMORE_DESCRIPTION_ET"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"$else": {
|
|
"is-playable": {
|
|
"playableSince": "$.Contract.Metadata.PlayableSince",
|
|
"on-success": {
|
|
"$merge": [
|
|
{
|
|
"$if": {
|
|
"$condition": {
|
|
"$and": [
|
|
"$eqs ($.Contract.Metadata.Type,placeholder)",
|
|
"$.Data.LastPlayedAt",
|
|
"$.Data.EscalationCompleted"
|
|
]
|
|
},
|
|
"$then": [
|
|
{
|
|
"alter-history": {
|
|
"target": "destination",
|
|
"force-no-cache": true
|
|
}
|
|
},
|
|
{
|
|
"alter-history": {
|
|
"target": "hub",
|
|
"force-no-cache": true
|
|
}
|
|
}
|
|
],
|
|
"$else": null
|
|
}
|
|
},
|
|
{
|
|
"$switch $.Contract.Metadata.BriefingVideo": [
|
|
{
|
|
"case": null,
|
|
"return": {
|
|
"link": {
|
|
"page": {
|
|
"$if $eqs ($.EngineMode,multiplayer)": {
|
|
"$then": "planning_multiplayer",
|
|
"$else": "planning"
|
|
}
|
|
},
|
|
"isMultiplayer": {
|
|
"$if $eqs ($.EngineMode,multiplayer)": {
|
|
"$then": true,
|
|
"$else": false
|
|
}
|
|
},
|
|
"args": {
|
|
"url": "planning",
|
|
"args": {
|
|
"contractid": "$.Contract.Metadata.Id",
|
|
"resetescalation": {
|
|
"$if": {
|
|
"$condition": {
|
|
"$and": [
|
|
"$eqs ($.Contract.Metadata.Type,placeholder)",
|
|
"$.Data.LastPlayedAt",
|
|
"$.Data.EscalationCompleted"
|
|
]
|
|
},
|
|
"$then": true,
|
|
"$else": false
|
|
}
|
|
}
|
|
},
|
|
"contractid": "$.Contract.Metadata.Id"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"default": {
|
|
"link": {
|
|
"page": "video",
|
|
"addtohistory": false,
|
|
"args": {
|
|
"videoid": "$.Contract.Metadata.BriefingVideo",
|
|
"mountrootresources": "$formatstring [{$.Contract.Metadata.ScenePath}].entitytemplate",
|
|
"skipifshown": true,
|
|
"EngineMode": "$.EngineMode",
|
|
"link": {
|
|
"page": {
|
|
"$if $eqs ($.EngineMode,multiplayer)": {
|
|
"$then": "planning_multiplayer",
|
|
"$else": "planning"
|
|
}
|
|
},
|
|
"isMultiplayer": {
|
|
"$if $eqs ($.EngineMode,multiplayer)": {
|
|
"$then": true,
|
|
"$else": false
|
|
}
|
|
},
|
|
"args": {
|
|
"url": "planning",
|
|
"args": {
|
|
"contractid": "$.Contract.Metadata.Id",
|
|
"resetescalation": {
|
|
"$if": {
|
|
"$condition": {
|
|
"$and": [
|
|
"$eqs ($.Contract.Metadata.Type,placeholder)",
|
|
"$.Data.LastPlayedAt",
|
|
"$.Data.EscalationCompleted"
|
|
]
|
|
},
|
|
"$then": true,
|
|
"$else": false
|
|
}
|
|
}
|
|
},
|
|
"contractid": "$.Contract.Metadata.Id"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"on-failure-too-early": {
|
|
"$if": {
|
|
"$condition": {
|
|
"$and": [
|
|
"$eqs ($.Contract.Metadata.Type,elusive)",
|
|
"$stringvalid $.Data.ElusiveContractState",
|
|
"$stringvalid $.Data.LastPlayedAt",
|
|
"$lt ($converttimetonumber $.Data.LastPlayedAt,$converttimetonumber $.Contract.Metadata.PlayableSince)"
|
|
]
|
|
},
|
|
"$then": {
|
|
"show-modal": {
|
|
"config": {
|
|
"view": "menu3.modal.ModalDialogGeneric",
|
|
"buttons": [
|
|
{
|
|
"label": "$loc UI_DIALOG_CONFIRM_TITLE",
|
|
"type": "cancel"
|
|
}
|
|
],
|
|
"data": {
|
|
"title": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_ET",
|
|
"description": "$loc UI_MENU_ERROR_STARTING_ELUSIVE_CONTRACT_NOT_PLAYABLE_YET_PREVIOUSLY_PLAYED_DESCRIPTION"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"$else": {
|
|
"show-modal": {
|
|
"config": {
|
|
"view": "menu3.modal.ModalDialogGeneric",
|
|
"buttons": [
|
|
{
|
|
"label": "$loc UI_DIALOG_CONFIRM_TITLE",
|
|
"type": "cancel"
|
|
}
|
|
],
|
|
"data": {
|
|
"title": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_ET",
|
|
"description": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_NOT_PLAYABLE_YET_DESCRIPTION_ET",
|
|
"_comment": "HACK: use typeoverride to make the buttons work",
|
|
"typeoverride": "online"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"on-failure-too-late": {
|
|
"_comment": "this is never reached, because we don't set playabelUntil above - by design",
|
|
"show-modal": {
|
|
"config": {
|
|
"view": "menu3.modal.ModalDialogGeneric",
|
|
"buttons": [
|
|
{
|
|
"label": "$loc UI_DIALOG_CONFIRM_TITLE",
|
|
"type": "cancel"
|
|
}
|
|
],
|
|
"data": {
|
|
"title": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_ET",
|
|
"description": "$loc UI_MENU_PAGE_PLANNING_ELEMENT_LOADOUT_ERROR_STARTING_CONTRACT_NOT_PLAYABLE_ANYMORE_DESCRIPTION_ET"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"$if $.Data.HasMore": {
|
|
"$then": {
|
|
"$setup": {
|
|
"$set Title": "UI_MENU_PAGE_CHALLENGES_NEXT",
|
|
"$set Icon": "arrowright",
|
|
"$set PageDirection": 1,
|
|
"$in": {
|
|
"view": "menu3.basic.MenuTileSmall",
|
|
"nrows": 1.5,
|
|
"ncols": 2,
|
|
"data": {
|
|
"title": "$loc $.Title",
|
|
"icon": "$.Icon"
|
|
},
|
|
"id": "PrevNextTile",
|
|
"selectable": true,
|
|
"pressable": true,
|
|
"actions": {
|
|
"accept": {
|
|
"sm:submit-search-request": {
|
|
"restore-last-filterset": true,
|
|
"load-async": {
|
|
"from": {
|
|
"url": "contractsearchpaginate",
|
|
"args": {
|
|
"page": "0",
|
|
"sorting": ""
|
|
}
|
|
},
|
|
"post-load-action": {
|
|
"set-child-selected": {
|
|
"target": "search_results_container",
|
|
"selectdirection": "$.PageDirection"
|
|
}
|
|
},
|
|
"target": "search_results_container",
|
|
"page": "$.Data.Page",
|
|
"pagedirection": "$.PageDirection",
|
|
"showloadingindicator": true,
|
|
"blocksinput": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"$else": {
|
|
"selectable": false,
|
|
"pressable": false,
|
|
"nrows": 0,
|
|
"ncols": 0
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"$else": {
|
|
"id": "search_results_container",
|
|
"view": "menu3.basic.DefaultNoContentHeader",
|
|
"selectable": true,
|
|
"pressable": false,
|
|
"data": {
|
|
"header": "",
|
|
"title": {
|
|
"$switch $.Data.ErrorReason": [
|
|
{
|
|
"case": "privacyrestricted",
|
|
"return": "$loc UI_DIALOG_CONTRACT_SEARCH_PRIVACY_RESTRICTED"
|
|
},
|
|
{
|
|
"default": "$loc UI_SEARCH_PAGE_NO_CONTRACTS_FOUND"
|
|
}
|
|
]
|
|
},
|
|
"multilinetitle": false,
|
|
"typeicon": {
|
|
"$if $.Icon": { "$then": "$.Icon", "$else": "info" }
|
|
}
|
|
},
|
|
"actions": {
|
|
"select": [
|
|
{
|
|
"set-selected": {
|
|
"target": "returned_filter_container"
|
|
},
|
|
"set-selectable": {
|
|
"target": "search_results_container",
|
|
"value": false
|
|
}
|
|
},
|
|
{
|
|
"$if": {
|
|
"$condition": {
|
|
"$or": [
|
|
"$eqs ($.Data.ErrorReason,privacyrestricted)",
|
|
"$eqs ($.Data.ErrorReason,privacyrestrictedcreator)"
|
|
]
|
|
},
|
|
"$then": { "show-platform-ugc-dialog": {} }
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|