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.
204 lines
7.8 KiB
204 lines
7.8 KiB
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); |
|
} |
|
} |
|
}
|
|
|