Esempio n. 1
0
//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;
}
Esempio n. 2
0
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;
}