Ejemplo n.º 1
0
    void OnItemPick()
    {
        if (_player == null)
        {
            _player = UnityEngine.GameObject.FindGameObjectWithTag("Player");
        }
        if (_inventory == null && _player != null)
        {
            _inventory = _player.GetComponent <PlayerInventory>().inventory.GetComponent <Inventory>();
        }
        if (_inventory != null)
        {
            float distance = Vector3.Distance(this.gameObject.transform.position, _player.transform.position);

            if (distance <= 3)
            {
                //bool check = _inventory.checkIfItemAllreadyExist(item.itemID, item.itemValue);
                //if (check)
                //    Destroy(this.gameObject);
                if (_inventory.ItemsInInventory.Count < (_inventory.width * _inventory.height))
                {
                    DroppedItem item = (DroppedItem)KBEngineApp.app.findEntity(Utility.getPostInt(gameObject.name));
                    if (item != null)
                    {
                        item.pickUpRequest();
                    }
                    //_inventory.addItemToInventory(item.itemID, item.itemValue);
                    //_inventory.updateItemList();
                    //_inventory.stackableSettings();
                    //Destroy(this.gameObject);
                }
            }
        }
    }
Ejemplo n.º 2
0
        public void Pickup()
        {
            DroppedItem itemForPickup = null;
            int         minDistance   = Range;

            foreach (var droppedItem in _data.DroppedItems)
            {
                if (_data.MainHero.RangeTo(droppedItem.Value) < minDistance &&
                    (!PickupMine || _data.MonstersToLoot.Contains(droppedItem.Value.SourceMobObjectId)) &&
                    (!_blockedDrop.ContainsKey(droppedItem.Key) || DateTime.Now.Subtract(_blockedDrop[droppedItem.Key]).TotalSeconds > 30) &&
                    (PickupAll ||
                     (PickupInclusive && RulesInUse.Any(rule => rule.Enable && rule.ItemId == droppedItem.Value.ItemId && rule.ConditionsAreMet(_data, droppedItem.Value))) ||
                     (PickupExclusive && !RulesInUse.Any(rule => rule.Enable && rule.ItemId == droppedItem.Value.ItemId && rule.ConditionsAreMet(_data, droppedItem.Value))))
                    )
                {
                    itemForPickup = droppedItem.Value;
                    minDistance   = (int)_data.MainHero.RangeTo(itemForPickup);
                }
            }

            if (itemForPickup == null)
            {
                return;
            }

            if (minDistance > 150)
            {
                if (DateTime.Now.Subtract(_moveToStamp).TotalMilliseconds > 500)
                {
                    _actionsController.MoveToRaw(itemForPickup.X, itemForPickup.Y, itemForPickup.Z);
                    _moveToStamp = DateTime.Now;
                }
            }
            else
            {
                _actionsController.Pickup(itemForPickup.ObjectId);
                int timeout = 0;
                while (timeout < 30 && _data.DroppedItems.ContainsKey(itemForPickup.ObjectId))
                {
                    Thread.Sleep(100);

                    if (timeout % 10 == 0)
                    {
                        _actionsController.Pickup(itemForPickup.ObjectId);
                    }
                }

                if (timeout == 30)
                {
                    if (_blockedDrop.ContainsKey(itemForPickup.ObjectId))
                    {
                        _blockedDrop[itemForPickup.ObjectId] = DateTime.Now;
                    }
                    else
                    {
                        _blockedDrop.Add(itemForPickup.ObjectId, DateTime.Now);
                    }
                }
            }
        }
