| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520 | 
							- using System.Collections;
 
- using UnityEngine;
 
- using UI.ActivityGetYuanXiao;
 
- using FairyGUI;
 
- using System.Collections.Generic;
 
- using System.Threading.Tasks;
 
- namespace GFGGame
 
- {
 
-     public class ActivityGetYuanXiaoView : BaseView
 
-     {
 
-         private UI_ActivityGetYuanXiaoUI _ui;
 
-         private List<YuanXiaoItem> items = new List<YuanXiaoItem>();
 
-         private PickUpGame _cfg;
 
-         private int _activityID;
 
-         private int _countTime;
 
-         private int _score;
 
-         private Dictionary<int, int> _collectDict;
 
-         private Vector3 _catcherInitPos;
 
-         private bool _firstIn = true;
 
-         private bool _gamePause = false;
 
-         private float _timer;
 
-         private Dictionary<string, EffectUI> _effectUIDic = new Dictionary<string, EffectUI>();
 
-         public override void Dispose()
 
-         {
 
-             // Clear Effect
 
-             foreach (var v in _effectUIDic)
 
-             {
 
-                 EffectUIPool.Recycle(v.Value);
 
-             }
 
-             _effectUIDic.Clear();
 
-             if (_ui != null)
 
-             {
 
-                 _ui.Dispose();
 
-             }
 
-             _ui = null;
 
-             base.Dispose();
 
-         }
 
-         protected override void OnInit()
 
-         {
 
-             base.OnInit();
 
-             packageName = UI_ActivityGetYuanXiaoUI.PACKAGE_NAME;
 
-             _ui = UI_ActivityGetYuanXiaoUI.Create();
 
-             viewCom = _ui.target;
 
-             isReturnView = true;
 
-             _ui.m_loaBg.url = ResPathUtil.GetBgImgPath("hd_yx_bg_2");
 
-             _ui.m_collectList.itemRenderer = CollectListRenderer;
 
-             _ui.m_btnBack.onClick.Add(OnBtnBack);
 
-             AddEffect();
 
-         }
 
-         protected override void OnShown()
 
-         {
 
-             base.OnShown();
 
-             object[] arr = viewData as object[];
 
-             _cfg = (PickUpGame)arr[0];
 
-             _activityID = (int)arr[1];
 
-             if (_firstIn)
 
-             {
 
-                 _firstIn = false;
 
-                 _catcherInitPos = _ui.m_catcher.target.position;
 
-             }
 
-             ShowGameView();
 
-         }
 
-         protected override void OnHide()
 
-         {
 
-             base.OnHide();
 
-             HideGameView();
 
-         }
 
-         protected override void AddEventListener()
 
-         {
 
-             base.AddEventListener();
 
-             EventAgent.AddEventListener(ConstMessage.ACTIVITY_GETYUANXIAO_RESET, ResetGame);
 
-         }
 
-         protected override void RemoveEventListener()
 
-         {
 
-             base.RemoveEventListener();
 
-             EventAgent.RemoveEventListener(ConstMessage.ACTIVITY_GETYUANXIAO_RESET, ResetGame);
 
-         }
 
-         /// <summary>
 
-         /// 初始化元宵的FGUI组件
 
-         /// </summary>
 
-         /// <returns></returns>
 
-         YuanXiaoItem InitYuanXiaoItemUICom()
 
-         {
 
-             GComponent gcom = UIPackage.CreateObject("ActivityGetYuanXiao", "YuanXiaoItem").asCom;
 
-             _ui.m_YuanXiaoParent.target.AddChild(gcom);
 
-             YuanXiaoItem item = new YuanXiaoItem();
 
-             item.CreateItem(gcom, _ui.m_catcher.m_catcher, this);
 
-             return item;
 
-         }
 
-         public void ClearYuanXiaoList()
 
-         {
 
-             for (int i = 0; i < items.Count; i++)
 
-             {
 
-                 items[i].Destroy();
 
-             }
 
-             items.Clear();
 
-         }
 
-         /// <summary>
 
-         /// 从对象池中取出对象
 
-         /// </summary>
 
-         /// <param name="type"></param>
 
-         /// <returns></returns>
 
-         public YuanXiaoItem GetYuanXiaoItem(int type)
 
-         {
 
-             YuanXiaoItem item = items.Find(x => x.GetVisible() == false);
 
-             if (item == null)
 
-             {
 
-                 item = InitYuanXiaoItemUICom();
 
-             }
 
-             item.Init(type);
 
-             return item;
 
-         }
 
-         public void RestoreYuanXiaoItem(YuanXiaoItem item)
 
-         {
 
-             item.SetVisible(false);
 
-         }
 
-         /// <summary>
 
-         /// 生成元宵
 
-         /// </summary>
 
-         /// <param name="param"></param>
 
-         public void CreateItems(object param)
 
-         {
 
-             if (!isShowing)
 
-             {
 
-                 return;
 
-             }
 
-             int num = _cfg.resIdArr.Length;
 
-             List<int> roadIndexs = GetRandomRoads(num);
 
-             for (int i = 0; i < num; i++)
 
-             {
 
-                 PickUpCfg pickUpCfg = PickUpCfgArray.Instance.GetCfgsByid(_cfg.resArr[0])[_cfg.resIdArr[i] - 1];
 
-                 float time = pickUpCfg.speed * 1f / 1000;
 
-                 YuanXiaoItem item = GetYuanXiaoItem(_cfg.resIdArr[i]);
 
-                 items.Add(item);
 
-                 int score = pickUpCfg.score;
 
-                 item.SetScore(score);
 
-                 Vector3 startPos = _ui.target.GetChild("start" + roadIndexs[i]).position;
 
-                 Vector3 endPos = startPos;
 
-                 endPos.y = _ui.m_end0.y;
 
-                 item.Move(startPos, endPos, time, () => RestoreYuanXiaoItem(item));
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 随机路径
 
-         /// </summary>
 
-         /// <param name="count"></param>
 
-         /// <returns></returns>
 
-         private List<int> GetRandomRoads(int count)
 
-         {
 
-             List<int> resultList = new List<int>();
 
-             List<int> list = new List<int>();
 
-             for (int i = 0; i < 4; i++)
 
-             {
 
-                 list.Add(i);
 
-             }
 
-             for (int j = 0; j < count; j++)
 
-             {
 
-                 int randomIndex = Random.Range(0, list.Count);
 
-                 resultList.Add(list[randomIndex]);
 
-                 list.RemoveAt(randomIndex);
 
-             }
 
-             return resultList;
 
-         }
 
-         /// <summary>
 
-         /// 接住元宵
 
-         /// </summary>
 
-         /// <param name="item"></param>
 
-         public void GetYuanXiao(YuanXiaoItem item)
 
-         {
 
-             // 回收组件
 
-             RestoreYuanXiaoItem(item);
 
-             if (_countTime == 0)
 
-             {
 
-                 return;
 
-             }
 
-             // 显示得分标志
 
-             _score += item.GetScore();
 
-             _ui.m_score.text = _score.ToString();
 
-             if (_ui.m_c1.selectedIndex == 0)
 
-             {
 
-                 UpdateCollectProgress(item.GetYuanXiaoType());
 
-             }
 
-             else
 
-             {
 
-                 UpdateScore();
 
-             }
 
-             ShowFlyScore(item.GetScore());
 
-             _ui.m_catcher.m_getEffect.visible = false;
 
-             _ui.m_catcher.m_getEffect.visible = true;
 
-         }
 
-         private void ShowFlyScore(int score)
 
-         {
 
-             UI_flyScore flyItem = UI_flyScore.Proxy(_ui.m_catcher.m_flyscore.target);
 
-             flyItem.m_score.text = score.ToString();
 
-             flyItem.m_t0.Stop();
 
-             _ui.m_catcher.m_flyscore.target.visible = true;
 
-             flyItem.m_t0.Play(() =>
 
-             {
 
-                 _ui.m_catcher.m_flyscore.target.visible = false;
 
-             });
 
-             UI_flyScore.ProxyEnd();
 
-         }
 
-         public void SetDragRect()
 
-         {
 
-             _ui.m_catcher.target.visible = true;
 
-             _ui.m_catcher.target.draggable = true;
 
-             //_ui.m_catcher.target.dragBounds = new Rect(-_ui.m_catcher.target.width / 2, _ui.m_catcher.target.y, Stage.inst.width + _ui.m_catcher.target.width, 0);
 
-             Vector2 dragLeftPos = _ui.m_startLeft.LocalToGlobal(Vector2.zero) / (UIContentScaler.scaleFactor);
 
-             Vector2 dragRightPos = _ui.m_startRight.LocalToGlobal(Vector2.zero) / (UIContentScaler.scaleFactor);
 
-             _ui.m_catcher.target.dragBounds = new Rect(dragLeftPos.x, _ui.m_catcher.target.y, _ui.m_startRight.x - _ui.m_startLeft.x, 0);
 
-         }
 
-         private void StartGame()
 
-         {
 
-             CreateItems(null);
 
-             UpdateTime(null);
 
-             Timers.inst.Add(1, 0, UpdateTime);
 
-             Timers.inst.AddUpdate(UpdateGame);
 
-             Timers.inst.Add(1, 0, CheckActivityEnd);
 
-         }
 
-         private async void PlayStartAnim()
 
-         {
 
-             GRoot.inst.touchable = false;
 
-             _ui.m_startEffect.visible = false;
 
-             _ui.m_startEffect.visible = true;
 
-             await Task.Delay(820);
 
-             GRoot.inst.touchable = true;
 
-             StartGame();
 
-         }
 
-         private void UpdateTime(object param)
 
-         {
 
-             if (!isShowing)
 
-             {
 
-                 return;
 
-             }
 
-             _ui.m_time.text = TimeUtil.FormattingTimeTo_mmss(_countTime * 1000);
 
-             --_countTime;
 
-             if (_countTime < 0)
 
-             {
 
-                 Timers.inst.Remove(UpdateTime);
 
-                 bool win = true;
 
-                 if (_ui.m_c1.selectedIndex == 0)
 
-                 {
 
-                     foreach (var v in _collectDict)
 
-                     {
 
-                         if (v.Value > 0)
 
-                         {
 
-                             win = false;
 
-                             break;
 
-                         }
 
-                     }
 
-                 }
 
-                 else
 
-                 {
 
-                     if (_score < _cfg.targetScore)
 
-                     {
 
-                         win = false;
 
-                     }
 
-                 }
 
-                 GameEnd(win);
 
-             }
 
-         }
 
-         private async void GameEnd(bool win)
 
-         {
 
-             //_ui.m_catcher.target.draggable = false;
 
-             // 游戏结束时隐藏catcher,同时也作为游戏结束的标志
 
-             _ui.m_catcher.target.visible = false;
 
-             HideGameView();
 
-             if (win)
 
-             {
 
-                 ViewManager.Show<ModalStatusView>("加载中...");
 
-                 // 请求游戏结束协议
 
-                 await MiniGameProxy.ReqMiniGameEnd(_cfg.id, _cfg.type, 0, true, _activityID, false);
 
-                 ViewManager.Hide<ModalStatusView>();
 
-                 ViewManager.Show<ActivityGetYuanXiaoSuccessView>(_cfg);
 
-             }
 
-             else
 
-             {
 
-                 ViewManager.Show<ActivityGetYuanXiaoFailView>();
 
-             }
 
-         }
 
-         private void InitData()
 
-         {
 
-             _gamePause = false;
 
-             _timer = 0;
 
-             _countTime = _cfg.time;
 
-             _score = 0;
 
-             _collectDict = new Dictionary<int, int>();
 
-             items = new List<YuanXiaoItem>();
 
-         }
 
-         private void InitView()
 
-         {
 
-             _ui.m_startEffect.visible = false;
 
-             _ui.m_catcher.m_getEffect.visible = false;
 
-             _ui.m_catcher.m_flyscore.target.visible = false;
 
-             _ui.m_catcher.m_c2.selectedIndex = _cfg.id > PickUpGameArray.Instance.dataArray[0].id ? 1 : 0;
 
-             _ui.m_time.text = TimeUtil.FormattingTimeTo_mmss(_countTime * 1000);
 
-             _ui.m_score.text = _score.ToString();
 
-             _ui.m_catcher.target.position = _catcherInitPos;
 
-             InitTarget();
 
-         }
 
-         private void InitTarget()
 
-         {
 
-             // 分数
 
-             if (_cfg.targetIdArr.Length == 0)
 
-             {
 
-                 _ui.m_targetScore.text = _cfg.targetScore.ToString();
 
-                 _ui.m_c1.selectedIndex = 1;
 
-                 UpdateScore();
 
-             }
 
-             // 收集
 
-             else
 
-             {
 
-                 for (int i = 0; i < _cfg.targetIdArr.Length; i++)
 
-                 {
 
-                     _collectDict.Add(_cfg.targetIdArr[i][0], _cfg.targetIdArr[i][1]);
 
-                 }
 
-                 _ui.m_c1.selectedIndex = 0;
 
-                 _ui.m_collectList.numItems = _cfg.targetIdArr.Length;
 
-             }
 
-         }
 
-         private void UpdateScore()
 
-         {
 
-             _ui.m_progress.SetVar("cur", _score.ToString()).SetVar("target", _cfg.targetScore.ToString()).FlushVars();
 
-             if (_ui.m_catcher.target.visible && _score >= _cfg.targetScore)
 
-             {
 
-                 GameEnd(true);
 
-             }
 
-         }
 
-         private void UpdateCollectProgress(int collectType)
 
-         {
 
-             if (!_collectDict.ContainsKey(collectType))
 
-             {
 
-                 return;
 
-             }
 
-             if (_collectDict[collectType] > 0)
 
-             {
 
-                 --_collectDict[collectType];
 
-             }
 
-             _ui.m_collectList.numItems = _cfg.targetIdArr.Length;
 
-             foreach (var v in _collectDict)
 
-             {
 
-                 if (v.Value > 0)
 
-                 {
 
-                     return;
 
-                 }
 
-             }
 
-             if (_ui.m_catcher.target.visible)
 
-             {
 
-                 GameEnd(true);
 
-             }
 
-         }
 
-         private void CollectListRenderer(int index, GObject item)
 
-         {
 
-             UI_targetItem target = UI_targetItem.Proxy(item);
 
-             target.m_iconType.url = string.Format("ui://ActivityGetYuanXiao/yx_mb_{0}", _cfg.targetIdArr[index][0]);
 
-             int num = _collectDict[_cfg.targetIdArr[index][0]];
 
-             if (num == 0)
 
-             {
 
-                 target.m_c1.selectedIndex = 1;
 
-             }
 
-             else
 
-             {
 
-                 target.m_c1.selectedIndex = 0;
 
-                 target.m_num.text = num.ToString();
 
-             }
 
-             UI_targetItem.ProxyEnd();
 
-         }
 
-         private void ShowGameView()
 
-         {
 
-             InitData();
 
-             InitView();
 
-             SetDragRect();
 
-             PlayStartAnim();
 
-         }
 
-         private void HideGameView()
 
-         {
 
-             Timers.inst.Remove(UpdateTime);
 
-             Timers.inst.Remove(UpdateGame);
 
-             Timers.inst.Remove(CheckActivityEnd);
 
-             ClearYuanXiaoList();
 
-         }
 
-         private void ResetGame()
 
-         {
 
-             HideGameView();
 
-             ShowGameView();
 
-         }
 
-         private void OnBtnBack()
 
-         {
 
-             // 暂停游戏
 
-             PauseGame();
 
-             AlertMiniGame alertInfo = new AlertMiniGame();
 
-             alertInfo.desc = "退出游戏不保存进度,不扣除任何次数和道具,是否退出?";
 
-             alertInfo.btnConfirmClickAction = () =>
 
-             {
 
-                 Hide();
 
-             };
 
-             alertInfo.btnCancelClickAction = () =>
 
-             {
 
-                 ContinueGame();
 
-             };
 
-             ViewManager.Show<AlertMiniGameView>(alertInfo);
 
-         }
 
-         private void PauseGame()
 
-         {
 
-             _gamePause = true;
 
-             Timers.inst.Remove(UpdateTime);
 
-             for (int i = 0; i < items.Count; i++)
 
-             {
 
-                 items[i].SetPause(true);
 
-             }
 
-         }
 
-         private void ContinueGame()
 
-         {
 
-             _gamePause = false;
 
-             Timers.inst.Add(1, 0, UpdateTime);
 
-             for (int i = 0; i < items.Count; i++)
 
-             {
 
-                 items[i].SetPause(false);
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 计时器,每隔一段时间创建掉落的元宵
 
-         /// </summary>
 
-         /// <param name="param"></param>
 
-         private void UpdateGame(object param)
 
-         {
 
-             if (_gamePause)
 
-             {
 
-                 return;
 
-             }
 
-             _timer += Time.deltaTime * 1000;
 
-             if (_timer >= _cfg.dropTime)
 
-             {
 
-                 CreateItems(null);
 
-                 _timer = 0;
 
-             }
 
-         }
 
-         private void AddEffect()
 
-         {
 
-             _effectUIDic.Add("YXJ_Catch", EffectUIPool.CreateEffectUI(_ui.m_catcher.m_getEffect, "ui_Activity", "YXJ_Catch"));
 
-             _effectUIDic.Add("YXJ_text_start", EffectUIPool.CreateEffectUI(_ui.m_startEffect, "ui_Activity", "YXJ_text_start"));
 
-             _effectUIDic.Add("YXJ_gameing_bg_tx", EffectUIPool.CreateEffectUI(_ui.m_bgEffect, "ui_Activity", "YXJ_gameing_bg_tx"));
 
-         }
 
-         private void CheckActivityEnd(object param)
 
-         {
 
-             if (!ActivityGetYuanXiaoDataManager.Instance.CheckOpen())
 
-             {
 
-                 _ui.m_catcher.target.visible = false;
 
-                 // 活动结束时强行退回主界面
 
-                 ViewManager.Show<MainUIView>(null, true);
 
-                 ViewManager.DeleteViewStackCountDown("MainUIView");
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |