"""
Marvin inventory module

Exposes functions making marvin able to use his inventory
"""

import json

import filehelper

m_file_name = "inv.data"
m_inventory = None
m_isloaded = False

def load():
    """
    Loads the inventory
    """
    global m_file_name
    global m_inventory
    global m_isloaded

    f = open(m_file_name, "r+")

    if filehelper.isempty(m_file_name):
        m_inventory = {}
        m_inventory["inv"] = []
    else:
        m_inventory = json.load(f)

    f.close()
    save()
    m_isloaded = True

def save():
    """
    Saves the inventory
    """
    global m_file_name
    global m_inventory

    f = open(m_file_name, "w+")

    json.dump(m_inventory, f)

    f.close()

def isloaded():
    """
    Is the inventory loaded
    """
    global m_isloaded

    return m_isloaded

def peek():
    """
    List all items currently in inventory
    """
    global m_inventory

    delim = ", "

    return delim.join(m_inventory["inv"])

def pick(item):
    """
    Add an item to the inventory
    """
    global m_inventory

    length = len(m_inventory["inv"])
    if length < 4:
        m_inventory["inv"].append(item)
        save()
        return True
    return False

def drop(item):
    """
    Remove anitem from the inventory
    """
    global m_inventory

    if item in m_inventory["inv"]:
        m_inventory["inv"].remove(item)
        save()
        return True
    return False

def dropAll():
    """
    Remove all items from the inventory
    """
    global m_inventory

    m_inventory["inv"] = []

    save()
