///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(); }
void QFormulatorEditWidget::setBlinkingCursorEnabled( bool enable ) { if( enable && QApplication::cursorFlashTime() > 0 ) m_cursorBlinkTimer->start( QApplication::cursorFlashTime() / 2 ); else m_cursorBlinkTimer->stop(); m_cursorOn = enable; repaintCursor(); }
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()); } }
void QFormulatorEditWidget::switchCursor() { m_cursorOn = !m_cursorOn; repaintCursor(); }
void QFormulatorEditWidget::repaintCursor() { repaintCursor( caretPos(), caretSize() ); }
///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())); }