Ejemplo n.º 1
0
    private void AddResponse(InputResponder responder, Gameplay.Move_Julia move)
    {
        responder.OnStopClick += (_responder, mousePos) =>
        {
            //Apply the move.
            var results = new Gameplay.MovementResults(Board, move);
            Board.AddElement(false, move.Pos, Gameplay.Teams.Friendly);
            Board.Apply(results, Gameplay.Teams.Friendly);

            //Remove this movement option.
            int moveIndex = moveSpriteIndexAtPos[move.Pos];
            SpritePool.Instance.DeallocateSprite(moveSprites[moveIndex]);
            moveSprites.RemoveAt(moveIndex);
            moveOptions.RemoveAt(moveIndex);
            foreach (Vector2i key in moveSpriteIndexAtPos.Keys.ToList())
            {
                if (moveSpriteIndexAtPos[key] > moveIndex)
                {
                    moveSpriteIndexAtPos[key] -= 1;
                }
            }


            Logic.MovesLeftThisTurn -= 1;
        };
    }
Ejemplo n.º 2
0
	private void Callback_PieceClicked(InputResponder piece, Vector2 worldMousePos)
	{
		//Clean up any previous moves being displayed.
		if (moveSprites != null)
			SpritePool.Instance.DeallocateSprites(moveSprites);
		moveOptions.Clear();

		activePiece = piece.GetComponent<Gameplay.BoardElement>();
		Gameplay.Move_Billy.GetMoves(Board, activePiece, moveOptions);
		moveSprites = SpritePool.Instance.AllocateSprites(moveOptions.Count, OptionSprite,
														  SpriteLayer, null, "Billy Move");
		for (int i = 0; i < moveSprites.Count; ++i)
		{
			moveSprites[i].transform.position = new Vector3(moveOptions[i].NewPos.x + 0.5f,
															moveOptions[i].NewPos.y + 0.5f,
															0.0f);
			moveSprites[i].transform.localScale = new Vector3(SpriteScale, SpriteScale, 1.0f);
			moveSprites[i].color = SpriteCol;

			var collider = moveSprites[i].gameObject.AddComponent<BoxCollider2D>();

			var responder = moveSprites[i].gameObject.AddComponent<InputResponder>();
			AddResponse(responder, moveOptions[i]);
		}
	}
Ejemplo n.º 3
0
 void UpdateButton(string buttonName, InputResponder responder)
 {
     if (Input.GetButtonDown(buttonName))
     {
         responder.OnPress();
     }
     if (Input.GetButton(buttonName))
     {
         responder.TickPressed();
     }
 }
Ejemplo n.º 4
0
	private void AddResponse(InputResponder responder, Gameplay.Move_Billy move)
	{
		responder.OnStopClick += (_responder, mousePos) =>
		{
			//Apply the move.
			var results = new Gameplay.MovementResults(Board, move);
			Board.MoveElement(false, move.Piece.Pos, move.NewPos);
			Board.Apply(results, Gameplay.Teams.Friendly);

			//Stop the piece from being movable again.
			activePiece.ActiveSpriteObj.GetComponent<SpriteRenderer>().color = MovedColor;
			Destroy(activePiece.GetComponent<InputResponder>());
			SpritePool.Instance.DeallocateSprites(moveSprites);
			moveOptions.Clear();

			Logic.MovesLeftThisTurn -= 1;
		};
	}
Ejemplo n.º 5
0
    void UpdateAxis(string axisName, bool inverted, ref bool tickedLastFrame, InputResponder responder)
    {
        float axis             = Input.GetAxis(axisName);
        bool  axisPastDeadzone = !inverted
            ? axis > AXIS_DEADZONE
            : axis < -AXIS_DEADZONE;

        if (axisPastDeadzone)
        {
            if (!tickedLastFrame)
            {
                responder.OnPress();
            }
            responder.TickPressed();
            tickedLastFrame = true;
        }
        else
        {
            tickedLastFrame = false;
        }
    }
Ejemplo n.º 6
0
    void Update()
    {
        //Get whether a click happened.

        bool    tapped = false;
        Vector2 tapPos = Vector3.zero;

        if (Input.GetMouseButton(0))
        {
            tapped = true;
            tapPos = (Vector2)MainCam.ScreenToWorldPoint(Input.mousePosition);
        }
        else if (Input.touchCount > 0)
        {
            tapped = true;
            tapPos = (Vector2)MainCam.ScreenToWorldPoint((Vector3)Input.GetTouch(0).position);
        }


        //Respond to the click (or lack thereof).
        if (tapped)
        {
            //Continue the previous frame's click.
            if (IsClicking)
            {
                CurrentClickWorldPos = tapPos;

                //Check whether the mouse is dragging or not.
                if (CurrentlyClicked != null)
                {
                    if (IsDragging)
                    {
                        CurrentlyClicked.RaiseEvent_Drag(StartClickWorldPos, CurrentClickWorldPos);
                    }
                    else if ((CurrentClickWorldPos - StartClickWorldPos).sqrMagnitude >
                             (CurrentlyClicked.MinDragDistance * CurrentlyClicked.MinDragDistance))
                    {
                        IsDragging = true;
                        CurrentlyClicked.RaiseEvent_Drag(StartClickWorldPos, CurrentClickWorldPos);
                    }
                }
            }
            //Start a new click.
            else
            {
                IsClicking         = true;
                StartClickWorldPos = tapPos;

                Collider2D coll = Physics2D.OverlapPoint(tapPos);
                if (coll != null)
                {
                    InputResponder ir = coll.GetComponent <InputResponder>();
                    if (ir != null)
                    {
                        CurrentlyClicked = ir;
                        ir.RaiseEvent_StartClick(StartClickWorldPos);
                    }
                }
            }
        }
        else
        {
            //Stop clicking.
            if (IsClicking)
            {
                IsClicking = false;

                if (CurrentlyClicked != null)
                {
                    if (IsDragging)
                    {
                        IsDragging = false;
                        CurrentlyClicked.RaiseEvent_StopDrag(StartClickWorldPos, CurrentClickWorldPos);
                    }
                    else
                    {
                        CurrentlyClicked.RaiseEvent_StopClick(StartClickWorldPos);
                    }

                    CurrentlyClicked = null;
                }
            }
        }
    }
Ejemplo n.º 7
0
 public void SetSpaceResponder(InputResponder newResponder)
 {
     spaceResponder = newResponder;
     spaceResponder.OnAttach();
 }
Ejemplo n.º 8
0
 public void SetLeftResponder(InputResponder newResponder)
 {
     leftResponder = newResponder;
     leftResponder.OnAttach();
 }
Ejemplo n.º 9
0
 public void SetRightResponder(InputResponder newResponder)
 {
     rightResponder = newResponder;
     rightResponder.OnAttach();
 }