示例#1
0
Hero::Hero() {

  // Player controls hero, so register with keyboard and mouse.
  registerInterest(df::KEYBOARD_EVENT);
  registerInterest(df::MOUSE_EVENT);

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

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

  // Set starting location.
  df::Vector pos(7.0f, DM.getVertical()/2.0f);
  setPosition(pos);

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

  // Set firing variables.
  fire_slowdown = 15;
  fire_countdown = fire_slowdown;

  nuke_count = 1;
}
示例#2
0
文件: Hero.cpp 项目: RHHayes/The_Rock
Hero::Hero() {

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

  // Player controls hero, so register with keyboard and mouse.
  registerInterest(df::_KEYBOARD_EVENT);
  registerInterest(df::_MOUSE_EVENT);

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

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

  // Set starting location.
  df::GraphicsManager &graphics_manager = df::GraphicsManager::getInstance();
  df::Position pos(7, graphics_manager.getVertical()/2);
  setPosition(pos);

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

  // Set firing variables.
  fire_slowdown = 15;
  fire_countdown = fire_slowdown;

  nuke_count = 1;
}
示例#3
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());
  }
}
示例#4
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);
}
示例#5
0
Input::Input(){
	setVisible(false);
	setSolidness(df::SPECTRAL);

	hero = NULL;

	if((Role::isServer() && DISABLE_SERVER_INPUT) || DISBALE_CLIENT_INPUT){
		return;
	}

 	registerInterest(df::KEYBOARD_EVENT);
	registerInterest(df::MOUSE_EVENT);
}
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;
}
示例#7
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);
  }
}
示例#8
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.
}
示例#9
0
Points::Points() {
  setLocation(TOP_RIGHT);
  setViewString(POINTS_STRING);
  setColor(COLOR_YELLOW);
  // need to update score each second, so count "step" events
  registerInterest(STEP_EVENT);
}
示例#10
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();

}
示例#11
0
Explosion::Explosion(df::Position *p){
	setType(Type::EXPLOSION);
	setSolidness(df::SPECTRAL);

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

	df::Sprite *sprite;
	sprite = resource_manager.getSprite("explosion");
	if(!sprite){
		log_manager.writeLog("Explosion::Explosion() could not load explosion sprite");
	} else {
		time_to_live = sprite->getFrameCount(); //set time as # of frames
		log_manager.writeLog("Explosion::Explosion() frameCount %d", time_to_live);
		setSprite(sprite);
	}

	if(p)
		setPosition(*p);

	registerInterest(df::STEP_EVENT);

	if(Role::isServer()){
		NetSyncing::create(this);
	}

}
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));
}
示例#13
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);
}
示例#14
0
void P1() {
  while( 1 ) {
    // compute the gcd between pairs of x and y for 2^4 < x, y < 2^8
        // flag[1] = true;
        // turn = 1  ;
        //  while (flag[0] ==true&& turn == 1)
        //  {
        //      // busy wait

        //  }
        //  printf("bool %d",flag[0]);

        //  // critical section
        //  int result = withdrawl(10);
        //  flag[1] = false;

        while(registerInterest())
      {
        // busy wait
      }
         int acountMoney = load();
         printf("p1 read data %d\n", acountMoney);
         //conflict

         //critial section
          if (withdrawl(10,&acountMoney))
          {
            printf("take 10 from account \n");
          }

         store(acountMoney);
         printf("p1 after taking %d\n", acountMoney);
         

               deRegisterInterest();

        // printf("withdrawl 10 is %d\n", result);
         
         // end of critical section
         
    // for( uint32_t x = ( 1 << 4 ); x < ( 1 << 8 ); x++ ) {
    //   for( uint32_t y = ( 1 << 4 ); y < ( 1 << 8 ); y++ ) {
    //     uint32_t r = gcd( x, y );  // 
    //     printf( "gcd( %d, %d ) = %d\n", x, y, r );
        for( int i = 0; i < 0x05000000; i++ ) {
          asm volatile( "nop" );
        }
    //   }
    //   // wait little bit longer
      
    // }
    
  }

  return;
}
示例#15
0
CapturedString::CapturedString(string new_complete_string) {
	setType("CapturedString");
	registerInterest(CAPTURED_LETTER_EVENT);
	setLocation(TOP_CENTER);

	complete_string.resize(new_complete_string.length());
	transform(new_complete_string.begin(),
		new_complete_string.end(), complete_string.begin(), toupper);
	setViewString(string(complete_string.length(), ' '));
}
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;
}
Explosion::Explosion() {
  setType("Explosion");

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

  // Doesn't collide
  setSolidness(df::SPECTRAL);

  // Need step event to countdown.
  registerInterest(df::STEP_EVENT);
}
示例#18
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);

}
Reticle::Reticle() {
  setType("Reticle");
  setSolidness(df::SPECTRAL);
  setAltitude(df::MAX_ALTITUDE); // Make Reticle in the foreground.

  // Reticle moves with mouse, so register.
  registerInterest(df::MOUSE_EVENT);

  // Start reticle in center of window.
  df::Vector p(WM.getBoundary().getHorizontal()/2,
	       WM.getBoundary().getVertical()/2);
  setPosition(p);
}
示例#20
0
Lens::Lens( Direction dir /* = RIGHT */ ) {
  setDirection( dir );
  this->color = laser::BLACK;

  this->setType( LENS );
  df::Sprite *temp_sprite =
    df::ResourceManager::getInstance().getSprite( LENS );
  if (!temp_sprite) {
    DF_LOG("Emitter::Emitter(): Warning! Sprite '%s' not found", LENS);
  } else {
    this->setSprite(temp_sprite, false);
  }
  registerInterest(df::STEP_EVENT);
}
示例#21
0
Reticle::Reticle() {
  setType("Reticle");
  setSolidness(df::SPECTRAL);
  setAltitude(df::MAX_ALTTITUDE); // Make Reticle in the foreground.

  // Reticle moves with mouse, so register.
  registerInterest(df::_MOUSE_EVENT);

  // Start reticle in center of window.
  df::GraphicsManager &graphics_manager = df::GraphicsManager::getInstance();
  df::Position pos(graphics_manager.getHorizontal() / 2,
	  graphics_manager.getVertical() / 2);
  setPosition(pos);
}
示例#22
0
HealthPickup::HealthPickup(Position pos) {
	LogManager &log_manager = LogManager::getInstance();
	ResourceManager &resource_manager = ResourceManager::getInstance();
	WorldManager &world_manager = WorldManager::getInstance();
	Sprite *p_temp_sprite = resource_manager.getSprite("health");
	if (!p_temp_sprite) {
		log_manager.writeLog("Health::Health(): Warning! Sprite '%s' not found",
				"health");
	} else {
		setSprite(p_temp_sprite);
	}
	// set object type
	setType("health");
	setPosition(pos);
	registerInterest(COLLISION_EVENT);
}
示例#23
0
ViewObject::ViewObject(int on_level){

	//Object attributes
	setSolidness(SPECTRAL);
	setAltitude(MAX_ALTITUDE);
	setType("ViewObject");


	//ViewObject attributes
	setValue(0);
	setBorder(true);
	setLocation(TOP_CENTER);
	setColor(COLOR_DEFAULT);

	//Register interest in view events
	registerInterest(VIEW_EVENT);
}
示例#24
0
Block::Block()
{

  //Set Object Type
  setType("Block");

  //set the boolean to false to start with
  isOnPlate = false;

  //Load Sprite
  chooseSprite(isOnPlate);

  //Register for step event
  registerInterest(DF_STEP_EVENT);
  


}
Explosion::Explosion() {
  registerInterest(df::STEP_EVENT);

  // Link to "explosion" sprite.
  df::ResourceManager &resource_manager = df::ResourceManager::getInstance();
  df::Sprite *p_temp_sprite = resource_manager.getSprite("explosion");
  if (!p_temp_sprite) {
    df::LogManager &log_manager = df::LogManager::getInstance();
    log_manager.writeLog("Explosion::Explosion(): Warning! Sprite '%s' not found", 
		"explosion");
    return;
  }
  setSprite(p_temp_sprite);

  setType("Explosion");

  time_to_live =  getSprite()->getFrameCount();
  setSolidness(df::SPECTRAL);
}
示例#26
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();
}
//Reticle constructor
Reticle::Reticle(){
	//needed managers
	df::WorldManager &world_manager = df::WorldManager::getInstance();

	//set type and solidness
	setType("Reticle");
	setSolidness(df::SPECTRAL);

	// Make Reticle in foreground
	setAltitude(df::MAX_ALTITUDE);

	//interested in mouse events
	registerInterest(df::A_MOUSE_EVENT);

	//start in center of screen
	int view_h = world_manager.getView().getHorizontal();
	int view_v = world_manager.getView().getVertical();
	df::Position pos(view_h / 2, view_v / 2);
	setPosition(df::viewToWorld(pos));
}
示例#28
0
Explosion::Explosion() {
  LogManager &log_manager = LogManager::getInstance();
  ResourceManager &resource_manager = ResourceManager::getInstance();

  //Setup explosion sprite
  Sprite *p_temp_sprite = resource_manager.getSprite("explosion");
  if (!p_temp_sprite) {
    log_manager.writeLog("Explosion::Explosion(): Warning! Sprite '%s' !found", "explosion");
  }
  setSprite(p_temp_sprite);
  setType("Explosion");
  registerInterest(DF_STEP_EVENT);


  //set live time as long as sprite length
  time_to_live = getSprite()->getFrameCount();

  //set solidness of explosion
  setSolidness(SPECTRAL);

}
示例#29
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);
}
示例#30
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

}