/// <summary> /// Update the set of recruits /// </summary> internal void CreateRecruits() { var recuritsToRemove = new List <string>(); //remove recruits from iat and randomly select to remove them from pool of available recruits foreach (var member in Recruits) { var path = Path.Combine(storageLocation, member.Value.RolePlayCharacter.VoiceName + ".rpc").Replace("\\", "/"); iat.RemoveCharacters(new List <int> { iat.GetAllCharacterSources().First(c => c.Source.Replace("\\", "/") == path).Id }); if (StaticRandom.Int(0, 100) % ConfigKey.RecruitChangeChance.GetIntValue() != 0) { recuritsToRemove.Add(member.Key); } } foreach (var member in recuritsToRemove) { Recruits.Remove(member); } //for the amount of empty recruit spaces, create a new recruit var amount = ConfigKey.RecruitCount.GetIntValue() - Recruits.Count; for (var i = 0; i < amount; i++) { var position = Boat.GetWeakestPosition(CrewMembers.Values.Concat(Recruits.Values).ToList()); var newMember = new CrewMember(position, Nationality); UniqueNameCheck(newMember); Recruits.Add(newMember.Name, newMember); } var storeNum = 0; //set up the files for each recruit and their avatar foreach (var recruit in Recruits) { recruit.Value.CreateRecruitFile(iat, storageLocation, storeNum); storeNum++; } iat.Save(); }
private void buttonRemoveCharacter_Click(object sender, EventArgs e) { IList <string> charactersToRemove = new List <string>(); for (int i = 0; i < dataGridViewCharacters.SelectedRows.Count; i++) { var character = ((ObjectView <CharacterSourceDTO>)dataGridViewCharacters.SelectedRows[i].DataBoundItem).Object; charactersToRemove.Add(character.Name); } _iatAsset.RemoveCharacters(charactersToRemove); _characterSources.DataSource = _iatAsset.GetAllCharacterSources().ToList(); _characterSources.Refresh(); }