示例#1
0
void GameStart::showInstructions(bool show) {

	LogManager &log_manager = LogManager::getInstance();
	ResourceManager &resource_manager = ResourceManager::getInstance();

	showInstruct = show;

	if(!showInstruct) {  // Hiding instructions

		//Setup GameStart sprite
		Sprite *p_temp_sprite = resource_manager.getSprite("gamestart");
		if (!p_temp_sprite) {
			log_manager.writeLog("GameStart::showInstructions(): Warning! Sprite 'gamestart' not found", "gamestart");
		}
		else {
			log_manager.writeLog("GameStart::showInstructions(): Switching to start screen\n");
			setSprite(p_temp_sprite);
			setSpriteSlowdown(15);
		}
	} else {  // Showing instructions

		//Setup GameStart sprite
		Sprite *p_temp_sprite = resource_manager.getSprite("instructions");
		if (!p_temp_sprite) {
			log_manager.writeLog("GameStart::showInstructions(): Warning! Sprite 'gamestart' not found", "instructions");
		}
		else {
			log_manager.writeLog("GameStart::showInstructions(): Switching to instructions screen\n");
			log_manager.writeLog("Frame: %s\n", p_temp_sprite->getFrame(0).getString().c_str());
			setSprite(p_temp_sprite);
			setSpriteSlowdown(0);
		}
	}
}
示例#2
0
Saucer::Saucer()
{
    // Dragonfly managers needed for this method.
    df::LogManager &log_manager = df::LogManager::getInstance();
    df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
    df::WorldManager &world_manager = df::WorldManager::getInstance();

    // Setup "saucer" sprite.
    df::Sprite *p_temp_sprite = resource_manager.getSprite("saucer");
    if (!p_temp_sprite) {
        log_manager.writeLog("Saucer::Saucer(): Warning! Sprite '%s' not found", "saucer");
    } else {
        setSprite(p_temp_sprite);
        setSpriteSlowdown(4);		
    }

    // Set object type.
    setType("Saucer");

    // Set speed in horizontal direction.
    setXVelocity(-0.25); // 1 space left every 4 frames

    /*
    // Set starting location in the middle of window.
    int world_horiz = world_manager.getBoundary().getHorizontal();
    int world_vert = world_manager.getBoundary().getVertical();
    df::Position pos(world_horiz/2, world_vert/2);
    setPosition(pos);*/

    moveToStart();
}
MediumRock::MediumRock(df::Position p) {
	df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
	df::LogManager &log_manager = df::LogManager::getInstance();

	// Link to "mediumrock" sprite
	df::Sprite *p_temp_sprite;
	p_temp_sprite = resource_manager.getSprite("mediumrock");
	if (!p_temp_sprite) {
		log_manager.writeLog("MediumRock::MediumRock(): Warning! Sprite '%s' not found", "mediumrock");
	}
	else {
		setSprite(p_temp_sprite);
		setSpriteSlowdown(0);
	}

	setType("MediumRock");

	setSolidness(df::Solidness::SOFT);

	//Set starting position
	setPosition(p);

	health = 15;
	hit_slowdown = 5;
	hit_countdown = hit_slowdown;
	was_hit = false;
	has_flashed = false;
}
Mortar::Mortar(df::Position p, df::Object *new_player) {
	df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
	df::LogManager &log_manager = df::LogManager::getInstance();

	// Link to "mortar" sprite
	df::Sprite *p_temp_sprite;
	p_temp_sprite = resource_manager.getSprite("mortar");
	if (!p_temp_sprite) {
		log_manager.writeLog("Mortar::Mortar(): Warning! Sprite '%s' not found", "mortar");
	}
	else {
		setSprite(p_temp_sprite);
		setSpriteSlowdown(0);
	}

	setType("Mortar");

	setSolidness(df::Solidness::SOFT);

	//Set starting position
	setPosition(p);

	player = new_player;
	fire_slowdown = 60;
	fire_countdown = fire_slowdown;
	firing_anim_slowdown = 5;
	firing_anim_countdown = firing_anim_slowdown;
	occupied = true;
	firing = false;
}
NixonPowerCell::NixonPowerCell(df::Position p) {
	df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
	df::LogManager &log_manager = df::LogManager::getInstance();

	// Link to "largerock" sprite
	df::Sprite *p_temp_sprite;
	p_temp_sprite = resource_manager.getSprite("nixonpowercell");
	if (!p_temp_sprite) {
		log_manager.writeLog("NixonPowerCell::NixonPowerCell(): Warning! Sprite '%s' not found", "nixonpowercell");
	}
	else {
		setSprite(p_temp_sprite);
		setSpriteSlowdown(0);
	}

	setType("NixonPowerCell");

	setSolidness(df::Solidness::HARD);

	//Set starting position
	setPosition(p);

	health = 10;
	hit_slowdown = 5;
	hit_countdown = hit_slowdown;
	was_hit = false;
	has_flashed = false;
}
EnemyTank::EnemyTank(df::Position p, df::Object *new_player) {
    df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
    df::LogManager &log_manager = df::LogManager::getInstance();

    // Link to "player" sprite
    df::Sprite *p_temp_sprite;
    p_temp_sprite = resource_manager.getSprite("enemytank");
    if (!p_temp_sprite) {
        log_manager.writeLog("EnemyTank::EnemyTank(): Warning! Sprite '%s' not found", "enemytank");
    }
    else {
        setSprite(p_temp_sprite);
        setSpriteSlowdown(0);
    }

    setType("EnemyTank");

    setSolidness(df::Solidness::SOFT);

    //Set starting position
    setPosition(p);

    player = new_player;
    fire_slowdown = 60;
    fire_countdown = fire_slowdown;
    move_slowdown = 5;
    move_countdown = move_slowdown;
}
示例#7
0
GameStart::GameStart() {

	//Dragonfly managers needed for this method
	LogManager &log_manager = LogManager::getInstance();
	ResourceManager &resource_manager = ResourceManager::getInstance();

	//Setup GameStart sprite
	Sprite *p_temp_sprite = resource_manager.getSprite("gamestart");
	if (!p_temp_sprite) {
		log_manager.writeLog("GameStart::GameStart(): Warning! Sprite 'gamestart' not found", "gamestart");
	}
	else {
		setSprite(p_temp_sprite);
		setSpriteSlowdown(15);
	}

	setType("GameStart");

	showInstruct = false;

	//Put in center of screen
	WorldManager &world_manager = WorldManager::getInstance();
	Position pos(world_manager.getBoundary().getCorner().getX() +
			world_manager.getBoundary().getHorizontal()/2,
			world_manager.getBoundary().getCorner().getY() +
			world_manager.getBoundary().getVertical()/2);
	setPosition(pos);

	//Register for "keyboard" event
	registerInterest(KEYBOARD_EVENT);

	log_manager.writeLog("GameStart::GameStart(): Made gamestart!\n");
	LevelHandler &levelhandler = LevelHandler::getInstance();

}
GameStart::GameStart(){
	setType("GameStart");

	//dragonfly managers needed for this
	df::ResourceManager &resource_manager = df::ResourceManager::getInstance();

	//setup GameOversprite
	df::Sprite *p_temp_sprite = resource_manager.getSprite("gamestart");

	if (!p_temp_sprite){
		df::LogManager &log_manager = df::LogManager::getInstance();
		log_manager.writeLog("GameStart::GameStart(): Warning! Sprite '%s' not found", "gamestart");
	}
	else{
		setSprite(p_temp_sprite);
		setSpriteSlowdown(30);
		setTransparency('#');
	}

	//put in center of window
	setLocation(df::CENTER_CENTER);

	//register interest
	registerInterest(df::KEYBOARD_EVENT);

	//play start music
	p_music = df::ResourceManager::getInstance().getMusic("start music");
	playMusic();
	df::WorldManager &world_manager = df::WorldManager::getInstance();
	world_manager.setBoundary(df::Box(df::Position(), 250, 250));
}
示例#9
0
文件: Saucer.cpp 项目: Rdbaker/wings
Saucer::Saucer() {
  df::LogManager &log_manager = df::LogManager::getInstance();
  df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
  df::WorldManager &world_manager = df::WorldManager::getInstance();

  // Setup "saucer" sprite.
  df::Sprite *p_temp_sprite = resource_manager.getSprite("saucer");
  if (!p_temp_sprite) {
    log_manager.writeLog("Saucer::Saucer(): Warning! Sprite '%s' not found",
			 "saucer");
  } else {
    setSprite(p_temp_sprite);
    setSpriteSlowdown(4);
  }

  // Set object type.
  setType("Saucer");

  // Set speed in horizontal direction.
  setXVelocity(-0.25); // 1 space left every 4 frames

  // Move Saucer to start location.
  moveToStart();
  // Register interest in "nuke" event.
  registerInterest(NUKE_EVENT);
  Role &role = Role::getInstance();
  if(role.isHost()) {
    Role &role = Role::getInstance();
    role.registerSyncObj(this);
  }
}
示例#10
0
Trap::Trap(int x, int y)
{

	LogManager &log_manager = LogManager::getInstance();

#ifdef REGISTER


	// Need to update fire rate control each step.
	registerInterest(DF_STEP_EVENT);
#endif

	// Set object type.
	setType("Trap");
	auto& resMgr = ResourceManager::getInstance();
	setSprite(resMgr.getSprite("trap"));
	setSpriteSlowdown(4);
	setAltitude(1);
	// Set starting location.
	WorldManager &world_manager = WorldManager::getInstance();
	Position pos(7, world_manager.getBoundary().getVertical() / 2);
	setPosition(Position(x, y));
	setBox(Box(Position(0, 0), getSprite()->getWidth(), getSprite()->getHeight()));
	//setYVelocity(0.25);
	// Set firing variables.
}
FootSoldier::FootSoldier(df::Position p, df::Object *new_player) {
	df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
	df::LogManager &log_manager = df::LogManager::getInstance();

	// Link to "player" sprite
	df::Sprite *p_temp_sprite;
	p_temp_sprite = resource_manager.getSprite("footsoldier");
	if (!p_temp_sprite) {
		log_manager.writeLog("FootSoldier::FootSoldier(): Warning! Sprite '%s' not found", "footsoldier");
	}
	else {
		setSprite(p_temp_sprite);
		setSpriteSlowdown(0);
	}

	setType("FootSoldier");

	setSolidness(df::Solidness::SOFT);

	//Register interests
	registerInterest(df::STEP_EVENT);

	//Set starting position
	setPosition(p);

	player = new_player;
	fire_slowdown = 15 + rand() % 5;
	fire_countdown = fire_slowdown;
}
示例#12
0
文件: Hero.cpp 项目: Rdbaker/wings
Hero::Hero(bool isClient) : isClient(isClient) {

  // Link to "ship" sprite.
  df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
  df::LogManager &log_manager = df::LogManager::getInstance();
  df::Sprite *p_temp_sprite;
  if(isClient) {
    p_temp_sprite = resource_manager.getSprite("client");
  } else {
    p_temp_sprite = resource_manager.getSprite("ship");
  }
  if (!p_temp_sprite) {
    log_manager.writeLog("Hero::Hero(): Warning! Sprite '%s' not found",
			 "ship");
  } else {
    setSprite(p_temp_sprite);
    setSpriteSlowdown(3);  // 1/3 speed animation.
    setTransparency();	   // Transparent sprite.
  }

  // Player controls hero, so register for input events.
  registerInterest(df::KEYBOARD_EVENT);
  registerInterest(df::MOUSE_EVENT);

  // Need to update rate control each step.
  registerInterest(df::STEP_EVENT);

  // Set object type.
  setType("Hero");

  // Set starting location.
  df::WorldManager &world_manager = df::WorldManager::getInstance();
  if(isClient) {
    df::Position pos(7, world_manager.getBoundary().getVertical()/2+4);
    setPosition(pos);
  } else {
    df::Position pos(7, world_manager.getBoundary().getVertical()/2-4);
    setPosition(pos);
  }

  // Create reticle for firing bullets.
  p_reticle = new Reticle();
  p_reticle->draw();

  // Set attributes that control actions.
  move_slowdown = 2;
  move_countdown = move_slowdown;
  fire_slowdown = 30;
  fire_countdown = fire_slowdown;
  nuke_count = 1;
  Role &role = Role::getInstance();
  if(role.isHost()) {
    role.registerSyncObj(this);
    log_manager.writeLog("Hero::Hero(): INFO! registered with %s", serialize().c_str());
  }
}
示例#13
0
Ghost::Ghost(Position pos) {
	ghost_velocity = GHOST_VELOCITY;

	WorldManager &world_manager = WorldManager::getInstance();

	setPosition(pos);
	setType("Ghost");
	setSolidness(SOFT); //Ghosts can move through anything
	setAltitude(MAX_ALTITUDE);

	//TODO: This takes too long to find, is there a more efficient way?
	/*
	 ObjectList objects = world_manager.getAllObjects();
	 ObjectListIterator iterator = objects.createIterator();

	 bool found = false;
	 while(!iterator.isDone() && !found){
	 if (iterator.currentObject()->getType() == "Hero"){

	 hero_pos = iterator.currentObject()->getPosition();

	 found = true;
	 }
	 }
	 */

//	if (!found){
	Position h_pos(world_manager.getBoundary().getHorizontal() / 2,
			world_manager.getBoundary().getVertical() / 2);
	hero_pos = h_pos;
//	}

	LogManager &lm = LogManager::getInstance();
	ResourceManager &rm = ResourceManager::getInstance();
	Sprite *p_temp_sprite;

	p_temp_sprite = rm.getSprite("ghost");
	if (!p_temp_sprite) {
		lm.writeLog("Ghost::Ghost(): Warning! Sprite '%s' not found", "ghost");
	} else {
		setSprite(p_temp_sprite);
		setSpriteSlowdown(15);
	}

	max_speed_cooldown = MAX_SPEED_COOLDOWN;
	speed_cooldown = max_speed_cooldown;

	registerInterest(HERO_MOVE_EVENT);
	registerInterest(STEP_EVENT);
	registerInterest(COLLISION_EVENT);
	registerInterest(LEVEL_UP_EVENT);
}
示例#14
0
Platform::Platform(Stages s){
    // Dragonfly managers needed for this method.
    df::LogManager &log_manager = df::LogManager::getInstance();
    df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
    df::WorldManager &world_manager = df::WorldManager::getInstance();
    
    df::Sprite *p_temp_sprite = NULL;
    // Setup "bullet" sprite.
    switch(s) {
        case ULTIMATE_TERMINAL:
            p_temp_sprite = resource_manager.getSprite("ut-platform");
            break;
        case VORTEX:
            p_temp_sprite = resource_manager.getSprite("vortex-platform");
            break;
        case VACATION:
            p_temp_sprite = resource_manager.getSprite("vacation-platform");
            break;
        default:
            p_temp_sprite = resource_manager.getSprite("ut-platform");
    }
    if (!p_temp_sprite) {
        log_manager.writeLog("Platform::Platform(): Warning! Sprite '%s' not found",
            "platform");
    }
    else {
        setSprite(p_temp_sprite);
    }

    // Set object type.
    setType("Platform");
    setSolidness(df::SOFT);
    this->setAltitude(0);

    this->setTransparency('#');

    setPos(df::Position(20, 10));

    setSpriteSlowdown(10);

    registerInterest(df::JOYSTICK_EVENT);
    registerInterest(df::KEYBOARD_EVENT);
    registerInterest(df::STEP_EVENT);
}
Hero::Hero() {

  // Link to "ship" sprite.
  df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
  df::LogManager &log_manager = df::LogManager::getInstance();
  df::Sprite *p_temp_sprite;
  p_temp_sprite = resource_manager.getSprite("ship");
  if (!p_temp_sprite) {
    log_manager.writeLog("Hero::Hero(): Warning! Sprite '%s' not found", 
			 "ship");
  } else {
    setSprite(p_temp_sprite);
    setSpriteSlowdown(3);  // 1/3 speed animation.
    setTransparency();	   // Transparent sprite.
  }

  // Player controls hero, so register for input events.
  registerInterest(df::KEYBOARD_EVENT);
  registerInterest(df::MOUSE_EVENT);

  // Need to update rate control each step.
  registerInterest(df::STEP_EVENT);

  // Set object type.
  setType("Hero");

  // Set starting location.
  df::WorldManager &world_manager = df::WorldManager::getInstance();
  df::Vector p(7, world_manager.getBoundary().getVertical()/2);
  setPosition(p);

  // Create reticle for firing bullets.
  p_reticle = new Reticle();
  p_reticle->draw();

  // Set attributes that control actions.
  move_slowdown = 2;
  move_countdown = move_slowdown;
  fire_slowdown = 30;
  fire_countdown = fire_slowdown;
  nuke_count = 1;
}
示例#16
0
Bullet::Bullet(Position hero_pos, int velocityX, int velocityY, int typee) {

	// Set object properties.
	setType("Bullet");
	setXVelocity(velocityX);// move 1 space right every frame
	setYVelocity(velocityY);
	type = typee;
	auto& resMgr = ResourceManager::getInstance();
	if (type == 1)
	{
		setSprite(resMgr.getSprite("bullet1"));
	}
	else if (type == 2)
	{
		setSprite(resMgr.getSprite("bullet-left"));
	}
	else if (type == 3)
	{
		setSprite(resMgr.getSprite("bullet-right"));
	}

	setSpriteSlowdown(4);
	// Set object type.
	setBox(Box(Position(0, 0), getSprite()->getWidth(), getSprite()->getHeight()));
	Position pos1;

	// Set starting location, based on hero's position passed in.
	if (velocityY == 0)
	{

		Position pos(hero_pos.getX() + 3 * velocityX, hero_pos.getY());
		pos1 = pos;
	}
	if (velocityX == 0 )
	{
		Position pos(hero_pos.getX(), hero_pos.getY() + 3 * velocityY);
		pos1 = pos;
	}
	
  
  setPosition(pos1);
}
示例#17
0
GameStart::GameStart() {
	df::LogManager &log_manager = df::LogManager::getInstance();
	df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
	df::WorldManager &world_manager = df::WorldManager::getInstance();
	df::Sprite *p_temp_sprite;
	p_temp_sprite = resource_manager.getSprite("gamestart");
	if (!p_temp_sprite) {
		log_manager.writeLog("GameStart::GameStart(): Warning! Sprite '%s' not found", "gamestart");
	}
	else {
		setSprite(p_temp_sprite);
		setSpriteSlowdown(15);
	}
	setType("GameStart");
	setLocation(df::CENTER_CENTER);
	registerInterest(df::KEYBOARD_EVENT);
	// Get music from resource manager.
	p_music = df::ResourceManager::getInstance().getMusic("start music");
	playMusic();
}
示例#18
0
Select13::Select13()
{
  LogManager &lm = LogManager::getInstance();
  ResourceManager &rm = ResourceManager::getInstance();

  //Set up the sprite
  Sprite *p_temp_sprite = rm.getSprite("select13");
	if(!p_temp_sprite)
	{
		lm.writeLog("Select::Select(): Warning! Sprite '%s' not found", "select13");
	}
	else
	{
		setSprite(p_temp_sprite);
	}

	setType("Select13");
	setLocation(CENTER_CENTER);
	setSpriteSlowdown(15);
	registerInterest(DF_KEYBOARD_EVENT);
}
示例#19
0
Explosion::Explosion()
{
	setType("Explosion");

	// Exit after about 6 steps.
	time_to_live = 6;

	// Doesn't collide
	setSolidness(SPECTRAL);

	auto& resMgr = ResourceManager::getInstance();

	setSprite(resMgr.getSprite("explosion"));
	setSpriteSlowdown(4);

#ifdef REGISTER
	// Need step event to countdown.
	registerInterest(DF_STEP_EVENT);
#endif

}
示例#20
0
// default constructor
Enemy::Enemy(df::Position pos){
	// Dragonfly managers needed for this method.
	df::LogManager &log_manager = df::LogManager::getInstance();
	df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
	df::WorldManager &world_manager = df::WorldManager::getInstance();

	// Setup "hero" sprite.
	df::Sprite *p_temp_sprite = resource_manager.getSprite("enemy");
	if (!p_temp_sprite) {
		log_manager.writeLog("Enemy::Enemy(): Warning! Sprite '%s' not found",
			"enemy");
	}
	else {
		setSprite(p_temp_sprite);
		setSpriteSlowdown(4);
	}

	// set attributes
	startPos = pos;
	setType("Enemy");
	setPosition(pos);

	// set slowdown
	move_slowdown = 4;
	move_countdown = move_slowdown;

	// set initial hero position
	heroPosition = df::Position(40, 5);
	int counterOfPath = 0;

	// get path to hero
	TreeNode *base = new TreeNode(df::Position(getPosition().getX(), getPosition().getY() + 1));
	pathToHero = TreeNode::pathToPosition(base, heroPosition, &sizeOfPath, 3, false);

	setSolidness(df::HARD);

	// set slowdown
	moveSlowdown = 5;
	updatePathSlowdown = 50;
}
PowerUp::PowerUp(Ability init_ability, df::Position p){
	df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
	df::LogManager &log_manager = df::LogManager::getInstance();

	ability = init_ability;

	// Link to "power-up" sprite depending on ability
	std::string request;
	df::Sprite *p_temp_sprite;

	switch (ability){
	case WIDE_SHOT:
		request = "powerup2";
		break;
	case CANNON_CDR:
		request = "powerup1";
		break;
	case ANGLE_CANNON:
		request = "powerup";
		break;
	case HEALTH_GET:
		request = "powerup3";
		break;
	default:
		request = "powerup";
		break;
	}
	p_temp_sprite = resource_manager.getSprite(request);
	if (!p_temp_sprite) {
		log_manager.writeLog("PowerUp::PowerUp(): Warning! Sprite '%s' not found", request);
	}
	else {
		setSprite(p_temp_sprite);
		setSpriteSlowdown(3);
	}

	setPosition(p);

	setType("PowerUp");
}
示例#22
0
GameOver::GameOver(int new_winningPlayer){
    df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
    df::LogManager &log_manager = df::LogManager::getInstance();
    df::WorldManager &w_m = df::WorldManager::getInstance();
    w_m.setViewFollowing(this);

    winningPlayer = new_winningPlayer;

    df::Sprite *p_temp_sprite = getGameOverSprite();

    setSprite(p_temp_sprite);
    time_to_live = 100;
    setSpriteSlowdown(15); //1/3 speed animation
    setTransparency('#'); //transparent sprite


    time_to_live = p_temp_sprite->getFrameCount() * 300;

    setLocation(df::CENTER_CENTER);

    registerInterest(df::STEP_EVENT);
}
示例#23
0
//This object is used to test the game engine where it moves in the world and then ends the game after 5 movements
Enemy::Enemy(){
	count = 0;//number of step events that occured
	ResourceManager &rm = ResourceManager::getInstance();
	Sprite *p_temp_sprite;
	p_temp_sprite = rm.getSprite("saucer");
	setSprite(p_temp_sprite);
	setSpriteSlowdown(4);
	//std::cout <<
			registerInterest(STEP_EVENT);
			//<< " step event registered properly\n";

	//std::cout <<
			registerInterest(TEST_EVENT);
			//<< " test event registered properly\n";

			registerInterest(KEYBOARD_EVENT);
			registerInterest(COLLISION_EVENT);
	setType("enemy");
	pos = Position(5,5);
	this->setPosition(pos);

}
示例#24
0
Saucer::Saucer()
{
	LogManager &log_manager = LogManager::getInstance();
	auto& resMgr = ResourceManager::getInstance();

	setSprite(resMgr.getSprite("saucer"));
	// Set object type.
	setType("Saucer");
	setBox(Box(Position(0, 0), getSprite()->getWidth(), getSprite()->getHeight()));

	// Set speed in vertical direction.
	setXVelocity(-0.25);		// 1 space every 4 frames
	setSpriteSlowdown(4);
	moveToStart();



#ifdef REGISTER
	// Register interest in "nuke" event.
	registerInterest(NUKE_EVENT);
#endif 
}
示例#25
0
GameOver::GameOver() {

    setType("GameOver");

    // link to "message" sprite
    ResourceManager &resource_manager = ResourceManager::getInstance();
    Sprite *p_temp_sprite = resource_manager.getSprite("gameover");
    if (!p_temp_sprite) {
        LogManager &log_manager = LogManager::getInstance();
        log_manager.writeLog("GameOver::GameOver(): Warning! Sprite 'gameover' not found");
    } else {
        setSprite(p_temp_sprite);
        setSpriteSlowdown(15);
        setTransparency('#');    // transparent character
        time_to_live = p_temp_sprite->getFrameCount() * 15;
    }

    // put in center of screen
    setLocation(CENTER_CENTER);

    // register for step event
    registerInterest(STEP_EVENT);
}
示例#26
0
Weapon::Weapon(df::Position init_pos, Direction init_direction) {

	df::ResourceManager &rm = df::ResourceManager::getInstance();
	df::LogManager &log_manager = df::LogManager::getInstance();

	exist_countdown = exist_slowdown;

	// Setup "hero" sprite.
	df::Sprite *p_temp_sprite = rm.getSprite("weapon");
	if (!p_temp_sprite) {
		log_manager.writeLog("Weapon::Weapon(): Warning! Sprite '%s' not found",
			"weapon");
	}
	else {
		setSprite(p_temp_sprite);
		setSpriteSlowdown(0);
	}
	setSolidness(df::SOFT);
	setType("Weapon");
	direction = init_direction;
	setWeaponPosition(init_pos, direction);
	setAltitude(4);
}
示例#27
0
Bullet::Bullet(Position hero_pos, int velocityX) {

	// Set object properties.
	setType("Bullet");
	setXVelocity(velocityX);// move 1 space right every frame
	//setYVelocity(velocityY);
	type = 0;
	auto& resMgr = ResourceManager::getInstance();
	setSprite(resMgr.getSprite("bullet"));
	setSpriteSlowdown(4);
	// Set object type.
	setBox(Box(Position(0, 0), getSprite()->getWidth(), getSprite()->getHeight()));

	// Set starting location, based on hero's position passed in.
	//if (velocityY == 0 && velocityX != 0)
		Position pos(hero_pos.getX() + 3 * velocityX, hero_pos.getY());
	//if (velocityY != 0 && velocityX == 0)
	//	Position pos(hero_pos.getX(), hero_pos.getY() + 3 * velocityY);
	//if (velocityY != 0 && velocityX != 0)
	//	Position pos(hero_pos.getX() + 3 * velocityX, hero_pos.getY() + 3 * velocityY);

	setPosition(pos);
}
GameStart::GameStart() {
  setType("GameStart");

  // Link to "message" sprite.
  df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
  df::Sprite *p_temp_sprite = resource_manager.getSprite("gamestart");
  if (!p_temp_sprite) {
    df::LogManager &log_manager = df::LogManager::getInstance();
    log_manager.writeLog("GameStart::GameStart(): Warning! Sprite 'gamestart' not found");
  } else {
    setSprite(p_temp_sprite);
    setSpriteSlowdown(15);		  
  }

  // Put in center of screen.
  setLocation(df::CENTER_CENTER);

  // Register for "keyboard" event.
  registerInterest(df::KEYBOARD_EVENT);

  // Play start music.
  p_music = df::ResourceManager::getInstance().getMusic("start music");
  playMusic();
}
示例#29
0
GameStart::GameStart(std::string addr, std::string port){
	df::ResourceManager &resman = df::ResourceManager::getInstance();
	setSprite(resman.getSprite("gamestart"));
	setSpriteSlowdown(6);
	df::Position p(40, 12);
	setPosition(p);
	this->addr = addr;
	this->port = port;

	registerInterest(df::STEP_EVENT);
	
		//both get some stars
	for(int i =0 ; i < 16; i++)
		new Star;

	if(Role::isServer()){

		finished = false;
		connected = false;
		pthread_create(&connect, NULL, waitForConnection, (void*) this);
	} else {
		countdown = 30; //pause 2 secs, then connect
	}
}