protected void DropItem(int itemIndex)
 {
     try
     {
         Item itemToDrop = FindItem(CorrectIndex(itemIndex));
         _location.AddItem(itemToDrop);
         _inventory.Remove(itemToDrop);
     }
     catch (System.ArgumentOutOfRangeException e)
     {
         Console.WriteLine(e.Message);
     }
 }
Beispiel #2
0
 private void BuildItemsForArea(Area area, XmlNode areaNode)
 {
     if (areaNode != null)
     {
         XmlNodeList itemNodeList = areaNode.SelectNodes("child::Item");
         foreach (XmlNode itemNode in itemNodeList)
         {
             area.AddItem(BuildItemObject(itemNode));
         }
     }
 }
        private void DistributeItems(MyEnvironmentItems envItem, ref Vector3D sectorPosition)
        {
            envItem.GetItemsInSector(ref sectorPosition, m_tmpItemInfos);

            var envItemId = envItem.EntityId;
            foreach (var itemInfo in m_tmpItemInfos)
            {
                bool included = false;
                var worldBox = GetWorldBox(itemInfo.SubtypeId, itemInfo.Transform.TransformMatrix);
                var extended = worldBox.GetInflated(DEFAULT_INFLATE_VALUE);
                m_aabbTree.OverlapAllBoundingBox(ref extended, m_tmpAreas);

                for (int i = 0; i < m_tmpAreas.Count; i++)
                {
                    var forestBox = m_tmpAreas[i].ForestBox;
                    if ((forestBox.Center - worldBox.Center).LengthSquared() <= BOX_INCLUDE_DIST_SQ)
                    {
                        forestBox.Include(ref worldBox);
                        m_tmpAreas[i].ForestBox = forestBox;
                        m_tmpAreas[i].AddItem(envItemId, itemInfo.LocalId);
                        included = true;
                        m_aabbTree.MoveProxy(m_tmpAreas[i].ProxyId, ref worldBox, Vector3D.Zero);
                    }
                }

                m_tmpAreas.Clear();

                if (!included)
                {
                    var newForestBox = new Area();
                    newForestBox.ForestBox = worldBox;
                    newForestBox.AddItem(envItemId, itemInfo.LocalId);
                    newForestBox.ProxyId = m_aabbTree.AddProxy(ref worldBox, newForestBox, 0);
                    m_forestAreas.Add(newForestBox);
                }
            }

            m_tmpItemInfos.Clear();
        }
        private void item_ItemAdded(MyEnvironmentItems envItems, ItemInfo itemInfo)
        {
            m_checkedSectors.Add(envItems.GetSectorId(ref itemInfo.Transform.Position));

            var itemBox = GetWorldBox(itemInfo.SubtypeId, itemInfo.Transform.TransformMatrix);
            var checkBox = itemBox.GetInflated(DEFAULT_INFLATE_VALUE);
            m_aabbTree.OverlapAllBoundingBox(ref checkBox, m_tmpAreas);

            var newForestBox = new Area();
            newForestBox.ForestBox = itemBox;
            newForestBox.AddItem(envItems.EntityId, itemInfo.LocalId);
            newForestBox.ProxyId = m_aabbTree.AddProxy(ref itemBox, newForestBox, 0);
            m_tmpAreas.Add(newForestBox);

            MergeAreas(m_tmpAreas);

            if (newForestBox.IsValid)
                m_forestAreas.Add(newForestBox);

            m_tmpAreas.Clear();
        }