Ejemplo n.º 3
0
    public DroppedItem CreateItem(Vector2 pos, int lifeStoneAmount, int goldRate)
    {
        float         droppedLifeStoneOffset = 0.33f;
        DroppedItem   temp          = Instantiate(droppedItem, pos, Quaternion.identity);
        LifeStoneInfo lifeStoneInfo = LifeStoneManager.Instance.CreateLifeStoneShape(lifeStoneAmount, goldRate);

        temp.lifeStoneInfo = lifeStoneInfo;

        for (int y = 0; y < lifeStoneInfo.size.y; y++)
        {
            for (int x = 0; x < lifeStoneInfo.size.x; x++)
            {
                if ((LifeStoneType)int.Parse(lifeStoneInfo.lifeStonePos[y * lifeStoneInfo.size.x + x].ToString()) != LifeStoneType.NULL)
                {
                    Instantiate(droppedLifeStone, new Vector2(x, y) * droppedLifeStoneOffset, Quaternion.identity, temp.transform);
                }
            }
        }
        temp.GetComponent <BoxCollider2D>().size   = (Vector2)lifeStoneInfo.size * droppedLifeStoneOffset;
        temp.GetComponent <BoxCollider2D>().offset = (lifeStoneInfo.size - new Vector2(1, 1)) / 2 * droppedLifeStoneOffset;
        temp.transform.Find("GroundCollider").GetComponent <BoxCollider2D>().size   = (Vector2)lifeStoneInfo.size * droppedLifeStoneOffset;
        temp.transform.Find("GroundCollider").GetComponent <BoxCollider2D>().offset = (lifeStoneInfo.size - new Vector2(1, 1)) / 2 * droppedLifeStoneOffset;

        temp.isWeapon = false;

        return(temp);
    }
Ejemplo n.º 4
0
        void OnEntityKill(BaseNetworkable entity)
        {
            if (entity == null)
            {
                return;
            }
            DroppedItem item = entity as DroppedItem;

            if (item?.item?.info?.worldModelPrefab == null)
            {
                return;
            }
            if (!item.item.info.worldModelPrefab.isValid)
            {
                return;
            }
            RotatePickupComponent component;

            if (rotatingItems.TryGetValue(entity, out component))
            {
                if (component)
                {
                    UnityEngine.Object.Destroy(component);
                }
                rotatingItems.Remove(entity);
            }
        }
Ejemplo n.º 5
0
        private void PickupItem(Player player, DroppedItem droppedItem)
        {
            // Check the Distance Player <> Item
            double dist = player.GetDistanceTo(droppedItem);

            if (dist > 3)
            {
                return;
            }

            // Check Inv Space
            int slot = player.Inventory.CheckInvSpace(droppedItem.Item);

            if (slot < 12)
            {
                return;
            }

            var success = droppedItem.TryPickUpBy(player);

            if (success)
            {
                player.PlayerView.InventoryView.ItemAppear(droppedItem.Item);
            }

            // todo: "Obtained message" ?? guess not
        }
Ejemplo n.º 6
0
    void OnTriggerStay2D(Collider2D col)
    {
        DroppedItem di = col.GetComponent <DroppedItem>();
        Entity      e  = col.GetComponent <Entity>();
        Block       b  = col.GetComponent <Block>();

        if (di != null)
        {
            di.GetComponent <Rigidbody2D>().velocity = (Vector2)transform.right * transportSpeed;
            s.color = effect;
        }
        else if (e != null)
        {
            e.GetComponent <Rigidbody2D>().position += (Vector2)transform.right * transportSpeed * Time.deltaTime;
            e.GetComponent <Rigidbody2D>().velocity *= 0.9f;
            //e.GetComponent<Rigidbody2D>().position = Vector3.Lerp(e.GetComponent<Rigidbody2D>().position, transform.position, pullToCenterSpeed * Time.deltaTime);
        }
        else if ((b != null && b.fluid && moveLiquids) || (b != null && b.blockGravity && moveGravityBlocks))
        {
            if (liquidTransportCooldown <= 0)
            {
                liquidTransportCooldown = 1 / liquidTransportRate;
                b.transform.position   += transform.right;
            }
        }
    }
    public void PickupItem(DroppedItem other)
    {
        CheckCurrentBaseWeapon();
        Debug.Log("Picked up " + other.name);
        if (parts[other.itemID].isBaseWeapon && hasBaseWeapon)
        {
            foreach (Item i in parts)
            {
                if (i.isEnabled)
                {
                    i.DropWeapon();
                }
            }
        }


        if (parts[other.itemID].isEnabled) // if the player already has the item
        {
            other.DestroyItem();
        }
        else
        {
            parts[other.itemID].isEnabled = true;
            parts[other.itemID].GetComponent <SpriteRenderer>().enabled = true;
            other.DestroyItem();
        }


        RenderItems();
    }
