/
Entity.h
113 lines (99 loc) · 3.48 KB
/
Entity.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#pragma once
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <iostream>
/*
* Oyunda ekrana çizdirilen bürün varlıklar bu
* sınıftan türetilir. Bu sınıftan türetilen yeni sınıflar
* update fonksiyonunu override ederek yeniden yazmalıdır.
* Her bir entity (varlık) ekrana çizdirilebilirdir ve hareket,
* kaplama, açı, çarpışma gibi ortak özelliklere sahiptir.
* Kullanıcı yeni bir obje eklemek istediği zaman,
* ilgili varlığın sahip olmasını istediği kaplamanın
* adını vermesi yeterlidir. İlgili kaplama Resources dizini
* altından bulunabilir olacak şekilde tasarlanmıştır.
*/
class Entity : public sf::Drawable{
public:
Entity();
Entity(sf::Vector2f position, sf::Vector2f size, sf::Color color, float speed);
Entity(std::string fileName, float speed = 200, sf::Vector2f position = {0,0}, sf::Vector2f scale = {1,1});
/* Her bir kalıtılan sınıfın yazması gereken
update fonksiyonu. */
virtual void update(float dt) = 0;
/* İlgili objenin katı olma durumudur. Doğruysa katıdır. */
bool isSolid;
/* İlgili objenin mermi olma durumudur. Doğruysa mermidir. */
bool isBullet;
// Collision
/* İki entity arasındaki çarpışmaı kontrol eder.
Çarpışma varsa true, yoksa false döndürür.
Entity e1;
e1.onCollision(e2)
şeklinde kullanılır.*/
bool onCollision(Entity& entity);
// Getters
/* Varlığın hareket vektörünü döndürür. */
sf::Vector2f getMovement();
/* Varlığın hareket hızını döndürür. */
float getMovementSpeed();
/* Varlığın sprite'ını döndürür.*/
sf::Sprite getSprite();
/* Varlığın pozisyonunu döndürür. */
sf::Vector2f getPosition();
/* Varlığın boyutunu döndürür. */
sf::Vector2u getSize();
/* Varlığın açısını döndürür. */
float getAngle();
/* Varlığın ID'sini döndürür. */
unsigned int getID();
// Setters
/* Varlığın hareket vektörünü günceller. */
void setMovement(sf::Vector2f movement);
/* Varlığın hareket hızını günceller. */
void setMovementSpeed(float movementSpeed);
/* Varlığın pozisyonunu günceller. */
void setPosition(sf::Vector2f newPosition);
/* Varlığın boyutunu günceller. */
void setSize(sf::Vector2f newSize);
/* Varlığın merkez noktasını değiştirir. */
void setOrigin(sf::Vector2f newOrigin);
/* Varlığın belirli bir noktaya doğru açısını günceller. */
void setRotationTowardPosition(sf::Vector2i towardPosition);
/* Varlığın açısını günceller. */
void setAngle(float angle);
/* ID bilgisini günceller. */
void setID(unsigned int id);
// MISC
/* Varlığı bulunduğu pozisyona göre öteler. */
void move(sf::Vector2f move);
/* Bulunduğu konumda bir başka varlık oluşturur. */
void spawnAnotherObject(Entity* entity);
/* Varlğıı yok eder. */
void destroy();
private:
unsigned int uid;
/* Varlığın hareket vektörünü tutar. */
sf::Vector2f movement;
/* Varlığın hareket hızını tutar. */
float movementSpeed;
float jumpStrength;
// TODO: Acceleration, deceleration eklenecek.
/* sf::Drawable sınıfından türetildiği için yazılması
zorunlu çizim fonksiyonu. entity'den türetilen
her obje bu fonksiyona sahiptir. */
void draw(sf::RenderTarget& target, sf::RenderStates states) const;
/* Varlığın kaplamasını tutar. */
sf::Texture* texture;
/* Varlığı somut bir hale getirmek için oluşturulur. */
sf::Sprite shape;
// Friends
/* Friend sınıflar bu sınıfın private ile korunan
değişkenlerine ve fonksiyonlarına erişebilir.
Yeni eklenecek bütün Behavior sınıfından kalıtılan
sınıflar buraya eklenecek. */
friend class TopDown;
friend class Platform;
friend class ScrollTo;
friend class Bullet;
};