#!/usr/bin/env python
# encoding: iso-8859-15
#
#Minë. Mundo Interactivo-Narrativo en Español [Tierra-Media]
#Copyright (C) 2002  Pablo Ruiz Múzquiz
#
#
#This program is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 2 of the License, or
#(at your option) any later version.
#
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with this program; if not, write to the Free Software
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#Fichero: profesion.py

"""Clase Profesion."""


class Profesion(object):
    """Información sobre cualquiera de las profesiones que pueden tener los personajes.
    
    Una profesion se caracteriza por:
        - nombre (string): identificador de la profesion
	- modif_atrib ({String: int}): modificadores a los atributos según la profesión

    Invariantes:
      nombre != None
      modif_atrib != None
      len(modif_atrib) == 6
    """

    def __init__(self, nombre, modif_atrib):
 	"""Crea una nueva instancia de Profesion.

	No está permitido instanciar más profesiones aparte de las existentes
	dentro de Profesion_lista.

	Requiere:
	  nombre != None
	  modif_atrib != None
	  len(modif_atrib) == 6
	"""
        self.nombre = nombre
	self.modif_atrib = modif_atrib

    
# Lista de todas las profesiones definidas
lista = [ Profesion("guerrero",
		    {"fuerza": +2,
		     "destreza": +1,
		     "constitucion": +1,
		     "inteligencia": -1,
		     "sabiduria": -2,
		     "carisma": -1}),

	  Profesion("explorador",
		    {"fuerza": -1,
		     "destreza": +1,
		     "constitucion": +1,
		     "inteligencia": +2,
		     "sabiduria": -2,
		     "carisma": -1}),

	  Profesion("montaraz",
		    {"fuerza": -1,
		     "destreza": +1,
		     "constitucion": +1,
		     "inteligencia": +1,
		     "sabiduria": +0,
		     "carisma": -2}),

	  Profesion("bribon",
		    {"fuerza": -1,
		     "destreza": +2,
		     "constitucion": -1,
		     "inteligencia": +1,
		     "sabiduria": -2,
		     "carisma": +1}),

	  Profesion("bardo",
		    {"fuerza": -2,
		     "destreza": +0,
		     "constitucion": -1,
		     "inteligencia": +1,
		     "sabiduria": +0,
		     "carisma": +2}),

	  Profesion("animista",
		    {"fuerza": -2,
		     "destreza": +0,
		     "constitucion": -1,
		     "inteligencia": +1,
		     "sabiduria": +2,
		     "carisma": +0}) ]


def buscar(nombre):
    """Obtiene un profesion a partir de su nombre, o None si no existe.
    
    Requiere:
      nombre != None
    """
    for profesion in lista:
        if profesion.nombre == nombre:
	    return profesion
    return None


# Código para pruebas unitarias del módulo.

if (__name__ == '__main__'):
    profesion = buscar("guerrero")
    print profesion.nombre, profesion.modif_atrib
    profesion = buscar("explorador")
    print profesion.nombre, profesion.modif_atrib
    profesion = buscar("montaraz")
    print profesion.nombre, profesion.modif_atrib
    profesion = buscar("bribon")
    print profesion.nombre, profesion.modif_atrib
    profesion = buscar("bardo")
    print profesion.nombre, profesion.modif_atrib
    profesion = buscar("animista")
    print profesion.nombre, profesion.modif_atrib