Ejemplo n.º 8
0
    /*
     * Performs the items functionality for pickups on the player. Does not handle removing the item from the world
     */
    public void PickUpItem(DroppedItem item)
    {
        switch (item.dropType)
        {
        case DroppedItem.EDropType.Points:
            points += POINTS_COIN;
            if (player_ui != null)
            {
                player_ui.AddKickerNumber(transform, POINTS_COIN);
            }
            break;

        case DroppedItem.EDropType.Life:
            timesHit = Mathf.Max(0, timesHit - 1);
            break;

        case DroppedItem.EDropType.Speed:
            AddEffector(new Effector_Speed(), 5.0f);
            break;

        case DroppedItem.EDropType.AttackRadius:
            // TODO:
            break;
        }

        PlaySound(item.pickupSoundClip, 1.0f, 1.0f);
        gameMode.OnItemPickup(item);
    }
Ejemplo n.º 9
0
    public virtual void PickupItem(GameObject itemObject)
    {
        DroppedItem itemComponent = itemObject.GetComponent <DroppedItem>();

        inventory.AddItem(itemComponent.item, 1);
        Destroy(itemObject);
    }
Ejemplo n.º 10
0
        private IEnumerator CreateAndPopulateSpears()
        {
            for (int i = 0; i < storedData.spearData.Count; i++)
            {
                StoredData.SpearData spearData = storedData.spearData[i];

                BaseEntity spear = CreateWorldObject(spearData.itemId, string.Empty, spearData.Position, true);
                spear.GetComponent <Rigidbody>().isKinematic = true;
                spear.transform.rotation = Quaternion.Euler(spearData.Rotation);

                List <DroppedItem> skulls = Pool.GetList <DroppedItem>();

                for (int y = 0; y < spearData.trophyData.Count; y++)
                {
                    StoredData.TrophyData data = spearData.trophyData[y];

                    DroppedItem skullItem = CreateSkullItem(data.displayName, spear, data.Position, data.Rotation);

                    skulls.Add(skullItem);
                }

                spearRegisteredSkulls.Add(spear as DroppedItem, skulls);

                yield return(new WaitForSeconds(UnityEngine.Random.Range(0.1f, 0.2f)));
            }
        }
    public void DropItem()
    {
        if (inventory.selectedItem == null)
        {
            return;
        }

        GameObject mesh = inventory.selectedItem.Mesh;

        if (mesh != null)
        {
            GameObject spawnedMesh = Instantiate(mesh, null);
            spawnedMesh.transform.position = dropPoint.position;
            DroppedItem droppedItem = mesh.GetComponent <DroppedItem>();

            if (droppedItem == null)
            {
                droppedItem = spawnedMesh.AddComponent <DroppedItem>();
            }

            if (droppedItem != null)
            {
                droppedItem.item = new Item(inventory.selectedItem, 1);
            }
        }

        inventory.selectedItem.Amount--;
        if (inventory.selectedItem.Amount <= 0)
        {
            inventory.RemoveItem(inventory.selectedItem);
            inventory.selectedItem = null;
        }
    }
Ejemplo n.º 12
0
    public void DropItem()
    {
        if (inventory.selectedItem == null)
        {
            return;
        }

        //spawn item and drop it
        GameObject mesh = inventory.selectedItem.Mesh;

        if (mesh != null)
        {
            GameObject spawnedMesh = Instantiate(mesh, null);

            spawnedMesh.transform.position = dropPoint.position;

            DroppedItem droppedItem = mesh.GetComponent <DroppedItem>();
            droppedItem.item = new Item(inventory.selectedItem, 1);
        }

        // remove from inventory if none left
        inventory.selectedItem.Amount--;
        if (inventory.selectedItem.Amount <= 0)
        {
            //inventory.inventory.Remove(inventory.selectedItem);
            inventory.RemoveItemFromInventory(inventory.selectedItem);
            inventory.selectedItem = null;
        }
    }
Ejemplo n.º 13
0
    public void DropOrUpdateItem(Items.ID Type, Vector3 Position, float Rotation, Vector3 BaseMomentum, string Name)     //Performs the actual drop
    {
        if (EntitiesRoot.HasNode(Name))
        {
            DroppedItem Instance = EntitiesRoot.GetNode <DroppedItem>(Name);
            Instance.Translation     = Position;
            Instance.RotationDegrees = new Vector3(0, Rotation, 0);
            Instance.Momentum        = BaseMomentum;
            Instance.PhysicsEnabled  = true;
        }
        else
        {
            Game.PossessedPlayer.MatchSome(
                (Plr) =>
            {
                var PositionChunk = GetChunkTuple(Position);
                if (ChunkWithinDistanceFrom(PositionChunk, Game.ChunkRenderDistance, Plr.Translation))
                {
                    var ToDrop             = (DroppedItem)DroppedItemScene.Instance();
                    ToDrop.Translation     = Position;
                    ToDrop.RotationDegrees = new Vector3(0, Rotation, 0);
                    ToDrop.Momentum        = BaseMomentum;
                    ToDrop.Type            = Type;
                    ToDrop.Name            = Name;
                    ToDrop.GetNode <MeshInstance>("MeshInstance").Mesh = Items.Meshes[Type];

                    AddItemToChunk(ToDrop);
                    ItemList.Add(ToDrop);
                    EntitiesRoot.AddChild(ToDrop);
                }
            }
                );
        }
    }
