public static void AddRaidBosses(PogoEncounterList list) { var T1 = new[] { (int)Bulbasaur }; // Tier 1 var T3 = new[] { (int)Bulbasaur }; // Tier 3 var SE = new[] { (int)Bulbasaur }; // Shiny eligible var bosses = T1.Concat(T3); foreach (var species in bosses) { var form = species switch { (int)Rattata => 1, _ => 0, }; var tier = T1.Contains(species) ? "1" : "3"; var pkm = list.GetDetails(species, form); var entry = new PogoEntry { Start = new PogoDate(), End = new PogoDate(), Type = PogoType.Raid, LocalizedStart = true, NoEndTolerance = false, Comment = $"Tier {tier} Raid Boss", Shiny = SE.Contains(species) ? PogoShiny.Random : PogoShiny.Never, }; // set species as available if this encounter is its debut if (!pkm.Available) { pkm.Available = true; } // set its evolutions as available as well var evos = EvoUtil.GetEvoSpecForms(species, form) .Select(z => new { Species = z & 0x7FF, Form = z >> 11 }) .Where(z => EvoUtil.IsAllowedEvolution(species, form, z.Species, z.Form)).ToArray(); foreach (var evo in evos) { var parent = list.GetDetails(evo.Species, evo.Form); if (!parent.Available) { parent.Available = true; } } pkm.Add(entry); // add the entry! }
public void SaveEntry(PogoEntry entry) { entry.Shiny = CHK_Shiny.CheckState switch { CheckState.Checked => PogoShiny.Always, CheckState.Indeterminate => PogoShiny.Random, _ => PogoShiny.Never, }; entry.Gender = CHK_MaleOnly.Checked ? PogoGender.MaleOnly : CHK_FemaleOnly.Checked ? PogoGender.FemaleOnly : PogoGender.Random; entry.Start = !DT_Start.Checked ? null : new PogoDate(DT_Start.Value); entry.End = !DT_End.Checked ? null : new PogoDate(DT_End.Value); entry.Type = (PogoType)(int)CB_Type.SelectedValue; entry.LocalizedStart = CHK_Localized.Checked; entry.NoEndTolerance = !CHK_EndTolerance.Checked; entry.Comment = TB_Comment.Text; }
public void LoadEntry(PogoEntry entry) { CHK_Shiny.CheckState = entry.Shiny switch { PogoShiny.Always => CheckState.Checked, PogoShiny.Random => CheckState.Indeterminate, _ => CheckState.Unchecked, }; CHK_MaleOnly.Checked = entry.Gender == PogoGender.MaleOnly; CHK_FemaleOnly.Checked = entry.Gender == PogoGender.FemaleOnly; DT_Start.Value = PogoDate.GetDateTime(entry.Start); DT_Start.Checked = entry.Start != null; DT_End.Value = PogoDate.GetDateTime(entry.End); DT_End.Checked = entry.End != null; CHK_Localized.Checked = entry.LocalizedStart; CHK_EndTolerance.Checked = !entry.NoEndTolerance; CB_Type.SelectedValue = (int)entry.Type; TB_Comment.Text = entry.Comment; }
public static void AddRaidBosses(PogoEncounterList list) { var T1 = new[] { (int)Bulbasaur }; var T3 = new[] { (int)Bulbasaur }; var T5 = Array.Empty <int>(); // usually manually added var bosses = T1.Concat(T3).Concat(T5); foreach (var pkm in bosses) { var form = pkm switch { (int)Rattata => 1, _ => 0, }; var species = list.GetDetails(pkm, form); var entry = new PogoEntry { Start = new PogoDate(), End = new PogoDate(), Type = PogoType.Raid, LocalizedStart = true, // NoEndTolerance = true, // Gender = pkm is (int)Frillish ? PogoGender.MaleOnly : PogoGender.Random, }; if (pkm is not((int)Bulbasaur)) { entry.Shiny = PogoShiny.Random; } if (T1.Contains(pkm)) { entry.Comment = "Tier 1 Raid Boss"; } if (T3.Contains(pkm)) { entry.Comment = "Tier 3 Raid Boss"; } if (T5.Contains(pkm)) { entry.Comment = "Tier 5 Raid Boss"; } // set debut species, and any of its evolutions, as available if (!species.Available) { var evos = EvoUtil.GetEvoSpecForms(pkm, form) .Select(z => new { Species = z & 0x7FF, Form = z >> 11 }) .Where(z => EvoUtil.IsAllowedEvolution(pkm, form, z.Species, z.Form)).ToArray(); foreach (var evo in evos) { var parent = list.GetDetails(evo.Species, evo.Form); if (!parent.Available) { parent.Available = true; } } species.Available = true; } species.Add(entry); }