Exemplo n.º 1
0
Missile* UnitFactory::createMissile( const char *filename,
                                     int faction,
                                     const string &modifications,
                                     const float damage,
                                     float phasedamage,
                                     float time,
                                     float radialeffect,
                                     float radmult,
                                     float detonation_radius,
                                     ObjSerial netcreate )
{
    Missile *un = new GameMissile( filename,
                                   faction,
                                   modifications,
                                   damage,
                                   phasedamage,
                                   time,
                                   radialeffect,
                                   radmult,
                                   detonation_radius );
    if (netcreate) {
        KillDuplicateUnits( netcreate );
        un->SetSerial( netcreate );
    }
    return un;
}
Missile* UnitFactory::createMissile( const char * filename,
                                     int faction,
                                     const string &modifications,
                                     const float damage,
                                     float phasedamage,
                                     float time,
                                     float radialeffect,
                                     float radmult,
                                     float detonation_radius, ObjSerial netcreate )
{
//  double startime= queryTime();
    Missile * un =new GameMissile( filename,
                        faction,
                        modifications,
                        damage,
                        phasedamage,
                        time,
                        radialeffect,
                        radmult,
                        detonation_radius );
	if( netcreate) {
		KillDuplicateUnits( netcreate);
		un->SetSerial( netcreate);
	}
	return un;
//  double endtime= queryTime();
//  printf ("mcr %f ",endtime-startime);
}
Nebula* UnitFactory::createNebula( const char * unitfile, 
                                   bool SubU, 
                                   int faction, 
                                   Flightgroup* fg,
                                   int fg_snumber, ObjSerial netcreate )
{
    Nebula * neb = new GameNebula( unitfile,
                       SubU,
                       faction,
                       fg,
                       fg_snumber );
	if( netcreate) {
		KillDuplicateUnits( netcreate);
		neb->SetSerial( netcreate);
	}
	return neb;
}
Asteroid* UnitFactory::createAsteroid( const char * filename,
                                       int faction,
                                       Flightgroup* fg,
                                       int fg_snumber,
                                       float difficulty, ObjSerial netcreate )
{
    Asteroid * ast = new GameAsteroid( filename,
                         faction,
                         fg,
                         fg_snumber,
                         difficulty );
	if( netcreate) {
		KillDuplicateUnits( netcreate);
		ast->SetSerial( netcreate);
	}
	return ast;
}
Unit* UnitFactory::createUnit( const char *filename,
		               bool        SubUnit,
		               int         faction,
		               std::string customizedUnit,
		               Flightgroup *flightgroup,
		               int         fg_subnumber, string * netxml, ObjSerial netcreate)
{
    Unit * un = new GameUnit<Unit>( filename,
                     SubUnit,
                     faction,
                     customizedUnit,
                     flightgroup,
                     fg_subnumber, netxml);
	if( netcreate) {
		KillDuplicateUnits( netcreate);
		un->SetSerial( netcreate);
	}
	return un;
}
Planet* UnitFactory::createPlanet( QVector x,
                                   QVector y,
				   float vely,
				   const Vector & rotvel,
				   float pos,
				   float gravity,
				   float radius,
				   const char * filename,
				   BLENDFUNC sr, BLENDFUNC ds,
				   const vector<string> &dest,
				   const QVector &orbitcent,
				   Unit * parent,
				   const GFXMaterial & ourmat,
				   const std::vector <GFXLightLocal> & ligh,
				   int faction,
				   string fullname ,
				   bool inside_out, ObjSerial netcreate)
{
    Planet * p = new GamePlanet( x,
                       y,
                       vely,
                       rotvel,
                       pos,
                       gravity,
                       radius,
                       filename,
		       sr,ds,
                       dest,
                       orbitcent,
                       parent,
                       ourmat,
                       ligh,
                       faction,
                       fullname , 
		       inside_out);
	if( netcreate) {
		KillDuplicateUnits( netcreate);
		p->SetSerial( netcreate);
	}
	return p;
}