Ejemplo n.º 14
0
    public void DropItem(Item itemToDrop)
    {
        GameObject dropObj = world.SpawnObject("P_DroppedItem", transform.position);

        if (dropObj == null || itemToDrop == null)
        {
            return;
        }

        DroppedItem itemContainer = dropObj.GetComponent <DroppedItem>();

        if (itemContainer == null)
        {
            return;
        }

        if (itemToDrop.GetType() == typeof(CraftingItem))
        {
            itemContainer.DropCraftingItem(this, (CraftingItem)itemToDrop);
        }
        else
        {
            itemContainer.Drop(this, itemToDrop.GetType());
        }
    }
Ejemplo n.º 15
0
    private void ClearSceneRoom04()
    {
        DroppedItem tubeDroppedItem = FindObjectOfType <DroppedItem>();

        if (tubeDroppedItem)
        {
            tubeDroppedItem.Interact(null);
            Inventory.RemoveItem(tubeDroppedItem.Item);
        }

        DeliveryTube deliveryTube = FindObjectOfType <DeliveryTube>();

        if (deliveryTube)
        {
            deliveryTube.Interact(deliveryTube.ItemNeeded);
            Inventory.RemoveItem(deliveryTube.ItemNeeded);
        }

        if (deliveryTubeReceived)
        {
            deliveryTubeReceived.HasCollided = true;
        }

        if (Room05TubePopupGameObject)
        {
            Room05TubePopupGameObject.SetActive(true);
        }
    }
Ejemplo n.º 16
0
    public DroppedItem GetCloseItem()
    {
        if (_DroppedItems.Count == 0)
        {
            return(null);
        }

        Vector2 pos = transform.position;

        float       closeLength = float.MaxValue;
        DroppedItem cloes       = null;

        for (var i = _DroppedItems.First; i != null;)
        {
            if (!i.Value.gameObject.activeSelf)
            {
                var next = i.Next;
                _DroppedItems.Remove(i);
                i = next;
                continue;
            }
            float length = Vector2.Distance(i.Value.transform.position, pos);

            if (length < closeLength)
            {
                closeLength = length;
                cloes       = i.Value;
            }
            i = i.Next;
        }
        return(cloes);
    }
Ejemplo n.º 17
0
        /// <inheritdoc />
        public void HandleCommand(Player player, string command)
        {
            using var logScope = player.Logger.BeginScope(this.GetType());
            if (player.CurrentMap is not {
            } currentMap)
            {
                return;
            }

            var dropCoordinates = currentMap.Terrain.GetRandomCoordinate(player.Position, 1);

            try
            {
                var arguments   = command.ParseArguments <Arguments>();
                var item        = CreateItem(player, arguments);
                var droppedItem = new DroppedItem(item, dropCoordinates, currentMap, player);
                currentMap.Add(droppedItem);
                player.ShowMessage($"[GM][/item] {item} created");
            }
            catch (ArgumentException ex)
            {
                player.ShowMessage(ex.Message);
            }
            catch (Exception ex)
            {
                player.Logger.LogError(ex, "Unexpected error handling the chat command '{command}'.", command);
            }
        }
Ejemplo n.º 18
0
 void CanCombineDroppedItem(DroppedItem item1, DroppedItem item2)
 {
     NextFrame(() =>
     {
         SetDespawnTime(item1);
     });
 }
