Example #1
0
// toma un perro ya existente libre y lo recicla seteando x e y a la cucha.
// luego inicializa su mapeo de memoria, tss, lo agrega al sched y pinta la pantalla
void game_perro_reciclar_y_lanzar(perro_t *perro, uint tipo)
{
	jugador_t *j = perro->jugador;

	perro->x = j->x_cucha;
	perro->y = j->y_cucha;
	perro->tipo = tipo;
	perro->libre = FALSE;

	// ahora debo llamar a rutinas que inicialicen un nuevo mapa de
	// memoria para el nuevo perro, que carguen su tss correspondiente,
	// lo scheduleen y finalmente lo pinten en pantalla

	//inicializa memoria
	int cr3 = mmu_inicializar_memoria_perro(perro, j->index, tipo);
	perro->cr3 = cr3;
	//pinta al perro
	screen_pintar_perro(perro);
	//agrega la tarea al scheduler
	sched_agregar_tarea(perro);
	//TODO: que onda la TSS, hay que cambiar la direccion de la tarea   ???



	// ~~~ completar ~~~

}
Example #2
0
// toma un perro ya existente libre y lo recicla seteando x e y a la cucha.
// luego inicializa su mapeo de memoria, tss, lo agrega al sched y pinta la pantalla
void game_perro_reciclar_y_lanzar(perro_t *perro, uint tipo)
{
	jugador_t *j = perro->jugador;

	perro->x            = j->x_cucha;
	perro->y            = j->y_cucha;
	perro->tipo         = tipo;
	perro->libre        = FALSE;
    perro->huesos       = 0;
    perro->indice_reloj = 0;

	// ahora debo llamar a rutinas que inicialicen un nuevo mapa de
	// memoria para el nuevo perro, que carguen su tss correspondiente,
	// lo scheduleen y finalmente lo pinten en pantalla

    tss* tss_jugador = j->index == JUGADOR_A ? tss_jugadorA : tss_jugadorB;

    tss_inicializar_perro(&tss_jugador[perro->index], perro);
    tss_agregar_a_gdt(&tss_jugador[perro->index], GDT_IDX_TSS_PERRO(j->index, perro->index));
    sched_agregar_tarea(perro);
    screen_pintar_perro(perro);
}
Example #3
0
void game_jugador_erigir_pirata(uint jugador, pirata_t* pirata, uint posicion, uint parametros)
{
    sched_agregar_tarea(jugador, posicion, pirata->type, parametros);
}