private void BtnAddAndClose_Click(object sender, EventArgs e) { foreach (var i in CheckedItems.Where(x => UsedInstance.ItemInRange(x))) { SelectedItems.Add(UsedInstance.Logic[i]); } Addconditional(); this.Close(); }
//Automatic Checks public bool CheckAutoSelectItems() { bool ItemStateChanged = false; foreach (var CheckedObject in AutoSelect) { //Check if the items checked status has been changed, most likely by CheckEntrancePair. if (ActionDic.ContainsKey(CheckedObject.ID) && ActionDic[CheckedObject.ID] != CheckedObject.Checked && CheckedObject.IsEntrance()) { continue; } if (CheckedObject.ID < -1) { continue; } if (CheckedObject.Checked && CheckedObject.RandomizedItem > -2) { if (Instance.ItemInRange(CheckedObject.RandomizedItem) && !Tools.SameItemMultipleChecks(CheckedObject.RandomizedItem, Instance) && CheckedObject.ItemBelongsToMe()) { Instance.Logic[CheckedObject.RandomizedItem].Aquired = false; LogicEditing.CheckEntrancePair(CheckedObject, Instance, false); } CheckedObject.Checked = false; if (!KeepChecked) { CheckedObject.RandomizedItem = -2; } ItemStateChanged = true; continue; } if (CheckedObject.SpoilerRandom > -2 || CheckedObject.RandomizedItem > -2 || CheckedObject.RandomizedState() == 2) { CheckedObject.Checked = true; if (CheckedObject.RandomizedState() == 2) { CheckedObject.RandomizedItem = CheckedObject.ID; } if (CheckedObject.SpoilerRandom > -2) { CheckedObject.RandomizedItem = CheckedObject.SpoilerRandom; } if (CheckedObject.RandomizedItem < 0) { CheckedObject.RandomizedItem = -1; ItemStateChanged = true; continue; } if (CheckedObject.ItemBelongsToMe()) { Instance.Logic[CheckedObject.RandomizedItem].Aquired = true; } Instance.Logic[CheckedObject.RandomizedItem].PlayerData.ItemCameFromPlayer = FromNetPlayer; LogicEditing.CheckEntrancePair(CheckedObject, Instance, true); ItemStateChanged = true; continue; } } return(ItemStateChanged); }
private void button1_Click(object sender, EventArgs e) { foreach (var i in CheckedItems.Where(x => UsedInstance.ItemInRange(x))) { SelectedItems.Add(UsedInstance.Logic[i]); } this.DialogResult = DialogResult.OK; this.Close(); }
private void SeedChecker_Load(object sender, EventArgs e) { CheckerInstance = Utility.CloneTrackerInstance(LogicObjects.MainTrackerInstance); if (!Utility.CheckforSpoilerLog(CheckerInstance.Logic)) { var file = Utility.FileSelect("Select A Spoiler Log", "Spoiler Log (*.txt;*html)|*.txt;*html"); if (file == "") { return; } LogicEditing.WriteSpoilerLogToLogic(CheckerInstance, file); if (!Utility.CheckforSpoilerLog(CheckerInstance.Logic, true)) { MessageBox.Show("Not all items have spoiler data. Your results may be incorrect."); } } else if (!Utility.CheckforSpoilerLog(CheckerInstance.Logic, true)) { MessageBox.Show("Not all items have spoiler data. Your results may be incorrect."); } var GameClearEntry = CheckerInstance.Logic.Find(x => x.DictionaryName == "MMRTGameClear"); int GameclearID = -1; if (GameClearEntry != null) { GameClearEntry.DictionaryName = (CheckerInstance.IsMM()) ? "Defeat Majora" : "Beat the Game"; LBNeededItems.Items.Add(new LogicObjects.ListItem { DisplayName = GameClearEntry.DictionaryName, PathID = GameClearEntry.ID }); } else if (CheckerInstance.IsMM()) { Console.WriteLine("Adding MMRTGameClear"); GameclearID = PlaythroughGenerator.GetGameClearEntry(CheckerInstance.Logic, CheckerInstance.IsEntranceRando()); if (!CheckerInstance.ItemInRange(GameclearID)) { return; } CheckerInstance.Logic[GameclearID].DictionaryName = "Defeat Majora"; LBNeededItems.Items.Add(new LogicObjects.ListItem { DisplayName = "Defeat Majora", PathID = GameclearID }); } listBox2.DataSource = CheckerInstance.Logic.Select(x => x.LocationName ?? x.DictionaryName).ToList(); GameClearEntry = CheckerInstance.Logic.Find(x => x.DictionaryName == "MMRTGameClear" || x.DictionaryName == "Beat the Game" || x.DictionaryName == "Defeat Majora"); if (GameClearEntry != null) { listBox2.SelectedIndex = GameClearEntry.ID; } else { listBox2.SelectedIndex = 0; } WriteSpoilerItemsToBox(); }
public static void CleanMultiWorldData(LogicObjects.TrackerInstance Instance, LogicObjects.MMRTpacket Data) { foreach (var i in Instance.Logic.Where(x => x.Aquired && x.PlayerData.ItemCameFromPlayer == Data.PlayerID)) { i.Aquired = false; i.PlayerData.ItemCameFromPlayer = -1; } var log = LogicObjects.MainTrackerInstance.Logic; var itemsAquired = new List <LogicObjects.LogicEntry>(); var itemsInUse = new List <LogicObjects.LogicEntry>(); foreach (var i in log) { if (i.IsFake) { continue; } if (i.LogicItemAquired()) { itemsAquired.Add(i); itemsInUse.Add(i); } if (i.ItemHasBeenPlaced(Instance.Logic)) { itemsInUse.Add(i); } } foreach (var i in Data.LogicData) { if (i.PI != LogicObjects.MainTrackerInstance.Options.MyPlayerID || i.Ch == false || !Instance.ItemInRange(i.RI) || log[i.RI].IsEntrance()) { continue; } if (itemsInUse.Where(x => x.ID == i.RI).Any()) { Debugging.Log($"{log[i.RI].DictionaryName} was in use elsewhere"); var MatchingItems = log.Where(x => x.SpoilerItem.Intersect(log[i.RI].SpoilerItem).Any()); var FindUnusedMatchingItem = MatchingItems.Where(x => !itemsInUse.Where(y => y.ID == x.ID).Any()); var FindUnAquiredMatchingItem = MatchingItems.Where(x => !itemsAquired.Where(y => y.ID == x.ID).Any()); if (FindUnusedMatchingItem.Any()) { Debugging.Log($"Unused Matching Item found: {FindUnusedMatchingItem.ToArray()[0].DictionaryName}"); var newItem = FindUnusedMatchingItem.First(); i.RI = newItem.ID; itemsAquired.Add(newItem); itemsInUse.Add(newItem); } else if (FindUnAquiredMatchingItem.Any()) { Debugging.Log($"No Unused Matching Items Were Found, getting unaquired matching item."); Debugging.Log($"Matching UnAquired Item Found: {FindUnAquiredMatchingItem.First().DictionaryName}"); var newItem = FindUnAquiredMatchingItem.First(); i.RI = newItem.ID; itemsAquired.Add(newItem); itemsInUse.Add(newItem); } else { Debugging.Log($"No Unused items were found. This is an error and could cause Issues."); } } } }