bool AddPoint(string prop, int deltaPoint, bool isSlider = false) { UISlider slider = sliderDic[prop]; Transform lightblue = slider.transform.Find("lightblue"); PetAttrSlider lightblueSlider = lightblue.GetComponent <PetAttrSlider>(); UILabel addLabel = null; if (labelAddPointDic.TryGetValue(prop, out addLabel)) { uint baseValue = petDataManager.GetCurPetBaseProp(prop, true); int maxPoint = CurPet.GetProp((int)PetProp.MaxPoint); int totalValue = (int)baseValue + maxPoint; int attrPoint = GetAttrPoint(prop); int curPoint = (int)(lightblueSlider.value * totalValue); int point = 0; if (addPointDic.TryGetValue(prop, out point)) { if (deltaPoint > LeftPoint) { deltaPoint = LeftPoint; } float initValue = (baseValue + attrPoint + point) * 1.0f / totalValue; if (LeftPoint == 0) { if (!isSlider) { TipsManager.Instance.ShowTips(DataManager.Manager <TextManager>().GetLocalText(LocalTextType.Local_TXT_Notice_NoEnoughQianXiuPoint)); return(false); } Log.Error("没有潜能点可分配" + initValue.ToString()); LeftPoint = 0; InitAddPointLabelData(); /// lightblueSlider.value = initValue; return(false); } //Log.Error( " prop is " + prop + " totalvalue " + totalValue.ToString() ); //Log.LogGroup( "ZDY" , "潜能点可分配" + deltaPoint.ToString() + " curPoint = " + curPoint.ToString() + " attrPoint = " + attrPoint.ToString() + " point = " + point.ToString() ); addPointDic[prop] = point + deltaPoint; LeftPoint -= deltaPoint; InitAddLabelData(); InitAddPointLabelData(); RefreshWillAddLabel(); return(true); } else { Log.Error("labelAddPointDic dosen't contain key {0}", prop); } } Log.Error("labelAddPointDic dosen't contain key {0}", prop); return(false); }
void InitSliderData() { foreach (var dic in sliderDic) { uint baseValue = petDataManager.GetCurPetBaseProp(dic.Key); int maxPoint = CurPet.GetProp((int)PetProp.MaxPoint); int attrPoint = GetAttrPoint(dic.Key); if (baseValue > attrPoint) { baseValue = baseValue - (uint)attrPoint; } else { Log.Error("基础值小于添加值 不科学"); } int totalValue = (int)baseValue + maxPoint; UISlider slider = dic.Value; Transform green = slider.transform.Find("green"); UISlider greenSlider = slider; if (greenSlider != null) { float sliderValue = baseValue * 1.0f / totalValue; greenSlider.value = sliderValue; } Transform blue = slider.transform.Find("blue"); UISlider blueSlider = blue.GetComponent <UISlider>(); if (blueSlider != null) { float sliderValue = (baseValue + attrPoint) * 1.0f / totalValue; blueSlider.value = sliderValue; } Transform lightblue = slider.transform.Find("lightblue"); PetAttrSlider lightblueSlider = lightblue.GetComponent <PetAttrSlider>(); if (lightblueSlider != null) { int addPoint = addPointDic[dic.Key]; float sliderValue = (baseValue + attrPoint + addPoint) * 1.0f / totalValue; finishSliderDic[dic.Key] = sliderValue; lightblueSlider.value = sliderValue; } } }
bool DeletePoint(string prop, int deltaPoint, bool isSlider = false) { Log.Error("delete deltapoint is " + deltaPoint.ToString()); UISlider slider = sliderDic[prop]; Transform lightblue = slider.transform.Find("lightblue"); PetAttrSlider lightblueSlider = lightblue.GetComponent <PetAttrSlider>(); uint baseValue = petDataManager.GetCurPetBaseProp(prop, true); int maxPoint = CurPet.GetProp((int)PetProp.MaxPoint); int totalValue = (int)baseValue + maxPoint; int attrPoint = GetAttrPoint(prop); float initValue = (baseValue + attrPoint) * 1.0f / totalValue; if (lightblueSlider.value <= initValue) { if (!isSlider) { TipsManager.Instance.ShowTips("已经分配的潜能点不能重新分配"); return(false); } } int point = addPointDic[prop]; if (deltaPoint > point) { deltaPoint = point; } addPointDic[prop] = point - deltaPoint; if (addPointDic[prop] == 0) { int a = 0; } LeftPoint += deltaPoint; InitAddLabelData(); InitAddPointLabelData(); RefreshWillAddLabel(); return(true); }
protected override void OnLoading() { base.OnLoading(); if (CurPet == null) { return; } InitLabel(); sliderDic.Add(FightCreatureProp.Strength.ToString(), m_slider_jiadian_liliang); sliderDic.Add(FightCreatureProp.Corporeity.ToString(), m_slider_jiadian_tili); sliderDic.Add(FightCreatureProp.Intelligence.ToString(), m_slider_jiadian_zhili); sliderDic.Add(FightCreatureProp.Spirit.ToString(), m_slider_jiadian_jingshen); sliderDic.Add(FightCreatureProp.Agility.ToString(), m_slider_jiadian_minjie); addPointDic.Add(FightCreatureProp.Strength.ToString(), 0); addPointDic.Add(FightCreatureProp.Corporeity.ToString(), 0); addPointDic.Add(FightCreatureProp.Intelligence.ToString(), 0); addPointDic.Add(FightCreatureProp.Spirit.ToString(), 0); addPointDic.Add(FightCreatureProp.Agility.ToString(), 0); finishSliderDic.Add(FightCreatureProp.Strength.ToString(), 0); finishSliderDic.Add(FightCreatureProp.Corporeity.ToString(), 0); finishSliderDic.Add(FightCreatureProp.Intelligence.ToString(), 0); finishSliderDic.Add(FightCreatureProp.Spirit.ToString(), 0); finishSliderDic.Add(FightCreatureProp.Agility.ToString(), 0); foreach (var dic in sliderDic) { UISlider slider = dic.Value; Transform lightblue = slider.transform.Find("lightblue"); Transform thumb = slider.transform.Find("Thumb"); PetAttrSlider lightblueSlider = lightblue.GetComponent <PetAttrSlider>(); if (lightblueSlider == null) { lightblueSlider = lightblue.gameObject.AddComponent <PetAttrSlider>(); lightblueSlider.foregroundWidget = lightblue.GetComponent <UIWidget>(); lightblueSlider.thumb = thumb; } uint initbaseValue = petDataManager.GetCurPetBaseProp(dic.Key, true); int maxPoint = CurPet.GetProp((int)PetProp.MaxPoint); LeftPoint = maxPoint; int inittotalValue = (int)initbaseValue + maxPoint; int initattrPoint = GetAttrPoint(dic.Key); float initsliderValue = (initbaseValue + initattrPoint) * 1.0f / inittotalValue; if (lightblueSlider != null) { lightblueSlider.InitData(initsliderValue, dic.Key); lightblueSlider.value = initsliderValue; //lightblueSlider.numberOfSteps =(int) (initbaseValue + initattrPoint); lightblueSlider.onDragFinished = () => { float fs = GetCurSliderValue(lightblueSlider.propStr); lightblueSlider.value = fs; finishSliderDic[lightblueSlider.propStr] = fs; }; EventDelegate.Add(lightblueSlider.onChange, () => { maxPoint = CurPet.GetProp((int)PetProp.MaxPoint); uint baseValue = petDataManager.GetCurPetBaseProp(lightblueSlider.propStr, true); int totalValue = (int)baseValue + maxPoint; string propstr = lightblueSlider.propStr; float fs = lightblueSlider.value; float tempValue = fs; float oldValue = finishSliderDic[propstr]; if (tempValue > oldValue) { float deltaValue = tempValue - oldValue; int delta = Mathf.RoundToInt(deltaValue * totalValue); if (delta >= 1) { if (delta > LeftPoint) { delta = LeftPoint; float sliderAddDelta = delta * 1.0f / totalValue; } if (!AddPoint(propstr, delta, true)) { // lightblueSlider.value = oldValue; } else { tempValue = oldValue + delta * 1.0f / totalValue; finishSliderDic[propstr] = tempValue; } } } if (tempValue < oldValue) { float deltaValue = oldValue - tempValue; int delta = Mathf.RoundToInt(deltaValue * totalValue); if (delta >= 1) { int leftAddPoint = addPointDic[lightblueSlider.propStr]; if (delta > leftAddPoint) { delta = leftAddPoint; } if (delta <= 0) { return; } if (!DeletePoint(propstr, delta, true)) { // lightblueSlider.value = oldValue; } else { tempValue = oldValue - delta * 1.0f / totalValue; finishSliderDic[propstr] = tempValue; } } } }); } } }