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++; }
/// <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()); }
/// <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); }
/// <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); }
/// <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--); } }
/// <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; } }
/// <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); }); } }