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); } } }
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; }
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)); }
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. }
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; }
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); }
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; }
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); }
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(); }
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 }
// 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"); }
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); }
//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); }
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 }
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); }
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); }
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(); }
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 } }