Implemented proper steam icon displays for all users of DrawInput (base camp NPCs). Release Build 8339.

pull/57/head
sigonasr2 8 months ago
parent db5b071689
commit 5016dc9b66
  1. 36
      Adventures in Lestoria/Key.cpp
  2. 2
      Adventures in Lestoria/Version.h
  3. BIN
      x64/Release/Adventures in Lestoria.exe

@ -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{ 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; 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){ 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 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; 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; 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()); buttonImgs.push_back(input.GetIcon(GameSettings::GetIconType()).Decal());
}else }else
if(input.HasIcon()){ if(input.HasIcon()){
buttonImgSize.x+=input.GetIcon().Sprite()->width*textScale.x+"Interface.InputHelperSpacing"_F; float alteredIconScale=1.f;
buttonImgSize.y=std::max(buttonImgSize.y,float(input.GetIcon().Sprite()->height));
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()); buttonImgs.push_back(input.GetIcon().Decal());
}else{ }else{
buttonImgSize.x+=game->GetTextSizeProp(input.GetDisplayName()).x*textScale.x+"Interface.InputHelperSpacing"_F; 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 descriptionTextSize=game->GetTextSizeProp(displayText);
vf2d offset=-((buttonImgSize+descriptionTextSize)/2.f); vf2d offset=-((buttonImgSize+descriptionTextSize)/2.f);
for(auto&button:buttonImgs){ for(size_t index=0;auto&button:buttonImgs){
if(std::holds_alternative<Decal*>(button)){ if(std::holds_alternative<Decal*>(button)){
Decal*img=std::get<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 #pragma region Render Macro
#define Render(rendererType) \ #define Render(rendererType) \
std::get<rendererType*const>(renderer)->DrawDecal(pos+offset-vf2d{0.f,2.f},img,textScale,{255,255,255,alpha}); 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)){ if(std::holds_alternative<ViewPort*const>(renderer)){
Render(ViewPort); Render(ViewPort);
}else ERR("Could not find proper renderer for rendering Inputs!"); }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 }else
if(std::holds_alternative<std::string>(button)){ if(std::holds_alternative<std::string>(button)){
std::string label=std::get<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!"); }else ERR("Could not find proper renderer for rendering Inputs!");
offset.x+=textSize.x+"Interface.InputHelperSpacing"_I; 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!"); }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 #pragma region Render Display Text
@ -739,12 +757,10 @@ void InputGroup::DrawPrimaryInput(const std::variant<AiL*const,TileTransformedVi
for(auto&button:buttonImgs){ for(auto&button:buttonImgs){
if(std::holds_alternative<Decal*>(button)){ if(std::holds_alternative<Decal*>(button)){
Decal*img=std::get<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 #pragma region Render Macro
#define Render(rendererType) \ #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}); std::get<rendererType*const>(renderer)->DrawDecal(pos+offset-vf2d{0.f,2.f},img,alteredIconScale*textScale,{255,255,255,alpha});
#pragma endregion #pragma endregion
if(std::holds_alternative<AiL*const>(renderer)){ 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)){ if(std::holds_alternative<ViewPort*const>(renderer)){
Render(ViewPort); Render(ViewPort);
}else ERR("Could not find proper renderer for rendering Inputs!"); }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 }else
if(std::holds_alternative<std::string>(button)){ if(std::holds_alternative<std::string>(button)){
std::string label=std::get<std::string>(button); std::string label=std::get<std::string>(button);

@ -39,7 +39,7 @@ All rights reserved.
#define VERSION_MAJOR 0 #define VERSION_MAJOR 0
#define VERSION_MINOR 5 #define VERSION_MINOR 5
#define VERSION_PATCH 1 #define VERSION_PATCH 1
#define VERSION_BUILD 8336 #define VERSION_BUILD 8339
#define stringify(a) stringify_(a) #define stringify(a) stringify_(a)
#define stringify_(a) #a #define stringify_(a) #a

Loading…
Cancel
Save