#from __future__ import unicode_literals
# -*- coding: utf-8 -*-

class Inventaire(dict):
    """inventaire des objets portes par une creature ou un joueur"""
    def __init__(self):
        super(Inventaire, self).__init__()

    def ajouter(self, objet, nbre = 1):
        """ajoute un ou plusieurs objets a l'inventaire"""
        if objet in self:
            self[objet] += nbre
        else:
            self.[objet] = nbre

    def retirer(self, objet, nbre = 1):
        """retire le nombre en parametre au nombre de l'objet
            la quantite restante ne peut pas etre negative"""
        if objet in self:
            self[objet] -= nbre
            if self[objet] < 0:
                self[objet] = 0

    def defQuantite(self, objet, nombre):
        """definit la quantite de l'objet"""
        self[objet] = nombre
            
    def utiliser(objet):
        """utilise un objet de l'inventaire"""
        if objet in self:
            if self[objet] > 0:
                objet.utiliser()
                if objet.estConsomme():
                    self[objet].retirer(1)
            
    def poidsTotal(self):
        retour = 0
        for objet in self:
            retour += (self[objet]*objet.poids)
        return retour    

    def trier(self):
        """retourne un dictionnaire de listes,
            le dictionnaire recense les objets par type
            les objets sont tries par ordre alphabétique"""
        retour = {}
        for objet in self:
            if not objet.typeObjet in retour:
                retour[objet.typeObjet] = []
            retour[objet.typeObjet].append((objet, nombre))

        for tO in retour:
            retour[tO].sort()

        return retour    
