Beispiel #1
0
        public void SetCursor(CursorPriority priority, Cursor cursor)
        {
            var i = (int)priority;

            if (cursor == null)
            {
                if (_cursors[i] != null)
                {
                    _cursors[i].Dispose();
                    _cursors[i] = null;
                }
                var next = _cursors.FirstOrDefault(c => c != null);
                if (next != null)
                {
                    next.Visual.gameObject.active = true;
                }
                else
                {
                    Screen.showCursor = true;
                }
            }
            else
            {
                var sprite = this.GetSprite(cursor.Sprite);
                var img    = new Image(
                    Vector3.zero,
                    sprite.Size,
                    cursor.Sprite,
                    new VisualOptions {
                    Name       = "default_cursor",
                    PixelAlign = true
                });
                Vector2 offset = cursor.Offset;
                offset.y   -= img.Size.y;
                _offsets[i] = new Vector3(offset.x, offset.y, 0f);
                foreach (var c in _cursors)
                {
                    if (c != null)
                    {
                        c.Visual.gameObject.active = false;
                    }
                }
                _cursors[i]       = img;
                Screen.showCursor = false;
            }
        }
Beispiel #2
0
        private void PushCursorToStack(CursorState cursorState, CursorPriority priority)
        {
            if (m_CursorStack == null)
            {
                m_CursorStack = new List <Tuple <CursorState, CursorPriority> >();
            }

            if (m_CursorStack.Count == 0)
            {
                m_CursorStack.Add(Tuple.Create(cursorState, priority));
                return;
            }

            var index = m_CursorStack.FindLastIndex((t) => t.Item2 == priority);

            if (index == -1)
            {
                if (priority == CursorPriority.High)   // high at the end
                {
                    m_CursorStack.Add(Tuple.Create(cursorState, priority));
                }
                else if (priority == CursorPriority.Medium)
                {
                    index = m_CursorStack.FindLastIndex((t) => t.Item2 == CursorPriority.Low);
                    if (index == -1)
                    {
                        m_CursorStack.Insert(0, Tuple.Create(cursorState, priority));
                    }
                    else
                    {
                        m_CursorStack.Insert(index, Tuple.Create(cursorState, priority));
                    }
                }
                else if (priority == CursorPriority.Low)
                {
                    m_CursorStack.Insert(0, Tuple.Create(cursorState, priority));
                }
            }
            else
            {
                m_CursorStack.Insert(index, Tuple.Create(cursorState, priority));
            }
        }
