internal void ResetBackpack() { fullInventory = new DBINVENTORY(null, Current.unit, new FieldAttributeCollection()); if (Current.unit != null) fullInventory.AddRange(Current.unit.Inventory); /////////////////////// // items /////////////////////// fullInventoryControls.Clear(); foreach (Control c in heroItemsPanel.Controls) { c.Tag = null; c.BackgroundImage = DHRC.GetImage("ReplaceableTextures\\CommandButtonsDisabled\\DIS" + Current.theme + "-inventory-slotfiller.blp"); } foreach (DBITEMSLOT itemSlot in fullInventory) foreach (Control c in heroItemsPanel.Controls) if (c.Name == itemSlot.Name + "B") { c.Tag = itemSlot; fullInventoryControls.Add(c); } foreach (DBITEMSLOT itemSlot in fullInventory) foreach (Control c in backpackPanel.Controls) if (c.Name == itemSlot.Name + "B") { c.Tag = itemSlot; fullInventoryControls.Add(c); } }
void selectionProviderTimer_Tick(object sender, EventArgs e) { if (Current.player.selection.IsUpdating) return; switch(Current.player.selection.Count) { case 0: if (Current.unit != null) { Current.unit = null; uscList.Clear(); DisplayUnit(); fullInventory = new DBINVENTORY(); } else if (playerSelectionTabControl.SelectedTab != selectedUnitTabPage) playerSelectionTabControl.SelectedTab = selectedUnitTabPage; break; case 1: if (Current.unit != Current.player.selection[0]) { Current.unit = Current.player.selection[0]; Current.unit.refresh(); if (hpsProvidedHeroBuild != null) { load_hero_build(hpsProvidedHeroBuild); Current.unit.Updated = true; } } if (Current.unit.Updated) { Current.unit.Updated = false; if (Current.unit.IsDisposed) { Current.unit = null; Console.Beep(500, 100); } if (fullInventory.Owner != Current.unit) ResetBackpack(); DisplayUnit(); } else if (Current.unit.HasAbilitiesOnCooldown) { foreach (Control c in abilitySlots) if (c.Tag is ABILITYPROFILE && (c.Tag as ABILITYPROFILE).IsOnCooldown) c.Refresh(); } else if (playerSelectionTabControl.SelectedTab != selectedUnitTabPage) playerSelectionTabControl.SelectedTab = selectedUnitTabPage; break; default: if (Current.unit == null) Current.unit = Current.player.selection[0]; if (fullInventory.Owner != Current.unit) { ResetBackpack(); DisplayUnit(DisplayUnitFlags.Brief); } if (Current.unit.HasAbilitiesOnCooldown) { foreach (Control c in abilitySlots) if (c.Tag is ABILITYPROFILE && (c.Tag as ABILITYPROFILE).IsOnCooldown) c.Refresh(); } if (Current.player.selection.Updated) { Current.player.selection.Updated = false; DisplaySelection(); } else foreach(unit u in Current.player.selection) if (u.Updated) { u.Updated = false; RefreshSelectionStatsCalculator(); DisplayUnit(DisplayUnitFlags.Brief); DisplayInfo(); break; } break; } }
public void CollectItemCombiningData() { if (MorphingItems != null) { return; } sameLookingComplexItems = null; Current.player.AcceptMessages = false; Dictionary <string, widget> dcItems = new Dictionary <string, widget>(); foreach (unit shop in DHLOOKUP.shops) { if (DHHELPER.IsNewVersionItemShop(shop)) { foreach (string unitID in shop.sellunits) { if (!dcItems.ContainsKey(unitID)) { unit u = new unit(unitID); u.DoSummon = true; u.set_owningPlayer(Current.player); dcItems.Add(unitID, u); } } } else { foreach (string itemID in shop.sellitems) { if (!dcItems.ContainsKey(itemID)) { dcItems.Add(itemID, new item(itemID)); } } } } unit test_unit = new unit(); test_unit.codeID = "test"; test_unit.Inventory.init(0, 10); test_unit.set_owningPlayer(Current.player); DHJassExecutor.CaughtReferences.Clear(); DHJassExecutor.CatchArrayReference = true; DBINVENTORY inventory = test_unit.Inventory; List <widget> itemList = new List <widget>(dcItems.Values); MorphingItems = new Dictionary <string, string>(itemList.Count); SplashScreen splashScreen = new SplashScreen(); splashScreen.Show(); splashScreen.ShowText("Collecting item combining data..."); for (int i = 0; i < itemList.Count; i++) { widget item = itemList[i]; if (DHHELPER.IsNewVersionItem(item.codeID)) { test_unit.OnSell(item as unit); Thread.Sleep(2); // to pass control to item handling script thread } else { test_unit.OnSellItem(item as item, test_unit); inventory.put_item(item as item); } item result = inventory[0].Item; if (result != null) { if (result.codeID != item.codeID) { MorphingItems.Add(result.codeID, item.codeID); } inventory[0].drop_item(); } splashScreen.ShowProgress((double)i, (double)itemList.Count); } Current.player.remove_unit(test_unit); test_unit.destroy(); List <string> arrays = DHJassExecutor.CaughtReferences; if (arrays.Count == 6) { Dictionary <int, DHJassValue> dcA = (DHJassExecutor.Globals[arrays[0]] as DHJassArray).Array; Dictionary <int, DHJassValue> dcB = (DHJassExecutor.Globals[arrays[1]] as DHJassArray).Array; Dictionary <int, DHJassValue> dcC = (DHJassExecutor.Globals[arrays[2]] as DHJassArray).Array; Dictionary <int, DHJassValue> dcD = (DHJassExecutor.Globals[arrays[3]] as DHJassArray).Array; Dictionary <int, DHJassValue> dcCombined = (DHJassExecutor.Globals[arrays[4]] as DHJassArray).Array; ComplexItems = new Dictionary <string, List <List <string> > >(dcA.Count); int value; foreach (int key in dcA.Keys) { List <string> components = new List <string>(4); value = dcA[key].IntValue; if (value != 0) { components.Add(DHJassInt.int2id(value)); } value = dcB[key].IntValue; if (value != 0) { components.Add(DHJassInt.int2id(value)); } value = dcC[key].IntValue; if (value != 0) { components.Add(DHJassInt.int2id(value)); } value = dcD[key].IntValue; if (value != 0) { components.Add(DHJassInt.int2id(value)); } value = dcCombined[key].IntValue; if (value != 0) { string strValue = DHJassInt.int2id(value); List <List <string> > componentsList; if (!ComplexItems.TryGetValue(strValue, out componentsList)) { componentsList = new List <List <string> >(1); ComplexItems.Add(strValue, componentsList); } componentsList.Add(components); } } } splashScreen.Close(); Current.player.AcceptMessages = true; }