Ejemplo n.º 19
0
    public void RequestDroppedItem(int Id, string Guid)
    {
        if (Self.GetTree().GetNetworkPeer() != null)
        {
            if (Self.GetTree().IsNetworkServer())
            {
                //On server
                DroppedItem Item = EntitiesRoot.GetNodeOrNull(Guid) as DroppedItem;
                if (Item != null)                //Only lookup node once instead of using HasNode
                {
                    if (Id == Net.Work.GetNetworkUniqueId())
                    {
                        Game.PossessedPlayer.PickupItem(Item.Type);
                    }
                    else
                    {
                        Net.Players[Id].RpcId(Id, nameof(Player.PickupItem), Item.Type);
                    }

                    Net.SteelRpc(this, nameof(RemoveDroppedItem), Item.GetName());
                    RemoveDroppedItem(Item.GetName());
                }
            }
            else
            {
                //Not on server, call on server
                Self.RpcId(Net.ServerId, nameof(RequestDroppedItem), Id, Guid);
            }
        }
    }
Ejemplo n.º 20
0
    public static void Clear()
    {
        List <Tile> Branches = new List <Tile>();

        foreach (KeyValuePair <Tuple <int, int>, ChunkClass> Chunk in Chunks)
        {
            foreach (Tile Branch in Chunk.Value.Tiles)
            {
                Branches.Add(Branch);
            }
        }
        foreach (Tile Branch in Branches)
        {
            Branch.Remove(Force: true);
        }

        DroppedItem[] RemovingItems = new DroppedItem[ItemList.Count];
        ItemList.CopyTo(RemovingItems);
        foreach (DroppedItem Item in RemovingItems)
        {
            Item.Remove();
        }

        Chunks.Clear();
        Grid.Clear();

        foreach (KeyValuePair <int, List <Tuple <int, int> > > Pair in RemoteLoadedChunks)
        {
            RemoteLoadedChunks[Pair.Key].Clear();
        }
    }
Ejemplo n.º 21
0
    protected virtual DroppedItem SpawnDroppedItem(Vector2 pos)
    {
        DroppedItem droppedItem = Instantiate(DroppedItemPrefab, pos, Quaternion.identity).GetComponent <DroppedItem>();

        droppedItem.SetRef_Item(this);
        return(droppedItem);
    }
Ejemplo n.º 22
0
    public void DropOrUpdateItem(Items.ID Type, Vector3 Position, float Rotation, Vector3 BaseMomentum, string Name)     //Performs the actual drop
    {
        if (EntitiesRoot.HasNode(Name))
        {
            DroppedItem Instance = EntitiesRoot.GetNode <DroppedItem>(Name);
            Instance.Translation     = Position;
            Instance.RotationDegrees = new Vector3(0, Rotation, 0);
            Instance.Momentum        = BaseMomentum;
            Instance.PhysicsEnabled  = true;
        }
        else
        {
            Vector3 LevelPlayerPos = new Vector3(Game.PossessedPlayer.Translation.x, 0, Game.PossessedPlayer.Translation.z);

            if (GetChunkPos(Position).DistanceTo(LevelPlayerPos) <= Game.ChunkRenderDistance * (PlatformSize * 9))
            {
                var ToDrop = (DroppedItem)DroppedItemScene.Instance();
                ToDrop.Translation     = Position;
                ToDrop.RotationDegrees = new Vector3(0, Rotation, 0);
                ToDrop.Momentum        = BaseMomentum;
                ToDrop.Type            = Type;
                ToDrop.Name            = Name;
                ToDrop.GetNode <MeshInstance>("MeshInstance").Mesh = Items.Meshes[Type];

                AddItemToChunk(ToDrop);
                ItemList.Add(ToDrop);
                EntitiesRoot.AddChild(ToDrop);
            }
        }
    }
Ejemplo n.º 23
0
    private void UpdateVoxel(int x, int y, int z)
    {
        if (CurrentVoxels[x, y, z] != VoxelIndex[x, y, z])
        {
            if (GetVoxel(x, y, z))
            {
                GameObject  oldVoxel          = GetVoxel(x, y, z);
                GameObject  droppedItem       = Instantiate(DroppedItemContainerPrefab, oldVoxel.transform.position, Quaternion.identity);
                DroppedItem droppedItemScript = droppedItem.GetComponent <DroppedItem>();
                droppedItemScript.DroppedItemPrefab = VoxelPrefabs[(int)CurrentVoxels[x, y, z] - 1];
                droppedItemScript.BlockType         = CurrentVoxels[x, y, z];

                Destroy(oldVoxel);
            }

            if (VoxelIndex[x, y, z] == BlockTypes.BLOCK_AIR)
            {
                VoxelInstances[x, y, z] = null;
                CurrentVoxels[x, y, z]  = BlockTypes.BLOCK_AIR;
            }
            else
            {
                VoxelInstances[x, y, z] = CreateVoxel(x, y, z, VoxelIndex[x, y, z]);
                CurrentVoxels[x, y, z]  = VoxelIndex[x, y, z];
                UpdateVoxelFaces(x, y, z);
            }

            if (!IsInitialising)
            {
                UpdateSurroundingVoxelFaces(x, y, z);
            }
        }
    }
