Covellite++  Version: 2.3.0 Revision: ??? Platform: x64 Build: 23:13 04.01.2025
Кроссплатформенный фреймворк для разработки приложений на С++
Загрузка...
Поиск...
Не найдено
Simple2DGame.hpp
1
2#pragma once
3#include <Covellite/Covellite.hpp>
4#include "Common.hpp"
5
6namespace events
7{
8
9class Simple2DGame_t
10{
11public:
12 enum Id
13 {
14 Rect = 0,
15 Start,
16 Finish,
17 };
18};
19
20namespace { Simple2DGame_t Simple2DGame; }
21
22} // namespace events
23
24namespace basement
25{
26
44class Simple2DGame final :
45 public Common
46{
52 using VertexData_t = ::std::vector<Vertex_t>;
53
54public:
55 class Rect final
56 {
57 public:
58 float Left;
59 float Top;
60 float Right;
61 float Bottom;
62 };
63
64private:
65 class GameUnit final
66 {
67 public:
68 class Info
69 {
70 public:
71 float Position;
72 float Size;
73 float SpeedFactor;
74
75 public:
76 inline float GetMin(void) const noexcept { return Position - Size / 2.0f; }
77 inline float GetMax(void) const noexcept { return Position + Size / 2.0f; }
78 void Update(float);
79 };
80
81 public:
82 bool IsIntersect(const GameUnit &) const;
83 void Update(float, float);
84 void Update(float);
85
86 public:
87 Info X, Y;
88 const Component_t::ComponentPtr_t m_pPosition;
89
90 public:
91 GameUnit(float, float, float, float, float);
92 };
93
94private:
95 void AddCommonComponents(void);
96 ObjectId_t AddCamera(float, float);
97 ObjectId_t AddBackground(void);
98 ObjectId_t AddClock(void);
99 void AddActors(void);
100 GameObject_t BuildRectangle(const GameObject_t &, float, float, const String_t &);
101 GameObject_t BuildRectangle(const GameObject_t &, float, float, float, float,
102 float, float);
103 GameObject_t BuildRectangle(const Rect &, const Rect &, float, float, float,
104 float, const String_t &, const GameObject_t &);
105 GameObject_t BuildRectangle(const Rect &, const Rect &, float, float, float, float,
106 const GameObject_t &, const GameObject_t &);
107
108private:
109 Events_t m_Events;
110 bool m_IsTouch = false;
111 float m_MouseX = 0.0f;
112 float m_MouseY = 0.0f;
113
114private:
115 const float m_Width;
116 const float m_Height;
117 const float m_GameFieldSize;
118
119private:
120 ObjectId_t m_CameraId;
121 ObjectId_t m_BackGroundId;
122 ObjectId_t m_ClockId;
123 ObjectId_t m_EnemiesId;
124 ObjectId_t m_GreenSquareId;
125 ObjectId_t m_RedSquareId;
126 GameUnit m_UserUnit;
127 ::std::vector<GameUnit> m_Enemies;
128 float m_EnemiesSpeed = 0.1f;
129 float m_BeginGameTime;
130 float m_GameTime;
131 float m_LastTime;
132
133public:
134 Simple2DGame(WindowExpanse_t &, const Rect &);
135 Simple2DGame(const Simple2DGame &) = delete;
136 Simple2DGame(Simple2DGame &&) = delete;
137 const Simple2DGame & operator= (const Simple2DGame &) = delete;
138 Simple2DGame & operator= (Simple2DGame &&) = delete;
139 ~Simple2DGame(void);
140};
141
142} // namespace basement
Definition Common.hpp:10
Класс входит в проект Covellite.Api Класс формата вертексного буфера.
Definition Vertex.hpp:34
Класс входит в проект Covellite.Events Класс для работы с событиями фреймворка.
Definition Events.hpp:36
Класс входит в проект Covellite.Expanse Интерфейс класса окна.
Definition IWindow.hpp:32
Класс входит в проект Example Класс общей логики отрисовки 3D сцены.
Definition Common.hpp:31
Класс входит в проект Example Класс отрисовки простой 2D игры для слоя layers::Simple2DGame.
Definition Simple2DGame.hpp:46
::std::vector< Vertex_t > VertexData_t
[Vertex format]
Definition Simple2DGame.hpp:52
void AddCommonComponents(void)
Definition Simple2DGame.cpp:113
ObjectId_t AddCamera(float, float)
Definition Simple2DGame.cpp:267