Skip to content

Instantly share code, notes, and snippets.

View PoetaKodu's full-sized avatar

Paweł Syska PoetaKodu

View GitHub Profile
#include "Pawn.hpp" // Klasa przeciwnika dziedziczy po pionku. Dodajemy go.
/* Tworzymy klase pionka podobnie jak klase gracza
z ta roznica, ze jej kontroler poki co nic nie bedzie robil.
Zachowaniem wroga zajmiemy sie pozniej.
*/
class CEnemy
: public IPawn
{
sf::Sprite m_sprite; // Tworzymy sprajta do wyswietlania wroga
#include "..\Include\Player.hpp"
#include "..\Include\Game.hpp" // Potrzebujemy klasy gry bo w niej znajduje sie okno, na ktorym bedziemy wyswietlac gracza.
#include "..\Include\TextureManager.hpp" // Potrzebujemy texture menedzera by dostac teksture
////////////////////////////////////////////////////////
CPlayer::CPlayer() // Konstruktor klasy
: IPawn(new CPlayerController) // klasa bazowa IPawn pobiera wskaznik na kontroler, ktory sami musimy sobie utworzyc.
{
/* Tutaj przeprowadzimy sobie konfiguracje naszego gracza.
#include "Pawn.hpp" // Klasa dziedziczy po pionku, wiec pamietamy by dodac plik naglowkowy
// Klasa gracza
class CPlayer
: public IPawn
{
sf::Sprite m_sprite; // Potrzebujemy sprita by wyswietlac naszego gracza
public:
CPlayer(); // Konstruktor
class CPlayer
: public IPawn
{
sf::Sprite m_sprite;
public:
CPlayer();
virtual void SetLocation(const grim::Vector2 &location) override;
virtual void Draw() override;
void CGame::Run() // Glowny kod gry.
{
/* Pamiętamy żeby ustawić odpowiedni status aplikacji. */
m_status = Status::Running;
/* Ciemnoszary kolor. */
sf::Color bgColor(30, 30, 30);
/* By prawidłowo uaktualniać scenę potrzebujemy czasu klatki. */
sf::Clock GameClock;
/* W DeltaTime przechowujemy czas klatki. */
float DeltaTime = 1 / 60.f;
sf::Clock GameClock;
// Pierwszy pomiar zostanie zakonczony dopiero na koncu pierwszej klatki.
// Na początku zakładamy, że czas klatki to idealnie 1 / 60 sekundy (60 FPS)
float DeltaTime = 1 / 60.f;
while(...)
{
float frameStartTime = GameClock.getElapsedTime().asSeconds();
// Kod pętli głównej...
CLevel::CLevel()
{
}
////////////////////////////////////////////////////////////////
CLevel::~CLevel()
{
/* Przy niszczeniu sceny niszczymy także aktorów. */
this->Cleanup();
}
////////////////////////////////////////////////////////////////
class CLevel final
{
public:
/* Ułatwmy sobie życie typedefem. */
typedef std::vector<IActor *> TActorsV;
/* Konstruktor klasy poziomu.
*/
CLevel();
/* Destruktor klasy poziomu.
IPawn::IPawn(IPawnController * controller)
: m_controller(nullptr)
{
if (controller && controller->Possess(this))
{
m_controller = controller;
}
}
/////////////////////////////////////////////////////////////////////////
IPawn::~IPawn()
/////////////////////////////////////////////////////////////////////////
IPawnController::IPawnController()
: m_owner(nullptr)
{
}
/////////////////////////////////////////////////////////////////////////
IPawnController::~IPawnController()
{
}