diff --git a/C++/scripts/md5 b/C++/scripts/md5 index b69aebb..e63460b 100644 --- a/C++/scripts/md5 +++ b/C++/scripts/md5 @@ -4,4 +4,4 @@ debug.sh:849488515cab075948653c15eec4177b - lines.sh:3b907786f7fc9204025993016c9080de - release.sh:0ab321c3fa2f1a1b2f03b1aec3bce816 - temp:d41d8cd98f00b204e9800998ecf8427e - -web.sh:4bbe9c5710a0ae4289468c3f7f340ff1 - +web.sh:2e1208477c7e2a8d154be8dafa656f89 - diff --git a/C++ProjectTemplate.wasm b/C++ProjectTemplate.wasm index 1778b14..49c60f4 100755 Binary files a/C++ProjectTemplate.wasm and b/C++ProjectTemplate.wasm differ diff --git a/main.cpp b/main.cpp index 6e094e8..bef729f 100644 --- a/main.cpp +++ b/main.cpp @@ -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::vectorcursors={{0,2}}; + std::vectordocument={{"Test"}}; + float lastBlinkTime=0; + + IDE() { sAppName = "PGEIDE"; } @@ -13,12 +22,73 @@ public: public: bool OnUserCreate() override { - std::cout<<"Created: "<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].line0){ + 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"<