void Paleta::hit (Actor* who, int damage) { switch (who->getCodigo ()) { // Si tropezamos con un ladrillo. Aumentamos el tamaño. case Nombres::ladrillo: if (piel->getSize () < 8) { piel->setSize (piel->getSize () + 1); this->set_wh (32*piel->getSize () + 20,15); } break; // Si tropezamos con una pelota. Disminuímos el tamaño. case Nombres::pelota: if (piel->getSize () > 2) { piel->setSize(piel->getSize () - 1); set_wh (32*piel->getSize () + 20, 15); } break; default: break; } };
int Spriteset::load(const char* file, SPRITE_MODE const& mode_, GLenum const& param){ mode = mode_; set_wh(); load(file, param); }
Loro::Loro (Almacen &almacen): ControllableActor (), kboard (new Keyboard()) { // ¡Cuidado! Esto falla si en el almacén no existe el bitmap que se pide. // Animación de la derecha. izquierda = new Sprite(this); izquierda->add_frame(almacen.get_bitmap("sprite_042"), 0, 13, 10); izquierda->add_frame(almacen.get_bitmap("sprite_043"), 0, 0, 10); izquierda->add_frame(almacen.get_bitmap("sprite_044"), 0, 3, 10); izquierda->setMirror(true); // Animación de la izquierda. derecha = new Sprite(this); derecha->add_frame(almacen.get_bitmap("sprite_042"), 0, 13, 10); derecha->add_frame(almacen.get_bitmap("sprite_043"), 0, 0, 10); derecha->add_frame(almacen.get_bitmap("sprite_044"), 0, 3, 10); derecha->setMirror(false); // Animación de giro. giro_der = new Sprite(this); giro_der->add_frame(almacen.get_bitmap("pre2_338"), 10, 0, 5); giro_der->setMirror (true); giro_izq = new Sprite(this); giro_izq->add_frame(almacen.get_bitmap("pre2_338"), 10, 0, 5); giro_izq->setMirror (false); setCodigo (Nombres::herny); set_x(SCREEN_W/2); set_y(SCREEN_H/2); set_is_detected (true); set_collision_method(CollisionManager::PP_COLLISION); set_wh (36,26); // Animación de inicio. estado = FLOTANDO_DER; set_actor_graphic (derecha); // Se crea el control necesario para las acciones del loro. control = new Control (); control->add_action_name (LEFT, "Izquierda"); control->add_action_name (RIGHT, "Derecha"); control->add_action_name (UP, "Arriba"); control->add_action_name (DOWN, "Abajo"); control->add_action_name (JUMP, "Saltar"); control->set_owner(this); // Se va a usar el teclado como único periférico para el loro. control->set_actionperipheral (UP, kboard, KEY_UP, Peripheral::ON_PRESSING); control->set_actionperipheral (DOWN, kboard, KEY_DOWN, Peripheral::ON_PRESSING); control->set_actionperipheral (LEFT, kboard, KEY_LEFT, Peripheral::ON_PRESSING); control->set_actionperipheral (RIGHT, kboard, KEY_RIGHT, Peripheral::ON_PRESSING); control->set_actionperipheral (JUMP, kboard, KEY_A, Peripheral::ON_PRESS); };
/** * \brief Constructor por omisión. */ Ben::Ben (Almacen& almacen): estado(andando), estado_sig(andando), timer(0), gravedad (10), sentido(1) { // Guardamos el sprite para cada estado. // ¡Cuidado! Esto falla si en el almacén no existe el bitmap que se pide. sprites[andando_der] = new Sprite(this); sprites[andando_der]->add_frame(almacen.get_bitmap("ben10_002"), 0, 0, 10); sprites[andando_der]->add_frame(almacen.get_bitmap("ben10_003"), 0, 0, 20); sprites[andando_der]->add_frame(almacen.get_bitmap("ben10_004"), 0, 0, 20); sprites[andando_der]->add_frame(almacen.get_bitmap("ben10_005"), 0, 0, 10); sprites[andando_der]->init (); sprites[andando_izq] = new Sprite(this); sprites[andando_izq]->add_frame(almacen.get_bitmap("ben10_006"), 0, 0, 10); sprites[andando_izq]->add_frame(almacen.get_bitmap("ben10_007"), 0, 0, 10); sprites[andando_izq]->add_frame(almacen.get_bitmap("ben10_008"), 0, 0, 10); sprites[andando_izq]->add_frame(almacen.get_bitmap("ben10_009"), 0, 0, 10); sprites[andando_izq]->init (); sprites[esperando_der] = new Sprite(this); sprites[esperando_der]->add_frame(almacen.get_bitmap("ben10_000"), 0, 0, 10); sprites[esperando_der]->init (); sprites[esperando_izq] = new Sprite(this); sprites[esperando_izq]->add_frame(almacen.get_bitmap("ben10_001"), 0, 0, 10); sprites[esperando_izq]->init (); sprites[cayendo_der] = new Sprite(this); sprites[cayendo_der]->add_frame(almacen.get_bitmap("ben10_021"), 0, 0, 10); sprites[cayendo_der]->init (); sprites[cayendo_izq] = new Sprite(this); sprites[cayendo_izq]->add_frame(almacen.get_bitmap("ben10_020"), 0, 0, 10); sprites[cayendo_izq]->init (); sprites[disparando_der] = new Sprite(this); sprites[disparando_der]->add_frame(almacen.get_bitmap("ben10_005"), 0, -2, 1); sprites[disparando_der]->add_frame(almacen.get_bitmap("ben10_010"), 0, -5, 2); sprites[disparando_der]->add_frame(almacen.get_bitmap("ben10_011"), 0, -8, 2); sprites[disparando_der]->add_frame(almacen.get_bitmap("ben10_012"), 0, -8, 3); sprites[disparando_der]->add_frame(almacen.get_bitmap("ben10_010"), 0, -5, 1); sprites[disparando_der]->init (); sprites[disparando_izq] = new Sprite(this); sprites[disparando_izq]->add_frame(almacen.get_bitmap("ben10_009"), 1, -2, 1); sprites[disparando_izq]->add_frame(almacen.get_bitmap("ben10_013"), 1, -5, 2); sprites[disparando_izq]->add_frame(almacen.get_bitmap("ben10_014"), 35, -8, 2); sprites[disparando_izq]->add_frame(almacen.get_bitmap("ben10_015"), 29, -8, 3); sprites[disparando_izq]->add_frame(almacen.get_bitmap("ben10_013"), 1, -5, 1); sprites[disparando_izq]->init (); sprites[saltando_der] = new Sprite(this); sprites[saltando_der]->add_frame(almacen.get_bitmap("ben10_016"), 0, 15, 10); sprites[saltando_der]->add_frame(almacen.get_bitmap("ben10_gm_000"), 0, 15, 5); sprites[saltando_der]->add_frame(almacen.get_bitmap("ben10_016"), 0, 15, 2); sprites[saltando_der]->add_frame(almacen.get_bitmap("ben10_gm_000"), 0, 15, 4); sprites[saltando_der]->add_frame(almacen.get_bitmap("ben10_016"), 0, 15, 3); sprites[saltando_der]->init (); sprites[saltando_izq] = new Sprite(this); sprites[saltando_izq]->add_frame(almacen.get_bitmap("ben10_017"), 0, 15, 10); sprites[saltando_izq]->init (); sprites[bajando_der] = new Sprite(this); sprites[bajando_der]->add_frame(almacen.get_bitmap("ben10_018"), 0, -25, 10); sprites[bajando_der]->init (); sprites[bajando_izq] = new Sprite(this); sprites[bajando_izq]->add_frame(almacen.get_bitmap("ben10_019"), 0, -25, 10); sprites[bajando_izq]->init (); sprites[girando_der] = new Sprite(this); sprites[girando_der]->add_frame(almacen.get_bitmap("ben10_001"), 0, 0, 10); sprites[girando_der]->add_frame(almacen.get_bitmap("ben10_000"), 0, 0, 10); sprites[girando_der]->init (); sprites[girando_izq] = new Sprite(this); sprites[girando_izq]->add_frame(almacen.get_bitmap("ben10_000"), 0, 0, 10); sprites[girando_izq]->add_frame(almacen.get_bitmap("ben10_001"), 0, 0, 10); sprites[girando_izq]->init (); Sprites_t sprite_act = estado2Sprite (estado); set_actor_graphic (sprites[sprite_act]); setCodigo (Nombres::ben); set_x(SCREEN_W/3); set_y(SCREEN_H/2); set_is_detected (false); set_collision_method(CollisionManager::PP_COLLISION); set_wh (21,60); };
Spriteset::Spriteset(const char* file, SPRITE_MODE const& mode_, GLenum const& param):mode(mode_){ set_wh(); load(file, param); }