< Back

VOLATILE DOVE ENGINE
> A HELLO WORLD TUTORIAL

Let's start with a hello-world program!

#include "../../include/AbstractMainClass.h"

class MainClass : public AbstractMainClass
{
public:
	MainClass(const std::string& arg0, const AppSetupInfos& appSetupInfos)
		: AbstractMainClass(arg0.c_str(), appSetupInfos) {}

	void init() {}
	void deinit() {}

	bool update() { return true; }
	void render() {
		Engine::instance().clearScreen(CoreUtils::colorBlack);
		Engine::instance().getScene2DMgr().drawText(
			NULL, "Hello world!", Int2(10, 10), 18, CoreUtils::colorWhite);
	}
};

AbstractMainClass* createAbstractMainClass(const std::vector<std::string>& arguments) {
	AppSetupInfos appSetupInfos;
	appSetupInfos.defaultFontImgPath = "default_font.png";
	return new MainClass(arguments[0], appSetupInfos);
}
	
(img)

Now let's do something a little bit more complicated.


#include <string>

#include "../../include/AbstractMainClass.h"
#include "../../include/Sprite.h"

class MainClass : public AbstractMainClass
{
public:
	MainClass(const std::string& arg0, const AppSetupInfos& appSetupInfos)
	:
		AbstractMainClass(arg0.c_str(), appSetupInfos), 
		m_str("Press any key and click"), 
		m_spritePositionAccurate(-100.0,-100.0) {
	}

	virtual ~MainClass() {}

	void init() {
		m_sprite = new Sprite("default_font.png");
	}

	void deinit() {
		delete m_sprite;
	}

	bool update() {
		m_spritePositionAccurate.data[0] += 
			Engine::instance().getFrameDuration() * 0.1;
		return true;
	}

	void render() {
		Engine::instance().clearScreen(CoreUtils::colorBlack);
		Engine::instance().getScene2DMgr().drawText(
			NULL, m_str.c_str(), Int2(10, 10), 18, CoreUtils::colorWhite);
		m_sprite->setPosition(CoreUtils::fromDouble2ToInt2(m_spritePositionAccurate));
		m_sprite->draw();
	}

	void onPointerPressed(MouseManager::ButtonType button, int x, int y) {
		m_spritePositionAccurate = CoreUtils::fromInt2ToDouble2(Int2(x, y));
	}

	void onKeyPressed(int virtualKey) {
		if (Engine::instance().getScene2DMgr().isDrawableCharacter((char)virtualKey)) {
			m_str = " ";
			m_str[0] = (char)virtualKey;
		}
	}

private:
	Sprite* m_sprite;
	Double2 m_spritePositionAccurate;
	std::string m_str;
};


AbstractMainClass* createAbstractMainClass(const std::vector<std::string>& arguments) {
{
	AppSetupInfos appSetupInfos;
	appSetupInfos.windowSize = Int2(400, 300);
	appSetupInfos.defaultFontImgPath = "default_font.png";
	return new MainClass(arguments[0], appSetupInfos);
}

	
(img)