#pragma once

CLASS(GuidePage, Object)
	ATTRIB(GuidePage, m_id, int, 0);
	ATTRIB(GuidePage, m_name, string, "");
	ATTRIB(GuidePage, m_icon, string, "");
	ATTRIB(GuidePage, m_description, string, "");

	METHOD(GuidePage, describe, string(GuidePage this))
	{
		TC(GuidePage, this);
		return this.m_description;
	}
	METHOD(GuidePage, display, void(GuidePage this, void(string name, string icon) returns))
	{
		TC(GuidePage, this);
		returns(this.m_name, this.m_icon ? this.m_icon : string_null);
	}

	CONSTRUCTOR(GuidePage, string _name)
	{
		CONSTRUCT(GuidePage);
		this.m_name = _name;
	}
ENDCLASS(GuidePage)


// This is for the freetext sections only

REGISTRY(IntroductionGuidePages, 4)
#define REGISTER_INTRODUCTION_PAGE(id, name) REGISTER(IntroductionGuidePages, GUIDE_INTRODUCTION_PAGE, id, m_id, NEW(GuidePage, name))
REGISTER_REGISTRY(IntroductionGuidePages)

REGISTRY(MovementGuidePages, 10)
#define REGISTER_MOVEMENT_PAGE(id, name) REGISTER(MovementGuidePages, GUIDE_MOVEMENT_PAGE, id, m_id, NEW(GuidePage, name))
REGISTER_REGISTRY(MovementGuidePages)

REGISTRY(ModsGuidePages, 2)
#define REGISTER_MODS_PAGE(id, name) REGISTER(ModsGuidePages, GUIDE_MODS_PAGE, id, m_id, NEW(GuidePage, name))
REGISTER_REGISTRY(ModsGuidePages)
