天津23维预案
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

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);
}
}
}