Beispiel #1
0
        internal static void LoadCampaigns()
        {
            PreloaderSystem.PrepareCampaigns();
            string campaign_root = Variables.CampaignsDataFolder();

            foreach (var campaign_directory in Directory.GetDirectories(campaign_root))
            {
                string          campaign_json = $"{campaign_directory}/campaign.json".NormPath(true);
                Models.Campaign campaign      = Models.Campaign.FromFile(campaign_json);
                if (campaign && campaign.Validate(campaign_directory))
                {
                    CampaignInfo campaign_info = new CampaignInfo(campaign_directory.NormPath(false), campaign);
                    foreach (var level in campaign.levels)
                    {
                        level.file = new FileInfo(Path.Combine(campaign_directory, level.file)).FullName;
                    }

                    foreach (var addon in campaign.addons)
                    {
                        addon.module = new FileInfo(Path.Combine(campaign_directory, addon.module)).FullName;
                        for (int i = 0; i < addon.dependencies.Count; i++)
                        {
                            addon.dependencies[i] = new FileInfo(Path.Combine(campaign_directory, addon.dependencies[i])).FullName;
                        }
                    }
                    AddonSystem.RegisterCampaign(campaign_info);
                    Campaigns.Add(campaign_info);
                }
            }
            AddonSystem.LoadAddons();
            LevelEditor.Initialize();
        }