| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405 | 
							- using System;
 
- using UnityEngine;
 
- using FairyGUI.Utils;
 
- namespace FairyGUI
 
- {
 
-     /// <summary>
 
-     /// 
 
-     /// </summary>
 
-     public class GSlider : GComponent
 
-     {
 
-         double _min;
 
-         double _max;
 
-         double _value;
 
-         ProgressTitleType _titleType;
 
-         bool _reverse;
 
-         bool _wholeNumbers;
 
-         GObject _titleObject;
 
-         GObject _barObjectH;
 
-         GObject _barObjectV;
 
-         float _barMaxWidth;
 
-         float _barMaxHeight;
 
-         float _barMaxWidthDelta;
 
-         float _barMaxHeightDelta;
 
-         GObject _gripObject;
 
-         Vector2 _clickPos;
 
-         float _clickPercent;
 
-         float _barStartX;
 
-         float _barStartY;
 
-         EventListener _onChanged;
 
-         EventListener _onGripTouchEnd;
 
-         public bool changeOnClick;
 
-         public bool canDrag;
 
-         public GSlider()
 
-         {
 
-             _value = 50;
 
-             _max = 100;
 
-             changeOnClick = true;
 
-             canDrag = true;
 
-         }
 
-         /// <summary>
 
-         /// 
 
-         /// </summary>
 
-         public EventListener onChanged
 
-         {
 
-             get { return _onChanged ?? (_onChanged = new EventListener(this, "onChanged")); }
 
-         }
 
-         /// <summary>
 
-         /// 
 
-         /// </summary>
 
-         public EventListener onGripTouchEnd
 
-         {
 
-             get { return _onGripTouchEnd ?? (_onGripTouchEnd = new EventListener(this, "onGripTouchEnd")); }
 
-         }
 
-         /// <summary>
 
-         /// 
 
-         /// </summary>
 
-         public ProgressTitleType titleType
 
-         {
 
-             get
 
-             {
 
-                 return _titleType;
 
-             }
 
-             set
 
-             {
 
-                 if (_titleType != value)
 
-                 {
 
-                     _titleType = value;
 
-                     Update();
 
-                 }
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 
 
-         /// </summary>
 
-         public double min
 
-         {
 
-             get
 
-             {
 
-                 return _min;
 
-             }
 
-             set
 
-             {
 
-                 if (_min != value)
 
-                 {
 
-                     _min = value;
 
-                     Update();
 
-                 }
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 
 
-         /// </summary>
 
-         public double max
 
-         {
 
-             get
 
-             {
 
-                 return _max;
 
-             }
 
-             set
 
-             {
 
-                 if (_max != value)
 
-                 {
 
-                     _max = value;
 
-                     Update();
 
-                 }
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 
 
-         /// </summary>
 
-         public double value
 
-         {
 
-             get
 
-             {
 
-                 return _value;
 
-             }
 
-             set
 
-             {
 
-                 if (_value != value)
 
-                 {
 
-                     _value = value;
 
-                     Update();
 
-                 }
 
-             }
 
-         }
 
-         /// <summary>
 
-         /// 
 
-         /// </summary>
 
-         public bool wholeNumbers
 
-         {
 
-             get
 
-             {
 
-                 return _wholeNumbers;
 
-             }
 
-             set
 
-             {
 
-                 if (_wholeNumbers != value)
 
-                 {
 
-                     _wholeNumbers = value;
 
-                     Update();
 
-                 }
 
-             }
 
-         }
 
-         private void Update()
 
-         {
 
-             UpdateWithPercent((float)((_value - _min) / (_max - _min)), false);
 
-         }
 
-         private void UpdateWithPercent(float percent, bool manual)
 
-         {
 
-             percent = Mathf.Clamp01(percent);
 
-             if (manual)
 
-             {
 
-                 double newValue = _min + (_max - _min) * percent;
 
-                 if (newValue < _min)
 
-                     newValue = _min;
 
-                 if (newValue > _max)
 
-                     newValue = _max;
 
-                 if (_wholeNumbers)
 
-                 {
 
-                     newValue = Math.Round(newValue);
 
-                     percent = Mathf.Clamp01((float)((newValue - _min) / (_max - _min)));
 
-                 }
 
-                 if (newValue != _value)
 
-                 {
 
-                     _value = newValue;
 
-                     if (DispatchEvent("onChanged", null))
 
-                         return;
 
-                 }
 
-             }
 
-             if (_titleObject != null)
 
-             {
 
-                 switch (_titleType)
 
-                 {
 
-                     case ProgressTitleType.Percent:
 
-                         _titleObject.text = Mathf.FloorToInt(percent * 100) + "%";
 
-                         break;
 
-                     case ProgressTitleType.ValueAndMax:
 
-                         _titleObject.text = Math.Round(_value) + "/" + Math.Round(max);
 
-                         break;
 
-                     case ProgressTitleType.Value:
 
-                         _titleObject.text = "" + Math.Round(_value);
 
-                         break;
 
-                     case ProgressTitleType.Max:
 
-                         _titleObject.text = "" + Math.Round(_max);
 
-                         break;
 
-                 }
 
-             }
 
-             float fullWidth = this.width - _barMaxWidthDelta;
 
-             float fullHeight = this.height - _barMaxHeightDelta;
 
-             if (!_reverse)
 
-             {
 
-                 if (_barObjectH != null)
 
-                 {
 
-                     if (!SetFillAmount(_barObjectH, percent))
 
-                         _barObjectH.width = Mathf.RoundToInt(fullWidth * percent);
 
-                 }
 
-                 if (_barObjectV != null)
 
-                 {
 
-                     if (!SetFillAmount(_barObjectV, percent))
 
-                         _barObjectV.height = Mathf.RoundToInt(fullHeight * percent);
 
-                 }
 
-             }
 
-             else
 
-             {
 
-                 if (_barObjectH != null)
 
-                 {
 
-                     if (!SetFillAmount(_barObjectH, 1 - percent))
 
-                     {
 
-                         _barObjectH.width = Mathf.RoundToInt(fullWidth * percent);
 
-                         _barObjectH.x = _barStartX + (fullWidth - _barObjectH.width);
 
-                     }
 
-                 }
 
-                 if (_barObjectV != null)
 
-                 {
 
-                     if (!SetFillAmount(_barObjectV, 1 - percent))
 
-                     {
 
-                         _barObjectV.height = Mathf.RoundToInt(fullHeight * percent);
 
-                         _barObjectV.y = _barStartY + (fullHeight - _barObjectV.height);
 
-                     }
 
-                 }
 
-             }
 
-             InvalidateBatchingState(true);
 
-         }
 
-         bool SetFillAmount(GObject bar, float amount)
 
-         {
 
-             if ((bar is GImage) && ((GImage)bar).fillMethod != FillMethod.None)
 
-                 ((GImage)bar).fillAmount = amount;
 
-             else if ((bar is GLoader) && ((GLoader)bar).fillMethod != FillMethod.None)
 
-                 ((GLoader)bar).fillAmount = amount;
 
-             else
 
-                 return false;
 
-             return true;
 
-         }
 
-         override protected void ConstructExtension(ByteBuffer buffer)
 
-         {
 
-             buffer.Seek(0, 6);
 
-             _titleType = (ProgressTitleType)buffer.ReadByte();
 
-             _reverse = buffer.ReadBool();
 
-             if (buffer.version >= 2)
 
-             {
 
-                 _wholeNumbers = buffer.ReadBool();
 
-                 this.changeOnClick = buffer.ReadBool();
 
-             }
 
-             _titleObject = GetChild("title");
 
-             _barObjectH = GetChild("bar");
 
-             _barObjectV = GetChild("bar_v");
 
-             _gripObject = GetChild("grip");
 
-             if (_barObjectH != null)
 
-             {
 
-                 _barMaxWidth = _barObjectH.width;
 
-                 _barMaxWidthDelta = this.width - _barMaxWidth;
 
-                 _barStartX = _barObjectH.x;
 
-             }
 
-             if (_barObjectV != null)
 
-             {
 
-                 _barMaxHeight = _barObjectV.height;
 
-                 _barMaxHeightDelta = this.height - _barMaxHeight;
 
-                 _barStartY = _barObjectV.y;
 
-             }
 
-             if (_gripObject != null)
 
-             {
 
-                 _gripObject.onTouchBegin.Add(__gripTouchBegin);
 
-                 _gripObject.onTouchMove.Add(__gripTouchMove);
 
-                 _gripObject.onTouchEnd.Add(__gripTouchEnd);
 
-             }
 
-             onTouchBegin.Add(__barTouchBegin);
 
-         }
 
-         override public void Setup_AfterAdd(ByteBuffer buffer, int beginPos)
 
-         {
 
-             base.Setup_AfterAdd(buffer, beginPos);
 
-             if (!buffer.Seek(beginPos, 6))
 
-             {
 
-                 Update();
 
-                 return;
 
-             }
 
-             if ((ObjectType)buffer.ReadByte() != packageItem.objectType)
 
-             {
 
-                 Update();
 
-                 return;
 
-             }
 
-             _value = buffer.ReadInt();
 
-             _max = buffer.ReadInt();
 
-             if (buffer.version >= 2)
 
-                 _min = buffer.ReadInt();
 
-             Update();
 
-         }
 
-         override protected void HandleSizeChanged()
 
-         {
 
-             base.HandleSizeChanged();
 
-             if (_barObjectH != null)
 
-                 _barMaxWidth = this.width - _barMaxWidthDelta;
 
-             if (_barObjectV != null)
 
-                 _barMaxHeight = this.height - _barMaxHeightDelta;
 
-             if (!this.underConstruct)
 
-                 Update();
 
-         }
 
-         private void __gripTouchBegin(EventContext context)
 
-         {
 
-             this.canDrag = true;
 
-             context.StopPropagation();
 
-             InputEvent evt = context.inputEvent;
 
-             if (evt.button != 0)
 
-                 return;
 
-             context.CaptureTouch();
 
-             _clickPos = this.GlobalToLocal(new Vector2(evt.x, evt.y));
 
-             _clickPercent = Mathf.Clamp01((float)((_value - _min) / (_max - _min)));
 
-         }
 
-         private void __gripTouchMove(EventContext context)
 
-         {
 
-             if (!this.canDrag)
 
-                 return;
 
-             InputEvent evt = context.inputEvent;
 
-             Vector2 pt = this.GlobalToLocal(new Vector2(evt.x, evt.y));
 
-             if (float.IsNaN(pt.x))
 
-                 return;
 
-             float deltaX = pt.x - _clickPos.x;
 
-             float deltaY = pt.y - _clickPos.y;
 
-             if (_reverse)
 
-             {
 
-                 deltaX = -deltaX;
 
-                 deltaY = -deltaY;
 
-             }
 
-             float percent;
 
-             if (_barObjectH != null)
 
-                 percent = _clickPercent + deltaX / _barMaxWidth;
 
-             else
 
-                 percent = _clickPercent + deltaY / _barMaxHeight;
 
-             UpdateWithPercent(percent, true);
 
-         }
 
-         private void __gripTouchEnd(EventContext context)
 
-         {
 
-             DispatchEvent("onGripTouchEnd", null);
 
-         }
 
-         private void __barTouchBegin(EventContext context)
 
-         {
 
-             if (!changeOnClick)
 
-                 return;
 
-             InputEvent evt = context.inputEvent;
 
-             Vector2 pt = _gripObject.GlobalToLocal(new Vector2(evt.x, evt.y));
 
-             float percent = Mathf.Clamp01((float)((_value - _min) / (_max - _min)));
 
-             float delta = 0;
 
-             if (_barObjectH != null)
 
-                 delta = (pt.x - _gripObject.width / 2) / _barMaxWidth;
 
-             if (_barObjectV != null)
 
-                 delta = (pt.y - _gripObject.height / 2) / _barMaxHeight;
 
-             if (_reverse)
 
-                 percent -= delta;
 
-             else
 
-                 percent += delta;
 
-             UpdateWithPercent(percent, true);
 
-         }
 
-     }
 
- }
 
 
  |