using UnityEngine; using UnityEngine.UI; using UniRx; using AX.ImageViewer; public class FireElevatorAttributePanel : UIView<FireElevator,FireElevatorReactive> { //编号 public Text NumberText; public InputField NumberInput; //载重 public Text LoadText; public InputField LoadInput; //通往层数 public Text LayerText; public InputField LayerInput; //保存按钮 public Button SaveButton; public override void Awake() { base.Awake(); #region DataSource Bind //编号 DataSource.Number.SubscribeToText(NumberText).AddTo(gameObject); DataSource.Number.SubscribeToText(NumberInput).AddTo(gameObject); NumberInput.OnValueChangedAsObservable().Subscribe(s => DataSource.Number.Value = s); //载重 DataSource.Load.SubscribeToText(LoadText).AddTo(gameObject); DataSource.Load.SubscribeToText(LoadInput).AddTo(gameObject); LoadInput.OnValueChangedAsObservable().Subscribe(s => DataSource.Load.Value = s); //通往层数 DataSource.Layer.SubscribeToText(LayerText).AddTo(gameObject); DataSource.Layer.SubscribeToText(LayerInput).AddTo(gameObject); LayerInput.OnValueChangedAsObservable().Subscribe(s => DataSource.Layer.Value = s); #endregion #region Button Click //保存 SaveButton.onClick.AsObservable().Subscribe(onClick => { SaveData(); }).AddTo(gameObject); transform.Find("TitleBar/CloseButton").GetComponent<Button>().OnClickAsObservable() .Subscribe(_ => Hide()); Observable.EveryLateUpdate() .Where(_ => Input.GetMouseButtonDown(1)) .Subscribe(_ => Hide()); #endregion } public override void Show() { base.Show(); Vector2 pos = MainMenu.Instance.GetMousePosition(gameObject); gameObject.GetComponent<RectTransform>().anchoredPosition = new Vector2(pos.x, pos.y); LoadData(); GetComponent<AttributePanelControl>().ResetPanel(); } /// <summary> /// 加载数据 /// <summary> private void LoadData() { string url = string.Format(HttpManager.Instance.GetFireLiftsById,DataSource.Id); HttpManager.Instance.Get<FireElevator>(url, d => { DataSource.SetData(d); }); } /// <summary> /// 保存数据 /// <summary> private void SaveData() { string url = string.Format(HttpManager.Instance.PostFireLiftsById, DataSource.Id); HttpManager.Instance.Post(url, DataSource.GetData()); } }