示例#1
0
    public void setSoulStarState(string cardUid, int hole, string starsoulUid)
    {
        StorageManagerment smanager = StorageManagerment.Instance;
        Card card = smanager.getRole(cardUid);

        if (card != null)
        {
            // 设置被替换的星魂状态为未装备(如果是直接穿装备则不执行)
            StarSoulBore oldStarSoulBore = card.getStarSoulBoreByIndex(hole);
            if (oldStarSoulBore != null)
            {
                StarSoul oldStarSoul = smanager.getStarSoul(oldStarSoulBore.getUid());
                if (oldStarSoul != null)
                {
                    oldStarSoul.unState(EquipStateType.OCCUPY);
                    oldStarSoul.isNew = false;
                }
            }
            // 设置被穿的星魂状态为装备
            StarSoul starSoul = smanager.getStarSoul(starsoulUid);
            if (starSoul != null)
            {
                starSoul.setState(EquipStateType.OCCUPY);
                starSoul.isNew = false;
            }
            card.addStarSoulBore(starsoulUid, hole);
            activeCard = card;
        }
        StorageManagerment.Instance.starSoulStorageVersion++;
    }
示例#2
0
    /// <summary>
    /// 获取星魂槽上所有的星魂
    /// </summary>
    public StarSoul[] getStarSoulByAll()
    {
        if (bores == null || bores.Count == 0)
        {
            return(null);
        }
        List <StarSoul>    temList = new List <StarSoul>();
        StarSoul           starSoul;
        StorageManagerment manager = StorageManagerment.Instance;
        StarSoulBore       starSoulBore;

        for (int i = 0; i < bores.Count; i++)
        {
            starSoulBore = (StarSoulBore)bores[i];
            if (starSoulBore.getSid() != 0)
            {
                starSoul = new StarSoul("0", starSoulBore.getSid(), starSoulBore.getExp(), 0);
            }
            else
            {
                starSoul = manager.getStarSoul(starSoulBore.getUid());
            }

            if (starSoul == null)
            {
                continue;
            }
            temList.Add(starSoul);
        }

        return(temList.ToArray());
    }
示例#3
0
    /// <summary>
    /// 移除卡片星魂槽的星魂
    /// <param name="index">星魂槽位置</param>
    /// </summary>
    public bool delStarSoulBoreByIndex(int index)
    {
        if (bores == null)
        {
            return(false);
        }
        StorageManagerment smanager = StorageManagerment.Instance;
        StarSoulBore       starSoulBore;

        for (int i = 0; i < bores.Count; i++)
        {
            starSoulBore = (StarSoulBore)bores[i];
            if (starSoulBore.checkStarSoulBoreByIndex(index))
            {
                StarSoul starSoul = smanager.getStarSoul(starSoulBore.getUid());
                if (starSoul != null)
                {
                    starSoul.unState(EquipStateType.OCCUPY);
                    starSoul.isNew = false;
                }
                bores.RemoveAt(i);
                return(true);
            }
        }
        return(false);
    }
