#pragma once #include "olcPixelGameEngine.h" #include "SMX.h" using namespace olc; class PGEX_SMX : public PGEX{ public: PGEX_SMX():PGEX(true){}; //SMX "screen" is 12x21 //Each panel is 4x7 static void SMXStateChangedCallback(int pad, SMXUpdateCallbackReason reason, void *pUser) { PGEX_SMX *pSelf = (PGEX_SMX*) pUser; pSelf->SMXStateChanged( pad, reason ); } static void SMXLogCallback(const char *log) { printf("-> %s\n", log); } void SMXStateChanged(int pad, SMXUpdateCallbackReason reason) { printf("Device %i state changed: %04x\n", pad, SMX_GetInputState(pad)); } virtual void OnAfterUserCreate()override{ SMX_Start( SMXStateChangedCallback, this ); }; virtual void OnAfterUserUpdate(float fElapsedTime)override{ std::string lightData; for (int pad=0;pad<2;pad++){ for(int i=0;i<9;i++){ int row=0; for(int y=i/3*7;yGetDrawTarget()->GetPixel(x,y)); lightData.append(1,p.r); lightData.append(1,p.g); lightData.append(1,p.b); col++; } row++; } } } SMX_SetLights2( lightData.data(), lightData.size() ); } };