You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
205 lines
7.8 KiB
205 lines
7.8 KiB
3 years ago
|
using UnityEngine;
|
||
|
using System.Collections;
|
||
|
using UnityEngine.UI;
|
||
|
using UnityEngine.EventSystems;
|
||
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
|
||
|
public class EquipmentSelectedCtrl : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
|
||
|
{
|
||
|
|
||
|
public GameObject viewEquipmentImg;//查看装备UI
|
||
|
public GameObject viewEquipmentImgSprite;//查看装备UI的图片精灵
|
||
|
public GameObject equipmentSelectedImg;//标识选中装备的UI
|
||
|
private string equipmentSpriteName;//装备精灵名
|
||
|
public string viewEquipmentImgSpriteName;//查看装备时装备精灵名
|
||
|
|
||
|
private RectTransform rectTransform;
|
||
|
private Vector2 pos;
|
||
|
private Vector2 offset = new Vector2(8f,8f);
|
||
|
|
||
|
bool equipSelected;
|
||
|
private GameObject selectEquipNum;
|
||
|
|
||
|
private int pipeLineUnit = 25;//管线单位(每盘多少米)
|
||
|
private int lifeSaveLightLineUnit = 100;//救生照明线单位(每盘多少米)
|
||
|
|
||
|
private UnCostEquip unCstEquip = new UnCostEquip();
|
||
|
private CostEquip cstEquip = new CostEquip();
|
||
|
// Use this for initialization
|
||
|
void Start () {
|
||
|
selectEquipNum = transform.parent.parent.parent.parent.parent.Find("SelectEquipNumImage").gameObject;
|
||
|
|
||
|
viewEquipmentImg = transform.parent.parent.Find("Image").gameObject;
|
||
|
|
||
|
equipmentSelectedImg = Resources.Load<GameObject>("UIPrefab/Equipment/EquipmentSelected");
|
||
|
|
||
|
equipmentSpriteName = this.GetComponent<Image>().sprite.name;
|
||
|
viewEquipmentImgSpriteName = equipmentSpriteName.Substring(0, equipmentSpriteName.Length - 1) + "D";
|
||
|
viewEquipmentImgSprite = Resources.Load<GameObject>("UIPrefab/Equipment/" + viewEquipmentImgSpriteName);
|
||
|
|
||
|
rectTransform = viewEquipmentImg.transform as RectTransform;
|
||
|
|
||
|
this.GetComponent<Button>().onClick.AddListener(OnClick);
|
||
|
|
||
|
ShowEquipSelecteWin.NotifyAgainSelectEqp += OnNotifyAgainSelectEqp;
|
||
|
}
|
||
|
|
||
|
private void OnNotifyAgainSelectEqp()
|
||
|
{
|
||
|
//每次重新打开选择界面,都初始化为未选择
|
||
|
if (this.name == "消防高压水带" || this.name == "救生照明线")
|
||
|
{
|
||
|
int equipNum = int.Parse(this.transform.Find("Text").GetComponent<Text>().text);
|
||
|
if (equipNum != 0)
|
||
|
{
|
||
|
this.transform.Find("Text").GetComponent<Text>().text = "0";
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (equipSelected)
|
||
|
{
|
||
|
equipSelected = false;
|
||
|
CancelSelected(this.transform);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void OnDestroy()
|
||
|
{
|
||
|
this.GetComponent<Button>().onClick.RemoveListener(OnClick);
|
||
|
ShowEquipSelecteWin.NotifyAgainSelectEqp -= OnNotifyAgainSelectEqp;
|
||
|
}
|
||
|
|
||
|
// Update is called once per frame
|
||
|
void Update () {
|
||
|
if (viewEquipmentImg.activeSelf
|
||
|
&& RectTransformUtility.ScreenPointToLocalPointInRectangle(transform.parent.parent.transform as RectTransform, Input.mousePosition, null, out pos))
|
||
|
{
|
||
|
rectTransform.anchoredPosition = new Vector2(pos.x + offset.x,
|
||
|
pos.y + offset.y);
|
||
|
}
|
||
|
|
||
|
//收集需要提交的装备数据
|
||
|
string equipItemName = this.transform.parent.parent.parent.name + "/" + this.transform.parent.name + "/" + this.name;
|
||
|
if (this.name == "消防高压水带" || this.name == "救生照明线")
|
||
|
{
|
||
|
Dictionary<string, CostEquip> costSelectedEquips = EquipSubmit.costSelectedEquips;
|
||
|
|
||
|
int equipItemNum = int.Parse(this.transform.Find("Text").GetComponent<Text>().text);
|
||
|
if (this.name == "消防高压水带")
|
||
|
{
|
||
|
//cstEquip = new pipeLine(pipeLineUnit);
|
||
|
cstEquip = new CostEquip(pipeLineUnit);
|
||
|
}
|
||
|
|
||
|
if (this.name == "救生照明线")
|
||
|
{
|
||
|
//cstEquip = new lifeSaveLightLine(lifeSaveLightLineUnit);
|
||
|
cstEquip = new CostEquip(lifeSaveLightLineUnit);
|
||
|
}
|
||
|
|
||
|
cstEquip.selectedEquipName = equipItemName;
|
||
|
cstEquip.selectedEquipNum = equipItemNum;
|
||
|
|
||
|
if (equipItemNum != 0)
|
||
|
{
|
||
|
if (!costSelectedEquips.ContainsKey(cstEquip.selectedEquipName))
|
||
|
{
|
||
|
costSelectedEquips.Add(cstEquip.selectedEquipName, cstEquip);
|
||
|
}
|
||
|
else
|
||
|
{ //同样的装备选取数量的改变
|
||
|
costSelectedEquips[cstEquip.selectedEquipName].selectedEquipNum = equipItemNum;
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (costSelectedEquips.ContainsKey(cstEquip.selectedEquipName))
|
||
|
{
|
||
|
costSelectedEquips.Remove(cstEquip.selectedEquipName);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
unCstEquip.selectedEquipName = equipItemName;
|
||
|
|
||
|
Dictionary<string, UnCostEquip> unCostSelectedEquips = EquipSubmit.unCostSelectedEquips;
|
||
|
|
||
|
if (equipSelected)
|
||
|
{
|
||
|
if (!unCostSelectedEquips.ContainsKey(unCstEquip.selectedEquipName))
|
||
|
unCostSelectedEquips.Add(unCstEquip.selectedEquipName, unCstEquip);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (unCostSelectedEquips.ContainsKey(unCstEquip.selectedEquipName))
|
||
|
{
|
||
|
unCostSelectedEquips.Remove(unCstEquip.selectedEquipName);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void OnPointerEnter(PointerEventData eventData)
|
||
|
{
|
||
|
viewEquipmentImg.SetActive(true);
|
||
|
|
||
|
viewEquipmentImg.GetComponent<Image>().sprite = viewEquipmentImgSprite.GetComponent<SpriteRenderer>().sprite;
|
||
|
viewEquipmentImg.transform.Find("Text").GetComponent<Text>().text = equipmentSpriteName.Substring(0, equipmentSpriteName.Length - 1);
|
||
|
}
|
||
|
|
||
|
public void OnPointerExit(PointerEventData eventData)
|
||
|
{
|
||
|
viewEquipmentImg.SetActive(false);
|
||
|
}
|
||
|
|
||
|
private void OnClick()
|
||
|
{
|
||
|
if (this.name == "救生照明线" || this.name == "消防高压水带")
|
||
|
{
|
||
|
if (selectEquipNum)
|
||
|
{
|
||
|
selectEquipNum.SetActive(true);
|
||
|
|
||
|
selectEquipNum.transform.Find("ConfirmButton").GetComponent<ConfirmSelectEquipNum>().selectedEquipLable = this.transform.Find("Text").gameObject;
|
||
|
|
||
|
int equipNum = int.Parse(this.transform.Find("Text").GetComponent<Text>().text);
|
||
|
selectEquipNum.transform.Find("ConfirmButton").GetComponent<ConfirmSelectEquipNum>().equipNum = 0;
|
||
|
selectEquipNum.transform.Find("InputField").GetComponent<InputField>().text = "0";
|
||
|
selectEquipNum.transform.Find("PlusButton").GetComponent<EquipPlusOrReduce>().equipNum = 0;
|
||
|
selectEquipNum.transform.Find("ReduceButton").GetComponent<EquipPlusOrReduce>().equipNum = 0;
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (!equipSelected)
|
||
|
{
|
||
|
var equipmentSelectedFlagImg = GameObject.Instantiate(equipmentSelectedImg) as GameObject;
|
||
|
equipmentSelectedFlagImg.name = "EquipmentSelected";
|
||
|
equipmentSelectedFlagImg.transform.parent = this.transform;
|
||
|
Vector2 pos = new Vector2(-equipmentSelectedFlagImg.GetComponent<RectTransform>().rect.width/2, -equipmentSelectedFlagImg.GetComponent<RectTransform>().rect.height/2);
|
||
|
equipmentSelectedFlagImg.GetComponent<RectTransform>().anchoredPosition = pos;
|
||
|
equipmentSelectedFlagImg.GetComponent<RectTransform>().localScale = new Vector3(1f,1f,1f);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
CancelSelected(this.transform);
|
||
|
}
|
||
|
|
||
|
equipSelected = !equipSelected;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void CancelSelected(Transform tsf)
|
||
|
{
|
||
|
foreach (Transform t in tsf)
|
||
|
{
|
||
|
if(t.name == "EquipmentSelected")
|
||
|
Destroy(t.gameObject);
|
||
|
}
|
||
|
}
|
||
|
}
|