/// <summary> /// 初始化符文工厂 /// </summary> private void InitInscriptionPage() { foreach (KeyValuePair <int, InscriptionPageMode> item in PlayerInscriptionPageMessage.InscriptionPageList) { InscriptionPageMode insPM = item.Value; InscriptionPage iPage = new InscriptionPage(); iPage.pageId = insPM._inscriptionPageId; iPage.pageName = insPM._inscriptionPageName; foreach (InscriptionModel inscrModle in insPM._inscriptionModelList) { Inscription insc = InscriptionFactory.Instance.GetInscriptionById(inscrModle._inscriptionID); switch (inscrModle._inscriptionColor) { case InscriptionColor.GREEN: iPage.SetGreenInscription(insc, inscrModle._inscriptionPosId); break; case InscriptionColor.RED: iPage.SetRedInscription(insc, inscrModle._inscriptionPosId); break; case InscriptionColor.BLUE: iPage.SetBlueInsciption(insc, inscrModle._inscriptionPosId); break; } } if (!_inscriptionPageList.ContainsKey(insPM._inscriptionPageId)) { _inscriptionPageList.Add(insPM._inscriptionPageId, iPage); } } }
/// <summary> ///在指定位置添加绿色符文 /// </summary> /// <param name="greenIns"></param> /// <param name="posID"></param> public void SetGreenInscription(Inscription greenIns, int posID) { if (_greenInscription == null) { _greenInscription = new SortedDictionary <int, Inscription>(); } if ((posID > 10 && posID <= 0) || _greenInscription.ContainsKey(posID)) { return; } AddAttribueUpdate(greenIns); _greenInscription.Add(posID, greenIns); }
/// <summary> /// 在指定位置添加蓝色符文 /// </summary> /// <param name="blueIns"></param> /// <param name="posID"></param> public void SetBlueInsciption(Inscription blueIns, int posID) { if (_blueInscriotion == null) { _blueInscriotion = new SortedDictionary <int, Inscription>(); } if ((posID > 10 && posID <= 0) || _blueInscriotion.ContainsKey(posID)) { return; } AddAttribueUpdate(blueIns); _blueInscriotion.Add(posID, blueIns); }
/// <summary> /// 在指定位置添加红色符文 /// </summary> /// <param name="redIns"></param> /// <param name="posID"></param> public void SetRedInscription(Inscription redIns, int posID) { if (_redInsription == null) { _redInsription = new SortedDictionary <int, Inscription>(); } if ((posID > 10 && posID <= 0) || _redInsription.ContainsKey(posID)) { return; } AddAttribueUpdate(redIns); _redInsription.Add(posID, redIns); }
/// <summary> /// 根据符文ID获取指定的符文 /// </summary> /// <param name="id"></param> /// <returns></returns> public Inscription GetInscriptionById(int id) { Inscription ins = new Inscription(); if (_inscription != null) { foreach (Inscription inscription in _inscription) { if (inscription.inscriptionID == id) { ins = inscription; } } } return(ins); }
/// <summary> /// 添加铭文时,更新属性 /// </summary> /// <param name="inscription"></param> private void AddAttribueUpdate(Inscription inscr) { if (_inscriptionAttribue == null) { _inscriptionAttribue = new SortedDictionary <int, InscriptionAttribute>(); } foreach (InscriptionAttribute attributeItem in inscr.inscriptionAttribute) { //Debug.Log("id:"+attributeItem.attributeId); //Debug.Log("value:"+attributeItem.attribueValue); if (_inscriptionAttribue.ContainsKey(attributeItem.attributeId)) { _inscriptionAttribue[attributeItem.attributeId].attribueValue += attributeItem.attribueValue; } else { InscriptionAttribute a = ChangeAttribute(attributeItem); _inscriptionAttribue.Add(attributeItem.attributeId, a); } } }
/// <summary> /// 移除铭文时,更新属性 /// </summary> /// <param name="inscr"></param> private void RemoveAttributeUpdata(Inscription inscr) { if (_inscriptionAttribue == null) { _inscriptionAttribue = new SortedDictionary <int, InscriptionAttribute>(); } foreach (InscriptionAttribute attributeItem in inscr.inscriptionAttribute) { if (_inscriptionAttribue.ContainsKey(attributeItem.attributeId)) { _inscriptionAttribue[attributeItem.attributeId].attribueValue -= attributeItem.attribueValue; if (_inscriptionAttribue[attributeItem.attributeId].attribueValue <= 0) { _inscriptionAttribue.Remove(attributeItem.attributeId); } } else { Debug.Log("There has many error!"); } } }