/**
 * 天赋的相关对象。
 * @create   2004-09-29 source0
 * @author   source0 source0@hotmail.com
 * @copyright 版权所有（C） 2004  source0
 *                这一程序是自由软件，你可以遵照自由软件基金会出版的GNU通用
 *            公共许可证条款来修改和重新发布这一程序。或者用许可证的第二版，
 *            或者（根据你的选择）用任何更新的版本。
 *                发布这一程序的目的是希望它有用，但没有任何担保。甚至没有
 *            适合特定目的的隐含的担保。更详细的情况请参阅GNU通用公共许可证。
 *                你应该已经和程序一起收到一份GNU通用公共许可证的副本。如果
 *            还没有，写信给：
 *                The Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
 *                MA02139, USA
 */

/* 技能所消耗的资源类型：法力、怒气、能量。 */
var CONSUME_TYPE_MANA = "MANA";
var CONSUME_TYPE_RAGE = "RAGE";
var CONSUME_TYPE_ENERGY = "ENERGY";

var CONSUME_TYPE_NAME_MANA = new CString("法力", "zh_CN");
CONSUME_TYPE_NAME_MANA.add("Mana", "en_US");

var CONSUME_TYPE_NAME_RAGE = new CString("怒气", "zh_CN");
CONSUME_TYPE_NAME_RAGE.add("Rage", "en_US");

var CONSUME_TYPE_NAME_ENERGY = new CString("能量", "zh_CN");
CONSUME_TYPE_NAME_RAGE.add("Energy", "en_US");

/** 天赋类型：强化、技能。*/
var TALENT_TYPE_IMPROVE = "IMPROVE";
var TALENT_TYPE_SKILL = "SKILL";

/** 天赋的最大级别。 */
var MAX_TALENT_RANK = 5;

/** 天赋的最大层次。 */
var MAX_TIER = 7;

/** 显示时的最大列。 */
var MAX_COLUMN = 4;

/**
 * 根据技能消耗的类型得到其名称。
 * @param type 类型。
 * @return 该类型所对应的名称。
 */
function getConsumeTypeName(type){
    if ( CONSUME_TYPE_MANA == type ){
        return CONSUME_TYPE_NAME_MANA;
    } else if ( CONSUME_TYPE_RAGE == type ){
        return CONSUME_TYPE_NAME_RAGE;
    } else {
        return CONSUME_TYPE_NAME_ENERGY;
    }
}

/**
 * 通过天赋系视图的名字取得其实例。
 * @param name 天赋系视图的名字。
 * @return 如果找到，返回其实例，否则返回null。
 */
function getTalentClassViewByName(name){
    for(var i = 0; i < TALENT_CLASS_VIEWS.length; i++) {
        if ( TALENT_CLASS_VIEWS[i].model.name == name ){
            return TALENT_CLASS_VIEWS[i];
        }
    }
    return null;
}
/**
 * 通过天赋视图取得天赋系视图实例。
 * @param tv 天赋视图实例。
 * @return 如果找到，返回指定的天赋视图实例所对应的天赋系视图实例，否则返回null。
 * @create 2004-10-05 source0
 */
function getTalentClassViewByTalentView(tv){
    for ( var i = 0; i < TALENT_CLASS_VIEWS.length; i++ ){
        if ( TALENT_CLASS_VIEWS[i].model.getTalentView(tv.model.id) ){
            return TALENT_CLASS_VIEWS[i];
        }
    }
    return null;
}
/**
 * 根据天赋的ID取得其视图的实例。
 * @param id 天赋的ID。
 * @return 如果找到指定天赋ID对应的天赋视图，返回视图实例，否则返回 null 。
 */
function getTalentViewById(id){
    for(var i = 0; i < TALENT_CLASS_VIEWS.length; i++) {
        if ( TALENT_CLASS_VIEWS[i].model.getTalentView(id) ){
            return TALENT_CLASS_VIEWS[i].model.getTalentView(id);
        }
    }
    return null;
}
/**
 * 得到天赋的天赋视图实例。
 * @param talentAreaId 显示视图的HTML元素的ID。
 * @return 如果指定参数下存在天赋视图实例，返回实例，否则返回 null。
 * @create 2004-10-05 source0
 */
function getTalentViewByAreaId(talentAreaId){
    var tcv = null;
    for(var i = 0; i < TALENT_CLASS_VIEWS.length; i++) {
        if ( TALENT_CLASS_VIEWS[i].getTalentViewByAreaId(talentAreaId) ){
            tcv = TALENT_CLASS_VIEWS[i];
            break;
        }
    }
    if ( null != tcv ){
        return tcv.getTalentViewByAreaId(talentAreaId);
    } else {
        return null;
    }
}
/**
 * 得到格子里的天赋视图实例。
 * @param grid 显示视图的HTML元素的ID。
 * @return 如果指定参数下存在天赋视图实例，返回实例，否则返回 null。
 * @create 2004-10-05 source0
 */
function getTalentViewByGridId(grid){
    var tcv = null;
    for(var i = 0; i < TALENT_CLASS_VIEWS.length; i++) {
        if ( TALENT_CLASS_VIEWS[i].getTalentViewByGridId(grid) ){
            tcv = TALENT_CLASS_VIEWS[i];
            break;
        }
    }
    if ( null != tcv ){
        return tcv.getTalentViewByGridId(grid);
    } else {
        return null;
    }
}
