diff options
author | Jonas Gunz <himself@jonasgunz.de> | 2019-03-07 03:50:05 +0100 |
---|---|---|
committer | Jonas Gunz <himself@jonasgunz.de> | 2019-03-07 03:50:05 +0100 |
commit | e3cd17d1a10fd12bb38badddc951ba45424d683f (patch) | |
tree | 080808eacbd2c61b1f3d10f27c650ae24d4e3129 /example/collision.cpp | |
parent | 957cbcd55312665b02df2296fae4a6f6bb515707 (diff) | |
download | termgl-e3cd17d1a10fd12bb38badddc951ba45424d683f.tar.gz |
Update to travis build test
Diffstat (limited to 'example/collision.cpp')
-rw-r--r-- | example/collision.cpp | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/example/collision.cpp b/example/collision.cpp new file mode 100644 index 0000000..7759dae --- /dev/null +++ b/example/collision.cpp @@ -0,0 +1,142 @@ +#include <unistd.h> +#include <string> + +#include "version.h" + +#include "cRender.h" +#include "cObject.h" +#include "cObjectHandler.h" +#include "cInput.h" +#include "cWiremesh.h" + +//#include "testobject.h" + +class testobject : cObject +{ +public: + testobject() + { + setSize(10,5); + cc = 0; + kc = 0; + + drawRectangle('#', NULL, {0,0}, {9,4}, _COL_GREEN, _COL_DEFAULT); + } + + ~testobject() { destruct(); } + + virtual void onClick(sPos _pos, unsigned int _button) + { + cc++; + drawText(std::to_string(cc), {2,2}, _COL_RED); + + drawPoint('Q', _pos, true, _COL_YELLOW); + } + + virtual bool onCollisionActive(sPos _hit, int _passiveObject){ + kc++; + drawText(std::to_string(kc), {0,0}, _COL_RED); + return true; + } + + virtual void onChar(unsigned char _c) { drawPoint(_c, {1,1},true, _COL_BLUE); } +private: + int cc; + int kc; +}; + +int main(int argc, char* argv[]) +{ + cRender render(' ', _COL_DEFAULT, 30,30); + cObjectHandler handler(&render); + cObject ver(45,1); + testobject obj2; + + cInput input; + + unsigned int framecounter = 0; + bool loop = true; + + if(argc > 1) + { + loop = false; + } + + render.render(); + + ver.drawText(DATE, {20,0}, _COL_WHITE); + ver.drawText(VERSTRING, {0,0}, _COL_WHITE); + int iver = handler.createObject(&ver); + handler.moveObject(iver, {0,0}, _MOVE_FORCE_ABSOLUTE); + + int iobj2 = handler.createObject((cObject*)&obj2); + handler.moveObject(iobj2, {3,3}, _MOVE_FORCE_ABSOLUTE); + + sPos middle = render.getSize(); + middle.x /= 2; + middle.y /= 2; + + while( loop ) + { + sInputEvent ie = input.poll(); + + if(ie.type != _EVENT_NULL) + { + if(ie.type == _EVENT_KEY) + { + switch (ie.c) + { + case 'A'://up + handler.setCameraPosition({0,-1}, _MOVE_RELATIVE); + break; + case 'B'://down + handler.setCameraPosition({0,1}, _MOVE_RELATIVE); + break; + case 'C'://right + handler.setCameraPosition({1,0}, _MOVE_RELATIVE); + break; + case 'D'://left + handler.setCameraPosition({-1,0}, _MOVE_RELATIVE); + break; + }; + } + else if (ie.type == _EVENT_MOUSE) + { + if(ie.b == 0) + handler.clickEvent({ie.x, ie.y}, 0); + } + else if (ie.type == _EVENT_CHAR) + { + //handler.charEvent(ie.c); + switch(ie.c) + { + case 'w': + handler.moveObject(iobj2, {0,-1}, _MOVE_RELATIVE); + break; + case 's': + handler.moveObject(iobj2, {0,1}, _MOVE_RELATIVE); + break; + case 'a': + handler.moveObject(iobj2, {-1,0}, _MOVE_RELATIVE); + break; + case 'd': + handler.moveObject(iobj2, {1,0}, _MOVE_RELATIVE); + break; + }; + } + else if (ie.type == _EVENT_TERM) + { + return 0; + } + } + + handler.write(); + render.render(); + framecounter++; + + if(loop) + usleep(10*1000); + } + + return 0; +} |