#pragma once
#include "MenuComponent.h"
#include "DEFINES.h"
#include "Crawler.h"
#include "utils.h"

INCLUDE_game

class MenuLabel:public MenuComponent{
    bool shadow=false;
    bool centered=true;
    int scale=1;
public:
    inline MenuLabel(MenuType parent,geom2d::rect<float>rect,std::string label,int scale=1,bool centered=true,bool shadow=false)
        :MenuComponent(parent,rect,label,MenuFunc{},false),scale(scale),centered(centered),shadow(shadow){
        border=false;
    }
    inline void SetLabel(std::string text){
        label=text;
    }
protected:
    virtual void inline Update(Crawler*game)override{
	    MenuComponent::Update(game);
    }
    virtual void inline Draw(Crawler*game,vf2d parentPos,bool focused)override{
        std::string wrappedText=util::WrapText(game,label,rect.size.x,true,{float(scale),float(scale)});
        vf2d drawPos=parentPos+rect.middle()-vf2d{game->GetTextSizeProp(wrappedText)}*float(scale)/2; //Assume centered.
        if(!centered){
            drawPos=rect.pos+parentPos;
        }
        if(shadow){
            game->DrawShadowStringProp(drawPos,wrappedText,focused?WHITE:WHITE*"ThemeGlobal.MenuUnfocusedColorMult"_F,BLACK,{float(scale),float(scale)});
        }else{
	        game->DrawStringProp(drawPos,wrappedText,focused?WHITE:WHITE*"ThemeGlobal.MenuUnfocusedColorMult"_F,scale);
        }
    }
};