Ejemplo n.º 1
0
void Field::update(sf::Event ev) {
	sf::Vector2i pos_mouse(sf::Mouse::getPosition(*win));
	int x,y;
	x = (int)((float)pos_mouse.x/(float)draw_size);
	y = (int)((float)pos_mouse.y/(float)draw_size);
	if (x < 0 || x > (int)size.x || y < 0 || y > (int)size.y) {
		return;
	}
	int i = y*size.x+x;
	if (ev.type == sf::Event::MouseButtonPressed && ev.key.code == sf::Mouse::Left) {
		if (!field[i].is_revealed)
			setPressedState(i,true);
	}

	if (ev.type == sf::Event::MouseButtonReleased) {
		if (ev.key.code == sf::Mouse::Left) {
			if (field[i].is_pressed && !field[i].is_flagged && !field[i].is_revealed) {
				setRevealState(i,true);

				// check win/lose state
				if (field[i].type == Tile::BOMB)
					is_lost = true;
			}
			setAllPressedState(false);
		}
		if (ev.key.code == sf::Mouse::Right) {
			if (!field[i].is_revealed) {
				changeFlag(i);
			}
		}
	}
	updateAllVertex();
}
Ejemplo n.º 2
0
void colibrateDetector(){

	enum {GOTOPAUSE, PAUSE, CHECKEXT, PROCESSBUTTON, PROCESSNOCK};
	static char state = GOTOPAUSE;
	
	switch (state){

		case GOTOPAUSE:

			#ifdef LOGGDEBUG
			loggerWriteToMarker((LogMesT)" GOTOPAUSE \r*", '*');
			#endif

			ledOff(LEDRED1);
			ledOff(LEDRED2);
			ledOff(LEDGREEN1);
			ledOff(LEDGREEN2);

			timerSet(TIMER_NOCK, 0, 30);
			state = PAUSE;
			break;

		case PAUSE:

			if (timerIsElapsed(TIMER_NOCK) == TRUE){
				state = CHECKEXT;
			}
			break;

		case CHECKEXT:

			if(buttonIsPressed(BUTTONDOOR) == TRUE){

				#ifdef LOGGDEBUG
				loggerWriteToMarker((LogMesT)" setNextSence \r*", '*');
				#endif

				setNextSence();
				changeFlag(FLAG_NOCK, FALSE);

				ledOn(LEDRED1);
				ledOn(LEDRED2);
				_delay_ms(300);
				ledOff(LEDRED1);
				ledOff(LEDRED2);


				state = GOTOPAUSE;
				return;
			}

			if (getFlag(FLAG_NOCK) == TRUE){
				state = PROCESSNOCK;
			}
				
			break;

		case PROCESSNOCK:
			
			#ifdef LOGGDEBUG
			loggerWriteToMarker((LogMesT)" PROCESSNOCK \r*", '*');
			#endif

			ledOn(LEDGREEN1);
			ledOn(LEDGREEN2);
			_delay_ms(300);
			ledOff(LEDGREEN1);
			ledOff(LEDGREEN2);

					
			changeFlag(FLAG_NOCK, FALSE);
			state = CHECKEXT;

			break;

		default: break;
	} 

}