You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
1.9 KiB
112 lines
1.9 KiB
#define OLC_PGE_APPLICATION
|
|
#include "pixelGameEngine.h"
|
|
|
|
class CustomControls : public olc::PixelGameEngine
|
|
{
|
|
public:
|
|
CustomControls()
|
|
{
|
|
sAppName = "Configuring Custom Controls";
|
|
}
|
|
|
|
private:
|
|
|
|
olc::Key MOVE_UP=olc::W;
|
|
olc::Key MOVE_DOWN=olc::S;
|
|
olc::Key MOVE_RIGHT=olc::D;
|
|
olc::Key MOVE_LEFT=olc::A;
|
|
|
|
olc::vd2d pos = {0,0};
|
|
|
|
std::array<std::string,4> keysList = {"UP","RIGHT","DOWN","LEFT"};
|
|
int configuringKeyIndex = 0;
|
|
|
|
public:
|
|
|
|
bool OnUserCreate() override
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool OnUserUpdate(float fElapsedTime) override
|
|
{
|
|
if (GetKey(olc::F1).bPressed) {
|
|
TextEntryEnable(true);
|
|
configuringKeyIndex=0;
|
|
}
|
|
|
|
if (TextEntryGetString().size()>0) {
|
|
char c = TextEntryGetString()[0];
|
|
olc::Key customKey;
|
|
if (c>='a'&&c<='z') {
|
|
c-=32; //Capitalize the letter.
|
|
customKey=(olc::Key)(c-'A'+1);
|
|
} else
|
|
if (c>='A'&&c<='Z') {
|
|
customKey=(olc::Key)(c-'A'+1);
|
|
} else
|
|
if (c>='0'&&c<='9') {
|
|
customKey=(olc::Key)(c-'0'+olc::Key::K0);
|
|
} else
|
|
{
|
|
return true;
|
|
}
|
|
|
|
switch (configuringKeyIndex) {
|
|
case 0:{
|
|
MOVE_UP=customKey;
|
|
}break;
|
|
case 1:{
|
|
MOVE_RIGHT=customKey;
|
|
}break;
|
|
case 2:{
|
|
MOVE_DOWN=customKey;
|
|
}break;
|
|
case 3:{
|
|
MOVE_LEFT=customKey;
|
|
}break;
|
|
}
|
|
|
|
configuringKeyIndex++;
|
|
if (configuringKeyIndex<keysList.size()) {
|
|
TextEntryEnable(true);
|
|
} else {
|
|
TextEntryEnable(false);
|
|
}
|
|
}
|
|
|
|
if (GetKey(MOVE_UP).bHeld) {
|
|
pos+={0,-5*fElapsedTime};
|
|
}
|
|
if (GetKey(MOVE_DOWN).bHeld) {
|
|
pos+={0,5*fElapsedTime};
|
|
}
|
|
if (GetKey(MOVE_RIGHT).bHeld) {
|
|
pos+={5*fElapsedTime,0};
|
|
}
|
|
if (GetKey(MOVE_LEFT).bHeld) {
|
|
pos+={-5*fElapsedTime,0};
|
|
}
|
|
|
|
|
|
Clear(olc::VERY_DARK_BLUE);
|
|
|
|
DrawRect(pos,{32,32},olc::WHITE);
|
|
|
|
if (IsTextEntryEnabled()) {
|
|
DrawString({0,0},"Please press a key for "+keysList[configuringKeyIndex]);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
};
|
|
|
|
|
|
int main()
|
|
{
|
|
CustomControls game;
|
|
if (game.Construct(256, 240, 4, 4))
|
|
game.Start();
|
|
|
|
return 0;
|
|
}
|
|
|