#pragma once
#include "Crawler.h"
#include "DEFINES.h"
#include "Menu.h"
#include "MenuLabel.h"

INCLUDE_game
typedef Attribute A;

void Menu::InitializeClassSelectionWindow(){
	Menu*classSelectionWindow=CreateMenu(CLASS_SELECTION,CENTERED,game->GetScreenSize()-vi2d{24,24});

	classSelectionWindow->S(A::CLASS_SELECTION)="Warrior"; //Default selected class.

	vf2d outlineSize=classSelectionWindow->size-vf2d{13,13};

	MenuLabel*outline=new MenuLabel(CLASS_SELECTION,{{4,4},outlineSize},"",1,true,false,true,false);

	classSelectionWindow->AddComponent("Outline Border",outline);

	vf2d buttonPadding={2,2};
	vf2d buttonSize={outlineSize.y/3-buttonPadding.y*3,outlineSize.y/3-buttonPadding.y*3};

	float buttonTotalWidth=(buttonSize.x+buttonPadding.x)*3;

	vf2d buttonStartPos=outline->GetPos()+vf2d{outlineSize.x/2,outlineSize.y/3}-vf2d{buttonTotalWidth/2,0};

	MenuComponent*warriorButton=new MenuComponent(CLASS_SELECTION,{buttonStartPos+(buttonSize+buttonPadding)*vf2d{0,0},buttonSize},Warrior::name,CLASS_INFO,
	[](MenuFuncData data){
		data.menu.S(A::CLASS_SELECTION)=Warrior::name;
		delete Menu::menus[CLASS_INFO];
		Menu::InitializeClassInfoWindow();
	});
	MenuComponent*rangerButton=new MenuComponent(CLASS_SELECTION,{buttonStartPos+(buttonSize+buttonPadding)*vf2d{1,0},buttonSize},Ranger::name,CLASS_INFO,
	[](MenuFuncData data){
		data.menu.S(A::CLASS_SELECTION)=Ranger::name;
		delete Menu::menus[CLASS_INFO];
		Menu::InitializeClassInfoWindow();
	});
	MenuComponent*wizardButton=new MenuComponent(CLASS_SELECTION,{buttonStartPos+(buttonSize+buttonPadding)*vf2d{2,0},buttonSize},Wizard::name,CLASS_INFO,
	[](MenuFuncData data){
		data.menu.S(A::CLASS_SELECTION)=Wizard::name;
		delete Menu::menus[CLASS_INFO];
		Menu::InitializeClassInfoWindow();
	});
	MenuComponent*thiefButton=new MenuComponent(CLASS_SELECTION,{buttonStartPos+(buttonSize+buttonPadding)*vf2d{0,1},buttonSize},Thief::name,CLASS_INFO,
	[](MenuFuncData data){
		data.menu.S(A::CLASS_SELECTION)=Thief::name;
		delete Menu::menus[CLASS_INFO];
		Menu::InitializeClassInfoWindow();
	});
	MenuComponent*trapperButton=new MenuComponent(CLASS_SELECTION,{buttonStartPos+(buttonSize+buttonPadding)*vf2d{1,1},buttonSize},Trapper::name,CLASS_INFO,
	[](MenuFuncData data){
		data.menu.S(A::CLASS_SELECTION)=Trapper::name;
		delete Menu::menus[CLASS_INFO];
		Menu::InitializeClassInfoWindow();
	});
	MenuComponent*witchButton=new MenuComponent(CLASS_SELECTION,{buttonStartPos+(buttonSize+buttonPadding)*vf2d{2,1},buttonSize},Witch::name,CLASS_INFO,
	[](MenuFuncData data){
		data.menu.S(A::CLASS_SELECTION)=Witch::name;
		delete Menu::menus[CLASS_INFO];
		Menu::InitializeClassInfoWindow();
	});

	classSelectionWindow->AddComponent("Warrior Button",warriorButton);
	classSelectionWindow->AddComponent("Ranger Button",rangerButton);
	classSelectionWindow->AddComponent("Wizard Button",wizardButton);
	classSelectionWindow->AddComponent("Thief Button",thiefButton);
	classSelectionWindow->AddComponent("Trapper Button",trapperButton);
	classSelectionWindow->AddComponent("Witch Button",witchButton);
}