예제 #1
0
///Referencing previous location results in garbage values
///Use only for hover
void HelloWorld::onMouseMove(Event* event)
{
#ifdef MOUSE_DOUBLE_LISTEN_FUDGE
    mouseMoveFudge = !mouseMoveFudge;
    if(!mouseMoveFudge)
        return;
#endif
    EventMouse* e = (EventMouse*)event;
    lastCursor.x = e->getCursorX();
    lastCursor.y = e->getCursorY();
    repaintCursor();
    Protractor* p = (Protractor*)protractor;
    p->setCursorAngle(StaticHelpers::headingAngle(lastCursor - Director::getInstance()->getVisibleSize()/2));

    if(isMouseDown[0])
    {//LMB drag

    }
    if(isMouseDown[1])
    {//RMB drag

    }
    if(isMouseDown[2])
    {//MMB drag

    }

    std::stringstream ss;
    ss << "MousePosition X:";
    ss << e->getCursorX() << " Y:" << e->getCursorY();
}
예제 #2
0
void QFormulatorEditWidget::setBlinkingCursorEnabled( bool enable )
{
    if( enable && QApplication::cursorFlashTime() > 0 )
        m_cursorBlinkTimer->start( QApplication::cursorFlashTime() / 2 );
    else
        m_cursorBlinkTimer->stop();
    m_cursorOn = enable;
    repaintCursor();
}
예제 #3
0
void HelloWorld::onTouchEnded(Touch* touch, Event* e)
{
    Commorose* c = (Commorose*)commorose;
    if(c->isVisible())
    {
        removeChild(cursorSprite);
        switch (c->getMode()) //TODO: do something with this
        {
            case -1:
            {
                cursorSprite = Sprite::create("cursors/arrow.png");
                break;
            }
            case 0:
            {
                cursorSprite = Sprite::create("cursors/speed.png");
                break;
            }
            case 1:
            {
                cursorSprite = Sprite::create("cursors/defences.png");
                break;
            }
            case 2:
            {
                cursorSprite = Sprite::create("cursors/sensors.png");
                break;
            }
            case 3:
            {
                cursorSprite = Sprite::create("cursors/weapons.png");
                break;
            }
        }
        addChild(cursorSprite, CURSOR_DEPTH);
        repaintCursor();
        commorose->setVisible(false);
        return;
    }
    if(timeSinceLastMouseUp < DOUBLECLICK_THRESHOLD)
    {
        auto p = (Protractor*)protractor;
        ((O3Sprite*)playerSub)->setTargetHeading(p->getCursorAngle());
    }
}
예제 #4
0
void QFormulatorEditWidget::switchCursor()
{
	m_cursorOn = !m_cursorOn;
	repaintCursor();
}
예제 #5
0
void QFormulatorEditWidget::repaintCursor()
{
	repaintCursor( caretPos(), caretSize() );
}
예제 #6
0
///all screen move functions should use this
void HelloWorld::lookAt(Vec2 pos)
{
    Vec2 visible = Director::getInstance()->getVisibleSize();
    this->setPosition(-1*(pos - visible/2));
    protractor->setPosition(lookingAt());
    notifier->setPosition(lookingAt());

    //draw grid
    Vec2 botleft = screenspaceToWorldspace(Vec2::ZERO);
    Vec2 topright = screenspaceToWorldspace(visible);
    Vec2 drawSpaceBotLeft = botleft - GRID_LABEL_SPACING;
    Vec2 drawSpaceTopRight = topright + GRID_LABEL_SPACING;
	DrawNode* gridSprite = (DrawNode*)getChildByName("gridSprite");
    if (gridSprite)
    {
        gridSprite->clear();
        std::vector<std::string> toRemove;
        for (auto child : gridSprite->getChildren())
        {
            if (!onScreen(child->getPosition(), Vec2(GRID_LABEL_SPACING)))
                toRemove.push_back(child->getName());
        }
        for (auto name : toRemove)
        {
            gridSprite->removeChildByName(name);
        }
    }
    else
    {
        gridSprite = DrawNode::create();
        gridSprite->setName("gridSprite");
        addChild(gridSprite, 0);
    }
    //vertical lines
    for (int i= drawSpaceBotLeft.x; i<drawSpaceTopRight.x; i++)
    {
        if(i % (int)GRID_SPACING.x)
            continue;
        gridSprite->drawSegment(Vec2(i, drawSpaceBotLeft.y), Vec2(i, drawSpaceBotLeft.y+visible.y+2*GRID_LABEL_SPACING.y),
                                GRID_LINE_THICKNESS, Color4F(1,1,1,0.1));
        if(!(i % (int)GRID_LABEL_SPACING.x))
        {
            std::string txt = std::to_string(i);
            auto label = gridSprite->getChildByName("v" + txt);
            if (!label)
            {
                label = Label::createWithTTF(txt, "fonts/arial.ttf", GRID_LABEL_SIZE);
                label->setName("v" + txt);
                gridSprite->addChild(label);
            }
            label->setPosition(Vec2(i, topright.y - GRID_LABEL_SIZE * 2));
        }
    }
    //horizontal lines
    for (int i= drawSpaceBotLeft.y; i<drawSpaceTopRight.y; i++)
    {
        if(i % (int)GRID_SPACING.y)
            continue;
        gridSprite->drawSegment(Vec2(drawSpaceBotLeft.x, i), Vec2(drawSpaceBotLeft.x+visible.x + 2 * GRID_LABEL_SPACING.x, i),
                                GRID_LINE_THICKNESS, Color4F(1,1,1,0.1));   
        if(!(i % (int)GRID_LABEL_SPACING.y))
        {
            std::string txt = std::to_string(i);
            auto label = gridSprite->getChildByName("h" + txt);
            if (!label)
            {
                label = Label::createWithTTF(txt, "fonts/arial.ttf", GRID_LABEL_SIZE);
                label->setName("h" + txt);
                gridSprite->addChild(label);
            }
            label->setPosition(Vec2(botleft.x + GRID_LABEL_SIZE * 2, i));
        }
    }
    repaintCursor();
    Commorose* c = (Commorose*)commorose;
    c->setPosition(screenspaceToWorldspace(c->getPositionOnScreen()));
}