private bool UpdateStashes() { var stashPanel = GameController.Game.IngameState.ServerData.StashPanel; var stashNames = new List <string>(); var needUpdateAllInfo = false; _currentOpenedStashTab = null; _currentOpenedStashTabName = ""; for (var i = 0; i < stashPanel.TotalStashes; i++) { var stash = stashPanel.GetStashInventoryByIndex(i); var stashName = stashPanel.GetStashName(i); stashNames.Add(stashName); var visibleInventoryItems = stash?.VisibleInventoryItems; if (visibleInventoryItems == null) { continue; } _currentOpenedStashTab = stash; _currentOpenedStashTabName = stashName; if (stash.ItemCount != visibleInventoryItems.Count) { continue; } StashTabData curStashData; var add = false; if (!_sData.StashTabs.TryGetValue(stashName, out curStashData)) { curStashData = new StashTabData(); add = true; } if (curStashData.ItemsCount != stash.ItemCount) { curStashData.StashTabItems = new List <StashItem>(); needUpdateAllInfo = true; foreach (var invItem in visibleInventoryItems) { var item = invItem.Item; var newStashItem = ProcessItem(item); if (newStashItem == null) { continue; } curStashData.StashTabItems.Add(newStashItem); newStashItem.StashName = stashName; newStashItem.InventPosX = invItem.InventPosX; newStashItem.InventPosY = invItem.InventPosY; } curStashData.ItemsCount = (int)stash.ItemCount; } if (add && curStashData.ItemsCount > 0) { _sData.StashTabs.Add(stashName, curStashData); } break; } if (!needUpdateAllInfo) { return(false); } foreach (var name in stashNames) //Delete stashes that doesn't exist { if (!_sData.StashTabs.ContainsKey(name)) { _sData.StashTabs.Remove(name); } } return(true); }
public bool UpdateStashes() { var stashPanel = GameController.Game.IngameState.ServerData.StashPanel; var stashNames = new List <string>(); var needUpdateAllInfo = false; _currentOpenedStashTab = null; _currentOpenedStashTabName = ""; for (var i = 0; i < stashPanel.TotalStashes; i++) { var stash = stashPanel.GetStashInventoryByIndex(i); var stashName = stashPanel.GetStashName(i); stashNames.Add(stashName); var visibleInventoryItems = stash?.VisibleInventoryItems; if (visibleInventoryItems == null) { continue; } _currentOpenedStashTab = stash; _currentOpenedStashTabName = stashName; //if (stash.ItemCount != visibleInventoryItems.Count) { //LogMessage("No update stash coz: ItemCount", 4); //continue; } StashTabData curStashData; var add = false; if (!_sData.StashTabs.TryGetValue(stashName, out curStashData)) { curStashData = new StashTabData(); add = true; } //if (curStashData.ItemsCount != stash.ItemCount)//Temporary disabled. Trying to find a source of bug { curStashData.StashTabItems = new List <StashItem>(); needUpdateAllInfo = true; foreach (var invItem in visibleInventoryItems) { var item = invItem.Item; var newStashItem = ProcessItem(item); if (newStashItem == null) { continue; } curStashData.StashTabItems.Add(newStashItem); newStashItem.StashName = stashName; newStashItem.InventPosX = invItem.InventPosX; newStashItem.InventPosY = invItem.InventPosY; } curStashData.ItemsCount = (int)stash.ItemCount; } if (add && curStashData.ItemsCount > 0) { _sData.StashTabs.Add(stashName, curStashData); } break; } /* * foreach (var name in stashNames) * { * if (!_sData.StashTabs.ContainsKey(name)) //TODO: Define: What the f**k is this? * { * _sData.StashTabs.Remove(name); * } * } */ var allStashNames = stashPanel.AllStashNames; var keyTabs = _sData.StashTabs.Keys.ToList();//Delete stashes that doesn't exist foreach (var stashName in keyTabs) { if (!allStashNames.Contains(stashName)) { _sData.StashTabs.Remove(stashName); } } if (!needUpdateAllInfo) { return(false); } return(true); }
public bool UpdateStashes() { var stashPanel = GameController.Game.IngameState.ServerData.StashPanel; if (stashPanel == null) { LogMessage("ServerData.StashPanel is null", 3); return(false); } var needUpdateAllInfo = false; _currentOpenedStashTab = null; _currentOpenedStashTabName = ""; for (var i = 0; i < stashPanel.TotalStashes; i++) { var stashName = stashPanel.GetStashName(i); if (Settings.OnlyAllowedStashTabs.Value) { if (!Settings.AllowedStashTabs.Any(x => x.Name == stashName)) { continue; } } var stash = stashPanel.GetStashInventoryByIndex(i); var visibleInventoryItems = stash?.VisibleInventoryItems; if (visibleInventoryItems == null) { continue; } _currentOpenedStashTab = stash; _currentOpenedStashTabName = stashName; StashTabData curStashData = null; var add = false; if (!_sData.StashTabs.TryGetValue(stashName, out curStashData)) { curStashData = new StashTabData(); add = true; } curStashData.StashTabItems = new List <StashItem>(); needUpdateAllInfo = true; foreach (var invItem in visibleInventoryItems) { var item = invItem.Item; var newStashItem = ProcessItem(item); if (newStashItem == null) { if (Settings.ShowRedRectangleAroundIgnoredItems) { Graphics.DrawFrame(invItem.GetClientRect(), 2, Color.Red); } continue; } newStashItem.StashName = stashName; newStashItem.InventPosX = invItem.InventPosX; newStashItem.InventPosY = invItem.InventPosY; newStashItem.BInPlayerInventory = false; curStashData.StashTabItems.Add(newStashItem); } curStashData.ItemsCount = (int)stash.ItemCount; if (add && curStashData.ItemsCount > 0) { _sData.StashTabs.Add(stashName, curStashData); } } List <string> workingTabs = null; if (Settings.OnlyAllowedStashTabs.Value) { workingTabs = Settings.AllowedStashTabs.Select(x => x.Name).ToList(); } else { workingTabs = stashPanel.AllStashNames; } var keyTabs = _sData.StashTabs.Keys.ToList();//Delete stashes that doesn't exist foreach (var stashNameInUse in keyTabs) { if (!workingTabs.Contains(stashNameInUse)) { _sData.StashTabs.Remove(stashNameInUse); } } if (!needUpdateAllInfo) { return(false); } return(true); }
public bool UpdateStashes() { var stashPanel = GameController.IngameState.IngameUi.StashElement; if (stashPanel == null) { LogMessage("ServerData.StashPanel is null", 3); return(false); } var needUpdateAllInfo = false; _currentOpenedStashTabName = ""; _currentOpenedStashTab = stashPanel.VisibleStash; if (_currentOpenedStashTab == null) { return(false); } for (var i = 0; i < stashPanel.TotalStashes; i++) { var stashName = stashPanel.GetStashName(i); if (Settings.OnlyAllowedStashTabs.Value) { if (!Settings.AllowedStashTabs.Contains(i)) { continue; } } var stash = stashPanel.GetStashInventoryByIndex(i); var visibleInventoryItems = stash?.VisibleInventoryItems; if (visibleInventoryItems == null) { continue; } if (_currentOpenedStashTab.Address == stash.Address) { _currentOpenedStashTabName = stashName; } var add = false; if (!_sData.StashTabs.TryGetValue(stashName, out var curStashData)) { curStashData = new StashTabData(); add = true; } var items = new List <StashItem>(); needUpdateAllInfo = true; foreach (var invItem in visibleInventoryItems) { var item = invItem.Item; var newStashItem = ProcessItem(item); if (newStashItem == null) { if (Settings.ShowRedRectangleAroundIgnoredItems) { Graphics.DrawFrame(invItem.GetClientRect(), Color.Red, 2); } continue; } newStashItem.StashName = stashName; newStashItem.InventPosX = invItem.InventPosX; newStashItem.InventPosY = invItem.InventPosY; newStashItem.BInPlayerInventory = false; items.Add(newStashItem); } if (_currentOpenedStashTab.Address == stash.Address)//in case tab was closed before we finish update { curStashData.StashTabItems = items; curStashData.ItemsCount = (int)stash.ItemCount; } if (add && curStashData.ItemsCount > 0) { _sData.StashTabs.Add(stashName, curStashData); } } if (!needUpdateAllInfo) { return(false); } return(true); }