コード例 #1
0
void csd_logic(void)
{
    if(t3f_key[ALLEGRO_KEY_ESCAPE] || done)
    {
        t3f_exit();
    }

    switch(csd_state)
    {
    case CSD_STATE_TITLE:
    {
        csd_title_logic();
        break;
    }
    case CSD_STATE_PLAYING:
    {
        csd_game_logic();
        break;
    }
    case CSD_STATE_LEADERBOARD:
    {
        csd_leaderboard_logic();
        break;
    }
    }
    csd_tick++;
}
コード例 #2
0
void logic(void * data)
{
	if(t3f_key[ALLEGRO_KEY_ESCAPE])
	{
		t3f_exit();
	}
	t3f_process_gui(page, data);
}
コード例 #3
0
ファイル: ex_tilemap.c プロジェクト: NewCreature/T3-Framework
void logic(void * data)
{
	int mx, my, mz;
	
	if(t3f_key[ALLEGRO_KEY_ESCAPE])
	{
		t3f_exit();
	}
	t3f_get_mouse_mickeys(&mx, &my, &mz);
	if(t3f_mouse_button[0])
	{
		camera.x += mx;
		camera.y += my;
	}
	camera.z += mz * 16;
	tick++;
}
コード例 #4
0
ファイル: ex_atlas.c プロジェクト: NewCreature/T3-Framework
void logic(void * data)
{
	int i;

	if(t3f_key[ALLEGRO_KEY_ESCAPE])
	{
		t3f_exit();
	}
	for(i = 0; i < 1024; i++)
	{
		object[i].x += object[i].vx;
		if(object[i].x > 640 || object[i].x < 0)
		{
			object[i].vx = -object[i].vx;
		}
		object[i].y += object[i].vy;
		if(object[i].y > 480 || object[i].y < 0)
		{
			object[i].vy = -object[i].vy;
		}
	}
}
コード例 #5
0
ファイル: demo.c プロジェクト: NewCreature/T3-Framework
void demo_logic(void)
{
	int skipy = 0;
	
	if(stepmode)
	{
		if(t3f_key[ALLEGRO_KEY_ENTER])
		{
			t3f_key[ALLEGRO_KEY_ENTER] = 0;
		}
		else
		{
			return;
		}
	}
	
	if(t3f_key[ALLEGRO_KEY_ESCAPE])
	{
		t3f_exit();
	}
	if(t3f_key[ALLEGRO_KEY_F1])
	{
		stepmode = true;
	}
	if(t3f_key[ALLEGRO_KEY_1])
	{
		target_z = demo_tilemap->layer[0]->z;
	}
	else if(t3f_key[ALLEGRO_KEY_2])
	{
		target_z = demo_tilemap->layer[1]->z;
	}
	else if(t3f_key[ALLEGRO_KEY_3])
	{
		target_z = demo_tilemap->layer[2]->z;
	}
	else if(t3f_key[ALLEGRO_KEY_4])
	{
		target_z = demo_tilemap->layer[3]->z;
	}
	else if(t3f_key[ALLEGRO_KEY_5])
	{
		target_z = demo_tilemap->layer[4]->z;
	}
	t3f_read_controller(controller);
	if(t3f_key[ALLEGRO_KEY_LEFT])
	{
		demo_camera.x -= 2.0;
	}
	if(t3f_key[ALLEGRO_KEY_RIGHT])
	{
		demo_camera.x += 2.0;
	}
	if(t3f_key[ALLEGRO_KEY_UP])
	{
		demo_camera.y -= 2.0;
	}
	if(t3f_key[ALLEGRO_KEY_DOWN])
	{
		demo_camera.y += 2.0;
	}
	if(demo_camera.z > target_z)
	{
		demo_camera.z -= 10.0;
		if(demo_camera.z < target_z)
		{
			demo_camera.z = target_z;
		}
	}
	else if(demo_camera.z < target_z)
	{
		demo_camera.z += 10.0;
		if(demo_camera.z > target_z)
		{
			demo_camera.z = target_z;
		}
	}
	platform.angle += 0.05;
	platform.x = 320 + cos(platform.angle) * 48.0;
	t3f_move_collision_object_x(platform.cp, platform.x);
	platform.y = 240 + sin(platform.angle) * 48.0;
	t3f_move_collision_object_y(platform.cp, platform.y);
	if(platform.cp->vy < 0.0 && platform.cp->oy + platform.cp->map.top.point[0].y > player.cp->y + player.cp->map.bottom.point[0].y && t3f_check_object_collision(platform.cp, player.cp))
	{
		player.sticky = platform.cp;
		player.y = t3f_get_object_top_y(player.cp, platform.cp);
		t3f_move_collision_object_y(player.cp, player.y);
		skipy = 1;
		player.floor = false;
	}
	
	/* add gravity */
	if(!player.floor && !player.sticky)
	{
		if(controller->state[DEMO_CONTROLLER_UP].held && player.vy < 0.0)
		{
			player.vy += 0.35;
		}
		else
		{
			player.vy += 0.5;
		}
		if(player.vy > 10.0)
		{
			player.vy = 10.0;
		}
		if(player.vy < 0)
		{
			if(player.state < 5)
			{
				player.state = DEMO_SPRITE_STATE_JUMP_RIGHT;
			}
			else
			{
				player.state = DEMO_SPRITE_STATE_JUMP_LEFT;
			}
		}
		else
		{
			if(player.state < 5)
			{
				player.state = DEMO_SPRITE_STATE_FALL_RIGHT;
			}
			else
			{
				player.state = DEMO_SPRITE_STATE_FALL_LEFT;
			}
		}
	}
	else
	{
		if(controller->state[DEMO_CONTROLLER_DOWN].held)
		{
			if(player.state < 5)
			{
				player.state = DEMO_SPRITE_STATE_DUCK_RIGHT;
			}
			else
			{
				player.state = DEMO_SPRITE_STATE_DUCK_LEFT;
			}
		}
		else
		{
			if(player.state == DEMO_SPRITE_STATE_DUCK_RIGHT)
			{
				player.state = DEMO_SPRITE_STATE_STAND_RIGHT;
			}
			else if(player.state == DEMO_SPRITE_STATE_DUCK_LEFT)
			{
				player.state = DEMO_SPRITE_STATE_STAND_LEFT;
			}
		}
	}
	
	if(controller->state[DEMO_CONTROLLER_LEFT].held && !controller->state[DEMO_CONTROLLER_RIGHT].held)
	{
		player.vx -= 0.5;
		if(player.vx < -3.0)
		{
			player.vx = -3.0;
		}
		if((player.floor || player.sticky) && player.vx < 0.0 && player.state != DEMO_SPRITE_STATE_WALK_LEFT)
		{
			player.state = DEMO_SPRITE_STATE_WALK_LEFT;
			player.frame = 0;
		}
		else
		{
			if(player.state == DEMO_SPRITE_STATE_JUMP_RIGHT)
			{
				player.state = DEMO_SPRITE_STATE_JUMP_LEFT;
			}
			else if(player.state == DEMO_SPRITE_STATE_FALL_RIGHT)
			{
				player.state = DEMO_SPRITE_STATE_FALL_LEFT;
			}
		}
	}
	else if(controller->state[DEMO_CONTROLLER_RIGHT].held && !controller->state[DEMO_CONTROLLER_LEFT].held)
	{
		player.vx += 0.5;
		if(player.vx > 3.0)
		{
			player.vx = 3.0;
		}
		if((player.floor || player.sticky) && player.vx > 0.0 && player.state != DEMO_SPRITE_STATE_WALK_RIGHT)
		{
			player.state = DEMO_SPRITE_STATE_WALK_RIGHT;
			player.frame = 0;
		}
		else
		{
			if(player.state == DEMO_SPRITE_STATE_JUMP_LEFT)
			{
				player.state = DEMO_SPRITE_STATE_JUMP_RIGHT;
			}
			else if(player.state == DEMO_SPRITE_STATE_FALL_LEFT)
			{
				player.state = DEMO_SPRITE_STATE_FALL_RIGHT;
			}
		}
	}
	else if(player.floor || player.sticky)
	{
		if(player.vx > 0.0)
		{
			player.vx -= 0.25;
			if(player.vx <= 0.0)
			{
				player.vx = 0.0;
				if(player.state != DEMO_SPRITE_STATE_DUCK_RIGHT)
				{
					player.state = DEMO_SPRITE_STATE_STAND_RIGHT;
				}
			}
		}
		else if(player.vx < 0.0)
		{
			player.vx += 0.25;
			if(player.vx >= 0.0)
			{
				player.vx = 0.0;
				if(player.state != DEMO_SPRITE_STATE_DUCK_LEFT)
				{
					player.state = DEMO_SPRITE_STATE_STAND_LEFT;
				}
			}
		}
	}
	player.x += player.vx;
	if(player.sticky)
	{
		player.x += player.sticky->vx;
	}
	t3f_move_collision_object_x(player.cp, player.x);
	if(!t3f_get_collision_tilemap_flag(demo_collision_tilemap, player.cp->x + player.cp->map.bottom.point[0].x, player.cp->y + player.cp->map.bottom.point[0].y, T3F_COLLISION_FLAG_SLOPE_TOP))
	{
		if(t3f_check_tilemap_collision_left(player.cp, demo_collision_tilemap))
		{
			player.x = t3f_get_tilemap_collision_x(player.cp, demo_collision_tilemap);
			player.vx = 0.0;
			t3f_move_collision_object_x(player.cp, player.x);
		}
		else if(t3f_check_tilemap_collision_right(player.cp, demo_collision_tilemap))
		{
			player.x = t3f_get_tilemap_collision_x(player.cp, demo_collision_tilemap);
			player.vx = 0.0;
			t3f_move_collision_object_x(player.cp, player.x);
		}
	}
	if(player.sticky && (player.cp->x + player.cp->map.left.point[0].x > player.sticky->x + player.sticky->map.right.point[0].x || player.cp->x + player.cp->map.right.point[0].x < player.sticky->x + player.sticky->map.left.point[0].x))
	{
		player.sticky = NULL;
		player.floor = false;
		player.vy = 0.0;
	}
	if(player.floor)
	{
		player.y = t3f_get_tilemap_walk_position(player.cp, demo_collision_tilemap, T3F_COLLISION_FLAG_SOLID_TOP);
		t3f_move_collision_object_y(player.cp, player.y);
	}
	
	if(controller->state[DEMO_CONTROLLER_UP].pressed && (player.floor || player.sticky))
	{
		player.vy = -10.0;
		player.sticky = NULL;
		player.floor = false;
	}
	if(player.sticky && !skipy)
	{
		player.y += player.sticky->vy;
	}
	if(!player.floor)
	{
		player.y += player.vy;
	}
	if((player.sticky && !skipy) || !player.floor)
	{
		t3f_move_collision_object_y(player.cp, player.y);
		
		/* collide with platform */
		if(player.cp->vy > 0.0 && player.cp->oy + player.cp->map.bottom.point[0].y < platform.cp->y + platform.cp->map.top.point[0].y && t3f_check_object_collision(player.cp, platform.cp))
		{
			player.y = t3f_get_object_top_y(player.cp, platform.cp);
			t3f_move_collision_object_y(player.cp, player.y);
			player.sticky = platform.cp;
			player.floor = false;
			if(player.state < 5)
			{
				player.state = DEMO_SPRITE_STATE_STAND_RIGHT;
			}
			else
			{
				player.state = DEMO_SPRITE_STATE_STAND_LEFT;
			}
		}
		
		if(t3f_check_tilemap_collision_bottom(player.cp, demo_collision_tilemap))
		{
			printf("land\n");
			player.y = t3f_get_tilemap_collision_y(player.cp, demo_collision_tilemap);
			t3f_move_collision_object_y(player.cp, player.y);
			player.floor = true;
			player.vy = 0.0;
			player.sticky = NULL;
			if(player.state < 5)
			{
				player.state = DEMO_SPRITE_STATE_STAND_RIGHT;
			}
			else
			{
				player.state = DEMO_SPRITE_STATE_STAND_LEFT;
			}
		}
		else if(t3f_check_tilemap_collision_top(player.cp, demo_collision_tilemap))
		{
			player.y = t3f_get_tilemap_collision_y(player.cp, demo_collision_tilemap);
			player.vy = 0.0;
			t3f_move_collision_object_y(player.cp, player.y);
		}
	}
	if(player.floor)
	{
		bool nf = false;
		bool af = false;
		int i;
		for(i = 0; i < player.cp->map.bottom.points; i++)
		{
			if(t3f_get_collision_tilemap_flag(demo_collision_tilemap, player.cp->x + player.cp->map.bottom.point[i].x, player.cp->y + player.cp->map.bottom.point[i].y + 1.0, T3F_COLLISION_FLAG_SOLID_TOP | T3F_COLLISION_FLAG_SLOPE_TOP) == (T3F_COLLISION_FLAG_SOLID_TOP | T3F_COLLISION_FLAG_SLOPE_TOP))
			{
				nf = true;
			}
			
			/* if any bottom point is touching a floor */
			if(t3f_check_collision_tilemap_flag(demo_collision_tilemap, player.cp->x + player.cp->map.bottom.point[i].x, player.cp->y + player.cp->map.bottom.point[i].y + 1.0, T3F_COLLISION_FLAG_SOLID_TOP, 0))
			{
				af = true;
			}
		}
//		if(!nf || (!af && t3f_get_collision_tilemap_flag(demo_collision_tilemap, player.cp->x + player.cp->map.bottom.point[0].x, player.cp->y + player.cp->map.bottom.point[0].y + 1.0, T3F_COLLISION_FLAG_SOLID_TOP) != (T3F_COLLISION_FLAG_SOLID_TOP)))
		if(!af || (nf && t3f_get_collision_tilemap_flag(demo_collision_tilemap, player.cp->x + player.cp->map.bottom.point[0].x, player.cp->y + player.cp->map.bottom.point[0].y + 1.0, T3F_COLLISION_FLAG_SOLID_TOP) != (T3F_COLLISION_FLAG_SOLID_TOP)))
		{
			player.vy = 0.0;
			player.floor = false;
			if(!af)
			{
				printf("af\n");
			}
			else
			{
				printf("nf\n");
			}
		}
	}
	player.frame++;
	
	if(t3f_check_object_collision(platform.cp, player.cp))
	{
		collision = true;
	}
	else
	{
		collision = false;
	}
	demo_camera.x = player.x + 16.0 - 320.0;
	demo_camera.y = player.y + 16.0 - 240.0;
	demo_tick++;
}
コード例 #6
0
int menu_proc_quit(int i, void * p)
{
	t3f_exit();
	return 1;
}
コード例 #7
0
void csd_exit(void)
{
    t3f_exit();
}
コード例 #8
0
int paddle_menu_quit_proc(void * d, int i, void * p)
{
	t3f_exit();
	return 1;
}
コード例 #9
0
ファイル: intro.c プロジェクト: NewCreature/Dot-to-Dot-Sweep
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;
	}
}