Beispiel #3
0
        public void SetCursorState(CursorState cursorState, CursorPriority priority)
        {
            if (m_CursorState != cursorState)
            {
                if (cursorState == CursorState.Default)
                {
                    var tuple = PopCursorFromStack();
                    cursorState = tuple.Item1;
                    priority    = tuple.Item2;
                }
                else if (m_CursorPriority > priority)
                {
                    PushCursorToStack(cursorState, priority);
                    return;
                }

                if (cursorState != CursorState.Default && m_CursorState != CursorState.Default)
                {
                    // a higher priority cursor will overlap //
                    PushCursorToStack(m_CursorState, m_CursorPriority);
                }

                m_CursorState    = cursorState;
                m_CursorPriority = priority;

                switch (cursorState)
                {
                case CursorState.Default:
                    m_CurrentTextures = m_DefaultTextures;
                    break;

                case CursorState.DefaultDisabled:
                    m_CurrentTextures = m_DefaultDisabledTextures;
                    break;

                case CursorState.NResize:
                    m_CurrentTextures = m_NResizeTextures;
                    break;

                case CursorState.EResize:
                    m_CurrentTextures = m_EResizeTextures;
                    break;

                case CursorState.Hand:
                    m_CurrentTextures = m_HandTextures;
                    break;

                case CursorState.Crosshair:
                    m_CurrentTextures = m_CrosshairTextures;
                    break;

                case CursorState.CrosshairDisabled:
                    m_CurrentTextures = m_CrosshairDisabledTextures;
                    break;

                case CursorState.Scan:
                    m_CurrentTextures = m_ScanTextures;
                    break;

                case CursorState.Attack:
                    m_CurrentTextures = m_AttackTextures;
                    break;

                case CursorState.Walk:
                    m_CurrentTextures = m_WalkTextures;
                    break;

                case CursorState.Use:
                    m_CurrentTextures = m_UseTextures;
                    break;

                case CursorState.Talk:
                    m_CurrentTextures = m_TalkTextures;
                    break;

                case CursorState.Look:
                    m_CurrentTextures = m_LookTextures;
                    break;

                case CursorState.Open:
                    m_CurrentTextures = m_OpenTextures;
                    break;

                case CursorState.Loot:
                    m_CurrentTextures = m_LootTextures;
                    break;

                default:
                    m_CurrentTextures = null;
                    break;
                }

                if (m_CurrentTextures != null && m_CurrentTextures.Length > 0)
                {
                    m_CustomCursor      = true;
                    m_SequenceAnimation = m_CurrentTextures.Length > 1;
                    m_AnimationFrame    = 0;

                    if (!m_SequenceAnimation)
                    {
                        Cursor.SetCursor(m_CurrentTextures[0], Vector2.zero, CursorMode.Auto);
                    }
                    else if (m_DefaultAnimationTick == 0)
                    {
                        m_AnimationTick = 1f / m_CurrentTextures.Length;
                    }
                    else
                    {
                        m_AnimationTick = m_DefaultAnimationTick;
                    }
                }
                else
                {
                    m_CustomCursor = false;
                    Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
                }
            }
        }
        public void SetCursorState(CursorState cursorState, CursorPriority priority)
        {
            if (_cursorState != cursorState)
            {
                // priority must match the priority of the original cursor
                if (priority < _cursorPriority)
                {
                    return;
                }

                // usually default cursor can be overriten by any action
                if (cursorState == CursorState.Default)
                {
                    priority = CursorPriority.Low;
                }

                _cursorState    = cursorState;
                _cursorPriority = priority;

                switch (cursorState)
                {
                case CursorState.Default:
                    _currentTextures = _defaultTextures;
                    break;

                case CursorState.DefaultDisabled:
                    _currentTextures = _defaultDisabledTextures;
                    break;

                case CursorState.NResize:
                    _currentTextures = _nResizeTextures;
                    break;

                case CursorState.EResize:
                    _currentTextures = _eResizeTextures;
                    break;

                case CursorState.Hand:
                    _currentTextures = _handTextures;
                    break;

                case CursorState.Crosshair:
                    _currentTextures = _crosshairTextures;
                    break;

                case CursorState.CrosshairDisabled:
                    _currentTextures = _crosshairDisabledTextures;
                    break;

                case CursorState.Scan:
                    _currentTextures = _scanTextures;
                    break;

                case CursorState.Attack:
                    _currentTextures = _attackTextures;
                    break;

                case CursorState.Walk:
                    _currentTextures = _walkTextures;
                    break;

                case CursorState.Use:
                    _currentTextures = _useTextures;
                    break;

                case CursorState.Talk:
                    _currentTextures = _talkTextures;
                    break;

                case CursorState.Look:
                    _currentTextures = _lookTextures;
                    break;

                case CursorState.Open:
                    _currentTextures = _openTextures;
                    break;

                case CursorState.Loot:
                    _currentTextures = _lootTextures;
                    break;

                default:
                    _currentTextures = null;
                    break;
                }

                if (_currentTextures != null && _currentTextures.Length > 0)
                {
                    _customCursor      = true;
                    _sequenceAnimation = _currentTextures.Length > 1;
                    _animationFrame    = 0;

                    if (!_sequenceAnimation)
                    {
                        Cursor.SetCursor(_currentTextures[0], Vector2.zero, CursorMode.Auto);
                    }
                    else if (_defaultAnimationTick == 0)
                    {
                        _animationTick = 1f / _currentTextures.Length;
                    }
                    else
                    {
                        _animationTick = _defaultAnimationTick;
                    }
                }
                else
                {
                    _customCursor = false;
                    Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
                }
            }
        }
 public void SetCursorState(AppearanceActions action, CursorPriority priority)
 {
     SetCursorState(GetCursorForAction(action), priority);
 }
        internal void SetCursorState(CursorState cursorState, CursorPriority priority)
        {
            if (m_CursorState != cursorState)
            {
                // priority must match the priority of the original cursor
                if (priority < m_CursorPriority)
                {
                    return;
                }

                // usually default cursor can be overriten by any action
                if (cursorState == CursorState.Default)
                {
                    priority = CursorPriority.Low;
                }

                m_CursorState    = cursorState;
                m_CursorPriority = priority;

                switch (cursorState)
                {
                case CursorState.Default:
                    m_CurrentTextures = m_DefaultTextures;
                    break;

                case CursorState.DefaultDisabled:
                    m_CurrentTextures = m_DefaultDisabledTextures;
                    break;

                case CursorState.NResize:
                    m_CurrentTextures = m_NResizeTextures;
                    break;

                case CursorState.EResize:
                    m_CurrentTextures = m_EResizeTextures;
                    break;

                case CursorState.Hand:
                    m_CurrentTextures = m_HandTextures;
                    break;

                case CursorState.Crosshair:
                    m_CurrentTextures = m_CrosshairTextures;
                    break;

                case CursorState.CrosshairDisabled:
                    m_CurrentTextures = m_CrosshairDisabledTextures;
                    break;

                case CursorState.Scan:
                    m_CurrentTextures = m_ScanTextures;
                    break;

                case CursorState.Attack:
                    m_CurrentTextures = m_AttackTextures;
                    break;

                case CursorState.Walk:
                    m_CurrentTextures = m_WalkTextures;
                    break;

                case CursorState.Use:
                    m_CurrentTextures = m_UseTextures;
                    break;

                case CursorState.Talk:
                    m_CurrentTextures = m_TalkTextures;
                    break;

                case CursorState.Look:
                    m_CurrentTextures = m_LookTextures;
                    break;

                case CursorState.Open:
                    m_CurrentTextures = m_OpenTextures;
                    break;

                case CursorState.Loot:
                    m_CurrentTextures = m_LootTextures;
                    break;

                default:
                    m_CurrentTextures = null;
                    break;
                }

                if (m_CurrentTextures != null && m_CurrentTextures.Length > 0)
                {
                    m_CustomCursor      = true;
                    m_SequenceAnimation = m_CurrentTextures.Length > 1;
                    m_AnimationFrame    = 0;

                    if (!m_SequenceAnimation)
                    {
                        Cursor.SetCursor(m_CurrentTextures[0], Vector2.zero, CursorMode.Auto);
                    }
                    else if (m_DefaultAnimationTick == 0)
                    {
                        m_AnimationTick = 1f / m_CurrentTextures.Length;
                    }
                    else
                    {
                        m_AnimationTick = m_DefaultAnimationTick;
                    }
                }
                else
                {
                    m_CustomCursor = false;
                    Cursor.SetCursor(null, Vector2.zero, CursorMode.Auto);
                }
            }
        }
Beispiel #7
0
 public static void SetCursor(CursorPriority priority, Cursor cursor)
 {
     s_gui.SetCursor(priority, cursor);
 }