// Changes the manager state to given campaign public void SwitchCampaign(string name, bool isVanilla = true, bool isLocalMod = false) { if (m_campaignsByNames.ContainsKey(name)) { var obs = m_campaignsByNames[name]; foreach (var campaign in obs) { if (campaign.IsVanilla == isVanilla && campaign.IsLocalMod == isLocalMod) { m_activeCampaign = campaign; m_activeCampaignName = name; m_activeCampaignLevelNames.Clear(); m_selectedLanguage = m_activeCampaign.DefaultLocalizationLanguage; // Fill the level names in active campaign level names foreach (var campaignSmNode in m_activeCampaign.StateMachine.Nodes) { m_activeCampaignLevelNames.Add(campaignSmNode.Name); } return; } } } }
private string GetImagePath(MyObjectBuilder_Campaign campaign) { string imagePath = campaign.ImagePath; if (!campaign.IsVanilla) { imagePath = Path.Combine(campaign.ModFolderPath, campaign.ImagePath); if (!MyFileSystem.FileExists(imagePath)) { imagePath = Path.Combine(MyFileSystem.ContentPath, campaign.ImagePath); } } return imagePath; }
// Universal campaign loading process private void LoadCampaignData(MyObjectBuilder_Campaign campaignOb) { if (m_campaignsByNames.ContainsKey(campaignOb.Name)) { var obs = m_campaignsByNames[campaignOb.Name]; // check for duplicity foreach (var campaign in obs) { if (campaign.IsLocalMod == campaignOb.IsLocalMod && campaign.IsMultiplayer == campaignOb.IsMultiplayer && campaign.IsVanilla == campaignOb.IsVanilla) { Debug.Fail("Two campaigns of same name and parameters loaded."); return; } } obs.Add(campaignOb); } else { m_campaignsByNames.Add(campaignOb.Name, new List<MyObjectBuilder_Campaign>()); m_campaignsByNames[campaignOb.Name].Add(campaignOb); } }
private void CampaignSelectionChanged(MyGuiControlRadioButtonGroup args) { var button = args.SelectedButton as MyGuiControlCampaignButton; if (button != null) { var campaign = button.UserData as MyObjectBuilder_Campaign; if(campaign == null) return; m_nameTextbox.Text = campaign.Name; m_onlineMode.IsChecked = campaign.IsMultiplayer; m_descriptionMultilineText.Text = new StringBuilder(campaign.Description); if(!string.IsNullOrEmpty(campaign.Difficulty)) { if(campaign.Difficulty.StartsWith("Easy")) m_difficultyCombo.SelectItemByIndex(0); else if(campaign.Difficulty.StartsWith("Normal")) m_difficultyCombo.SelectItemByIndex(1); else m_difficultyCombo.SelectItemByIndex(2); } m_selectedCampaign = campaign; } }