Keyboard functionality

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
master
sigonasr2, Sig, Sigo 2 years ago
parent f0658f3588
commit 4d7c854228
  1. 2
      C++/scripts/md5
  2. BIN
      C++ProjectTemplate.wasm
  3. 81
      main.cpp
  4. 2
      sig

@ -4,4 +4,4 @@ debug.sh:849488515cab075948653c15eec4177b -
lines.sh:3b907786f7fc9204025993016c9080de -
release.sh:0ab321c3fa2f1a1b2f03b1aec3bce816 -
temp:d41d8cd98f00b204e9800998ecf8427e -
web.sh:4bbe9c5710a0ae4289468c3f7f340ff1 -
web.sh:2e1208477c7e2a8d154be8dafa656f89 -

Binary file not shown.

@ -2,10 +2,19 @@
using namespace olc;
class Example : public olc::PixelGameEngine
struct Cursor{
int line=0;
int pos=0;
};
class IDE : public olc::PixelGameEngine
{
public:
Example()
std::vector<Cursor>cursors={{0,2}};
std::vector<std::string>document={{"Test"}};
float lastBlinkTime=0;
IDE()
{
sAppName = "PGEIDE";
}
@ -13,12 +22,73 @@ public:
public:
bool OnUserCreate() override
{
std::cout<<"Created: "<<ScreenWidth()<<"x"<<ScreenHeight()<<std::endl;
std::cout<<"Created IDE: "<<ScreenWidth()<<"x"<<ScreenHeight()<<std::endl;
return true;
}
bool OnUserUpdate(float fElapsedTime) override
{
if (GetKey(RIGHT).bPressed){
if (cursors[0].pos<document[cursors[0].line].size()){
cursors[0].pos++;
} else
if (cursors[0].line<document.size()-1){
cursors[0].line++;
cursors[0].pos=0;
}
}
if (GetKey(LEFT).bPressed){
if (cursors[0].pos>0){
cursors[0].pos--;
} else
if (cursors[0].line>0){
cursors[0].line--;
cursors[0].pos=document[cursors[0].line].size();
}
}
if (GetKey(DOWN).bPressed){
if (cursors[0].line<document.size()-1){
cursors[0].line++;
}
}
if (GetKey(UP).bPressed){
if (cursors[0].line>0){
cursors[0].line--;
}
}
if (GetKey(HOME).bPressed){
if(GetKey(CTRL).bHeld){
cursors[0].line=0;
}
cursors[0].pos=0;
}
if (GetKey(END).bPressed){
if(GetKey(CTRL).bHeld){
cursors[0].line=document.size()-1;
}
cursors[0].pos=document[cursors[0].line].size();
}
if (GetKey(ENTER).bPressed){
if(cursors[0].pos==0){
//Insert in front of line.
document.insert(document.begin()+cursors[0].line++,{{}});
} else{
document.insert(document.begin()+cursors[0].line+1,document[cursors[0].line].substr(cursors[0].pos,document[cursors[0].line].size()));
document[cursors[0].line]=document[cursors[0].line].substr(0,cursors[0].pos);
cursors[0].pos=0;
cursors[0].line++;
}
}
int i=0;
for (std::string&line:document){
DrawStringDecal({0,float(i)*10},line);
if(cursors[0].line==i&&lastBlinkTime>0.5f){DrawStringDecal({float(cursors[0].pos)*8-2,float(i)*10+1},"|",GREY,{0.5,0.8});}
i++;
}
lastBlinkTime+=fElapsedTime;
if (lastBlinkTime>1.f){
lastBlinkTime--;
}
return true;
}
@ -32,15 +102,14 @@ public:
int main(int argc, char** argv)
{
Example demo;
IDE demo;
rcode code;
if (argc==3){
code=demo.Construct(std::stoi(argv[1]), std::stoi(argv[2]), 1, 1);
} else {
code=demo.Construct(1920, 1080, 1, 1);
code=demo.Construct(200, 200, 1, 1);
}
if (code!=FAIL){
std::cout<<"Run"<<std::endl;
demo.Start();
}
return 0;

2
sig

@ -1,4 +1,4 @@
export AUTO_UPDATE=true
export AUTO_UPDATE=false
source utils/define.sh

Loading…
Cancel
Save