Ejemplo n.º 24
0
    void OnCollisionEnter2D(Collision2D col)
    {
        if (col.gameObject.tag != "Player")
        {
            return;
        }

        InventoryController invControl = InventoryController.Instance;

        DroppedItem i = this.GetComponent <DroppedItem>();

        Debug.Log(invControl);

        int numleft = invControl.AutoStackItem(i.Item, i.Qauntity);

        if (numleft == 0)
        {
            //Destroy the collided object
            Destroy(gameObject);
        }
        else
        {
            i.Qauntity = numleft;
        }
    }
Ejemplo n.º 25
0
        public static void RemoveDroppedItem(DroppedItem item)
        {
            int randomId = item.Instance.RandomId;

            Database.RemoveDroppedItem(randomId);
            droppedItemsList.Remove(item);
        }
Ejemplo n.º 26
0
    public void OnDroppedOn(DroppedItem di)
    {
        if (item == null || di.item == null || Interface.CallHook("CanCombineDroppedItem", this, di) != null || item.info.stackable <= 1 || di.item.info != item.info || (di.item.IsBlueprint() && di.item.blueprintTarget != item.blueprintTarget) || (di.item.hasCondition && di.item.condition != di.item.maxCondition) || (item.hasCondition && item.condition != item.maxCondition))
        {
            return;
        }
        if (di.item.info != null && di.item.info.amountType == ItemDefinition.AmountType.Genetics)
        {
            int num  = ((di.item.instanceData != null) ? di.item.instanceData.dataInt : (-1));
            int num2 = ((item.instanceData != null) ? item.instanceData.dataInt : (-1));
            if (num != num2)
            {
                return;
            }
        }
        int num3 = di.item.amount + item.amount;

        if (num3 <= item.info.stackable && num3 != 0)
        {
            di.DestroyItem();
            di.Kill();
            item.amount = num3;
            item.MarkDirty();
            if (GetDespawnDuration() < float.PositiveInfinity)
            {
                Invoke(IdleDestroy, GetDespawnDuration());
            }
            Effect.server.Run("assets/bundled/prefabs/fx/notice/stack.world.fx.prefab", this, 0u, Vector3.zero, Vector3.zero);
        }
    }
Ejemplo n.º 27
0
    public void SendSyncDropWeaponRequest(DroppedWeapon droppedWeapon, Vector3 pos)
    {
        print(PureXmlTool.Serializer <BaseWeapon>(droppedWeapon.bw));
        DroppedItem d = new DroppedItem();

        d.UniqueName            = droppedWeapon.uniqueName;
        d.Bw.BackBulletQuantity = droppedWeapon.bw.BackBulletQuantity;
        d.Bw.CurBulletQuantity  = droppedWeapon.bw.CurBulletQuantity;
        d.Bw.IsHaveSpecial      = droppedWeapon.bw.IsHaveSpecial;
        d.Bw.MaxBulletQuantity  = droppedWeapon.bw.MaxBulletQuantity;
        d.Bw.Price       = droppedWeapon.bw.Price;
        d.Bw.WeaponClass = droppedWeapon.bw.WeaponClass;
        d.Bw.WeaponName  = droppedWeapon.bw.WeaponName;
        d.Trans.PosX     = pos.x;
        d.Trans.PosY     = pos.y;
        d.Trans.PosZ     = pos.z;
        string           droppedItemXml = PureXmlTool.Serializer <DroppedItem>(d);
        OperationRequest opRequest      = new OperationRequest()
        {
            Parameters = new Dictionary <byte, object>(), OperationCode = (byte)OperationCode.SyncDropWeapon
        };

        opRequest.Parameters.Add(opRequest.OperationCode, droppedItemXml);
        syncDropWeaponRequest.OnOperationRequest(opRequest);
    }
