1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#include "WeaponProjectileFactory.h"
#include "EmgProjectile.h"
#include "ExplosiveProjectile.h"
#include "FlameProjectile.h"
#include "FireBallProjectile.h"
#include "LaserProjectile.h"
#include "MissileProjectile.h"
#include "BeamLaserProjectile.h"
#include "LargeBeamLaserProjectile.h"
#include "LightningProjectile.h"
#include "StarburstProjectile.h"
#include "TorpedoProjectile.h"
#include "Sim/Misc/GlobalConstants.h"
#include "Sim/Weapons/WeaponDef.h"
unsigned int WeaponProjectileFactory::LoadProjectile(const ProjectileParams& params) {
const WeaponDef* weaponDef = params.weaponDef;
const CWeaponProjectile* projectile = nullptr;
assert(weaponDef != nullptr);
switch (weaponDef->projectileType) {
case WEAPON_EMG_PROJECTILE: {
projectile = projMemPool.alloc<CEmgProjectile>(params);
} break;
case WEAPON_EXPLOSIVE_PROJECTILE: {
projectile = projMemPool.alloc<CExplosiveProjectile>(params);
} break;
case WEAPON_FLAME_PROJECTILE: {
projectile = projMemPool.alloc<CFlameProjectile>(params);
} break;
case WEAPON_FIREBALL_PROJECTILE: {
projectile = projMemPool.alloc<CFireBallProjectile>(params);
} break;
case WEAPON_LASER_PROJECTILE: {
projectile = projMemPool.alloc<CLaserProjectile>(params);
} break;
case WEAPON_MISSILE_PROJECTILE: {
projectile = projMemPool.alloc<CMissileProjectile>(params);
} break;
case WEAPON_BEAMLASER_PROJECTILE: {
projectile = projMemPool.alloc<CBeamLaserProjectile>(params);
} break;
case WEAPON_LARGEBEAMLASER_PROJECTILE: {
projectile = projMemPool.alloc<CLargeBeamLaserProjectile>(params);
} break;
case WEAPON_LIGHTNING_PROJECTILE: {
projectile = projMemPool.alloc<CLightningProjectile>(params);
} break;
case WEAPON_STARBURST_PROJECTILE: {
projectile = projMemPool.alloc<CStarburstProjectile>(params);
} break;
case WEAPON_TORPEDO_PROJECTILE: {
projectile = projMemPool.alloc<CTorpedoProjectile>(params);
} break;
default: {
return -1u;
} break;
}
return (projectile->id);
}
|