private void CB_PortraitStyle_SelectedIndexChanged(object sender, EventArgs e) { if (CB_Character.SelectedIndex >= 0) { cbItem curitem = CB_Character.Items[CB_Character.SelectedIndex] as cbItem; CB_Character.DataSource = Characters[CB_PortraitStyle.SelectedIndex]; bool found = false; for (int i = 0; i < CB_Character.Items.Count; i++) { if ((CB_Character.Items[i] as cbItem).Text == curitem.Text) { CB_Character.SelectedIndex = i; found = true; } } if (!found) { CB_Character.SelectedIndex = 0; } } else { CB_Character.DataSource = Characters[CB_PortraitStyle.SelectedIndex]; CB_Character.SelectedIndex = 0; } foreach (Control ctrl in Emotion_Spec) { ctrl.Enabled = (CB_PortraitStyle.Items[CB_PortraitStyle.SelectedIndex] as string) != "Critical"; } if (!loaded) { return; } UpdateImage(); }
/** * Updates the portrait upon changes to portrait style of the current character. * @param sender Object that calls the change in character portrait style. * @param e Holds information regarding the changes. */ private void CB_PortraitStyle_SelectedIndexChanged(object sender, EventArgs e) { if (CB_Character.SelectedIndex >= 0) // if the index number of the character is valid (positive number) { cbItem curitem = CB_Character.Items[CB_Character.SelectedIndex] as cbItem; // get items of the character CB_Character.DataSource = Characters[CB_PortraitStyle.SelectedIndex]; // set the character's portrait style bool found = false; // indicates whether or not the item was found for (int i = 0; i < CB_Character.Items.Count; i++) // for each item in the character { if ((CB_Character.Items[i] as cbItem).Text == curitem.Text) // if the item is the one at the selected index { CB_Character.SelectedIndex = i; // set the selected index of the character to the index of the item found = true; // set indicator to indicate that the item was found } } if (!found) // if item wasn't found { CB_Character.SelectedIndex = 0; // set the selected index to 0 (by default) } } else // if item was found { CB_Character.DataSource = Characters[CB_PortraitStyle.SelectedIndex]; // reset the character's portrait style to the index just found CB_Character.SelectedIndex = 0; // reset the selected index to 0 (by default) } foreach (Control ctrl in Emotion_Spec) // for each emotion { ctrl.Enabled = (CB_PortraitStyle.Items[CB_PortraitStyle.SelectedIndex] as string) != "Critical"; // set emotion to true if the portrait style is not "Critical" } if (!loaded) // if portrait generation is not completed { return; // exit the function } UpdateImage(); // if portrait generation is completed, update the dialogue image }
public PortraitGenerator(List <string> RL, Dictionary <string, string> N, Dictionary <string, byte[]> FD) { InitializeComponent(); Emotion_Spec = new Control[] { LBL_Emotions, CB_Emotion, CHK_Blush, CHK_SweatDrop }; Corrin_Spec = new Control[] { LBL_CharType, CB_Corrin, LBL_Eyes, CB_Eyes, LBL_HairStyle, CB_HairStyle, LBL_FacialFeature, CB_FacialFeature, LBL_Accessory, CB_Accessory }; ResourceList = RL; Names = N; FaceData = FD; DefaultHairs = new Dictionary <string, int>(); string[] HCs = Resources.HCs.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); foreach (string HC in HCs) { var H = HC.Split(new[] { '\t' }); DefaultHairs[H[0]] = int.Parse(H[1], NumberStyles.AllowHexSpecifier); } CB_HairColor.Items.Add("Custom"); CB_HairColor.Items.AddRange(DefaultHairs.Keys.Select(s => s).ToArray()); CB_PortraitStyle.Items.AddRange(new[] { "Standard", "Closeup", "Critical" }); for (int i = 0; i < Characters.Length; i++) { Characters[i] = new List <cbItem>(); foreach (string Resource in ResourceList) { if (Resource.Contains("_" + Prefixes[i] + "_")) { string Character = Resource.Substring(0, Resource.IndexOf("_" + Prefixes[i] + "_")); cbItem ncbi = new cbItem { Value = Character, Text = Names.ContainsKey(Character) ? Names[Character] : Character }; if (!ncbi.Text.Contains("マイユニ") && ncbi.Text != "Kana") { if (Characters[i].All(cbi => cbi.Text != ncbi.Text) && Characters[i].All(cbi => cbi.Value != ncbi.Value)) { Characters[i].Add(ncbi); } } } } Characters[i].Add(new cbItem { Text = "Corrin", Value = "username" }); Characters[i].Add(new cbItem { Text = "Kana (M)", Value = "カンナ男" }); Characters[i].Add(new cbItem { Text = "Kana (F)", Value = "カンナ女" }); Characters[i] = Characters[i].OrderBy(cbi => cbi.Text).ToList(); } CB_Character.DisplayMember = "Text"; CB_Character.ValueMember = "Value"; CB_Corrin.Items.AddRange(new[] { "Male 1", "Male 2", "Female 1", "Female 2" }); CB_Eyes.Items.AddRange(new[] { "Style A", "Style B", "Style C", "Style D", "Style E", "Style F", "Style G" }); CB_HairStyle.Items.AddRange(Enumerable.Range(0, 12).Select(i => i.ToString("00")).ToArray()); CB_FacialFeature.Items.AddRange(new[] { "None", "Scratches", "Vertical Scratches", "Horizontal Scratches", "Tattoo 1", "Tattoo 2", "Tattoo 3", "Eye Mole", "Mouth Mole", "Plaster 1", "Plaster 2", "White Eyepatch", "Black Eyepatch" }); CB_Accessory.Items.AddRange(new[] { "None", "Silver Piece", "Butterfly", "Black Ribbon", "White Ribbon", "White Rose" }); CB_PortraitStyle.SelectedIndex = 2; CB_Character.SelectedIndex = CB_HairColor.SelectedIndex = CB_Corrin.SelectedIndex = CB_Eyes.SelectedIndex = CB_HairStyle.SelectedIndex = CB_FacialFeature.SelectedIndex = CB_Accessory.SelectedIndex = 0; CB_Accessory.Enabled = LBL_Accessory.Enabled = CB_Corrin.SelectedIndex > 1; loaded = true; UpdateImage(); }