Implemented proper steam icon displays for all users of DrawInput (base camp NPCs). Release Build 8339.
This commit is contained in:
parent
3e35645b09
commit
78227b9c4c
@ -568,7 +568,17 @@ std::string InputGroup::GetDisplayName(){
|
||||
|
||||
void InputGroup::DrawInput(const std::variant<AiL*const,TileTransformedView*const,ViewPort*const>renderer,const vf2d pos,const std::string_view displayText,const uint8_t alpha,InputType type,vf2d textScale)const{
|
||||
std::vector<Input>displayKeys;
|
||||
|
||||
auto OriginalGameIcon=[](std::optional<Input>input)->bool{
|
||||
if(input.has_value()){
|
||||
EInputActionOrigin action=Input::steamGameInputToOrigin.at(Steam::SteamInput(input.value().key)).second[0];
|
||||
return Input::steamIconToGameIcon.count(action);
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
switch(type){
|
||||
case STEAM:std::copy_if(keys.begin(),keys.end(),std::back_inserter(displayKeys),[](const Input&input){return input.GetType()==STEAM;});break;
|
||||
case CONTROLLER:std::copy_if(keys.begin(),keys.end(),std::back_inserter(displayKeys),[](const Input&input){return input.GetType()==CONTROLLER;});break;
|
||||
case MOUSE:std::copy_if(keys.begin(),keys.end(),std::back_inserter(displayKeys),[](const Input&input){return input.GetType()==KEY||input.GetType()==MOUSE;});break;
|
||||
default:std::copy_if(keys.begin(),keys.end(),std::back_inserter(displayKeys),[](const Input&input){return input.GetType()==KEY||input.GetType()==MOUSE;});break;
|
||||
@ -584,8 +594,14 @@ void InputGroup::DrawInput(const std::variant<AiL*const,TileTransformedView*cons
|
||||
buttonImgs.push_back(input.GetIcon(GameSettings::GetIconType()).Decal());
|
||||
}else
|
||||
if(input.HasIcon()){
|
||||
buttonImgSize.x+=input.GetIcon().Sprite()->width*textScale.x+"Interface.InputHelperSpacing"_F;
|
||||
buttonImgSize.y=std::max(buttonImgSize.y,float(input.GetIcon().Sprite()->height));
|
||||
float alteredIconScale=1.f;
|
||||
|
||||
if(type==STEAM&&!OriginalGameIcon(input)){
|
||||
alteredIconScale/=2.85f; //They are initially 32x32.
|
||||
}
|
||||
|
||||
buttonImgSize.x+=input.GetIcon().Sprite()->width*alteredIconScale*textScale.x+"Interface.InputHelperSpacing"_F;
|
||||
buttonImgSize.y=std::max(buttonImgSize.y,float(input.GetIcon().Sprite()->height*alteredIconScale));
|
||||
buttonImgs.push_back(input.GetIcon().Decal());
|
||||
}else{
|
||||
buttonImgSize.x+=game->GetTextSizeProp(input.GetDisplayName()).x*textScale.x+"Interface.InputHelperSpacing"_F;
|
||||
@ -596,10 +612,11 @@ void InputGroup::DrawInput(const std::variant<AiL*const,TileTransformedView*cons
|
||||
|
||||
vf2d descriptionTextSize=game->GetTextSizeProp(displayText);
|
||||
vf2d offset=-((buttonImgSize+descriptionTextSize)/2.f);
|
||||
for(auto&button:buttonImgs){
|
||||
for(size_t index=0;auto&button:buttonImgs){
|
||||
if(std::holds_alternative<Decal*>(button)){
|
||||
Decal*img=std::get<Decal*>(button);
|
||||
|
||||
float alteredIconScale=1.f;
|
||||
if(type==STEAM&&!OriginalGameIcon(displayKeys[index]))alteredIconScale/=2.85f; /*They are initially 32x32.*/
|
||||
#pragma region Render Macro
|
||||
#define Render(rendererType) \
|
||||
std::get<rendererType*const>(renderer)->DrawDecal(pos+offset-vf2d{0.f,2.f},img,textScale,{255,255,255,alpha});
|
||||
@ -613,7 +630,7 @@ void InputGroup::DrawInput(const std::variant<AiL*const,TileTransformedView*cons
|
||||
if(std::holds_alternative<ViewPort*const>(renderer)){
|
||||
Render(ViewPort);
|
||||
}else ERR("Could not find proper renderer for rendering Inputs!");
|
||||
offset.x+=img->sprite->width*textScale.x+"Interface.InputHelperSpacing"_I;
|
||||
offset.x+=img->sprite->width*alteredIconScale*textScale.x+"Interface.InputHelperSpacing"_I;
|
||||
}else
|
||||
if(std::holds_alternative<std::string>(button)){
|
||||
std::string label=std::get<std::string>(button);
|
||||
@ -642,6 +659,7 @@ void InputGroup::DrawInput(const std::variant<AiL*const,TileTransformedView*cons
|
||||
}else ERR("Could not find proper renderer for rendering Inputs!");
|
||||
offset.x+=textSize.x+"Interface.InputHelperSpacing"_I;
|
||||
}else [[unlikely]]ERR("WARNING! Hit a state where no data is inside of the button! THIS SHOULD NOT BE HAPPENING!");
|
||||
index++;
|
||||
}
|
||||
|
||||
#pragma region Render Display Text
|
||||
@ -739,12 +757,10 @@ void InputGroup::DrawPrimaryInput(const std::variant<AiL*const,TileTransformedVi
|
||||
for(auto&button:buttonImgs){
|
||||
if(std::holds_alternative<Decal*>(button)){
|
||||
Decal*img=std::get<Decal*>(button);
|
||||
|
||||
float alteredIconScale=1.f;
|
||||
if(type==STEAM&&!OriginalGameIcon(primaryKey))alteredIconScale/=2.85f; /*They are initially 32x32.*/
|
||||
#pragma region Render Macro
|
||||
#define Render(rendererType) \
|
||||
float alteredIconScale=1.f; \
|
||||
\
|
||||
if(type==STEAM&&!OriginalGameIcon(primaryKey))alteredIconScale/=2.85f; /*They are initially 32x32.*/ \
|
||||
std::get<rendererType*const>(renderer)->DrawDecal(pos+offset-vf2d{0.f,2.f},img,alteredIconScale*textScale,{255,255,255,alpha});
|
||||
#pragma endregion
|
||||
if(std::holds_alternative<AiL*const>(renderer)){
|
||||
@ -756,7 +772,7 @@ void InputGroup::DrawPrimaryInput(const std::variant<AiL*const,TileTransformedVi
|
||||
if(std::holds_alternative<ViewPort*const>(renderer)){
|
||||
Render(ViewPort);
|
||||
}else ERR("Could not find proper renderer for rendering Inputs!");
|
||||
offset.x+=img->sprite->width*textScale.x+"Interface.InputHelperSpacing"_I;
|
||||
offset.x+=img->sprite->width*alteredIconScale*textScale.x+"Interface.InputHelperSpacing"_I;
|
||||
}else
|
||||
if(std::holds_alternative<std::string>(button)){
|
||||
std::string label=std::get<std::string>(button);
|
||||
|
@ -39,7 +39,7 @@ All rights reserved.
|
||||
#define VERSION_MAJOR 0
|
||||
#define VERSION_MINOR 5
|
||||
#define VERSION_PATCH 1
|
||||
#define VERSION_BUILD 8336
|
||||
#define VERSION_BUILD 8339
|
||||
|
||||
#define stringify(a) stringify_(a)
|
||||
#define stringify_(a) #a
|
||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user