//sends events to handler for the ocurring area, returns handlers result bool EH_handleEvent(SDL_Event* ev) { if(!isInitialised)EH_init(); //if no registered handlers, return false (unhandled) if(EventHandlers.logicalLength < 1) return false; bool handled = false; ListNode* current = EventHandlers.head; EventHandlingObject* evHanObj; while(current) { evHanObj = current->data; if(Rect_containsPoint(evHanObj->touchableArea, ev->button.x, ev->button.y)) { handled = evHanObj->evHandler(evHanObj->selfRef, ev); }else{ if(evHanObj->needsNoActionNotification) evHanObj->evHandler(evHanObj->selfRef, &BUTTONUP_EVENT); } current = current->next; } return handled; }
static bool _FingerDown(SDL_Event* e) { bool res = false; SDL_FingerID touchF = e->tfinger.fingerId; // check if touch is ball touch if(Rect_containsPoint(getBallTouchArea(), e->tfinger.x, e->tfinger.y) /*&& ballFinger == UNTOUCHED*/) { //ball touch ballFinger = e->tfinger.fingerId; ballTarget.i = e->tfinger.x; ballTarget.j = e->tfinger.y; res = true; } else if(currFinger == UNTOUCHED || touchF == currFinger) { currFinger = e->tfinger.fingerId; target.i = e->tfinger.x; target.j = e->tfinger.y; res = true; } return res; }