powerfun-unity/Assets/Scripts/UI/Prefab/Panel/MapListController.cs
CaiYanPeng f4cbad819b Merge remote-tracking branch 'origin/dev' into dev_cyp
# Conflicts:
#	Assets/Resources/Images/back.png.meta
#	Assets/Resources/Images/change account.png.meta
#	Assets/Scripts/UI/Prefab/Panel/EditUserController.cs
2021-04-15 15:59:57 +08:00

294 lines
9.8 KiB
C#

using Assets.Scripts;
using Assets.Scripts.Apis;
using Assets.Scripts.Apis.Models;
using Assets.Scripts.UI.Prefab.MapList;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class MapListController : PFUIPanel
{
// Start is called before the first frame update
[SerializeField] GameObject map;
[SerializeField] GameObject content;
[SerializeField] GameObject scroll;
[HideInInspector] public int pageIndex = 0;
[HideInInspector] public int pageSize = 20;
[HideInInspector] public string hard = "全部";
private Transform distanceOptions;
private Transform diffOptions;
private Transform tdContainer;
private Transform favContainer;
private Transform sorts;
private Transform sortDir;
private Transform searchInput;
//private Transform distanceOption;
//private Transform distanceOption;
private Button returnBtn;
GameObject btnMapMode;
public GameObject Content {
get
{
return content;
}
}
private bool isEnd = false;
protected override void Start()
{
//if (hardSelector != null)
//{
// hardSelector.onValueChanged.AddListener(ChangeHard);
//}
btnMapMode = this.transform.Find("SwitchMode").gameObject;
SetRounded(btnMapMode.transform, 64);
UIManager.AddEvent(btnMapMode, EventTriggerType.PointerClick, (e) =>
{
UIManager.ShowBigMapPanel();
});
if (content!=null)
{
//var transform = content.transform.GetComponent<RectTransform>();
//var layout = content.GetComponent<GridLayoutGroup>();
//if (layout != null)
//{
// var width = transform.rect.width;
// layout.cellSize = new Vector2((width - 120) / 5, (width - 120) / 5);
//}
}
distanceOptions = transform.Find("Panel").Find("Panel").Find("distanceOptions");
if (distanceOptions != null)
{
var dDropdown = distanceOptions.GetComponent<Dropdown>();
dDropdown.options = MapFilterOptions.distances;
dDropdown.onValueChanged.AddListener(ChangeDistance);
}
diffOptions = transform.Find("Panel").Find("Panel").Find("DifficultyContainer");
if (diffOptions != null)
{
foreach (Transform t in diffOptions)
{
var button = t.GetComponent<Button>();
var image = t.GetComponent<Image>();
var text = t.Find("Text").GetComponent<Text>();
button.onClick.AddListener(() =>
{
ColorUtility.TryParseHtmlString("#23232D", out Color c1);
if (image.color.r == c1.r && image.color.g == c1.g && image.color.b == c1.b)
{
ColorUtility.TryParseHtmlString("#F93086", out Color c);
image.color = c;
text.color = new Color(1, 1, 1,1);
hands.Add(MapFilterOptions.diffDict[text.text]);
}
else
{
ColorUtility.TryParseHtmlString("#6E6E7D", out Color c);
image.color = c1;
text.color = c;
hands.Remove(MapFilterOptions.diffDict[text.text]);
}
scroll.GetComponent<ScrollRect>().verticalNormalizedPosition = 1;
Refresh();
});
}
}
BindHeadImage();
GetList();
if (scroll != null)
{
UIManager.AddEvent(scroll, UnityEngine.EventSystems.EventTriggerType.EndDrag, OnEndDrag);
}
//UIManager.AddEvent(transform.Find("Panel").Find("Panel"))
//var obj = Instantiate(Resources.Load<GameObject>("Canvas"));
//obj.transform.parent = transform.parent;
var btnQuit = this.transform.Find("BtnQuit");
if(btnQuit != null)
{
returnBtn = btnQuit.GetComponent<Button>();
UIManager.AddEvent(returnBtn.gameObject, EventTriggerType.PointerClick, (e) =>
{
UIManager.ShowHomePanel();
});
}
tdContainer = transform.Find("Panel").Find("Panel").Find("3dContainer");
favContainer = transform.Find("Panel").Find("Panel").Find("FavContainer");
if (tdContainer != null)
{
tdContainer.GetComponent<Button>().onClick.AddListener(() =>
{
var gou = tdContainer.Find("Gou").gameObject;
bool v = !gou.activeSelf;
gou.SetActive(v);
is3d = v;
Refresh();
});
}
if (favContainer != null)
{
favContainer.GetComponent<Button>().onClick.AddListener(() =>
{
var gou = favContainer.Find("Gou").gameObject;
bool v = !gou.activeSelf;
gou.SetActive(v);
isFav = v;
Refresh();
});
}
searchInput = transform.Find("Panel").Find("Panel").Find("SearchInput");
if (searchInput != null)
{
searchInput.Find("Button").GetComponent<Button>().onClick.AddListener(() =>
{
ftname = searchInput.GetComponent<InputField>().text;
Refresh();
});
}
sorts = transform.Find("Panel").Find("Panel").Find("FilterOptions");
if (sorts != null)
{
var drop = sorts.GetComponent<Dropdown>();
drop.options = MapFilterOptions.sorts;
drop.value = 3;
drop.onValueChanged.AddListener((int index)=>
{
sort = drop.options[index].text;
var image = sortDir.Find("Image").GetComponent<Image>();
image.sprite = Resources.Load<Sprite>("Images/DOWN");
sortDire = "desc";
Refresh();
});
}
sortDir = transform.Find("Panel").Find("Panel").Find("Dir");
if (sortDir)
{
var image = sortDir.Find("Image").GetComponent<Image>();
sortDir.GetComponent<Button>().onClick.AddListener(() =>
{
if (image.sprite.name == "DOWN")
{
image.sprite = Resources.Load<Sprite>("Images/UP");
sortDire = "asc";
}
else
{
image.sprite = Resources.Load<Sprite>("Images/DOWN");
sortDire = "desc";
}
Refresh();
});
}
}
/// <summary>
/// 绑定头像
/// </summary>
void BindHeadImage()
{
var headImage = this.transform.Find("HeadImage").GetComponent<RawImage>();
var material = Instantiate(Resources.Load<Material>("UI/Material/RoundedCornersTextureMaterial"));
var rect = ((RectTransform)headImage.transform).rect;
material.SetVector(Shader.PropertyToID("_WidthHeightRadius"), new Vector4(rect.width, rect.height, rect.height, 0));
headImage.material = material;
Utils.DisplayImage(StartCoroutine, headImage, App.CurrentUser.WxHeadImg);
UIManager.AddEvent(headImage.gameObject, EventTriggerType.PointerClick, (e) =>
{
UIManager.ShowEditUserPanel();
});
}
private void OnEndDrag(BaseEventData arg0)
{
var scrollrect = scroll.GetComponent<ScrollRect>();
if (scrollrect.verticalNormalizedPosition <= 0)
{
Debug.Log(scrollrect.verticalNormalizedPosition);
pageIndex++;
GetList();
}
if (scrollrect.verticalNormalizedPosition >= 1)
{
Refresh();
}
}
private void ChangeDistance(int index)
{
var text = distanceOptions.GetComponent<Dropdown>().options[index].text;
distance = MapFilterOptions.distanceDict[text];
scroll.GetComponent<ScrollRect>().verticalNormalizedPosition = 1;
Refresh();
//var text = hardSelector.options[index].text;
//if (text == "全部难度")
//{
//}
}
//查询条件
string ftname = "";
string distance = "";
List<string> hands = new List<string>();
bool is3d = false,isFav = false;
string sort = "Hot",sortDire = "desc";
//string name = "";
//string name = "";
public void GetList()
{
if (isEnd) return;
var res = ConfigHelper.mapApi.GetList(pageIndex, pageSize, ftname,distance,string.Join(",",hands),is3d,sort,sortDire,isFav);
if (res.result)
{
if (res.data.Count == 0 && pageIndex != 0)
{
isEnd = true;
}
else
{
isEnd = false;
DisplayMaps(res.data);
}
}
}
void DisplayMaps(List<MapRoute> list)
{
if (map != null)
{
foreach (var item in list)
{
var obj = Instantiate(map);
obj.GetComponent<MapItem>().Initial(item);
//obj.SendMessage("Initial", );
obj.transform.parent = content.transform;
obj.transform.localScale = new Vector3(1, 1, 1);
}
}
}
public void Refresh()
{
content.transform.DestroyChildren();
pageIndex = 0;
GetList();
}
void ResetList()
{
distance = "";
hands = new List<string>();
name = "";
Refresh();
}
// Update is called once per frame
void Update()
{
}
}