示例#4
0
    /// <summary>
    /// 获取临时锁定状态字典的字符串数据
    /// </summary>
    public string getLockStateString()
    {
        StringBuilder      sb = new StringBuilder();
        string             sign;
        StorageManagerment smanager = StorageManagerment.Instance;
        StarSoul           starSoul;

        foreach (string key in lockStateDic.Keys)
        {
            starSoul = smanager.getStarSoul(key);
            if (starSoul == null)
            {
                continue;
            }
            bool isLock = lockStateDic [key];
            if (isLock && starSoul.checkState(EquipStateType.LOCKED))          // 选择锁定,本身也是锁定状态不发送
            {
                continue;
            }
            if (!isLock && !starSoul.checkState(EquipStateType.LOCKED))          // 非选择锁定,本身也是非锁定状态不发送
            {
                continue;
            }
            sb.Append(key + "," + (isLock?1:0) + ":");
        }
        string str = sb.ToString();

        if (sb.Length > 0)
        {
            str = str.Substring(0, sb.Length - 1);
        }
        return(str);
    }
    /// <summary>
    /// 强化星魂通讯读取处理
    /// </summary>
    /// <param name="message">Message.</param>
    private void doStrengStarSoul(ErlKVMessage message)
    {
        ErlType erlType = message.getValue("value") as ErlType;

        if (erlType is ErlArray)
        {
            ErlArray           arr      = erlType as ErlArray;
            int                index    = 0;
            string             uid      = arr.Value [index++].getValueString();
            long               exp      = StringKit.toLong(arr.Value [index++].getValueString());
            StorageManagerment smanager = StorageManagerment.Instance;
            StarSoulManager    manager  = StarSoulManager.Instance;
            StarSoul           starSoul = smanager.getStarSoul(uid);
            if (starSoul != null)
            {
                manager.delStarSoulExp(exp);
                starSoul.updateExp(starSoul.getEXP() + exp);
                starSoul.isNew = false;
            }
            StorageManagerment.Instance.starSoulStorageVersion++;
            if (callback != null)
            {
                callback();
                callback = null;
            }
        }
        else
        {
            UiManager.Instance.openDialogWindow <MessageWindow> ((win) => {
                win.initWindow(1, LanguageConfigManager.Instance.getLanguage("s0093"), null, erlType.getValueString(), null);
            });
        }
    }
    public void starSoulIndefity()
    {
        StorageManagerment smanager = StorageManagerment.Instance;
        StarSoulManager    manager  = StarSoulManager.Instance;
        StarSoul           starSoul = smanager.getStarSoul(indetify_uid);

        if (starSoul != null)
        {
            manager.delStarSoulExp(exp);
            starSoul.updateExp(starSoul.getEXP());
            starSoul.isNew = false;
        }
        StorageManagerment.Instance.starSoulStorageVersion++;
        init(starSoul);
    }
示例#7
0
    /// <summary>
    /// 移除卡片星魂槽的星魂
    /// <param name="index">星魂槽位置</param>
    /// </summary>
    public void delStarSoulBoreByAll()
    {
        if (bores == null || bores.Count < 1)
        {
            return;
        }
        StorageManagerment smanager = StorageManagerment.Instance;
        StarSoulBore       starSoulBore;

        for (int i = 0; i < bores.Count; i++)
        {
            starSoulBore = (StarSoulBore)bores[i];
            StarSoul starSoul = smanager.getStarSoul(starSoulBore.getUid());
            if (starSoul != null)
            {
                starSoul.unState(EquipStateType.OCCUPY);
                starSoul.isNew = false;
            }
            bores.RemoveAt(i--);
        }
    }
示例#8
0
    /// <summary>
    /// 更新星魂锁状态
    /// </summary>
    public void updateStarSoulLockState()
    {
        StorageManagerment smanager = StorageManagerment.Instance;
        StarSoul           starSoul;

        foreach (string key in lockStateDic.Keys)
        {
            starSoul = smanager.getStarSoul(key);
            if (starSoul == null)
            {
                continue;
            }
            bool isLock = lockStateDic [key];
            if (isLock)              // 加锁
            {
                starSoul.setState(EquipStateType.LOCKED);
            }
            else                 // 解锁
            {
                starSoul.unState(EquipStateType.LOCKED);
            }
            starSoul.isNew = false;
        }
    }
示例#9
0
    /// <summary>
    /// 校验临时转换经验字典列表中是否存在指定state的星魂
    /// </summary>
    /// <param name="state">状态</param>
    public bool isStarSoulStateByChangeDic(int state)
    {
        StarSoul           starSoul;
        StorageManagerment manager = StorageManagerment.Instance;

        foreach (string key in changeExpStateDic.Keys)
        {
            bool isLock = changeExpStateDic [key];
            if (!isLock)
            {
                continue;
            }
            starSoul = manager.getStarSoul(key);
            if (starSoul == null)
            {
                continue;
            }
            if (starSoul.checkState(state))
            {
                return(true);
            }
        }
        return(false);
    }
//	/// <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);
            });
        }
    }