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; }
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; }
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()); } }
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); }
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; }
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); } }
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. }
Points::Points() { setLocation(TOP_RIGHT); setViewString(POINTS_STRING); setColor(COLOR_YELLOW); // need to update score each second, so count "step" events registerInterest(STEP_EVENT); }
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(); }
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)); }
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); }
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; }
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); }
//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); }
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); }
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); }
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); }
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); }
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); }
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)); }
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); }
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); }
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 }