void MoveLevelLayout(ref Queue <AbstractCursorCommand> cursorCommands)
    {
        var levelLayoutElements = GameObject.FindObjectsOfType <LevelLayoutElement>();

        levelLayoutElements = levelLayoutElements.OrderBy(x => x.PriorityOrder).ToArray();

        for (int i = 0; i < levelLayoutElements.Length; i++)
        {
            var element = levelLayoutElements[i];

            var moveToWindow      = new MoveToCommand(element.transform);
            var dragWindow        = new StartDragCommand(element.transform);
            var moveToNewPosition = new MoveToCommand(element.GetPosition(LevelLayoutManager.Instance.LevelLayoutState));
            var stopDrag          = new StopDragCommand(); // OPTIMIZATION: sortir cette line de la loop

            cursorCommands.Enqueue(moveToWindow);
            cursorCommands.Enqueue(dragWindow);
            cursorCommands.Enqueue(moveToNewPosition);
            cursorCommands.Enqueue(stopDrag);
        }

        var moveOutScreen = new MoveToCommand(Vector3.right * 10);

        cursorCommands.Enqueue(moveOutScreen);
    }
示例#2
0
        private void OnMouseMove(object sender, MouseEventArgs e)
        {
            if (!_mouseClicked)
            {
                return;
            }

            _mouseClicked = false;

            object item = this.AssociatedObject.DataContext;

            if (item != null)
            {
                if (StartDragCommand != null && StartDragCommand.CanExecute(item))
                {
                    DragStartOffset = e.GetPosition(this.AssociatedObject);

                    StartDragCommand.Execute(item);

                    DragDropEffects effects = DragDrop.DoDragDrop(this.AssociatedObject, item, DragDropEffects.Move);

                    bool dragSuccess = effects != DragDropEffects.None;
                    if (EndDragCommand != null && EndDragCommand.CanExecute(dragSuccess))
                    {
                        EndDragCommand.Execute(dragSuccess);
                    }
                }
            }
        }
    void GrabStickmanToNextSpawnPoints()
    {
        // foreach stickman
        for (int i = 0; i < GameManager.Instance.Characters.Count; i++)
        {
            var charId    = (CharId)i;
            var character = GameManager.Instance.Characters[charId];
            var cursor    = _owner.GrabStickmanCursors[i];

            if (character == null)
            {
                continue;
            }

            // freeze character input
            character.Freeze  = true;
            character.enabled = false;


            Queue <AbstractCursorCommand> cursorCommands = new Queue <AbstractCursorCommand>();

            // cursor commands
            Vector3 spawnPosition = LevelDataLocator.GetLevelData().GetDefaultSpawnPoint(charId);

            var moveToStickman   = new MoveToCommand(character.transform);
            var drag             = new StartDragCommand(character.transform, character.ForceJumpSprite);
            var moveToSpawnPoint = new MoveToCommand(spawnPosition);

            cursorCommands.Enqueue(moveToStickman);
            cursorCommands.Enqueue(drag);
            cursorCommands.Enqueue(moveToSpawnPoint);

            cursor.StartCommandsSequence(cursorCommands);
        }
    }