Add a line to the character to mark the collision bar.
This commit is contained in:
parent
5026ce2c53
commit
634503bf00
5 changed files with 28 additions and 2 deletions
|
@ -39,6 +39,9 @@ namespace cloonel {
|
||||||
m_screenRatio(parMain),
|
m_screenRatio(parMain),
|
||||||
m_bounceCallback(&DoNothing),
|
m_bounceCallback(&DoNothing),
|
||||||
m_texture(new Texture(parPath, parMain, false))
|
m_texture(new Texture(parPath, parMain, false))
|
||||||
|
#if defined(WITH_DEBUG_VISUALS)
|
||||||
|
, m_bottomBarDrawable(parMain, Colour(250, 5, 1), static_cast<ushort2>(m_bottomBar.From()), static_cast<ushort2>(m_bottomBar.To()))
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
assert(parMain);
|
assert(parMain);
|
||||||
m_bottomBar.SetCallback(std::bind(&Character::OnBounce, this, std::placeholders::_1, std::placeholders::_2));
|
m_bottomBar.SetCallback(std::bind(&Character::OnBounce, this, std::placeholders::_1, std::placeholders::_2));
|
||||||
|
@ -53,6 +56,9 @@ namespace cloonel {
|
||||||
m_screenRatio(parMain),
|
m_screenRatio(parMain),
|
||||||
m_bounceCallback(&DoNothing),
|
m_bounceCallback(&DoNothing),
|
||||||
m_texture(new Texture(parPath, parMain, false))
|
m_texture(new Texture(parPath, parMain, false))
|
||||||
|
#if defined(WITH_DEBUG_VISUALS)
|
||||||
|
, m_bottomBarDrawable(parMain, Colour(250, 5, 1), static_cast<ushort2>(m_bottomBar.From()), static_cast<ushort2>(m_bottomBar.To()))
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
assert(parMain);
|
assert(parMain);
|
||||||
m_bottomBar.SetCallback(std::bind(&Character::OnBounce, this, std::placeholders::_1, std::placeholders::_2));
|
m_bottomBar.SetCallback(std::bind(&Character::OnBounce, this, std::placeholders::_1, std::placeholders::_2));
|
||||||
|
@ -88,6 +94,9 @@ namespace cloonel {
|
||||||
///-------------------------------------------------------------------------
|
///-------------------------------------------------------------------------
|
||||||
void Character::Draw() const {
|
void Character::Draw() const {
|
||||||
m_texture->Render(GetPos(), WidthHeight(), m_screenRatio.Ratio(), true);
|
m_texture->Render(GetPos(), WidthHeight(), m_screenRatio.Ratio(), true);
|
||||||
|
#if defined(WITH_DEBUG_VISUALS)
|
||||||
|
m_bottomBarDrawable.Render(GetPos(), m_screenRatio.Ratio());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
///-------------------------------------------------------------------------
|
///-------------------------------------------------------------------------
|
||||||
|
|
|
@ -27,6 +27,9 @@
|
||||||
#include "sizenotifiable.hpp"
|
#include "sizenotifiable.hpp"
|
||||||
#include "horzcollisionbar.hpp"
|
#include "horzcollisionbar.hpp"
|
||||||
#include "collidertypedef.hpp"
|
#include "collidertypedef.hpp"
|
||||||
|
#if defined(WITH_DEBUG_VISUALS)
|
||||||
|
# include "drawableline.hpp"
|
||||||
|
#endif
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
@ -64,6 +67,9 @@ namespace cloonel {
|
||||||
SizeNotifiable<regbehaviours::AutoRegister> m_screenRatio;
|
SizeNotifiable<regbehaviours::AutoRegister> m_screenRatio;
|
||||||
BounceCallbackType m_bounceCallback;
|
BounceCallbackType m_bounceCallback;
|
||||||
const std::unique_ptr<Texture> m_texture;
|
const std::unique_ptr<Texture> m_texture;
|
||||||
|
#if defined(WITH_DEBUG_VISUALS)
|
||||||
|
DrawableLine m_bottomBarDrawable;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
} //unnamed namespace
|
} //unnamed namespace
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ namespace cloonel {
|
||||||
|
|
||||||
Colour ( void ) = default;
|
Colour ( void ) = default;
|
||||||
Colour ( ChannelType parR, ChannelType parG, ChannelType parB, ChannelType parA );
|
Colour ( ChannelType parR, ChannelType parG, ChannelType parB, ChannelType parA );
|
||||||
|
Colour ( ChannelType parR, ChannelType parG, ChannelType parB ) : Colour(parR, parG, parB, 0xFF) {}
|
||||||
explicit Colour ( ChannelType parFill );
|
explicit Colour ( ChannelType parFill );
|
||||||
Colour ( const Colour& parOther ) = default;
|
Colour ( const Colour& parOther ) = default;
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,16 @@ namespace cloonel {
|
||||||
|
|
||||||
ClipLine(screen, scaledLine);
|
ClipLine(screen, scaledLine);
|
||||||
}
|
}
|
||||||
//SDL_RenderDrawLine(m_sdlmain->GetRenderer(), x1, y1, x2, y2
|
const uint16_t h = m_sdlmain->WidthHeight().y();
|
||||||
|
if (scaledLine[0] != scaledLine[1]) {
|
||||||
|
SDL_RenderDrawLine(
|
||||||
|
m_sdlmain->GetRenderer(),
|
||||||
|
scaledLine[0].x(),
|
||||||
|
h - scaledLine[0].y(),
|
||||||
|
scaledLine[1].x(),
|
||||||
|
h - scaledLine[1].y()
|
||||||
|
);
|
||||||
|
}
|
||||||
//Returns 0 on success or a negative error code on failure; call SDL_GetError() for more information.
|
//Returns 0 on success or a negative error code on failure; call SDL_GetError() for more information.
|
||||||
//http://www.ginkgobitter.org/sdl/?SDL_RenderDrawLine
|
//http://www.ginkgobitter.org/sdl/?SDL_RenderDrawLine
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,7 +97,8 @@ namespace cloonel {
|
||||||
///--------------------------------------------------------------------------
|
///--------------------------------------------------------------------------
|
||||||
///--------------------------------------------------------------------------
|
///--------------------------------------------------------------------------
|
||||||
float2 HorzCollisionBar::To() const {
|
float2 HorzCollisionBar::To() const {
|
||||||
return this->GetPos() + len(m_segment);
|
assert(m_segment.End().x() - m_segment.Start().x() != 0.0f);
|
||||||
|
return this->GetPos() + float2(std::abs(m_segment.End().x() - m_segment.Start().x()), 0.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
///--------------------------------------------------------------------------
|
///--------------------------------------------------------------------------
|
||||||
|
|
Loading…
Add table
Reference in a new issue