/// <summary>
        /// Prepares the Items for Saving and saves the given playerData with the given current position
        /// </summary>
        /// <param name="playerData"></param>
        /// <param name="currentPosition"></param>
        public void SavePlayer(PlayerData playerData, Vector2 currentPosition)
        {
            PlayerTimeData playerTimeData = DisplayTime.instance.GetCurrentPlayerTimeData();
            int            armor          = EquipmentManager.instance.GetCurrentAmor();

            Item[]           toolbarItems     = ToolbarManager.instance.items;
            Item[]           inventoryItems   = Inventory.instance.items;
            List <ArmorItem> currentEquipment = EquipmentManager.instance.currentEquipment;

            ItemForSaveConverter itemForSaveConverter = new ItemForSaveConverter();

            ItemForSave[] toolBarItemsForSave     = PrepareItemsForSave(toolbarItems, itemForSaveConverter);
            ItemForSave[] inventoryItemsForSave   = PrepareItemsForSave(inventoryItems, itemForSaveConverter);
            ItemForSave[] currentEquipmentForSave = PrepareItemsForSave(currentEquipment.ToArray(), itemForSaveConverter);

            float[] position = new float[2];
            position[0] = currentPosition.x;
            position[1] = currentPosition.y;

            playerData.position         = position;
            playerData.armor            = armor;
            playerData.playerTimeData   = playerTimeData;
            playerData.currentEquipment = currentEquipmentForSave;
            playerData.toolbarItems     = toolBarItemsForSave;
            playerData.inventoryItems   = inventoryItemsForSave;

            Save(playerData);
        }
        /// <summary>
        /// Converts items to itemsForSave as preparation for save
        /// </summary>
        /// <param name="items"></param>
        /// <param name="itemForSaveConverter"></param>
        /// <returns></returns>
        private ItemForSave[] PrepareItemsForSave(Item[] items, ItemForSaveConverter itemForSaveConverter)
        {
            int length = items.Length;

            ItemForSave[] result = new ItemForSave[length];

            for (int i = 0; i < length; i++)
            {
                result[i] = itemForSaveConverter.ConvertFromItem(items[i]);
            }

            return(result);
        }
        /// <summary>
        /// Loads the playerData. move the rigidbody and updates the ui elements from time, toolbar, inventory and equipment
        /// </summary>
        /// <param name="rigidbody"></param>
        /// <returns></returns>
        public PlayerData LoadPlayer(Rigidbody2D rigidbody)
        {
            ItemForSaveConverter itemForSaveConverter = new ItemForSaveConverter();

            PlayerData playerData = SaveSystem.LoadPlayer();

            SetPosition(rigidbody, playerData.position);
            SetTimeValue(playerData.playerTimeData);

            LoadToolbarItems(playerData.toolbarItems, itemForSaveConverter);
            LoadInventoryItems(playerData.inventoryItems, itemForSaveConverter);
            LoadCurrentEquipment(playerData.currentEquipment, itemForSaveConverter);

            Debug.Log("Load");

            return(playerData);
        }
        /// <summary>
        /// Load the items into the equipment
        /// </summary>
        /// <param name="items"></param>
        /// <param name="itemForSaveConverter"></param>
        private void LoadCurrentEquipment(ItemForSave[] items, ItemForSaveConverter itemForSaveConverter)
        {
            if (items == null)
            {
                return;
            }

            if (EquipmentManager.instance != null)
            {
                EquipmentManager.instance.currentEquipment.Clear();
                for (int i = 0; i < items.Length; i++)
                {
                    if (items[i] != null)
                    {
                        EquipmentManager.instance.Equip((ArmorItem)itemForSaveConverter.ConvertFromItemForSave(items[i]), true);
                    }
                }
            }
        }
        /// <summary>
        /// Load the items into the inventory
        /// </summary>
        /// <param name="items"></param>
        /// <param name="itemForSaveConverter"></param>
        private void LoadInventoryItems(ItemForSave[] items, ItemForSaveConverter itemForSaveConverter)
        {
            if (items == null)
            {
                return;
            }

            if (Inventory.instance != null)
            {
                Inventory.instance.items = new Item[items.Length];
                for (int i = 0; i < items.Length; i++)
                {
                    if (items[i] != null)
                    {
                        Inventory.instance.Add(itemForSaveConverter.ConvertFromItemForSave(items[i]), i, -1);
                    }
                }
            }
        }