TurnTableView.cs 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733
  1. using FairyGUI;
  2. using UnityEngine;
  3. using UI.TurnTable;
  4. using System.Collections;
  5. using System.Collections.Generic;
  6. using ET;
  7. using System.Threading.Tasks;
  8. using System.Linq;
  9. using System.Text.RegularExpressions;
  10. using cfg.GfgCfg;
  11. namespace GFGGame
  12. {
  13. public class TurnTableView : BaseWindow
  14. {
  15. private UI_TurnTableUI _ui;
  16. private ValueBarController _valueBarController;
  17. private int activityID;
  18. private int propID;
  19. private int WaitTime;
  20. private float duratio;
  21. //这里固定旋转
  22. private float endValue;
  23. //这里获得偏移量
  24. private List<float> normalEndValue = new List<float>();
  25. public List<GLoader> pointerList = new List<GLoader>();
  26. //转盘物品
  27. public List<DropOutCfg> rewardItemList = new List<DropOutCfg>();
  28. //下面奖励物品
  29. public List<TurntableRewardCfg> rewardList = new List<TurntableRewardCfg>();
  30. public List<float> angleList = new List<float>() { 0, 39, 74, 109, 145, 180, 215, 250, 288, 325 };
  31. public int wishType = 0;
  32. private EffectUI _effectUI1;
  33. // private EffectUI _effectUI2;
  34. private EffectUI _effectUI3;
  35. private EffectUI _effectUI4;
  36. private EffectUI _effectUI5;
  37. private EffectUI _effectUI6;
  38. private EffectUI _effectUI7;
  39. private EffectUI _effectUISpecial;
  40. private Dictionary<string, EffectUI> _effectUIDic = new Dictionary<string, EffectUI>();
  41. private Dictionary<string, EffectUI> _effectTableUIDic = new Dictionary<string, EffectUI>();
  42. public override void Dispose()
  43. {
  44. EffectUIPool.Recycle(_effectUI1);
  45. _effectUI1 = null;
  46. // EffectUIPool.Recycle(_effectUI2);
  47. // _effectUI2 = null;
  48. EffectUIPool.Recycle(_effectUI3);
  49. _effectUI3 = null;
  50. EffectUIPool.Recycle(_effectUI4);
  51. _effectUI4 = null;
  52. EffectUIPool.Recycle(_effectUI5);
  53. _effectUI5 = null;
  54. EffectUIPool.Recycle(_effectUI6);
  55. _effectUI6 = null;
  56. EffectUIPool.Recycle(_effectUISpecial);
  57. _effectUISpecial = null;
  58. foreach (var v in _effectUIDic)
  59. {
  60. EffectUIPool.Recycle(v.Value);
  61. }
  62. _effectUIDic.Clear();
  63. foreach (var v in _effectTableUIDic)
  64. {
  65. EffectUIPool.Recycle(v.Value);
  66. }
  67. _effectTableUIDic.Clear();
  68. if (_valueBarController != null)
  69. {
  70. _valueBarController.Dispose();
  71. _valueBarController = null;
  72. }
  73. if (_ui != null)
  74. {
  75. _ui.Dispose();
  76. }
  77. _ui = null;
  78. base.Dispose();
  79. }
  80. protected override void Init()
  81. {
  82. base.Init();
  83. packageName = UI_TurnTableUI.PACKAGE_NAME;
  84. _ui = UI_TurnTableUI.Create();
  85. viewCom = _ui.target;
  86. isfullScreen = true;
  87. isReturnView = true;
  88. _valueBarController = new ValueBarController(_ui.m_valueBar);
  89. _ui.m_btnBack.onClick.Add(OnClickBtnClose);
  90. _ui.m_btnStartOne.onClick.Add(OnClickBtnStartOne);
  91. _ui.m_btnStartThree.onClick.Add(OnClickBtnStartThree);
  92. _ui.m_rewardIcon.onClick.Add(OnClickBtnReward);
  93. _ui.m_shopBtn.onClick.Add(OnClickBtnShop);
  94. _ui.m_giftBtn.onClick.Add(OnClickBtnGift);
  95. _ui.m_ruleBtn.onClick.Add(RuleController.ShowRuleView);
  96. endValue = 1080;
  97. duratio = 2.0f;
  98. WaitTime = 2700;
  99. AddEffect();
  100. }
  101. private void AddEffect()
  102. {
  103. EffectUIPool.CreateEffectUI(_ui.m_bgEffect, "ui_Activity", "HHYY_BG_TX/HHYY_BG_TX",
  104. onComplete: (effect) =>
  105. {
  106. if (effect != null)
  107. {
  108. _effectUI1 = effect;
  109. }
  110. });
  111. //_effectUI2 = EffectUIPool.CreateEffectUI(_ui.m_titleEffect, "ui_Activity", "HHYY_Text_TX/HHYY_Text_TX");
  112. EffectUIPool.CreateEffectUI(_ui.m_btnEffectOne, "ui_Activity", "HHYY_Button/HHYY_Button",
  113. onComplete: (effect) =>
  114. {
  115. if (effect != null)
  116. {
  117. _effectUI3 = effect;
  118. }
  119. });
  120. EffectUIPool.CreateEffectUI(_ui.m_btnEffectThree, "ui_Activity", "HHYY_Button/HHYY_Button",
  121. onComplete: (effect) =>
  122. {
  123. if (effect != null)
  124. {
  125. _effectUI4 = effect;
  126. }
  127. });
  128. EffectUIPool.CreateEffectUI(_ui.m_bgEffec1, "ui_Activity", "HHYY_BG_TX/HHYY_BG_TX",
  129. onComplete: (effect) =>
  130. {
  131. if (effect != null)
  132. {
  133. _effectUI5 = effect;
  134. }
  135. });
  136. EffectUIPool.CreateEffectUI(_ui.m_bgEffec2, "ui_Activity", "HHYY_BG_TX/HHYY_BG_TX",
  137. onComplete: (effect) =>
  138. {
  139. if (effect != null)
  140. {
  141. _effectUI6 = effect;
  142. }
  143. });
  144. EffectUIPool.CreateEffectUI(_ui.m_specialEffect, "ui_Activity",
  145. "HHYY_Select_Special/HHYY_Select_Special",
  146. onComplete: (effect) =>
  147. {
  148. if (effect != null)
  149. {
  150. _effectUISpecial = effect;
  151. }
  152. });
  153. }
  154. protected override void OnShown()
  155. {
  156. base.OnShown();
  157. _ui.m_bg.url = ResPathUtil.GetBgImgPath("zqzp_bg");
  158. pointerList.Clear();
  159. if (pointerList == null || pointerList.Count < 3)
  160. {
  161. pointerList.Add(_ui.m_pointer0);
  162. pointerList.Add(_ui.m_pointer1);
  163. pointerList.Add(_ui.m_pointer2);
  164. }
  165. normalEndValue.Clear();
  166. activityID =
  167. ActivityDataManager.Instance.GetCurOpenActiveByType(ActivityDataManager.Instance.TurnTableActivityType);
  168. propID = CommonDataManager.Tables.TblTurntableLuckyBoxCfg.GetByActivityId(activityID).CostID;
  169. int dropId = CommonDataManager.Tables.TblTurntableLuckyBoxCfg.GetByActivityId(activityID).DropId;
  170. rewardItemList = CommonDataManager.Tables.TblDropOutCfg.DataList.Where(a => a.Id == dropId).ToList();
  171. rewardList = CommonDataManager.Tables.TblTurntableRewardCfg.DataList.Where(a => a.ActivityId == activityID)
  172. .ToList();
  173. _valueBarController.OnShown();
  174. _valueBarController.UpdateList(new List<int>()
  175. { propID, ConstItemID.DIAMOND_RED, ConstItemID.DIAMOND_PURPLE });
  176. UpdateView();
  177. UpdateRewardItem();
  178. UpdateReward();
  179. UpdateTime(null);
  180. _ui.m_ruleBtn.data = 300038;
  181. Timers.inst.Add(1, 0, UpdateTime);
  182. }
  183. protected override void OnHide()
  184. {
  185. base.OnHide();
  186. Timers.inst.Remove(UpdateTime);
  187. _ui.m_btnStartOne.touchable = true;
  188. _ui.m_btnStartThree.touchable = true;
  189. _valueBarController.OnHide();
  190. //pointerList.Clear();
  191. ActivityDataManager.Instance.threeTurnResult.Clear();
  192. ActivityDataManager.Instance.TurnRewardList.Clear();
  193. }
  194. protected override void AddEventListener()
  195. {
  196. base.AddEventListener();
  197. EventAgent.AddEventListener(ConstMessage.SHOP_BUY, UpdateView);
  198. EventAgent.AddEventListener(ConstMessage.TurnTable_DateCHANGE, UpdateReward);
  199. EventAgent.AddEventListener(ConstMessage.REWARDVIEW_CLOTHER, ShowReward);
  200. }
  201. protected override void RemoveEventListener()
  202. {
  203. base.RemoveEventListener();
  204. EventAgent.RemoveEventListener(ConstMessage.SHOP_BUY, UpdateView);
  205. EventAgent.RemoveEventListener(ConstMessage.TurnTable_DateCHANGE, UpdateReward);
  206. EventAgent.RemoveEventListener(ConstMessage.REWARDVIEW_CLOTHER, ShowReward);
  207. }
  208. private void ShowReward()
  209. {
  210. if (ActivityDataManager.Instance.TurnSpecialRewardList != null &&
  211. ActivityDataManager.Instance.TurnSpecialRewardList.Count > 0)
  212. {
  213. ViewManager.Show<TurnTableTipsRewardView>(new object[]
  214. { ItemUtil.CreateItemDataList(ActivityDataManager.Instance.TurnSpecialRewardList), null });
  215. ActivityDataManager.Instance.TurnSpecialRewardList = null;
  216. }
  217. }
  218. private void UpdateTime(object param = null)
  219. {
  220. //=====限时礼包倒计时
  221. var activityInfoByTypeList = ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB3);
  222. if (activityInfoByTypeList.Count == 0)
  223. {
  224. Timers.inst.Remove(UpdateTime);
  225. _ui.m_gift.visible = false;
  226. }
  227. else
  228. {
  229. _ui.m_giftTimeText.text =
  230. TimeUtil.GetTimeLeft(TimeInfo.Instance.ServerNow(), activityInfoByTypeList[0].EndTime);
  231. }
  232. //=====限时礼包倒计时END
  233. }
  234. private void UpdateView()
  235. {
  236. ActivityOpenCfg activiyCfg = CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityID);
  237. if (activiyCfg != null)
  238. {
  239. _ui.m_timeText.text = "活动结束时间:" + GetTImeText(activiyCfg.EndTime);
  240. }
  241. //还要判断是否已购买,和时间
  242. var activityInfoByTypeList = ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB3);
  243. if (activityInfoByTypeList.Count == 0)
  244. {
  245. return;
  246. }
  247. ActivityOpenCfg activityOpenCfg =
  248. CommonDataManager.Tables.TblActivityOpenCfg.GetOrDefault(activityInfoByTypeList[0].ActivityId);
  249. var shopCfgId = activityOpenCfg.Params1[0];
  250. var shopCfg = CommonDataManager.Tables.TblShopCfg.GetOrDefault(shopCfgId);
  251. if (shopCfg == null)
  252. {
  253. return;
  254. }
  255. var remainBuyNum = shopCfg.MaxBuyNum - ShopDataManager.Instance.GetGoodsBuyNumById(shopCfg.Id);
  256. if (activityInfoByTypeList.Count == 0)
  257. {
  258. _ui.m_gift.visible = false;
  259. }
  260. else if (remainBuyNum != 0)
  261. {
  262. _ui.m_gift.visible = true;
  263. }
  264. else
  265. {
  266. _ui.m_gift.visible = false;
  267. }
  268. }
  269. //更新转盘上物品
  270. private void UpdateRewardItem()
  271. {
  272. if (rewardItemList.Count < 10)
  273. {
  274. //现在转盘上只有十个item
  275. Debug.LogError("奖励不足10个");
  276. return;
  277. }
  278. for (int i = 0; i < 10; i++)
  279. {
  280. GComponent comProBonus = _ui.target.GetChild("item" + i).asCom;
  281. UI_rewardItem rewardItem = UI_rewardItem.Proxy(comProBonus);
  282. ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(rewardItemList[i].Item);
  283. if (!_effectTableUIDic.ContainsKey("item" + i))
  284. {
  285. EffectUIPool.CreateEffectUI(rewardItem.m_effect, "ui_Activity", "HHYY_Select/HHYY_Select",
  286. onComplete: (effect) =>
  287. {
  288. if (effect != null)
  289. {
  290. _effectTableUIDic.Add("item" + i, effect);
  291. }
  292. });
  293. }
  294. rewardItem.m_icon.url = ResPathUtil.GetIconPath(itemCfg);
  295. rewardItem.m_numText.text = string.Format("x{0}", rewardItemList[i].MaxNum);
  296. rewardItem.m_c1.selectedIndex = 0;
  297. rewardItem.m_effect.visible = false;
  298. if (rewardItem.target.data == null)
  299. {
  300. rewardItem.target.onClick.Add(OnClickTableRewardItem);
  301. }
  302. rewardItem.target.data = itemCfg.Id;
  303. UI_rewardItem.ProxyEnd();
  304. }
  305. }
  306. //更新下面次数的物品
  307. private void UpdateReward()
  308. {
  309. if (ActivityDataManager.Instance.TurnSpecialRewardList != null &&
  310. ActivityDataManager.Instance.TurnSpecialRewardList.Count > 0)
  311. {
  312. _ui.m_specialEffect.visible = true;
  313. }
  314. else
  315. {
  316. _ui.m_specialEffect.visible = false;
  317. }
  318. _ui.m_numberText.text = ActivityDataManager.Instance.TurnTableTimes.ToString();
  319. _ui.m_reward.m_bar.max = rewardList.Count;
  320. _ui.m_reward.m_bar.value = GetRewardIndex();
  321. float value = (float)GetRewardIndex() / (float)rewardList.Count;
  322. _ui.m_reward.target.scrollPane.SetPercX(value, false);
  323. for (int i = 0; i < rewardList.Count; i++)
  324. {
  325. GComponent comProBonus = _ui.m_reward.target.GetChild("itemj" + i).asCom;
  326. UI_reward rewardItem = UI_reward.Proxy(comProBonus);
  327. if (!_effectUIDic.ContainsKey("itemj" + i))
  328. {
  329. EffectUIPool.CreateEffectUI(rewardItem.m_effect, "ui_Activity",
  330. "HHYY_Line_Full/HHYY_Line_Full",
  331. onComplete: (effect) =>
  332. {
  333. if (effect != null)
  334. {
  335. _effectUIDic.Add("itemj" + i, effect);
  336. }
  337. });
  338. }
  339. rewardItem.m_effect.SetScale(1, 1);
  340. ItemCfg itemCfg = CommonDataManager.Tables.TblItemCfg.GetOrDefault(rewardList[i].Bonus[0].ItemId);
  341. rewardItem.m_icon.url = ResPathUtil.GetIconPath(itemCfg);
  342. rewardItem.m_numText.text = rewardList[i].Num.ToString();
  343. if (ActivityDataManager.Instance.TurnRewardStateDic.ContainsKey(rewardList[i].Id))
  344. {
  345. if (i > (GetRewardIndex() - 1) ||
  346. ActivityDataManager.Instance.TurnRewardStateDic[rewardList[i].Id] == 2)
  347. {
  348. rewardItem.m_effect.visible = false;
  349. rewardItem.m_c1.selectedIndex = 0;
  350. RedDotController.Instance.SetComRedDot(rewardItem.target, false, "");
  351. }
  352. else
  353. {
  354. rewardItem.m_effect.visible = true;
  355. rewardItem.m_c1.selectedIndex = 1;
  356. RedDotController.Instance.SetComRedDot(rewardItem.target, true, "");
  357. }
  358. if (ActivityDataManager.Instance.TurnRewardStateDic[rewardList[i].Id] == 2)
  359. {
  360. rewardItem.m_effect.visible = false;
  361. rewardItem.m_c1.selectedIndex = 2;
  362. RedDotController.Instance.SetComRedDot(rewardItem.target, false, "");
  363. }
  364. }
  365. //if (i == rewardList.Count - 1)
  366. //{
  367. // comProBonus.x = ((float)rewardList[i].num / (float)rewardList[rewardList.Count - 1].num) * _ui.m_reward.m_bar.width - 30;
  368. //}
  369. //else
  370. {
  371. comProBonus.x = ((float)(i + 1) / (float)rewardList.Count) * _ui.m_reward.m_bar.width - 20;
  372. }
  373. if (rewardItem.target.data == null)
  374. {
  375. }
  376. rewardItem.target.onClick.Add(OnClickRewardItem);
  377. List<int> dateList = new List<int>() { itemCfg.Id, rewardList[i].Id };
  378. rewardItem.target.data = dateList;
  379. UI_rewardItem.ProxyEnd();
  380. }
  381. }
  382. private void OnClickTableRewardItem(EventContext context)
  383. {
  384. int id = (int)(context.sender as GObject).data;
  385. GoodsItemTipsController.ShowItemTips(id);
  386. }
  387. private async void OnClickRewardItem(EventContext context)
  388. {
  389. List<int> idList = (List<int>)(context.sender as GObject).data;
  390. //判断是否可领取
  391. if (ActivityDataManager.Instance.TurnRewardStateDic.ContainsKey(idList[1]))
  392. {
  393. //if (ActivityDataManager.Instance.TurnRewardStateDic[idList[1]] != 1)
  394. if (ActivityDataManager.Instance.TurnRewardStateDic[idList[1]] != 1)
  395. {
  396. GoodsItemTipsController.ShowItemTips(idList[0]);
  397. }
  398. else
  399. {
  400. bool result = await ActivitySProxy.ReqGetTurnTableReward(idList[1]);
  401. if (result)
  402. {
  403. }
  404. }
  405. }
  406. }
  407. private void OnClickBtnClose(object param)
  408. {
  409. ViewManager.GoBackFrom(typeof(TurnTableView).FullName);
  410. }
  411. private async void OnClickBtnStartOne()
  412. {
  413. ItemData item;
  414. if (BagDataManager.Instance.GetBagData().TryGetValue(propID, out item))
  415. {
  416. if (item.num >= 1)
  417. {
  418. bool result = await ActivitySProxy.ReqTurnTableWish(1);
  419. if (result)
  420. {
  421. wishType = 0;
  422. _ui.m_btnStartOne.touchable = false;
  423. _ui.m_btnStartThree.touchable = false;
  424. _ui.m_btnBack.touchable = false;
  425. _ui.m_valueBar.touchable = false;
  426. _ui.m_shopBtn.touchable = false;
  427. await TurnStart(0);
  428. await Task.Delay(WaitTime);
  429. BonusController.TryShowBonusList(
  430. ItemUtil.CreateItemDataList(ActivityDataManager.Instance.TurnRewardList));
  431. ActivityDataManager.Instance.TurnRewardList.Clear();
  432. UpdateReward();
  433. _ui.m_btnStartOne.touchable = true;
  434. _ui.m_btnStartThree.touchable = true;
  435. _ui.m_btnBack.touchable = true;
  436. _ui.m_valueBar.touchable = true;
  437. _ui.m_shopBtn.touchable = true;
  438. }
  439. else
  440. {
  441. //Debug.LogError("许愿失败");
  442. }
  443. }
  444. else
  445. {
  446. if (ActivityDataManager.Instance.CHECK_TIPS_OPEN == false)
  447. TurnTipsController.Show(propID, 1, null, true);
  448. else
  449. {
  450. OnBuyItem(propID, 1);
  451. }
  452. }
  453. }
  454. else
  455. {
  456. if (ActivityDataManager.Instance.CHECK_TIPS_OPEN == false)
  457. TurnTipsController.Show(propID, 1, null, true);
  458. else
  459. {
  460. OnBuyItem(propID, 1);
  461. }
  462. }
  463. }
  464. private async void OnClickBtnStartThree()
  465. {
  466. ItemData item;
  467. if (BagDataManager.Instance.GetBagData().TryGetValue(propID, out item))
  468. {
  469. if (item.num >= 3)
  470. {
  471. bool result = await ActivitySProxy.ReqTurnTableWish(2);
  472. if (result)
  473. {
  474. _ui.m_btnStartOne.touchable = false;
  475. _ui.m_btnStartThree.touchable = false;
  476. _ui.m_btnBack.touchable = false;
  477. _ui.m_valueBar.touchable = false;
  478. _ui.m_shopBtn.touchable = false;
  479. await TurnStart(0);
  480. await Task.Delay(WaitTime);
  481. await TurnStart(1);
  482. await Task.Delay(WaitTime);
  483. await TurnStart(2);
  484. await Task.Delay(WaitTime);
  485. BonusController.TryShowBonusList(
  486. ItemUtil.CreateItemDataList(ActivityDataManager.Instance.TurnRewardList));
  487. ActivityDataManager.Instance.TurnRewardList.Clear();
  488. _ui.m_btnStartOne.touchable = true;
  489. _ui.m_btnStartThree.touchable = true;
  490. _ui.m_btnBack.touchable = true;
  491. _ui.m_valueBar.touchable = true;
  492. _ui.m_shopBtn.touchable = true;
  493. UpdateReward();
  494. }
  495. else
  496. {
  497. //Debug.LogError("许愿失败");
  498. }
  499. }
  500. else
  501. {
  502. if (ActivityDataManager.Instance.CHECK_TIPS_OPEN == false)
  503. TurnTipsController.Show(propID, 3, null, true);
  504. else
  505. {
  506. OnBuyItem(propID, 3);
  507. }
  508. }
  509. }
  510. else
  511. {
  512. if (ActivityDataManager.Instance.CHECK_TIPS_OPEN == false)
  513. TurnTipsController.Show(propID, 3, null, true);
  514. else
  515. {
  516. OnBuyItem(propID, 3);
  517. }
  518. }
  519. }
  520. private async void OnBuyItem(int itemId, long count)
  521. {
  522. var _result = await ItemExchangeSProxy.ItemExchange(itemId, count);
  523. if (_result)
  524. BonusController.TryShowBonusList(ItemUtil.CreateItemDataList(itemId, count));
  525. }
  526. private void OnClickBtnShop()
  527. {
  528. ViewManager.Show<StoreView>(new object[]
  529. { ConstStoreTabId.STORE_GIFT_BAG, ConstStoreSubId.STORE_ACTIVITY_EXCHANGE });
  530. }
  531. private void OnClickBtnReward()
  532. {
  533. ViewManager.Show<TurnSpecialTipsView>();
  534. }
  535. private void OnClickBtnGift()
  536. {
  537. var activityInfoByTypeList =
  538. ActivityGlobalDataManager.Instance.GetActivityInfoByType(ActivityType.XSLB3);
  539. var list = activityInfoByTypeList
  540. .Where(a => a.EndTime > TimeInfo.Instance.ServerNow()).ToList();
  541. if (list.Count == 0)
  542. PromptController.Instance.ShowFloatTextPrompt("活动已结束");
  543. else
  544. ViewManager.Show<RushSaleGiftBoxView>(new object[] { ActivityType.XSLB3, this.viewData });
  545. }
  546. private async ETTask TurnStart(int Round)
  547. {
  548. UpdateRewardItem();
  549. GetOffSetValue(Round);
  550. if (normalEndValue.Count >= 3)
  551. {
  552. TurnTable(0, normalEndValue[0], Round);
  553. }
  554. await Task.Delay(200);
  555. if (normalEndValue.Count >= 2)
  556. {
  557. TurnTable(1, normalEndValue[1], Round);
  558. }
  559. await Task.Delay(200);
  560. if (normalEndValue.Count >= 3)
  561. {
  562. TurnTable(2, normalEndValue[2], Round);
  563. }
  564. }
  565. private void TurnTable(int index, float OffValue, int Round)
  566. {
  567. pointerList[index].rotation = pointerList[index].rotation % 360;
  568. float selfEndValue = pointerList[index].rotation;
  569. selfEndValue += endValue + OffValue;
  570. pointerList[index].TweenRotate(selfEndValue, duratio).OnComplete(() => SetItemSelect(index, Round));
  571. }
  572. private void SetItemSelect(int index, int Round)
  573. {
  574. int id = ActivityDataManager.Instance.threeTurnResult[Round][index].ConfigId;
  575. int i = GetItemIndexRota(id);
  576. GComponent comProBonus = _ui.target.GetChild("item" + i).asCom;
  577. UI_rewardItem rewardItem = UI_rewardItem.Proxy(comProBonus);
  578. rewardItem.m_c1.selectedIndex = 1;
  579. rewardItem.m_effect.visible = true;
  580. UI_rewardItem.ProxyEnd();
  581. }
  582. private void GetOffSetValue(int index)
  583. {
  584. normalEndValue.Clear();
  585. if (ActivityDataManager.Instance.threeTurnResult.ContainsKey(index))
  586. {
  587. normalEndValue.Add(GetOffSet(ActivityDataManager.Instance.threeTurnResult[index][0].ConfigId, 0));
  588. normalEndValue.Add(GetOffSet(ActivityDataManager.Instance.threeTurnResult[index][1].ConfigId, 1));
  589. normalEndValue.Add(GetOffSet(ActivityDataManager.Instance.threeTurnResult[index][2].ConfigId, 2));
  590. }
  591. else
  592. {
  593. ET.Log.Error("未获得奖励");
  594. }
  595. }
  596. //通过获得的物品id和当前指针位置获得偏移角度
  597. private float GetOffSet(int itemID, int index)
  598. {
  599. float currentRota = pointerList[index].rotation % 360;
  600. float OffSetOne = 360 - currentRota;
  601. float OffSetTwo = angleList[GetItemIndexRota(itemID)];
  602. float OffSet;
  603. if (currentRota > OffSetTwo)
  604. {
  605. OffSet = OffSetTwo + OffSetOne;
  606. }
  607. else if (currentRota < OffSetTwo)
  608. {
  609. OffSet = OffSetTwo - currentRota;
  610. }
  611. else
  612. {
  613. OffSet = 0;
  614. }
  615. return OffSet;
  616. }
  617. private int GetItemIndexRota(int id)
  618. {
  619. for (int i = 0; i < rewardItemList.Count; i++)
  620. {
  621. if (id == rewardItemList[i].Item)
  622. {
  623. return i;
  624. }
  625. }
  626. return 0;
  627. }
  628. private int GetRewardIndex()
  629. {
  630. for (int i = 0; i < rewardList.Count - 1; i++)
  631. {
  632. if (ActivityDataManager.Instance.TurnTableTimes < rewardList[0].Num)
  633. {
  634. return 0;
  635. }
  636. else if (ActivityDataManager.Instance.TurnTableTimes >= rewardList[rewardList.Count - 1].Num)
  637. {
  638. return rewardList.Count;
  639. }
  640. if (ActivityDataManager.Instance.TurnTableTimes >= rewardList[i].Num &&
  641. ActivityDataManager.Instance.TurnTableTimes < rewardList[i + 1].Num)
  642. {
  643. return i + 1;
  644. }
  645. }
  646. return 0;
  647. }
  648. private string GetTImeText(string time)
  649. {
  650. string pattern = @"\[(.*?)\]";
  651. // 创建一个Regex对象
  652. Regex regex = new Regex(pattern);
  653. // 匹配输入字符串中的所有内容
  654. MatchCollection matches = Regex.Matches(time, pattern);
  655. // 存储所有提取的内容
  656. string TimeText = matches[0].Groups[1].Value;
  657. for (int i = 1; i < matches.Count; i++)
  658. {
  659. TimeText += "-" + matches[i].Groups[1].Value;
  660. }
  661. return TimeText;
  662. }
  663. }
  664. }