|
@@ -0,0 +1,378 @@
|
|
|
+using System;
|
|
|
+using UnityEngine;
|
|
|
+
|
|
|
+using System.Collections;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Text;
|
|
|
+using System.Xml;
|
|
|
+using UnityEngine.UI;
|
|
|
+
|
|
|
+public enum AchieveType
|
|
|
+{
|
|
|
+ AD,
|
|
|
+ Skill,
|
|
|
+ Sign,
|
|
|
+ Share,
|
|
|
+ Flower,
|
|
|
+ Person,
|
|
|
+ ElfLevel,
|
|
|
+ TotalCoin,
|
|
|
+ MiniGame,
|
|
|
+ FlowerCoin,
|
|
|
+ CurrentCoin,
|
|
|
+ GardenLevel,
|
|
|
+}
|
|
|
+
|
|
|
+public class Achieve
|
|
|
+{
|
|
|
+ public bool Regist
|
|
|
+ {
|
|
|
+ get { return _Regist; }
|
|
|
+ set
|
|
|
+ {
|
|
|
+ _Regist = value;
|
|
|
+
|
|
|
+ if (_Regist)
|
|
|
+ {
|
|
|
+ RegistValue();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public string Desc
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ return Language.GetStr("AchieveDescription", "Achieve" + ID);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public string Name
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ return Language.GetStr("AchieveName", "Achieve" + ID);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public List<Achieve> PostAchieveList
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ if (_PostAchieveList == null)
|
|
|
+ {
|
|
|
+ _PostAchieveList = new List<Achieve>();
|
|
|
+ }
|
|
|
+
|
|
|
+ return _PostAchieveList;
|
|
|
+ }
|
|
|
+ set { _PostAchieveList = value; }
|
|
|
+ }
|
|
|
+
|
|
|
+ public bool _Regist;
|
|
|
+ public List<Achieve> _PostAchieveList;
|
|
|
+
|
|
|
+ public int ID;
|
|
|
+ public int Index;
|
|
|
+ public int Parent;
|
|
|
+ public bool Valid;
|
|
|
+ public bool Finish;
|
|
|
+ public bool Delete;
|
|
|
+ public float Person;
|
|
|
+ public float CoinPerson;
|
|
|
+ public float DiamondOnce;
|
|
|
+ public string Icon;
|
|
|
+ public double TargetValue;
|
|
|
+ public double CurrentValue;
|
|
|
+ public AchieveType Type;
|
|
|
+
|
|
|
+ public Text Tit;
|
|
|
+ public Text Lab;
|
|
|
+ public Text BtnLab;
|
|
|
+ public Slider Slider;
|
|
|
+ public Image Image;
|
|
|
+ public Button Button;
|
|
|
+ public Transform AchieveItem;
|
|
|
+
|
|
|
+ public Achieve(XmlAttributeCollection attribute)
|
|
|
+ {
|
|
|
+ Valid = true;
|
|
|
+
|
|
|
+ Icon = attribute[11].Value;
|
|
|
+ Type = TypeParse(attribute[4].Value);
|
|
|
+ Parent = ParentParse(attribute[6].Value);
|
|
|
+ Delete = Convert.ToBoolean(int.Parse(attribute[7].Value));
|
|
|
+ TargetValue = double.Parse(attribute[5].Value);
|
|
|
+
|
|
|
+ ID = int.Parse(attribute[0].Value);
|
|
|
+ Index = int.Parse(attribute[1].Value);
|
|
|
+
|
|
|
+ Person = AwardParse(attribute[10].Value);
|
|
|
+ CoinPerson = AwardParse(attribute[9].Value);
|
|
|
+ DiamondOnce = AwardParse(attribute[8].Value);
|
|
|
+
|
|
|
+ ManaAchieve.AchieveDic.Add(ID, this);
|
|
|
+
|
|
|
+ if (Parent != -1)
|
|
|
+ {
|
|
|
+ ManaAchieve.AchieveDic[ID].PostAchieveList.Add(this);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void RegistValue()
|
|
|
+ {
|
|
|
+ AchieveItem = ManaReso.Get("AchieveItem", Folder.UI, false, ManaReso.Get("M_Grid"), false);
|
|
|
+
|
|
|
+ Dictionary<string, Transform> dic = new Dictionary<string, Transform>();
|
|
|
+
|
|
|
+ Auxiliary.CompileDic(AchieveItem, dic);
|
|
|
+
|
|
|
+ Tit = dic["Tit"].GetComponent<Text>();
|
|
|
+ Lab = dic["Lab"].GetComponent<Text>();
|
|
|
+ Slider = dic["Slider"].GetComponent<Slider>();
|
|
|
+ Image = dic["Icon"].GetComponent<Image>();
|
|
|
+ Button = dic["Btn"].GetComponent<Button>();
|
|
|
+ BtnLab = dic["BtnLab"].GetComponent<Text>();
|
|
|
+
|
|
|
+ ManaText.Add(Tit, new LanStr("AchieveName", "Achieve" + ID));
|
|
|
+ ManaText.Add(Lab, new LanStr("AchieveDescription", "Achieve" + ID));
|
|
|
+
|
|
|
+ Slider.value = (float)(CurrentValue/TargetValue);
|
|
|
+ Image.sprite = ManaReso.Load<Sprite>(Icon, Folder.UI);
|
|
|
+
|
|
|
+ UpdateStatus();
|
|
|
+ }
|
|
|
+
|
|
|
+ public void UpdateStatus()
|
|
|
+ {
|
|
|
+ if (Finish == false)
|
|
|
+ {
|
|
|
+ StringBuilder strB = new StringBuilder();
|
|
|
+
|
|
|
+ strB.Append(Language.GetStr("Object", "AchieveItem_BtnLab0") + "\n");
|
|
|
+
|
|
|
+ if (Math.Abs(DiamondOnce) > 0.0005f)
|
|
|
+ {
|
|
|
+ strB.Append("<(钻石)>" + DiamondOnce.ToString("0"));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Math.Abs(CoinPerson) > 0.0005f)
|
|
|
+ {
|
|
|
+ strB.Append(Language.GetStr("Common", "CoinPerson") + "+" + CoinPerson.ToString("0") + " ");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Math.Abs(Person) > 0.0005f)
|
|
|
+ {
|
|
|
+ strB.Append(Language.GetStr("Common", "Person") + "+" + Person.ToString("0"));
|
|
|
+ }
|
|
|
+
|
|
|
+ Button.interactable = false;
|
|
|
+
|
|
|
+ Button.image.material = ManaReso.Load<Material>("GrayMat", Folder.Shader);
|
|
|
+
|
|
|
+ BtnLab.text = strB.ToString();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (Valid)
|
|
|
+ {
|
|
|
+ StringBuilder strB = new StringBuilder();
|
|
|
+
|
|
|
+ strB.Append(Language.GetStr("Object", "AchieveItem_BtnLab1") + "\n");
|
|
|
+
|
|
|
+ if (Math.Abs(DiamondOnce) > 0.0005f)
|
|
|
+ {
|
|
|
+ strB.Append("<(钻石)>" + DiamondOnce.ToString("0"));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Math.Abs(CoinPerson) > 0.0005f)
|
|
|
+ {
|
|
|
+ strB.Append(Language.GetStr("Common", "CoinPerson") + "+" + CoinPerson.ToString("0") + " ");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (Math.Abs(Person) > 0.0005f)
|
|
|
+ {
|
|
|
+ strB.Append(Language.GetStr("Common", "Person") + "+" + Person.ToString("0"));
|
|
|
+ }
|
|
|
+
|
|
|
+ Button.interactable = true;
|
|
|
+
|
|
|
+ Button.image.material = null;
|
|
|
+
|
|
|
+ BtnLab.text = strB.ToString();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Button.interactable = false;
|
|
|
+
|
|
|
+ Button.image.material = null;
|
|
|
+
|
|
|
+ BtnLab.text = Language.GetStr("Object", "AchieveItem_BtnLab2");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void SwitchLanguage()
|
|
|
+ {
|
|
|
+ if (Regist)
|
|
|
+ {
|
|
|
+ UpdateStatus();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public int ParentParse(string str)
|
|
|
+ {
|
|
|
+ if (string.IsNullOrEmpty(str))
|
|
|
+ {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return int.Parse(str);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public float AwardParse(string str)
|
|
|
+ {
|
|
|
+ if (string.IsNullOrEmpty(str))
|
|
|
+ {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return float.Parse(str);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public AchieveType TypeParse(string str)
|
|
|
+ {
|
|
|
+ int integer = int.Parse(str);
|
|
|
+
|
|
|
+ if (integer == 1)
|
|
|
+ {
|
|
|
+ return AchieveType.GardenLevel;
|
|
|
+ }
|
|
|
+ else if (integer == 2)
|
|
|
+ {
|
|
|
+ return AchieveType.CurrentCoin;
|
|
|
+ }
|
|
|
+ else if (integer == 3)
|
|
|
+ {
|
|
|
+ return AchieveType.TotalCoin;
|
|
|
+ }
|
|
|
+ else if (integer == 4)
|
|
|
+ {
|
|
|
+ return AchieveType.ElfLevel;
|
|
|
+ }
|
|
|
+ else if (integer == 5)
|
|
|
+ {
|
|
|
+ return AchieveType.Flower;
|
|
|
+ }
|
|
|
+ else if (integer == 6)
|
|
|
+ {
|
|
|
+ return AchieveType.Person;
|
|
|
+ }
|
|
|
+ else if (integer == 7)
|
|
|
+ {
|
|
|
+ return AchieveType.Skill;
|
|
|
+ }
|
|
|
+ else if (integer == 8)
|
|
|
+ {
|
|
|
+ return AchieveType.AD;
|
|
|
+ }
|
|
|
+ else if (integer == 9)
|
|
|
+ {
|
|
|
+ return AchieveType.Sign;
|
|
|
+ }
|
|
|
+ else if (integer == 10)
|
|
|
+ {
|
|
|
+ return AchieveType.Share;
|
|
|
+ }
|
|
|
+ else if (integer == 11)
|
|
|
+ {
|
|
|
+ return AchieveType.MiniGame;
|
|
|
+ }
|
|
|
+ else if (integer == 12)
|
|
|
+ {
|
|
|
+ return AchieveType.FlowerCoin;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ throw new Exception();
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+public class ManaAchieve : Regist
|
|
|
+{
|
|
|
+ #region 变量
|
|
|
+
|
|
|
+ public static Dictionary<int, Achieve> AchieveDic
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ if (_AchieveDic == null)
|
|
|
+ {
|
|
|
+ _AchieveDic = new Dictionary<int, Achieve>();
|
|
|
+ }
|
|
|
+
|
|
|
+ return _AchieveDic;
|
|
|
+ }
|
|
|
+ set { _AchieveDic = value; }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static Dictionary<int, Achieve> _AchieveDic;
|
|
|
+
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ public override void Instantiate()
|
|
|
+ {
|
|
|
+ List<XmlAttributeCollection> attributeList = Data.GetAchieveConfig();
|
|
|
+
|
|
|
+ for (int i = 0; i < attributeList.Count; i++)
|
|
|
+ {
|
|
|
+ new Achieve(attributeList[i]);
|
|
|
+ }
|
|
|
+
|
|
|
+ XmlNode node = Data.PlayerNode.SelectSingleNode("AchieveList");
|
|
|
+
|
|
|
+ if (!string.IsNullOrEmpty(node.Value))
|
|
|
+ {
|
|
|
+ string[] strings = node.Value.Split(' ');
|
|
|
+
|
|
|
+ for (int i = 0; i < strings.Length; i++)
|
|
|
+ {
|
|
|
+ AchieveDic[int.Parse(strings[i])].Valid = false;
|
|
|
+ AchieveDic[int.Parse(strings[i])].Finish = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach (var kv in AchieveDic)
|
|
|
+ {
|
|
|
+ if (kv.Value.Valid)
|
|
|
+ {
|
|
|
+ if (kv.Value.Parent == -1 || !AchieveDic[kv.Value.Parent].Valid)
|
|
|
+ {
|
|
|
+ kv.Value.Regist = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (kv.Value.Delete == false)
|
|
|
+ {
|
|
|
+ kv.Value.Regist = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public override void RegistValueA()
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public override void RegistReference()
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+}
|