protected virtual Vector3 Drag() { if (FindObjectOfType <Player>().holdingBuilding) { if (Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero)) { m_hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero).collider.gameObject; if (m_hit.gameObject.tag == "Snap") { if (m_originX != m_hit.GetComponent <Cell>().MyColumn || m_originY != m_hit.GetComponent <Cell>().MyRow) { m_originY = m_hit.GetComponent <Cell>().MyRow; m_originX = m_hit.GetComponent <Cell>().MyColumn; } if (SecurePos(m_originX, m_originY, m_buildingSpace)) { PlacementFeedback(gameObject.GetComponent <SpriteRenderer>(), Color.green); if (Input.GetButtonDown("Fire1") && FindObjectOfType <Player>().MyResource - MyPrice >= 0) { BlockSpace(m_originX, m_originY, m_buildingSpace); m_state = DefenceState.Placed; Debug.Log("state transition here"); StateTransition(); FindObjectOfType <Player>().MyResource -= MyPrice; PlacementFeedback(gameObject.GetComponent <SpriteRenderer>(), Color.white); gameObject.GetComponent <AudioSource>().Play(); //audio feedback m_pos = m_hit.transform.position; m_pos.z = 0; m_pos.x += m_adjustPosX; m_pos.y += m_adjustPosY; gameObject.GetComponent <Collider2D>().enabled = true; return(m_pos); } else if (FindObjectOfType <Player>().MyResource - MyPrice < 0) { FindObjectOfType <Player>().holdingBuilding = false; Destroy(gameObject); } } else { PlacementFeedback(gameObject.GetComponent <SpriteRenderer>(), Color.red); if (Input.GetButtonDown("Fire1")) { FindObjectOfType <Player>().holdingBuilding = false; Destroy(gameObject); } } m_pos = m_hit.transform.position; m_pos.z = 0; m_pos.x += m_adjustPosX; m_pos.y += m_adjustPosY; } } } return(m_pos); }
void DefenceStateToPlace() { if (Input.GetButtonDown("Fire1") && snappable) { m_state = DefenceState.Placed; transform.position = m_snapHere; m_player.GetComponent <Player>().m_resource--; } }
void Start() { m_state = DefenceState.ToPlace; m_fireRate = 1f / m_roundsPerSecond; }
private void RpcSetPhase(byte data) { Phase.EndStateCall(); var gameState = (GameState.Type)data; switch (gameState) { case GameState.Type.Player1Reset: Phase = new ResetState(true); break; case GameState.Type.Player1Draw: Phase = new DrawState(true); break; case GameState.Type.Player1Main: Phase = new MainState(true); break; case GameState.Type.Player1Atk: Phase = new AttackState(true); break; case GameState.Type.Player1Def: Phase = new DefenceState(true); break; case GameState.Type.Player1AtkCot: Phase = new AttackCounterState(true); break; case GameState.Type.Player1DefCot: Phase = new DefenceCounterState(true); break; case GameState.Type.Player1SecMain: Phase = new SecondMainState(true); break; case GameState.Type.Player2Reset: Phase = new ResetState(false); break; case GameState.Type.Player2Draw: Phase = new DrawState(false); break; case GameState.Type.Player2Main: Phase = new MainState(false); break; case GameState.Type.Player2Atk: Phase = new AttackState(false); break; case GameState.Type.Player2Def: Phase = new DefenceState(false); break; case GameState.Type.Player2AtkCot: Phase = new AttackCounterState(false); break; case GameState.Type.Player2DefCot: Phase = new DefenceCounterState(false); break; case GameState.Type.Player2SecMain: Phase = new SecondMainState(false); break; } GuiController.NextPhaseButton.interactable = Phase.NextPhaseClickable(); Phase.StateCall(); }