CustomControls configuring example

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
master
sigonasr2 2 years ago
parent 66aa6d03c6
commit a7540c87d1
  1. BIN
      C++ProjectTemplate
  2. 76
      C++ProjectTemplate.html
  3. 2
      C++ProjectTemplate.js
  4. BIN
      C++ProjectTemplate.wasm
  5. 89
      main.cpp

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

@ -1,21 +1,25 @@
#define OLC_PGE_APPLICATION
#include "pixelGameEngine.h"
//--------------------------------------------------------------------------------------------------
// class
//--------------------------------------------------------------------------------------------------
class PressDetect : public olc::PixelGameEngine
class CustomControls : public olc::PixelGameEngine
{
public:
PressDetect()
CustomControls()
{
sAppName = "Double Press Down Detect";
sAppName = "Configuring Custom Controls";
}
private:
bool bothKeysPressed=false;
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:
@ -24,25 +28,74 @@ public:
return true;
}
//--------------------------------------------------------------------------------------------------
// Main Game Function
//--------------------------------------------------------------------------------------------------
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;
}
if (GetKey(olc::SHIFT).bHeld&&GetKey(olc::A).bHeld&&!bothKeysPressed) {
bothKeysPressed=true;
std::cout<<"Both Keys pressed\n";
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 (bothKeysPressed&&(GetKey(olc::SHIFT).bReleased||GetKey(olc::A).bReleased)) {
bothKeysPressed=false;
std::cout<<"Both Keys released\n";
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({32,32},{32,32},(bothKeysPressed)?olc::YELLOW:olc::BLACK);
DrawRect(pos,{32,32},olc::WHITE);
if (IsTextEntryEnabled()) {
DrawString({0,0},"Please press a key for "+keysList[configuringKeyIndex]);
}
return true;
}
@ -51,7 +104,7 @@ public:
int main()
{
PressDetect game;
CustomControls game;
if (game.Construct(256, 240, 4, 4))
game.Start();

Loading…
Cancel
Save