using System;

using RobocraftX.Common.Input;
using RobocraftX.Multiplayer.Input;

using GamecraftModdingAPI.Blocks;
using GamecraftModdingAPI.Utility;
using Harmony;

namespace GamecraftModdingAPI.Inventory
{
    public static class Hotbar
    {
		private static readonly HotbarEngine hotbarEngine = new HotbarEngine();

        /// <summary>
        /// Switch the block in the player's hand
        /// </summary>
        /// <param name="block">The block to switch to.</param>
        /// <param name="playerID">The player. Omit this to use the local player.</param>
		public static void EquipBlock(BlockIDs block, uint playerID = uint.MaxValue)
		{
			if (playerID == uint.MaxValue)
			{
				playerID = hotbarEngine.GetLocalPlayerID();
			}
			hotbarEngine.SelectBlock((int) block, playerID);
            // cubeSelectedByPick = true will crash the game
            // (this would be equivalent to mouse middle click pick block action)
			// reason: the game expects a Dictionary entry for the tweaked stats
		}

        /// <summary>
        /// Gets the block in the player's hand
        /// </summary>
        /// <returns>The equipped block.</returns>
		public static BlockIDs GetEquippedBlock()
		{
			return HotbarSlotSelectionHandlerEnginePatch.EquippedPartID;
		}

		public static void Init()
		{
			GameEngineManager.AddGameEngine(hotbarEngine);
		}
    }
}