CSC3224_Computer_Games_Development / GameEngine / Engine_Text / Text.h
Text.h
Raw
#pragma once
#include "../Engine_Messaging_System/MessageSystemEvent.h"
#include "../Engine_Json_System/json.h"
// Generate text on Window (Game)
class Text : public MessageFromJsonSystemEvent<Text>
{
public:
	static const MessageSystemEventType messageTypeID = MessageSystemEventType::TEXT_TYPE;
	MessageSystemEventType getType() override { return messageTypeID; }
	int getTypeValue() override { return static_cast<int>(messageTypeID); }

	static Text* messageBuildFromJson(Json::Value Engine_PhysicsystemSource, ...);

	explicit Text(std::string textName) : textName(textName)
	{
	};

	std::string getText() const { return textName; };
	void setText(std::string name) { textName = name; };

	Json::Value convertToJson() override;

protected:
	std::string textName;
};

inline Text* Text::messageBuildFromJson(Json::Value Engine_PhysicsystemSource, ...)
{
	std::string textName = Engine_PhysicsystemSource.get("TextName", "").asString();
	if (textName.empty())
	{
		throw "Invalid TextName";
	}
	return new Text(textName);
}

inline Json::Value Text::convertToJson()
{
	Json::Value engineSystemSource;
	engineSystemSource["EventType"] = static_cast<int>(this->getType());
	engineSystemSource["TextName"] = this->getText();
	return engineSystemSource;
}