Ejemplo n.º 1
0
void logic(void * data)
{
	if(t3f_key[ALLEGRO_KEY_ESCAPE])
	{
		t3f_exit();
	}
	t3f_process_gui(page, data);
}
Ejemplo n.º 2
0
void dot_privacy_logic(void * data)
{
	APP_INSTANCE * app = (APP_INSTANCE *)data;
	bool m = false;

	dot_bg_objects_logic(data, DOT_GAME_LEVEL_BASE_SPEED);
	if(app->desktop_mode && t3f_mouse_button[0])
	{
		m = true;
	}
	if(t3f_key[ALLEGRO_KEY_ESCAPE] || t3f_key[ALLEGRO_KEY_BACK] || m)
	{
		dot_menu_proc_privacy_back(data, 0, NULL);
		t3f_key[ALLEGRO_KEY_ESCAPE] = 0;
		t3f_key[ALLEGRO_KEY_BACK] = 0;
		t3f_mouse_button[0] = false;
	}
	app->tick++;
	if(!app->desktop_mode)
	{
		t3f_process_gui(app->menu[app->current_menu], app);
	}
}
Ejemplo n.º 3
0
/* logic routines, passed to T^3 Framework */
void paddle_logic(void * data)
{
	/* logic switch, use different logic for each state */
	switch(paddle_state)
	{
		
		case EXAMPLE_STATE_TITLE:
		{
			t3f_process_gui(paddle_menu, data);
			break;
		}
		
		case EXAMPLE_STATE_GAME:
		{
			
			/* return to menu if Escape pressed */
			if(t3f_key[ALLEGRO_KEY_ESCAPE])
			{
				paddle_game_exit();
			}
			
			/* store old paddle positions */
			paddle[0].oy = paddle[0].y;
			paddle[1].oy = paddle[1].y;
			
			/* move paddle */
			paddle[0].y = t3f_mouse_y - 32;
			if(paddle[0].y < 0)
			{
				paddle[0].y = 0;
			}
			if(paddle[0].y > 480.0 - 64.0)
			{
				paddle[0].y = 480.0 - 64.0;
			}
			t3f_move_collision_object_xy(paddle[0].object, paddle[0].x, paddle[0].y);
			
			/* move CPU paddle */
			if(ball.vx > 0.0)
			{
				if(ball.x > paddle[1].x - 24)
				{
					paddle[1].y += paddle[1].dvy;
				}
				else
				{
					if(paddle[1].y < paddle[1].dy - 2.0)
					{
						paddle[1].y += 2.0;
						if(paddle[1].y > 480.0 - 64.0)
						{
							paddle[1].y = 480.0 - 64.0;
						}
					}
					else if(paddle[1].y > paddle[1].dy + 2.0)
					{
						paddle[1].y -= 2.0;
						if(paddle[1].y < 0.0)
						{
							paddle[1].y = 0.0;
						}
					}
				}
				/* correct paddle position so it doesn't go past edge */
				if(paddle[1].y > 480.0 - 64.0)
				{
					paddle[1].y = 480.0 - 64.0;
				}
				if(paddle[1].y < 0.0)
				{
					paddle[1].y = 0.0;
				}
			}
			t3f_move_collision_object_xy(paddle[1].object, paddle[1].x, paddle[1].y);
			
			/* move ball */
			ball.x += ball.vx;
			t3f_move_collision_object_xy(ball.object, ball.x, ball.y);
			if(ball.vx < 0 && t3f_check_object_collision(paddle[0].object, ball.object))
			{
				al_play_sample(paddle_sample[EXAMPLE_SAMPLE_HIT], 0.5, 0.5, 1.0, ALLEGRO_PLAYMODE_ONCE, NULL);
				ball.x = paddle[0].x + 16.0;
				ball.vx = -ball.vx;
				ball.vx += EXAMPLE_SPEED_INCREASE;
				ball.vy -= (paddle[0].oy - paddle[0].y) / 4.0;
				if(ball.vy < -3.0)
				{
					ball.vy = -3.0;
				}
				if(ball.vy > 3.0)
				{
					ball.vy = 3.0;
				}
				paddle[1].dy = paddle_ai_predict_y() - 32 + 8.0;
				paddle[1].dvy = t3f_drand(&rng_state) * 6.0 - 3.0;
			}
			else if(ball.vx > 0 && t3f_check_object_collision(paddle[1].object, ball.object))
			{
				al_play_sample(paddle_sample[EXAMPLE_SAMPLE_HIT], 0.5, 0.5, 1.0, ALLEGRO_PLAYMODE_ONCE, NULL);
				ball.x = paddle[1].x - 16.0 - 1.0;
				ball.vx = -ball.vx;
				ball.vx -= EXAMPLE_SPEED_INCREASE;
				ball.vy -= (paddle[1].oy - paddle[1].y) / 4.0;
				if(ball.vy < -3.0)
				{
					ball.vy = -3.0;
				}
				if(ball.vy > 3.0)
				{
					ball.vy = 3.0;
				}
			}
			if(ball.x < -16.0)
			{
				al_play_sample(paddle_sample[EXAMPLE_SAMPLE_SCORE], 0.5, 0.5, 1.0, ALLEGRO_PLAYMODE_ONCE, NULL);
				score[1]++;
				if(score[1] >= 5)
				{
					t3f_stop_music();
					paddle_state = EXAMPLE_STATE_GAME_OVER;
				}
				paddle_init_ball(1.0);
			}
			else if(ball.x > 640.0)
			{
				al_play_sample(paddle_sample[EXAMPLE_SAMPLE_SCORE], 0.5, 0.5, 1.0, ALLEGRO_PLAYMODE_ONCE, NULL);
				score[0]++;
				if(score[0] >= 5)
				{
					t3f_stop_music();
					paddle_state = EXAMPLE_STATE_GAME_OVER;
				}
				paddle_init_ball(-1.0);
			}
			ball.y += ball.vy;
			if(ball.y < 0.0)
			{
				ball.y = 0.0;
				ball.vy = -ball.vy;
			}
			else if(ball.y > 480.0 - 16.0)
			{
				ball.y = 480.0 - 16.0;
				ball.vy = -ball.vy;
			}
			break;
		}
		
		case EXAMPLE_STATE_GAME_OVER:
		{
			
			/* return to menu if Escape pressed */
			if(t3f_mouse_button[0] || t3f_key[ALLEGRO_KEY_ESCAPE])
			{
				paddle_game_exit();
			}
			
			break;
		}
	}
}
Ejemplo n.º 4
0
void dot_intro_logic(void * data)
{
	APP_INSTANCE * app = (APP_INSTANCE *)data;
	int r;

	if(app->entering_name)
	{
		r = dot_text_entry_logic();
		if(r != 0)
		{
			app->entering_name = false;
		}
		if(r == 1)
		{
			al_set_config_value(t3f_config, "Game Data", "User Name", app->user_name);
		}
	}
	dot_game_emo_logic(data);
	dot_bg_objects_logic(data, DOT_GAME_LEVEL_BASE_SPEED);
	switch(app->intro_state)
	{
		case DOT_INTRO_STATE_LOGO:
		{
			if(app->tick >= 900)
			{
				app->intro_state = DOT_INTRO_STATE_LOGO_OUT;
			}
			break;
		}
		case DOT_INTRO_STATE_LOGO_OUT:
		{
			app->logo_ox -= 4.0;
			app->credits_ox -= 4.0;
			if(app->logo_ox < -t3f_virtual_display_width)
			{
				app->credits.state = DOT_CREDITS_STATE_IN;
				app->intro_state = DOT_INTRO_STATE_CREDITS;
			}
			break;
		}
		case DOT_INTRO_STATE_CREDITS:
		{
			dot_credits_logic(&app->credits);
			if(app->credits.current_credit >= app->credits.credits)
			{
				app->credits.state = DOT_CREDITS_STATE_WAIT;
				app->intro_state = DOT_INTRO_STATE_CREDITS_OUT;
			}
			break;
		}
		case DOT_INTRO_STATE_CREDITS_OUT:
		{
			app->logo_ox += 4.0;
			app->credits_ox += 4.0;
			if(app->logo_ox >= 0.0)
			{
				app->credits.current_credit = 0;
				app->tick = 0;
				app->intro_state = DOT_INTRO_STATE_LOGO;
			}
			break;
		}
	}
	app->tick++;
	if(!app->entering_name && app->menu_showing)
	{
		t3f_process_gui(app->menu[app->current_menu], app);
	}
	if(!app->menu_showing)
	{
		if(t3f_mouse_button[0])
		{
			app->menu_showing = true;
			t3f_mouse_button[0] = false;
		}
	}
	if(t3f_key[ALLEGRO_KEY_ESCAPE] || t3f_key[ALLEGRO_KEY_BACK])
	{
		if(app->desktop_mode)
		{
			if(app->menu_showing)
			{
				if(app->current_menu == DOT_MENU_MAIN)
				{
					dot_intro_setup(data);
					app->menu_showing = false;
				}
				else
				{
					if(app->current_menu == DOT_MENU_LEADERBOARD_2)
					{
						t3f_play_music(DOT_MUSIC_TITLE);
					}
					app->current_menu = DOT_MENU_MAIN;
				}
			}
			else
			{
				t3f_exit();
			}
		}
		else
		{
			if(app->current_menu == DOT_MENU_MAIN)
			{
				t3f_exit();
			}
			else
			{
				app->current_menu = DOT_MENU_MAIN;
			}
		}
		t3f_key[ALLEGRO_KEY_ESCAPE] = 0;
		t3f_key[ALLEGRO_KEY_BACK] = 0;
	}
}