Incremental Engine  1.0.6
A 2D Game Engine to create Idle Games
IncrementalEngine::Button Class Reference

#include <Button.h>

Inheritance diagram for IncrementalEngine::Button:
IncrementalEngine::Sprite IncrementalEngine::Actor IncrementalEngine::Transformable IncrementalEngine::Drawable

Public Member Functions

virtual void Update (float dt) override
 
bool Pressed ()
 
bool Hold ()
 
bool Released ()
 
- Public Member Functions inherited from IncrementalEngine::Sprite
 Sprite ()
 
virtual ~Sprite () override
 
void SetTexture (Texture *texture)
 
void ClearTexture ()
 
virtual FloatRect GetLocalBounds () override
 
virtual HRESULT Draw (ID3D11DeviceContext *deviceContext) override
 
- Public Member Functions inherited from IncrementalEngine::Actor
virtual ~Actor ()
 
virtual void Init ()
 
void UpdateRecursive (float dt)
 
HRESULT DrawRecursive (ID3D11DeviceContext *deviceContext)
 
FloatRect GetGlobalBounds ()
 
void Center ()
 
const Transform GetWorldTransform ()
 
const D3DXVECTOR2 GetWorldPosition ()
 
const D3DXVECTOR2 GetWorldScale ()
 
const float GetWorldRotation ()
 
void SetWorldPosition (D3DXVECTOR2 value)
 
virtual void SetPosition (float x, float y) override
 
virtual void SetPosition (const D3DXVECTOR2 &position) override
 
virtual const D3DXVECTOR2 & GetPosition () const override
 
ActorGetParent () const
 
virtual void SetParent (Actor *value, const bool fixWorldPosition=true)
 
void SetActive (bool active)
 
bool IsActive ()
 
- Public Member Functions inherited from IncrementalEngine::Transformable
 Transformable ()
 
virtual void SetScale (float factorX, float factorY)
 
virtual void SetScale (const D3DXVECTOR2 &factors)
 
virtual void SetOrigin (float x, float y)
 
virtual void SetOrigin (const D3DXVECTOR2 &origin)
 
virtual void SetRotation (float angle)
 
virtual float GetRotation () const
 
virtual const D3DXVECTOR2 & GetScale () const
 
virtual const D3DXVECTOR2 & GetOrigin () const
 
void Move (float offsetX, float offsetY)
 
void Move (const D3DXVECTOR2 &offset)
 
void Rotate (float angle)
 
void Scale (float factorX, float factorY)
 
void Scale (const D3DXVECTOR2 &factor)
 
const TransformGetTransform () const
 
const TransformGetInverseTransform () const
 

Private Member Functions

bool MouseInsideBounds ()
 

Private Attributes

D3DXVECTOR2 _mousePosition
 
bool _clickDetected
 
bool _mouseOver
 
bool _pressed
 
bool _released
 

Additional Inherited Members

- Protected Member Functions inherited from IncrementalEngine::Drawable
void CopyParameters (Drawable *drawable)
 
- Protected Attributes inherited from IncrementalEngine::Transformable
bool _transformNeedUpdate
 
- Protected Attributes inherited from IncrementalEngine::Drawable
RenderWindow_renderWindow
 
ShaderManager_shaderManager
 
ID3D11Device * _device
 

Detailed Description

Definition at line 8 of file Button.h.

Member Function Documentation

◆ Hold()

bool IncrementalEngine::Button::Hold ( )

Definition at line 45 of file Button.cpp.

46  {
47  return _clickDetected;
48  }

◆ MouseInsideBounds()

bool IncrementalEngine::Button::MouseInsideBounds ( )
private

Definition at line 55 of file Button.cpp.

56  {
57  FloatRect bounds = GetGlobalBounds();
58 
59  return _mousePosition.x > bounds.left() &&
60  _mousePosition.x < bounds.left() + bounds.width() &&
61  _mousePosition.y > bounds.top() &&
62  _mousePosition.y < bounds.top() + bounds.height();
63  }

◆ Pressed()

bool IncrementalEngine::Button::Pressed ( )

Definition at line 40 of file Button.cpp.

41  {
42  return _pressed;
43  }

◆ Released()

bool IncrementalEngine::Button::Released ( )

Definition at line 50 of file Button.cpp.

51  {
52  return _released;
53  }

◆ Update()

void IncrementalEngine::Button::Update ( float  dt)
overridevirtual

Reimplemented from IncrementalEngine::Sprite.

Definition at line 6 of file Button.cpp.

7  {
8  Sprite::Update(dt);
9 
10  _pressed = _released = false;
11 
12  float mouseX, mouseY;
13  auto input = Engine::Get()->Input();
14  input->GetMousePosition(mouseX, mouseY);
15 
16  if (_mousePosition.x != mouseX || _mousePosition.y != mouseY)
17  {
18  _mousePosition = D3DXVECTOR2(mouseX, mouseY);
19  _mouseOver = MouseInsideBounds() && input->MouseInsideScreen();
20  }
21 
22  if (input->IsMouseButtonDown(DirectInputMouseButton::MouseLeft))
23  {
24  if (!_clickDetected && _mouseOver)
25  {
26  _clickDetected = true;
27  _pressed = true;
28  }
29  }
30  else
31  {
32  if (_clickDetected)
33  {
34  _clickDetected = false;
35  _released = true;
36  }
37  }
38  }

Member Data Documentation

◆ _clickDetected

bool IncrementalEngine::Button::_clickDetected
private

Definition at line 19 of file Button.h.

◆ _mouseOver

bool IncrementalEngine::Button::_mouseOver
private

Definition at line 20 of file Button.h.

◆ _mousePosition

D3DXVECTOR2 IncrementalEngine::Button::_mousePosition
private

Definition at line 18 of file Button.h.

◆ _pressed

bool IncrementalEngine::Button::_pressed
private

Definition at line 22 of file Button.h.

◆ _released

bool IncrementalEngine::Button::_released
private

Definition at line 23 of file Button.h.

IncrementalEngine::InputManager::GetMousePosition
void GetMousePosition(float &mouseX, float &mouseY)
Definition: InputManager.cpp:38
IncrementalEngine::Engine::Get
static Engine * Get()
Definition: MainEngine.cpp:14
IncrementalEngine::Button::_clickDetected
bool _clickDetected
Definition: Button.h:19
IncrementalEngine::Button::MouseInsideBounds
bool MouseInsideBounds()
Definition: Button.cpp:55
IncrementalEngine::Button::_pressed
bool _pressed
Definition: Button.h:22
IncrementalEngine::Button::_released
bool _released
Definition: Button.h:23
IncrementalEngine::Actor::GetGlobalBounds
FloatRect GetGlobalBounds()
Definition: Actor.cpp:88
IncrementalEngine::Button::_mouseOver
bool _mouseOver
Definition: Button.h:20
IncrementalEngine::Engine::Input
InputManager * Input()
Definition: MainEngine.cpp:169
IncrementalEngine::Button::_mousePosition
D3DXVECTOR2 _mousePosition
Definition: Button.h:18
IncrementalEngine::Sprite::Update
virtual void Update(float dt) override
Definition: Sprite.cpp:58