コード例 #1
0
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);

}
コード例 #2
0
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;
}
コード例 #3
0
ファイル: MyFrameListener.cpp プロジェクト: jayped/victomic
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;
}