public PaperdollDialogItem(PacketAPI api, Rectangle location, EOPaperdollDialog parent, ItemRecord info, EquipLocation locationEnum) : base(null, null, parent) { m_api = api; SetInfo(location, info); EquipLoc = locationEnum; }
private void _removeItem(ItemRecord item, int amount) { if (!EOGame.Instance.Hud.InventoryFits((short)item.ID)) { EOMessageBox.Show(World.GetString(DATCONST2.STATUS_LABEL_ITEM_PICKUP_NO_SPACE_LEFT), World.GetString(DATCONST2.STATUS_LABEL_TYPE_WARNING), XNADialogButtons.Ok, EOMessageBoxStyle.SmallDialogSmallHeader); return; } if (World.Instance.MainPlayer.ActiveCharacter.Weight + item.Weight * amount > World.Instance.MainPlayer.ActiveCharacter.MaxWeight) { EOMessageBox.Show(World.GetString(DATCONST2.DIALOG_ITS_TOO_HEAVY_WEIGHT), World.GetString(DATCONST2.STATUS_LABEL_TYPE_WARNING), XNADialogButtons.Ok, EOMessageBoxStyle.SmallDialogSmallHeader); return; } if (!m_api.LockerTakeItem(X, Y, (short)item.ID)) EOGame.Instance.DoShowLostConnectionDialogAndReturnToMainMenu(); }
public EOInventoryItem(PacketAPI api, int slot, ItemRecord itemData, InventoryItem itemInventoryInfo, EOInventory inventory) : base(null, null, inventory) { m_api = api; m_itemData = itemData; m_inventory = itemInventoryInfo; Slot = slot; UpdateItemLocation(Slot); m_itemgfx = ((EOGame)Game).GFXManager.TextureFromResource(GFXTypes.Items, 2 * itemData.Graphic, true); m_highlightBG = new Texture2D(Game.GraphicsDevice, DrawArea.Width - 3, DrawArea.Height - 3); Color[] highlight = new Color[(drawArea.Width - 3) * (drawArea.Height - 3)]; for (int i = 0; i < highlight.Length; ++i) { highlight[i] = Color.FromNonPremultiplied(200, 200, 200, 60); } m_highlightBG.SetData(highlight); _initItemLabel(); m_recentClickTimer = new Timer( _state => { if (m_recentClickCount > 0) Interlocked.Decrement(ref m_recentClickCount); }, null, 0, 1000); }
public void SetItem(EquipLocation loc, ItemRecord info) { PaperdollDialogItem itemToUpdate = (PaperdollDialogItem)children.Find(_ctrl => { PaperdollDialogItem item = _ctrl as PaperdollDialogItem; if (item == null) return false; return item.EquipLoc == loc; }); if (itemToUpdate != null) itemToUpdate.SetInfo(_getEquipLocRectangle(loc), info); }
private void _updateDisplayDataSprites() { if (Data.shield != 0) { if (World.Instance.EIF != null) { shieldInfo = World.Instance.EIF.GetItemRecordByDollGraphic(ItemType.Shield, Data.shield); if(shieldInfo != null) shield = spriteSheet.GetShield(shieldInfo.Name == "Bag" || shieldInfo.SubType == ItemSubType.Arrows || shieldInfo.SubType == ItemSubType.Wings); } } else { shield = null; shieldInfo = null; } if (Data.weapon != 0) { if (World.Instance.EIF != null) { weaponInfo = World.Instance.EIF.GetItemRecordByDollGraphic(ItemType.Weapon, Data.weapon); if(weaponInfo != null) weapon = spriteSheet.GetWeapon(weaponInfo.SubType == ItemSubType.Ranged); } } else { weapon = null; weaponInfo = null; } bool isBow = weaponInfo != null && weaponInfo.SubType == ItemSubType.Ranged; characterSkin = spriteSheet.GetSkin(isBow, out m_skinSourceRect); boots = Data.boots != 0 ? spriteSheet.GetBoots(isBow) : null; armor = Data.armor != 0 ? spriteSheet.GetArmor(isBow) : null; lock (hatHairLock) hair = Data.hairstyle != 0 ? spriteSheet.GetHair(Data.hairNeedRefresh) : null; if (Data.hat != 0) { lock (hatHairLock) hat = spriteSheet.GetHat(); if (World.Instance.EIF != null) hatInfo = World.Instance.EIF.GetItemRecordByDollGraphic(ItemType.Hat, Data.hat); } else { lock (hatHairLock) { hat = null; hatInfo = null; } } maskTheHair(); //this will set the combined hat/hair texture with proper data. _drawCharToRenderTarget(); Data.SetUpdate(false); Data.SetHairNeedRefresh(false); }
private bool _addItemToSlot(bool[,] filledSlots, int slot, ItemRecord item, int count = 1) { //this is ADD item - don't allow adding items that have been added already if (slot < 0 || m_childItems.Count(_item => _item.Slot == slot) > 0) return false; List<Tuple<int, int>> points; if (!_fitsInSlot(filledSlots, slot, item.Size, out points)) return false; points.ForEach(point => filledSlots[point.Item1, point.Item2] = true); //flag that the spaces are taken m_inventoryKey.SetValue(string.Format("item{0}", slot), item.ID, RegistryValueKind.String); //update the registry m_childItems.Add(new EOInventoryItem(m_api, slot, item, new InventoryItem { amount = count, id = (short)item.ID }, this)); //add the control wrapper for the item m_childItems[m_childItems.Count - 1].DrawOrder = (int) ControlDrawLayer.DialogLayer - (2 + slot%INVENTORY_ROW_LENGTH); return true; }
private bool _addItemToSlot(int slot, ItemRecord item, int count = 1) { return _addItemToSlot(m_filledSlots, slot, item, count); }
public override void Update(GameTime gameTime) { if (!Game.IsActive) return; MouseState currentState = Mouse.GetState(); if (MouseOver && !MouseOverPreviously) { DATCONST2 msg; switch (EquipLoc) { case EquipLocation.Boots: msg = DATCONST2.STATUS_LABEL_PAPERDOLL_BOOTS_EQUIPMENT; break; case EquipLocation.Accessory: msg = DATCONST2.STATUS_LABEL_PAPERDOLL_MISC_EQUIPMENT; break; case EquipLocation.Gloves: msg = DATCONST2.STATUS_LABEL_PAPERDOLL_GLOVES_EQUIPMENT; break; case EquipLocation.Belt: msg = DATCONST2.STATUS_LABEL_PAPERDOLL_BELT_EQUIPMENT; break; case EquipLocation.Armor: msg = DATCONST2.STATUS_LABEL_PAPERDOLL_ARMOR_EQUIPMENT; break; case EquipLocation.Necklace: msg = DATCONST2.STATUS_LABEL_PAPERDOLL_NECKLACE_EQUIPMENT; break; case EquipLocation.Hat: msg = DATCONST2.STATUS_LABEL_PAPERDOLL_HAT_EQUIPMENT; break; case EquipLocation.Shield: msg = DATCONST2.STATUS_LABEL_PAPERDOLL_SHIELD_EQUIPMENT; break; case EquipLocation.Weapon: msg = DATCONST2.STATUS_LABEL_PAPERDOLL_WEAPON_EQUIPMENT; break; case EquipLocation.Ring1: case EquipLocation.Ring2: msg = DATCONST2.STATUS_LABEL_PAPERDOLL_RING_EQUIPMENT; break; case EquipLocation.Armlet1: case EquipLocation.Armlet2: msg = DATCONST2.STATUS_LABEL_PAPERDOLL_ARMLET_EQUIPMENT; break; case EquipLocation.Bracer1: case EquipLocation.Bracer2: msg = DATCONST2.STATUS_LABEL_PAPERDOLL_BRACER_EQUIPMENT; break; default: throw new ArgumentOutOfRangeException(); } if (m_info != null) EOGame.Instance.Hud.SetStatusLabel(DATCONST2.STATUS_LABEL_TYPE_INFORMATION, msg, ", " + m_info.Name); else EOGame.Instance.Hud.SetStatusLabel(DATCONST2.STATUS_LABEL_TYPE_INFORMATION, msg); } //unequipping an item via right-click if (m_info != null && MouseOver && currentState.RightButton == ButtonState.Released && PreviousMouseState.RightButton == ButtonState.Pressed) { if (((EOPaperdollDialog)parent).CharRef == World.Instance.MainPlayer.ActiveCharacter) { //the parent dialog must show equipment for mainplayer if (m_info.Special == ItemSpecial.Cursed) { EOMessageBox.Show(DATCONST1.ITEM_IS_CURSED_ITEM, XNADialogButtons.Ok, EOMessageBoxStyle.SmallDialogSmallHeader); } else if (!((EOGame)Game).Hud.InventoryFits((short)m_info.ID)) { ((EOGame)Game).Hud.SetStatusLabel(DATCONST2.STATUS_LABEL_TYPE_WARNING, DATCONST2.STATUS_LABEL_ITEM_UNEQUIP_NO_SPACE_LEFT); } else { _setSize(m_area.Width, m_area.Height); DrawLocation = new Vector2(m_area.X + (m_area.Width / 2 - DrawArea.Width / 2), m_area.Y + (m_area.Height / 2 - DrawArea.Height / 2)); //put back in the inventory by the packet handler response string locName = Enum.GetName(typeof(EquipLocation), EquipLoc); if (!string.IsNullOrEmpty(locName)) m_api.UnequipItem((short)m_info.ID, (byte)(locName.Contains("2") ? 1 : 0)); m_info = null; m_gfx = null; } } } base.Update(gameTime); }
public void SetInfo(Rectangle location, ItemRecord info) { m_info = info; if (info != null) { m_gfx = ((EOGame)Game).GFXManager.TextureFromResource(GFXTypes.Items, 2 * info.Graphic, true); } m_area = location; if (m_gfx != null) _setSize(m_gfx.Width, m_gfx.Height); else _setSize(location.Width, location.Height); DrawLocation = new Vector2(location.X + (m_area.Width / 2 - DrawArea.Width / 2), location.Y + (m_area.Height / 2 - DrawArea.Height / 2)); }