void PlayState::mouseMoved(const OIS::MouseEvent &e) { //CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseMove(e.state.X.rel, e.state.Y.rel); //CEGUI::System::getSingleton().ge tDefaultGUIContext().injectMouseMove(e.state.X.abs,e.state.Y.abs); CEGUI::Vector2f mousePos = CEGUI::System::getSingleton().getDefaultGUIContext().getMouseCursor().getPosition(); /* cout << "PRE CEGUI: " << mousePos.d_x << "," << mousePos.d_y << endl; cout << "OIS ABS: " << e.state.X.abs << "," << e.state.Y.abs << " OIS REL: " << e.state.X.rel << "," << e.state.Y.rel << endl; cout << "OIS State Width: " << e.state.width << " State Height: " << e.state.height << endl; */ CEGUI::System::getSingleton().getDefaultGUIContext().getMouseCursor().setPosition(CEGUI::Vector2f(e.state.X.abs,e.state.Y.abs)); CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseMove(mousePos.d_x/float(e.state.width), mousePos.d_y/float(e.state.height)); mousePos = CEGUI::System::getSingleton().getDefaultGUIContext().getMouseCursor().getPosition(); //cout << "POST CEGUI: " << mousePos.d_x << "," << mousePos.d_y << endl; int posx = e.state.X.abs; int posy = e.state.Y.abs; Ray r = setRayQuery(posx, posy, CASILLA); (void)r; RaySceneQueryResult &result = _raySceneQuery->execute(); RaySceneQueryResult::iterator it; it = result.begin(); if (it != result.end()) { if (_selectedNode != it->movable->getParentSceneNode()) { if (_selectedNode) _selectedNode->showBoundingBox(false); _selectedNode = it->movable->getParentSceneNode(); _selectedNode->showBoundingBox(true); } } //if (_selectedNode) cout << _selectedNode->getName() << " POSICION " << _selectedNode->getPosition()<< endl; //<< "," << _selectedNode->getPosition().y << //"," << _selectedNode->getPosition().z << endl; if (_colocandoBarco) { if (_selectedNode) _sceneMgr->getSceneNode("nodoCursor")->setPosition(_selectedNode->getPosition().x,_selectedNode->getPosition().y + 0.1, _selectedNode->getPosition().z); } else if (_nodoCursor) _sceneMgr->getSceneNode("nodoCursor")->setVisible(false); }
bool MyFrameListener::frameStarted(const FrameEvent& evt) { bool mbleft; // Botones del raton pulsados _keyboard->capture(); _mouse->capture(); // Captura eventos int posx = _mouse->getMouseState().X.abs; // Posicion del puntero int posy = _mouse->getMouseState().Y.abs; // en pixeles. // Botones del raton pulsados? ------------------------------------- mbleft = _mouse->getMouseState().buttonDown(OIS::MB_Left); if(_keyboard->isKeyDown(OIS::KC_ESCAPE)) return false; switch(_estado){ case 1: if(_keyboard->isKeyDown(OIS::KC_1)){ _sceneManager->destroySceneNode("ninicio"); _juego->generarTablero(); _juego->generarPlayers(); _juego->colocarBarcos(); _estado = 5; } if(_keyboard->isKeyDown(OIS::KC_2)){ _sceneManager->destroySceneNode("ninicio"); _juego->crearCreditos(); _estado = 2; } break; case 2: if(_keyboard->isKeyDown(OIS::KC_B)){ _sceneManager->destroySceneNode("ncreditos"); _juego->crearMenu(); _estado = 1; } break; // Exit! case 5: if (mbleft) { uint32 mask; mask = CUBE1 | STAGE; // Podemos elegir todo setRayQuery(posx, posy, mask); Ogre::RaySceneQueryResult &result = _raySceneQuery->execute(); Ogre::RaySceneQueryResult::iterator it; if(result.begin()!=result.end()){ it = result.begin(); Ogre::SceneNode* nodo = it->movable->getParentSceneNode(); Ogre::MovableObject* clickado = nodo->getAttachedObject(0); if(clickado->getQueryFlags()==CUBE1){ if(_turno==1 && (int)it->movable->getParentSceneNode()->getName()[3]-48>=0 && (int)it->movable->getParentSceneNode()->getName()[3]-48<8 && (int)it->movable->getParentSceneNode()->getName()[5]-48>=0 && (int)it->movable->getParentSceneNode()->getName()[5]-48<8){ _turno = _juego->simular((int)it->movable->getParentSceneNode()->getName()[3]-48, (int)it->movable->getParentSceneNode()->getName()[5 ]-48);//tabla ascii } if(_turno == 2){ _estado = 6; } } } } break; case 6: if(_keyboard->isKeyDown(OIS::KC_RETURN)){ _juego->reiniciar(); _juego->generarPlayers(); _juego->colocarBarcos(); _estado = 5; _turno = 1; std::cout << _estado << std::endl; } break; } return true; }
bool MyFrameListener::frameStarted(const Ogre::FrameEvent& evt) { Ogre::Vector3 vt(0,0,0); Ogre::Real deltaT = evt.timeSinceLastFrame; Ogre::Real tSpeed = 20.0; int fps = 1.0 / deltaT; _keyboard->capture(); if(_keyboard->isKeyDown(OIS::KC_ESCAPE)) return false; if(_keyboard->isKeyDown(OIS::KC_0)) // reset { if (_gameState == 1) { _gameState = 0; deleteBoard(); _overlayManager->getByName("Title")->show(); } } if(_keyboard->isKeyDown(OIS::KC_1)) // jugar { if (_gameState == 0) { _gameState = 1; createBoard(); _overlayManager->getByName("Title")->hide(); _overlayManager->getByName("Win")->hide(); _overlayManager->getByName("Lose")->hide(); } } //if(_keyboard->isKeyDown(OIS::KC_2)) return false; // Captura del raton _mouse->capture(); int posx = _mouse->getMouseState().X.abs; int posy = _mouse->getMouseState().Y.abs; // Dibujado del cursor Ogre::OverlayElement *oe; oe = _overlayManager->getOverlayElement("cursor"); oe->setLeft(posx); oe->setTop(posy); // Accion del raton bool mbleft = _mouse->getMouseState().buttonDown(OIS::MB_Left); if (mbleft) { Ogre::Ray r = setRayQuery(posx, posy, 1); Ogre::RaySceneQueryResult &result = _raySceneQuery->execute(); Ogre::RaySceneQueryResult::iterator it; it = result.begin(); //AGUA if (it != result.end()) { if (it->movable->getParentSceneNode()->getName() != "nodeG") { Ogre::Vector3 pos = it->movable->getParentSceneNode()->getPosition(); it->movable->detachFromParent(); // tirada del CPU. int lResult = 0; do { lResult = playCPU(); if (endGame()!=0) { _gameState = 0; deleteBoard(); _overlayManager->getByName("Title")->show(); _overlayManager->getByName("Lose")->show(); } } while ((lResult == 1) && (_gameState==1)); } } //TOCADO r = setRayQuery(posx, posy, 2); Ogre::RaySceneQueryResult &resultShip = _raySceneQuery->execute(); it = resultShip.begin(); if (it != resultShip.end()) { if (it->movable->getParentSceneNode()->getName() != "nodeG") { Ogre::Vector3 pos = it->movable->getParentSceneNode()->getPosition(); it->movable->detachFromParent(); // Creacion de otro cubo para cuando haya barco. Ogre::Entity* ent1; ent1 = _sceneManager->createEntity("CuboBarco.mesh"); ent1->setQueryFlags(4); Ogre::SceneNode* node1 = _sceneManager->createSceneNode(); node1->attachObject(ent1); node1->translate(pos.x,pos.y,pos.z); _sceneManager->getRootSceneNode()->addChild(node1); _maxFires--; // no tira CPU if (endGame()!=0) { _gameState = 0; deleteBoard(); _overlayManager->getByName("Title")->show(); _overlayManager->getByName("Win")->show(); } } } } return true; }