UserData.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. using System;
  2. using System.Globalization;
  3. using UnityEngine;
  4. using UnityEngine.Events;
  5. public class UserData
  6. {
  7. public enum From
  8. {
  9. ios,
  10. }
  11. public UnityEvent ClanChanged = new UnityEvent();
  12. public int id;
  13. public string snsId;
  14. public string email;
  15. public string deviceId;
  16. private string _nick = "";
  17. public int exp;
  18. public int win;
  19. public int lose;
  20. public string from = "ios";
  21. private int _rank;
  22. private int _coin;
  23. private int _diamond;
  24. public int rankIndex;
  25. public bool vipNextRound;
  26. private double _vipExpireDay;
  27. private bool _isVIP;
  28. private bool _isFullVIP;
  29. private IFormatProvider culture = new CultureInfo("zh-cn", true);
  30. public int[] craftSelectLimit;
  31. public bool isLogin;
  32. public UserData ()
  33. {
  34. }
  35. public int GetBadge()
  36. {
  37. return GetBadgeByRank(rank);
  38. }
  39. public static int GetBadgeByRank(int rank)
  40. {
  41. int badge = (int)Mathf.Floor((float)rank/1500f);
  42. badge += 1;
  43. if(badge > 30)
  44. {
  45. badge = 30;
  46. }
  47. return badge;
  48. }
  49. public static Sprite GetBadgeIcon(int rank)
  50. {
  51. return Resources.Load<Sprite>("Textures/BadgeIcon/badge"+StringUtil.FillZero(GetBadgeByRank(rank), 4));
  52. }
  53. public string idStr
  54. {
  55. get{
  56. return "#" + id;
  57. }
  58. }
  59. private int m_ClanId;
  60. public int clanId
  61. {
  62. set{
  63. m_ClanId = value;
  64. ClanChanged.Invoke ();
  65. }
  66. get{
  67. return m_ClanId;
  68. }
  69. }
  70. public string nick
  71. {
  72. set{
  73. _nick = NickFormat(value, id);
  74. if (id != Session.GetInstance ().myUserData.id)
  75. return;
  76. MyNick[] myNicks = GameObject.FindObjectsOfType<MyNick>();
  77. for(int i=0; i<myNicks.Length; i++)
  78. {
  79. myNicks[i].UpdateValue(_nick);
  80. }
  81. }
  82. get{
  83. return _nick;
  84. }
  85. }
  86. public static string NickFormat(string nick, int userId)
  87. {
  88. if (StringUtil.Empty (nick))
  89. return "#"+userId;
  90. return nick;
  91. }
  92. public static string NickFormat(LitJson.JsonData jsonNick, int userId)
  93. {
  94. if (jsonNick != null)
  95. return NickFormat (WWW.UnEscapeURL(jsonNick.ToString()), userId);
  96. return NickFormat(null, userId);
  97. }
  98. public int rank
  99. {
  100. set{
  101. _rank = value;
  102. if (id != Session.GetInstance ().myUserData.id)
  103. return;
  104. RankNum[] rankNums = GameObject.FindObjectsOfType<RankNum>();
  105. for(int i=0; i<rankNums.Length; i++)
  106. {
  107. rankNums[i].UpdateRank(value);
  108. }
  109. }
  110. get{
  111. return _rank;
  112. }
  113. }
  114. public int coin
  115. {
  116. set{
  117. _coin = value;
  118. if (id != Session.GetInstance ().myUserData.id)
  119. return;
  120. CrystalNum[] crystalNums = GameObject.FindObjectsOfType<CrystalNum>();
  121. for(int i=0; i<crystalNums.Length; i++)
  122. {
  123. crystalNums[i].UpdateNum(value);
  124. }
  125. }
  126. get{
  127. return _coin;
  128. }
  129. }
  130. public int diamond
  131. {
  132. set{
  133. _diamond = value;
  134. if (id != Session.GetInstance ().myUserData.id)
  135. return;
  136. DiamondNum[] diamondNums = GameObject.FindObjectsOfType<DiamondNum>();
  137. for(int i=0; i<diamondNums.Length; i++)
  138. {
  139. diamondNums[i].UpdateNum(value);
  140. }
  141. }
  142. get{
  143. return _diamond;
  144. }
  145. }
  146. public string vipExpireTime
  147. {
  148. set
  149. {
  150. DateTime dt = DateTime.ParseExact(value, "yyyy-MM-dd HH:mm:ss", culture);
  151. TimeSpan ts = dt.Subtract(DateTime.Now);
  152. _isFullVIP = _isVIP = (ts.TotalSeconds > 0);
  153. _vipExpireDay = ts.TotalDays;
  154. // _isFullVIP = (ts.TotalDays > 30);
  155. if (id != Session.GetInstance ().myUserData.id)
  156. return;
  157. CraftSelectionItem[] craftItems = GameObject.FindObjectsOfType<CraftSelectionItem>();
  158. for(int i=0; i<craftItems.Length; i++)
  159. {
  160. craftItems[i].Refresh();
  161. }
  162. ShopItem[] shopItems = GameObject.FindObjectsOfType<ShopItem>();
  163. for(int i=0; i<shopItems.Length; i++)
  164. {
  165. shopItems[i].Refresh();
  166. }
  167. }
  168. }
  169. public void RemoveVIPExpireTime()
  170. {
  171. _isVIP = false;
  172. _vipExpireDay = 0;
  173. _isFullVIP = false;
  174. }
  175. public bool IsVIP()
  176. {
  177. return _isVIP || vipNextRound;
  178. }
  179. public double GetVipExpireDay()
  180. {
  181. return _vipExpireDay;
  182. }
  183. public bool IsFullVIP()
  184. {
  185. return _isFullVIP;
  186. }
  187. public bool CanBuy(BuyItemData data)
  188. {
  189. if(data.GetCurrency() == BuyUtil.Currency.Diamond)
  190. {
  191. if(data.GetPrice() > diamond)
  192. {
  193. BuyDiamondPanel.Show();
  194. return false;
  195. }
  196. }
  197. else if(data.GetCurrency() == BuyUtil.Currency.Coin)
  198. {
  199. if(data.GetPrice() > coin)
  200. {
  201. BuyCoinPanel.Show();
  202. return false;
  203. }
  204. }
  205. return true;
  206. }
  207. public override string ToString ()
  208. {
  209. return string.Format ("[UserData: nick={0}, rank={1}, id={2}", nick, rank, id);
  210. }
  211. }