from core.models import Collection
from core.models import Item
from django.db import models
from django.utils.translation import ugettext as _


class Set(Collection):
    """
    Common name used to describe a set of characters, objects or vehicles
    """

    def __str__(self):
        return '%s' % self.name

    class Meta:
        ordering = ('name', )
        verbose_name = _('set')
        verbose_name_plural = _('sets')


# Redefine help_text (for documentation, API, etc.)
Set._meta.get_field('name').help_text = _('Usual name of figurines set.')


class Figurine(Item):
    """
    A character, a gadget, a vehicle or a world used on a Game to use specific
    levels, abilities, etc.
    """
    # class config
    TARGET_MODEL = 'figurines.Set'
    TARGET_VERBOSE_NAME = _('set')
    RELATED_TARGET_NAME = 'figurines'

    # No more status choices than "CREATED"

    # Figurines can be Character, vehicle, world or gadget (weapon)
    CHARACTER = 'character'
    VEHICLE = 'vehicle'
    WORLD = 'world'
    GADGET = 'gadget'
    BATTLE = 'battle'
    EXPANSION = 'expansion'
    TROPHY = 'trophy'
    TRAP = 'trap'
    KIND_CHOICES = (
        (CHARACTER, _('Character')),
        (VEHICLE, _('Vehicle')),
        (WORLD, _('Level pack')),
        (GADGET, _('Gadget')),
        (BATTLE, _('Battle pack')),
        (EXPANSION, _('Expansion pack')),
        (TROPHY, _('Trophy')),
        (TRAP, _('Trap')), )
    kind = models.CharField(
        max_length=30,
        choices=KIND_CHOICES,
        default=CHARACTER,
        verbose_name=_('kind'))

    wish = models.BooleanField(
        default=False,
        verbose_name=_('wish?'),
        help_text=_('You need this figurine.'))

    # How money does your figurine have?
    coins = models.PositiveIntegerField(
        default=0, null=True, blank=True, verbose_name=_('coins'))

    class Meta:
        ordering = ('name', )


# Redefine help_text (for documentation, API, etc.)
Figurine._meta.get_field('name').help_text = _('Figurine denomination')
Figurine._meta.get_field('collection').help_text = _('Becoming set')
Figurine._meta.get_field('status').help_text = _('Figurine progression')
