mirror of
https://github.com/zoriya/Bomberman.git
synced 2026-06-03 02:23:44 +00:00
square drwing
This commit is contained in:
@@ -111,6 +111,10 @@ set(SOURCES
|
||||
sources/System/Music/MusicSystem.cpp
|
||||
sources/System/Bomb/BombSystem.cpp
|
||||
sources/System/Bomb/BombSystem.hpp
|
||||
sources/Component/IntroAnimation/IntroAnimationComponent.hpp
|
||||
sources/Component/IntroAnimation/IntroAnimationComponent.cpp
|
||||
sources/System/IntroAnimation/IntroAnimationSystem.hpp
|
||||
sources/System/IntroAnimation/IntroAnimationSystem.cpp
|
||||
)
|
||||
add_executable(bomberman
|
||||
sources/main.cpp
|
||||
|
||||
@@ -33,13 +33,47 @@ namespace RAY::Drawables::Drawables2D
|
||||
return *this;
|
||||
}
|
||||
|
||||
Rectangle &Rectangle::setDimensions(int x, int y)
|
||||
Rectangle &Rectangle::setDimensions(float x, float y)
|
||||
{
|
||||
this->_dimensions.x = x;
|
||||
this->_dimensions.y = y;
|
||||
return *this;
|
||||
}
|
||||
|
||||
float Rectangle::getHeight(void) const
|
||||
{
|
||||
return this->_dimensions.y;
|
||||
}
|
||||
|
||||
float Rectangle::getWidth(void) const
|
||||
{
|
||||
return this->_dimensions.x;
|
||||
}
|
||||
|
||||
Rectangle &Rectangle::incrementWidth(float width)
|
||||
{
|
||||
this->_dimensions.x += width;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Rectangle &Rectangle::incrementHeight(float height)
|
||||
{
|
||||
this->_dimensions.y += height;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Rectangle &Rectangle::setWidth(float width)
|
||||
{
|
||||
this->_dimensions.x = width;
|
||||
return *this;
|
||||
}
|
||||
|
||||
Rectangle &Rectangle::setHeight(float height)
|
||||
{
|
||||
this->_dimensions.y = height;
|
||||
return *this;
|
||||
}
|
||||
|
||||
void Rectangle::drawOn(RAY::Window &)
|
||||
{
|
||||
DrawRectangleV(this->_position, this->_dimensions, this->_color);
|
||||
|
||||
@@ -42,11 +42,33 @@ namespace RAY::Drawables::Drawables2D {
|
||||
//! @return the dimensions of the rectangle
|
||||
const Vector2 &getDimensions(void);
|
||||
|
||||
//! @return the width of the rectangle
|
||||
float getWidth(void) const;
|
||||
|
||||
//! @return the height of the rectangle
|
||||
float getHeight(void) const;
|
||||
|
||||
//! @brief set dimensions
|
||||
Rectangle &setDimensions(const Vector2 &dimensions);
|
||||
|
||||
//! @brief increment width of the rectangle
|
||||
//! @param width incrementer
|
||||
Rectangle &incrementWidth(float width);
|
||||
|
||||
//! @brief increment height of the rectangle
|
||||
//! @param height incrementer
|
||||
Rectangle &incrementHeight(float height);
|
||||
|
||||
//! @brief set rectangle's height
|
||||
//! @param height height of the rectangle
|
||||
Rectangle &setHeight(float height);
|
||||
|
||||
//! @brief set rectangle's width
|
||||
//! @param width width of the rectangle
|
||||
Rectangle &setWidth(float width);
|
||||
|
||||
//! @brief set dimensions
|
||||
Rectangle &setDimensions(int x, int y);
|
||||
Rectangle &setDimensions(float x, float y);
|
||||
|
||||
//! @brief Draw point on window
|
||||
virtual void drawOn(RAY::Window &) override;
|
||||
|
||||
@@ -9,10 +9,9 @@ namespace BBM
|
||||
class IntroAnimationComponent : public WAL::Component
|
||||
{
|
||||
public:
|
||||
unsigned int frame = 0;
|
||||
unsigned int frameCounter = 0;
|
||||
|
||||
enum animationSteps {
|
||||
init,
|
||||
boxBlinking,
|
||||
topLeftgrowing,
|
||||
bottomRightGrowing,
|
||||
@@ -21,7 +20,7 @@ namespace BBM
|
||||
prompt,
|
||||
};
|
||||
|
||||
enum animationSteps currentStep = init;
|
||||
enum animationSteps currentStep = boxBlinking;
|
||||
|
||||
//! @inherit
|
||||
Component *clone(WAL::Entity &entity) const override;
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
#include <System/Health/HealthSystem.hpp>
|
||||
#include <System/Animator/AnimatorSystem.hpp>
|
||||
#include <Component/Animator/AnimatorComponent.hpp>
|
||||
#include <Component/IntroAnimation/IntroAnimationComponent.hpp>
|
||||
#include <System/IntroAnimation/IntroAnimationSystem.hpp>
|
||||
#include <System/Levitate/LevitateSystem.hpp>
|
||||
#include <System/Bonus/PlayerBonusSystem.hpp>
|
||||
#include <Component/Bonus/PlayerBonusComponent.hpp>
|
||||
@@ -90,6 +92,7 @@ namespace BBM
|
||||
.addSystem<BombSystem>()
|
||||
.addSystem<PlayerSoundManagerSystem>()
|
||||
.addSystem<MenuSoundManagerSystem>()
|
||||
.addSystem<IntroAnimationSystem>()
|
||||
.addSystem<MusicSystem>();
|
||||
}
|
||||
|
||||
@@ -606,8 +609,12 @@ namespace BBM
|
||||
{
|
||||
auto scene = std::make_shared<WAL::Scene>();
|
||||
|
||||
|
||||
auto &splashComponent = scene->addEntity("animation component")
|
||||
.addComponent<IntroAnimationComponent>();
|
||||
auto &background = scene->addEntity("background")
|
||||
.addComponent<Drawable2DComponent, RAY2D::Rectangle(RAY::Vector2(), RAY::Vector2(1920, 1080));
|
||||
.addComponent<PositionComponent>(0, 0, 0)
|
||||
.addComponent<Drawable2DComponent, RAY2D::Rectangle>(RAY::Vector2(), RAY::Vector2(1920, 1080));
|
||||
return scene;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
|
||||
#include <algorithm>
|
||||
#include "Component/Button/ButtonComponent.hpp"
|
||||
#include "Component/Position/PositionComponent.hpp"
|
||||
#include "System/IntroAnimation/IntroAnimationSystem.hpp"
|
||||
#include "Component/Controllable/ControllableComponent.hpp"
|
||||
#include "Entity/Entity.hpp"
|
||||
#include "Component/Renderer/Drawable2DComponent.hpp"
|
||||
#include <Drawables/2D/Rectangle.hpp>
|
||||
@@ -18,26 +16,60 @@ namespace BBM
|
||||
|
||||
void IntroAnimationSystem::onFixedUpdate(WAL::ViewEntity<IntroAnimationComponent> &entity)
|
||||
{
|
||||
static const RAY::Vector2 logoPos(1920 / 2 - 128, 1080 / 2 - 128);
|
||||
auto &component = entity.get<IntroAnimationComponent>();
|
||||
auto &scene = wal.getScene();
|
||||
auto scene = wal.getScene();
|
||||
RAY2D::Rectangle *rectangle = nullptr;
|
||||
static auto &bottomRectangle = scene->addEntity("bottom Rectangle")
|
||||
.addComponent<PositionComponent>(1920 / 2 - 128, 1080 / 2 - 128, 0)
|
||||
.addComponent<Drawable2DComponent, RAY2D::Rectangle>(logoPos, RAY::Vector2(16, 16), BLACK);
|
||||
static auto &leftRectangle = scene->addEntity("left Rectangle")
|
||||
.addComponent<PositionComponent>(1920 / 2 - 128, 1080 / 2 - 128, 0)
|
||||
.addComponent<Drawable2DComponent, RAY2D::Rectangle>(logoPos, RAY::Vector2(16, 16), BLACK);
|
||||
static auto &rightRectangle = scene->addEntity("right Rectangle")
|
||||
.addComponent<PositionComponent>(1920 / 2 - 128, 1080 / 2 - 128, 0)
|
||||
.addComponent<Drawable2DComponent, RAY2D::Rectangle>(logoPos, RAY::Vector2(16, 16), BLACK);
|
||||
static auto &topRectangle = scene->addEntity("top Rectangle")
|
||||
.addComponent<PositionComponent>(1920 / 2 - 128, 1080 / 2 - 128, 0)
|
||||
.addComponent<Drawable2DComponent, RAY2D::Rectangle>(logoPos, RAY::Vector2(16, 16), BLACK);
|
||||
|
||||
switch (component.currentStep)
|
||||
{
|
||||
case IntroAnimationComponent::animationSteps::init:
|
||||
scene->addEntity("white background")
|
||||
.addComponent<Drawable2DComponent, RAY2D::Rectangle>(BBM::Vector2f(), BBM::Vector2f(1920, 1080), WHITE);
|
||||
|
||||
scene->addEntity("blinking square").addComponent<Drawable2DComponent, RAY2D::Rectangle>(BBM::Vector2f(), BBM::Vector2f(16, 16), WHITE);
|
||||
component.currentStep = IntroAnimationComponent::animationSteps::boxBlinking;
|
||||
break;
|
||||
case IntroAnimationComponent::animationSteps::boxBlinking:
|
||||
|
||||
if ((component.frame / 15) % 2)
|
||||
scene->getEntities()
|
||||
if ((component.frameCounter / 15) % 2)
|
||||
topRectangle.getComponent<Drawable2DComponent>().drawable->setColor(BLACK);
|
||||
else
|
||||
topRectangle.getComponent<Drawable2DComponent>().drawable->setColor(WHITE);
|
||||
if (component.frameCounter == 120) {
|
||||
component.currentStep = IntroAnimationComponent::animationSteps::topLeftgrowing;
|
||||
component.frameCounter = -1;
|
||||
topRectangle.getComponent<Drawable2DComponent>().drawable->setColor(BLACK);
|
||||
leftRectangle.getComponent<Drawable2DComponent>().drawable->setColor(BLACK);
|
||||
}
|
||||
break;
|
||||
case IntroAnimationComponent::animationSteps::topLeftgrowing:
|
||||
rectangle = dynamic_cast<RAY2D::Rectangle *>(leftRectangle.getComponent<Drawable2DComponent>().drawable.get());
|
||||
rectangle->incrementHeight(4);
|
||||
rectangle = dynamic_cast<RAY2D::Rectangle *>(topRectangle.getComponent<Drawable2DComponent>().drawable.get());
|
||||
rectangle->incrementWidth(4);
|
||||
if (rectangle->getWidth() == 256) {
|
||||
component.currentStep = IntroAnimationComponent::animationSteps::bottomRightGrowing;
|
||||
bottomRectangle.getComponent<PositionComponent>().position = Vector3f(1920 / 2 - 128, 1080 / 2 - 128 + 240, 0);
|
||||
rightRectangle.getComponent<PositionComponent>().position = Vector3f(1920 / 2 - 128 + 240, 1080 / 2 - 128, 0);
|
||||
}
|
||||
break;
|
||||
case IntroAnimationComponent::animationSteps::bottomRightGrowing:
|
||||
rectangle = dynamic_cast<RAY2D::Rectangle *>(bottomRectangle.getComponent<Drawable2DComponent>().drawable.get());
|
||||
rectangle->incrementWidth(4);
|
||||
rectangle = dynamic_cast<RAY2D::Rectangle *>(rightRectangle.getComponent<Drawable2DComponent>().drawable.get());
|
||||
rectangle->incrementHeight(4);
|
||||
if (rectangle->getHeight() == 256)
|
||||
component.currentStep = IntroAnimationComponent::animationSteps::lettersTyping;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
component.frame++;
|
||||
component.frameCounter++;
|
||||
}
|
||||
|
||||
void IntroAnimationSystem::onSelfUpdate(void)
|
||||
|
||||
Reference in New Issue
Block a user