git repos / blockattack-game

commit fc425e41

Poul Sander · 2019-08-14 18:10
fc425e411364e4962947ff5819b1f14f8608042a patch · browse files
parent ca85af8169655a99da6f7cb7da699d1cdf979110

Started to add an option for writing with gamepad/mouse

Changed files

M source/code/DialogBox.cpp before
M source/code/DialogBox.hpp before
diff --git a/source/code/DialogBox.cpp b/source/code/DialogBox.cpp index 797aa86..da8e947 100644 --- a/source/code/DialogBox.cpp +++ b/source/code/DialogBox.cpp
@@ -25,6 +25,7 @@ http://www.blockattack.net
#include "global.hpp"
#include "common.h"
#include "ReadKeyboard.h"
+#include "utf8.h"
static void setButtonFont(const sago::SagoDataHolder* holder, sago::SagoTextField& field, const char* text) {
field.SetHolder(holder);
@@ -94,6 +95,16 @@ DialogBox::DialogBox(int x, int y, const std::string& name, const std::string& h
sagoTextSetBlueFont(textField);
sagoTextSetBlueFont(cursorLabel);
cursorLabel.SetText("|");
+ for (auto position = alphabet.begin(); position != alphabet.end() ; utf8::advance(position, 1, alphabet.end())) {
+ auto endPosition = position;
+ utf8::advance(endPosition, 1, alphabet.end());
+ std::string theChar(position, endPosition);
+ gamePadChars.push_back(theChar);
+ gamePadCharFields.emplace_back();
+ sago::SagoTextField& tf = gamePadCharFields.back();
+ setButtonFont(&globalData.spriteHolder->GetDataHolder(), tf, theChar.c_str());
+ std::cout << *position << "\n";
+ }
}
@@ -125,6 +136,11 @@ void DialogBox::Draw(SDL_Renderer* target) {
width -= 2;
cursorLabel.Draw(target, x+40+width,y+76);
}
+ for (size_t i = 0; i<gamePadCharFields.size(); ++i) {
+ int limit = 20;
+ sago::SagoTextField& f = gamePadCharFields.at(i);
+ f.Draw(target, globalData.xsize/2-400+(i%limit)*40, globalData.ysize/2+150+(i/limit)*40);
+ }
}
void DialogBox::ProcessInput(const SDL_Event& event, bool& processed) {
diff --git a/source/code/DialogBox.hpp b/source/code/DialogBox.hpp index d448418..9268cc6 100644 --- a/source/code/DialogBox.hpp +++ b/source/code/DialogBox.hpp
@@ -58,6 +58,11 @@ private:
sago::SagoTextField cancelLabel;
sago::SagoTextField textField;
sago::SagoTextField cursorLabel;
+ std::string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz"
+ ".,:!?+_^@#%&=*";
+ std::vector<std::string> gamePadChars;
+ std::vector<sago::SagoTextField> gamePadCharFields;
};
#endif /* DIALOGBOX_HPP */