| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using FancyScrollView.FocusOn;
- using UnityEngine;
- using UnityEngine.SceneManagement;
- using UnityEngine.UI;
- using EasingCore;
- using JC;
- using FancyScrollView;
- [Serializable]
- public class LevelInfo
- {
- public string Name;
- public Sprite Icon;
- //自动语言转换id
- public string textId;
- //添加哪个语言脚本
- public int languageType = 0;
- public int startGameType = -1;
- }
- public class HomeView_ChallengeOption : MonoBehaviour
- {
- public GameObject entryList;
- [SerializeField] ScrollView scrollView = default;
- [SerializeField] Button prevCellButton = default;
- [SerializeField] Button nextCellButton = default;
- [SerializeField] ScrollPanel productsPanel;
- [Tooltip("所有关卡的设置信息")]
- public List<LevelInfo> levelInfos;
- List<LevelInfo> _tempLevelInfos = new List<LevelInfo>();
- //弓箭游戏列表
- List<string> gameTextIds = new List<string> { "OlynpicArchery", "WolfHunt", "LevelWildAttack", "FruitExpert", "LevelDuckHunter", "HareHunt", "PheasuntHunt"};
- //切换枪械情况下切换这个游戏列表
- //OlynpicArcheryGun 是射击版的OlynpicArchery
- List<string> gameTextIds_gun = new List<string> { "OlynpicArcheryGun", "FruitExpert", "LevelDuckHunter", "MovingTarget" };
- //#if UNITY_ANDROID
- // List<String> gameTextIds = new List<string> { "OlynpicArchery", "LevelWildAttack", "FruitExpert", "LevelDuckHunter" };
- //#else
- // List<String> gameTextIds = new List<string>{ "OlynpicArchery", "WolfHunt", "LevelWildAttack", "FruitExpert", "LevelDuckHunter", "HareHunt", "PheasuntHunt" };
- //#endif
- void Awake()
- {
- //根据条件激活野鸡关卡或野鸭关卡
- //if (CommonConfig.AppArea == 0)
- //{
- // entryList.transform.Find("Item1").gameObject.SetActive(GlobalDataTemp.pkMatchType != PKMatchType.None);
- // entryList.transform.Find("Item3").gameObject.SetActive(GlobalDataTemp.pkMatchType == PKMatchType.None);
- //}
- //else
- //{
- // entryList.transform.Find("Item1").gameObject.SetActive(true);
- // entryList.transform.Find("Item3").gameObject.SetActive(false);
- //}
- //entryList.transform.Find("Item4").gameObject.SetActive(GlobalDataTemp.pkMatchType == PKMatchType.None);
- //transform.Find("BtnFruitMaster").gameObject.SetActive(GlobalDataTemp.pkMatchType == PKMatchType.None);
- //增加了对两个按钮事件的响应
- prevCellButton.onClick.AddListener(() => {
- scrollView.SelectPrevCell();
- });
- nextCellButton.onClick.AddListener(() => {
- scrollView.SelectNextCell();
- });
- //对选中的当前对象的下标的显示
- scrollView.OnSelectionChanged(OnSelectionChanged);
- }
- void Start()
- {
-
- //按 gameTextIds 重新排序
- //for (int i = 0; i < gameTextIds.Count; i++)
- //{
- // for (int j = 0; j < levelInfos.Count; j++)
- // {
- // if (gameTextIds[i] == levelInfos[j].textId)
- // {
- // _tempLevelInfos.Add(levelInfos[j]);
- // break;
- // }
- // }
- //}
- //var _items = Enumerable.Range(0, 21)
- // .Select(i => {
- // int _index = Mathf.FloorToInt(i % _tempLevelInfos.Count);
- // LevelInfo levelInfo = _tempLevelInfos[_index];
- // //Debug.Log("初始化:"+i+",index:"+_index);
- // return new ItemData(levelInfo.Name, levelInfo.Icon, levelInfo.textId, levelInfo.languageType);
- // })
- // .ToArray();
- //scrollView.UpdateData(_items);
- //scrollView.SelectCell(0);
- }
- //通过面板 HomeView_TopBarView.onChangeTypeEvent 调用
- //根据选择的模式来切换内容
- public void refreshList(DeviceMode deviceMode) {
- Debug.Log("refreshList:"+ deviceMode);
- List<string> _gameTextIds = new();
- if (deviceMode == DeviceMode.Archery)
- {
- _gameTextIds = gameTextIds;
- }
- else if (deviceMode == DeviceMode.Gun) {
- _gameTextIds = gameTextIds_gun;
- }
- if (_gameTextIds.Count == 0) return;
- _tempLevelInfos.Clear();
- //按 gameTextIds 重新排序
- for (int i = 0; i < _gameTextIds.Count; i++)
- {
- for (int j = 0; j < levelInfos.Count; j++)
- {
- if (_gameTextIds[i] == levelInfos[j].textId)
- {
- _tempLevelInfos.Add(levelInfos[j]);
- break;
- }
- }
- }
- Debug.Log("图标生成的数量是:"+ _gameTextIds.Count * 3);
- var _items = Enumerable.Range(0, _gameTextIds.Count*3)
- .Select(i => {
- int _index = Mathf.FloorToInt(i % _tempLevelInfos.Count);
- LevelInfo levelInfo = _tempLevelInfos[_index];
- //Debug.Log("初始化:"+i+",index:"+_index);
- return new ItemData(levelInfo.Name, levelInfo.Icon, levelInfo.textId, levelInfo.languageType);
- })
- .ToArray();
- scrollView.UpdateData(_items);
- scrollView.SelectCell(0);
- }
- void OnDestroy()
- {
- }
- bool _InitProductsPanel = false;
- void InitProductsPanel()
- {
- int page = 1;
- //增加了对两个按钮事件的响应
- prevCellButton.onClick.AddListener(() => {
- productsPanel.MoveNextToCenter(-page);
- });
- nextCellButton.onClick.AddListener(() => {
- productsPanel.MoveNextToCenter(page);
- });
- var games = levelInfos.Select(i => new ItemData(i.Name, i.Icon, i.textId, i.languageType))
- .ToArray();
- if (!_InitProductsPanel)
- {
- _InitProductsPanel = true;
- productsPanel.onReceiveItemViewInfo.AddListener(onReceiveItemViewInfo);
- productsPanel.onItemChange.AddListener(delegate (RectTransform item, int index) {
- //Debug.Log("----index:"+ index);
- });
- int gameIndex = 0;
- foreach (var game in games)
- {
- var gameObj = Instantiate(productsPanel.prefabs[0], productsPanel.GetComponent<ScrollRect>().content);
- //Game_Cell gameCell = gameObj.GetComponent<Game_Cell>();
- //gameCell.Initialize(gameIndex, (index)=> {
- // OnSelectionChanged(index);
- // for (int i = 0; i < productsPanel.itemList.Count; i++)
- // {
- // productsPanel.itemList[i].GetComponent<Game_Cell>().onSelected(index);
- // }
- //});
- //gameCell.UpdateContent(game);
- productsPanel.AddItem(gameObj.GetComponent<RectTransform>());
- gameIndex++;
- }
- productsPanel.UpdateItems();
- productsPanel.SelectItemByStartIndex();
- }
- }
- void onReceiveItemViewInfo(RectTransform item, Vector3 positionInView, Vector2 viewSize)
- {
- //float distanceRate = Mathf.Abs(positionInView.x * 2) / viewSize.x;
- //float scaleRate = 1f - 0.2f * distanceRate;
- //item.Find("Box").localScale = new Vector3(scaleRate, scaleRate, 1);
- }
- //游戏选择回调 scroll view control
- void OnSelectionChanged(int index, bool selected)
- {
- //Debug.Log(index + ":" + _tempLevelInfos[Mathf.FloorToInt(index % _tempLevelInfos.Count)].Name);
- LevelInfo _levelInfo = _tempLevelInfos[Mathf.FloorToInt(index % _tempLevelInfos.Count)];
- if (_levelInfo.startGameType != -1 && selected)
- {
- JudgmentMode(_levelInfo.startGameType);
- }
- //Debug.Log(str);
- }
- /*
- 只有奥运射箭,打野鸡,打野兔,打野狼这四个最初的游戏,才有这三个模式选择;还有三个新的游戏,只有一个本地游戏的模式,那就不用选择,直接进入游戏
- */
- void JudgmentMode(int _startGameType) {
- //_startGameType 这里gameType仅仅用于判断模式
- switch (_startGameType)
- {
- case 1: //奥运射箭
- case 3: //打野兔
- case 4: //打野鸡
- case 5: //打野狼
- GameMgr.judgmentGameType = _startGameType;
- AudioMgr.ins.PlayBtn();
- //进入模式选择页面
- ViewMgr.Instance.ShowView<ModeSelectView>();
- //连接弓箭并且是9轴的情况下 && AimHandler.ins.bRuning9Axis()
- if (_startGameType == 1)
- {
- ModeSelectView.ins.isShowButton = true;
- }
- else
- {
- ModeSelectView.ins.isShowButton = false;
- }
-
- //if (GlobalData.MyDeviceMode == DeviceMode.Gun)
- //{
- // ModeSelectView.ins.InitGunButtons();
- //}
- //else {
- // //连接弓箭
- // if (_startGameType == 1)
- // {
- // //当连接HOUYI Pro和其他红外设备时候,双弓射箭也需要屏蔽掉
- // if (BluetoothAim.ins.isMainConnectToInfraredDevice())
- // {
- // ModeSelectView.ins.isShowButton = false;
- // }
- // else {
- // ModeSelectView.ins.isShowButton = true;
- // }
- // }
- // else
- // {
- // ModeSelectView.ins.isShowButton = false;
- // }
- // ModeSelectView.ins.InitButtons();
- //}
- break;
- default:
- StartGame(_startGameType);
- break;
- }
- }
- //只有一个本地游戏的模式,没有其他模式
- void StartGame(int gameType)
- {
- //Debug.Log("gameType:"+ gameType+ ",GlobalDataTemp.pkMatchType:"+ GlobalDataTemp.pkMatchType);
- AudioMgr.ins.PlayBtn();
- GameMgr.gameType = gameType;
- GlobalData.singlePlayerGameType = gameType;
- if (gameType == 15)
- {
- SceneManager.LoadScene("FruitMaster", LoadSceneMode.Single);
- }
- else if (gameType == 14)
- {
- SceneManager.LoadScene("WildAttack", LoadSceneMode.Single);
- }
- else if (gameType == 13)
- {
- SceneManager.LoadScene("DuckHunter", LoadSceneMode.Single);
- }
- else if (gameType == 16) {
- //MovingTarget
- SceneManager.LoadScene("Hyperspace01", LoadSceneMode.Single);
- }
- }
- public void back()
- {
- AudioMgr.ins.PlayBtn();
- ViewMgr.Instance.DestroyView<ChallengeOptionView>();
- }
- public bool OnMenuBack()
- {
- ViewMgr.Instance.DestroyView<ChallengeOptionView>();
- return true;
- }
- string[] GetFormatArgs(string[] array)
- {
- string[] newArray = new string[array.Length - 1];
- for (int i = 1; i < array.Length; i++)
- {
- newArray[i - 1] = array[i];
- }
- return newArray;
- }
- }
|