/// <summary>
    /// 回调读取通讯
    /// </summary>
    /// <param name="message">Message.</param>
    public override void read(ErlKVMessage message)
    {
        int     index   = 0;
        ErlType erlType = message.getValue("msg") as ErlType;

        if (erlType is ErlArray)
        {
            ErlArray           arr      = erlType as ErlArray;
            StarSoulManager    manager  = StarSoulManager.Instance;
            StorageManagerment smanager = StorageManagerment.Instance;
            // 转化的经验
            int exchangeExp = StringKit.toInt(arr.Value [index++].getValueString());
            if (exchangeExp > 0)
            {
                StarSoulManager.Instance.addStarSoulExp(exchangeExp);
            }
            StarSoul[] exchangeStarSouls   = null;
            StarSoul[] popStorageStarSouls = null;
            // 转换经验的星魂
            ErlType exchangeStarSoulType = arr.Value [index++];
            if (exchangeStarSoulType is ErlArray)
            {
                ErlArray exchangeStarSoulArr = exchangeStarSoulType as ErlArray;
                if (exchangeStarSoulArr.Value.Length > 0)
                {
                    exchangeStarSouls = new StarSoul[exchangeStarSoulArr.Value.Length];
                    StarSoul starSoul;
                    for (int i = 0; i < exchangeStarSoulArr.Value.Length; i++)
                    {
                        starSoul = smanager.getHuntStarSoul(exchangeStarSoulArr.Value[i].getValueString());
                        if (starSoul == null)
                        {
                            continue;
                        }
                        // 清理猎魂仓库
                        smanager.delHuntStarSoulStorage(starSoul.uid);
                        // 构建显示数据
                        exchangeStarSouls[i] = starSoul;
                    }
                    StorageManagerment.Instance.huntStarSoulStorageVersion++;
                }
            }
            // 放入星魂仓库的星魂
            ErlType popStorageStarSoulType = arr.Value [index++];
            if (popStorageStarSoulType is ErlArray)
            {
                ErlArray popStorageStarSoulArr = popStorageStarSoulType as ErlArray;
                if (popStorageStarSoulArr.Value.Length > 0)
                {
                    popStorageStarSouls = new StarSoul[popStorageStarSoulArr.Value.Length];
                    StarSoul starSoul;
                    for (int i = 0; i < popStorageStarSoulArr.Value.Length; i++)
                    {
                        starSoul = smanager.getHuntStarSoul(popStorageStarSoulArr.Value[i].getValueString());
                        if (starSoul == null)
                        {
                            continue;
                        }
                        // 清理猎魂仓库
                        smanager.delHuntStarSoulStorage(starSoul.uid);
                        // 添加星魂仓库
                        smanager.addStarSoulStorage(starSoul, true);
                        // 构建显示数据
                        popStorageStarSouls[i] = starSoul;
                    }
                    StorageManagerment.Instance.starSoulStorageVersion++;
                    StorageManagerment.Instance.huntStarSoulStorageVersion++;
                }
            }
            if (callback != null)
            {
                callback(exchangeExp, exchangeStarSouls, popStorageStarSouls);
                callback = null;
            }
        }
        else
        {
            UiManager.Instance.openDialogWindow <MessageWindow> ((win) => {
                win.initWindow(1, LanguageConfigManager.Instance.getLanguage("s0093"), null, erlType.getValueString(), null);
            });
        }
    }
//	/// <summary>
//	/// 一键转化经验通讯
//	/// </summary>
//	/// <param name="storageType">仓库类型(star_soul_storage=星魂仓库,star_soul_draw_storage=猎魂仓库)</param>
//	/// <param name="callback">Callback.</param>
//	public void autoExchangeAccess(string storageType,CallBack<int,StarSoul[]> callback) {
//		this.callback = callback;
//		ErlKVMessage message = new ErlKVMessage (FrontPort.STARSOUL_AUTO_CONVERT_EXP);
//		message.addValue ("storage_type", new ErlString (storageType));
//		access (message);
//	}

    /// <summary>
    /// 回调读取通讯
    /// </summary>
    /// <param name="message">Message.</param>
    public override void read(ErlKVMessage message)
    {
        int     index   = 0;
        ErlType erlType = message.getValue("msg") as ErlType;

        if (erlType is ErlArray)
        {
            ErlArray           arr      = erlType as ErlArray;
            StarSoulManager    manager  = StarSoulManager.Instance;
            StorageManagerment smanager = StorageManagerment.Instance;
            // 仓库类型
            string storageType = arr.Value [index++].getValueString();
            // 转化的经验
            int exchangeExp = StringKit.toInt(arr.Value [index++].getValueString());
            if (exchangeExp > 0)
            {
                manager.addStarSoulExp(exchangeExp);
            }
            StarSoul[] exchangeStarSouls          = null;
            StarSoul[] popStorageStarSouls        = null;
            bool       isUpdateStorageVersion     = false;
            bool       isUpdateHuntStorageVersion = false;
            // 转换经验的星魂
            ErlType exchangeStarSoulType = arr.Value [index++];
            if (exchangeStarSoulType is ErlArray)
            {
                ErlArray exchangeStarSoulArr = exchangeStarSoulType as ErlArray;
                if (exchangeStarSoulArr.Value.Length > 0)
                {
                    exchangeStarSouls = new StarSoul[exchangeStarSoulArr.Value.Length];
                    StarSoul starSoul = null;
                    for (int i = 0; i < exchangeStarSoulArr.Value.Length; i++)
                    {
                        if (storageType == "star_soul_storage")                          // 清理星魂仓库
                        {
                            starSoul = smanager.getStarSoul(exchangeStarSoulArr.Value[i].getValueString());
                            if (starSoul == null)
                            {
                                continue;
                            }
                            smanager.delStarSoulStorage(starSoul.uid);
                            isUpdateStorageVersion = true;
                        }
                        else if (storageType == "star_soul_draw_storage")                            // 清理猎魂仓库
                        {
                            starSoul = smanager.getHuntStarSoul(exchangeStarSoulArr.Value[i].getValueString());
                            if (starSoul == null)
                            {
                                continue;
                            }
                            smanager.delHuntStarSoulStorage(starSoul.uid);
                            isUpdateHuntStorageVersion = true;
                        }
                        exchangeStarSouls[i] = starSoul;
                    }
                }
            }
            if (isUpdateStorageVersion)
            {
                StorageManagerment.Instance.starSoulStorageVersion++;
            }
            if (isUpdateHuntStorageVersion)
            {
                StorageManagerment.Instance.huntStarSoulStorageVersion++;
            }
            if (callback != null)
            {
                callback(exchangeExp, exchangeStarSouls);
                callback = null;
            }
        }
        else
        {
            UiManager.Instance.openDialogWindow <MessageWindow> ((win) => {
                win.initWindow(1, LanguageConfigManager.Instance.getLanguage("s0093"), null, erlType.getValueString(), null);
            });
        }
    }