Ejemplo n.º 28
0
    public void FindItems()
    {
        //var playerEq = GameManager.Instance.SavablePlayerData.PlayerProgress.Equipment;

        hitCount = Physics2D.CircleCast(Squad.playerSquadInstance.CenterSquad, radiusToFind, Vector2.zero, rHitFilter, rhits);

        inventory.Clear();

        for (int i = 0; i < hitCount; i++)
        {
            DroppedItem di = rhits[i].transform.GetComponent <DroppedItem>();
            FillInventory(di.Stack);
        }

        inventory.RemoveAll((st) => { return(st.Count <= 0); });
        inventory.Sort((a, b) => { return(a.EquipmentStats.Type.CompareTo(b.EquipmentStats.Type)); });
        //foreach (var i in inventory)открытие новых предметов теперь не когда увидел, а то что вынес с уровня.
        //{
        //    //"открываем" увиденную экипировку - но тлько в временное хранилище
        //    if (!playerEq.IsThisEquipmantAllowed(i.EquipmentStats) && !playerEq.IsThisEquipmantInTempValues(i.EquipmentStats))
        //    {
        //        playerEq.AddTempValue(i.EquipmentStats);
        //        AllowedEquipmantPanel.MainInstance.AddEq(i);
        //    }
        //}
    }
Ejemplo n.º 29
0
    public void PickUpEquipment(EquipmentStack stack)
    {
        int q = 0;

        for (int i = 0; i < hitCount; i++)
        {
            DroppedItem di = rhits[i].transform.GetComponent <DroppedItem>();

            if (di.Stack.EquipmentStats.Type == stack.EquipmentStats.Type &&
                di.Stack.EquipmentStats.Id == stack.EquipmentStats.Id &&
                di.Stack.EquipmentStats.ItemDurability == stack.EquipmentStats.ItemDurability)
            {
                q += di.Stack.Count;

                if (q > stack.Count)
                {
                    di.Stack.PopItems(di.Stack.Count - (q - stack.Count));
                    q = stack.Count;
                }
                else
                {
                    Destroy(di.gameObject);
                }
            }

            if (q == stack.Count)
            {
                break;
            }
        }
    }
Ejemplo n.º 30
0
        private void DropItem(Player player, Item item, byte x, byte y)
        {
            var droppedItem = new DroppedItem(item, x, y, player.CurrentMap, player);

            player.CurrentMap.Add(droppedItem);
            player.Inventory.RemoveItem(item);
            player.PlayerView.InventoryView.ItemDropResult(item.ItemSlot, true);
        }
Ejemplo n.º 31
0
    // Called by DroppedItem when this pawn is in range of it: Pawn maintains a list of all items in range
    public void DropIsNearby(DroppedItem drop)
    {
        if(!bCanPickupItems) {
            return;
        }

        if(!nearbyDrops.Contains(drop)) {
            nearbyDrops.Add(drop);
        }
    }
Ejemplo n.º 32
0
    // Called by DroppedItem when this pawn leaves its range
    public void DopIsOutOfRange(DroppedItem drop)
    {
        if(!bCanPickupItems) {
            return;
        }

        if(nearbyDrops.Contains(drop)) {
            nearbyDrops.Remove(drop);
        }
    }
Ejemplo n.º 33
0
    /*
     * Performs the items functionality for pickups on the player. Does not handle removing the item from the world
     */ 
    public void PickUpItem(DroppedItem item) {
        switch(item.dropType) {
            case DroppedItem.EDropType.Points:
                points += POINTS_COIN;
                if(player_ui != null) {
                    player_ui.AddKickerNumber(transform, POINTS_COIN);
                }
                break;
            case DroppedItem.EDropType.Life:
                timesHit = Mathf.Max(0, timesHit - 1);
                break;
            case DroppedItem.EDropType.Speed:
                AddEffector(new Effector_Speed(), 5.0f);
                break;
            case DroppedItem.EDropType.AttackRadius:
                // TODO:
                break;
        }

        PlaySound(item.pickupSoundClip, 1.0f, 1.0f);
        gameMode.OnItemPickup(item);
    }
Ejemplo n.º 34
0
 /*
  * Called by player when they pickup an item to notify the game mode
  */
 public void OnItemPickup(DroppedItem item)
 {
     droppedItems.Remove(item.gameObject);
 }