like this, simply listing the maps, defining the random/"campaign" map groups and the "button" reference, and listing the maps into the groups
Code: Select all
{
"holderCategories":[
{"holderCategoryID":"LC_MAIN", "holderCategoryTxtID":"campaign_menu_tutorial", "ancHolderCategoryID":""},
{"holderCategoryID":"LC_HIGHLIGHTED", "holderCategoryTxtID":"main_menu_campaigns", "ancHolderCategoryID":"LC_MAIN"},
{"holderCategoryID":"LC_HISTORICAL", "holderCategoryTxtID":"campaign_intro_story_hist", "ancHolderCategoryID":"LC_HIGHLIGHTED"},
{"holderCategoryID":"LC_POST_WW2", "holderCategoryTxtID":"campaign_intro_cold_war", "ancHolderCategoryID":"LC_HIGHLIGHTED"},
{"holderCategoryID":"LC_ALT_OUTCOMES", "holderCategoryTxtID":"campaign_intro_fictional", "ancHolderCategoryID":"LC_HIGHLIGHTED"},
{"holderCategoryID":"LC_LORDOFALES", "holderCategoryTxtID":"campaign_intro_lord_of_ales", "ancHolderCategoryID":"LC_HIGHLIGHTED"},
{"holderCategoryID":"LC_OTHERS", "holderCategoryTxtID":"campaign_intro_others", "ancHolderCategoryID":"LC_HIGHLIGHTED"}
],
"groups": [
{"c": "Fix, random maps", "buttonName": "-", "listName": "FIX_MAPS", "holderCategoryID": "LC_MAIN", "listNameTxtID": "main_menu_predef", "type": "FIX", "groupID": -100, "items": [
{"mapFileName": "rnd_the_lake_20_20.map", "publishStatus": "HIDDEN"},
{"mapFileName": "rnd_island_20_20.map"},
{"mapFileName": "rnd_islands_20_20.map"},
{"mapFileName": "rnd_france_20_20.map"},
{"mapFileName": "rnd_iwo_jima_20_20.map"},
{"mapFileName": "rnd_map_001_20_20.map"},
{"mapFileName": "rnd_map_002_20_20.map"},
{"mapFileName": "rnd_the_bridge_20_20.map"},
{"mapFileName": "rnd_archipelago_20_20.map"},
{"mapFileName": "rnd_mountains_climb_20_20.map"},
{"mapFileName": "rnd_summer_forest_20_20.map"},
{"mapFileName": "rnd_crash_landing_20_20.map"},
{"mapFileName": "rnd_glacier_20_20.map"},
{"mapFileName": "rnd_amalienborg_palace_mp_25_25.map"},
{"mapFileName": "rnd_the_frozen_lands_25_25.map"},
{"mapFileName": "rnd_east_ward_25_25.map"},
{"mapFileName": "rnd_italy_25_25.map"},
{"mapFileName": "rnd_egypt_30_30.map"},
{"mapFileName": "rnd_stalingrad_30_30.map"},
{"mapFileName": "rnd_hawaii_30_30.map"},
{"mapFileName": "rnd_citys__30_30.map"},
{"mapFileName": "rnd_map_003_50_50.map"},
]},
{"c": "FAN maps here", "buttonName": "btCampaignUser", "holderCategoryID": "LC_HIGHLIGHTED", "listNameTxtID": "campaign_menu_user", "type": "CAMPAIGN", "items": [
{"mapFileName": "camp_user_operation_barbarossa_southern_assault_50_50.map", "locktype": "PAY"},
{"mapFileName": "camp_user_operation_typhoon_25_40.map", "locktype": "PAY"},
{"mapFileName": "camp_user_the_battle_of_stalingrad_20_30.map", "locktype": "PAY"},
{"mapFileName": "camp_user_the_siege_of_leningrad_40_40.map", "locktype": "PAY"},
]},
{"c": "HISTORICAL skirmish maps", "buttonName": "btCampaignFictive", "holderCategoryID": "LC_HIGHLIGHTED", "listNameTxtID": "campaign_menu_scen_historical", "type": "CAMPAIGN", "items": [
{"mapFileName": "camp_user_kursk_30_15.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_operation_cobra_1_20_20.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_operation_overlord_50_50.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_under_fire_15_15.map", "locktype": "LOCK_PAY"},
]},
{"c": "Tutorial maps", "buttonName": "btCampaignTutorial", "holderCategoryID": "LC_MAIN", "listNameTxtID": "campaign_menu_tutorial", "type": "TUTO", "items": [
{"mapFileName": "camp_user_tutorial_-_production_10_10.map", "locktype": "NONE"},
{"mapFileName": "camp_user_tutorial__mines_20_20.map", "locktype": "NONE"},
{"mapFileName": "camp_user_tutorial__submarines_20_10.map", "locktype": "NONE"},
]},
{"c": "Multiplayer missions (Hotseat)", "buttonName": "btCampaignMultiplayerMissions", "holderCategoryID": "LC_HIGHLIGHTED", "listNameTxtID": "campaign_menu_multiplayer_missions", "type": "CAMPAIGN", "items": [
{"mapFileName": "camp_user_hotseat_battle_of_midway_35_35.map", "locktype": "NONE"},
{"mapFileName": "camp_user_hotseat_battle_of_imphal_40_35.map", "locktype": "NONE"},
{"mapFileName": "camp_user_hotseat_first_battle_of_el_alamein_35_35.map", "locktype": "NONE"},
{"mapFileName": "camp_user_hotseat_battle_of_britain_35_40.map", "locktype": "NONE"},
{"mapFileName": "camp_user_hotseat_battle_of_stalingrad_40_40.map", "locktype": "NONE"},
]},
{"c": "MAP_LIST_STORY_RED_ALERT by HokanPl", "buttonName": "btCampaignRedAlert", "holderCategoryID": "LC_POST_WW2", "listNameTxtID": "campaign_menu_story_redalert", "type": "CAMPAIGN", "items": [
{"mapFileName": "camp_user_mission_1_20_25.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_mission_2_25_30.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_mission_3_25_20.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_mission_4_30_30.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_mission_5_25_25.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_mission_1__act_two_20_20.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_mission_2__act_two_20_20.map", "locktype": "LOCK_PAY"},
]},
{"c": "MAP_LIST_HISTORICAL_DANISH Northern Campaign by deadshot09", "buttonName": "btCampaignHistoricalDanish", "holderCategoryID": "LC_HISTORICAL", "listNameTxtID": "campaign_menu_story_hist_danish", "type": "CAMPAIGN", "items": [
{"mapFileName": "camp_user_storstom_bridge_battle_35_20.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_masdeno_fort_capture_30_20.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_vaerlose_airfield_25_25.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_amalienborg_palace_30_30.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_destination_norway_25_25.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_oslofjord_fortress_30_20.map", "locktype": "LOCK_PAY"},
]},
{"c": "MAP_LIST_STORY_COLD_WARS by deadshot09", "buttonName": "btCampaignColdWar", "holderCategoryID": "LC_POST_WW2", "listNameTxtID": "campaign_menu_story_cold_war", "type": "CAMPAIGN", "items": [
{"mapFileName": "camp_user_operation_starlite_30_30.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_opration_rolling_thunder_30_30.map", "locktype": "LOCK_PAY"},
]},
{"c": "MAP_LIST_STORY_ARBITER by Aleksandar Glumac alias LordOfAles", "listName": "MAP_LIST_STORY_ARBITER", "holderCategoryID": "LC_LORDOFALES", "listNameTxtID": "campaign_menu_story_arbiter", "buttonName": "btCampaignArbiter", "type": "CAMPAIGN", "items": [
{"mapFileName": "camp_user_passing_thru_enemy_defenses_10_30.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_forest_ambush_15_15.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_base_outskirts_20_30.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_the_grand_opening_30_30.map", "locktype": "LOCK_PAY"},
]},
{"c": "MAP_LIST_STORY_LIT_MADNESS by Aleksandar Glumac alias LordOfAles", "requiredListName": "MAP_LIST_STORY_ARBITER", "buttonName": "btCampaignLitMadness", "holderCategoryID": "LC_LORDOFALES", "listNameTxtID": "campaign_menu_story_lit_madness", "type": "CAMPAIGN", "items": [
{"mapFileName": "camp_user_armageddon_25_25.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_the_tour_20_20.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_tunnels_30_30.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_destroying_maya_15_15.map", "locktype": "LOCK_PAY"},
]},
{"c": "MAP_LIST_STORY_GARRISON by Aleksandar Glumac alias LordOfAles", "buttonName": "btCampaignGarrison", "holderCategoryID": "LC_LORDOFALES", "listNameTxtID": "campaign_menu_story_garrison", "type": "CAMPAIGN", "items": [
{"mapFileName": "camp_user_home_garrison_15_15.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_unfriendly_visit_15_15.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_counter_15_15.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_the_diversion_10_10.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_the_clearup_20_20.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_destroying_the_plague_15_15.map", "locktype": "LOCK_PAY"},
]},
{"c": "MAP_LIST_STORY_WAR_PATRIOTISM by Lukas Dear lukasdear23 at gmail.com", "buttonName": "btCampaignWarPatriotism", "holderCategoryID": "LC_OTHERS", "listNameTxtID": "campaign_menu_story_war_patriotism", "type": "CAMPAIGN", "items": [
{"mapFileName": "camp_user_miami_1_15_15.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_japan_1_20_20.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_pacific_ocean_20_25.map", "locktype": "LOCK_PAY"},
{"mapFileName": "camp_user_japan_2_15_15.map", "locktype": "LOCK_PAY"},
]}
]
}
Holder categories
(Used in Unity version) This section defines the categrories the campaigns are ordered into (eg. easy campaigns, or Post WW2 campaigns and so on)
"holderCategoryID": the category id (textual id, can be anything)
"holderCategoryTxtID" the appearing text ID for the holder-category (textual id, must be deifnied in string.xml)
"ancHolderCategoryID": referencing an ancestor category (if multilevel structure)
Avaliable lock types:
PAY- gives gems if you win
LOCK_PAY - means the map needs to be locked (so only if you finish prior map wil be able to be opened), also gives gems.
NONE - no locked, and not gives gems.
Publish status: you can inactivate maps using the HIDDEN status, this means running games will be handled but no new game can be created with this map (so considered as DEPRECATED).
Current publish statuses (if you do not specify it then it is considered FULL - like u see in most samples except "the_lake" map)
Locked campaignsFULL, // can start new game and existing games will use it
HIDDEN // existing games will use it, but you can not create new map with it - so considered as DEPRECATED
You can set a camapign locked until an other campaign is finished, see as a sample above: "MAP_LIST_STORY_LIT_MADNESS" will require "MAP_LIST_STORY_ARBITER" by the "requiredListName" and "listName" settings
Other attributes:
holderCategoryID: the category id referencing the id in holderCategories structure
listNameTxtID: campaign name, so the appearing text ID for the campaign (textual id, must be deifnied in string.xml)